-- *****************************************************************
-- CISCO-BRIDGE-DOMAIN-MIB.my : Cisco Bridge Domain MIB
--   
-- Oct 2007, Madhavi Dokku
--   
-- Copyright (c) 2007 by Cisco Systems, Inc.
--   
-- All rights reserved.
-- *****************************************************************

CISCO-BRIDGE-DOMAIN-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Unsigned32
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION,
    TruthValue,
    RowStatus,
    StorageType
        FROM SNMPv2-TC
    ifIndex
        FROM IF-MIB
    ciscoMgmt
        FROM CISCO-SMI;


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

            Postal: 170 W Tasman Drive
            San Jose, CA  95134
            USA
            Tel: +1 800 553-NETS

            E-mail: cs-ethermibs@cisco.com"
    DESCRIPTION
        "A bridge domain is one of the means by which it is possible
        to define a broadcast domain on a bridging device. It is an 
            alternative to 802.1D bridge-groups and to 802.1Q VLAN 
        bridging.

        Bridge domain is the service specification, and specifies the 
        broadcast domain number on which this frame of this particular
        service instance must be made available on. The physical and 
        virtual interfaces that can comprise a bridge domain are 
        heterogeneous in nature comprising Ethernet service instances,
        WAN Virtual Circuit for ATM or Frame Relay and VFIs. However,
        the frame encapsulations for all interface types are
        essentially Ethernet. 

        Without bridge-domains, VLANs would have to be globally unique
        per device and one would only be restricted to the theoretical  
             maximum of 4095 VLANs for single tagged traffic. However
        with        the introduction of bridge-domains, one can
        associate a service        instance with a bridge-domain and all
        service instances in the        same bridge-domain form a
        broadcast domain. Bridge-domain ID        determines the
        broadcast domain and the VLAN id is merely used        to match
        and map traffic. With bridge domain feature configured       
        VLAN IDs would be unique per interface only and not globally.   
            Thus bridge domains make VLAN ids have only local
        significance        per port


        Differences between Bridge Domains and 802.1AD Bridges:
        =======================================================
        1. Scope of the VLAN technology which uses 802.1 AD is global to
        the box.
        But in case of Bridge domain, the scope of vlan is local to
        interface

        2. Switchport 802.1AD restricts the number of broadcast domain  
            on a box to 4095.
        However, with Bridge domains, we can have up to 16k broadcast   
               domain.

        3. Under a single Bridge domain service instance, there can be  
                flexible service mapping criterion.(i.e match based on
        outer vlan, outer cos, inner vlan, inner cos and payload
        ethertype).
        Whereas in case of switch port 802.1AD/dot1q this is not
        supported.

        Similarities between Bridge Domains and 802.1AD Bridges:
        =======================================================

        1. Both use the same MAC address lookup for forwarding.

        2. Both work with protocols like STP, DTP etc.

        3. Both of them classify 'ports' in a system into Bridges/Bridge
                  Domains.

        Ethernet service instance is the instantiation of an Ethernet 
        virtual circuit on a given port on a given router. In other 
        words, an Ethernet service instance is an object that holds 
        information about the layer 2 service that is being offered
        on a given port of a given router as part of a given Ethernet
        virtual circuit. Bridge domains feature is currently supported
        on ethernet service instances only and can be later extented
        to other interfaces like ATM and Frame Relay.

        This MIB helps the network management personnel to find out the 
        details of various broadcast domains configured in the network.

        Definition of terms and acronyms:

        ATM: Asynchronous Transfer mode

        BD: Bridge Domain

        C-mac: Customer MAC

        EVC: Ethernet Virtual Circuit

        FR: Frame Relay

        SH: Split Horizon

        VFI: Virtual Forwarding Instance 

        VLAN: Virtual Local Area Network

        WAN: Wide Area Network"
    REVISION        "200712290000Z"
    DESCRIPTION
        "Modified the MIB description with details on similarities and
        differences between Bridge Domains and 802.1AD Bridges."
    REVISION        "200712040000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { ciscoMgmt 642 }


ciscoBdMIBNotifications  OBJECT IDENTIFIER
    ::= { ciscoBridgeDomainMIB 0 }

ciscoBdMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoBridgeDomainMIB 1 }

ciscoBdMIBConformance  OBJECT IDENTIFIER
    ::= { ciscoBridgeDomainMIB 2 }

cbdSystemInfo  OBJECT IDENTIFIER
    ::= { ciscoBdMIBObjects 1 }

cbdMemberInfo  OBJECT IDENTIFIER
    ::= { ciscoBdMIBObjects 2 }


-- Textual Conventions

CbdType ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "Defines the different types of bridge domain members:

        'other': none of the following

            'ether': Ethernet Service Instance

        'atmVc': ATM Virtual connection

        'frVc': Frame Relay Virtual Connection"
    SYNTAX          INTEGER  {
                        other(1),
                        ether(2),
                        atmVc(3),
                        frVc(4)
                    }

cbdMembersConfigured OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of bridge domain
        members configured on this bridge domain." 
    ::= { cbdSystemInfo 1 }
-- Member Info Table

cbdMemberInfoTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CbdMemberInfoEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table provides the bridge domain member attributes
        of the members currently configured for each bridge
        domain."
    ::= { cbdMemberInfo 1 }

cbdMemberInfoEntry OBJECT-TYPE
    SYNTAX          CbdMemberInfoEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row in cbdMemberInfoTable. This is indexed
        by ifIndex and cbdSIIndex. Each row is created when a bridge
        domain member is configured under a service instance."
    INDEX           {
                        ifIndex,
                        cbdSIIndex
                    } 
    ::= { cbdMemberInfoTable 1 }

CbdMemberInfoEntry ::= SEQUENCE {
        cbdSIIndex               Unsigned32,
        cbdMemberType            CbdType,
        cbdMemberOperState       INTEGER ,
        cbdMemberAdminState      INTEGER ,
        cbdMemberSplitHorizon    TruthValue,
        cbdMemberSplitHorizonNum Unsigned32,
        cbdMemberStorageType     StorageType,
        cbdMemberStatus          RowStatus,
        cbdMembercMac            TruthValue
}

cbdSIIndex OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295 )
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates an arbitary index that uniquely
        identifies the Service Instance to which this bridge domain
        member belongs to." 
    ::= { cbdMemberInfoEntry 1 }

cbdMemberType OBJECT-TYPE
    SYNTAX          CbdType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object identifies the type of the bridge domain member
        like ATM VC, Frame Relay VC, or Ethernet service."
    DEFVAL          { other } 
    ::= { cbdMemberInfoEntry 2 }

cbdMemberOperState OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unknown(1),
                        up(2),
                        down(3)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the operational state of the bridge
        domain Member. Operational state of the Bridge domain member
        is same as the operational state of the underlying service
        instance. Bridge domain members are configured under service
        instances and multiple service instances can be attached to a  
        single physical interface defining various kinds of services.
        Bridge domain members have many to one relationship with
        interface
        Indexes. When ifOperStatus of the underlying interface is down,
        the state of cbdMemberOperState should be down. When
        ifOperStatus
        of the underlying interface is up, cbdMemberOperState can be
        either up or down based on the state of underlying service
        instance.

        'unknown': the bridge domain member is an unknown state.

        'up': the bridge domain member is fully operational and 
        able to bridge the traffic. This means that both the  
        physical interface and the underlying service instance
        are administratively up. 

        'down': the Bridge Domain member is down and not
        capable of bridging. This state means either the underlying 
        service instance is down or the interface is down." 
    ::= { cbdMemberInfoEntry 3 }

cbdMemberAdminState OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unknown(1),
                        up(2),
                        down(3)
                    }
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object indicates the administrative state of the
        bridge domain Member.  Admin state of the Bridge domain member
        is same as the admin state of the underlying service instance.
        Bridge domain members are configured under service instances 
        and multiple service instances can be attached to a single
        physical interface defining various kinds of services. Bridge
        Domain members have many to one relationship with interface
        Indexes. When ifAdminStatus of the unerlying interface is down
        the state of cbdMemberAdminState should be down. When ifOperStatus
        of the underlying interface is up cbdMemberAdminState can be 
        either up or down based on the state of underlying service
        instance.

        'unknown': the bridge domain member is in unknown 
        administrative state.

        'up': the Bridge Domain member is administratively up. This 
        means that both the physical interface and the underlying service
        instance are administratively up. 

        'admindown': the Bridge Domain member is down as it is 
        administratively configured to be down and is not 
        capable of bridging. This means that either the underlying 
        service instance is configured as administratively down or
        the physical interface is configured as administratively
        down." 
    ::= { cbdMemberInfoEntry 4 }

cbdMemberSplitHorizon OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object indicates whether split horizon is
        configured on this bridge domain member." 
    ::= { cbdMemberInfoEntry 5 }

cbdMemberSplitHorizonNum OBJECT-TYPE
    SYNTAX          Unsigned32 (0..65535 )
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object indicates the split horizon number if
        configured on the bridge domain member. Split horizon
        is used to avoid sending traffic between interfaces. 
        Frames are not forwarded to the members belonging to the
        same split horizon group."
    DEFVAL          { 0 } 
    ::= { cbdMemberInfoEntry 6 }

cbdMemberStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the storage type of this conceptual
        row.  This object can only have a value 'nonVolatile'.  Other 
        values are not applicable for this conceptual row and are 
        not supported."
    DEFVAL          { nonVolatile } 
    ::= { cbdMemberInfoEntry 7 }

cbdMemberStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object enables the SNMP agent to create, modify,
        and delete rows in the cbdMemberInfoTable."
    DEFVAL          { active } 
    ::= { cbdMemberInfoEntry 8 }

cbdMembercMac OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object indicates if cmac is configured on this
        bridge domain member. Cmac denotes if this bridge domain is
        configured as a customer domain." 
    ::= { cbdMemberInfoEntry 9 }
 

-- Notifications

ciscoBdNotificationPrefix  OBJECT IDENTIFIER
    ::= { ciscoBdMIBNotifications 0 }

-- Conformance

ciscoBdMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoBdMIBConformance 1 }

ciscoBdMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoBdMIBConformance 2 }


ciscoBdMIBComplianceRev1 MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for entities which implement
        the CISCO-BRIDGE-DOMAIN-MIB."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        cbdSystemInfoGroup,
                        cbdMemberInfoGroup
                    }
    ::= { ciscoBdMIBCompliances 1 }

-- Units of Conformance

cbdSystemInfoGroup OBJECT-GROUP
    OBJECTS         { cbdMembersConfigured }
    STATUS          current
    DESCRIPTION
        "This group contain information about bridge domain."
    ::= { ciscoBdMIBGroups 1 }

cbdMemberInfoGroup OBJECT-GROUP
    OBJECTS         {
                        cbdMemberType,
                        cbdMemberOperState,
                        cbdMemberAdminState,
                        cbdMemberSplitHorizon,
                        cbdMemberSplitHorizonNum,
                        cbdMemberStorageType,
                        cbdMemberStatus,
                        cbdMembercMac
                    }
    STATUS          current
    DESCRIPTION
        "This group contain information related to bridge domain
        members."
    ::= { ciscoBdMIBGroups 2 }

END