draft-ietf-mpls-crldp-unnum-02.txt | draft-ietf-mpls-crldp-unnum-03.txt | |||
---|---|---|---|---|
Network Working Group Kireeti Kompella | Network Working Group Kireeti Kompella | |||
Internet Draft Juniper Networks | Internet Draft Juniper Networks | |||
Expiration Date: March 2002 Yakov Rekhter | Expiration Date: June 2002 Yakov Rekhter | |||
Juniper Networks | Juniper Networks | |||
Alan Kullberg | Alan Kullberg | |||
NetPlane Systems | NetPlane Systems | |||
Signalling Unnumbered Links in CR-LDP | 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 | 1. Status of this Memo | |||
This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at page 2, line 20 | skipping to change at page 2, line 20 | |||
OSPF), and (b) the ability to specify unnumbered links in MPLS TE | OSPF), and (b) the ability to specify unnumbered links in MPLS TE | |||
signalling. The former is covered in [ISIS-TE, OSPF-TE]. The focus | signalling. The former is covered in [ISIS-TE, OSPF-TE]. The focus | |||
of this document is on the latter. | of this document is on the latter. | |||
Current signalling used by MPLS TE doesn't provide support for | Current signalling used by MPLS TE doesn't provide support for | |||
unnumbered links because the current signalling doesn't provide a way | unnumbered links because the current signalling doesn't provide a way | |||
to indicate an unnumbered link in its Explicit Route Objects. This | to indicate an unnumbered link in its Explicit Route Objects. This | |||
document proposes simple procedures and extensions that allow CR-LDP | document proposes simple procedures and extensions that allow CR-LDP | |||
signalling [CR-LDP] to be used with unnumbered links. | signalling [CR-LDP] to be used with unnumbered links. | |||
4. Interface Identifiers | 4. Link Identifiers | |||
Since unnumbered links are not identified by an IP address, then for | An unnumbered link has to be a point-to-point link. An LSR at each | |||
the purpose of MPLS TE they need some other identifier. We assume | end of an unnumbered link assigns an identifier to that link. This | |||
that each unnumbered link on a Label Switched Router (LSR) is given a | identifier is a non-zero 32-bit number that is unique within the | |||
unique 32-bit identifier. The scope of this identifier is the LSR to | scope of the LSR that assigns it. The IS-IS and/or OSPF and RSVP | |||
which the link belongs; moreover, the IS-IS and/or OSPF and CR-LDP | modules on an LSR must agree on the identifiers. | |||
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 | There is no a priori relationship between the identifiers assigned to | |||
some other LSR B. LSR A chooses the interface identifier for link l. | a link by the LSRs at each end of that link. | |||
To be completely clear, we call this the "outgoing interface | ||||
identifier from LSR A's point of view". If there is a reverse link | LSRs at the two end points of an unnumbered link exchange with each | |||
from LSR B to LSR A (for example, a point-to-point SONET interface | other the identifiers they assign to the link. Exchanging the | |||
connecting LSRs A and B would be represented as two links, one from A | identifiers may be accomplished by configuration, by means of a | |||
to B, and another from B to A), B chooses the outgoing interface | protocol such as LMP ([LMP]), by means of RSVP/CR-LDP (especially in | |||
identifier for the reverse link; we call this the link's "incoming | the case where a link is a Forwarding Adjacency, see below), or by | |||
interface identifier from A's point of view". There is no a priori | means of IS-IS or OSPF extensions ([ISIS-GMPLS], [OSPF-GMPLS]). | |||
relationship between the two interface identifiers. | ||||
Consider an (unnumbered) link between LSRs A and B. LSR A chooses an | ||||
idenfitier for that link. So is LSR B. From A's perspective we refer | ||||
to the identifier that A assigned to the link as the "link local | ||||
identifier" (or just "local identifier"), and to the identifier that | ||||
B assigned to the link as the "link remote identifier" (or just | ||||
"remote identifier"). Likewise, from B's perspective the identifier | ||||
that B assigned to the link is the local identifier, and the | ||||
identifier that A assigned to the link is the remote identifier. | ||||
This section is equally applicable to the case of unnumbered | ||||
component links (see [LINK-BUNDLE]). | ||||
5. Unnumbered Forwarding Adjacencies | 5. Unnumbered Forwarding Adjacencies | |||
If an LSR that originates an LSP advertises this LSP as an unnumbered | 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 | Forwarding Adjacency in IS-IS or OSPF (see [LSP-HIER]), or the LSR | |||
uses the Forwarding Adjacency formed by this LSP as an unnumbered | uses the Forwarding Adjacency formed by this LSP as an unnumbered | |||
component link of a bundled link (see [BUNDLE]), the LSR MUST | component link of a bundled link (see [LINK-BUNDLE]), the LSR MUST | |||
allocate an interface identifier to that Forwarding Adjacency (just | allocate an identifier to that Forwarding Adjacency (just like for | |||
like for any other unnumbered link). Moreover, the Request message | any other unnumbered link). Moreover, the REQUEST message used for | |||
used for establishing the LSP that forms the Forwarding Adjacency | establishing the LSP that forms the Forwarding Adjacency MUST contain | |||
MUST contain an LSP_TUNNEL_INTERFACE_ID object (described below), | an LSP_TUNNEL_INTERFACE_ID TLV (described below), with the LSR's | |||
with the LSR's Router ID set to the head end's Router ID, and the | Router ID set to the head end's Router ID, and the Interface ID set | |||
Interface ID set to the interface identifier that the LSR allocated | to the identifier that the LSR allocated to the Forwarding Adjacency. | |||
to the Forwarding Adjacency. | ||||
If the LSP is bidirectional, and the tail-end LSR (of the forward | If the REQUEST message contains the LSP_TUNNEL_INTERFACE_ID TLV, then | |||
LSP) advertises the reverse LSP as an unnumbered Forwarding | the tail-end LSR MUST allocate an identifier to that Forwarding | |||
Adjacency, the tail-end LSR MUST allocate an interface identifier to | Adjacency (just like for any other unnumbered link). Furthermore, | |||
the reverse Forwarding Adjacency. Furthermore, the MAPPING message | the MAPPING message for the LSP MUST contain an | |||
for the LSP MUST contain an LSP_TUNNEL_INTERFACE_ID object, with the | LSP_TUNNEL_INTERFACE_ID TLV, with the LSR's Router ID set to the | |||
LSR's Router ID set to the tail end's router ID, and the Interface ID | tail-end's Router ID, and the Interface ID set to the identifier | |||
set to the interface identifier allocated by the tail-end LSR. | allocated by the tail-end LSR. | |||
5.1. LSP_TUNNEL_INTERFACE_ID Object | 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). | ||||
The LSP_TUNNEL_INTERFACE ID object has Type to be determined by IETF | 5.1. LSP_TUNNEL_INTERFACE_ID TLV | |||
The LSP_TUNNEL_INTERFACE ID TLV has Type to be determined by IETF | ||||
consensus and length 8. The format is given below. | consensus and length 8. The format is given below. | |||
Figure 1: Interface ID TLV | 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: LSP_TUNNEL_INTERFACE_ID TLV | ||||
0 1 2 3 | 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 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 | | |0|0| Type | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| LSR's Router ID | | | LSR's Router ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Interface ID (32 bits) | | | 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 | 6. Signalling Unnumbered Links in EROs | |||
A new subobject of the Explicit Route Object (ERO) is used to specify | A new subobject of the Explicit Route Object (ERO) is used to specify | |||
unnumbered links. This subobject has the following format: | unnumbered links. This subobject has the following format: | |||
Figure 2: Unnumbered Interface ID Subobject | Figure 2: Unnumbered Interface ID Subobject | |||
0 1 2 3 | 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 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 | | |0|0| Type | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Router ID | | | Router ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Interface ID (32 bits) | | | Interface ID (32 bits) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
This subobject is strict. The Type is 0x0805 (Unnumbered Interface | The Type is 0x0805 (Unnumbered Interface ID) and the Length is 8. | |||
ID) and the Length is 8. | ||||
The Interface ID is the outgoing interface identifier with respect to | ||||
the LSR specified by the router ID. | ||||
6.1. Processing the Unnumbered Interface ID Subobject | ||||
First of all, the receiving LSR must validate that it received the | The Interface ID is the identifier assigned to the link by the LSR | |||
Request message correctly. If the first subobject in the ERO is an | specified by the router ID. | |||
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 | 6.1. Processing the IF_ID TLV | |||
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 the IF_INDEX TLV, the receiving LSR SHOULD | ||||
check that the value carried in 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 | When an LSR receives a REQUEST message containing the IF_ID TLV with | |||
<Router ID, Interface ID> from the Unnumbered Interface subobject | the IF_INDEX TLV, the LSR processes this TLV as follows. The LSR | |||
matches the tuple <Router ID, Forward Interface ID> of any of the | must have information about the identifiers assigned by its neighbors | |||
LSPs for which the LSR is a tail-end. If a match is found, the match | to the unnumbered links between the neighbors and the LSR. The LSR | |||
identifies the Forwarding Adjacency for which the LSR has to perform | uses this information to find a link with tuple <Router ID, local | |||
label allocation. | identifier> matching the tuple <IP Address, Interface ID> carried in | |||
the IF_INDEX TLV. If the matching tuple is found, the match | ||||
identifies the link for which the LSR has to perform label | ||||
allocation. | ||||
Otherwise, the LSR MUST check whether the tuple <Router ID, Interface | Otherwise, the LSR SHOULD return an error. | |||
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 LSR must have information about the identifiers | 6.2. Processing the ERO object | |||
assigned by its neighbors to the unnumbered links (i.e., incoming | ||||
interface identifiers from LSR's point of view). The LSR uses this | ||||
information to find a link with tuple <Router ID, incoming interface | ||||
identifier> matching the tuple <Router ID, Interface ID> from the | ||||
Unnumbered Interface subobject. 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, the LSR follows the | ||||
procedures for label allocation as described in [LINK-BUNDLE]. | ||||
6.2. Selecting the Next Hop | The Unnumbered Interface ID subobject is defined to be a part of a | |||
particular abstract node if that node has the Router ID that is equal | ||||
to the Router ID field in the 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 field of the subobject. | ||||
Once an LSR determines the link for which the LSR has to perform | With this in mind, the ERO processing in the presence of the | |||
label allocation, the LSR removes the initial subobject in the ERO, | Unnumbered Interface ID subobject follows the rules specified in | |||
and computes the next hop. The next hop for an Unnumbered Interface | section 4.8.1 of [CR-LDP]. | |||
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 LSR at the other end of the link that the Interface ID refers to. | ||||
If this is the LSR itself, the subobject is removed, and the process | ||||
repeated. If the next node is some other LSR, this is the next hop | ||||
to which a Request message must be sent. | ||||
When sending a Request message to the next hop, if the message | As part of the ERO processing, or to be more precise, as part of the | |||
carries the IF_ID object, then this object MUST contain the IF_INDEX | next hop selection, if the outgoing link is unnumbered, the REQUEST | |||
TLV, with IP Address in that TLV set to the LSR's Router ID, and | message that the node sends to the next hop MUST include the IF_ID | |||
Interface ID set to the Interface ID carried in the first subobject | TLV, with the IP address field of that TLV set to the Router ID of | |||
of the ERO. | the node, and the Interface ID field of that TLV set to the | |||
identifier assigned to the link by the node. | ||||
7. Security Considerations | 7. Security Considerations | |||
This document raises no new security concerns for CR-LDP. | This document raises no new security concerns for CR-LDP. | |||
8. Acknowledgments | 8. Acknowledgments | |||
Thanks to Rahul Aggarwal for his comments on the text. Thanks too to | Thanks to Rahul Aggarwal for his comments on the text. Thanks too to | |||
Bora Akyol and Vach Kompella. | Bora Akyol and Vach Kompella. | |||
9. References | 9. References | |||
[BUNDLE] Kompella, K., Rekhter, Y., and Berger, L., "Link Bundling in | [LINK-BUNDLE] Kompella, K., Rekhter, Y., and Berger, L., "Link | |||
MPLS Traffic Engineering", draft-kompella-mpls-bundle-05.txt (work in | Bundling in MPLS Traffic Engineering", draft-kompella-mpls- | |||
progress) | bundle-05.txt (work in progress) | |||
[CR-LDP] Jamoussi, B., editor, "Constraint-Based LSP Setup using | [CR-LDP] Jamoussi, B., editor, "Constraint-Based LSP Setup using | |||
LDP", draft-ietf-mpls-cr-ldp-04.txt (work in progress) | LDP", draft-ietf-mpls-cr-ldp-04.txt (work in progress) | |||
[GMPLS-SIG] Ashwood, P., et al., "Generalized MPLS - Signalling | [GMPLS-SIG] Ashwood, P., et al., "Generalized MPLS - Signalling | |||
Functional Description", draft-ietf-generalized-mpls- | Functional Description", draft-ietf-generalized-mpls- | |||
signalling-05.txt | signalling-05.txt | |||
[GMPLS-CRLDP] Ashwood, P., et al., "Generalized MPLS Signaling - CR- | [GMPLS-CRLDP] Ashwood, P., et al., "Generalized MPLS Signaling - CR- | |||
LDP Extensions", draft-ietf-mpls-generalized-cr-ldp-04.txt | LDP Extensions", draft-ietf-mpls-generalized-cr-ldp-04.txt | |||
[ISIS-TE] Smit, H., and Li, T., "IS-IS extensions for Traffic | [ISIS-TE] Smit, H., and Li, T., "IS-IS extensions for Traffic | |||
Engineering", draft-ietf-isis-traffic-02.txt (work in progress) | Engineering", draft-ietf-isis-traffic-02.txt (work in progress) | |||
[LSP-HIER] Kompella, K., and Rekhter, Y., "LSP Hierarchy with MPLS | [LSP-HIER] Kompella, K., and Rekhter, Y., "LSP Hierarchy with MPLS | |||
TE", draft-ietf-mpls-lsp-hierarchy-02.txt (work in progress) | TE", draft-ietf-mpls-lsp-hierarchy-02.txt (work in progress) | |||
[OSPF-TE] Katz, D., and Yeung, D., "Traffic Engineering Extensions to | [OSPF-TE] Katz, D., and Yeung, D., "Traffic Engineering Extensions to | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |