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

                 Signalling Unnumbered Links in CR-LDP

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

                   draft-ietf-mpls-crldp-unnum-01.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], the LSR MUST
   allocate an interface ID to that Forwarding Adjacency.  Moreover, the
   REQUEST message for the LSP MUST contain an INTERFACE ID object
   (described below), with the LSR's Router ID set to the head end's
   router ID, and the Interface ID set to the LSP's interface ID.  If
   the LSP is part of a bundled link (see [BUNDLE]), the Interface ID is
   set to the component interface ID of the LSP.

   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 to the
   reverse Forwarding Adjacency.  Furthermore, the MAPPING message for
   the LSP MUST contain an 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 the LSP; otherwise, it is set to zero.

5.1. INTERFACE ID Object

   The 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 4.

   An LSR sending a Request message that includes an 8.

6.1. Interpreting the Unnumbered Interface ID subobject as the first subobject in the ERO MUST also
   include a PHOP TLV, specifying the Subobject

   The Router ID of the sending LSR.
   This TLV (say X) is depicted in Figure 3.

   Figure 3: PHOP 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 the router ID                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The Type (PHOP TLV) is to be determined by IETF consensus and of the
   Length is 4.

6.1. Interpreting LSR P at the Unnumbered Interface ID Subobject upstream
   end of the unnumbered link.  The Interface ID (say I) is the outgoing
   interface identifier with respect to the previous node in the path (i.e., LSR specified by the PHOP). router
   ID.  If not, the Request
   message contains receiving node MUST return an error message.

6.2. Validating the Unnumbered Interface ID subobject as Subobject

   First of all, the receiving node R must validate that it received the
   Request message correctly.  If the first subobject in the ERO, then ERO is an
   Unnumbered Interface subobject, the PHOP object check is done as follows.  R
   looks up in its Traffic Engineering database the message must
   contain node P corresponding
   to the router ID of the previous node.

6.2. Processing X in the Unnumbered Interface ID Subobject

   A node ERO subobject.  It then checks that receives there
   is a Request message with an Unnumbered link from P to R that carries the same Interface ID as the first subobject one
   in the ERO carried subobject (I).  If this is not the case, R has received
   the message in error and SHOULD return a "Bad Initial ER-Hop" error.

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

6.3. Determining the Link Identified by the ERO

   Determining the link for which label allocation must be done depends
   on whether a Component Interface Identifier object [BUNDLE] is
   present in the Request message MUST
   check or not.  If so, set ID to the
   Component Interface ID; otherwise, set ID to I (the Interface ID in
   the ERO subobject).  X is (as above) the router ID in the Unnumbered
   ERO subobject.

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

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

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

   If the tuple <PHOP,
   Interface ID> matches <neighbor's Router ID, Incoming Request message does not contain a Component Interface ID>
   for any link.
   Identifier object, R determines the link by looking up <X, I> in the
   Traffic Engineering database.  If a match is found, the match identifies Request message contains a
   Component Interface Identifier object, R determines the link for
   which the node has to perform label allocation. as
   described in [BUNDLE].

   Otherwise, it is assumed that the node has to perform label
   allocation for the link over which the Request message was received.
   In this case the receiving node MAY validate that it received the
   Request Message correctly.  To do so, the node must maintain a
   database of Traffic Engineering information distributed by IS-IS
   and/or OSPF.

   To validate that it received the Request message correctly, the node
   looks up in its Traffic Engineering database for the node
   corresponding to the router ID of the sender of the Request message.
   It then checks that there is a link from the previous node to itself
   that carries the same Interface ID as the one in the ERO subobject.
   If this is not the case, the receiving node has received the message
   in error and SHOULD return a "Bad Initial ER-Hop" error.  Otherwise,
   the receiving node removes the first subobject, and continues
   processing the ERO.

6.3.

6.4. Selecting the Next Hop

   If, after processing and removing all initial subobjects in

   Once the ERO
   that refer to itself, link has been determined, the receiving node finds a initial subobject of type
   Unnumbered Interface ID, it determines is removed,
   and the next hop should be computed.  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 at the other end of the link that the
   Interface ID refers to.  If this node is R itself, the subobject is
   removed, and the process repeated.  If the next node is not R, say N,
   this is the next hop to which a Request message must be sent.

   Furthermore, when sending a Request message to the next hop, N, the ERO to be used
   is the current remaining ERO (starting (i.e., starting with the Unnumbered Interface
   ID subobject). subobject that refers
   to a node different from the receiving node); the PHOP object is R's
   router ID.

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

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

   [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 (work in progress)

   [OSPF-TE] Katz, D., and Yeung, D., "Traffic Engineering Extensions to
   OSPF", draft-katz-yeung-ospf-traffic-02.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
Cisco Systems,
Juniper Networks, Inc.
170 West Tasman Drive
San Jose,
1194 N. Mathilda Ave.
Sunnyvale, CA 95134 94089
e-mail: yakov@cisco.com yakov@juniper.net

Alan Kullberg
NetPlane Systems, Inc.
888 Washington St.
Dedham, MA  02026
e-mail: akullber@netplane.com