Subject: LDP-MIB extensions

From: [email-masked]
Date: Mon, 25 Nov 2002 20:34:30 +0100

Hi everybody,

Attached text file listing the comments on the LDP-MIB and proposal for
the extensions. Note that most of the extension/changes have been
discussed during Saturday's (the day before IETF) MPLS-MIB review
meeting and found very useful.

Please provide your feedback before Joan includes them in the LDP-MIB
draft.

Thanks, Riza.

-- ***********************************
-- LDP-MIB Comments
-- ***********************************

Scalar object:

1. Add EgressLabelType (explicitNull, implicitNull) object.

Entity Table:

1. Configuration to "Accept Targetted Hellos" or
   "Send Targetted Hellos".
   RFC3036: "Targeted Session is asymmetric and
   unidirectional."
2. Add HelloInterval (read-create) object.
3. Add KeepAliveInterval  (read-create) object.
4. Add TransportAddress object to allow configuration
   of own transort address.

PeerTable:

1. Add Transport Address of Peer (read-only) object.
2. Add to Peer Type (read-only) object.

HelloAdjTable:

1. Add Negotiated HelloAdjNegotiatedHoldTime (read-only)
   object.
2. Add Hello Adj Interval Timer (read-only) object.

LdpSessionTable:

1. Add Negotiated Keep Alive Time (read-only) object.
2. Add Keep Alive Interval Time (read-only) object.
3. Add InitRole - active or passive (read-only) object.

LdpLspTable:

1. InterfaceIndexOrZero.

GenericLabelRangeTable:

1. IfIndex 0 should refer to the global label space.

-- ***********************************
-- LDP-MIB Extensions PROPOSAL
-- ***********************************

-- ***********************************
-- Scalar objects
-- ***********************************

   mplsLdpEgressLabelType       OBJECT-TYPE
   SYNTAX                       INTEGER {
                                         explicitNull (1),
                                         implicitNull (2)
                                        }
   MAX-ACCESS                   read-write
   STATUS                       current
   DESCRIPTION
      "LDP Egress Label Type.
           
       This object specifies the type of label to be advertised 
       by the LSR for FECs for which it is configured as the 
       Egress node.

       A value of explicitNull (1) for this object specifies 
       that a value of 0 will be advertised as the label.

       A value of implicitNull (2) for this object specifies 
       that a value of 3 will be advertised as the label. 

       Any modification of this object will result in the 
       withdrawal and re-advertisement of all FECs for which the
       node is egress."
   DEFVAL { implicitNull }
   ::= { mplsLdp xxx }

-- ***********************************
-- LDP Entity Table Extensions
-- ***********************************

   mplsLdpEntityEntry          ::= SEQUENCE {
        .......................
        mplsLdpEntityHelloInterval   Integer32,
        mplsLdpEntityKaInterval      Integer32,
        mplsLdpEntityTransAddr       INTEGER
                                            }

   mplsLdpEntityHelloInterval  OBJECT-TYPE
   SYNTAX                      Integer32 (2..10)
   MAX-ACCESS                  read-create
   STATUS                      current
   DESCRIPTION
      "The interval after which a hello is transmitted
       as a fraction of the Hello Hold time negotiated.

       It is calculated as follows
       Hello Interval Time (Hello Tx Time)
	     = Hello Hold Time negotiated / Hello Interval."
   DEFVAL { 3 }
   ::= { mplsLdpEntityEntry x }

   mplsLdpEntityKaInterval    OBJECT-TYPE
   SYNTAX                     Integer32 (2..10)
   MAX-ACCESS                 read-create
   STATUS                     current
   DESCRIPTION
      "The interval after which a keepalive is transmitted as
       a fraction of the KeepAlive Hold Timer negotiated.

       It is calculated as follows
       KeepAlive Interval Time (KeepAlive Tx Time)
           = KeepAlive Hold Time negotiated / KeepAlive Interval."
   DEFVAL { 3 }
   ::= { mplsLdpEntityEntry x }

   mplsLdpEntityTransAddr    OBJECT-TYPE
   SYNTAX                    INTEGER {
                                     interface(1),
                                     loopback(2)
                                     }
   MAX-ACCESS                read-create
   STATUS                    current
   DESCRIPTION
      "This specifies whether loopback or interface address is to
       be used in the transport address TLV in the hello messages.
  
       If the value is set to interface(1), the IP address of
       the interface via which the hello message is sent will be used
       as the transport address in the hello message.
        
       If the value is set to loopback(2), the IP address of 
       loopback interface shall be used as the transport 
       address in the hello message.

       Note that any change in the status of the interface whose
       address is being used as transport address will result in 
       re-establishment of all sessions using this as transport 
       address."
   DEFVAL { loopback }
   ::= { mplsLdpEntityEntry x }

-- *********************************
-- LDP Peer Table Extensions
-- *********************************

   mplsLdpPeerEntry            ::= SEQUENCE {
        .......................
        mplsLdpPeerTransAddrType  AddressFamilyNumbers,
        mplsLdpPeerTransAddr      MplsLdpGenAddr,
        mplsLdpPeerType           INTEGER
                                            }

   mplsLdpPeerTransAddrType    OBJECT-TYPE
   SYNTAX                      AddressFamilyNumbers
   MAX-ACCESS                  read-only
   STATUS                      current
   DESCRIPTION
      "This specifies the transport address type advertised by the
       peer in hello message."
   ::= { mplsLdpPeerEntry x }

   mplsLdpPeerTransAddr        OBJECT-TYPE
   SYNTAX                      MplsLdpGenAddr
   MAX-ACCESS                  read-only
   STATUS                      current
   DESCRIPTION
      "This specifies the transport address advertised by the peer
       in the hello message."
   ::= { mplsLdpPeerEntry x }

   mplsLdpPeerType             OBJECT-TYPE
   SYNTAX                      INTEGER {
                                       link (1),
                                       targeted (2)
                                       }
   MAX-ACCESS                  read-only
   STATUS                      current
   DESCRIPTION
      "This value describes the connectivity of the peer."
   ::= { mplsLdpPeerEntry x }

-- ********************************************
-- LDP Hello Adjacency Table Extensions
-- ********************************************

   mplsLdpHelloAdjEntry        ::= SEQUENCE {
        .......................
        mplsLdpHelloAdjNegHoldTimer          Integer32,
	mplsLdpHelloAdjIntervalTimer         Integer32
                                            }

   mplsLdpHelloAdjNegHoldTimer  OBJECT-TYPE
   SYNTAX                       Integer32(1..65535)
   UNITS                        "seconds"
   MAX-ACCESS                   read-only
   STATUS                       current
   DESCRIPTION
      "This specifies the hello hold timer which is negotiated
       with the peer for this hello adjacency. 

       A value of 65535 denotes that hold timer is infinite and is
       not used."
   ::= { mplsLdpHelloAdjEntry x }

   mplsLdpHelloAdjIntervalTimer  OBJECT-TYPE
   SYNTAX                        Integer32(1..65535)
   UNITS                         "seconds"
   MAX-ACCESS                    read-only
   STATUS                        current
   DESCRIPTION
      "This specifies the hello transmission interval for this 
       adjacency. This is calculated from the negotiated Hello hold
       timer as follows.

       Hello Interval Time (Hello Tx Time) 
	     = Hello Hold Time negotiated / Hello Interval

       A value of 65535 denotes that hold interval timer is infinite 
       and is not used."
   ::= { mplsLdpHelloAdjEntry x }

-- *************************************
-- LDP Sessions Table Extensions
-- *************************************

   mplsLdpSessionEntry           ::= SEQUENCE {
        .........................
        mplsLdpSesNegKaTimer                   Integer32,
	mplsLdpSesKaIntervalTimer              Integer32,
	mplsLdpSesInitRole                     INTEGER
                                              }

   mplsLdpSesNegKaTimer          OBJECT-TYPE
   SYNTAX                        Integer32(1..65535)
   MAX-ACCESS                    read-only
   STATUS                        current
   DESCRIPTION
      "This specifies the KeepAlive Timer obtained from session
       negotiations with the peer."
   ::= { mplsLdpSessionEntry x }

   mplsLdpSesKaIntervalTimer     OBJECT-TYPE
   SYNTAX                        Integer32(1..65535)
   MAX-ACCESS                    read-only
   STATUS                        current
   DESCRIPTION
      "This specifies the KeepAlive Transmission timer being used 
       for this session. This is calculated from the negotiated 
       KeepAlive Hold Timer as follows

       KeepAlive Interval Time (KeepAlive Tx Time)
	      = KeepAlive Hold Time negotiated / KeepAlive Interval."
   ::= { mplsLdpSessionEntry x }

   mplsLdpSesInitRole            OBJECT-TYPE
   SYNTAX                        INTEGER {
                                         active(1),
		                         passive(2)
	                                 }
   MAX-ACCESS                    read-only
   STATUS                        current
   DESCRIPTION
      "This specifies the role played by the entity during the 
       session initialisation.
	
       A value of active(1) means that the entity initiates the 
       session.
	
       A value of passive(2) means that the entity waits for the 
       session initialisation message from the peer."
   ::= { mplsLdpSessionEntry x }

   END