The MPLS WG Archive

Cell Relay Retreat>MPLS WG Archive>month:2003-Apr> msg00113



[Date Prev][Date Next][Thread Prev][Thread Next]  
  [Date Index][Thread Index][Author Index][Subject Index]

LDP MIB, version 9 outstanding issue

  • From: "Thomas D. Nadeau" <tnadeau@cisco.com>
  • Date: Sun, 13 Apr 2003 23:47:24 -0400
  • Cc: nj@dataconnection.com, hans@ipunplugged.com, james_luciani@mindspring.com, riza.cetin@alcatel.be, jcucchiara@artel.com, jcucchiara@mindspring.com

At 05:53 PM 4/13/2003 -0400, jcucchiara@mindspring.com wrote:

>Hello Everyone,
>
> From the Atlanta MPLS MIB meeting there was an outstanding issue
>as described by the "MPLS MIB review meeting minutes" posted
>to the mpls working group on Dec 03, 2002.  This issue
>had to do with the change from version 8 of the MIB to
>version 9.
>
>Version 8 of the MIB had 3 Mapping tables, from an LDP LSP
>to either an InSegment/OutSegment/XCSegment in the LSR-MIB.
>
>Version 9 reduces this to 1 table and uses RowPointers.
>
>The motivation for doing this was to reduce the number of
>objects.  However, it turns out that this table is lacking
>because the indexing will not be unique under certain
>circumstances.  This was very well documented in email
>by Neil Jerram on Nov 15, 2002 "RE: Questions on LDP MIB v9".
>This is repeated here for your convenience:
>
>   "Here is a concrete example of the problem.  LSR A and LSR B each
>    distribute a label to each other, and by chance they use the same
>    label value, 67.  So in LSR A's mplsLdpLspTable, the label that A
>    distributed to B has index:
>
>      mplsLdpEntityLdpId      AA AA AA AA 00 01
>      mplsLdpEntityIndex      1
>      mplsLdpPeerLdpId        BB BB BB BB 00 01
>      mplsLdpLspIfIndex       1
>      mplsLdpLspLabel         67
>
>    The label that A received from B has index:
>
>      mplsLdpEntityLdpId      AA AA AA AA 00 01
>      mplsLdpEntityIndex      1
>      mplsLdpPeerLdpId        BB BB BB BB 00 01
>      mplsLdpLspIfIndex       1
>      mplsLdpLspLabel         67
>
>    Which is exactly the same.  So the mplsLdpLspTable can't hold
>    represent both of these labels at once."
>
>Please note, the next version of the MIB will
>not have the mplsLdpLspTable.  Neil has proposed a solution
>which is very detailed in that email (and repeated
>at the end of this email).  I would like to incorporate his
>these tables (or revised versions of these tables)
>into the next version of the MIB.
>
>Does anyone have any objections with this change?

         I think the only other point made during the
meeting was to make these tables optional in the
conformance.

         --Tom


>    Thanks, Joan
>
>Quoting from Neil's email dated Nov 15th to the mpls@uu.net:
>
>"Key points of my proposal are as follows.
>
>- The new tables are:
>
>   - mplsLdpUpLabelTable, describing labels distributed to upstream peers
>
>   - mplsLdpDownLabelTable, describing labels received from downstream
>     peers, including liberally retained and null labels.
>
>- Like the tables that they replace in LDP MIB v9, these tables use
>   RowPointers to point to LIB information in the LSR MIB.  They don't
>   unnecessarily duplicate any information that can be obtained from
>   the LSR MIB.
>
>- Advantages in comparison with LDB MIB v9 are that:
>
>   - mplsLdpDownLabelTable can show both established and liberally
>     retained labels, and has a flag to indicate which labels are which
>
>   - mplsLdpDownLabelTable can show multiple label mappings received
>     from the same peer, for the same FEC, and with the same label
>     value (this is most relevant for implicit and explicit null
>     labels, but can also occur in some networks with non-null label
>     values)
>
>   - mplsLdpUpLabelTable and mplsLdpDownLabelTable can show a
>     distributed label and a received label that share the same
>     session, FEC and label value.
>
>- mplsLdpUpLabelTable has a RowPointer to an mplsLdpDownLabelTable
>   entry that can be used to show how upstream and downstream mappings
>   are connected.
>
>The full ASN.1 and a note on indexing are appended below.  Thank you
>very much for your time.
>
>      Neil
>
>
>Indexing
>========
>
>The tables are indexed by (LDP session, FEC index, LSP index), where:
>
>- LDP session is the usual (entity ldp id, entity index, peer ldp id)
>- FEC index is a non-predictable index into the mplsFecTable
>- LSP index is a non-predictable tie-breaker index for non-merging
>   LSPs for the same FEC.
>
>The key benefit of this indexing is that it permits the
>representation, for non-merging FECs, of the labels established by
>multiple Label Request - Label Mapping exchanges through an LSR, even
>when the labels distributed for different Label Requests are the same
>(usually implicit and explicit nulls).
>
>
>ASN.1
>=====
>
>      --
>      --  The MPLS LDP Upstream Label Table
>      --
>
>      mplsLdpUpLabelTable OBJECT-TYPE
>          SYNTAX      SEQUENCE OF MplsLdpUpLabelEntry
>          MAX-ACCESS  not-accessible
>          STATUS      current
>          DESCRIPTION
>              "A table mapping LDP sessions and FECs to the upstream
>              labels distributed for those sessions and FECs, and to
>              the corresponding LIB entries in the LSR MIB."
>          ::= { mplsLdpSessionObjects 6 }
>
>      mplsLdpUpLabelEntry OBJECT-TYPE
>          SYNTAX      MplsLdpUpLabelEntry
>          MAX-ACCESS  not-accessible
>          STATUS      current
>          DESCRIPTION
>              "An entry in this table represents a label that has been
>              distributed upstream for a particular session and FEC
>              combination.  It is indexed by the session's index triple
>              (mplsLdpEntityLdpId, mplsLdpEntityIndex,
>              mplsLdpPeerLdpId), the FEC index (mplsFecIndex) and an
>              LSP index (mplsLdpLspIndex) that distinguishes between
>              non-merging LSPs for the same FEC.
>
>              The information contained in a row is read-only."
>          INDEX       { mplsLdpEntityLdpId,
>                        mplsLdpEntityIndex,
>                        mplsLdpPeerLdpId,
>                        mplsFecIndex,
>                        mplsLdpLspIndex
>                      }
>          ::= { mplsLdpUpLabelTable 1 }
>
>      MplsLdpUpLabelEntry ::= SEQUENCE {
>          mplsLdpUpLabel                  MplsLabel,
>          mplsLdpUpLabelType              MplsLdpLabelType,
>          mplsLdpUpLspType                MplsLspType,
>          mplsLdpUpDownLabelPointer       RowPointer,
>          mplsLdpUpLsrInSegmentPointer    RowPointer,
>          mplsLdpUpLsrXCPointer           RowPointer
>      }
>
>      mplsLdpLspIndex OBJECT-TYPE
>          SYNTAX       Unsigned32
>          MAX-ACCESS   not-accessible
>          STATUS       current
>          DESCRIPTION
>              "A tie-breaker index that distinguishes between multiple
>               non-merging LSPs for the same FEC.
>
>               Where an LSR merges all LSPs for the same FEC, this
>               field is not needed and should always be zero.
>
>               Where an LSR does not merge LSPs for the same FEC, it is
>               possible for the LSR to distribute (or receive) multiple
>               label mappings for the same FEC to (or from) the same
>               session, and for some of these labels to be equal (in
>               particular where implicit and explicit null labels are
>               in use).  In this case, the entries that describe the
>               labels are distinguished from each other by using a
>               different, non-zero value for this index field."
>          ::= { mplsLdpUpLabelEntry 1 }
>
>      mplsLdpUpLabel OBJECT-TYPE
>          SYNTAX        MplsLabel
>          MAX-ACCESS    not-accessible
>          STATUS        current
>          DESCRIPTION
>              "The upstream label value."
>          ::= { mplsLdpUpLabelEntry 2 }
>
>      mplsLdpUpLabelType  OBJECT-TYPE
>          SYNTAX        MplsLdpLabelType
>          MAX-ACCESS    read-only
>          STATUS        current
>          DESCRIPTION
>              "The Layer 2 upstream label type."
>          ::= { mplsLdpUpLabelEntry 3 }
>
>      mplsLdpUpLspType OBJECT-TYPE
>          SYNTAX        MplsLspType
>          MAX-ACCESS    read-only
>          STATUS        current
>          DESCRIPTION
>              "The type of LSP connection for which this label is in
>              use.  The possible values are:
>
>                 unknown(1)         --  if the LSP is not known
>                                        to be one of the following.
>
>                terminatingLsp(2)   -- if the LSP terminates
>                                       on the LSR, then this
>                                       is an ingressing LSP
>                                       which ends on the LSR,
>
>                originatingLsp(3)   -- if the LSP originates
>                                       from the LSR, then this
>                                       is an egressing LSP which is
>                                       the head-end of the LSP,
>
>              crossConnectingLsp(4) -- if the LSP ingresses
>                                       and egresses on the LSR,
>                                       then it is cross-connecting
>                                       on that LSR."
>          ::= { mplsLdpUpLabelEntry 4 }
>
>      mplsLdpUpDownLabelPointer OBJECT-TYPE
>          SYNTAX      RowPointer
>          MAX-ACCESS  read-only
>          STATUS      current
>          DESCRIPTION
>              "If this label is cross-connected to a received LDP
>              downstream label mapping, this RowPointer should point to
>              the entry in the mplsLdpDownLabelTable that describes the
>              downstream label.
>
>              Otherwise this field's value is zeroDotzero."
>          ::= { mplsLdpUpLabelEntry 5 }
>
>      mplsLdpUpLsrInSegmentPointer OBJECT-TYPE
>          SYNTAX      RowPointer
>          MAX-ACCESS  read-only
>          STATUS      current
>          DESCRIPTION
>              "If this label has a corresponding entry in the LSR MIB
>              mplsInSegmentTable, this RowPointer should point to that
>              entry.
>
>              Otherwise this field's value is zeroDotzero."
>          ::= { mplsLdpUpLabelEntry 6 }
>
>      mplsLdpUpLsrXCPointer OBJECT-TYPE
>          SYNTAX      RowPointer
>          MAX-ACCESS  read-only
>          STATUS      current
>          DESCRIPTION
>              "If this label is cross-connected to a received LDP
>              downstream label mapping and there is an entry
>              describing this cross-connect in the LSR MIB mplsXCTable,
>              this RowPointer should point to that entry.
>
>              Otherwise this field's value is zeroDotzero."
>          ::= { mplsLdpUpLabelEntry 7 }
>
>
>      --
>      --  The MPLS LDP Downstream Label Table
>      --
>
>      mplsLdpDownLabelTable OBJECT-TYPE
>          SYNTAX      SEQUENCE OF MplsLdpDownLabelEntry
>          MAX-ACCESS  not-accessible
>          STATUS      current
>          DESCRIPTION
>              "A table mapping LDP sessions and FECs to the downstream
>              labels received for those sessions and FECs, and to the
>              corresponding LIB entries in the LSR MIB."
>          ::= { mplsLdpSessionObjects 6 }
>
>      mplsLdpDownLabelEntry OBJECT-TYPE
>          SYNTAX      MplsLdpDownLabelEntry
>          MAX-ACCESS  not-accessible
>          STATUS      current
>          DESCRIPTION
>              "An entry in this table represents a label that has been
>              received from a downstream peer for a particular session
>              and FEC combination.  It is indexed by the session's
>              index triple (mplsLdpEntityLdpId, mplsLdpEntityIndex,
>              mplsLdpPeerLdpId), the FEC index (mplsFecIndex) and an
>              LSP index (mplsLdpLspIndex) that distinguishes between
>              non-merging LSPs for the same FEC.
>
>              The information contained in a row is read-only."
>          INDEX       { mplsLdpEntityLdpId,
>                        mplsLdpEntityIndex,
>                        mplsLdpPeerLdpId,
>                        mplsFecIndex,
>                        mplsLdpLspIndex
>                      }
>          ::= { mplsLdpDownLabelTable 1 }
>
>      MplsLdpDownLabelEntry ::= SEQUENCE {
>          mplsLdpDownLabel                  MplsLabel,
>          mplsLdpDownLabelType              MplsLdpLabelType,
>          mplsLdpDownLspType                MplsLspType,
>          mplsLdpDownLiberal                TruthValue,
>          mplsLdpDownLsrOutSegmentPointer   RowPointer,
>          mplsLdpDownLsrXCPointer           RowPointer
>      }
>
>      mplsLdpDownLabel OBJECT-TYPE
>          SYNTAX        MplsLabel
>          MAX-ACCESS    not-accessible
>          STATUS        current
>          DESCRIPTION
>              "The downstream label value."
>          ::= { mplsLdpDownLabelEntry 1 }
>
>      mplsLdpDownLabelType  OBJECT-TYPE
>          SYNTAX        MplsLdpLabelType
>          MAX-ACCESS    read-only
>          STATUS        current
>          DESCRIPTION
>              "The Layer 2 downstream label type."
>          ::= { mplsLdpDownLabelEntry 2 }
>
>      mplsLdpDownLspType OBJECT-TYPE
>          SYNTAX        MplsLspType
>          MAX-ACCESS    read-only
>          STATUS        current
>          DESCRIPTION
>              "The type of LSP connection for which this label is in
>              use.  The possible values are:
>
>                 unknown(1)         --  if the LSP is not known
>                                        to be one of the following.
>
>                terminatingLsp(2)   -- if the LSP terminates
>                                       on the LSR, then this
>                                       is an ingressing LSP
>                                       which ends on the LSR,
>
>                originatingLsp(3)   -- if the LSP originates
>                                       from the LSR, then this
>                                       is an egressing LSP which is
>                                       the head-end of the LSP,
>
>              crossConnectingLsp(4) -- if the LSP ingresses
>                                       and egresses on the LSR,
>                                       then it is cross-connecting
>                                       on that LSR."
>          ::= { mplsLdpDownLabelEntry 3 }
>
>      mplsLdpDownLiberal OBJECT-TYPE
>          SYNTAX      TruthValue
>          MAX-ACCESS  read-only
>          STATUS      current
>          DESCRIPTION
>              "Whether this is a liberally retained downstream label."
>          DEFVAL { false }
>          ::= { mplsLdpDownLabelEntry 4 }
>
>      mplsLdpDownLsrOutSegmentPointer OBJECT-TYPE
>          SYNTAX      RowPointer
>          MAX-ACCESS  read-only
>          STATUS      current
>          DESCRIPTION
>              "If this label has a corresponding entry in the LSR MIB
>              mplsOutSegmentTable, this RowPointer should point to that
>              entry.
>
>              Otherwise this field's value is zeroDotzero."
>          ::= { mplsLdpDownLabelEntry 5 }
>
>      mplsLdpDownLsrXCPointer OBJECT-TYPE
>          SYNTAX      RowPointer
>          MAX-ACCESS  read-only
>          STATUS      current
>          DESCRIPTION
>              "If this label is cross-connected to a distributed LDP
>              upstream label mapping and there is an entry describing
>              this cross-connect in the LSR MIB mplsXCTable, this
>              RowPointer should point to that entry.
>
>              Otherwise this field's value is zeroDotzero."
>          ::= { mplsLdpDownLabelEntry 6 }"


http://www.elsevier-international.com/catalogue/title.cfm?ISBN=155860751X