-- ***************************************************************** -- CISCO-VRF-MIB.my -- -- July 2009, Ganesan Rajam -- -- Copyright (c) 2009 by cisco Systems Inc. -- All rights reserved. -- ***************************************************************** -- CISCO-VRF-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, NOTIFICATION-TYPE FROM SNMPv2-SMI MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF StorageType, RowStatus, TruthValue, TEXTUAL-CONVENTION FROM SNMPv2-TC ifIndex, InterfaceIndex, ifName FROM IF-MIB SnmpAdminString FROM SNMP-FRAMEWORK-MIB ciscoMgmt FROM CISCO-SMI; ciscoVrfMIB MODULE-IDENTITY LAST-UPDATED "200912100000Z" 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-snmp@cisco.com" DESCRIPTION "The MIB module for provisioning and managing network virtualization features. This module provides manageability for VRF, VRF-Lite and vNET. VRF stands for Virtual Routing and Forwarding. VRF is an extension of IP routing that provides multiple routing instances. VRF provides independent routing instances and hence the same or over-lapping addresses can be used without conflicting each other. VRFs are used in conjunction with MPLS VPN to provide traffic separation between multiple VPN customers. A VRF-Lite enabled device implements VRFs and does not require MPLS for end to end communication. Instead of using MPLS labels, VRF-Lite uses the interfaces to distinguish routes for different VPNs. VRF-Lite forms virtual packet-forwarding tables by associating one or more interfaces with each VRF, and interfaces cannot belong to more than one VRF at any time. VRF-Lite is an IP based hop-by-hop virtualization mechanism and it involves complex configuration of every hop in the network. vNET, virtual network, is also an IP based hop-by-hop mechanism that can provide end-to-end virtualization of the network. vNET greatly reduces the complexity in VRF-Lite deployment. This MIB module will allow the user to perform the following * Create and monitor VRFs * Group VRFs to create VRF List * Associate/Dis-associate interface to/from a VRF * Enable vNET trunking on an interface * Specify VRF list per trunk" REVISION "200912100000Z" DESCRIPTION "Latest version of this MIB module." ::= { ciscoMgmt 711 } -- User Defined Types used in this MIB CvVrfIfType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The type value denotes the manner in which the interface is used. vNETTrunkSI(1) : The sub-interface is created under a vNET trunk interface to carry vNET tagged traffic belonging to a VRF. vNETEdge(2) : The interface is assigned to a VRF which is tagged with a vNET tag. vrfEdge(3) : The interface is assigned to an untagged VRF." SYNTAX INTEGER { vNETTrunkSI(1), vNETEdge(2), vrfEdge(3) } CvVnetTagOrZero ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The tag value assigned to a vNET. The tag value is global, meaning on each router, the same vNET must be assigned the same numerical tag value. This is assigned by the system operator or NMS or through a network tag distribution mechanism. The valid tag value is ranged from 2 to 4094. Traffic that carries a vNET tag is called tagged traffic. On the other hand, traffic that does not carry a vNET tag is called untagged traffic. A vNET is defined as a VRF with a tag assigned. A valid tag value assigned to a VRF indicates it is a vNET. Zero(0) is a special value and its meaning should be interpreted in conjunction with the object definition using this type." SYNTAX Unsigned32 (0 | 2..4094) -- Top Level Object hierarchy ciscoVrfMIBObjects OBJECT IDENTIFIER ::= { ciscoVrfMIB 1 } ciscoVrfMIBNotifs OBJECT IDENTIFIER ::= { ciscoVrfMIB 0 } ciscoVrfMIBConform OBJECT IDENTIFIER ::= { ciscoVrfMIB 2 } cvVrf OBJECT IDENTIFIER ::= { ciscoVrfMIBObjects 1 } cvInterface OBJECT IDENTIFIER ::= { ciscoVrfMIBObjects 2 } cvNotifCntl OBJECT IDENTIFIER ::= { ciscoVrfMIBObjects 3 } -- Object definitions cvVrfTable OBJECT-TYPE SYNTAX SEQUENCE OF CvVrfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains entries representing a VRF - Virtual Routing and Forwarding instance. There will be an entry for each VRF instance created in the system." ::= { cvVrf 1 } cvVrfEntry OBJECT-TYPE SYNTAX CvVrfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry representing the information pertaining to a virtual routing and forwarding instance." INDEX { cvVrfIndex } ::= { cvVrfTable 1 } CvVrfEntry ::= SEQUENCE { cvVrfIndex Unsigned32, cvVrfName SnmpAdminString, cvVrfVnetTag CvVnetTagOrZero, cvVrfOperStatus INTEGER, cvVrfRouteDistProt BITS, cvVrfStorageType StorageType, cvVrfRowStatus RowStatus } cvVrfIndex OBJECT-TYPE SYNTAX Unsigned32 (1..65535) MAX-ACCESS not-accessible STATUS current DESCRIPTION "An identifier that is assigned to each VRF and is used to uniquely identify it. The uniqueness of this identifier is restricted only to this device." ::= { cvVrfEntry 1 } cvVrfName OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (1..64)) MAX-ACCESS read-create STATUS current DESCRIPTION "The human-readable name of the VRF instance. This name uniquely identifies the VRF instance in the system. This object is mandatory for creating an entry in this table." ::= { cvVrfEntry 2 } cvVrfVnetTag OBJECT-TYPE SYNTAX CvVnetTagOrZero (0 | 2..4094) MAX-ACCESS read-create STATUS current DESCRIPTION "The vNET tag assigned to this VRF instance. A value of zero(0) indicates the VRF instance is not a vNET and such vrf could be part of a VRF-Lite or MPLS deployment. A set with a value of zero(0) will remove the vNET tag assigned to this VRF. The value of this object can be changed even when cvVrfRowStatus is having a value of active(1)." DEFVAL { 0 } ::= { cvVrfEntry 3 } cvVrfOperStatus OBJECT-TYPE SYNTAX INTEGER { up(1), down(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "Denotes whether a VRF is operational or not. A VRF is up(1) when at least one interface associated with the VRF, which ifOperStatus is up(1). A VRF is down(2) when: a. There does not exist at least one interface whose ifOperStatus is up(1). b. There are no interfaces associated with the VRF." ::= { cvVrfEntry 4 } cvVrfRouteDistProt OBJECT-TYPE SYNTAX BITS { none(0), other(1), ospf(2), rip(3), isis(4), eigrp(5), bgp(6) } MAX-ACCESS read-only STATUS current DESCRIPTION "Denotes the route distribution protocol enabled in this VRF. Note that more than one routing protocol may be enabled at the same time." ::= { cvVrfEntry 5 } cvVrfStorageType OBJECT-TYPE SYNTAX StorageType MAX-ACCESS read-only STATUS current DESCRIPTION "The storage type for this entry." ::= { cvVrfEntry 6 } cvVrfRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object is used to create, modify, and/or delete a row in this table." ::= { cvVrfEntry 7 } cvVrfListTable OBJECT-TYPE SYNTAX SEQUENCE OF CvVrfListEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains the entries representing the VRFs in a VRF List." ::= { cvVrf 2 } cvVrfListEntry OBJECT-TYPE SYNTAX CvVrfListEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry in this table represents a VRF in a VRF list. A VRF list is a collection of VRFs grouped together. The list defined here can be associated to a vNET trunk interface, which would then act as a trunk carrying traffic for all VRFs in the VRF list. An example of a VRF List - list1.1 = Vrf_Finance list1.2 = Vrf_HR" INDEX { cvVrfListName, cvVrfListVindex } ::= { cvVrfListTable 1 } CvVrfListEntry ::= SEQUENCE { cvVrfListName SnmpAdminString, cvVrfListVindex Unsigned32, cvVrfListVrfIndex Unsigned32, cvVrfListStorageType StorageType, cvVrfListRowStatus RowStatus } cvVrfListName OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (1..64)) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The human-readable name of the VRF List. This name uniquely identifies the VRF List in the system." ::= { cvVrfListEntry 1 } cvVrfListVindex OBJECT-TYPE SYNTAX Unsigned32 (1..32) MAX-ACCESS not-accessible STATUS current DESCRIPTION "This index uniquely identifies a VRF within the VRF list." ::= { cvVrfListEntry 2 } cvVrfListVrfIndex OBJECT-TYPE SYNTAX Unsigned32 (1..65535) MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the associated VRF in the cvVrfTable. The value of this object is index value (cvVrfIndex) of cvVrfTable. The value of this object cannot be modified when the entry is in active(1) state." ::= { cvVrfListEntry 3 } cvVrfListStorageType OBJECT-TYPE SYNTAX StorageType MAX-ACCESS read-only STATUS current DESCRIPTION "The storage type for this entry." ::= { cvVrfListEntry 4 } cvVrfListRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object is used to create, modify, and/or delete a row in this table." ::= { cvVrfListEntry 5 } cvVrfInterfaceTable OBJECT-TYPE SYNTAX SEQUENCE OF CvVrfInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains the entries representing the interfaces associated with a VRF instance." ::= { cvInterface 1 } cvVrfInterfaceEntry OBJECT-TYPE SYNTAX CvVrfInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry in this table represents an interface to which a VRF is associated. A VRF can be associated to multiple interfaces. There will be one entry per interface for each VRF instance in this table." INDEX { cvVrfIndex, cvVrfInterfaceIndex } ::= { cvVrfInterfaceTable 1 } CvVrfInterfaceEntry ::= SEQUENCE { cvVrfInterfaceIndex InterfaceIndex, cvVrfInterfaceType CvVrfIfType, cvVrfInterfaceVnetTagOverride CvVnetTagOrZero, cvVrfInterfaceStorageType StorageType, cvVrfInterfaceRowStatus RowStatus } cvVrfInterfaceIndex OBJECT-TYPE SYNTAX InterfaceIndex (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "This is a unique index for an entry in this table. A non-zero index for an entry indicates the ifIndex for the corresponding interface entry in the ifTable. Note that this table does not necessarily correspond one-to-one with all entries in the Interface MIB." ::= { cvVrfInterfaceEntry 1 } cvVrfInterfaceType OBJECT-TYPE SYNTAX CvVrfIfType MAX-ACCESS read-only STATUS current DESCRIPTION "The VRF type of this interface. The type of the interface is determined based on the VRF associated with this interface. If the VRF is not tagged with vnet tag then the type will be vrfEdge. If the VRF is tagged with vnet tag then it will become vnetEdge. For vNETTrunkSI, the sub-interface in question is automatically created for a VRF when trunking is enabled on the main interface." ::= { cvVrfInterfaceEntry 2 } cvVrfInterfaceVnetTagOverride OBJECT-TYPE SYNTAX CvVnetTagOrZero (0 | 2..4094) MAX-ACCESS read-create STATUS current DESCRIPTION "This object can be used to over-ride the vNET tag assigned to the VRF traffic going through this interface. This object is applicable only if the cvVrfInterfaceType of this interface has a value of vNETTrunkSI(1). By default the tagged traffic will use the value denoted by cvVrfVnetTag of this VRF. In which case this object will have a value of zero(0). A set with a value of zero(0) will revert the tag assignment behaviour to default behaviour mentioned above." DEFVAL { 0 } ::= { cvVrfInterfaceEntry 3 } cvVrfInterfaceStorageType OBJECT-TYPE SYNTAX StorageType MAX-ACCESS read-only STATUS current DESCRIPTION "The storage type for this entry." ::= { cvVrfInterfaceEntry 4 } cvVrfInterfaceRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object is used to create, modify, and/or delete a row in this table. When a row is created in this table the VRF is associated to an interface. When a row is deleted from this table the VRF is dis-associated from the interface." ::= { cvVrfInterfaceEntry 5 } cvInterfaceTable OBJECT-TYPE SYNTAX SEQUENCE OF CvInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains entries representing the interfaces on which the vNET trunking can be enabled." ::= { cvInterface 2 } cvInterfaceEntry OBJECT-TYPE SYNTAX CvInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry in this table represents an interface on which the vNET trunking can be enabled. When an interface is enabled for vNET trunking, it will carry the traffic for the VRFs which are tagged with the vNET tag." INDEX { ifIndex } ::= { cvInterfaceTable 1 } CvInterfaceEntry ::= SEQUENCE { cvInterfaceVnetTrunkEnabled TruthValue, cvInterfaceVnetVrfList SnmpAdminString } cvInterfaceVnetTrunkEnabled OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "This object represents the vNET trunking status for this interface. When enabled for vNET trunking the interface will carry traffic of all vNETs in the device." DEFVAL { false } ::= { cvInterfaceEntry 1 } cvInterfaceVnetVrfList OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (0 | 1..32)) MAX-ACCESS read-write STATUS current DESCRIPTION "The name of the VRF List associated with this interface. A non-zero length string represent a list of vNET tagged VRFs, whose traffic will be forwarded through this interface. A zero length string denotes that the traffic for all the vNET tagged VRFs will be forwarded through this interface." DEFVAL { "" } ::= { cvInterfaceEntry 2 } -- Notification control objects cvVrfIfNotifEnable OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "This object indicates whether the device should generate notifications related to VRF Interface status change." DEFVAL { false } ::= { cvNotifCntl 1 } cvVnetTrunkNotifEnable OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "This object indicates whether the device should generate notifications related to vNET Trunk Interface status change." DEFVAL { false } ::= { cvNotifCntl 2 } -- Notification definitions cvVrfIfUp NOTIFICATION-TYPE OBJECTS { ifName, cvVrfName, cvVrfOperStatus } STATUS current DESCRIPTION "This notification is generated when: a. The ifOperStatus of an interface associated with a VRF changes to the up(1) state. b. When an interface with ifOperStatus = up(1) is associated with a VRF. The interface is identified by ifName and the VRF is identified by cvVrfName varbinds respectively." ::= { ciscoVrfMIBNotifs 1 } cvVrfIfDown NOTIFICATION-TYPE OBJECTS { ifName, cvVrfName, cvVrfOperStatus } STATUS current DESCRIPTION "This notification is generated when: a. The ifOperStatus of an interface associated with a VRF changes to the down(2) state. b. When an interface with ifOperStatus = up(1) state is disassociated with a VRF. The interface is identified by ifName and the VRF is identified by cvVrfName varbinds respectively. If all the interfaces associated with the VRF are in down(2) state or if there are no more interfaces associated with the VRF, then the cvVrfOperStatus will have a value of down(2)." ::= { ciscoVrfMIBNotifs 2 } cvVnetTrunkUp NOTIFICATION-TYPE OBJECTS { ifName } STATUS current DESCRIPTION "This notification is generated when the ifOperStatus of a vNET trunk interface changes to the up(1) state. The interface is identified by ifName varbind. The notification will be generated for only those interfaces for which the cvInterfaceVnetTrunkEnabled object has a value of True(1)." ::= { ciscoVrfMIBNotifs 3 } cvVnetTrunkDown NOTIFICATION-TYPE OBJECTS { ifName } STATUS current DESCRIPTION "This notification is generated when the ifOperStatus of a vNET trunk interface changes to the down(2) state. The interface is identified by ifName varbind. The notification will be generated for only those interfaces for which the cvInterfaceVnetTrunkEnabled object has a value of True(1)." ::= { ciscoVrfMIBNotifs 4 } -- Units of Conformance cvMIBGroups OBJECT IDENTIFIER ::= { ciscoVrfMIBConform 1 } cvMIBVrfGroup OBJECT-GROUP OBJECTS { cvVrfOperStatus, cvVrfStorageType, cvVrfRowStatus, cvVrfRouteDistProt, cvVrfInterfaceType, cvVrfInterfaceStorageType, cvVrfInterfaceRowStatus, cvVrfIfNotifEnable, cvVrfName } STATUS current DESCRIPTION "Collection of objects needed for VRF and VRF-Lite management." ::= { cvMIBGroups 1 } cvMIBVrfNotifGroup NOTIFICATION-GROUP NOTIFICATIONS { cvVrfIfUp, cvVrfIfDown } STATUS current DESCRIPTION "Collection of VRF notifications." ::= { cvMIBGroups 2 } cvMIBVnetGroup OBJECT-GROUP OBJECTS { cvVrfVnetTag, cvVrfListVrfIndex, cvVrfListStorageType, cvVrfListRowStatus, cvVrfInterfaceVnetTagOverride, cvInterfaceVnetTrunkEnabled, cvInterfaceVnetVrfList, cvVnetTrunkNotifEnable } STATUS current DESCRIPTION "Collection of objects needed for vNET management." ::= { cvMIBGroups 3 } cvMIBVnetNotifGroup NOTIFICATION-GROUP NOTIFICATIONS { cvVnetTrunkUp, cvVnetTrunkDown } STATUS current DESCRIPTION "Collection of VRF and vNET notifications." ::= { cvMIBGroups 4 } cvMIBCompliances OBJECT IDENTIFIER ::= { ciscoVrfMIBConform 2 } cvMIBCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for SNMP Agents which implement this MIB." MODULE -- this module MANDATORY-GROUPS { cvMIBVrfGroup, cvMIBVrfNotifGroup } GROUP cvMIBVnetGroup DESCRIPTION "This group is required to manage vNETs." GROUP cvMIBVnetNotifGroup DESCRIPTION "The group is required to provide VRF and vNET notifications." OBJECT cvVrfVnetTag MIN-ACCESS read-only DESCRIPTION "It is enough to provide read-only access to this object even though write access is desirable." OBJECT cvVrfInterfaceVnetTagOverride MIN-ACCESS read-only DESCRIPTION "It is enough to provide read-only access to this object even though write access is desirable." OBJECT cvVrfRowStatus MIN-ACCESS read-only DESCRIPTION "It is enough to provide read-only access to the table containing this object even though it is desirable to use this object to create a row in the table." OBJECT cvVrfListRowStatus MIN-ACCESS read-only DESCRIPTION "It is enough to provide read-only access to the table containing this object even though it is desirable to use this object to create a row in the table." OBJECT cvVrfInterfaceRowStatus MIN-ACCESS read-only DESCRIPTION "It is enough to provide read-only access to the table containing this object even though it is desirable to use this object to create a row in the table." OBJECT cvInterfaceVnetTrunkEnabled MIN-ACCESS read-only DESCRIPTION "It is enough to provide read-only access to this object even though write access is desirable." OBJECT cvInterfaceVnetVrfList MIN-ACCESS read-only DESCRIPTION "It is enough to provide read-only access to this object even though write access is desirable." ::= { cvMIBCompliances 1 } END