Previous Section  < Free Open Study >  Next Section

MPLS LSR MIB

The MPLS LSR MIB is currently defined in draft-ietf-mpls-lsr-mib, "Multiprotocol Label Switching (MPLS) Label Switch Router (LSR) Management Information Base." The LSR MIB is considered the foundation of other MIBs, such as the MPLS TE MIB, because label switching is common to all Label-Switched Paths (LSPs), regardless of how the labels are exchanged. Specific to TE, the mplsTunnelXCPointer link in the MPLS TE MIB points to the mplsXCTable (pronounced "MPLS cross-connect table") defined in the LSR MIB. This entry in the mplsXCTable identifies the MPLS TE LSP. This association will make more sense when you examine the TE MIB in detail. For now, the point is that it is important to have a basic understanding of the capabilities offered by the LSR MIB, because it is used in the TE MIB.

Before we get into exactly what is available in the LSR MIB, you need to understand the term segment in the context of MPLS MIBs. An LSP is broken into one or more incoming and outgoing segments as it crosses each LSR. The incoming segment is tied to outgoing segments using the cross-connect table (mplsXCTable). The terms connection and LSP are used interchangeably in these MIBs. Now you can proceed to the details of the LSR MIB.

The LSR MIB provides the following:

  • Interface configuration table (mplsInterfaceConfTable), used to enable/disable MPLS on interfaces

  • Interface performance table (mplsInterfacePerfTable), used to get performance statistics on a given interface

  • Tables to actually define in-segments and out-segments for configuring LSP segments

  • A cross-connect table that associates the in-segments and out-segments of LSPs

  • Two other tables are defined in the draft that are not supported by Cisco IOS Software at this time—labelStackTable and trafficParamTable

The following sections examine the four tables that are currently supported.

Interface Configuration Table (mplsInterfaceConfTable)

Every LSR creates an entry for each MPLS-capable interface available on that LSR. The index into this table corresponds to the ifIndex, which is the interface index defined in the ifTable.

The interface MIB has been extended to include

  • ifType 150— mplsTunnel

  • ifType 166— MPLS

Figure 8-1 shows this extension.

Figure 8-1. ifTable Extensions for MPLS

graphics/08fig01.gif

The Underlying Layer shown in Figure 8-1 is any Layer 2 that supports MPLS, such as Ethernet, Frame Relay, or ATM.

Figure 8-2 shows a Network Management System (NMS) attached to a sample network. You can either have a dedicated management network that attaches to each device you want to monitor, or simply place the NMS somewhere on your network and all management traffic to traverse the backbone.

Figure 8-2. Network Management

graphics/08fig02.gif

In the sample network shown in Figure 8-2, a computer running Linux is used as the NMS. The management subnet used is on 7.1.5.0/24. The host name of the Linux machine is linux1. The SNMP commands used to set or get information from the devices can be used with a GUI provided in management applications such as HP OpenView. In the examples used in this chapter, the commands were run on the command line using commands such as snmpget and snmpwalk. Example 8-1 shows the snmpwalk command used to retrieve the system table on node 12008a. linux1> is the system prompt. The command executed is shown in bold, and the output follows the command.

NOTE

The Object Identifiers (OIDs) for the MPLS LSR and the MPLS TE MIBs are currently branched off the org.dod.internet.experimental part of the OID tree. It is common practice to use the experimental branch for MIBs that are awaiting standardization. Currently, the LSR MIB uses the experimental.96 branch, and the MPLS TE MIB uses the experimental.95 branch. The OID files for the LSR and TE MIBs are available at www.cisco.com/public/mibs.


Example 8-1 Sample Output of the snmpwalk Command Used to Get the System Table on 12008a

linux1>snmpwalk -t 500 7.1.5.5 public system (system)

system.sysDescr.0 = Cisco Internetwork Operating System Software

IOS (tm) GS Software (GSR-P-M), Version 12.0(21.2)S, EARLY DEPLOYMENT MAINTENANCE

INTERIM SOFTWARE

TAC Support: http://www.cisco.com/tac

Copyright (c) 1986-2002 by cisco Systems, Inc.

Compiled Tue 26-Mar-0

system.sysObjectID.0 = OID: enterprises.9.1.182

system.sysUpTime.0 = Timeticks: (15909997) 1 day, 20:11:39.97

system.sysContact.0 =

system.sysName.0 = mpls-12008a

system.sysLocation.0 =

system.sysServices.0 = 6

system.sysORLastChange.0 = Timeticks: (0) 0:00:00.00

Because the MPLS LSR and TE MIBs are branches of the experimental portion of the OID tree, examples shown in this chapter use the numerical OID string, such as .1.3.6.1.3.96. 1.1.1.3.8 for the MPLS LSR and .1.3.6.1.3.95.2.2.1.5 for the MPLS TE MIB. The command line where snmpget or snmpwalk is executed is annotated in parentheses for ease of reading to show which variable is being polled. For example:


linux1>snmpget -t 500 7.1.5.4 public .1.3.6.1.3.96.1.1.1.2.8

  (mplsInterfaceLabelMinIn)

means that the mplsInterfaceLabelMinIn variable is being polled.

Example 8-2 shows the results of polling for the ifType of 12008a. As you can see from the highlighted text, certain interfaces show up as type 150—mplsTunnel.

Example 8-2 Polling 12008a for ifType Shows MPLS Extensions

linux1>snmpwalk -t 500 7.1.5.5 public interfaces.iftable.ifentry.iftype (ifType)

interfaces.ifTable.ifEntry.ifType.8 = ppp(23)

interfaces.ifTable.ifEntry.ifType.9 = 171

interfaces.ifTable.ifEntry.ifType.13 = sonet(39)

interfaces.ifTable.ifEntry.ifType.17 = ethernetCsmacd(6)

interfaces.ifTable.ifEntry.ifType.31 = atm(37)

interfaces.ifTable.ifEntry.ifType.32 = atmSubInterface(134)

interfaces.ifTable.ifEntry.ifType.33 = aal5(49)

interfaces.ifTable.ifEntry.ifType.42 = softwareLoopback(24)

interfaces.ifTable.ifEntry.ifType.43 = softwareLoopback(24)

interfaces.ifTable.ifEntry.ifType.44 = mplsTunnel(150)

interfaces.ifTable.ifEntry.ifType.45 = mplsTunnel(150)

interfaces.ifTable.ifEntry.ifType.46 = mplsTunnel(150)

Example 8-3 shows the results of polling the ifDescr table for indexes 44, 45, and 46 that correspond to ifType 150—mplsTunnel. As you can see from the highlighted output in Example 8-3, the ifDescr for these indices shows tunnel interfaces.

Example 8-3 Polling ifDescr for Indexes 44, 45, and 46 Shows Tunnel Interfaces

linux1> snmpget 7.1.5.4 public interfaces.iftable.ifentry.ifdescr.44 (ifDescr)

interfaces.ifTable.ifEntry.ifDescr.44 = Tunnel1

linux1> snmpget 7.1.5.4 public interfaces.iftable.ifentry.ifdescr.45 (ifDescr)

interfaces.ifTable.ifEntry.ifDescr.45 = Tunnel2

linux1> snmpget 7.1.5.4 public interfaces.iftable.ifentry.ifdescr.46 (ifDescr)

interfaces.ifTable.ifEntry.ifDescr.46 = Tunnel3

Table 8-1 shows the organization of the MPLS interface configuration table for each mplsInterfaceConfEntry.

Table 8-1. mplsInterfaceConfEntry Organization
Object Syntax Access Description
mplsInterfaceConfIndex InterfaceIndex OrZero not-accessible This field is meaningful only if it is nonzero. A nonzero value corresponds to the interface's ifIndex value.
mplsInterfaceLabelMinIn MplsLabel read-only Minimum value that the LSR can receive on this interface.
mplsInterfaceLabelMaxIn MplsLabel read-only Maximum value that the LSR can receive on this interface.
mplsInterfaceLabelMinOut MplsLabel read-only Minimum label value that the LSR sends out this interface.
mplsInterfaceLabelMaxOut MplsLabel read-only Maximum label value that the LSR sends out this interface.
mplsInterfaceTotalBandwidth MplsBitRate read-only Total bandwidth in Kbps for this interface.
mplsInterfaceAvailableBandwidth MplsBitRate read-only Available bandwidth in Kbps for this interface.
mplsInterfaceLabelParticipation Type Perplatform (0), PerInterface (1) read-only Indicates the label space for this interface.
mplsInterfaceConfStorageType StorageType read-only Storage type for this entry.

It should be noted that polling for parameters such as minimum and maximum label values should result in the same values for all interfaces that use per-platform label space. This is because the minimum and maximum labels that an LSR uses are controlled globally for all interfaces that don't use per-interface label scoping. This can be seen in the highlighted output of Example 8-4.

Example 8-4 Polling the MinIn, MaxIn, MinOut, and MaxOut Variables of the MPLS Interface Configuration Table

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.1.1.2

  (mplsInterfaceLabelMinIn)

96.1.1.1.2.2 =  Gauge: 2

96.1.1.1.2.3 =  Gauge: 2

96.1.1.1.2.4 =  Gauge: 2

96.1.1.1.2.7 =  Gauge: 2

96.1.1.1.2.8 =  Gauge: 2

96.1.1.1.2.15 = Gauge: 2

96.1.1.1.2.45 = Gauge: 2

96.1.1.1.2.46 = Gauge: 2

96.1.1.1.2.48 = Gauge: 2

___________________________________________________________________________

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.1.1.3

  (mplsInterfaceLabelMaxIn)

96.1.1.1.3.2 =  Gauge: 12500

96.1.1.1.3.3 =  Gauge: 12500

96.1.1.1.3.4 =  Gauge: 12500

96.1.1.1.3.7 =  Gauge: 12500

96.1.1.1.3.8 =  Gauge: 12500

96.1.1.1.3.15 = Gauge: 12500

96.1.1.1.3.45 = Gauge: 12500

96.1.1.1.3.46 = Gauge: 12500

96.1.1.1.3.48 = Gauge: 12500

__________________________________________________________________________

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.1.1.4

  (mplsInterfaceLabelMinOut)

96.1.1.1.4.2 =  Gauge: 2

96.1.1.1.4.3 =  Gauge: 2

96.1.1.1.4.4 =  Gauge: 2

96.1.1.1.4.7 =  Gauge: 2

96.1.1.1.4.8 =  Gauge: 2

96.1.1.1.4.15 = Gauge: 2

96.1.1.1.4.45 = Gauge: 2

96.1.1.1.4.46 = Gauge: 2

96.1.1.1.4.48 = Gauge: 2

__________________________________________________________________________

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.1.1.5

  (mplsInterfaceLabelMaxOut)

96.1.1.1.5.2 =  Gauge: 12500

96.1.1.1.5.3 =  Gauge: 12500

96.1.1.1.5.4 =  Gauge: 12500

96.1.1.1.5.7 =  Gauge: 12500

96.1.1.1.5.8 =  Gauge: 12500

96.1.1.1.5.15 = Gauge: 12500

96.1.1.1.5.45 = Gauge: 12500

96.1.1.1.5.46 = Gauge: 12500

96.1.1.1.5.48 = Gauge: 12500

Note that the last numbers in each line of the numerical OID string in the output—the 2, 3, 4, 7, 8, 15, 45, 46, and 48 that follow 96.1.1.1.5, for example—correspond to the ifIndex of interfaces on the router 12008a. You can poll the ifDescr corresponding to a specific interface if you are interested in finding out which interface has an mplsInterfaceLabelMaxOut value of 12500. For example, ifIndex 8, corresponding to POS2/1 on 12008a, is shown in Example 8-5.

Example 8-5 ifDescr of Interface POS2/1

linux1>snmpget 7.1.5.5 public interfaces.iftable.ifentry.ifdescr.8 (ifDescr)

interfaces.ifTable.ifEntry.ifDescr.8 = POS2/1

Interface Performance Table (mplsInterfacePerfTable)

As mentioned earlier, the mplsInterfacePerfTable has objects to measure MPLS perform-ance on a per-interface basis. Table 8-2 shows the organization of each entry within the table.

Table 8-2. mplsInterfacePerfTable Organization
Object Syntax Access Description
mplsInterfaceInLabelsUsed Gauge32 read-only This counter provides a count of the number of incoming labels currently in use for the interface.
mplsInterfaceFailedLabelLookup Counter32 read-only This counter is incremented when a labeled packet enters this interface, but no match is found in the LFIB for the label.
mplsInterfaceOutLabelsUsed Gauge32 read-only This counter provides the number of top-level labels outbound on this interface.
mplsInterfaceOutFragments Counter32 read-only This counter counts the number of outgoing MPLS packets that required fragmentation before transmission on this interface.
mplsInterfaceLabelMaxOut MplsLabel read-only Maximum label value that the LSR sends out this interface.
mplsInterfaceTotalBandwidth MplsBitRate read-only Total bandwidth in kbps for this interface.

Example 8-6 shows the 12008a being polled for mplsInterfaceInLabelsUsed. This variable is a count of how many labels to expect on a given interface. Because 12008a is using global label space, it is legal to receive a labeled packet with any of the 26 labels on each interface. As a result, polling this variable produces the same result on every interface. This can be observed in the highlighted text of Example 8-6.

Example 8-6 Polling the mplsInterfaceInLabelsUsed Variable on 12008a

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.2.1.1

  (mplsInterfaceInLabelsUsed)

96.1.2.1.1.2 =  Gauge: 26

96.1.2.1.1.3 =  Gauge: 26

96.1.2.1.1.4 =  Gauge: 26

96.1.2.1.1.7 =  Gauge: 26

96.1.2.1.1.8 =  Gauge: 26

96.1.2.1.1.15 = Gauge: 26

96.1.2.1.1.45 = Gauge: 26

96.1.2.1.1.46 = Gauge: 26

96.1.2.1.1.48 = Gauge: 26

InSegment Table (mplsInSegmentTable)

As mentioned earlier in this chapter, from an LSR's point of view, an LSP consists of InSegments and OutSegments. InSegment is the segment of the LSP that is ingress to the LSR, and OutSegment is egress from the LSR. The LSR MIB has provisions to create and view these segments. Like other tables, the InSegmentTable has entries. Table 8-3 shows the organization of each mplsInSegmentEntry in the table.

Table 8-3. mplsInSegmentEntry Organization
Object Syntax Access Description
mplsInSegmentIfIndex InterfaceIndexOrZero accessible-for-notify A nonzero number represents the index into the mplsInSegmentTable. A 0 value represents the incoming label value for per-platform label space.
mplsInSegmentLabel MplsLabel accessible-for-notify The incoming label for this segment (IPv4 is indicated by a 1).
mplsInSegmentNPop Integer32 read-create The number of labels to pop from the incoming segment.
mplsInSegmentAddrFamily AddressFamilyNumbers read-create The IANA address family of the incoming packet (IPv4 is indicated by a 1).
mplsInSegmentXCIndex Integer32 read-only The index into the mplsXCTable (Cross Connect Table).
mplsInSegmentOwner MplsObject Owner read-create A placeholder to store the creator of this segment. If it is not set, it defaults to unknown.
mplsInSegmentTrafficParamPtr RowPointer read-create A pointer to a traffic parameter table entry (set to the default 0.0) because it is not supported.
mplsInSegmentRowStatus RowStatus read-create Used to create a row in the table.
mplsInSegmentStorageType StorageType read-create Indicates the storage type.

In Table 8-3's Access column for the variables mplsInSegmentIfIndex and mplsInSegmentLabel, notice that the access is accessible-for-notify. This means that these variables are used only in the traps mplsXCUp and mplsXCDown and cannot be polled. Also note that both the mplsXCUp and mplsXCDown traps currently are not supported on the Cisco routers. So, you will never see a value for those variables when you poll the mplsInSegment table.

Example 8-7 shows the output after the mplsInSegmentNPop of the InSegment table is polled.

NOTE

The output from snmpwalk for each of the InSegment table variables polled actually produces 26 rows. Only the first three are shown to keep it concise. There are 26 rows because if you remember from Example 8-6, each interface can expect 26 different labels on an incoming packet.


Example 8-7 Polling the mplsInSegmentNPop Variable of the InSegment Table

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.3.1.3.3 (mplsInSegmentNPop)

96.1.3.1.3.3.12304 = 1

96.1.3.1.3.3.12306 = 1

96.1.3.1.3.3.12307 = 1

The value of mplsInSegmentNPop is 1 for all labels because the router being polled (12008a) is a midpoint router and is expected to pop just one label.

Example 8-8 shows the output after the mplsInSegmentAddrFamily variable is polled.

Example 8-8 Polling the mplsInSegmentAddrFamily Variable of the InSegment Table

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.3.1.4.3

  (mplsInSegmentAddrFamily)

96.1.3.1.4.3.12304 = 1

96.1.3.1.4.3.12306 = 1

96.1.3.1.4.3.12307 = 1

The IANA Address Family Numbers MIB defines the address family numbers, as demonstrated in Example 8-9.

Example 8-9 IANA Definition of Address Families

AddressFamilyNumbers ::= TEXTUAL-CONVENTION



      STATUS       current

      DESCRIPTION

          "The definition of this textual convention with the

          addition of newly assigned values is published

          periodically by the IANA, in either the Assigned

          Numbers RFC, or some derivative of it specific to

          Internet Network Management number assignments.

          (The latest arrangements can be obtained by

          contacting the IANA.)



          The enumerations are described as:



          other(0),    -- none of the following

          ipV4(1),     -- IP Version 4

As you can see from the highlighted output of Examples 8-8 and 8-9, the 1 in Example 8-8 corresponds to the IPv4 address family shown in Example 8-9.

mplsInSegmentXCIndex is the index into mplsXCTable (cross-connect table). Example 8-10 shows the output of polling this variable.

Example 8-10 Polling the mplsInSegmentXCIndex Variable of the InSegment Table

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.3.1.5.3

  (mplsInSegmentXCIndex)

96.1.3.1.5.3.12304 = 1414595812

96.1.3.1.5.3.12306 = 1414588772

96.1.3.1.5.3.12307 = 1414586308

Example 8-11 provides the output of polling the mplsInSegmentOwner variable of the InSegment table.

Example 8-11 Polling the mplsInSegmentOwner Variable of the InSegment Table

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.3.1.6.3 (mplsInSegmentOwner)

96.1.3.1.6.3.12304 = 1

96.1.3.1.6.3.12306 = 1

96.1.3.1.6.3.12307 = 1

Example 8-12 shows the definition of mplsInSegmentOwner.

Example 8-12 mplsInSegmentOwner Definition

MplsObjectOwner ::= TEXTUAL-CONVENTION

   STATUS      current

   DESCRIPTION

           "The entity which owns the object in question."

   SYNTAX   INTEGER {

                other(1),

                snmp(2),

                ldp(3)

As you can see from the output in Examples 8-11 and 8-12, the segment owner is "other." Cisco IOS Software currently sets the owner field to "other."

Coverage of mplsInSegmentTrafficParamPtr is omitted here because the Cisco implementation currently does not support the label stack and traffic parameter tables. mplsInSegmentRowStatus also is not currently supported for the creation of InSegments using SNMP. However, it can be polled using the syntax shown in Example 8-13.

Example 8-13 Polling the mplsInSegmentRowStatus Variable

linux1>snmpwalk -t 500 7.1.5.5. public .1.3.6.1.3.96.1.3.1.8.3

  (mplsInSegmentRowStatus)

96.1.3.1.8.3.12304 = 1

96.1.3.1.8.3.12306 = 1

96.1.3.1.8.3.12307 =1

A value of 1 represents "active."

InSegment Performance Table (mplsInSegmentPerfTable)

The mplsInSegmentPerfTable contains mplsInSegmentPerfEntry elements—one per interface. Table 8-4 shows the organization of mplsInSegmentPerfEntry.

Table 8-4. mplsInSegmentPerfEntry Organization
Object Syntax Access Description
mplsInSegmentOctets Counter32 read-only Bytes received on this input segment.
mplsInSegmentPackets Counter32 not-implemented Number of packets received on this input segment. Note that this is currently not implemented in Cisco IOS Software.
mplsInSegmentErrors Counter32 not-implemented Number of packets received with errors on this segment. Not currently implemented in Cisco IOS Software.
mplsInSegmentDiscards Counter32 not-implemented Number of packets received on this segment that were discarded even though there were no errors. Not currently implemented in Cisco IOS Software.
mplsInSegmentPerf DiscontinuityTime TimeStamp read-only Currently set to 0 in Cisco IOS Software.

It is particularly useful to obtain the "Bytes tag switched" information to see if the packets are being MPLS switched, as demonstrated in Example 8-14.

Example 8-14 Determining Whether Packets Are Being "Bytes Tag Switched"

mpls-12008a#show mpls forwarding 12.12.12.12

Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop

tag    tag or VC   or Tunnel Id      switched   interface

12318  12322       12.12.12.12/32    2347       PO1/0      point2point

You can obtain the same information through SNMP by polling the mplsInSegmentOctets variable for ifIndex 3 (POS1/0), as shown in Example 8-15.

Example 8-15 Polling the mplsInSegmentOctets Variable

linux1>snmpget -t 500 7.1.5.5 public .1.3.6.1.3.96.1.4.1.1.3.12318

 (mplsInSegmentOctets)

96.1.4.1.1.3.12318 = 2347

OutSegment Table (mplsOutSegmentTable)

The OutSegment table is similar to the InSegment table, except that it is the egress portion of the LSP. The objects contained in each mplsOutSegmentEntry are as shown in Table 8-5.

Table 8-5. mplsOutSegmentEntry Organization
Object Syntax Access Description
mplsOutSegment Index Unsigned 32 not-accessible An instance of mplsOutSegmentEntry can be created using SNMP via an NMS. The value of this variable indicates which row is being created.
mplsOutSegmentIf Index Interface IndexOr Zero read-create The interface index of the outgoing interface.
mplsOutSegment PushTopLabel Truth Value read-create If the value of this variable is set to true, the top label in the packet is pushed.
mplsOutSegmentTopLabel Mpls Label read-create Holds the label value that needs to be pushed on the stack if the PushTopLabel is set to true.
mplsOutSegment NextHopIpAddrType Inet Address Type read-create If the value of this variable is 1, the next-hop IP address is IPv4. A value of 2 indicates an IPv6 address.
mplsOutSegment NextHopIpv4Addr Inet Address IPv4 read-create The variable that holds the IPv4 address of the next hop if the NextHopIpAddrType is set to 1.
mplsOutSegment NextHopIpv6Addr Inet Address IPv6 read-create The variable that holds the IPv6 address of the next hop if the NextHopIpAddrType is set to 2.
mplsOutSegmentXC Index Unsigned32 read-only The index into the cross-connect table that identifies this segment.
mplsOutSegment Owner Mpls Initial Creation Source read-create Who is responsible for creating this Out Segment. 1 means other, 2 means snmp, 3 means ldp, 4 means rsvp, 5 means crldp, 6 means policyAgent, and 7 means unknown.
mplsOutSegment TrafficParamPtr Row Pointer read-create A pointer to the traffic parameter specification for this out segment.

In the OutSegmentTable, the following objects are most interesting:

  • mplsOutSegmentPushTopLabel

  • mplsOutSegmentTopLabel

  • mplsOutSegmentNextHopIpAddrType

  • mplsOutSegmentNextHopIpAddr

The following sections explain these objects in greater detail.

mplsOutSegmentPushTopLabel

Example 8-16 shows the output of polling the mplsOutSegmentPushTopLabel variable.

Example 8-16 Polling the mplsOutSegmentPushTopLabel Variable

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.6.1.3

  (mplsOutSegmentPushTopLabel)

96.1.6.1.3.1414586308 = 2

96.1.6.1.3.1414586484 = 2

96.1.6.1.3.1414586660 = 2

SNMPv2-MIB-V1SMI.my defines true and false, as shown in Example 8-17.

Example 8-17 Definitions of True and False Values Used in MIBs

SYNTAX TruthValue

--    Rsyntax INTEGER {

--        true(1),

--        false(2)

--        }

Because Example 8-16 produced the value 2 (false), no top labels need to be pushed onto the stack.

mplsOutSegmentTopLabel

If mplsOutSegmentPushTopLabel is true, this represents the label that should be pushed onto the top of the outgoing packet's label stack. Example 8-18 provides an snmpwalk that reveals the top label values.

Example 8-18 Polling the mplsOutSegmentTopLabel Variable

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.6.1.4

  (mplsOutSegmentTopLabel)

96.1.6.1.4.1414586308 = Gauge: 3

96.1.6.1.4.1414586484 = Gauge: 12304

96.1.6.1.4.1414586660 = Gauge: 3

96.1.6.1.4.1414586836 = Gauge: 3

96.1.6.1.4.1414587012 = Gauge: 12321

96.1.6.1.4.1414587188 = Gauge: 12320

96.1.6.1.4.1414587364 = Gauge: 3

mplsOutSegmentNextHopIpAddrType

The IP address type can assume values IPv4 or IPv6. Currently, only IPv4 is supported. Example 8-19 shows the output of snmpwalk polling mplsOutSegmentNextHopIpAddrType.

Example 8-19 Polling the mplsOutSegmentNextHopIpAddrType Variable

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.6.1.5

  (mplsOutSegmentNextHopIpAddrType)

96.1.6.1.5.1414586308 = 1

96.1.6.1.5.1414586484 = 1

96.1.6.1.5.1414586660 = 1

The value 1 represents IPv4.

mplsOutSegmentNextHopIpAddr

This contains the IPv4 address of the next hop. Example 8-20 shows the output of snmpwalk on this variable.

Example 8-20 Polling the mplsOutSegmentNextHopIpAddr Variable

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.6.1.6

  (mplsOutSegmentNextHopIpAddr)

96.1.6.1.6.1414586308 = "0000"

96.1.6.1.6.1414586484 = "0000"

96.1.6.1.6.1414586660 = "0000"

The NextHopIpAddr is set to 0 because the next hop is over a point-to-point (p2p) link.

OutSegment Performance Table (mplsOutSegmentPerfTable)

This is similar to the InSegmentPerfTable. It provides statistics about the outgoing segment. The mplsOutSegmentPerfTable contains mplsOutSegmentPerfEntry, which is organized as shown in Table 8-6.

Table 8-6. mplsOutSegmentPerfEntry Organization
Object Syntax Access Description
mplsOutSegmentOctets Counter32 read-only The total number of bytes sent out on this segment.
mplsOutSegmentPackets Counter32 read-only The total number of packets sent out on this segment. This is not currently supported in Cisco IOS software.
mplsOutSegmentErrors Counter32 read-only Packets that were received with an error. Also not supported by Cisco IOS.
mplsOutSegmentDiscards Counter32 read-only Packets received without error that were discarded. This is another variable that is not supported in Cisco IOS.
mplsOutSegmentHCOctets Counter64 read-only Number of octets sent out on this segment. This is similar to mplsOutSegmentOctets but is used when a 32-bit counter is not enough.
mplsOutSegmentPerf DiscontinuityTime TimeStamp read-only sysUpTime value when this segment's counter suffers a discontinuity.

mplsOutSegmentOctets is a useful variable. Example 8-21 shows the output of polling mplsOutSegmentOctets.

Example 8-21 Polling the mplsOutSegmentOctets Variable

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.7.1 (mplsOutSegmentOctets)

96.1.7.1.1.1414590708 = 0

96.1.7.1.1.1414590884 = 351615

96.1.7.1.1.1414591060 = 0

96.1.7.1.1.1414592820 = 66971

Cross-Connect Table (mplsXCTable)

The cross-connect table associates InSegments (labels) with OutSegments (labels). This table can be indexed using one of the following indices:

  • mplsXCIndex

  • mplsInSegmentIfIndex

  • mplsInSegmentLabel

  • mplsOutSegmentIndex

mplsXCTable contains mplsXCEntry. The organization of mplsXCEntry is shown in Table 8-7.

Table 8-7. mplsXCEntry Organization
Object Syntax Access Description
mplsXCIndex Unsigned32 not-accessible Index used to create an mplsXCEntry using an NMS.
mplsXCLspId MplsLSPID read-create The LSP that this cross-connect entry belongs to.
mplsXCLabelStackIndex Unsigned32 read-create Index into mplsLabel StackTable.
mplsXCIsPersistent TruthValue read-create If this is set to true, the in and out segments that correspond to this entry are restored automatically upon failure.
mplsXCOwner MplsInitialCreationSource read-create Holds the creator of the cross-connect entry.
mplsXCRowStatus RowStatus read-create Used to create, modify, or delete a cross-connect entry using an NMS.
mplsXCStorageType StorageType read-create Storage type for this object.
mplsXCAdminStatus up(1), down(2), testing(3) read-create Administrative status of the segment.
mplsXCOperStatus up(1), down(2), testing(3), unknown(4), dormant(5), notPresent(6), lowerLayerDown(7) read-only Operational status of the segment.

Consider the output shown in Example 8-22. It was produced using the CLI show mpls forwarding 12.12.12.12.

Example 8-22 show mpls forwarding 12.12.12.12 on 7200a

mpls-12008a#show mpls forwarding-table 10.0.22.0

Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop

tag    tag or VC   or Tunnel Id      switched   interface

12311  Pop tag     10.0.22.0/24      0          POS0/0      point2point

As you can see from Example 8-22, the prefix 12.12.12.12 is going over interface POS 0/0. The local label is 12311.

Now, using snmpwalk, poll the mplsXCLspId variable in the cross-connect table and filter the output to include label 12311—the local label on 12008a. Example 8-23 uses the UNIX grep command to filter the output. You can do it any way you want, including visually sorting through the output to find label 12311!

Example 8-23 Filtering the Output of snmpwalk on the mplsXCLspId Variable to Find Label 12311

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.9.1.2 | grep 12311

96.1.9.1.2.1414584372.2.12311.1414584372 =  Hex: 0A 00 16 00

96.1.9.1.2.1414584372.3.12311.1414584372 =  Hex: 0A 00 16 00

96.1.9.1.2.1414584372.4.12311.1414584372 =  Hex: 0A 00 16 00

96.1.9.1.2.1414584372.7.12311.1414584372 =  Hex: 0A 00 16 00

96.1.9.1.2.1414584372.8.12311.1414584372 =  Hex: 0A 00 16 00

96.1.9.1.2.1414584372.15.12311.1414584372 =  Hex: 0A 00 16 00

96.1.9.1.2.1414584372.45.12311.1414584372 =  Hex: 0A 00 16 00

96.1.9.1.2.1414584372.46.12311.1414584372 =  Hex: 0A 00 16 00

96.1.9.1.2.1414584372.48.12311.1414584372 =  Hex: 0A 00 16 00

The LSP ID is 0A 00 16 00, which is hex for 10.0.22.0. From the highlighted output, you can see that the ifIndex for the outgoing interface for 10.0.22.0 is 2. You can check which interface ifIndex 2 corresponds to, as shown in Example 8-24.

Example 8-24 Obtaining the Interface from ifIndex

linux1>snmpwalk -t 500 7.1.5.5 public interfaces.iftable.ifentry.ifdescr

interfaces.ifTable.ifEntry.ifDescr.1 = Ethernet0

interfaces.ifTable.ifEntry.ifDescr.2 = POS0/0

Next you can find out what is the outgoing label on that interface by polling mplsOutSegmentTopLabel using the cross-connect index 1414584372, obtained from Example 8-23, as shown in Example 8-25.

Example 8-25 Polling the mplsOutSegmentTopLabel Variable to Obtain the OutLabel for 10.0.22.0

linux1>snmpwalk -t 500 7.1.5.5 public .1.3.6.1.3.96.1.6.1.4.1414584372

  (mplsOutSegmentTopLabel)

96.1.6.1.4.1414584724 = Gauge: 3

It yields label 3—POP. Examples 8-23 through 8-25 demonstrated how you can obtain all the information contained in Example 8-22 using SNMP.

This concludes the discussion of the LSR MIB. The next section describes the MPLS TE MIB.

    Previous Section  < Free Open Study >  Next Section