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

                 Signalling Unnumbered Links in CR-LDP

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

                   draft-ietf-mpls-crldp-unnum-03.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 Link Identifiers

   Since

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

   Note

   There is no a priori relationship between the identifiers assigned to
   a link by the LSRs at each end of that links are directed, i.e., link.

   LSRs at the two end points of an unnumbered link exchange with each
   other the identifiers they assign to the link. Exchanging the
   identifiers may be accomplished by configuration, by means of a
   protocol such as LMP ([LMP]), by means of RSVP/CR-LDP (especially in
   the case where a link l is from some LSR a Forwarding Adjacency, see below), or by
   means of IS-IS or OSPF extensions ([ISIS-GMPLS], [OSPF-GMPLS]).

   Consider an (unnumbered) link between LSRs A to
   some other LSR and B. LSR A chooses the interface identifier an
   idenfitier for link l.
   To be completely clear, we call this the "outgoing interface
   identifier from LSR A's point of view".  If there that link. So is a reverse link
   from LSR B B.  From A's perspective we refer
   to LSR A (for example, a point-to-point SONET interface
   connecting LSRs the identifier that A assigned to the link as the "link local
   identifier" (or just "local identifier"), and to the identifier that
   B would be represented as two links, one from A assigned to B, and another the link as the "link remote identifier" (or just
   "remote identifier"). Likewise, from B's perspective the identifier
   that B assigned to A), B chooses the outgoing interface
   identifier for link is the reverse link; we call this local identifier, and the link's "incoming
   interface
   identifier from A's point of view".  There that A assigned to the link is no a priori
   relationship between the two interface identifiers. remote identifier.

   This section is equally applicable to the case of unnumbered
   component links (see [LINK-BUNDLE]).

5. Unnumbered Forwarding Adjacencies

   If an LSR that originates an LSP advertises this LSP as an unnumbered
   Forwarding Adjacency in IS-IS or OSPF (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]), [LINK-BUNDLE]), the LSR MUST
   allocate an interface identifier to that Forwarding 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 LSP_TUNNEL_INTERFACE_ID object TLV (described below), with the LSR's
   Router ID set to the head end's Router ID, and the Interface ID set
   to the interface identifier that the LSR allocated to the Forwarding Adjacency.

   If the LSP is bidirectional, and the tail-end LSR (of the forward
   LSP) advertises REQUEST message contains the reverse LSP as an unnumbered Forwarding
   Adjacency, LSP_TUNNEL_INTERFACE_ID TLV, then
   the tail-end LSR MUST allocate an interface identifier to
   the reverse that Forwarding Adjacency.
   Adjacency (just like for any other unnumbered link).  Furthermore,
   the MAPPING message for the LSP MUST contain an
   LSP_TUNNEL_INTERFACE_ID object, TLV, with the LSR's Router ID set to the tail end's router
   tail-end's Router ID, and the Interface ID set to the interface identifier
   allocated by the tail-end LSR.

   For the purpose of processing the ERO and the Interface ID TLV, an
   unnumbered Forwarding Adjacency is treated as an unnumbered (TE) link
   or an unnumbered component link as follows. The LSR that originates
   the Adjacency sets the link local identifier for that link to the
   value that the LSR allocates to that Forwarding Adjacency, and the
   link remote identifier to the value carried in the Interface ID field
   of the Reverse Interface ID TLV (for the definition of Reverse
   Interface ID TLV see below). The LSR that is a tail-end of that
   Forwarding Adjacency sets the link local identifier for that link to
   the value that the LSR allocates to that Forwarding Adjacency, and
   the link remote identifier to the value carried in the Interface ID
   field of the Forward Interface ID TLV (for the definition of Forward
   Interface ID see below).

5.1. LSP_TUNNEL_INTERFACE_ID Object TLV

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

   This TLV 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.

   Figure 1: Interface ID LSP_TUNNEL_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.

   The Interface ID is the outgoing interface identifier with respect assigned to the link by the LSR
   specified by the router ID.

6.1. Processing the Unnumbered Interface ID Subobject

   First of all, the receiving IF_ID TLV

   When an LSR must validate that it received the
   Request receives a REQUEST message correctly. If containing the first subobject in the ERO is an
   Unnumbered Interface subobject, the check is done as follows (for
   other types of ERO subobjects, the rules in [CR-LDP] apply).

   The IF_ID TLV ([GMPLS-SIG], [GMPLS-CRLDP]), if present in the
   message, MUST contain the same Router ID (IP Address) as the Router
   ID carried in the Unnumbered Interface ID subobject. If not, the
   receiving LSR MUST return a "Bad Initial ER-Hop" error.  If IF_ID TLV
   is present, and it carries with
   the IF_INDEX TLV, the receiving LSR SHOULD
   check that the value carried in processes this TLV is the same as carried in
   the Interface ID field of the Unnumbered Interface ID subobject.  If
   the value is different, the receiving LSR MUST return a  "Bad Initial
   ER-Hop" error.

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

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

   Otherwise, the follows.  The LSR
   must have information about the identifiers assigned by its neighbors
   to the unnumbered links (i.e., incoming
   interface identifiers from LSR's point of view). between the neighbors and the LSR. The LSR
   uses this information to find a link with tuple <Router ID, incoming interface local
   identifier> matching the tuple <Router ID, <IP Address, Interface ID> from carried in
   the
   Unnumbered Interface subobject. IF_INDEX TLV. If the matching tuple is found, and
   the link is not a bundled link, the match
   identifies the link for which the LSR has to perform label
   allocation. If the matching tuple
   is found, and the link is a bundled link,

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

6.2. Selecting the Next Hop

   Once SHOULD return an LSR determines the link for which the LSR has to perform
   label allocation, the LSR removes the initial subobject in the ERO,
   and computes error.

6.2. Processing the next hop. ERO object

   The next hop for an Unnumbered Interface ID subobject is determined as follows.  The Interface ID MUST refer defined to an outgoing interface identifier that this be a part of a
   particular abstract node allocated; if not,
   the that node SHOULD return a "Bad Strict Node" error.  The next hop has the Router ID that is equal
   to the LSR at Router ID field in the other end of subobject, and if the node has an
   (unnumbered) link or an (unnumbered) Forwarding Adjacency whose local
   identifier (from that node's point of view) is equal to the value
   carried in the Interface ID refers to.
   If field of the subobject.

   With this is in mind, the LSR itself, ERO processing in the subobject is removed, and presence of the process
   repeated.  If
   Unnumbered Interface ID subobject follows the next node is some other LSR, this is rules specified in
   section 4.8.1 of [CR-LDP].

   As part of the next hop ERO processing, or to which a Request message must be sent.

   When sending a Request message to more precise, as part of the
   next hop, hop selection, if the outgoing link is unnumbered, the REQUEST
   message
   carries that the IF_ID object, then this object node sends to the next hop MUST contain include the IF_INDEX IF_ID
   TLV, with the IP Address in address field of that TLV set to the LSR's Router ID, ID of
   the node, and the Interface ID field of that TLV set to the Interface ID carried in
   identifier assigned to the first subobject
   of link by the ERO. node.

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]

   [LINK-BUNDLE] Kompella, K., Rekhter, Y., and Berger, L., "Link
   Bundling in MPLS Traffic Engineering", draft-kompella-mpls-bundle-05.txt 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-02.txt (work in progress)

   [OSPF-TE] Katz, D., and Yeung, D., "Traffic Engineering Extensions to
   OSPF", 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.
Westwood Executive Center
200 Lowder Brook Drive
Westwood, MA  02090
e-mail: akullber@netplane.com