Network Working Group                             Kireeti Kompella
Internet Draft                                    Juniper Networks
Expiration Date: August 2001 March 2002                          Yakov Rekhter
                                                  Juniper Networks
                                                     Alan Kullberg
                                                  NetPlane Systems

                 Signalling Unnumbered Links in CR-LDP

                   draft-ietf-mpls-crldp-unnum-01.txt

                   draft-ietf-mpls-crldp-unnum-02.txt

1. Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as ``work in progress.''

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

2. Abstract

   Current signalling used by MPLS TE doesn't provide support for
   unnumbered links.  This document defines procedures and extensions to
   CR-LDP, one of the MPLS TE signalling protocols, that are needed in
   order to support unnumbered links.

3. Overview

   Supporting MPLS TE over unnumbered links (i.e., links that do not
   have IP addresses) involves two components: (a) the ability to carry
   (TE) information about unnumbered links in IGP TE extensions (ISIS or
   OSPF), and (b) the ability to specify unnumbered links in MPLS TE
   signalling.  The former is covered in [ISIS-TE, OSPF-TE]. The focus
   of this document is on the latter.

   Current signalling used by MPLS TE doesn't provide support for
   unnumbered links because the current signalling doesn't provide a way
   to indicate an unnumbered link in its Explicit Route Objects.  This
   document proposes simple procedures and extensions that allow CR-LDP
   signalling [CR-LDP] to be used with unnumbered links.

4. Interface Identifiers

   Since unnumbered links are not identified by an IP address, then for
   the purpose of MPLS TE they need some other identifier.  We assume
   that each unnumbered link on a Label Switched Router (LSR) is given a
   unique 32-bit identifier.  The scope of this identifier is the LSR to
   which the link belongs; moreover, the IS-IS and/or OSPF and CR-LDP
   modules on an LSR must agree on interface identifiers.

   Note that links are directed, i.e., a link l is from some LSR A to
   some other LSR B.  LSR A chooses the interface identifier for link l.
   To be completely clear, we call this the "outgoing interface
   identifier from LSR A's point of view".  If there is a reverse link
   from LSR B to LSR A (for example, a point-to-point SONET interface
   connecting LSRs A and B would be represented as two links, one from A
   to B, and another from B to A), B chooses the outgoing interface
   identifier for the reverse link; we call this the link's "incoming
   interface identifier from A's point of view".  There is no a priori
   relationship between the two interface identifiers.

5. Unnumbered Forwarding Adjacencies

   If an LSR that originates an LSP advertises this LSP as an unnumbered
   Forwarding Adjacency in IS-IS or OSPF [LSP-HIER], (see [LSP-HIER]), or the LSR
   uses the Forwarding Adjacency formed by this LSP as an unnumbered
   component link of a bundled link (see [BUNDLE]), the LSR MUST
   allocate an interface ID identifier to that Forwarding Adjacency. Adjacency (just
   like for any other unnumbered link). Moreover, the
   REQUEST Request message
   used for establishing the LSP that forms the Forwarding Adjacency
   MUST contain an INTERFACE ID LSP_TUNNEL_INTERFACE_ID object (described below),
   with the LSR's Router ID set to the head end's
   router Router ID, and the
   Interface ID set to the LSP's interface ID.  If
   the LSP is part of a bundled link (see [BUNDLE]), identifier that the Interface ID is
   set LSR allocated
   to the component interface ID of the LSP. Forwarding Adjacency.

   If the LSP is bidirectional, and the tail-end LSR (of the forward
   LSP) advertises the reverse LSP as an unnumbered Forwarding
   Adjacency, the tail-end LSR MUST allocate an interface ID identifier to
   the reverse Forwarding Adjacency.  Furthermore, the MAPPING message
   for the LSP MUST contain an INTERFACE ID LSP_TUNNEL_INTERFACE_ID object, with the
   LSR's Router ID set to the tail end's router ID, and the Interface ID
   set to the
   reverse LSP's interface ID.  If the LSP is part of a bundled link
   (see [BUNDLE]), the Component Interface ID is set to the component interface ID of identifier allocated by the LSP; otherwise, it is set to zero. tail-end LSR.

5.1. INTERFACE ID LSP_TUNNEL_INTERFACE_ID Object

   The INTERFACE LSP_TUNNEL_INTERFACE ID object has Type to be determined by IETF
   consensus and length 8.  The format is given below.

   Figure 1: Interface ID TLV

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|0|            Type           |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        LSR's Router ID                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Interface ID (32 bits)                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   This object can optionally appear in either a REQUEST message or a
   MAPPING message.  In the former case, we call it the "Forward
   Interface ID" for that LSP; in the latter case, we call it the
   "Reverse Interface ID" for the LSP.

6. Signalling Unnumbered Links in EROs

   A new subobject of the Explicit Route Object (ERO) is used to specify
   unnumbered links.  This subobject has the following format:

   Figure 2: Unnumbered Interface ID Subobject

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|0|            Type           |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Router ID                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Interface ID (32 bits)                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   This subobject is strict.  The Type is 0x0805 (Unnumbered Interface
   ID) and the Length is 8.

6.1. Interpreting the Unnumbered Interface ID Subobject

   The Router ID (say X) is the router ID of the LSR P at the upstream
   end of the unnumbered link.

   The Interface ID (say I) is the outgoing interface identifier with respect to
   the LSR specified by the router ID.  If not, the receiving node MUST return an error message.

6.2. Validating

6.1. Processing the Unnumbered Interface ID Subobject

   First of all, the receiving node R LSR must validate that it received the
   Request message correctly. If the first subobject in the ERO is an
   Unnumbered Interface subobject, the check is done as follows.  R
   looks up in its Traffic Engineering database the node P corresponding
   to follows (for
   other types of ERO subobjects, the router ID X rules in [CR-LDP] apply).

   The IF_ID TLV ([GMPLS-SIG], [GMPLS-CRLDP]), if present in the ERO subobject.  It then checks that there
   is a link from P to R that carries
   message, MUST contain the same Interface Router ID (IP Address) as the one Router
   ID carried in the ERO subobject (I). Unnumbered Interface ID subobject. If this is not the case, R has received not, the message in error and SHOULD
   receiving LSR MUST return a "Bad Initial ER-Hop" error.

   For other types of ERO subobjects, the rules in [CR-LDP] apply.

6.3. Determining  If IF_ID TLV
   is present, and it carries the Link Identified by IF_INDEX TLV, the ERO

   Determining receiving LSR SHOULD
   check that the link for which label allocation must be done depends
   on whether a Component Interface Identifier object [BUNDLE] is
   present value carried in this TLV is the Request message or not.  If so, set ID to same as carried in
   the
   Component Interface ID; otherwise, set ID to I (the field of the Unnumbered Interface ID in subobject.  If
   the ERO subobject).  X value is (as above) different, the router ID in receiving LSR MUST return a  "Bad Initial
   ER-Hop" error.

   If the Unnumbered
   ERO subobject.

   First, R above checks are passes, the LSR checks whether the tuple <X,
   <Router ID, Interface ID> from the Unnumbered Interface subobject
   matches the tuple <LSR's
   Router <Router ID, Forward Interface ID> of any of the
   LSPs for which the
   node LSR is a tail-end. If a match is found, the match
   identifies the Forwarding Adjacency for which the node LSR has to perform
   label allocation.

   Otherwise, the node LSR MUST check whether the tuple <X, <Router ID, Interface
   ID> from the Unnumbered Interface subobject matches the tuple <LSR's Router <Router
   ID, Reverse Interface ID> of any of the bidirectional LSPs for which
   the node LSR is the head-end. If a match is found, the match identifies
   the Forwarding Adjacency for which the
   node LSR has to perform label
   allocation, namely, the reverse Forwarding Adjacency for the LSP
   identified by the match.

   Otherwise, R the LSR must have information about Interface IDs and Component
   Interface IDs the identifiers
   assigned by its neighbors for to the unnumbered links
   between R and its neighbors (i.e., incoming
   interface identifiers from R's LSR's point of view).

   If the Request message does not contain The LSR uses this
   information to find a Component Interface
   Identifier object, R determines the link by looking up <X, I> in with tuple <Router ID, incoming interface
   identifier> matching the
   Traffic Engineering database.  If tuple <Router ID, Interface ID> from the Request message contains a
   Component
   Unnumbered Interface Identifier object, R determines subobject. If the matching tuple is found, and
   the link as
   described in [BUNDLE].

   Otherwise, it is assumed that not a bundled link, the node match identifies the link for
   which the LSR has to perform label
   allocation for allocation. If the matching tuple
   is found, and the link over which is a bundled link, the Request message was received.

6.4. LSR follows the
   procedures for label allocation as described in [LINK-BUNDLE].

6.2. Selecting the Next Hop

   Once an LSR determines the link for which the LSR has been determined, to perform
   label allocation, the LSR removes the initial subobject is removed, in the ERO,
   and computes the next hop should be computed. hop.  The next hop for an Unnumbered Interface
   ID subobject is determined as follows.  The Interface ID MUST refer
   to an outgoing interface identifier that this node allocated; if not,
   the node SHOULD return a "Bad Strict Node" error.  The next hop is
   the node LSR at the other end of the link that the Interface ID refers to.
   If this node is R the LSR itself, the subobject is removed, and the process
   repeated.  If the next node is not R, say N, some other LSR, this is the next hop
   to which a Request message must be sent.

   Furthermore, when

   When sending a Request message to N, the ERO to be used
   is next hop, if the remaining ERO (i.e., starting with message
   carries the subobject IF_ID object, then this object MUST contain the IF_INDEX
   TLV, with IP Address in that refers TLV set to a node different from the receiving node); LSR's Router ID, and
   Interface ID set to the PHOP object is R's
   router ID. Interface ID carried in the first subobject
   of the ERO.

7. Security Considerations

   This document raises no new security concerns for CR-LDP.

8. Acknowledgments

   Thanks to Rahul Aggarwal for his comments on the text.  Thanks too to
   Bora Akyol and Vach Kompella.

9. References

   [BUNDLE] Kompella, K., Rekhter, Y., and Berger, L., "Link Bundling in
   MPLS Traffic Engineering", draft-kompella-mpls-bundle-05.txt (work in
   progress)

   [CR-LDP] Jamoussi, B., editor, "Constraint-Based LSP Setup using
   LDP", draft-ietf-mpls-cr-ldp-04.txt (work in progress)

   [GMPLS-SIG] Ashwood, P., et al., "Generalized MPLS - Signalling
   Functional Description", draft-ietf-generalized-mpls-
   signalling-05.txt

   [GMPLS-CRLDP] Ashwood, P., et al., "Generalized MPLS Signaling - CR-
   LDP Extensions", draft-ietf-mpls-generalized-cr-ldp-04.txt

   [ISIS-TE] Smit, H., and Li, T., "IS-IS extensions for Traffic
   Engineering", draft-ietf-isis-traffic-02.txt (work in progress)

   [LSP-HIER] Kompella, K., and Rekhter, Y., "LSP Hierarchy with MPLS
   TE", draft-ietf-mpls-lsp-hierarchy-01.txt draft-ietf-mpls-lsp-hierarchy-02.txt (work in progress)

   [OSPF-TE] Katz, D., and Yeung, D., "Traffic Engineering Extensions to
   OSPF", draft-katz-yeung-ospf-traffic-02.txt draft-katz-yeung-ospf-traffic-04.txt (work in progress)

10. Author Information

Kireeti Kompella
Juniper Networks, Inc.
1194 N. Mathilda Ave.
Sunnyvale, CA 94089
e-mail: kireeti@juniper.net

Yakov Rekhter
Juniper Networks, Inc.
1194 N. Mathilda Ave.
Sunnyvale, CA 94089
e-mail: yakov@juniper.net

Alan Kullberg
NetPlane Systems, Inc.
888 Washington St.
Dedham,
Westwood Executive Center
200 Lowder Brook Drive
Westwood, MA  02026  02090
e-mail: akullber@netplane.com