[Search] [txt|pdf|bibtex] [Tracker] [WG] [Email] [Diff1] [Diff2] [Nits]

Versions: 01 03 04 05 06 07 rfc2613                                     
     Remote Network Monitoring MIB Extensions for Switched Networks
                              Version 1.0


                        <draft-ietf-rmonmib-smon-03.txt >                 |


                                        Sept. 12, 1997                    |

                                        Richard Waterman
                                        Allot Networks Inc.               |
                                        rwaterma@msn.com

                                        Bill Lahaye
                                        Cabletron Systems
                                        lahaye@ctron.com

                                        Dan Romascanu
                                        Madge Networks
                                        dromasca@madge.com

                                        Steve Waldbusser
                                        INS
                                        waldbusser@ins.com



Status of this Memo

   This document is an Internet-Draft.  Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its areas,
   and its working groups.  Note that other groups may also distribute
   working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet- Drafts as reference
   material or to cite them other than as ``work in progress.''

   To learn the current status of any Internet-Draft, please check the
   ``1id-abstracts.txt'' listing contained in the Internet- Drafts
   Shadow Directories on ds.internic.net (US East Coast), nic.nordu.net
   (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
   Rim).

Abstract

   This memo defines a portion of the Management Information Base (MIB)
   for use with network management protocols in TCP/IP-based internets.
   In particular, it defines objects for managing remote network
   monitoring devices in switched networks environments.

Table of Contents

   Status of this Memo                                             1
   Abstract                                                        1
   1. The Network Management Framework                             2
   2. Overview                                                     3
      2.1 Remote Network Management Goals                          4
      2.2 Switched Networks Monitoring                             5
      2.3 Mechanisms for Monitoring Switched Networks              6
          2.3.1 DataSource Objects                                 6
          2.3.2 Copy Port                                          7
          2.3.3 Vlan Monitoring                                    8
      2.4  Relationship to Other MIBs                              8
           2.4.1 The RMON and RMON2 MIBs                           8
           2.4.2 The Interfaces Group MIB                          9
           2.4.3 The Entity MIB                                    9
           2.4.4 The Bridge MIB                                   10
      2.5 Relationship with IEEE 802.1 Standards                  10
   3. SMON/RMON Groups                                            10
      3.1 SMON ProbeCapabilities                                  10      |
      3.2 smonVlanStats                                           11
      3.3 smonPrioStats                                           11
      3.4 dataSourceCaps                                          11
      3.5 portCopyConfig                                          11
   4. Control of Remote Network Monitoring Devices                12
   5. Definitions                                                 13
   6. References                                                  34      |
   7. Security Considerations                                     36      |
   8. Authors' Addresses                                          36      |

1. The Network Management Framework

   The Internet-standard Network Management Framework consists of three
   components. They are:

   RFC 1902 [1] which defines the SMI, the mechanisms used for
   describing and naming objects for the purpose of management.

   RFC 1213, STD 17, [3] which defines MIB-II, the core set of managed
   objects for the Internet suite of protocols.

   RFC 1905 [4] which defines the SNMP, the protocol used for network
   access to managed objects.

   The Framework permits new objects to be defined for the purpose of
   experimentation and evaluation.

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  Within a given MIB module,
   objects are defined using the SMI's OBJECT-TYPE macro.  At a minimum,
   each object has a name, a syntax, an access-level, and an
   implementation-status.

   The name is an object identifier, an administratively assigned name,
   which specifies an object type. The object type together with an
   object instance serves to uniquely identify a specific instantiation
   of the object.  For human convenience, we often use a textual string,
   termed the object descriptor, to also refer to the object type.

   The syntax of an object type defines the abstract data structure
   corresponding to that object type. The ASN.1 [6] language is used for
   this purpose.  However, RFC 1902 purposely restricts the ASN.1
   constructs which may be used.  These restrictions are explicitly made
   for simplicity.

   The access-level of an object type defines whether it makes "protocol
   sense" to read and/or write the value of an instance of the object
   type.  (This access-level is independent of any administrative
   authorization policy.)

   The implementation-status of an object type indicates whether the
   object is mandatory, optional, obsolete, or deprecated.

2. Overview

   This document continues the architecture created in the RMON MIB [12]
   by providing RMON analysis for switched networks(SMON).

   Remote network monitoring devices, often called monitors or probes,
   are instruments that exist for the purpose of managing a network.
   Often these remote probes are stand-alone devices and devote
   significant internal resources for the sole purpose of managing a
   network.  An organization may employ many of these devices, one per
   network segment, to manage its internet. In addition, these devices
   may be used for a network management service provider to access a
   client network, often geographically remote.

   The objects defined in this document are intended as an interface
   between an RMON agent and an RMON management application and are not
   intended for direct manipulation by humans.  While some users may
   tolerate the direct display of some of these objects, few will
   tolerate the complexity of manually manipulating objects to
   accomplish row creation.  These functions should be handled by the
   management application.

2.1 Remote Network Management Goals

       o Offline Operation

           There are sometimes conditions when a management
           station will not be in constant contact with its
           remote monitoring devices.  This is sometimes by
           design in an attempt to lower communications costs
           (especially when communicating over a WAN or
           dialup link), or by accident as network failures
           affect the communications between the management
           station and the probe.

           For this reason, this MIB allows a probe to be
           configured to perform diagnostics and to collect
           statistics continuously, even when communication with
           the management station may not be possible or
           efficient.  The probe may then attempt to notify
           the management station when an exceptional condition
           occurs.  Thus, even in circumstances where
           communication between management station and probe is
           not continuous, fault, performance, and configuration
           information may be continuously accumulated and
           communicated to the management station conveniently
           and efficiently.

       o Proactive Monitoring

           Given the resources available on the monitor, it
           is potentially helpful for it continuously to run
           diagnostics and to log network performance.  The
           monitor is always available at the onset of any
           failure.  It can notify the management station of the
           failure and can store historical statistical
           information about the failure.  This historical
           information can be played back by the management
           station in an attempt to perform further diagnosis
           into the cause of the problem.


       o Problem Detection and Reporting

           The monitor can be configured to recognize
           conditions, most notably error conditions, and
           continuously to check for them.  When one of these
           conditions occurs, the event may be logged, and
           management stations may be notified in a number of
           ways.

       o Value Added Data

           Because a remote monitoring device represents a
           network resource dedicated exclusively to network
           management functions, and because it is located
           directly on the monitored portion of the network, the
           remote network monitoring device has the opportunity
           to add significant value to the data it collects.
           For instance, by highlighting those hosts on the
           network that generate the most traffic or errors, the
           probe can give the management station precisely the
           information it needs to solve a class of problems.


       o Multiple Managers

           An organization may have multiple management stations
           for different units of the organization, for different
           functions (e.g. engineering and operations), and in an
           attempt to provide disaster recovery.  Because
           environments with multiple management stations are
           common, the remote network monitoring device has to            |
           deal with more than one management station,
           potentially using its resources concurrently.

2.2 Switched Networks Monitoring

   This document addresses issues related to applying "Remote
   Technology" to Switch Networks. Switches today differ from standard
   shared media protocols:

   Data is not, in general, broadcast.  This may be caused by the switch
   architecture  or by the connection-oriented nature of the data. This
   means, therefore, the monitoring non-broadcast traffic needs to be
   considered.

   Monitoring the multiple entry and exit points from a switching device
   requires a vast amount of resources - memory and CPU, and aggregation
   of the data in logical packets of information, determined by the
   application needs.

   Switching incorporates logical segmentation such as Virtual LANs
   (vLANs).

   Switching incorporates packet prioritization.

   Data across the switch fabric can be in the form of cells. Like RMON,
   SMON is only concerned with the monitoring of packets.


   Differences such as these make monitoring difficult.  The current
   RMON-1 and RMON-2 standards do not provide for things that are unique
   to switches or switched environments.

   In order to overcome the limitations of the existing standards, new
   monitoring mechanisms have been implemented by vendors of switching
   equipment. All these monitoring strategies are currently proprietary
   in nature.

   This document attempts to provide the framework to include different
   switching strategies and allow for monitoring operations consistent
   with the RMON framework. This MIB is limited to monitoring, and
   control operations aimed in providing monitoring data for RMON
   probes.

2.3 Mechanisms for Monitoring Switched Networks

   The following mechanisms are used by SMON devices, for the purpose of
   monitoring switched networks.

2.3.1 DataSource Objects

   The RMON MIB standard [12] defines data source objects which point to
   MIB-II interfaces, identified by instances of ifIndex objects.

   The SMON MIB extends this concept and allows for other types of
   objects to be defined as data sources for RMON and/or SMON data.
   Three forms of dataSources are described:

         ifIndex.<I>

          Traditional RMON dataSources.  Called 'port-based'
          for ifType.<I> not equal to 'propVirtual(53)'.


         smonVlanDataSource.<V>

          A dataSource of this form refers to a 'Packet-based VLAN' and
          is called a 'VLAN-based' dataSource. <V> is the VLAN ID, as
          defined by the IEEE 802.1Q standard [14].


         entPhysicalEntry.<N>

          A dataSource of this form refers to a physical entity within
          the agent and is called an 'entity-based' dataSource.

   In addition to these new dataSource types, SMON introduces a new
   group called dataSourceCapsTable to aid an NMS to discover dataSource
   identity and attributes.

   The extended data source mechanism supported by the SMON MIB allows
   for the use of external collection points, similar to the one defined
   and supported by the RMON-1 and RMON-2 MIBs, as well as internal
   collection points(e.g. propVirtual ifTable entry, entPhysicalEntry).
   The latter reflects either data sources which may be the result of
   aggregation(e.g.switch-wide) or internal channels of physical
   entities, which have the capability of being monitored by an SMON
   probe.


2.3.2 Copy Port

   In order to make the switching devices support RMON statistics, many
   vendors have implemented a port copy feature, allowing traffic to be
   replicated from switch port to switch port. Several levels of
   configuration are possible:

      1) 1 src port to 1 dst port
      2) N src ports to 1 dst port
      3) N src ports to M dst ports

   The SMON standard presents a standard MIB interface which allows for
   the control of this function.

   Note that this function can apply to devices that have no other SMON
   or RMON functionality than  copy port. The agent of such a device
   would support only the portCopyCaps and the portCopyConfig MIB
   groups, out of the whole SMON MIB.  Switch vendors are encouraged to
   implement this subset of the SMON MIB, as it would allow for standard
   port copy configuration from the same NMS application that does RMON
   or SMON.

   Port copy may cause congestion problems on the SMON device. This
   situation is more likely occur when copying from a port of higher
   speed to a port of lower speed or copy from multiple port to a single
   port.

   Particular implementations may chose to build protection mechanisms
   that would prevent creation of new port copy links, when the capacity
   of the destination port is exceeded. The MIB allows for
   implementations to (if supported) instrument a destination drop count
   on port copy to provide NMS applications a sense of the quality of
   data presented at the destination port.


2.3.3 Vlan Monitoring

   Vlan monitoring can be accomplished by using a VLAN-based dataSource
   and/or by configuring smonVlanIdStats and/or smonVlanPrioStats
   collections.  These functions allow VLAN-ID or user priority
   distributions per dataSource. Vlan monitoring provides a high-level
   view of total Vlan usages and relative non-unicast traffic usage as
   well as a profile of Vlan priority as defined in the 3-bit
   user_priority field.


   NOTE: priority stats reflect what was parsed from the packet, not
   what priority, if any, was necessarily granted by the switch.

2.4  Relationship to Other MIBs

2.4.1 The RMON and RMON2 MIBs

   The Remote Monitoring MIB (RMON-1) [12] provides several management
   functions that may be directly or indirectly applicable to switched
   networks.

   The port copy mechanisms defined by the RMON MIB allow for the
   destination ports to become data source for any RMON-1 statistics.
   However, an NMS application should check whether it is in the device
   capability(portCopyCap) to filter errors from a source to a
   destination port and whether this capability is enabled, in order to
   provide a correct interpretation of the copied port traffic.

   RMON I host and matrix group statistics entries may be aggregated by
   use of the extended dataSource capability defined in SMON. RMON II
   groups are similarly extended through the use of SMON's dataSource
   definition.

   RMON-1 also defines a simple thresholding monitoring mechanism,
   event-logging and event-notification for any MIB instance; SMON
   utilizes the alarms and events groups from RMON-1 without
   modification. These groups should be implemented on SMON devices if a
   simple thresholding mechanism is desired.


   The RMON II usrHistory group (user-defined history collection) should
   be implemented by an SMON device if a history collection mechanism is
   desired for smonStats entries.

2.4.2 The Interfaces Group MIB

   The Interfaces Group MIB [5], [17] extends aspects of MIB-II [3].
   This document discusses the 'interfaces' group of MIB-II, especially
   the experience gained from the definition of numerous media- specific
   MIB modules for use in conjunction with the 'interfaces' group for
   managing various sub-layers beneath the internetwork- layer.  It
   specifies clarifications to, and extensions of, the architectural
   issues within the previous model used for the 'interfaces' group.

   The Interfaces Group MIB also includes a MIB module.  As well as
   including new MIB definitions to support the architectural
   extensions, this MIB module also re-specifies the 'interfaces' group
   of MIB-II in a manner that is both compliant to the SNMPv2 SMI and
   semantically- identical to the existing SNMPv1-based definitions.

   The SMON MIB utilizes the propVirtual(53) ifType defined in The
   Interfaces Group MIB [17] to provide SMON and RMON with new
   dataSources such as Vlans and internal monitoring points. NMS
   applications should consult the SMON dataSource capabilities group
   (dataSourceCap) for a description of these virtual interfaces.

2.4.3 The Entity MIB

   The scope of the Entity MIB [13] is to allow an NMS to interrogate a
   standard SNMP context and thereby discover what logical and physical
   entities exist, how to access the MIB information of each logical
   entity, and the relationships between the various entities. The MIB
   should support both a single agent or multiple agents in one physical
   entity.

   A "physical entity" or "physical component" represents an
   identifiable physical resource within a managed system. Zero or more
   logical entities may utilize a physical resource at any given time.
   It is an implementation-specific manner as to which physical           |
   components are represented by an agent in the entPhysicalTable.
   Typically, physical resources (e.g. communications ports, backplanes,
   sensors, daughter-cards, power supplies, the overall chassis, the
   overall switch), which can be managed via functions associated with
   one or more logical entities are included in the MIB.

   The SMON MIB does not mandate Entity MIB support, but allows for
   physical entities, as defined by this MIB to be defined as SMON data
   sources. For such cases, the support for the entPhysicalTable is       |
   required.

2.4.4 The Bridge MIB

   One of the important indicators for measuring the effectiveness of a
   switching device is the ratio between the number of forwarded frames
   and the number of dropped frames at the switch port.

   It is out of the scope of this MIB to provide instrumentation
   information relative to switching devices. However, such indication
   may be part of other MIB modules.

   For instance the Bridge MIB [18] provides such MIB objects, for the
   802.1 bridges (dot1dTpPortInFrames, dot1dTpPortInDiscards) and
   switches managed according to the 802.1 bridge model may provide this
   information.

2.5 Relationship with IEEE 802.1 Standards

   The SMON MIB provides simple statistics per vLAN and priority levels.
   Those two categories of statistics are of higher importance for
   switched networks managers. Interoperability for those features is
   ensured by the use of the IEEE 802.1 p/Q standards ([14], [15])
   defined by the IEEE 802.1 WG. Interoperability from the SMON MIB
   point of view is ensured by referencing the IEEE definition of vLANs
   and priority levels, for the SMON statistics.

3. SMON Groups                                                            |

3.1 SMON ProbeCapabilities                                                |

   The SMON probeCapabilities BITS object covers the following four       |
   capabilities.

       - smonVlanStats(1)                                                 |
         The probe supports the smonVlanStats object group.

       - smonPrioStats(2)                                                 |
         The probe supports the smonPrioStats object group.

       - dataSource(3)                                                    |
         The probe supports the dataSource object group.

       - portCopy(4)                                                      |
         The probe supports the portCopy object group.


                                                                          *

3.2 smonVlanStats

   The smonVlanStats MIB group includes the control and statistics
   objects related to 802.1q Vlans. Specific statistics per 802.1q
   virtual LAN are supported. The group provides a high level view of
   total Vlan usage, and relative non-unicast traffic usage.

   It is an implementation-specific matter as to how the agent
   determines the proper default-VLAN for untagged or priority-tagged
   frames.

3.3 smonPrioStats

   The smonPrioStatsTable provides a distribution based on the
   user_priority field in the VLAN header.

   Note that this table merely reports priority as encoded in VLAN
   headers, not the priority (if any) given the frame for actual
   switching purposes.


3.4 dataSourceCaps

   The dataSourceCaps MIB group identifies all supported data sources on
   an SMON device. An NMS may use this table to discover the RMON and
   Copy Port attributes of each data source.

   Upon restart of the agent, the dataSourceTable, ifTable and
   entPhysicalTable are initialized for the available data sources. The
   agent may modify these tables as data sources become known or are
   removed(e.g. hot swap of interfaces, chassis cards or the discovery
   of Vlan usage).  It is understood that dataSources representing VLANs
   may not always be instantiated immediately upon restart, but rather
   as VLAN usage is detected by the agent.  The agent should attempt to
   create dataSource and interface entries for all dataSources as soon
   as possible.

   For each dataSourceCapsEntry representing a VLAN or entPhysicalEntry,
   the agent must create an associated ifEntry with a ifType value of
   'propVirtual(53)'.  This ifEntry will be used as the actual value in
   RMON control table dataSource objects.  The assigned ifIndex value is
   copied into the associated dataSourceCapsIfIndex object.

3.5 portCopyConfig

   The portCopyConfig MIB group includes the objects defined for the
   control of the port copy functionality in a device.

   The standard does not place a limit on the mode by which this copy
   function may be used:

   Mode 1 --  1:1 Copy

      Single dataSource copied to a single destination dataSource.
      Agent may limit configuration based on ifTypes, ifSpeeds, half-
      duplex/full-duplex, or agent resources.  In this mode the single
      instance of the portCopyDestDropEvents object refers to dropped
      frames on the portCopyDest interface.

   Mode 2 --  N:1 Copy

      Multiple dataSources copied to a single destination dataSource.
      Agent may limit configuration based on ifTypes, ifSpeeds, half-
      duplex/full-duplex, portCopyDest over-subscription, or agent
      resources.  In this mode all N instances of the
      portCopyDestDropEvents object should contain the same value, and
      refer to dropped frames on the portCopyDest interface.

   Mode 3 --  N:M Copy

      Multiple dataSources copied to multiple destination dataSources.
      Agent may limit configuration based on ifTypes, ifSpeeds, half-
      duplex/full-duplex, portCopyDest over-subscription, or agent
      resources.  Since portCopyDestDropEvents is kept per destination
      port, all instances of the portCopyDestDropEvents object
      associated with(indexed by) a given portCopyDest should have the
      same value(i.e. replicated or aliased for each instance associated
      with a given portCopyDest).

   The rows do not have an OwnerString, since multiple rows may be part
   of the same portCopy operation. The agent is expected to activate or
   deactivate entries one at a time, based on the rowStatus for the
   given row.  This can lead to unpredictable results in Modes 2 and 3
   in applications utilizing the portCopy target traffic, if multiple
   PDUs are used to fully configure the operation.  It is recommended
   that an entire portCopy operation be configured in one SetRequest PDU
   if possible.

   The portCopyDest object may not reference an interface associated
   with a packet-based VLAN (rmonVlanDataSource.V), but this dataSource
   type may be used as a portCopySource.

4.  Control of Remote Network Monitoring Devices

   Due to the complex nature of the available functions in these
   devices, the functions often need user configuration.  In many cases,
   the function requires parameters to be set up for a data collection
   operation.  The operation can proceed only after these parameters are
   fully set up.

   Many functional groups in this MIB have one or more tables in which
   to set up control parameters, and one or more data tables in which to
   place the results of the operation.  The control tables are typically
   read/write in nature, while the data tables are typically read/only.
   Because the parameters in the control table often describe resulting
   data in the data table, many of the parameters can be modified only
   when the control entry is not active.  Thus, the method for modifying
   these parameters is to de-activate the entry, perform the SNMP Set
   operations to modify the entry, and then re-activate the entry.
   Deleting the control entry causes the deletion of any associated data
   entries, which also gives a convenient method for reclaiming the
   resources used by the associated data.

   Some objects in this MIB provide a mechanism to execute an action on
   the remote monitoring device.  These objects may execute an action as
   a result of a change in the state of the object.  For those objects
   in this MIB, a request to set an object to the same value as it
   currently holds would thus cause no action to occur.

   To facilitate control by multiple managers, resources have to be
   shared among the managers.  These resources are typically the memory
   and computation resources that a function requires.

   The control mechanisms defined and used in this MIB are the same as
   those defined in the RMON MIB [11], for control functionality and
   interaction with multiple managers.

5. Definitions

SMON-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE, Counter32,
        Integer32, Counter64, experimental                                |
                FROM SNMPv2-SMI
        mib-2, ifType
                FROM RFC1213-MIB
        RowStatus, TEXTUAL-CONVENTION
                FROM SNMPv2-TC
        OwnerString
                FROM RMON-MIB
        LastCreateTime, DataSource, rmonConformance
                FROM RMON2-MIB
        InterfaceIndex
                FROM IF-MIB
        probeConfig                                                       |
                FROM RMON2-MIB                                            |
        MODULE-COMPLIANCE, OBJECT-GROUP
                FROM SNMPv2-CONF;

switchRMON MODULE-IDENTITY
        LAST-UPDATED "9707030000Z"
        ORGANIZATION "IETF RMON MIB Working Group"
        CONTACT-INFO
        "IETF RMONMIB WG Mailing list: rmonmib@cisco.com

                Rich Waterman
                Allot Networks Inc.
                Phone:  +1 408 559 0253
                Email: rwaterma@msn.com

                Bill Lahaye
                Cabletron Systems
                Phone:  +1 603 337 5211
                Email:  lahaye@ctron.com

                Dan Romascanu
                Madge Networks
                Phone:  +972 3 645 8414
                Email: dromasca@madge.com

                Steven Waldbusser
                International Network Services
                Phone: (415) 254-4251
                EMail: waldbusser@ins.com"

        DESCRIPTION
                "The MIB module for managing remote monitoring device
                 implementations for Switched Networks"
        ::= { experimental 1000 }

smonMIBObjects OBJECT IDENTIFIER ::= { switchRMON 1 }

dataSourceCaps          OBJECT IDENTIFIER ::= {smonMIBObjects 1}
smonStats               OBJECT IDENTIFIER ::= {smonMIBObjects 2}
portCopyConfig          OBJECT IDENTIFIER ::= {smonMIBObjects 3}
smonRegistrationPoints  OBJECT IDENTIFIER ::= {smonMIBObjects 4}

-- Textual Conventions
--
SmonDataSource ::= TEXTUAL-CONVENTION
    STATUS        current
    DESCRIPTION
        "Identifies the source of the data that the associated function
         is configured to analyse. This macro extends the DataSource
         Textual Convention defined by RMON-2 [11] to the following data
         source types:

         - ifIndex.<I>
         DataSources of this traditional form are called 'port-based',
         but only if ifType.<I> is not equal to 'propVirtual(53)'.

         - smonVlanDataSource.<V>
         A dataSource of this form refers to a 'Packet-based VLAN' and
         is called a 'VLAN-based' dataSource. <V> is the VLAN ID, as defined
         by the IEEE 802.1Q standard [14].

        - entPhysicalEntry.<N>
         A dataSource of this form refers to a physical entity within
         the agent (e.g. entPhysicalClass = backplane(4)) and is called
         an 'entity-based' dataSource."
    SYNTAX      OBJECT IDENTIFIER
--                                                                        |
-- The smonCapabilities object describes SMON agent capabilites           |
--                                                                        |
--                                                                        |
smonCapabilities OBJECT-TYPE                                              |
    SYNTAX BITS {                                                         |
      smonVlanStats(1),                                                   |
      smonPrioStats(2),                                                   |
      dataSource(3),                                                      |
      portCopy(4)                                                         |
      }                                                                   |
    MAX-ACCESS read-only                                                  |
    STATUS current                                                        |
    DESCRIPTION                                                           |
        "An indication of the SMON MIB groups supported                   |
         by this agent."                                                  |
    ::= { probeConfig  15 }                                               |


-- dataSourceCaps MIB group - defines SMON data source and port copy      |
-- capabilities for devices supporting SMON.

-- A NMS application will check this MIB group and retrieve information about
-- the SMON capabilities of the device before applying SMON control operations
-- to the device.


-- dataSourceCapsTable: defines capabilities of RMON data sources

dataSourceCapsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DataSourceCapsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table describes RMON data sources and port copy capabilities.
        An NMS may use this table to discover the identity and attributes of
        the data sources on a given agent implementation. Similar to the
        probeCapabilities object, actual row-creation operations will succeed
        or fail based on the resources available and parameter values used
        in each row-creation operation.

        Upon restart of the RMON agent, the dataSourceTable, ifTable, and
        perhaps entPhysicalTable are initialized for the available dataSources.

        For each dataSourceCapsEntry representing a VLAN or entPhysicalEntry
        the agent must create an associated ifEntry with a ifType value of
        'propVirtual(53)'. This ifEntry will be used as the actual value
        in RMON control table dataSource objects.  The assigned ifIndex value
        is copied into the associated dataSourceCapsIfIndex object.

        It is understood that dataSources representing VLANs may not always
        be instantiated immediately upon restart, but rather as VLAN usage
        is detected by the agent.  The agent should attempt to create
        dataSource and interface entries for all dataSources as soon as
        possible."
::= { dataSourceCaps 1 }

dataSourceCapsEntry  OBJECT-TYPE
    SYNTAX      DataSourceCapsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Entries per data source containing descriptions of data source and
         port copy capabilities. This table is populated by the RMON agent
         with one entry for each supported data source."
INDEX { IMPLIED dataSourceCapsObject }
::= { dataSourceCapsTable 1 }

DataSourceCapsEntry ::= SEQUENCE {
        dataSourceCapsObject
                SmonDataSource,
        dataSourceRmonCaps
                BITS,
        dataSourceCopyCaps
                BITS,
        dataSourceCapsIfIndex
                InterfaceIndex
        }

dataSourceCapsObject OBJECT-TYPE
    SYNTAX      SmonDataSource
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Defines an object that can be a SMON data source or a
          source or a destination for a port copy operation."
    ::= { dataSourceCapsEntry 1  }

dataSourceRmonCaps OBJECT-TYPE
    SYNTAX BITS {
           countErrFrames(0),
           countAllGoodFrames(1),
           countAnyRmonTables(2),                                         |
           babyGiantsCountAsGood(3),                                      |
           countNUcastOctets(4)                                           |
           }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        " General attributes of the specified dataSource.
        Note that these are static attributes, which should not
        be adjusted because of current resources or configuration.

      - countErrFrames(0)
        The agent sets this bit for the dataSource if errored frames
        received on this dataSource can actually be monitored by the agent.
        The agent clears this bit is any errored frames are not visible to
        the RMON data collector.

      - countAllGoodFrames(1)
        The agent sets this bit for the dataSource if all good frames received
        on this dataSource can actually be monitored by the agent.
        The agent clears this bit if any good frames are not visible for RMON
        collection, e.g., the dataSource is a non-promiscuous interface or an
        internal switch interface which may not receive frames which were |
        switched in hardware or dropped by the bridge forwarding function.

      - countAnyRmonTables(2)
        The agent sets this bit if this dataSource can actually be used in
        any of the implemented RMON tables, resources notwithstanding.
        The agent clears this bit if this dataSourceCapsEntry is present
        simply to identify a dataSource that may only be used as
        portCopySource and/or a portCopyDest, but not the source of an
        actual RMON data collection.                                      |

      - babyGiantsCountAsGood(3)                                          |
        The agent sets this bit if it can distinguish, for counting purposes,|
        between true giant frames and frames that are larger than the media's|
        'normal' maximum frame size due to Vlan tagging('baby giants').   |

        Agents not capable of detecting 'baby giants' will clear this bit |
        and, for example on ethernet, will view all frames less than or equal|
        to 1518 octets as 'good frames' and all frames larger than 1518 octets|
        as 'bad frames' for the purpose of counting in the smonVlanIdStats and |
        smonVlanPrioStats tables.                                         |

        Agents capable of detecting 'baby giants' shall consider them as  |
        'good frames' for the purpose of counting in the smonVlanIdStats  |
        and smonVlanPrioStats tables."                                    |
                                                                          |
      - countNUcastOctets(4)                                              |
        The agent sets this bit if it is capable of counting non-unicast  |
        octets on this dataSource. Note that if this bit is set the       |
        smonVlanStatsExtGroup becomes mandatory                           |

    ::= { dataSourceCapsEntry 2  }

dataSourceCopyCaps OBJECT-TYPE
    SYNTAX BITS {
        copySourcePort(0),
        copyDestPort(1),
        copySrcTxTraffic(2),
        copySrcRxTraffic(3),
        countDestDropEvents(4),
        copyErrFrames(5),
        copyUnalteredFrames(6),
        copyAllGoodFrames(7)
        }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        " PortCopy function capabilities of the specified dataSource.
    Note that these are static capabilities, which should not be adjusted
    because of current resources or configuration.

      - copySourcePort(0)
        The agent sets this bit if this dataSource is capable of acting
        as a source of a portCopy operation. The agent clears this bit
        otherwise.

      - copyDestPort(1)
        The agent sets this bit if this dataSource is capable of acting as
        a destination of a portCopy operation. The agent clears this bit
        otherwise.

      - copySrcTxTraffic(2)
        If the copySourcePort bit is set:
          The agent sets this bit if this dataSource is capable of
          copying frames transmitted out this portCopy source.
          The agent clears this bit otherwise.  This function is
          needed to support full-duplex ports.
        Else this bit should be cleared.

      - copySrcRxTraffic(3)
        If the copySourcePort bit is set:
          The agent sets this bit if this dataSource is capable of
          copying frames received on this portCopy source.
          The agent clears this bit otherwise. This function is
          needed to support full-duplex ports.
        Else this bit should be cleared.

      - countDestDropEvents(4)
        If the copyDestPort bit is set:
          The agent sets this bit if it is capable of incrementing
          portCopyDestDropEvents, when this dataSource is the target
          of a portCopy operation and a frame destined to this dataSource is
          dropped (for RMON counting purposes).
        Else this BIT should be cleared.

      - copyErrFrames(5)
        If the copySourcePort bit is set:
          The agent sets this bit if it is capable of copying all errored
          frames from this portCopy source-port, for errored frames
          received on this dataSource.
        Else this BIT should be cleared.

      - copyUnalteredFrames(6)
        If the copySourcePort bit is set:
          The agent sets this bit if it is capable of copying all frames
          from this portCopy source-port without alteration in any way;
          including, but not limited to:
             - truncation (with or without CRC regeneration)
             - proprietary header insertion
             - MAC header rewrite
             - VLAN retagging
        Else this bit should be cleared.

      - copyAllGoodFrames(7)
        If the copySourcePort bit is set:
          The agent sets this bit for the dataSource if all good frames
          received on this dataSource are normally capable of being copied
          by the agent. The agent clears this bit if any good frames are
          not visible for the RMON portCopy operation, e.g., the dataSource
          is a non-promiscuous interface or an internal switch interface
          which may not receive frames which were switched in hardware or
          dropped by the bridge forwarding function.
        Else this bit should be cleared."

    ::= { dataSourceCapsEntry 3  }                                        |

dataSourceCapsIfIndex OBJECT-TYPE
   SYNTAX       InterfaceIndex
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
        "This object contains the ifIndex value of the ifEntry associated
         with this smonDataSource."
    ::= { dataSourceCapsEntry 4  }

-- The SMON Statistics MIB Group

-- aggregated statistics for IEEE 802.1Q VLAN environments.

-- VLAN statistics can be gathered in two different ways; either by using a
-- dataSource referencing a VLAN (sec. 3.3.6) or by configuring
-- smonVlanIdStats and/or smonVlanPrioStats collections. These functions
-- allow a VLAN-ID or user priority distributions per dataSource,
-- auto-populated by the agent in a manner similar to the RMON1 hostTable.

-- Only good frames are counted in the tables described in this section.


-- VLAN ID Stats

-- smonVlanStatsControlTable allows configuration of VLAN-ID collections.

smonVlanStatsControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SmonVlanStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Controls the setup of vLAN statistics tables."
    ::= { smonStats 1 }

smonVlanStatsControlEntry OBJECT-TYPE
    SYNTAX      SmonVlanStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the smonVlanStatsControlTable.
         An example of the indexing of this entry is
         smonVlanStatsControlCreateTime.7"
    INDEX { smonVlanStatsControlIndex }
    ::= { smonVlanStatsControlTable 1 }

SmonVlanStatsControlEntry ::= SEQUENCE {
    smonVlanStatsControlIndex                Integer32,
    smonVlanStatsControlDataSource       SmonDataSource,
    smonVlanStatsControlCreateTime       LastCreateTime,
    smonVlanStatsControlOwner               OwnerString,
    smonVlanStatsControlStatus                RowStatus
}

smonVlanStatsControlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique arbitrary index for this smonVlanStatsControlEntry."
    ::= { smonVlanStatsControlEntry 1 }

smonVlanStatsControlDataSource OBJECT-TYPE
    SYNTAX      SmonDataSource
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The source of data for this set of vLAN statistics.

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

smonVlanStatsControlCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime when this control entry was last
        activated. This can be used by the management station to
        ensure that the table has not been deleted and recreated
        between polls."
    ::= { smonVlanStatsControlEntry 3 }

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

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

        An entry may not exist in the active state unless all
        objects in the entry have an appropriate value.

        If this object is not equal to active(1), all associated
        entries in the smonVlanIdStatsTable shall be deleted."
    ::= { smonVlanStatsControlEntry 5 }

-- The VLAN Statistics Table
-- The smonVlanIdStatsTable provides a distribution based on the IEEE 802.1Q
-- VLAN-ID (VID), for each frame attributed to the data source for the
-- collection.

-- This function applies the same rules for attributing frames to VLAN-based
-- collections. RMON VLAN statistics are collected after the Ingress Rules
-- defined in section 3.13 of the VLAN Specification (P802.1Q/D4)
-- are applied.

-- It is possible that entries in this table will be garbage-collected, based
-- on agent resources, and VLAN configuration. Agents are encouraged to
-- support all 4096 index values and not garbage collect this table.

smonVlanIdStatsTable  OBJECT-TYPE
    SYNTAX     SEQUENCE OF SmonVlanIdStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Contains the vLAN statistics data."
    ::= { smonStats 2 }

smonVlanIdStatsEntry  OBJECT-TYPE
    SYNTAX     SmonVlanIdStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A conceptual row in smonVlanIdStatsTable."
    INDEX { smonVlanStatsControlIndex, smonVlanIdStatsId }
    ::= { smonVlanIdStatsTable 1 }

SmonVlanIdStatsEntry ::= SEQUENCE {
    smonVlanIdStatsId                             Integer32,
    smonVlanIdStatsTotalPkts                      Counter32,
    smonVlanIdStatsTotalOverflowPkts              Counter32,
    smonVlanIdStatsTotalHCPkts                    Counter64,
    smonVlanIdStatsTotalOctets                    Counter32,
    smonVlanIdStatsTotalOverflowOctets            Counter32,
    smonVlanIdStatsTotalHCOctets                  Counter64,
    smonVlanIdStatsNUcastPkts                     Counter32,
    smonVlanIdStatsNUcastOverflowPkts             Counter32,
    smonVlanIdStatsNUcastHCPkts                   Counter64,
    smonVlanIdStatsNUcastOctets                   Counter32,
    smonVlanIdStatsNUcastOverflowOctets           Counter32,
    smonVlanIdStatsNUcastHCOctets                 Counter64,
    smonVlanIdStatsCreateTime                     LastCreateTime
 }

smonVlanIdStatsId OBJECT-TYPE
    SYNTAX     Integer32 (0..4095)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The unique identifier of the vLAN monitored for
         this specific statistics collection.

        According to [14] tagged packets match the VID for the range between
        1 and 4095. An external RMON probe may detect VID=0 on a Inter Switch
        Link, in which case the packet belongs to a vLAN determined by the
        PVID of the ingress port. The vLAN belonging of such a packet can be
        determined only by a RMON probe internal to the switch."
    REFERENCE
        "Draft Standard for Virtual Bridged Local Area Networks, P802.1Q/D6,
          chapter 3.13"
    ::= { smonVlanIdStatsEntry 1 }

smonVlanIdStatsTotalPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of packets counted on
         this vLAN."
    ::= { smonVlanIdStatsEntry 2 }

smonVlanIdStatsTotalOverflowPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times the associated smonVlanIdStatsTotalPkts
         counter has overflowed."
    ::= { smonVlanIdStatsEntry 3 }

smonVlanIdStatsTotalHCPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        " The total number of packets counted on
         this vLAN."
    ::= { smonVlanIdStatsEntry 4 }

smonVlanIdStatsTotalOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of octets counted on
         this vLAN."
    ::= { smonVlanIdStatsEntry 5 }

smonVlanIdStatsTotalOverflowOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times the associated smonVlanIdStatsTotalOctets
         counter has overflowed."
    ::= { smonVlanIdStatsEntry 6 }

smonVlanIdStatsTotalHCOctets OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        " The total number of octets counted on
         this vLAN."
    ::= { smonVlanIdStatsEntry 7 }

smonVlanIdStatsNUcastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of non-unicast packets counted on
         this vLAN."
    ::= { smonVlanIdStatsEntry 8 }

smonVlanIdStatsNUcastOverflowPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times the associated smonVlanIdStatsNUcastPkts
         counter has overflowed."
    ::= { smonVlanIdStatsEntry 9 }

smonVlanIdStatsNUcastHCPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        " The total number of non-unicast packets counted on
         this vLAN."
    ::= { smonVlanIdStatsEntry 10 }

smonVlanIdStatsNUcastOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of non-unicast octets counted on
         this vLAN."
    ::= { smonVlanIdStatsEntry 11 }

smonVlanIdStatsNUcastOverflowOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times the associated smonVlanIdStatsNUcastOctets
         counter has overflowed."
    ::= { smonVlanIdStatsEntry 12 }

smonVlanIdStatsNUcastHCOctets OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        " The total number of Non-unicast octets counted on
         this vLAN."
    ::= { smonVlanIdStatsEntry 13 }

smonVlanIdStatsCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime when this entry was last activated.
        This can be used by the management station to ensure that the
        entry has not been deleted and recreated between polls."
    ::= { smonVlanIdStatsEntry 14 }

-- smonPrioStatsControlTable allows configuration of collections based on the
-- value of the 3-bit user priority field encoded in the TCI. Note that this
-- table merely reports priority as encoded in the VLAN headers, not the
-- priority (if any) given to the frame for the actual switching purposes.

smonPrioStatsControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SmonPrioStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Controls the setup of priority statistics tables."
    ::= { smonStats 3 }

smonPrioStatsControlEntry OBJECT-TYPE
    SYNTAX      SmonPrioStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the smonPrioStatsControlTable.

         An example of the indexing of this entry is
         smonPrioStatsControlCreateTime.7"
    INDEX { smonPrioStatsControlIndex }
    ::= { smonPrioStatsControlTable 1 }

SmonPrioStatsControlEntry ::= SEQUENCE {
    smonPrioStatsControlIndex                Integer32,
    smonPrioStatsControlDataSource       SmonDataSource,
    smonPrioStatsControlCreateTime       LastCreateTime,
    smonPrioStatsControlOwner               OwnerString,
    smonPrioStatsControlStatus                RowStatus
}

smonPrioStatsControlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique arbitrary index for this smonPrioStatsControlEntry."
    ::= { smonPrioStatsControlEntry 1 }

smonPrioStatsControlDataSource OBJECT-TYPE
    SYNTAX      SmonDataSource
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The source of data for this set of vLAN statistics.

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

smonPrioStatsControlCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime when this control entry was last
        activated. This can be used by the management station to
        ensure that the table has not been deleted and recreated
        between polls."
    ::= { smonPrioStatsControlEntry 3 }

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

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

        An entry may not exist in the active state unless all
        objects in the entry have an appropriate value.

        If this object is not equal to active(1), all associated
        entries in the smonPrioStatsTable shall be deleted."
    ::= { smonPrioStatsControlEntry 5 }

-- The Priority Statistics Table

smonPrioStatsTable  OBJECT-TYPE
    SYNTAX     SEQUENCE OF SmonPrioStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Contains the priority statistics."
    ::= { smonStats 4 }

smonPrioStatsEntry  OBJECT-TYPE
    SYNTAX     SmonPrioStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A conceptual row in smonPrioStatsTable."
    INDEX { smonPrioStatsControlIndex, smonPrioStatsId }
    ::= { smonPrioStatsTable 1 }

SmonPrioStatsEntry ::= SEQUENCE {
    smonPrioStatsId                       Integer32,
    smonPrioStatsPkts                     Counter32,
    smonPrioStatsOverflowPkts             Counter32,
    smonPrioStatsHCPkts                   Counter64,
    smonPrioStatsOctets                   Counter32,
    smonPrioStatsOverflowOctets           Counter32,
    smonPrioStatsHCOctets                 Counter64
}

smonPrioStatsId OBJECT-TYPE
    SYNTAX     Integer32 (0..7)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The unique identifier of the priority level monitored for
         this specific statistics collection."
    REFERENCE
        " Draft Standard for Virtual Bridged Local Area Networks, P802.1Q/D6,
          chapter 4.3.2.1"
    ::= { smonPrioStatsEntry 1 }

smonPrioStatsPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of packets counted on
         this priority level."
    ::= { smonPrioStatsEntry 2 }

smonPrioStatsOverflowPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times the associated smonPrioStatsPkts
         counter has overflowed."
    ::= { smonPrioStatsEntry 3 }

smonPrioStatsHCPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        " The total number of packets counted on
         this priority level."
    ::= { smonPrioStatsEntry 4 }

smonPrioStatsOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of octets counted on
         this priority level."
    ::= { smonPrioStatsEntry 5 }

smonPrioStatsOverflowOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times the associated smonPrioStatsOctets
         counter has overflowed."
    ::= { smonPrioStatsEntry 6 }

smonPrioStatsHCOctets OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        " The total number of octets counted on
         this priority level."
    ::= { smonPrioStatsEntry 7 }


-- Port Copy provides the ability to copy all frames from a
-- a specified source to specified destination within a switch.
-- Source and  destinations should be MIB-II interfaces
-- One to one, one to many, many to one and many to many source
-- to destination relationships may be configured.
--
-- Applicable counters on the destination will increment for
-- all packets transmitted, be it by normal bridging/switching
-- or due to packet copy.
-- Note that this table manages no RMON data collection by itself,        |
-- and an agent may possibly implement no other RMON objects except the
-- probeCapabilities scalar, the dataSourceCapsTable, and this table.

portCopyTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF PortCopyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table provides the ability to configure the copy port
         functionality. Source and destinations should be MIB-II
         interfaces.
         One to one, many to one and one to many source to destination
         relationships may be configured.
         Each row that exists in this table defines such a
         relationship.  By disabling a row in this table the port copy
         relationship no longer exists."
::= { portCopyConfig 1 }

portCopyEntry  OBJECT-TYPE
    SYNTAX      PortCopyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Describes a particular port copy entry."
INDEX { portCopySource, portCopyDest }
::= { portCopyTable 1 }

PortCopyEntry ::= SEQUENCE {
        portCopySource
                InterfaceIndex,
        portCopyDest
                InterfaceIndex,
        portCopyDestDropEvents
                Counter32,
        portCopyStatus
                RowStatus
        }

portCopySource OBJECT-TYPE
    SYNTAX       InterfaceIndex (1..65535)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "The ifIndex of the source which will have all packets redirected to
         the destination as defined by portCopyDest."
    ::= { portCopyEntry 1 }

portCopyDest OBJECT-TYPE
    SYNTAX       InterfaceIndex (1..65535)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Defines the ifIndex destination for the copy operation."
    ::= { portCopyEntry 2 }

portCopyDestDropEvents OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
         "The total number of events in which port copy packets
         were dropped by the switch at the destination port due to
         lack of resources.
         Note that this number is not necessarily the number of
         packets dropped; it is just the number of times this
         condition has been detected.
         A single dropped event counter is maintained for each
         portCopyDest. Thus all instances associated with a given
         portCopyDest will have the same portCopyDestDropEvents value "
     ::= { portCopyEntry 3 }

portCopyStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "Defines the status of the port copy entry."
    ::= { portCopyEntry 4 }

-- smonRegistrationPoints
-- defines a set of OIDs for registration purposes of entities
-- supported by the SMON MIB.


smonVlanDataSource      OBJECT IDENTIFIER ::= { smonRegistrationPoints 1}

-- Defined for uses as an SmonDataSource. A single integer parameter
-- is appended to the end of this OID when actually encountered in
-- the dataSourceCapsTable, which represents a positive, non-zero VLAN
-- identifier value.


-- Conformance Macros

smonMIBCompliances      OBJECT IDENTIFIER ::= { rmonConformance 3}
smonMIBGroups           OBJECT IDENTIFIER ::= { rmonConformance 4}

smonMIBCompliance       MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
        "Describes the requirements for full conformance with the SMON MIB"
        MODULE -- this module
        MANDATORY-GROUPS                 {dataSourceCapsGroup,
                                          smonVlanStatsGroup,
                                          smonPrioStatsGroup,
                                          portCopyConfigGroup             |
                                          smonInformationGroup}           |
        GROUP smonVlanStatsExtGroup                                       |
        DESCRIPTION                                                       |
              "The smonVlanStatsExtGroup is mandatory for systems         |
               which can count Non-unicast octets for a given dataSource."|
  ::= { smonMIBCompliances 1 }

 smonMIBVlanStatsCompliance        MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
        "Describes the requirements for conformance with the SMON MIB
         with support for VLAN Statistics. Mandatory for a SMON probe in
         environment where IEEE 802.1Q bridging is implemented."
        MODULE -- this module
        MANDATORY-GROUPS                 {dataSourceCapsGroup,
                                          smonVlanStatsGroup}
  ::= { smonMIBCompliances 2 }

smonMIBPrioStatsCompliance         MODULE-COMPLIANCE
        STATUS     current
        DESCRIPTION
        "Describes the requirements for conformance with the SMON MIB
         with support for priority level Statistics. Mandatory for a SMON
         probe in a environment where IEEE 802.1p priority-switching is
         implemented."
        MODULE -- this module
        MANDATORY-GROUPS                 {dataSourceCapsGroup,
                                          smonPrioStatsGroup}
  ::= { smonMIBCompliances 3 }


portCopyCompliance                 MODULE-COMPLIANCE
        STATUS     current
        DESCRIPTION
        "Describes the requirements for conformance with the port copy
         functionality defined by the SMON MIB"
        MODULE  -- this module
        MANDATORY-GROUPS                 {dataSourceCapsGroup,
                                          portCopyConfigGroup}
  ::= { smonMIBCompliances 4}

dataSourceCapsGroup     OBJECT-GROUP
        OBJECTS          { dataSourceRmonCaps,
                          dataSourceCopyCaps,
                          dataSourceCapsIfIndex}
        STATUS     current
        DESCRIPTION
        "Defines the objects that describe the capabilities of RMON data
         sources."
  ::= {smonMIBGroups 1 }

smonVlanStatsGroup      OBJECT-GROUP
        OBJECTS         { smonVlanStatsControlDataSource,
                         smonVlanStatsControlCreateTime,
                         smonVlanStatsControlOwner,
                         smonVlanStatsControlStatus,
                         smonVlanIdStatsTotalPkts,
                         smonVlanIdStatsTotalOverflowPkts,
                         smonVlanIdStatsTotalHCPkts,
                         smonVlanIdStatsTotalOctets,
                         smonVlanIdStatsTotalOverflowOctets,
                         smonVlanIdStatsTotalHCOctets,
                         smonVlanIdStatsNUcastPkts,
                         smonVlanIdStatsNUcastOverflowPkts,
                         smonVlanIdStatsNUcastHCPkts,
                         smonVlanIdStatsCreateTime}                       *
        STATUS      current
        DESCRIPTION
        "Defines the switch monitoring specific statistics - per vLAN Id."
::= { smonMIBGroups 2 }

smonPrioStatsGroup        OBJECT-GROUP
        OBJECTS         { smonPrioStatsControlDataSource,
                         smonPrioStatsControlCreateTime,
                         smonPrioStatsControlOwner,
                         smonPrioStatsControlStatus,
                         smonPrioStatsPkts,
                         smonPrioStatsOverflowPkts,
                         smonPrioStatsHCPkts,
                         smonPrioStatsOctets,
                         smonPrioStatsOverflowOctets,
                         smonPrioStatsHCOctets}
        STATUS      current
        DESCRIPTION
        "Defines the switch monitoring specific statistics - per vLAN Id."
::= { smonMIBGroups 3 }


smonVlanStatsExtGroup      OBJECT-GROUP                                   |
        OBJECTS         {smonVlanIdStatsNUcastOctets,                     |
                         smonVlanIdStatsNUcastOverflowOctets,             |
                         smonVlanIdStatsNUcastHCOctets}                   |
        STATUS      current                                               |
        DESCRIPTION                                                       |
        "Defines the switch monitoring specific statistics for systems capable|
         of counting non-unicast octets for a given dataSource(as described|
         in the dataSourceRmonCaps object."                               |
::= { smonMIBGroups 4 }                                                   |

smonInformationGroup       OBJECT-GROUP                                   |
        OBJECTS         { smonCapabilities }                              |
        STATUS    current                                                 |
        DESCRIPTION                                                       |
        "An indication of the SMON capabilities support by this agent."   |
::= { smonMIBGroups 5 }                                                   |


portCopyConfigGroup      OBJECT-GROUP
        OBJECTS         { portCopyDestDropEvents,
                          portCopyStatus
                        }
        STATUS     current
        DESCRIPTION
        "Defines the control objects for copy port operations"
::= { smonMIBGroups 6 }                                                   |

END

6.  References

[1]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Structure of Management Information for version 2
     of the Simple Network Management Protocol (SNMPv2)", RFC 1902,
     January 1996.

[2]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Textual Conventions for version 2 of the Simple
     Network Management Protocol (SNMPv2)", RFC 1903, January 1996.

[3]  McCloghrie, K., and M. Rose, Editors, "Management Information Base
     for Network Management of TCP/IP-based internets: MIB-II", STD 17,
     RFC 1213, Hughes LAN Systems, Performance Systems International,
     March 1991.

[4]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Protocol Operations for version 2 of the Simple
     Network Management Protocol (SNMPv2)", RFC 1905, January 1996.

[5]  McCloghrie, K., and Kastenholtz, F., "Interfaces Group Evolution",
     RFC 1573, Hughes LAN Systems, FTP Software, January 1994.

[6]  Information Processing Systems -- Open Systems Interconnection --
     Specification of Abstract Syntax Notation One (ASN.1), International
     Organization for Standardization. International Standard 8824,
      (December, 1987)

[7]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Conformance Statements for version 2 of the Simple
     Network Management Protocol (SNMPv2)", RFC 1904, January 1996.

[8]  Case, J., M. Fedor, M. Schoffstall, J. Davin, "Simple Network
     Management Protocol", RFC 1157, SNMP Research, Performance Systems
     International, MIT Laboratory for Computer Science, May 1990.

[9]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Transport Mappings for version 2 of the Simple
     Network Management Protocol (SNMPv2)", RFC 1906, January 1996.

[10] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901,
     January 1996.

[11] S. Waldbusser, "Remote Network Monitoring Management Information
     Base Version 2 using SMIv2", RFC 2021, January 1997.

[12] S. Waldbusser, "Remote Network Monitoring Management
     Information Base", RFC 1757, February, 1995

[13] K. McCloghrie, A. Bierman, "Entity MIB", RFC 2037, October1996

[14] T. Jeffree, "Draft Standard for Virtual Bridged Local Area
     Networks",  P802.1Q/D6, May 1997

[15] T. Jeffree, "Standard for Local and Metropolitan Area Networks -
     Supplement to Media Access Control (MAC) Bridges: Traffic Class Expediting
     and Dynamic Multicast Filtering", P802.1p/D6, May 1997

[16] K. De Graaf, D. Romascanu, D. McMaster, K. McCloghrie, "Definitions of
     Managed Objects for IEEE 802.3 Repeater Devices using SMIv2", RFC 2108,
     February 1997

[17] K. McCloghrie, F. Kastenholz, "Interfaces Group MIB",
     draft-ietf-ifmib-mib-05.txt, November 1996

[18] E.Decker, etc. - Definitions of Managed Objects for Bridges,
     RFC 1493, July 1993

7.  Security Considerations

   In order to implement this MIB, an agent must make certain management
   information available about various logical and physical entities
   within a managed system, which may be considered sensitive in some
   network environments.

   Therefore, a network administrator may wish to employ instance-level
   access control, and configure the Entity MIB access (i.e., community
   strings in SNMPv1 and SNMPv2C), such that certain instances within
   this MIB, are excluded from particular MIB views.

8.  Authors' Addresses
        Richard Waterman
        Allot Networks Inc.                                               |
        Email: rwaterma@msn.com

        Bill Lahaye
        Cabletron Systems
        Email:  lahaye@ctron.com

        Dan Romascanu
        Madge Networks
        Atidim Technology Park, Bldg. 3
        Tel Aviv   61131
        Israel

        Steven Waldbusser
        International Network Services
        Phone: (415) 254-4251
        EMail: waldbusser@ins.com