-- *****************************************************************
-- CISCO-FLOW-MONITOR-MIB
-- Definitions of managed objects describing flow monitoring.
--   
-- October 2008-2009 Patrick R. Gili
--   
-- Copyright (c) 2008-2009 by Cisco Systems Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-FLOW-MONITOR-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    NOTIFICATION-TYPE,
    OBJECT-IDENTITY,
    OBJECT-TYPE,
    Counter64,
    Gauge32,
    Unsigned32
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    NOTIFICATION-GROUP,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    AutonomousType,
    RowPointer,
    TimeStamp,
    TruthValue
        FROM SNMPv2-TC
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    InetAddressType,
    InetAddress,
    InetPortNumber
        FROM INET-ADDRESS-MIB
    VlanId
        FROM Q-BRIDGE-MIB
    CiscoAlarmSeverity,
    Layer2Cos
        FROM CISCO-TC
    ReportIntervalCount
        FROM CISCO-REPORT-INTERVAL-TC-MIB
    FlowMonitorIdentifier,
    FlowIdentifier,
    FlowPointType,
    FlowPointIdentifier,
    FlowMetrics,
    FlowBitRateUnits,
    FlowMetricValue,
    FlowMetricScale,
    FlowMetricPrecision,
    FlowMonitorConditions,
    FlowMonitorConditionsProfile,
    FlowMonitorConditionsProfileOrZero,
    FlowMonitorConditionIdentifier,
    FlowMonitorAlarmGroupIdentifier,
    FlowSetIdentifier
        FROM CISCO-FLOW-MONITOR-TC-MIB
    ciscoMgmt
        FROM CISCO-SMI;


ciscoFlowMonitorMIB MODULE-IDENTITY
    LAST-UPDATED    "200904080000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO
            "Cisco Systems
            Customer Service

            Postal:  170 W Tasman Drive
            San Jose, CA 95134

            Tel:  +1 800 553-NETS

            E-mail:  cs-snmp@cisco.com"
    DESCRIPTION
        "This MIB module defines objects that describe flow monitoring.
        A typical application of this MIB module will facilitate
        monitoring media flows, especially flows carrying video streams.
        However, by no means does the definition of this MIB module
        prevents other applications from using it.

        FLOW MONITORS
        =================

        At the top level, this MIB module describes the notion of a flow
        monitor.  A flow monitor is a hardware or software entity that
        classifies traffic flows, collects data on conforming traffic
        flows, and periodically computes metrics that reflect the
        quality of the traffic flows.  Because a device can support more
        than one flow monitor, the MIB module defines the
        cfmFlowMonitorTable.  Consider an edge router that supports a
        certain line card that has an integrated capability to monitor
        video flows.  In this example, the cfmFlowMonitorTable would
        contain a row describing each line card installed in the device.

        TRAFFIC FLOWS
        =================

        At the next level, this MIB module describes the notion of a
        traffic flow.  This MIB module uniquely identifies a traffic
        flow using an auxiliary variable called cfmFlowId; however, an
        implementation only has guarantee its uniqueness within the
        scope of the flow monitor that has the responsibility for
        monitoring the traffic flow.  Thus, we can think of the flow
        monitor as a container for the traffic flows for which it
        collects data and periodically computes metrics, as the figure
        below illustrates.

                                       +----------------------------+
                                       | cfmFlowTable               |
                                       |                            |
        +----------------------+     +--------------------------------+
        | cfmFlowMonitorId = 3 ----->|   +------------------------+   |
        +----------------------+     |   | cfmFlowMonitorId = 3   |   |
                                     |   | cfmFlowId = 101        |   |
                                     |   +------------------------+   |
                                     |   +------------------------+   |
                                     |   | cfmFlowMonitorId = 3   |   |
                                     |   | cfmFlowId = 102        |   |
                                     |   +------------------------+   |
                                     |       :                        |
                                     |       :                        |
                                     |   +------------------------+   |
                                     |   | cfmFlowMonitorId = 3   |   |
                                     |   | cfmFlowId = 150        |   |
                                     |   +------------------------+   |
                                     +--------------------------------+
                                       |                            |
        +----------------------+     +--------------------------------+
        | cfmFlowMonitorId = 4 ----->|   +------------------------+   |
        +----------------------+     |   | cfmFlowMonitorId = 4   |   |
                                     |   | cfmFlowId = 1          |   |
                                     |   +------------------------+   |
                                     |   +------------------------+   |
                                     |   | cfmFlowMonitorId = 4   |   |
                                     |   | cfmFlowId = 2          |   |
                                     |   +------------------------+   |
                                     |       :                        |
                                     |       :                        |
                                     |   +------------------------+   |
                                     |   | cfmFlowMonitorId = 4   |   |
                                     |   | cfmFlowId = 150        |   |
                                     |   +------------------------+   |
                                     +--------------------------------+
                                       |                            |
                                       +----------------------------+

        While the identifying of a traffic flow using this auxiliary
        variable is convenient for the MIB module, it is does suffice
        for an EMS/NMS trying to isolate faults in a network delivering
        these traffic flows.  To aid an EMS/NMS in this task, this MIB
        module defines a number of tables that provide layers of data
        relating to a traffic flow, including:

            o cfmFlowL2VlanTable - describes L2 VLAN data relating to
                  traffic flows.

            o cfmFlowIpTable - describes IP data relating to traffic
                  flows.

            o cfmFlowUdpTable - describes UDP data relating to traffic
                  flows.

            o cfmFlowTcpTable - describes TCP data relating to traffic
                  flows.

            o cfmFlowRtpTable - describes RTP data relating to traffic
                  flows.

        Each of these tables have a sparse dependent relationship on the
        cfmFlowTable, as there exist situations when the data may not be
        available for a traffic flow, including:

            1)  The flow monitor simply may not collect the particular
                data for the traffic flows that it has the
                responsibility of monitoring.  For example, a flow
                monitor may not have any concern for L2 VLAN data.

            2)  The data may not apply to a traffic flow.  For example,
                a TCP and RTP data do not apply for a UDP traffic flow.

        To help an EMS/NMS navigate the data collected for a traffic
        flow, the corresponding rows are daisy-chained using 'next
        objects'.  An EMS/NMS starts with cfmFlowNext, which indicates a
        reference to the row in the next table containing data related
        to the traffic flow.  The first object contained by each of
        these tables is a 'next object'.  Consider a RTP traffic flow
        for which the flow monitor has collected IP, UDP, and RTP data.
        The figure below illustrates how this MIB module daisy chains
        this data through the relevant tables.

        +-------------------------------------------+
        | cfmFlowTable                              |
        | +---------------------------------------+ |
        | | cfmFlowMonitorId = 3                  | |
        | | cfmFlowId = 42                        | |
        | | cfmFlowNext = cfmFlowIpNext.3.42 ----------+
        | +---------------------------------------+ |  |
        +-------------------------------------------+  |
                                                       |
        +-------------------------------------------+  |
        | cfmFlowIpTable                            |  |
        | +---------------------------------------+ |  |
        | | cfmFlowMonitorId = 3                  |<---+
        | | cfmFlowId = 42                        | |
        | | cfmFlowIpNext = cfmFlowUdpNext.3.42 -------+
        | +---------------------------------------+ |  |
        +-------------------------------------------+  |
                                                       |
        +-------------------------------------------+  |
        | cfmFlowUdpTable                           |  |
        | +---------------------------------------+ |  |
        | | cfmFlowMonitorId = 3                  |<---+
        | | cfmFlowId = 42                        | |
        | | cfmFlowUdpNext = cfmFlowRtpNext.3.42 ------+
        | +---------------------------------------+ |  |
        +-------------------------------------------+  |
                                                       |
        +-------------------------------------------+  |
        | cfmFlowRtpTable                           |  |
        | +---------------------------------------+ |  |
        | | cfmFlowMonitorId = 3                  |<---+
        | | cfmFlowId = 42                        | |
        | | cfmFlowRtpNext = zeroDotZero          | |
        | +---------------------------------------+ |
        +-------------------------------------------+

        Observe that this structure simplifies the task of extending the
        MIB module to support additional layers of data.  For example,
        if there is a need for a device to collect data relating to the
        MPEG-TS layer of a flow carrying a video stream, then it is as
        simple as defining a table containing this data.  However, the
        definition of such a table must comply with the following
        requirements:

            1)  The table must have a sparse dependent relationship on
                the cfmFlowTable.

            2)  The first object contained by the table must be a 'next
                object' to support daisy chaining.

        REPORTING FLOW METRICS
        ==========================

        At the next level, the MIB defines two tables that together form
        the foundation for reporting metrics.  The cfmFlowMetricsTable
        has a one-to-one dependent relationship on the cfmFlowTable, and
        it contains data aggregate metrics and data relating to the
        collection of metrics for the corresponding traffic flow.  A row
        in this table also serves as a container for the historic
        metrics computed by the corresponding flow monitor, as the
        figure below illustrates.

                                      +----------------------------+
                                      | cfmFlowMetricsIntTable     |
                                      |                            |
        +----------------------+   +----------------------------------+
        | cfmFlowMetricsEntry  |-->| +------------------------------+ |
        |                      |   | | cfmFlowMonitorId = 3         | |
        | cfmFlowMonitorId = 3 |   | | cfmFlowId = 101              | |
        | cfmFlowid = 101      |   | | cfmFlowMetricsIntNumber = 1  | |
        +----------------------+   | +------------------------------+ |
                                   | +------------------------------+ |
                                   | | cfmFlowMonitorId = 3         | |
                                   | | cfmFlowId = 101              | |
                                   | | cfmFlowMetricsIntNumber = 2  | |
                                   | +------------------------------+ |
                                   |     :                            |
                                   |     :                            |
                                   | +------------------------------+ |
                                   | | cfmFlowMonitorId = 3         | |
                                   | | cfmFlowId = 101              | |
                                   | | cfmFlowMetricsIntNumber = N  | |
                                   | +------------------------------+ |
                                   +----------------------------------+
                                      |                            |
                                      +----------------------------+

        The device collects data for a traffic flow over a configured
        measurement interval, indicated by cfmFlowMetricsIntervalTime.
        At the end of a measurement interval, the device computes
        metrics from this data, generating a report.  An EMS/NMS can
        access this report using the cfmFlowMetricsIntTable.
        cfmFlowMetricsMaxInterval indicates the maximum number of
        reports a device will save for the corresponding traffic flow,
        while cfmFlowMetricsIntervals indicates the number of reports
        currently saved by the device.

        The cfmFlowMetricsTable and cfmFlowMetricsIntTable have the
        intent of providing a foundation for reporting metrics for a
        traffic flow.  Furthermore, it is the intent that additional MIB
        modules define extensions to these tables describing specific
        sets of metrics.  The following list provides some examples:

            o CISCO-FLOW-MON-MDI-MIB - this MIB module defines
                  extensions that describe MDI metrics defined by
                  RFC-4445.

            o CISCO-FLOW-MON-RTP-MIB - this MIB module defines
                  extensions that describe RTP metrics defined by
                  RFC-3550.

            o CISCO-FLOW-MON-IP-CBR-MIB - this MIB module defines
                  extension that describe IP CBR metrics.

        The tables defined by these MIB modules have a sparse dependent
        relationhip on the cfmFlowMetricsTable and
        cfmFlowMetricsIntTable.  An EMS/NMS can determine the metrics
        collected for a traffic flow from the corresponding instance of
        cfmFlowMetricsCollected, which is nothing more than a bit
        string-value for which each bit corresponds to a different set
        of metrics.

        FAULT MANAGEMENT
        ====================

        At the next level, this MIB module defines tables that describe
        standing conditions.  A standing condition is a lasting error,
        fault, or warning resulting from the application of a set of
        criteria to the state of an entity.

        For example, a flow monitor ceases monitoring a traffic flow
        when it has not received any packets for that traffic flow in a
        configured interval of time.  If flow monitor expires a
        significantly large number of traffic flows during a measurement
        interval, then this might signal a fault.

        In this example, the 'set of criteria' is a rising threshold and
        the 'state of an entity' is the number of traffic flows
        expired by a flow monitor.

        The cfmConditionTable describes the criteria applied to entities
        managed by the device, specifically flow monitors and traffic
        flows.  The table groups these criteria into 'conditions
        profiles'.  The device periodically applies these criteria
        to an entity and saves the results in a bit string-value
        associated with the entity.

        An EMS/NMS can monitor the most recent standing conditions for a
        flow monitor by retrieving the corresponding instance of
        cfmFlowMonitorConditions.  Likewise, an EMS/NMS can monitor the
        most recent standing conditions for a traffic flow by retrieving
        the corresponding instance of cfmFlowMetricsConditions.

        It goes without saying that monitoring the standing conditions
        for significantly large numbers of traffic flows becomes
        problematic.  To aid an EMS/NMS in this task, this MIB module
        defines many mechanisms.  The most basic of these mechanisms is
        the notion of an alarm, which is simply a standing condition for
        which the device signals changes in state.  This MIB module
        provides for three means of signaling when the device raises or
        clears an alarm condition:

            1)  Logging - the device creates a record of the event and
                    saves it in a historical account.

            2)  syslog - the device generates a syslog message
                    containing details of the event and sends it to one
                    or more configured syslog server.

            3)  SNMP - the device generates a SNMP notification
                    containing details of the event and sends it to one
                    or more configured targets.

        An EMS/NMS can monitor the most recent alarm conditions for a
        flow monitor by retrieving the corresponding instance of
        cfmFlowMonitorAlarms.  Likewise, the EMS/NMS can monitor the
        most recent alarm conditions for a traffic flow by retrieving
        the corresponding instance of cfmFlowMetricsAlarms.

        Additionally, the EMS/NMS can poll a summary of alarm conditions
        maintained for each flow monitor and the traffic flows that it
        monitors.  The following list summarizes the data contained by
        this summary:

            o cfmFlowMonitorAlarmSeverity
            o cfmFlowMonitorAlarmCriticalCount
            o cfmFlowMonitorAlarmMajorCount
            o cfmFlowMonitorAlarmMinorCount
            o cfmFlowMonitorAlarmWarningCount
            o cfmFlowMonitorAlarmInfoCount

        An EMS/NMS can also poll cfmAlarmHistoryLastId, which indicates
        the value of the identifier assigned to the last record saved to
        the historical account.  When it observes a change in the value
        of this object, then it can retrieve the new records from the
        cfmAlarmHistoryTable.

        The burden of monitoring alarm conditions for sufficiently large
        numbers of traffic flows can itself become a daunting task.
        Thus, this MIB module defines the notion of an alarm group,
        which represents a single alarm condition that aggregates a
        standing condition for a set of traffic flows.  The
        cfmAlarmGroupTable describes the alarm groups configured for a
        device, and the cfmAlarmGroupFlowTable describes the sets of
        flows aggregated by these alarm groups.

        GLOSSARY
        ============

        Alarm Action - a method used by the device to signal changes in
            an alarm condition.

        Alarm Aggregation - a technique used to efficiently monitor the
            same standing condition for a flow set.

        Alarm Condition - a standing condition for which the device
            signals changes in state.

        Alarm Group - a flow set for which the device monitors a
            configured standing condition, raising an alarm when a
            configured number of flows in the flow set assert the
            standing standing.

        Alarm Severity - the relative disposition of an alarm condition
            when raised by the device.  For example, a provider may
            regard a flow stop alarm as having a higher severity than a
            flow's loss fraction exceeding a configured threshold.

        Flow Monitor - a hardware or software entity that classifies
            traffic flows, collects flow data, and periodically
            computes flow metrics.

        Flow Metric - a measurement that reflects the quality of a
            traffic flow.

        Flow Point - represents the ingress or egress of a traffic flow.

        Flow Set - a group of traffic flows.

        Measurement Interval - the length of time over which a flow
            monitor collects data related to a traffic flow, after which
            the flow monitor computes flow metrics using the collected
            data.

        Standing Condition - represents a lasting error, fault, or
            warning resulting from the application of a set of criteria
            to the state of an entity, such as a flow monitor or traffic
            flow.  For example, a flow monitor may assert a standing
            condition if the number of traffic flows that expire in a
            measurement interval exceeds a configured threshold.

        Traffic Flow - a unidirectional stream of packets conforming to
            a classifier.  For example, packets having a particular 
            source IP address, destination IP address, protocol type,
            source port number, and destination port number."
    REVISION        "200904080000Z"
    DESCRIPTION
        "The initial version of the MIB module."
    ::= { ciscoMgmt 692 }


-- *********************************************************************
-- * Top-Level Trees                                                   *
-- *********************************************************************

ciscoFlowMonitorMIBNotifs  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIB 0 }

ciscoFlowMonitorMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIB 1 }

ciscoFlowMonitorMIBConform  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIB 2 }

ciscoFlowMonitorMIBIds  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIB 3 }

-- *********************************************************************
-- * Objects                                                           *
-- *********************************************************************

cfmFlowMonitors  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBObjects 1 }


cfmFlowMonitorTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowMonitorEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists the flow monitors contained by the device."
    ::= { cfmFlowMonitors 1 }

cfmFlowMonitorEntry OBJECT-TYPE
    SYNTAX          CfmFlowMonitorEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes a flow monitor, which represents a hardware
        or software entity that classifies traffic flows, monitors flow
        data, and periodically computes flow metrics.

        A simple device may only support a single flow monitor, where a
        more sophisticated device may support more than one flow
        monitor.

        A device supporting multiple flow monitors creates a row in the
        cfmFlowMonitorTable when it recognizes the addition of a new
        flow monitor, such as might occur upon the insertion of a
        line card that supports flow monitoring.  Likewise, such a
        device destroys a row in the cfmFlowMonitorTable when a flow
        monitor has been removed."
    INDEX           { cfmFlowMonitorId } 
    ::= { cfmFlowMonitorTable 1 }

CfmFlowMonitorEntry ::= SEQUENCE {
        cfmFlowMonitorId                 FlowMonitorIdentifier,
        cfmFlowMonitorDescr              SnmpAdminString,
        cfmFlowMonitorCaps               FlowMetrics,
        cfmFlowMonitorFlowCount          Gauge32,
        cfmFlowMonitorConditionsProfile  FlowMonitorConditionsProfileOrZero,
        cfmFlowMonitorConditions         FlowMonitorConditions,
        cfmFlowMonitorAlarms             FlowMonitorConditions,
        cfmFlowMonitorAlarmSeverity      CiscoAlarmSeverity,
        cfmFlowMonitorAlarmCriticalCount Gauge32,
        cfmFlowMonitorAlarmMajorCount    Gauge32,
        cfmFlowMonitorAlarmMinorCount    Gauge32,
        cfmFlowMonitorAlarmWarningCount  Gauge32,
        cfmFlowMonitorAlarmInfoCount     Gauge32
}

cfmFlowMonitorId OBJECT-TYPE
    SYNTAX          FlowMonitorIdentifier
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates an arbitrary integer-value that uniquely
        identifies the flow monitor.  Observe that the value assigned to
        a flow monitor does not necessarily persist across restarts or
        the
        removal-insertion of a physical entity supporting flow
        monitor(s)." 
    ::= { cfmFlowMonitorEntry 1 }

cfmFlowMonitorDescr OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a human-readable description for the flow
        monitor." 
    ::= { cfmFlowMonitorEntry 2 }

cfmFlowMonitorCaps OBJECT-TYPE
    SYNTAX          FlowMetrics
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the capabilities of the flow monitor.
        Specifically, the value of this column indicates a '1' for each
        set of flow metrics the flow monitor is capable of measuring." 
    ::= { cfmFlowMonitorEntry 3 }

cfmFlowMonitorFlowCount OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "traffic flows"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of traffic flows currently
        monitored by the flow monitor." 
    ::= { cfmFlowMonitorEntry 4 }

cfmFlowMonitorConditionsProfile OBJECT-TYPE
    SYNTAX          FlowMonitorConditionsProfileOrZero
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the conditions profile that contains the
        descriptions of the standing conditions monitored for the flow
        monitor.

        If the flow monitor does not have an associated conditions
        profile, then the value of this column must be zero." 
    ::= { cfmFlowMonitorEntry 5 }

cfmFlowMonitorConditions OBJECT-TYPE
    SYNTAX          FlowMonitorConditions
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the current standing conditions for the
        flow monitor.

        If the flow monitor does not have an associated conditions
        profile, then the value of this column must be the null string." 
    ::= { cfmFlowMonitorEntry 6 }

cfmFlowMonitorAlarms OBJECT-TYPE
    SYNTAX          FlowMonitorConditions
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the current alarm conditions for the flow
        monitor.

        If the flow monitor does not have an associated conditions
        profile, then the value of this column must be the null string." 
    ::= { cfmFlowMonitorEntry 7 }

cfmFlowMonitorAlarmSeverity OBJECT-TYPE
    SYNTAX          CiscoAlarmSeverity
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the high severity alarm condition
        currently raised by the flow monitor and the traffic flows
        monitored by the flow monitor.

        If no alarm is raised for the flow monitor and the traffic
        flows monitored for the flow monitor, then the value of this
        column is 'cleared'." 
    ::= { cfmFlowMonitorEntry 8 }

cfmFlowMonitorAlarmCriticalCount OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "alarms"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of alarm conditions with a
        critical severity currently raised for traffic flows monitored
        by the flow monitor." 
    ::= { cfmFlowMonitorEntry 9 }

cfmFlowMonitorAlarmMajorCount OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "alarms"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of alarm conditions with a
        major severity currently raised for traffic flows monitored by
        the flow monitor." 
    ::= { cfmFlowMonitorEntry 10 }

cfmFlowMonitorAlarmMinorCount OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "alarms"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of alarm conditions with a
        minor severity currently raised for traffic flows monitored by
        the flow monitor." 
    ::= { cfmFlowMonitorEntry 11 }

cfmFlowMonitorAlarmWarningCount OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "alarms"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of alarm conditions with a
        warning severity currently raised for traffic flows monitored by
        the flow monitor." 
    ::= { cfmFlowMonitorEntry 12 }

cfmFlowMonitorAlarmInfoCount OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "alarms"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of alarm conditions with a
        informational severity currently raised for traffic flows
        monitored by the flow monitor." 
    ::= { cfmFlowMonitorEntry 13 }
 


cfmFlowMonitorTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device created or destroyed a row in cfmFlowMonitorTable." 
    ::= { cfmFlowMonitors 2 }
cfmFlows  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBObjects 2 }


cfmFlowTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists the traffic flows monitored by each flow
        monitor supported by the device.

        This table has an expansion dependent relationship on the
        cfmFlowMonitorTable, containing zero or more rows for each flow
        monitor."
    ::= { cfmFlows 1 }

cfmFlowEntry OBJECT-TYPE
    SYNTAX          CfmFlowEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes a traffic flow monitored by a flow monitor.

        The device creates a row in the cfmFlowTable when a flow monitor
        starts monitoring a traffic flow.  Likewise, the device
        destroys a row in the cfmFlowTable when a traffic flow monitored
        by a flow monitor has timed out."
    INDEX           {
                        cfmFlowMonitorId,
                        cfmFlowId
                    } 
    ::= { cfmFlowTable 1 }

CfmFlowEntry ::= SEQUENCE {
        cfmFlowId                FlowIdentifier,
        cfmFlowDescr             SnmpAdminString,
        cfmFlowNext              RowPointer,
        cfmFlowCreateTime        TimeStamp,
        cfmFlowDiscontinuityTime TimeStamp,
        cfmFlowExpirationTime    Unsigned32,
        cfmFlowDirection         INTEGER,
        cfmFlowAdminStatus       INTEGER,
        cfmFlowOperStatus        INTEGER,
        cfmFlowIngressType       FlowPointType,
        cfmFlowIngress           FlowPointIdentifier,
        cfmFlowEgressType        FlowPointType,
        cfmFlowEgress            FlowPointIdentifier
}

cfmFlowId OBJECT-TYPE
    SYNTAX          FlowIdentifier
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates an arbitrary integer-value that uniquely
        identifies a traffic flow in the scope of the flow monitor that
        learned it.  Observe that the value assigned to a flow does not
        necessarily persist across restarts or the removal-insertion of
        a
        physical entity supporting flow monitor(s)." 
    ::= { cfmFlowEntry 1 }

cfmFlowDescr OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a human-readable description of the
        traffic flow." 
    ::= { cfmFlowEntry 2 }

cfmFlowNext OBJECT-TYPE
    SYNTAX          RowPointer
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a reference to a row in another table
        containing additional data relating to the traffic flow." 
    ::= { cfmFlowEntry 3 }

cfmFlowCreateTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime when the row was
        created." 
    ::= { cfmFlowEntry 4 }

cfmFlowDiscontinuityTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime on the most
        recent occasion at which any one or more of counters associated
        with the traffic flow suffered a discontinuity (e.g., process
        restart or failover event)." 
    ::= { cfmFlowEntry 5 }

cfmFlowExpirationTime OBJECT-TYPE
    SYNTAX          Unsigned32 (0..4294967295)
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the expiration interval for the traffic
        flow.  If the flow monitor receives no packets for the traffic
        flow in this interval, then it expires the flow; that is, it
        stops monitoring the traffic and removes the corresponding row
        from the cfmFlowTable.  If this column is '0', then the traffic
        flow was statically configured (as opposed to dynamically
        learned) and it will never expire." 
    ::= { cfmFlowEntry 6 }

cfmFlowDirection OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unknown(1),
                        ingress(2),
                        egress(3)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the direction of the traffic flow where
        the flow monitor collects data:

            'unknown'
                The SNMP entity does not know the direction of the
                traffic flow at the point the flow monitor collects
                data.

            'ingress'
                The flow monitor collects data at the point where the
                traffic flow enters the devices

            'egress'
                The flow monitor collects data at the point where the
                traffic flow leaves the device." 
    ::= { cfmFlowEntry 7 }

cfmFlowAdminStatus OBJECT-TYPE
    SYNTAX          INTEGER  {
                        enabled(1),
                        disabled(2),
                        expire(3)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the desired state of the traffic flow:

        'enabled'
            The corresponding flow monitor is collecting data and
            computing metrics for the traffic flow.

        'disabled'
            The corresponding flow monitor is not collecting data or
            computing metrics for the traffic flow.  As long as a
            traffic flow remains in this state, the flow monitor
            will not expire the traffic flow.

        'expire'
            When this column is set to this value, it forces the
            traffic flow to expire.  It is not possible to return this
            value in a response to a retrieval operation."
    DEFVAL          { enabled } 
    ::= { cfmFlowEntry 8 }

cfmFlowOperStatus OBJECT-TYPE
    SYNTAX          INTEGER  {
                        enabled(1),
                        disabled(2)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the operational state of the traffic
        flow:

            'enabled'
                The corresponding flow monitor is actively monitoring
                the traffic flow.

            'disabled'
                The corresponding flow monitor is neither collecting
                data, nor computing metrics for the traffic flow." 
    ::= { cfmFlowEntry 9 }

cfmFlowIngressType OBJECT-TYPE
    SYNTAX          FlowPointType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of port that receives the
        traffic for this traffic flow." 
    ::= { cfmFlowEntry 10 }

cfmFlowIngress OBJECT-TYPE
    SYNTAX          FlowPointIdentifier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object identifies the port that receives the traffic for
        this
        traffic flow." 
    ::= { cfmFlowEntry 11 }

cfmFlowEgressType OBJECT-TYPE
    SYNTAX          FlowPointType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of port that transmits the
        traffic for this traffic flow." 
    ::= { cfmFlowEntry 12 }

cfmFlowEgress OBJECT-TYPE
    SYNTAX          FlowPointIdentifier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object identifies the port that transmits the traffic for
        this traffic flow." 
    ::= { cfmFlowEntry 13 }
 


cfmFlowTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device created or destroyed a row in cfmFlowTable." 
    ::= { cfmFlows 2 }

cfmFlowL2VlanTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowL2VlanEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains additional data relating to the L2 VLAN
        carrying traffic flows monitored by flow monitors.

        This table has a sparse dependent relationship on the
        cfmFlowTable."
    ::= { cfmFlows 3 }

cfmFlowL2VlanEntry OBJECT-TYPE
    SYNTAX          CfmFlowL2VlanEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes data relating to the L2 VLAN carrying the
        corresponding traffic flow.

        A device creates a row in the cfmFlowL2VlanTable when a flow
        monitor has data relating to the L2 VLAN carrying a
        corresponding traffic flow.  The device destroys a row in the
        cfmFlowL2VlanTable when the corresponding traffic flow times
        out."
    INDEX           {
                        cfmFlowMonitorId,
                        cfmFlowId
                    } 
    ::= { cfmFlowL2VlanTable 1 }

CfmFlowL2VlanEntry ::= SEQUENCE {
        cfmFlowL2VlanNext RowPointer,
        cfmFlowL2VlanId   VlanId,
        cfmFlowL2VlanCos  Layer2Cos
}

cfmFlowL2VlanNext OBJECT-TYPE
    SYNTAX          RowPointer
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a reference to a row in another table
        containing additional data relating to the corresponding traffic
        flow." 
    ::= { cfmFlowL2VlanEntry 1 }

cfmFlowL2VlanId OBJECT-TYPE
    SYNTAX          VlanId
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the tag associated with the VLAN
        carrying the corresponding traffic flow." 
    ::= { cfmFlowL2VlanEntry 2 }

cfmFlowL2VlanCos OBJECT-TYPE
    SYNTAX          Layer2Cos
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the layer 2 COS assigned to the
        corresponding traffic flow." 
    ::= { cfmFlowL2VlanEntry 3 }
 


cfmFlowL2VlanTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device changed the cfmFlowL2VlanTable." 
    ::= { cfmFlows 4 }

cfmFlowIpTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowIpEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains additional data relating to the IP carrying
        the corresponding traffic flow.

        This table has a sparse dependent relationship on the
        cfmFlowTable."
    ::= { cfmFlows 5 }

cfmFlowIpEntry OBJECT-TYPE
    SYNTAX          CfmFlowIpEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes data relating to the IP carrying the
        corresponding traffic flow.

        A device creates a row in the cfmFlowIpTable when the flow
        monitor has data relating to the IP carrying the corresponding
        traffic flow.   The device destroys a row in this table when the
        corresponding traffic flow times out."
    INDEX           {
                        cfmFlowMonitorId,
                        cfmFlowId
                    } 
    ::= { cfmFlowIpTable 1 }

CfmFlowIpEntry ::= SEQUENCE {
        cfmFlowIpNext         RowPointer,
        cfmFlowIpAddrType     InetAddressType,
        cfmFlowIpAddrSrc      InetAddress,
        cfmFlowIpAddrDst      InetAddress,
        cfmFlowIpValid        BITS,
        cfmFlowIpTrafficClass Unsigned32,
        cfmFlowIpHopLimit     Unsigned32
}

cfmFlowIpNext OBJECT-TYPE
    SYNTAX          RowPointer
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a reference to a row in another table
        containing additional data relating to the corresponding traffic
        flow." 
    ::= { cfmFlowIpEntry 1 }

cfmFlowIpAddrType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of IP address indicated by the
        corresponding instances of cfmFlowIpAddrSrc and
        cfmFlowIpAddrDst." 
    ::= { cfmFlowIpEntry 2 }

cfmFlowIpAddrSrc OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the source IP address of the
        corresponding traffic flow." 
    ::= { cfmFlowIpEntry 3 }

cfmFlowIpAddrDst OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the destination IP address of the
        corresponding traffic flow." 
    ::= { cfmFlowIpEntry 4 }

cfmFlowIpValid OBJECT-TYPE
    SYNTAX          BITS {
                        trafficClass(0),
                        hopLimit(1)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates whether the corresponding instances of
        cfmFlowIpTrafficClass and cfmFlowIpHopLimit are valid." 
    ::= { cfmFlowIpEntry 5 }

cfmFlowIpTrafficClass OBJECT-TYPE
    SYNTAX          Unsigned32 (0..255)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the traffic class of the corresponding
        traffic flow.

        If version 4 of the IP carries the traffic flow, then the value
        of this column corresponds to the 'Type of Service' field of the
        IP header contained by packets in the traffic flow.

        If version 6 of the IP carries the traffic flow, then the value
        of this column corresponds to the '' field of the IP header
        contained by packets in the traffic flow.

        The value of this column is valid only if the 'trafficClass'
        bit of the corresponding instance of cfmFlowIpValid is '1'."
    REFERENCE
        "J. Postel, 'Internet Protocol', RFC-791, September 1981.

        J. Deering and R. Hinden, 'Internet Protocol, Version 6 (IPv6)
        Specification', RFC-2460, December 1998." 
    ::= { cfmFlowIpEntry 6 }

cfmFlowIpHopLimit OBJECT-TYPE
    SYNTAX          Unsigned32 (0..255)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the hop limit of the corresponding
        traffic flow.

        If version 4 of the IP carries the traffic flow, then the value
        of this column corresponds to the 'Time to Live' field of the IP
        header contained by packets in the traffic flow (as observed by
        the flow monitor).

        If version 6 of the IP carries the traffic flow, then the value
        of this column corresponds to the 'Hop Limit' field of the IP
        header contained by packets in the traffic flow (as observed by
        the flow monitor).

        The value of this column is valid only if the 'hopLimit' bit of
        the corresponding instance of cfmFlowIpValid is '1'."
    REFERENCE
        "J. Postel, 'Internet Protocol', RFC-791, September 1981.

        J. Deering and R. Hinden, 'Internet Protocol, Version 6
        (IPv6)
        Specification', RFC-2460, December 1998." 
    ::= { cfmFlowIpEntry 7 }
 


cfmFlowIpTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device changed the cfmFlowIpTable." 
    ::= { cfmFlows 6 }

cfmFlowUdpTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowUdpEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains additional data relating to the UDP
        carrying the corresponding traffic flow.

        This table has a sparse dependent relationship on the
        cfmFlowTable."
    ::= { cfmFlows 7 }

cfmFlowUdpEntry OBJECT-TYPE
    SYNTAX          CfmFlowUdpEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes data relating to the UDP carrying the
        corresponding traffic flow.

        A device creates a row in the cfmFlowUdpTable when the flow
        monitor has data relating to the UDP carrying the corresponding
        traffic flow.  The device destroys a row in this table when the
        corresponding traffic flow times out."
    INDEX           {
                        cfmFlowMonitorId,
                        cfmFlowId
                    } 
    ::= { cfmFlowUdpTable 1 }

CfmFlowUdpEntry ::= SEQUENCE {
        cfmFlowUdpNext    RowPointer,
        cfmFlowUdpPortSrc InetPortNumber,
        cfmFlowUdpPortDst InetPortNumber
}

cfmFlowUdpNext OBJECT-TYPE
    SYNTAX          RowPointer
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a reference to a row in another table
        containing additional data relating to the corresponding traffic
        flow." 
    ::= { cfmFlowUdpEntry 1 }

cfmFlowUdpPortSrc OBJECT-TYPE
    SYNTAX          InetPortNumber
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the source UDP port number of the
        corresponding traffic flow." 
    ::= { cfmFlowUdpEntry 2 }

cfmFlowUdpPortDst OBJECT-TYPE
    SYNTAX          InetPortNumber
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the destination UDP port number of the
        corresponding traffic flow." 
    ::= { cfmFlowUdpEntry 3 }
 


cfmFlowUdpTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device changed the cfmFlowUdpTable." 
    ::= { cfmFlows 8 }

cfmFlowTcpTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowTcpEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains additional data relating to the TCP
        carrying the corresponding traffic flow.

        This table has a sparse dependent relationship on the
        cfmFlowTable."
    ::= { cfmFlows 9 }

cfmFlowTcpEntry OBJECT-TYPE
    SYNTAX          CfmFlowTcpEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes data relating to the TCP carrying the
        corresponding traffic flow.

        A device creates a row in the cfmFlowTcpTable when the flow
        monitor has data relating to the TCP carrying the corresponding
        traffic flow.  The device destroys a row in this table when the
        corresponding traffic flow times out."
    INDEX           {
                        cfmFlowMonitorId,
                        cfmFlowId
                    } 
    ::= { cfmFlowTcpTable 1 }

CfmFlowTcpEntry ::= SEQUENCE {
        cfmFlowTcpNext    RowPointer,
        cfmFlowTcpPortSrc InetPortNumber,
        cfmFlowTcpPortDst InetPortNumber
}

cfmFlowTcpNext OBJECT-TYPE
    SYNTAX          RowPointer
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a reference to a row in another table
        containing additional data relating to the corresponding traffic
        flow." 
    ::= { cfmFlowTcpEntry 1 }

cfmFlowTcpPortSrc OBJECT-TYPE
    SYNTAX          InetPortNumber
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the source TCP port number of the
        corresponding traffic flow." 
    ::= { cfmFlowTcpEntry 2 }

cfmFlowTcpPortDst OBJECT-TYPE
    SYNTAX          InetPortNumber
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the destination TCP port number of the
        corresponding traffic flow." 
    ::= { cfmFlowTcpEntry 3 }
 


cfmFlowTcpTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device changed the cfmFlowTcpTable." 
    ::= { cfmFlows 10 }

cfmFlowRtpTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowRtpEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains additional data relating to the RTP
        carrying the corresponding traffic flow.

        This table has a sparse dependent relationship on the
        cfmFlowTable."
    ::= { cfmFlows 11 }

cfmFlowRtpEntry OBJECT-TYPE
    SYNTAX          CfmFlowRtpEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes data relating to the RTP carrying the
        corresponding traffic flow.

        A device creates a row in the cfmFlowRtpTable when the flow
        monitor has data relating to the RTP carrying the corresponding
        traffic flow.  The device destroys a row in this table when the
        corresponding traffic flow times out."
    INDEX           {
                        cfmFlowMonitorId,
                        cfmFlowId
                    } 
    ::= { cfmFlowRtpTable 1 }

CfmFlowRtpEntry ::= SEQUENCE {
        cfmFlowRtpNext        RowPointer,
        cfmFlowRtpVersion     Unsigned32,
        cfmFlowRtpSsrc        Unsigned32,
        cfmFlowRtpPayloadType Unsigned32
}

cfmFlowRtpNext OBJECT-TYPE
    SYNTAX          RowPointer
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a reference to a row in another table
        containing additional data relating to the corresponding traffic
        flow." 
    ::= { cfmFlowRtpEntry 1 }

cfmFlowRtpVersion OBJECT-TYPE
    SYNTAX          Unsigned32 (0..3)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the RTP version of the corresponding
        traffic flow." 
    ::= { cfmFlowRtpEntry 2 }

cfmFlowRtpSsrc OBJECT-TYPE
    SYNTAX          Unsigned32 (0..4294967295)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the RTP synchronized source (SSRC) of
        the corresponding traffic flow." 
    ::= { cfmFlowRtpEntry 3 }

cfmFlowRtpPayloadType OBJECT-TYPE
    SYNTAX          Unsigned32 (0..127)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the RTP payload type of the
        corresponding traffic flow." 
    ::= { cfmFlowRtpEntry 4 }
 


cfmFlowRtpTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device changed the cfmFlowRtpTable." 
    ::= { cfmFlows 12 }
cfmFlowMetrics  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBObjects 3 }


cfmFlowMetricsTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowMetricsEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains aggregate metrics and data relating to the
        collection of metrics for the traffic flows monitored by each of
        the flow monitors supported by the device.

        This table has a sparse dependent relationship on the
        cfmFlowTable, containing a row for each row in the cfmFlowTable
        for which the device is actively monitoring."
    ::= { cfmFlowMetrics 1 }

cfmFlowMetricsEntry OBJECT-TYPE
    SYNTAX          CfmFlowMetricsEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry contains aggregate metrics and data relating to the
        collection of metrics for a corresponding traffic flow.

        The device creates a row in the cfmFlowMetricsTable when a flow
        monitor starts monitoring a traffic flow.  Likewise, the device
        destroys a row in the cfmFlowMetricsTable when the corresponding
        flow monitor has ceased monitoring the traffic flow (e.g., when
        a traffic flow has timed out).  Observe that the device does not
        destroy the row unless it has not received packets for the
        corresponding flow for an interval of time equal to the flow's
        expiration time, thereby giving an EMS/NMS ample time to
        retrieve any data relating to the flow."
    INDEX           {
                        cfmFlowMonitorId,
                        cfmFlowId
                    } 
    ::= { cfmFlowMetricsTable 1 }

CfmFlowMetricsEntry ::= SEQUENCE {
        cfmFlowMetricsCollected         FlowMetrics,
        cfmFlowMetricsIntervalTime      Unsigned32,
        cfmFlowMetricsMaxIntervals      Unsigned32,
        cfmFlowMetricsElapsedTime       Gauge32,
        cfmFlowMetricsIntervals         Gauge32,
        cfmFlowMetricsInvalidIntervals  Gauge32,
        cfmFlowMetricsConditionsProfile FlowMonitorConditionsProfileOrZero,
        cfmFlowMetricsConditions        FlowMonitorConditions,
        cfmFlowMetricsAlarms            FlowMonitorConditions,
        cfmFlowMetricsAlarmSeverity     CiscoAlarmSeverity,
        cfmFlowMetricsPkts              Counter64,
        cfmFlowMetricsOctets            Counter64,
        cfmFlowMetricsBitRateUnits      FlowBitRateUnits,
        cfmFlowMetricsBitRate           Gauge32,
        cfmFlowMetricsPktRate           Gauge32
}

cfmFlowMetricsCollected OBJECT-TYPE
    SYNTAX          FlowMetrics
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the metrics collected by the
        corresponding flow monitor for the corresponding traffic flow." 
    ::= { cfmFlowMetricsEntry 1 }

cfmFlowMetricsIntervalTime OBJECT-TYPE
    SYNTAX          Unsigned32 (1..3600)
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the length of the measurement interval
        for the corresponding traffic flow.  The flow monitor computes
        the collected metrics for the corresponding traffic flow with a
        frequency equal to the inverse of the value of this column." 
    ::= { cfmFlowMetricsEntry 2 }

cfmFlowMetricsMaxIntervals OBJECT-TYPE
    SYNTAX          Unsigned32 (0..4294967295)
    UNITS           "intervals"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the maximum number of measurement
        intervals for which the corresponding flow monitor maintains
        metrics for the corresponding traffic flow.

        If the value of this column is '0', then the corresponding flow
        monitor does not maintain historical metrics for the
        corresponding traffic flow." 
    ::= { cfmFlowMetricsEntry 3 }

cfmFlowMetricsElapsedTime OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the time that has elapsed since the
        beginning of the current measurement interval." 
    ::= { cfmFlowMetricsEntry 4 }

cfmFlowMetricsIntervals OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "intervals"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of measurement intervals for
        which data has been collected." 
    ::= { cfmFlowMetricsEntry 5 }

cfmFlowMetricsInvalidIntervals OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "intervals"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of measurement intervals in
        the set of collected measurement intervals that contain invalid
        data." 
    ::= { cfmFlowMetricsEntry 6 }

cfmFlowMetricsConditionsProfile OBJECT-TYPE
    SYNTAX          FlowMonitorConditionsProfileOrZero
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the conditions profile that contains the
        descriptions of the standing conditions monitored for the
        traffic flow.

        If the flow does not have an associated conditions profile,
        then the value of this column must be zero." 
    ::= { cfmFlowMetricsEntry 7 }

cfmFlowMetricsConditions OBJECT-TYPE
    SYNTAX          FlowMonitorConditions
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the current standing conditions for the
        corresponding traffic flow.

        If the flow does not have an associated conditions profile, then
        the value of this column must be the null string." 
    ::= { cfmFlowMetricsEntry 8 }

cfmFlowMetricsAlarms OBJECT-TYPE
    SYNTAX          FlowMonitorConditions
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the current alarm conditions for the
        corresponding traffic flow.

        If the flow does not have an associated conditions profile, then
        the value of this column must be the null string." 
    ::= { cfmFlowMetricsEntry 9 }

cfmFlowMetricsAlarmSeverity OBJECT-TYPE
    SYNTAX          CiscoAlarmSeverity
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the highest severity alarm currently
        raised for the corresponding traffic flow.

        If no alarm is raised for the corresponding traffic flow, then
        the value of this column is 'cleared'." 
    ::= { cfmFlowMetricsEntry 10 }

cfmFlowMetricsPkts OBJECT-TYPE
    SYNTAX          Counter64
    UNITS           "packets"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of packets processed by
        the corresponding flow monitor for the corresponding traffic
        flow." 
    ::= { cfmFlowMetricsEntry 11 }

cfmFlowMetricsOctets OBJECT-TYPE
    SYNTAX          Counter64
    UNITS           "octets"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of octets contained by
        the packets processed by the corresponding flow monitor for the
        corresponding traffic flow." 
    ::= { cfmFlowMetricsEntry 12 }

cfmFlowMetricsBitRateUnits OBJECT-TYPE
    SYNTAX          FlowBitRateUnits
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the units for the corresponding instance
        of cfmFlowMetricsBitRate." 
    ::= { cfmFlowMetricsEntry 13 }

cfmFlowMetricsBitRate OBJECT-TYPE
    SYNTAX          Gauge32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the average bit rate at which the
        corresponding flow monitor is processing data for the
        corresponding traffic flow.  This value is cumulative over the
        lifetime of the traffic flow." 
    ::= { cfmFlowMetricsEntry 14 }

cfmFlowMetricsPktRate OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "packets per second"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the average packet rate at which the
        corresponding flow monitor is processing data for the
        corresponding traffic flow.  This value is cumulative over the
        lifetime of the traffic flow." 
    ::= { cfmFlowMetricsEntry 15 }
 


cfmFlowMetricsTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device created or destroyed a row in cfmFlowMetricsTable." 
    ::= { cfmFlowMetrics 2 }

cfmFlowMetricsIntTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmFlowMetricsIntEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains historic metrics for the traffic flows
        monitored by each of the flow monitors supported by the device.

        This table has an expansion dependent relationship on the
        cfmFlowMetricsTable, containing zero or more rows for each
        traffic flow."
    ::= { cfmFlowMetrics 3 }

cfmFlowMetricsIntEntry OBJECT-TYPE
    SYNTAX          CfmFlowMetricsIntEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes metrics collected for a previous
        measurement interval for a corresponding traffic flow."
    INDEX           {
                        cfmFlowMonitorId,
                        cfmFlowId,
                        cfmFlowMetricsIntNumber
                    } 
    ::= { cfmFlowMetricsIntTable 1 }

CfmFlowMetricsIntEntry ::= SEQUENCE {
        cfmFlowMetricsIntNumber        Unsigned32,
        cfmFlowMetricsIntValid         TruthValue,
        cfmFlowMetricsIntTime          TimeStamp,
        cfmFlowMetricsIntConditions    FlowMonitorConditions,
        cfmFlowMetricsIntAlarms        FlowMonitorConditions,
        cfmFlowMetricsIntAlarmSeverity CiscoAlarmSeverity,
        cfmFlowMetricsIntPkts          ReportIntervalCount,
        cfmFlowMetricsIntOctets        ReportIntervalCount,
        cfmFlowMetricsIntBitRateUnits  FlowBitRateUnits,
        cfmFlowMetricsIntBitRate       ReportIntervalCount,
        cfmFlowMetricsIntPktRate       ReportIntervalCount
}

cfmFlowMetricsIntNumber OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates the interval number identifying the
        measurement interval.  The measurement interval identified by
        the value '1' represents the most recent measurement interval,
        and the interval identified by the value (n) represents the
        interval immediately preceding the interval identified by the
        value (n-1)." 
    ::= { cfmFlowMetricsIntEntry 1 }

cfmFlowMetricsIntValid OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates whether the data for the measurement
        interval is valid." 
    ::= { cfmFlowMetricsIntEntry 2 }

cfmFlowMetricsIntTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime when the
        measurement interval was captured." 
    ::= { cfmFlowMetricsIntEntry 3 }

cfmFlowMetricsIntConditions OBJECT-TYPE
    SYNTAX          FlowMonitorConditions
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates which standing conditions were asserted
        at least once during the measurement interval for the
        corresponding traffic flow." 
    ::= { cfmFlowMetricsIntEntry 4 }

cfmFlowMetricsIntAlarms OBJECT-TYPE
    SYNTAX          FlowMonitorConditions
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates which alarm conditions were raised at
        least once during the measurement interval for the
        corresponding traffic flow." 
    ::= { cfmFlowMetricsIntEntry 5 }

cfmFlowMetricsIntAlarmSeverity OBJECT-TYPE
    SYNTAX          CiscoAlarmSeverity
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the highest severity alarm raised during
        the measurement interval for the corresponding traffic flow.

        If no alarm was raised during the measurement interval for the
        corresponding traffic flow, then the value of this column is
        'cleared'." 
    ::= { cfmFlowMetricsIntEntry 6 }

cfmFlowMetricsIntPkts OBJECT-TYPE
    SYNTAX          ReportIntervalCount
    UNITS           "packets"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of packets processed by the
        corresponding flow monitor for the corresponding traffic
        flow during the measurement interval." 
    ::= { cfmFlowMetricsIntEntry 7 }

cfmFlowMetricsIntOctets OBJECT-TYPE
    SYNTAX          ReportIntervalCount
    UNITS           "octets"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of octets contained by the
        packets processed by the corresponding flow monitor for the
        corresponding traffic flow during the measurement interval." 
    ::= { cfmFlowMetricsIntEntry 8 }

cfmFlowMetricsIntBitRateUnits OBJECT-TYPE
    SYNTAX          FlowBitRateUnits
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the units for the corresponding instance
        of cfmFlowMetricsIntBitRate." 
    ::= { cfmFlowMetricsIntEntry 9 }

cfmFlowMetricsIntBitRate OBJECT-TYPE
    SYNTAX          ReportIntervalCount
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the bit rate at which the corresponding
        flow monitor processed data for the corresponding traffic flow
        during the measurement interval." 
    ::= { cfmFlowMetricsIntEntry 10 }

cfmFlowMetricsIntPktRate OBJECT-TYPE
    SYNTAX          ReportIntervalCount
    UNITS           "packets per second"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the packet rate at which the
        corresponding flow monitor processed data for the corresponding
        traffic flow during the measurement interval." 
    ::= { cfmFlowMetricsIntEntry 11 }
 

cfmConditions  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBObjects 4 }


cfmConditionTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmConditionEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists the standing conditions monitored by the
        device.  The table groups descriptions for standing conditions
        into condition profiles.

        The figure below illustrates the relationship between a flow
        monitor and a conditions profile.  Observe that a conditions
        profile can contain the descriptions for the standing conditions
        monitored for more than one flow monitor.  In this case, the
        instance of cfmFlowMonitorConditionsProfile for each of these
        flow monitors would reference the same conditions profile.

        +------------------------------------------------+
        | flow monitor 1                                 |
        |                                                |
        | cfmFlowMonitorConditionsProfile.1 = 42 -----+  |
        |                                             |  |
        | cfmFlowMonitorConditions.1                  |  |
        |  N       2 1 0                              |  |
        | +-+-...-+-+-+-+                             |  |
        | | |     | | | |                             |  |
        | +-+-...-+-+-+-+                             |  |
        |  ^       ^ ^ ^                              |  |
        |  |       | | |                              |  |
        +--|-------|-|-|------------------------------|--+
           |       | | |                              |
           |       | | |                              V               
           |       | | |               +-----------------------------+
           |       | | |               | conditions profile 42       |
           |       | | |               | +-------------------------+ |
           |       | | +-----------------| cfmConditionsDescr.42.0 | |
           |       | |                 | +-------------------------+ |
           |       | |                 | +-------------------------+ |
           |       | +-------------------| cfmConditionsDescr.42.1 | |
           |       |                   | +-------------------------+ |
           |       |                   | +-------------------------+ |
           |       +---------------------| cfmConditionsDescr.42.2 | |
           |                           | +-------------------------+ |
           |                           |     :                       |
           |                           |     :                       |
           |                           | +-------------------------+ |
           +-----------------------------| cfmConditionsDescr.42.N | |
                                       | +-------------------------+ |
                                       +-----------------------------+

        The figure below illustrates the relationship between a traffic
        flow and a conditions profile.  Observe that a conditions
        profile can contain the descriptions for the standing conditions
        monitored for more than one traffic flow.  In this case, the
        instance of cfmFlowMetricsConditionsProfile for each of these
        traffic flows would reference the same conditions profile.

        +------------------------------------------------+
        | traffic flow 201                               |
        |                                                |
        | cfmFlowMetricsConditionsProfile.1.201 = 54 -+  |
        |                                             |  |
        | cfmFlowMetricsConditions.1.201              |  |
        |  N       2 1 0                              |  |
        | +-+-...-+-+-+-+                             |  |
        | | |     | | | |                             |  |
        | +-+-...-+-+-+-+                             |  |
        |  ^       ^ ^ ^                              |  |
        |  |       | | |                              |  |
        +--|-------|-|-|------------------------------|--+
           |       | | |                              |
           |       | | |                              V               
           |       | | |               +-----------------------------+
           |       | | |               | conditions profile 54       |
           |       | | |               | +-------------------------+ |
           |       | | +-----------------| cfmConditionsDescr.54.0 | |
           |       | |                 | +-------------------------+ |
           |       | |                 | +-------------------------+ |
           |       | +-------------------| cfmConditionsDescr.54.1 | |
           |       |                   | +-------------------------+ |
           |       |                   | +-------------------------+ |
           |       +---------------------| cfmConditionsDescr.54.2 | |
           |                           | +-------------------------+ |
           |                           |     :                       |
           |                           |     :                       |
           |                           | +-------------------------+ |
           +-----------------------------| cfmConditionsDescr.54.N | |
                                       | +-------------------------+ |
                                       +-----------------------------+

        The figure below illustrates the relationship between the
        description of a standing condition and an alarm group if the
        standing condition indicates that the device aggregates the
        standing condition into an alarm group (i.e., the corresponding
        instance of cfmConditionAlarm is 'grouped').

        +-----------------------------------------+
        | conditions profile 42                   |
        | +-------------------------------------+ |
        | | cfmConditionAlarm.42.9 = 'grouped'  |<-------+
        | | cfmConditionAlarmGroup.42.9 = 4 -+  | |      |
        | +----------------------------------|--+ |<--+  |
        |                                    |    |   |  |
        +------------------------------------|----+   |  |
                                             V        |  |
        +-----------------------------------------+   |  |
        | alarm group 4                           |   |  |
        |                                         |   |  |
        | cfmAlarmGroupConditionsProfile.4 = 42 ------+  |
        | cfmAlarmGroupConditionId.4 = 9 ----------------+
        |                                         |
        +-----------------------------------------+"
    ::= { cfmConditions 1 }

cfmConditionEntry OBJECT-TYPE
    SYNTAX          CfmConditionEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes a standing condition monitored by the
        device.  The cfmConditionTable groups descriptions for standing
        conditions into condition profiles.

        A device creates a row in the cfmConditionTable when it has been
        configured to monitor a standing condition for an entity, such
        as a flow monitor or traffic flow.  Likewise, the device
        destroys a row when it has been configured to cease monitoring a
        previously configured standing condition."
    INDEX           {
                        cfmConditionProfile,
                        cfmConditionId
                    } 
    ::= { cfmConditionTable 1 }

CfmConditionEntry ::= SEQUENCE {
        cfmConditionProfile             FlowMonitorConditionsProfile,
        cfmConditionId                  FlowMonitorConditionIdentifier,
        cfmConditionDescr               SnmpAdminString,
        cfmConditionMonitoredElement    AutonomousType,
        cfmConditionType                INTEGER,
        cfmConditionThreshRiseScale     FlowMetricScale,
        cfmConditionThreshRisePrecision FlowMetricPrecision,
        cfmConditionThreshRise          FlowMetricValue,
        cfmConditionThreshFallScale     FlowMetricScale,
        cfmConditionThreshFallPrecision FlowMetricPrecision,
        cfmConditionThreshFall          FlowMetricValue,
        cfmConditionSampleType          INTEGER,
        cfmConditionSampleWindow        Unsigned32,
        cfmConditionAlarm               INTEGER,
        cfmConditionAlarmActions        BITS,
        cfmConditionAlarmSeverity       CiscoAlarmSeverity,
        cfmConditionAlarmGroup          FlowMonitorAlarmGroupIdentifier
}

cfmConditionProfile OBJECT-TYPE
    SYNTAX          FlowMonitorConditionsProfile
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates an arbitrary integer-value that uniquely
        identifies the condition profile that contains the standing
        condition.  Observe that the value assigned to a standing
        condition does not necessarily persist across restars." 
    ::= { cfmConditionEntry 1 }

cfmConditionId OBJECT-TYPE
    SYNTAX          FlowMonitorConditionIdentifier
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates an arbitrary integer-value that uniquely
        identifies the condition within the scope of the profile.  The
        value of this column corresponds to the bit position in a binary
        string-value representing the standing (or alarm) conditions for
        an entity, such as a flow monitor or traffic flow.  Observe that
        the value assigned to a standing condition does not necessarily
        persist across restarts." 
    ::= { cfmConditionEntry 2 }

cfmConditionDescr OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a human-readable description of the
        condition." 
    ::= { cfmConditionEntry 3 }

cfmConditionMonitoredElement OBJECT-TYPE
    SYNTAX          AutonomousType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the monitored element used in
        determining the state of the standing condition." 
    ::= { cfmConditionEntry 4 }

cfmConditionType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        other(1),
                        boolean(2),
                        risingThreshold(3),
                        fallingThreshold(4),
                        risingAndFallingThreshold(5)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of condition:

        'other'
             The implementation of the MIB does not recognize the
             condition described by this row.

        'boolean'
            The value monitored only can have one of two values: 'false'
           or 'true'.  In this case, the condition itself evaluates to 
               'true' if the value itself is 'true'.

        'risingThreshold'
            The condition evaluates to 'true' if the current sample
            of the monitored value is greater than the rising
            threshold and the last sample is less than or equal
            to the rising threshold.

        'fallingThreshold'
            The condition evaluates to 'true' if the current sample
            of the monitored value is less than the falling
            threshold and the last sample is greater than or equal
            to the falling threshold.

        'risingAndFallingThreshold'
            The condition evaluates to 'true' if one of the two
            criteria is satisfied:

            1)  The current sample of the monitored value is greater
                than the rising threshold and the last sample is
                less than or equal to the rising threhsold.

            2)  The current sample of the monitored value is less
                than the falling threshold and the last sample is
                greater than or equal to the falling threshold." 
    ::= { cfmConditionEntry 5 }

cfmConditionThreshRiseScale OBJECT-TYPE
    SYNTAX          FlowMetricScale
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the scaling factor for the corresponding
        instance of cfmConditionThreshRise.

        This value of this column only has relevance if the
        corresponding instance of cfmConditionType is 'risingThreshold'
        or 'risingAndFallingThreshold'." 
    ::= { cfmConditionEntry 6 }

cfmConditionThreshRisePrecision OBJECT-TYPE
    SYNTAX          FlowMetricPrecision
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the precision for the corresponding
        instance of cfmConditionThreshRise.

        This value of this column only has relevance if the
        corresponding instance of cfmConditionType is 'risingThreshold'
        or 'risingAndFallingThreshold'." 
    ::= { cfmConditionEntry 7 }

cfmConditionThreshRise OBJECT-TYPE
    SYNTAX          FlowMetricValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of the rising threshold.

        This value of this column only has relevance if the
        corresponding instance of cfmConditionType is 'risingThreshold'
        or 'risingAndFallingThreshold'." 
    ::= { cfmConditionEntry 8 }

cfmConditionThreshFallScale OBJECT-TYPE
    SYNTAX          FlowMetricScale
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the scaling factor for the corresponding
        instance of cfmConditionThreshFall.

        The value of this column only has relevance if the
        corresponding instance of cfmConditionType is 'fallingThreshold'
        or 'risingAndFallingThreshold'." 
    ::= { cfmConditionEntry 9 }

cfmConditionThreshFallPrecision OBJECT-TYPE
    SYNTAX          FlowMetricPrecision
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the precision for the corresponding
        instance of cfmConditionThreshFall.

        The value of this column only has relevance if the
        corresponding instance of cfmConditionType is 'fallingThreshold'
        or 'risingAndFallingThreshold'." 
    ::= { cfmConditionEntry 10 }

cfmConditionThreshFall OBJECT-TYPE
    SYNTAX          FlowMetricValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of the falling threshold.

        The value of this column only has relevance if the
        corresponding instance of cfmConditionType is 'fallingThreshold'
        or 'risingAndFallingThreshold'." 
    ::= { cfmConditionEntry 11 }

cfmConditionSampleType OBJECT-TYPE
    SYNTAX          INTEGER {
                        other(1),
                        raw(2),
                        slidingWindowAvg(3),
                        expDecayingAvg(4)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates how the device samples the monitored
        value before determining whether to assert the condition:

            'other'
                The implementation of the MIB does not recognize the
                how the device samples the monitored value.

            'raw'
                The device samples the monitored value and uses this
                value to determine whether to assert the condition.

            'slidingWindowAvg'
                The device samples the monitored value and maintains a
                average over a sliding window.  It uses this value of
                this average to determine whether to assert the 
                condition.  The corresponding instance of 
                cfmCOnditionSampleWindow indicates the length of the
                sliding window.

            'slidingWindowAverage'
                The device samples the monitored value and maintains a
                exponentially decaying average over a sliding window. 
        It
                uses this value of this average to determine whether to
                assert the condition.  The corresponding instance of 
                cfmCOnditionSampleWindow indicates the length of the
                sliding window." 
    ::= { cfmConditionEntry 13 }

cfmConditionSampleWindow OBJECT-TYPE
    SYNTAX          Unsigned32 (0..4294967295)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the sample window used by the device to
        compute an exponentially decaying average in the case that the
        corresponding instance of cfmConditionSampleType is 'averaged'.

        The value of this column only has relevance if the
        corresponding instance of cfmConditionSampleWindow is
        'slidingWindowAvg' or 'expDecayingAvg." 
    ::= { cfmConditionEntry 14 }

cfmConditionAlarm OBJECT-TYPE
    SYNTAX          INTEGER  {
                        none(1),
                        discrete(2),
                        grouped(3)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates whether the device treats the standing
        condition as an alarm condition:

            'none'
                The device does not treat the standing condition as an
                alarm condition.

            'discrete'
                The device treats the standing condition as an alarm
                condition.

            'grouped'
                The device aggregates the standing condition into an
                alarm group." 
    ::= { cfmConditionEntry 15 }

cfmConditionAlarmActions OBJECT-TYPE
    SYNTAX          BITS {
                        syslog(0),
                        snmp(1)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the actions taken by the device when the
        alarm condition changes state:

            'syslog'
                The device sends a syslog message.

            'snmp'
                The device sends a cfmNotifyAlarm notification if and
                only if cfmNotifyEnable is set to 'true'.

        The value of this column only has relevance if the
        corresponding instance of cfmConditionAlarm is 'discrete'" 
    ::= { cfmConditionEntry 16 }

cfmConditionAlarmSeverity OBJECT-TYPE
    SYNTAX          CiscoAlarmSeverity
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the severity of the alarm condition.

        The value of this column only have relevance if the
        corresponding instance of cfmConditionAlarm is 'discrete'." 
    ::= { cfmConditionEntry 17 }

cfmConditionAlarmGroup OBJECT-TYPE
    SYNTAX          FlowMonitorAlarmGroupIdentifier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the alarm group the device aggregates the
        standing condition into.

        The value of this column only has relevance if the corresponding
        instance of cfmConditionAlarm is 'grouped'." 
    ::= { cfmConditionEntry 18 }
 


cfmConditionTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device made a change to the cfmConditionTable." 
    ::= { cfmConditions 2 }
cfmAlarmGroups  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBObjects 5 }


cfmAlarmGroupTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmAlarmGroupEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists alarm groups maintained by the device."
    ::= { cfmAlarmGroups 1 }

cfmAlarmGroupEntry OBJECT-TYPE
    SYNTAX          CfmAlarmGroupEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes an alarm group.  An alarm group defines an
        alarm condition that is raised when a configured number of flows
        in a set of flows asserts a configured standing condition.

        The figure below illustrates the relationship between an alarm
        group, a conditions profile, and a flow set.

        +-----------------------------------------+
        | conditions profile 42                   |
        | +-------------------------------------+ |
        | | cfmConditionAlarm.42.9 = 'grouped'  |<-------+
        | | cfmConditionAlarmGroup.42.9 = 4 -+  | |      |
        | +----------------------------------|--+ |<--+  |
        |                                    |    |   |  |
        +------------------------------------|----+   |  |
                                             |        |  |
                                             v        |  |
        +-----------------------------------------+   |  |
        | alarm group 4                           |   |  |
        |                                         |   |  |
        | cfmAlarmGroupConditionsProfile.4 = 42 ------+  |
        | cfmAlarmGroupConditionId.4 = 9 ----------------+
        | cfmAlarmGroupFlowset.4 = 16 -------+    |
        |                                    |    |
        +------------------------------------|----+
                                             |
                                             v
        +-----------------------------------------+
        | flow set 16                             |
        |                                         |
        |  +------------------------------------+ |
        |  | cfmAlarmGroupFlowId.16.100         | |
        |  +------------------------------------+ |
        |  +------------------------------------+ |
        |  | cfmAlarmGroupFlowId.16.101         | |
        |  +------------------------------------+ |
        |  +------------------------------------+ |
        |  | cfmAlarmGroupFlowId.16.102         | |
        |  +------------------------------------+ |
        |      :                                  |
        |      :                                  |
        |  +------------------------------------+ |
        |  | cfmAlarmGroupFlowId.16.Y           | |
        |  +------------------------------------+ |
        +-----------------------------------------+

        A device creates a row in the cfmAlarmGroupTable when it
        configures a new alarm group.  Likewise, the device destroys a
        row when the alarm group ceases to exist."
    INDEX           { cfmAlarmGroupId } 
    ::= { cfmAlarmGroupTable 1 }

CfmAlarmGroupEntry ::= SEQUENCE {
        cfmAlarmGroupId                FlowMonitorAlarmGroupIdentifier,
        cfmAlarmGroupDescr             SnmpAdminString,
        cfmAlarmGroupConditionsProfile FlowMonitorConditionsProfile,
        cfmAlarmGroupConditionId       FlowMonitorConditionIdentifier,
        cfmAlarmGroupFlowSet           FlowSetIdentifier,
        cfmAlarmGroupFlowCount         Gauge32,
        cfmAlarmGroupThresholdUnits    INTEGER,
        cfmAlarmGroupThreshold         Unsigned32,
        cfmAlarmGroupRaised            TruthValue,
        cfmAlarmGroupCurrentCount      Gauge32
}

cfmAlarmGroupId OBJECT-TYPE
    SYNTAX          FlowMonitorAlarmGroupIdentifier
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates an arbitrary integer-value that uniquely
        identifies the alarm group.  Observe that the value assigned to
        an alarm group does not necessarily persist across restarts." 
    ::= { cfmAlarmGroupEntry 1 }

cfmAlarmGroupDescr OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a human-readable description of the
        alarm group." 
    ::= { cfmAlarmGroupEntry 2 }

cfmAlarmGroupConditionsProfile OBJECT-TYPE
    SYNTAX          FlowMonitorConditionsProfile
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the conditions profile that contains
        the description of the standing profile aggregated by the
        alarm group." 
    ::= { cfmAlarmGroupEntry 3 }

cfmAlarmGroupConditionId OBJECT-TYPE
    SYNTAX          FlowMonitorConditionIdentifier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the standing condition aggregated by the
        alarm group." 
    ::= { cfmAlarmGroupEntry 4 }

cfmAlarmGroupFlowSet OBJECT-TYPE
    SYNTAX          FlowSetIdentifier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the set of traffic flows aggregated by
        the alarm group." 
    ::= { cfmAlarmGroupEntry 5 }

cfmAlarmGroupFlowCount OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "traffic flows"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of traffic flows in the set of
        traffic flows indicated by the corresponding instance of
        cfmAlarmGroupFlowSet." 
    ::= { cfmAlarmGroupEntry 6 }

cfmAlarmGroupThresholdUnits OBJECT-TYPE
    SYNTAX          INTEGER  {
                        other(1),
                        flows(2),
                        percent(3)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the units for the corresponding instance
        of cfmAlarmGroupThreshold:

            'other'
                The MIB implementation does not recognize the units in
                which the value of the corresponding instance of
                cfmAlarmGroupThreshold has been expressed.

            'flows'
                The value of the corresponding instance of
                cfmAlarmGroupThreshold indicates a number of traffic
                flows.

            'percent'
                The value of the corresponding instance of
                cfmAlarmGroupThreshold indicates a percentage of traffic
                flows." 
    ::= { cfmAlarmGroupEntry 7 }

cfmAlarmGroupThreshold OBJECT-TYPE
    SYNTAX          Unsigned32 (0..4294967295)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates a number of flows that must assert the
        standing condition indicated by the corresponding instance of
        cfmAlarmGroupCondition before raising an alarm.

        If the corresponding instance of cfmAlarmGroupThresholdUnits is
        'percent', then the value of this column must be greater than
        or equal to zero and less than or equal to '100'." 
    ::= { cfmAlarmGroupEntry 8 }

cfmAlarmGroupRaised OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates whether the alarm group has raised an
        alarm." 
    ::= { cfmAlarmGroupEntry 9 }

cfmAlarmGroupCurrentCount OBJECT-TYPE
    SYNTAX          Gauge32
    UNITS           "traffic flows"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of traffic flows currently
        asserting the standing condition aggregated by the alarm group." 
    ::= { cfmAlarmGroupEntry 10 }
 


cfmAlarmGroupTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device made a change to the cfmAlarmGroupTable." 
    ::= { cfmAlarmGroups 2 }

cfmAlarmGroupFlowTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmAlarmGroupFlowEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists the traffic flows contained by each set of
        flows configured for the alarm groups contained by the
        cfmAlarmGroupTable."
    ::= { cfmAlarmGroups 3 }

cfmAlarmGroupFlowEntry OBJECT-TYPE
    SYNTAX          CfmAlarmGroupFlowEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes a traffic flow contained by a set of flows.

        An alarm group aggregates a standing condition from a set of
        flows.  cfmAlarmFlowSetId uniquely identifies a set of traffic
        flows.

        A device creates a row in the cfmAlarmGroupTable under one of
        the following circumstances:

            - It has configured a new alarm group, and hence a new set
              of traffic flows.

            - It has added a traffic flow to an existing set of flows.

        Likewise, a device destroys a row under one of the following
        circumstances:

            - It has destroyed the set of traffic flows.

            - It has removed the traffic flow from an existing set of
              flows."
    INDEX           {
                        cfmAlarmGroupFlowSetId,
                        cfmAlarmGroupFlowMonitorId,
                        cfmAlarmGroupFlowId
                    } 
    ::= { cfmAlarmGroupFlowTable 1 }

CfmAlarmGroupFlowEntry ::= SEQUENCE {
        cfmAlarmGroupFlowSetId     FlowSetIdentifier,
        cfmAlarmGroupFlowMonitorId FlowMonitorIdentifier,
        cfmAlarmGroupFlowId        FlowIdentifier
}

cfmAlarmGroupFlowSetId OBJECT-TYPE
    SYNTAX          FlowSetIdentifier
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates an arbitrary integer-value that uniquely
        identifies the set of traffic flows that contains the traffic
        flow represented by the row.  Observe that the value assigned
        to
        a flow set does not necessarily persist across restarts." 
    ::= { cfmAlarmGroupFlowEntry 1 }

cfmAlarmGroupFlowMonitorId OBJECT-TYPE
    SYNTAX          FlowMonitorIdentifier
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object identifies the flow monitor responsible for the
        traffic flow." 
    ::= { cfmAlarmGroupFlowEntry 2 }

cfmAlarmGroupFlowId OBJECT-TYPE
    SYNTAX          FlowIdentifier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object identifies the traffic flow." 
    ::= { cfmAlarmGroupFlowEntry 3 }
 


cfmAlarmGroupFlowTableChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime the last time the
        device made a change to the cfmAlarmGroupTable." 
    ::= { cfmAlarmGroups 4 }
cfmAlarmHistory  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBObjects 6 }


cfmAlarmHistorySize OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the maximum number of rows the
        cfmAlarmHistoryTable can contain at any given time.  If the
        device raises or clears an alarm and the cfmAlarmHistoryTable
        already contains a number of rows equal to the value of this
        object, then it destroys the oldest row before creating a new
        one."
    DEFVAL          { 500 } 
    ::= { cfmAlarmHistory 1 }

cfmAlarmHistoryLastId OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of cfmAlarmHistoryId
        corresponding to the last row created in the
        cfmAlarmHistoryTable." 
    ::= { cfmAlarmHistory 2 }

cfmAlarmHistoryTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CfmAlarmHistoryEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists a history of the changes in the state of alarm
        conditions monitored by the device."
    ::= { cfmAlarmHistory 3 }

cfmAlarmHistoryEntry OBJECT-TYPE
    SYNTAX          CfmAlarmHistoryEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry describes the change in the state of an alarm
        condition observed by the device.

        The device creates a row in the cfmAlarmHistoryTable when it
        observes a change in the state of an alarm condition.

        The device destroys a row in the cfmAlarmHistoryTable when it
        needs to create a new row, but the number of rows contained by
        the cfmAlarmHistoryTable is equal to the value of
        cfmAlarmHistorySize."
    INDEX           { cfmAlarmHistoryId } 
    ::= { cfmAlarmHistoryTable 1 }

CfmAlarmHistoryEntry ::= SEQUENCE {
        cfmAlarmHistoryId                Unsigned32,
        cfmAlarmHistoryType              INTEGER,
        cfmAlarmHistoryEntity            RowPointer,
        cfmAlarmHistoryConditionsProfile FlowMonitorConditionsProfile,
        cfmAlarmHistoryConditionId       FlowMonitorConditionIdentifier,
        cfmAlarmHistorySeverity          CiscoAlarmSeverity,
        cfmAlarmHistoryTime              TimeStamp
}

cfmAlarmHistoryId OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates an arbitrary integer-value that uniquely
        identifies the event.  Observe that the value assigned to a
        alarm history entry does not necessarily persist across
        restarts." 
    ::= { cfmAlarmHistoryEntry 1 }

cfmAlarmHistoryType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        cleared(1),
                        raised(2)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of event:

        'cleared'
            The event signaled an alarm condition transitioning to
            the cleared state.

        'raised'
            The event signalled an alarm condition transitioning to
            the raised state." 
    ::= { cfmAlarmHistoryEntry 2 }

cfmAlarmHistoryEntity OBJECT-TYPE
    SYNTAX          RowPointer
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the entity that caused the event.

        If the alarm condition has an association with a flow monitor,
        then the value of this column is a row in the
        cfmFlowMonitorTable.

        If the alarm condition has an association with a traffic flow,
        then the value of this column is a row in the cfmFlowTable.

        If the alarm condition has an association with a alarm group,
        then the value of this column is a row in the
        cfmAlarmGroupTable." 
    ::= { cfmAlarmHistoryEntry 3 }

cfmAlarmHistoryConditionsProfile OBJECT-TYPE
    SYNTAX          FlowMonitorConditionsProfile
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the conditions profile containing the
        description of the alarm condition that changed state." 
    ::= { cfmAlarmHistoryEntry 4 }

cfmAlarmHistoryConditionId OBJECT-TYPE
    SYNTAX          FlowMonitorConditionIdentifier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the alarm condition that changed state." 
    ::= { cfmAlarmHistoryEntry 5 }

cfmAlarmHistorySeverity OBJECT-TYPE
    SYNTAX          CiscoAlarmSeverity
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the severity of the alarm condition that
        changed state." 
    ::= { cfmAlarmHistoryEntry 6 }

cfmAlarmHistoryTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the value of sysUpTime when the alarm
        condition changed state.

        In the case the device updates standing/alarm conditions at the
        same time it captures a measurement interval, the value of this
        column should correlate with the corresponding value of
        cfmFlowMetricsIntTime.  This assures that the EMS/NMS can
        easily correlate alarms with the metrics captured in the course
        of a measurement interval." 
    ::= { cfmAlarmHistoryEntry 7 }
 

cfmNotify  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBObjects 7 }


cfmNotifyEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies whether the device generates a
        cfmNotifyAlarm notification when an alarm condition changes
        state." 
    ::= { cfmNotify 1 }

-- *********************************************************************
-- * Notifications                                                     *
-- *********************************************************************

cfmNotifyAlarm NOTIFICATION-TYPE
    OBJECTS         {
                        cfmAlarmHistoryType,
                        cfmAlarmHistoryEntity,
                        cfmAlarmHistoryConditionsProfile,
                        cfmAlarmHistoryConditionId,
                        cfmAlarmHistorySeverity,
                        cfmAlarmHistoryTime
                    }
    STATUS          current
    DESCRIPTION
        "The device generates this notification when an alarm condition
        has changed state and the value of cfmNOtifyEnable is 'true'."
   ::= { ciscoFlowMonitorMIBNotifs 1 }
-- *********************************************************************
-- * Object Identifiers                                                *
-- *********************************************************************

cfmMonitoredElements  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBIds 1 }


cfmeOther OBJECT-IDENTITY
    STATUS          current
    DESCRIPTION
        "This object identifier represents a monitored element not
        recognized by this implementation of the MIB module."
    ::= { cfmMonitoredElements 1 }


cfmeFlowCount OBJECT-IDENTITY
    STATUS          current
    DESCRIPTION
        "This object identifier represents the monitored element
        describing the number of traffic flows currently monitored by a
        flow monitor (cfmFlowMonitorFlowCount)."
    ::= { cfmMonitoredElements 2 }


cfmeFlowTimeouts OBJECT-IDENTITY
    STATUS          current
    DESCRIPTION
        "This object identifier represents the monitored element
        describing the number of traffic flows that expired during the
        last measurement interval."
    ::= { cfmMonitoredElements 3 }


cfmeFlowStop OBJECT-IDENTITY
    STATUS          current
    DESCRIPTION
        "This object identifier represents the monitored element
        describing the condition that arises when a flow monitor does
        not receive any packets for a traffic flow during the last
        measurement interval."
    ::= { cfmMonitoredElements 4 }


cfmeFlowCumulativeBitRate OBJECT-IDENTITY
    STATUS          current
    DESCRIPTION
        "This object identifier represents the monitored element
        describing the average rate at which a flow monitor processes
        bits contained by packets for a traffic flow
        (cfmFlowMetricsBitRate)."
    ::= { cfmMonitoredElements 5 }


cfmeFlowCumulativePktRate OBJECT-IDENTITY
    STATUS          current
    DESCRIPTION
        "This object identifier represents the monitored element
        describing the average rate at which a flow monitor processes
        packets for a traffic flow (cfmFlowMetricsPktRate)."
    ::= { cfmMonitoredElements 6 }


cfmeFlowBitRate OBJECT-IDENTITY
    STATUS          current
    DESCRIPTION
        "This object identifier represents the monitored element
        describing the average rate at which a flow monitor processes
        bits contained by packets for a traffic flow during the last
        measurement interval (cfmFlowMetricsIntBitRate)."
    ::= { cfmMonitoredElements 7 }


cfmeFlowPktRate OBJECT-IDENTITY
    STATUS          current
    DESCRIPTION
        "This object identifier represents the monitored element
        describing the average rate at which a flow monitor processes
        packets for a traffic flow during the last measurement interval
        (cfmFlowMetricsIntPktRate)."
    ::= { cfmMonitoredElements 8 }

-- *********************************************************************
-- * Conformance                                                       *
-- *********************************************************************

ciscoFlowMonitorMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBConform 1 }

ciscoFlowMonitorMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoFlowMonitorMIBConform 2 }


ciscoFlowMonitorCompliance01 MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "This compliance statement specifies the minimal requirements an
        implementation must meet in order to claim full compliance with
        the definition of the CISCO-FLOW-MONITOR-MIB."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        cfmFlowMonitorGroup,
                        cfmFlowGroup,
                        cfmFlowMetricsGroup,
                        cfmFlowConditionsGroup,
                        cfmAlarmAggregationGroup,
                        cfmAlarmHistoryGroup,
                        cfmNotifySupportGroup,
                        cfmNotifyGroup
                    }
    ::= { ciscoFlowMonitorMIBCompliances 1 }

-- *********************************************************************
-- * Units of Conformance                                              *
-- *********************************************************************

cfmFlowMonitorGroup OBJECT-GROUP
    OBJECTS         {
                        cfmFlowMonitorDescr,
                        cfmFlowMonitorCaps,
                        cfmFlowMonitorFlowCount,
                        cfmFlowMonitorConditionsProfile,
                        cfmFlowMonitorConditions,
                        cfmFlowMonitorAlarms,
                        cfmFlowMonitorAlarmSeverity,
                        cfmFlowMonitorAlarmCriticalCount,
                        cfmFlowMonitorAlarmMajorCount,
                        cfmFlowMonitorAlarmMinorCount,
                        cfmFlowMonitorAlarmWarningCount,
                        cfmFlowMonitorAlarmInfoCount,
                        cfmFlowMonitorTableChanged
                    }
    STATUS          current
    DESCRIPTION
        "This group contains objects describing flow monitors."
    ::= { ciscoFlowMonitorMIBGroups 1 }

cfmFlowGroup OBJECT-GROUP
    OBJECTS         {
                        cfmFlowDescr,
                        cfmFlowNext,
                        cfmFlowCreateTime,
                        cfmFlowDiscontinuityTime,
                        cfmFlowExpirationTime,
                        cfmFlowDirection,
                        cfmFlowAdminStatus,
                        cfmFlowOperStatus,
                        cfmFlowIngressType,
                        cfmFlowIngress,
                        cfmFlowEgressType,
                        cfmFlowEgress,
                        cfmFlowTableChanged,
                        cfmFlowL2VlanNext,
                        cfmFlowL2VlanId,
                        cfmFlowL2VlanCos,
                        cfmFlowL2VlanTableChanged,
                        cfmFlowIpNext,
                        cfmFlowIpAddrType,
                        cfmFlowIpAddrSrc,
                        cfmFlowIpAddrDst,
                        cfmFlowIpValid,
                        cfmFlowIpTrafficClass,
                        cfmFlowIpHopLimit,
                        cfmFlowIpTableChanged,
                        cfmFlowUdpNext,
                        cfmFlowUdpPortSrc,
                        cfmFlowUdpPortDst,
                        cfmFlowUdpTableChanged,
                        cfmFlowTcpNext,
                        cfmFlowTcpPortSrc,
                        cfmFlowTcpPortDst,
                        cfmFlowTcpTableChanged,
                        cfmFlowRtpNext,
                        cfmFlowRtpVersion,
                        cfmFlowRtpSsrc,
                        cfmFlowRtpPayloadType,
                        cfmFlowRtpTableChanged
                    }
    STATUS          current
    DESCRIPTION
        "This group contains objects describing traffic flows."
    ::= { ciscoFlowMonitorMIBGroups 2 }

cfmFlowMetricsGroup OBJECT-GROUP
    OBJECTS         {
                        cfmFlowMetricsCollected,
                        cfmFlowMetricsIntervalTime,
                        cfmFlowMetricsMaxIntervals,
                        cfmFlowMetricsElapsedTime,
                        cfmFlowMetricsIntervals,
                        cfmFlowMetricsInvalidIntervals,
                        cfmFlowMetricsConditionsProfile,
                        cfmFlowMetricsConditions,
                        cfmFlowMetricsAlarms,
                        cfmFlowMetricsAlarmSeverity,
                        cfmFlowMetricsPkts,
                        cfmFlowMetricsOctets,
                        cfmFlowMetricsBitRateUnits,
                        cfmFlowMetricsBitRate,
                        cfmFlowMetricsPktRate,
                        cfmFlowMetricsTableChanged,
                        cfmFlowMetricsIntValid,
                        cfmFlowMetricsIntTime,
                        cfmFlowMetricsIntConditions,
                        cfmFlowMetricsIntAlarms,
                        cfmFlowMetricsIntAlarmSeverity,
                        cfmFlowMetricsIntPkts,
                        cfmFlowMetricsIntOctets,
                        cfmFlowMetricsIntBitRateUnits,
                        cfmFlowMetricsIntBitRate,
                        cfmFlowMetricsIntPktRate
                    }
    STATUS          current
    DESCRIPTION
        "This group contains objects describing traffic flow metrics."
    ::= { ciscoFlowMonitorMIBGroups 3 }

cfmFlowConditionsGroup OBJECT-GROUP
    OBJECTS         {
                        cfmConditionDescr,
                        cfmConditionMonitoredElement,
                        cfmConditionType,
                        cfmConditionThreshRiseScale,
                        cfmConditionThreshRisePrecision,
                        cfmConditionThreshRise,
                        cfmConditionThreshFallScale,
                        cfmConditionThreshFallPrecision,
                        cfmConditionThreshFall,
                        cfmConditionSampleType,
                        cfmConditionSampleWindow,
                        cfmConditionAlarm,
                        cfmConditionAlarmActions,
                        cfmConditionAlarmSeverity,
                        cfmConditionAlarmGroup,
                        cfmConditionTableChanged
                    }
    STATUS          current
    DESCRIPTION
        "This group contains objects describing standing/alarm
        conditions."
    ::= { ciscoFlowMonitorMIBGroups 4 }

cfmAlarmAggregationGroup OBJECT-GROUP
    OBJECTS         {
                        cfmAlarmGroupDescr,
                        cfmAlarmGroupConditionsProfile,
                        cfmAlarmGroupConditionId,
                        cfmAlarmGroupFlowSet,
                        cfmAlarmGroupFlowCount,
                        cfmAlarmGroupThresholdUnits,
                        cfmAlarmGroupThreshold,
                        cfmAlarmGroupRaised,
                        cfmAlarmGroupCurrentCount,
                        cfmAlarmGroupTableChanged,
                        cfmAlarmGroupFlowId,
                        cfmAlarmGroupFlowTableChanged
                    }
    STATUS          current
    DESCRIPTION
        "This group contains object describing alarm aggregation."
    ::= { ciscoFlowMonitorMIBGroups 5 }

cfmAlarmHistoryGroup OBJECT-GROUP
    OBJECTS         {
                        cfmAlarmHistorySize,
                        cfmAlarmHistoryLastId,
                        cfmAlarmHistoryType,
                        cfmAlarmHistoryEntity,
                        cfmAlarmHistoryConditionsProfile,
                        cfmAlarmHistoryConditionId,
                        cfmAlarmHistorySeverity,
                        cfmAlarmHistoryTime
                    }
    STATUS          current
    DESCRIPTION
        "This group contains objects describing alarm history."
    ::= { ciscoFlowMonitorMIBGroups 6 }

cfmNotifySupportGroup OBJECT-GROUP
    OBJECTS         { cfmNotifyEnable }
    STATUS          current
    DESCRIPTION
        "This group contains objects supporting notification."
    ::= { ciscoFlowMonitorMIBGroups 7 }

cfmNotifyGroup NOTIFICATION-GROUP
   NOTIFICATIONS    { cfmNotifyAlarm }
    STATUS          current
    DESCRIPTION
        "This group contains notifications supporting flow monitoring."
    ::= { ciscoFlowMonitorMIBGroups 8 }

END




































