Tech-invite3GPPspaceIETFspace
96959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 3729

Application Performance Measurement MIB

Pages: 61
Proposed Standard
Part 3 of 3 – Pages 35 to 61
First   Prev   None

Top   ToC   RFC3729 - Page 35   prevText
apmNameMachineName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The human readable name of the client machine.

        If the client has no machine name or the agent is
        unable to learn the machine name, this object will be
        a zero-length string."
    ::= { apmNameEntry 4 }

apmNameUserName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The human readable name of a human user using the client
        machine. If more than one user name are available
        simultaneously, it is an implementation-dependent matter as to
        which is used here. However, if the user name changes, this
        object should change to reflect that change.

        Non-human user names like 'root' or 'administrator' aren't
        intended as values for this object. If the client has no
        recorded user name or the agent is unable to learn a user
        name, this object will be a zero-length string."
    ::= { apmNameEntry 5 }

-- The APM Report Group

apmReportControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ApmReportControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Parameters that control the creation of a set of reports that
        aggregate application performance."
    ::= { apmMibObjects 9 }

apmReportControlEntry OBJECT-TYPE
    SYNTAX      ApmReportControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the apmReportControlTable.

        An example of the indexing of this table is
Top   ToC   RFC3729 - Page 36
        apmReportControlInterval.3"
    INDEX { apmReportControlIndex }
    ::= { apmReportControlTable 1 }

ApmReportControlEntry ::= SEQUENCE {
    apmReportControlIndex            Unsigned32,
    apmReportControlDataSource       DataSourceOrZero,
    apmReportControlAggregationType  TransactionAggregationType,
    apmReportControlInterval         Unsigned32,
    apmReportControlRequestedSize    Unsigned32,
    apmReportControlGrantedSize      Unsigned32,
    apmReportControlRequestedReports Unsigned32,
    apmReportControlGrantedReports   Unsigned32,
    apmReportControlStartTime        TimeStamp,
    apmReportControlReportNumber     Unsigned32,
    apmReportControlDeniedInserts    Counter32,
    apmReportControlDroppedFrames    Counter32,
    apmReportControlOwner            OwnerString,
    apmReportControlStorageType      StorageType,
    apmReportControlStatus           RowStatus
}


apmReportControlIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An index that uniquely identifies an entry in the
        apmReportControlTable.  Each such entry defines a unique
        report whose results are placed in the apmReportTable on
        behalf of this apmReportControlEntry."
    ::= { apmReportControlEntry 1 }

apmReportControlDataSource OBJECT-TYPE
    SYNTAX      DataSourceOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The source of the data for APM Reports generated on
        behalf of this apmReportControlEntry.

        If the measurement is being performed by a probe, this should
        be set to interface or port where data was received for
        analysis. If the measurement isn't being performed by a probe,
        this should be set to the primary interface over which the
        measurement is being performed. If the measurement isn't being
        performed by a probe and there is no primary interface or this
Top   ToC   RFC3729 - Page 37
        information isn't known, this object should be set to 0.0.

        This object may not be modified if the associated
        apmReportControlStatus object is equal to active(1)."
    ::= { apmReportControlEntry 2 }

apmReportControlAggregationType OBJECT-TYPE
    SYNTAX      TransactionAggregationType
            --    INTEGER {
            --      flows(1),
            --      clients(2),
            --      servers(3),
            --      applications(4)
            --    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The type of aggregation being performed for this set of
        reports.

        The metrics for a single transaction are the responsiveness of
        the transaction and whether the transaction succeeded (a
        boolean). When such metrics are aggregated in this MIB Module,
        these metrics are replaced by averages and distributions of
        responsiveness and availability. The metrics describing
        aggregates are constant no matter which type of aggregation is
        being performed. These metrics may be found in the
        apmReportTable.

        The flows(1) aggregation is the simplest. All transactions
        that share common application/server/client 3-tuples are
        aggregated together, resulting in a set of metrics for all
        such unique 3-tuples.

        The clients(2) aggregation results in somewhat more
        aggregation (i.e., fewer resulting records). All transactions
        that share common application/client tuples are aggregated
        together, resulting in a set of metrics for all such unique
        tuples.

        The servers(3) aggregation usually results in still more
        aggregation (i.e., fewer resulting records). All transactions
        that share common application/server tuples are aggregated
        together, resulting in a set of metrics for all such unique
        tuples.

        The applications(4) aggregation results in the most
        aggregation (i.e., the fewest resulting records). All
Top   ToC   RFC3729 - Page 38
        transactions that share a common application are aggregated
        together, resulting in a set of metrics for all such unique
        applications.

        Note that it is not meaningful to aggregate applications, as
        different applications have widely varying characteristics.
        As a result, this set of aggregations is complete.

        This object may not be modified if the associated
        apmReportControlStatus object is equal to active(1)."
    ::= { apmReportControlEntry 3 }

apmReportControlInterval OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The interval in seconds over which data is accumulated before
        being aggregated into a report in the apmReportTable.  All
        reports with the same apmReportControlIndex will be based on
        the same interval. This object must be greater than zero.

        Many users desire that these reports be synchronized to within
        seconds of the beginning of the hour because the results may
        be correlated more meaningfully to business behavior and so
        that data from multiple agents is aggregated over the same
        time periods. Thus management software may take extra effort
        to synchronize reports to the beginning of the hour and to one
        another. However, the agent must not allow reports to 'drift'
        over time as they will quickly become unsynchronized. In
        particular, if there is any fixed processing delay between
        reports, the reports should deduct this time from the interval
        so that reports don't drift.

        This object may not be modified if the associated
        apmReportControlStatus object is equal to active(1)."
    DEFVAL { 3600 }
    ::= { apmReportControlEntry 4 }

apmReportControlRequestedSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of entries requested to be allocated for each
        report generated on behalf of this entry."
    ::= { apmReportControlEntry 5 }
Top   ToC   RFC3729 - Page 39
apmReportControlGrantedSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of entries per report the agent has allocated
        based on the requested amount in apmReportControlRequestedSize.
        Since multiple reports are saved, the total number of entries
        allocated will be this number multiplied by the value of
        apmReportControlGrantedReports, or 1 if that object doesn't
        exist.

        When the associated apmReportControlRequestedSize object is
        created or modified, the agent should set this object as
        closely to the requested value as is possible for the
        particular implementation and available resources. When
        considering resources available, the agent must consider its
        ability to allocate this many entries for all reports.

        Note that while the actual number of entries stored in the
        reports may fluctuate due to changing conditions, the agent
        must continue to have storage available to satisfy the full
        report size for all reports when necessary. Further, the agent
        must not lower this value except as a result of a set to the
        associated apmReportControlRequestedSize object."
    ::= { apmReportControlEntry 6 }

apmReportControlRequestedReports OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of saved reports requested to be allocated on
        behalf of this entry."
    ::= { apmReportControlEntry 7 }

apmReportControlGrantedReports OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of saved reports the agent has allocated
        based on the requested amount in
        apmReportControlRequestedReports. Since each report can have
        many entries, the total number of entries allocated will be
        this number multiplied by the value of
        apmReportControlGrantedSize, or 1 if that object doesn't
        exist.
Top   ToC   RFC3729 - Page 40
        When the associated apmReportControlRequestedReports object is
        created or modified, the agent should set this object as
        closely to the requested value as is possible for the
        particular implementation and available resources. When
        considering resources available, the agent must consider its
        ability to allocate this many reports each with the number of
        entries represented by apmReportControlGrantedSize, or 1 if
        that object doesn't exist.

        Note that while the storage required for each report may
        fluctuate due to changing conditions, the agent must continue
        to have storage available to satisfy the full report size for
        all reports when necessary. Further, the agent must not lower
        this value except as a result of a set to the associated
        apmReportControlRequestedSize object."
    ::= { apmReportControlEntry 8 }

apmReportControlStartTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime when the system began processing the
        report in progress. Note that the report in progress is not
        available.

        This object may be used by the management station to figure
        out the start time for all previous reports saved for this
        apmReportControlEntry, as reports are started at fixed
        intervals."
    ::= { apmReportControlEntry 9 }

apmReportControlReportNumber OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of the report in progress. When an
        apmReportControlEntry is activated, the first report will be
        numbered one."
    ::= { apmReportControlEntry 10 }

apmReportControlDeniedInserts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of failed attempts to add an entry to reports for
Top   ToC   RFC3729 - Page 41
        this apmReportControlEntry because the number of entries
        would have exceeded apmReportControlGrantedSize.

        This number is valuable in determining if enough entries have
        been allocated for reports in light of fluctuating network
        usage. Note that since an entry that is denied will often be
        attempted again, this number will not predict the exact number
        of additional entries needed, but can be used to understand
        the relative magnitude of the problem.

        Also note that there is no ordering specified for the entries
        in the report, thus there are no rules for which entries will
        be omitted when not enough entries are available. As a
        consequence, the agent is not required to delete 'least
        valuable' entries first."
    ::= { apmReportControlEntry 11 }

apmReportControlDroppedFrames OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The total number of frames which were received by the agent
        and therefore not accounted for in the *StatsDropEvents, but
        for which the agent chose not to count for this entry for
        whatever reason.  Most often, this event occurs when the agent
        is out of some resources and decides to shed load from this
        collection.

        This count does not include packets that were not counted
        because they had MAC-layer errors.

        This counter is only relevant if this apm report is based on
        a data source whose collection methodology is based on
        analyzing network traffic.

        Note that if the apmReportTables are inactive because no
        applications are enabled in the application directory, this
        value should be 0.

        Note that, unlike the dropEvents counter, this number is the
        exact number of frames dropped."
    ::= { apmReportControlEntry 12 }

apmReportControlOwner OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-create
    STATUS      current
Top   ToC   RFC3729 - Page 42
    DESCRIPTION
        "The entity that configured this entry and is
        therefore using the resources assigned to it."
    ::= { apmReportControlEntry 13 }

apmReportControlStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The storage type of this apmReportControlEntry. If the value
        of this object is 'permanent', no objects in this row need to
        be writable."
    ::= { apmReportControlEntry 14 }

apmReportControlStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this apmReportControlEntry.

        An entry may not exist in the active state unless all
        objects in the entry have an appropriate value. The only
        objects in the entry that may be modified while the entry is
        in the active state are apmReportControlRequestedSize and
        apmReportControlRequestedReports.

        If this object is not equal to active(1), all
        associated entries in the apmReportTable shall be deleted
        by the agent."
    ::= { apmReportControlEntry 15 }

-- The APM Report Table

apmReportTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ApmReportEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The data resulting from aggregated APM reports. Consult the
        definition of apmReportControlAggregationType for the
        definition of the various types of aggregations."
    ::= { apmMibObjects 10 }

apmReportEntry OBJECT-TYPE
    SYNTAX      ApmReportEntry
    MAX-ACCESS  not-accessible
Top   ToC   RFC3729 - Page 43
    STATUS      current
    DESCRIPTION
        "A conceptual row in the apmReportTable.
        The apmReportControlIndex value in the index identifies the
        apmReportControlEntry on whose behalf this entry was created.
        The apmReportIndex value in the index identifies which report
        (in the series of reports) this entry is a part of.
        The apmAppDirAppLocalIndex value in the index identifies
        the common application of the transactions aggregated in this
        entry.
        The apmAppDirResponsivenessType value in the index
        identifies the type of responsiveness metric reported by
        this entry and uniquely identifies this entry when more
        than one responsiveness metric is measured for a flow.
        Entries will only exist in this table for those
        combinations of AppLocalIndex and ResponsivenessType
        that are configured 'on(1)'.
        The protocolDirLocalIndex value in the index identifies
        the network layer protocol of the apmReportServerAddress.
        When the associated apmReportControlAggregationType value is
        equal to applications(4) or clients(2), this
        protocolDirLocalIndex value will equal 0.
        The apmReportServerAddress value in the index identifies the
        network layer address of the server in transactions aggregated
        in this entry.
        The apmNameClientID value in the index identifies the
        client in transactions aggregated in this entry. If the
        associated apmReportControlAggregationType is equal to
        applications(4) or servers(3), then this protocolDirLocalIndex
        value will equal 0.

        An example of the indexing of this entry is
        apmReportTransactionCount.3.15.3.1.8.4.192.168.1.2.3232235788

        Note that some combinations of index values may result in an
        index that exceeds 128 sub-identifiers in length which exceeds
        the maximum for the SNMP protocol. Implementations should take
        care to avoid such combinations."
    INDEX { apmReportControlIndex, apmReportIndex,
            apmAppDirAppLocalIndex,
            apmAppDirResponsivenessType,
            protocolDirLocalIndex, apmReportServerAddress,
            apmNameClientID }
    ::= { apmReportTable 1 }

ApmReportEntry ::= SEQUENCE {
    apmReportIndex                  Unsigned32,
    apmReportServerAddress          ProtocolDirNetworkAddress,
Top   ToC   RFC3729 - Page 44
    apmReportTransactionCount       Unsigned32,
    apmReportSuccessfulTransactions Unsigned32,
    apmReportResponsivenessMean     Unsigned32,
    apmReportResponsivenessMin      Unsigned32,
    apmReportResponsivenessMax      Unsigned32,
    apmReportResponsivenessB1       Unsigned32,
    apmReportResponsivenessB2       Unsigned32,
    apmReportResponsivenessB3       Unsigned32,
    apmReportResponsivenessB4       Unsigned32,
    apmReportResponsivenessB5       Unsigned32,
    apmReportResponsivenessB6       Unsigned32,
    apmReportResponsivenessB7       Unsigned32
}

apmReportIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The value of apmReportControlReportNumber for the report to
        which this entry belongs."
    ::= { apmReportEntry 1 }

apmReportServerAddress OBJECT-TYPE
    SYNTAX      ProtocolDirNetworkAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The network server address for this apmReportEntry.

        This is represented as an octet string with
        specific semantics and length as identified
        by the protocolDirLocalIndex component of the index.

        Since this object is an index variable, it is encoded in the
        index according to the index encoding rules.  For example, if
        the protocolDirLocalIndex indicates an encapsulation of ip,
        this object is encoded as a length octet of 4, followed by the
        4 octets of the ip address, in network byte order. Care
        should be taken to avoid values of this object that, in
        conjunction with the other index variables, would result in an
        index longer than SNMP's maximum of 128 subidentifiers.

        If the associated apmReportControlAggregationType is equal to
        applications(4) or clients(2), then this object will be a null
        string and will be encoded simply as a length octet of 0."
    ::= { apmReportEntry 2 }
Top   ToC   RFC3729 - Page 45
apmReportTransactionCount OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total number of transactions aggregated into this record."
    ::= { apmReportEntry 3 }

apmReportSuccessfulTransactions OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total number of successful transactions aggregated into
        this record."
    ::= { apmReportEntry 4 }

apmReportResponsivenessMean OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The arithmetic mean of the responsiveness metrics for all
        successful transactions aggregated into this record."
    ::= { apmReportEntry 5 }

apmReportResponsivenessMin OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The minimum of the responsiveness metrics for all
        successful transactions aggregated into this record."
    ::= { apmReportEntry 6 }

apmReportResponsivenessMax OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum of the responsiveness metrics for all
        successful transactions aggregated into this record."
    ::= { apmReportEntry 7 }

-- Note that when updating a report entry, a transaction will not be
-- counted in more than 1 bucket in an entry. It will be counted in
-- the first bucket that matches, starting with Bucket 1 (B1). Note
-- that if a transaction matches 2 application types, it will update
Top   ToC   RFC3729 - Page 46
-- one bucket in each of 2 entries in this table.

apmReportResponsivenessB1 OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of successful transactions aggregated into this
        record whose responsiveness was less than boundary1 value for
        this application."
    ::= { apmReportEntry 8 }

apmReportResponsivenessB2 OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of successful transactions aggregated into this
        record whose responsiveness did not fall into Bucket 1 and was
        greater than or equal to the boundary1 value for this
        application and less than the boundary2 value for this
        application."
    ::= { apmReportEntry 9 }

apmReportResponsivenessB3 OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of successful transactions aggregated into this
        record whose responsiveness did not fall into Bucket 1 or 2
        and as greater than or equal to the boundary2 value for this
        application and less than the boundary3 value for this
        application."
    ::= { apmReportEntry 10 }

apmReportResponsivenessB4 OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of successful transactions aggregated into this
        record whose responsiveness did not fall into Buckets 1
        through 3 and was greater than or equal to the boundary3 value
        for this application and less than the boundary4 value for
        this application."
    ::= { apmReportEntry 11 }
Top   ToC   RFC3729 - Page 47
apmReportResponsivenessB5 OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of successful transactions aggregated into this
        record whose responsiveness did not fall into Buckets 1
        through 4 and was greater than or equal to the boundary4 value
        for this application and less than the boundary5 value for
        this application."
    ::= { apmReportEntry 12 }

apmReportResponsivenessB6 OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of successful transactions aggregated into this
        record whose responsiveness did not fall into Buckets 1
        through 5 and was greater than or equal to the
        boundary5 value for this application and less than the
        boundary6 value for this application."
    ::= { apmReportEntry 13 }

apmReportResponsivenessB7 OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of successful transactions aggregated into this
        record whose responsiveness did not fall into Buckets 1
        through 6 and was greater than or equal to the boundary6 value
        for this application."
    ::= { apmReportEntry 14 }

-- APM Transaction Table

apmTransactionTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ApmTransactionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains transactions that are currently running
        or have recently finished."
    ::= { apmMibObjects 11 }

apmTransactionEntry OBJECT-TYPE
    SYNTAX      ApmTransactionEntry
Top   ToC   RFC3729 - Page 48
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the apmTransactionTable.

        The apmAppDirAppLocalIndex value in the index identifies
        the application of the transaction represented by this entry.
        The apmAppDirResponsivenessType value in the index
        identifies the type of responsiveness metric reported by
        this entry and uniquely identifies this entry when more
        than one responsiveness metric is measured for a flow.
        Entries will only exist in this table for those
        combinations of AppLocalIndex and ResponsivenessType
        that are configured 'on(1)'.
        The protocolDirLocalIndex value in the index identifies
        the network layer protocol of the apmTransactionServerAddress.
        The apmTransactionServerAddress value in the index identifies
        the network layer address of the server in the transaction
        represented by this entry.
        The apmNameClientID value in the index identifies the
        client in the transaction represented by this entry.

        An example of the indexing of this entry is
        apmTransactionCount.3.1.8.4.192.168.1.2.3232235788.2987

        Note that some combinations of index values may result in an
        index that exceeds 128 sub-identifiers in length which exceeds
        the maximum for the SNMP protocol. Implementations should take
        care to avoid such combinations."
    INDEX { apmAppDirAppLocalIndex,
            apmAppDirResponsivenessType,
            protocolDirLocalIndex, apmTransactionServerAddress,
            apmNameClientID, apmTransactionID }
    ::= { apmTransactionTable 1 }

ApmTransactionEntry ::= SEQUENCE {
    apmTransactionServerAddress      ProtocolDirNetworkAddress,
    apmTransactionID                 Unsigned32,
    apmTransactionResponsiveness     Unsigned32,
    apmTransactionAge                TimeInterval,
    apmTransactionSuccess            TruthValue
}

apmTransactionServerAddress OBJECT-TYPE
    SYNTAX      ProtocolDirNetworkAddress (SIZE (1..255))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
Top   ToC   RFC3729 - Page 49
        "The network server address for this apmTransactionEntry.

        This is represented as an octet string with specific semantics
        and length as identified by the protocolDirLocalIndex
        component of the index. This object may not be the zero length
        string.

        For example, if the protocolDirLocalIndex indicates an
        encapsulation of ip, this object is encoded as a length octet
        of 4, followed by the 4 octets of the ip address, in network
        byte order. Care should be taken to avoid values of this
        object that, in conjunction with the other index variables,
        would result in an index longer than SNMP's maximum of 128
        subidentifiers."
    ::= { apmTransactionEntry 1 }

apmTransactionID OBJECT-TYPE
    SYNTAX      Unsigned32 (0..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value for this transaction amongst other
        transactions sharing the same application layer protocol and
        server and client addresses. Implementations may choose to use
        the value of the client's source port, when possible."
    ::= { apmTransactionEntry 2 }

apmTransactionResponsiveness OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current value of the responsiveness metric for this
        transaction. If this transaction has completed, the final
        value of the metric will be available.

        Note that this value may change over the lifetime of the
        transaction and it is the final value of this metric that is
        recorded as the responsiveness of the transaction for use in
        other APM MIB functions."
    ::= { apmTransactionEntry 3 }

apmTransactionAge OBJECT-TYPE
    SYNTAX      TimeInterval
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "If this transaction is still executing, this value shall be
Top   ToC   RFC3729 - Page 50
        the length of time since it was started. If it has completed,
        this value shall be the length of time it was executing."
    ::= { apmTransactionEntry 4 }

apmTransactionSuccess OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The success of this transaction up to this time. Once a
        transaction has been marked as failed, it cannot move back
        into the successful state."
    ::= { apmTransactionEntry 5 }

apmTransactionsRequestedHistorySize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The maximum number of completed transactions desired to be
        retained in the apmTransactionTable. If the agent doesn't have
        enough resources to retain this many, it will retain as many as
        possible. Regardless of this value, the agent must attempt to
        keep records for all current transactions it is monitoring.

        The value of this object must persist across reboots."
    ::= { apmMibObjects 12 }

-- The APM Exception table
-- The APM Exception Table creates filters so that a management
-- station can get immediate notification of a transaction that has
-- had poor availability or responsiveness.
--
-- This function is particularly helpful in unaggregated situations
-- where the numbers of agents is relatively high and the transaction
-- rate per agent is relatively low (such as agents for desktops or
-- dedicated to small workgroups). Polling agents in such an
-- environment would either cause scalability problems (high rate) or
-- lead to long notification delays (low rate).


apmExceptionTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ApmExceptionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table creates filters so that a management station can
        get immediate notification of a transaction that has had poor
Top   ToC   RFC3729 - Page 51
        availability or responsiveness.

        Each apmExceptionEntry is associated with a particular type of
        transaction and is applied to all transactions of that
        type. Multiple apmExceptionEntries may be associated with a
        particular type of transaction. A transaction type is
        identified by the value of the apmAppDirAppLocalIndex
        component of the index.

        Because the quality of a transaction is not known until it is
        completed, these thresholds are only applied after the
        transaction has completed."
    ::= { apmMibObjects 13 }

apmExceptionEntry OBJECT-TYPE
    SYNTAX      ApmExceptionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the apmExceptionTable.

        The apmAppDirAppLocalIndex value in the index identifies
        the application this entry will monitor.
        The apmAppDirResponsivenessType value in the index
        identifies the type of responsiveness metric this entry will
        monitor."

    INDEX { apmAppDirAppLocalIndex,
            apmAppDirResponsivenessType, apmExceptionIndex }
    ::= { apmExceptionTable 1 }

ApmExceptionEntry ::= SEQUENCE {
    apmExceptionIndex                       Unsigned32,
    apmExceptionResponsivenessComparison    INTEGER,
    apmExceptionResponsivenessThreshold     Unsigned32,
    apmExceptionUnsuccessfulException       INTEGER,
    apmExceptionResponsivenessEvents        Counter32,
    apmExceptionUnsuccessfulEvents          Counter32,
    apmExceptionOwner                       OwnerString,
    apmExceptionStorageType                 StorageType,
    apmExceptionStatus                      RowStatus
}

apmExceptionIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
Top   ToC   RFC3729 - Page 52
        "An index that uniquely identifies an entry in the
        apmExceptionTable amongst other entries with equivalent index
        values for apmAppDirAppLocalIndex and
        apmAppDirResponsivenessType. Each such entry sets up
        thresholds for a particular measurement of a particular
        application."
    ::= { apmExceptionEntry 1 }

apmExceptionResponsivenessComparison OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(1),
                    greater(2),
                    less(3)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "If this value is greater(2) or less(3), the associated
        apmExceptionResponsivenessThreshold will be compared to this
        value and an exception will be created if the responsiveness
        is greater than the threshold (greater(2)) or less than the
        threshold (less(3))."
    ::= { apmExceptionEntry 2 }

apmExceptionResponsivenessThreshold OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The threshold that responsiveness metrics are compared to."
    ::= { apmExceptionEntry 3 }

apmExceptionUnsuccessfulException OBJECT-TYPE
    SYNTAX      INTEGER {
                    off(1),
                    on(2)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "If this value is on(2), an exception will be created if a
        transaction of the associated type is unsuccessful."
    ::= { apmExceptionEntry 4 }

apmExceptionResponsivenessEvents OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
Top   ToC   RFC3729 - Page 53
    DESCRIPTION
        "The total number of responsiveness exceptions generated. This
        counter will be incremented even if no notification was sent
        due to notifications not being configured or due to exceeding
        the apmNotificationMaxRate value."
    ::= { apmExceptionEntry 5 }

apmExceptionUnsuccessfulEvents OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total number of unsuccessful exceptions generated. This
        counter will be incremented even if no notification was sent
        due to notifications not being configured or due to exceeding
        the apmNotificationMaxRate value."
    ::= { apmExceptionEntry 6 }

apmExceptionOwner OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The entity that configured this entry and is
        therefore using the resources assigned to it."
    ::= { apmExceptionEntry 7 }

apmExceptionStorageType OBJECT-TYPE
    SYNTAX     StorageType
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The storage type of this apmReportControlEntry. If the value
        of this object is 'permanent', no objects in this row need to
        be writable."
    ::= { apmExceptionEntry 8 }

apmExceptionStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The status of this apmExceptionEntry. The only objects in the
        entry that may be modified while the entry is in the active
        state are apmExceptionResponsivenessComparison,
        apmExceptionResponsivenessThreshold and
        apmExceptionUnsuccessfulException."
    ::= { apmExceptionEntry 9 }
Top   ToC   RFC3729 - Page 54
apmThroughputExceptionMinTime OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Because the responsiveness for throughput-oriented
        transactions is divided by the elapsed time, it can be very
        sensitive to short-term performance variations for
        transactions that take a short period of time. For example,
        when downloading a very short file, a single dropped packet
        could double or triple the total response time.

        Further, throughput is usually examined for applications that
        transfer a lot of data, and when doing so it is helpful to
        conceptualize transaction costs that are proportional to the
        amount of data separately from those costs that are relatively
        fixed (i.e., independent of the amount of data).  For very
        short transactions, these fixed transaction costs (handshake,
        setup time, authentication, round-trip time) may dominate the
        total response time for the transaction, resulting in
        throughput measurements that aren't really proportional to the
        network's, server's and client's combined data throughput
        capability.

        This object controls the minimum number of seconds that an
        throughput-based transaction must exceed before an exception
        can be generated for it. If this object is set to zero, then
        all throughput-based transactions are candidates for
        exceptions.

        The value of this object must persist across reboots."
    DEFVAL     { 10 }
    ::= { apmMibObjects 14 }

apmNotificationMaxRate OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The maximum number of notifications that can be generated
        from this agent by the apmExceptionTable in any 60 second
        period.

        The value of this object must persist across reboots."
    DEFVAL { 1 }
    ::= { apmMibObjects 15 }
Top   ToC   RFC3729 - Page 55
-- APM Notifications

apmNotifications OBJECT IDENTIFIER ::= { apm 0 }

apmTransactionResponsivenessAlarm NOTIFICATION-TYPE
    OBJECTS     { apmExceptionResponsivenessThreshold,
                  apmTransactionResponsiveness }
    STATUS      current
    DESCRIPTION
        "Notification sent when a transaction exceeds a threshold
        defined in the apmException table. The index of the
        included apmExceptionResponsivenessThreshold object identifies
        the apmExceptionEntry that specified the threshold. The
        apmTransactionResponsiveness variable identifies the actual
        transaction and its responsiveness.

        Agent implementors are urged to include additional data
        objects in the alarm that may explain the reason for the
        alarm. It is helpful to include such data in the alarm because
        it describes the situation at the time the alarm was
        generated, where polls after the fact may not provide
        meaningful information. Examples of such information are CPU
        load, memory utilization, network utilization, and transaction
        statistics."
    ::= { apmNotifications 1 }

apmTransactionUnsuccessfulAlarm NOTIFICATION-TYPE
    OBJECTS     { apmExceptionResponsivenessThreshold }
    STATUS      current
    DESCRIPTION
        "Notification sent when a transaction is unsuccessful.
        The index of the included apmExceptionResponsivenessThreshold
        object identifies both the type of the transaction that caused
        this notification as well as the apmExceptionEntry that
        specified the threshold.

        Agent implementors are urged to include additional data
        objects in the alarm that may explain the reason for the
        alarm. It is helpful to include such data in the alarm because
        it describes the situation at the time the alarm was
        generated, where polls after the fact may not provide
        meaningful information. Examples of such information are CPU
        load, memory utilization, network utilization, and transaction
        statistics."
    ::= { apmNotifications 2 }

apmCompliance MODULE-COMPLIANCE
    STATUS  current
Top   ToC   RFC3729 - Page 56
    DESCRIPTION
        "Describes the requirements for conformance to
        the APM MIB"
    MODULE  -- this module
        MANDATORY-GROUPS { apmAppDirGroup, apmReportGroup }

        GROUP apmUserDefinedApplicationsGroup
          DESCRIPTION
              "Implementation of the apmUserDefinedApplicationsGroup
              is optional."

        GROUP apmTransactionGroup
          DESCRIPTION
              "Implementation of the apmTransactionGroup is optional."

        GROUP apmExceptionGroup
          DESCRIPTION
              "Implementation of the apmExceptionGroup is optional."

        GROUP apmNotificationGroup
          DESCRIPTION
              "Implementation of the apmNotificationGroup is optional."

    ::= { apmCompliances 1 }

apmAppDirGroup OBJECT-GROUP
    OBJECTS { apmAppDirConfig,
              apmAppDirResponsivenessBoundary1,
              apmAppDirResponsivenessBoundary2,
              apmAppDirResponsivenessBoundary3,
              apmAppDirResponsivenessBoundary4,
              apmAppDirResponsivenessBoundary5,
              apmAppDirResponsivenessBoundary6,
              apmBucketBoundaryLastChange, apmAppDirID,
              apmNameMachineName, apmNameUserName }
    STATUS  current
    DESCRIPTION
        "The APM MIB directory of applications and application verbs."
    ::=  { apmGroups 1 }

apmUserDefinedApplicationsGroup OBJECT-GROUP
    OBJECTS {     apmHttpFilterAppLocalIndex,
                  apmHttpFilterServerProtocol,
                  apmHttpFilterServerAddress, apmHttpFilterURLPath,
                  apmHttpFilterMatchType, apmHttpFilterOwner,
                  apmHttpFilterStorageType, apmHttpFilterRowStatus,
                  apmHttpIgnoreUnregisteredURLs, apmHttp4xxIsFailure,
                  apmUserDefinedAppParentIndex,
Top   ToC   RFC3729 - Page 57
                  apmUserDefinedAppApplication }
    STATUS  current
    DESCRIPTION
        "Objects used for creating and managing user-defined
        applications."
    ::= { apmGroups 2 }

apmReportGroup OBJECT-GROUP
    OBJECTS { apmReportControlDataSource,
              apmReportControlAggregationType,
              apmReportControlInterval,
              apmReportControlRequestedSize,
              apmReportControlGrantedSize,
              apmReportControlRequestedReports,
              apmReportControlGrantedReports,
              apmReportControlStartTime,
              apmReportControlReportNumber,
              apmReportControlDeniedInserts,
              apmReportControlDroppedFrames,
              apmReportControlOwner,
              apmReportControlStorageType,
              apmReportControlStatus,
              apmReportTransactionCount,
              apmReportSuccessfulTransactions,
              apmReportResponsivenessMean,
              apmReportResponsivenessMin,
              apmReportResponsivenessMax,
              apmReportResponsivenessB1,
              apmReportResponsivenessB2,
              apmReportResponsivenessB3,
              apmReportResponsivenessB4,
              apmReportResponsivenessB5,
              apmReportResponsivenessB6,
              apmReportResponsivenessB7 }
    STATUS  current
    DESCRIPTION
        "The apm report group controls the creation and retrieval of
        reports that aggregate application performance."
    ::=  { apmGroups 3 }

apmTransactionGroup OBJECT-GROUP
    OBJECTS { apmTransactionResponsiveness,
              apmTransactionAge, apmTransactionSuccess,
              apmTransactionsRequestedHistorySize }
    STATUS  current
    DESCRIPTION
        "The apm transaction group contains statistics for
        individual transactions."
Top   ToC   RFC3729 - Page 58
    ::=  { apmGroups 4 }

apmExceptionGroup OBJECT-GROUP
    OBJECTS { apmExceptionResponsivenessComparison,
              apmExceptionResponsivenessThreshold,
              apmExceptionUnsuccessfulException,
              apmExceptionResponsivenessEvents,
              apmExceptionUnsuccessfulEvents,
              apmExceptionOwner, apmExceptionStorageType,
              apmExceptionStatus, apmThroughputExceptionMinTime,
              apmNotificationMaxRate }
    STATUS  current
    DESCRIPTION
        "The apm exception group causes notifications to be sent
        whenever transactions are detected that had poor availability
        or responsiveness."
    ::=  { apmGroups 5 }

apmNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS { apmTransactionResponsivenessAlarm,
                    apmTransactionUnsuccessfulAlarm }
    STATUS        current
    DESCRIPTION
        "Notifications sent by an APM MIB agent."
    ::= { apmGroups 6 }

END

4. Security Considerations

There are a number of management objects defined in this MIB module with a MAX-ACCESS clause of read-write and/or read-create. Such objects may be considered sensitive or vulnerable in some network environments. The support for SET operations in a non-secure environment without proper protection can have a negative effect on network operations. Specifically, most of the read-write and read-create objects in this MIB module may be used to configure an agent to reveal network addresses, application usage information and conversation statistics that may be considered sensitive in some environments. Some of the readable objects in this MIB module (i.e., objects with a MAX-ACCESS other than not-accessible) may be considered sensitive or vulnerable in some network environments. It is thus important to control even GET and/or NOTIFY access to these objects and possibly to even encrypt the values of these objects when sending them over the network via SNMP.
Top   ToC   RFC3729 - Page 59
   Specifically, this MIB contains network addresses, machines names,
   user names, application usage information, and conversation
   statistics.  Data of this nature should be considered sensitive and
   the privacy of the users from whom it was gathered protected.
   Administrators should restrict read access to this data to
   specifically authorized individuals or agents that recognize the
   privacy implications of its release.  In situations where read access
   to this data cannot be restricted, it should not be gathered.

   Systems that implement the objects in this MIB module have the
   capability of measuring the time taken to execute transactions.
   Depending on the transaction type, some or all of this transaction
   time may be associated with the time taken to perform security
   calculations.  Such data may help an attacker to use timing attacks
   to extract secrets from the systems involved in the transactions.
   See [10] for more information.

   SNMP versions prior to SNMPv3 did not include adequate security.
   Even if the network itself is secure (for example by using IPSec),
   even then, there is no control as to who on the secure network is
   allowed to access and GET/SET (read/change/create/delete) the objects
   in this MIB module.

   It is RECOMMENDED that implementers consider the security features as
   provided by the SNMPv3 framework (see [8], section 8), including full
   support for the SNMPv3 cryptographic mechanisms (for authentication
   and privacy).

   Further, deployment of SNMP versions prior to SNMPv3 is NOT
   RECOMMENDED.  Instead, it is RECOMMENDED to deploy SNMPv3 and to
   enable cryptographic security.  It is then a customer/operator
   responsibility to ensure that the SNMP entity giving access to an
   instance of this MIB module is properly configured to give access to
   the objects only to those principals (users) that have legitimate
   rights to indeed GET or SET (change/create/delete) them.
Top   ToC   RFC3729 - Page 60

5. References

5.1. Normative References

[1] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. [2] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999. [3] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999. [4] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June 2000. [5] Waldbusser, S., "Remote Network Monitoring Management Information Base Version 2 using SMIv2", RFC 2021, January 1997. [6] Bierman, A., Bucci, C. and R. Iddon, "Remote Network Monitoring MIB Protocol Identifiers", RFC 2895, August 2000. [7] Waldbusser, S., "Remote Network Monitoring Management Information Base", STD 59, RFC 2819, May 2000.

5.2. Informative References

[8] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002. [9] Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform Resource Locators (URL)", RFC 1738, December 1994. [10] Boneh, D. and D. Brumley, "Remote timing attacks are practical", Proceedings of 12th USENIX Security Symposium, August 2003.

6. Author's Address

Steven Waldbusser EMail: waldbusser@nextbeacon.com
Top   ToC   RFC3729 - Page 61

7. Full Copyright Statement

Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78 and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf- ipr@ietf.org. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society.