draft-kini-mpls-spring-entropy-label-02.txt | draft-kini-mpls-spring-entropy-label-03.txt | |||
---|---|---|---|---|
Network Working Group S. Kini, Ed. | Network Working Group S. Kini, Ed. | |||
Internet-Draft Ericsson | Internet-Draft Ericsson | |||
Intended status: Informational K. Kompella | Intended status: Informational K. Kompella | |||
Expires: April 28, 2015 Juniper | Expires: September 4, 2015 Juniper | |||
S. Sivabalan | S. Sivabalan | |||
Cisco | Cisco | |||
S. Litkowski | S. Litkowski | |||
Orange | Orange | |||
R. Shakir | R. Shakir | |||
B.T. | B.T. | |||
X. Xu | X. Xu | |||
Huawei | Huawei | |||
W. Hendrickx | W. Hendrickx | |||
Alcatel-Lucent | Alcatel-Lucent | |||
J. Tantsura | J. Tantsura | |||
Ericsson | Ericsson | |||
October 25, 2014 | March 3, 2015 | |||
Entropy labels for source routed stacked tunnels | Entropy labels for source routed stacked tunnels | |||
draft-kini-mpls-spring-entropy-label-02 | draft-kini-mpls-spring-entropy-label-03 | |||
Abstract | Abstract | |||
Source routed tunnel stacking is a technique that can be leveraged to | Source routed tunnel stacking is a technique that can be leveraged to | |||
provide a method to steer a packet through a controlled set of | provide a method to steer a packet through a controlled set of | |||
segments. This can be applied to the Multi Protocol Label Switching | segments. This can be applied to the Multi Protocol Label Switching | |||
(MPLS) data plane. Entropy label (EL) is a technique used in MPLS to | (MPLS) data plane. Entropy label (EL) is a technique used in MPLS to | |||
improve load balancing. This document examines and describes how ELs | improve load balancing. This document examines and describes how ELs | |||
are to be applied to source routed stacked tunnels. | are to be applied to source routed stacked tunnels. | |||
skipping to change at page 1, line 48 | skipping to change at page 1, line 48 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 28, 2015. | This Internet-Draft will expire on September 4, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2015 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
2. Abbreviations and Terminology . . . . . . . . . . . . . . . . 3 | 2. Abbreviations and Terminology . . . . . . . . . . . . . . . . 3 | |||
3. Use-case for multipath load balancing in source stacked | 3. Use-case requiring multipath load balancing in source stacked | |||
tunnels . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | tunnels . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. Recommended EL solution for SPRING . . . . . . . . . . . . . 5 | 4. Recommended EL solution for SPRING . . . . . . . . . . . . . 5 | |||
5. Options considered . . . . . . . . . . . . . . . . . . . . . 6 | 5. Options considered . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.1. Single EL at the bottom of the stack of tunnels . . . . . 6 | 5.1. Single EL at the bottom of the stack of tunnels . . . . . 6 | |||
5.2. An EL per tunnel in the stack . . . . . . . . . . . . . . 7 | 5.2. An EL per tunnel in the stack . . . . . . . . . . . . . . 7 | |||
5.3. A re-usable EL for a stack of tunnels . . . . . . . . . . 8 | 5.3. A re-usable EL for a stack of tunnels . . . . . . . . . . 7 | |||
5.3.1. EL at top of stack . . . . . . . . . . . . . . . . . 8 | 5.3.1. EL at top of stack . . . . . . . . . . . . . . . . . 8 | |||
5.4. ELs at readable label stack depths . . . . . . . . . . . 8 | 5.4. ELs at readable label stack depths . . . . . . . . . . . 8 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 10 | 9.2. Informative References . . . . . . . . . . . . . . . . . 10 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
skipping to change at page 4, line 6 | skipping to change at page 4, line 6 | |||
ECMP - Equal Cost Multi Paths | ECMP - Equal Cost Multi Paths | |||
MPLS - Multiprotocol Label Switching | MPLS - Multiprotocol Label Switching | |||
SID - Segment Identifier | SID - Segment Identifier | |||
RLD - Readable Label Depth | RLD - Readable Label Depth | |||
OAM - Operation, Administration and Maintenance | OAM - Operation, Administration and Maintenance | |||
3. Use-case for multipath load balancing in source stacked tunnels | 3. Use-case requiring multipath load balancing in source stacked | |||
tunnels | ||||
Source stacked tunnels have several use-cases, one of which is | +------+ | |||
service chaining [I-D.filsfils-spring-segment-routing-use-cases]. | | | | |||
Consider the service-chaining network in Figure 1 that has MPLS as | +-------| P3 |-----+ | |||
the data plane. The requirement of the use-case is to create a LSP | | +-----| |---+ | | |||
from source LSR S, apply the services S1, S2 and finally terminate | L3| |L4 +------+ L1| |L2 +----+ | |||
the LSP at destination LSR D. Local load balancing is required | | | | | +--| P4 |--+ | |||
across the parallel links between P1 and S1. Local load balancing is | +-----+ +-----+ +-----+ | +----+ | +-----+ | |||
also required between the ECMP paths from S1 to S2 i.e., between the | | S |-----| P1 |------------| P2 |--+ +--| D | | |||
paths S1-P1-P2-P3-S2 and S1-P1-P2-P4-S2. Segment routing can be used | | | | | | |--+ +--| | | |||
to achieve this. A segment to S1 is stacked above the segment to S2 | +-----+ +-----+ +-----+ | +----+ | +-----+ | |||
which in turn is stacked above the segment to D. Labels for service | +--| P5 |--+ | |||
instructions are also inserted in the stack at appropriate depths so | +----+ | |||
that services S1 and S2 are executed. To achieve local load | ||||
balancing the SIDs of specific interfaces is not specified. Since | ||||
entropy label is a standardized [RFC6790] mechanism defined for MPLS | ||||
it can be adapted to the case of source stacked tunnels. Multiple | ||||
ways to apply entropy labels exist and a recommended solution is | ||||
described in Section 4 and all the options considered are listed in | ||||
Section 5 along with their tradeoffs. We denote SN to be the node | ||||
SID of LSR N and SN{L1,L2,...} to denote the SID of the adjacency for | ||||
the set for links {L1,L2,...} of LSR N and S-SvcN to denote the SID | ||||
for a service at service LSR N. The label stack that the source LSR | ||||
S uses for the LSP can be <SS1, S-SvcS1, SS2, S-SvcS2, SD> or <SP1, | ||||
SP1{L1,L2}, S-SvcS1, SS2, S-SvcS2, SD>. | ||||
+-----+ +-----+ | S=Source LSR, D=Destination LSR, P1,P2,P3,P4,P5=Transit LSRs, | |||
| S1 | +------| P3 |------+ | L1,L2,L3,L4=Links | |||
+-----+ | +-----+ | | ||||
L1| |L2 | | | ||||
+-----+ +-----+ +-----+ +-----+ | ||||
| S |-----| P1 |-----| P2 | | S2 | | ||||
+-----+ +-----+ +-----+ +-----+ | ||||
| | | ||||
| +-----+ | | ||||
+------| P4 |------+ | ||||
+-----+ | ||||
| | ||||
+-----+ | ||||
| D | | ||||
+-----+ | ||||
S=Source LSR, D=Destination LSR, S1,S2=service-LSRs, L1,L2=links, | Figure 1: Traffic engineering use-case | |||
P1,P2,P3,P4=Transit LSRs | ||||
Figure 1: Service chaining use-case | Traffic-engineering (TE) is one of the applications of MPLS and is | |||
also a requirement for source stacked tunnels. Consider the topology | ||||
shown in Figure 1. Lets say the LSR P1 has a limitation that it can | ||||
only look four labels deep in the stack to do multipath decisions. | ||||
All other transit LSRs in the figure can read deep label stacks and | ||||
the LSR S can insert as many <ELI, EL> pairs as needed. The LSR S | ||||
requires data to be sent to LSR D along a traffic-engineered path | ||||
that goes over the link L1. Good load balancing is also required | ||||
across equal cost paths (including parallel links). To engineer | ||||
traffic along a path that takes link L1, the label stack that LSR S | ||||
creates consists of a label to the node SID of LSR P3, stacked over | ||||
the label for the adjacency SID of link L1 and that in turn is | ||||
stacked over the label to the node SID of LSR D. For simplicity lets | ||||
assume that all LSRs use the same label space for source stacked | ||||
tunnels. Lets L_N-P denote the label to be used to reach the node | ||||
SID of LSR P. Let L_A-Ln denote the label used for the adjacency SID | ||||
for link Ln. The LSR S must use the label stack <L_N-P3, L_A-L1, | ||||
L_N-D> for traffic-engineering. However to achieve good load | ||||
balancing over the equal cost paths P2-P4-D, P2-P5-D and the parallel | ||||
links L3, L4, a mechanism such as Entropy labels [RFC6790] should be | ||||
adapted for source stacked tunnels. Multiple ways to apply entropy | ||||
labels were considered and are documented in Section 5 along with | ||||
their tradeoffs. A recommended solution is described in Section 4. | ||||
4. Recommended EL solution for SPRING | 4. Recommended EL solution for SPRING | |||
The solution described in this section follows [RFC6790]. | The solution described in this section follows [RFC6790]. | |||
An LSR may have a limitation in its ability to read and process the | An LSR may have a limitation in its ability to read and process the | |||
label stack in order to do multipath load balancing. This limitation | label stack in order to do multipath load balancing. This limitation | |||
expressed in terms of the number of label stack entries that the LSR | expressed in terms of the number of label stack entries that the LSR | |||
can read is henceforth referred to as the Readable Label Depth (RLD) | can read is henceforth referred to as the Readable Label Depth (RLD) | |||
capability of that LSR. If an EL does not occur within the RLD of an | capability of that LSR. If an EL does not occur within the RLD of an | |||
LSR in the label stack of the MPLS packet that it receives, then it | LSR in the label stack of the MPLS packet that it receives, then it | |||
would lead to poor load balancing at that LSR. The RLD of an LSR is | would lead to poor load balancing at that LSR. The RLD of an LSR is | |||
a characteristic of the forwarding plane of that LSR's implementation | a characteristic of the forwarding plane of that LSR's implementation | |||
and determining it is outside the scope of this document. | and determining it is outside the scope of this document. | |||
In order for the EL to occur within the RLD of LSRs along the path | In order for the EL to occur within the RLD of LSRs along the path | |||
corresponding to a label stack, multiple <ELI, EL> pairs MAY be | corresponding to a label stack, multiple <ELI, EL> pairs MAY be | |||
inserted in the label stack as long as the labels below which they | inserted in the label stack as long as the tunnel's label below which | |||
are inserted are entropy label capable. The LSR that inserts <ELI, | they are inserted are advertised with entropy label capability | |||
EL> pairs MAY have limitations on the number of such pairs that it | enabled. The LSR that inserts <ELI, EL> pairs MAY have limitations | |||
can insert and also the depth at which it can insert them. If due to | on the number of such pairs that it can insert and also the depth at | |||
any limitation, the inserted ELs are at positions such that an LSR | which it can insert them. If due to any limitation, the inserted ELs | |||
along the path receives an MPLS packet without an EL in the label | are at positions such that an LSR along the path receives an MPLS | |||
stack within that LSR's RLD, then the load balancing performed by | packet without an EL in the label stack within that LSR's RLD, then | |||
that LSR would be poor. Special attention should be paid when a | the load balancing performed by that LSR would be poor. Special | |||
forwarding adjacency LSP (FA-LSP) [RFC4206] is used as a link along | attention should be paid when a forwarding adjacency LSP (FA-LSP) | |||
the path of a source stacked LSP, since the labels of the FA-LSP | [RFC4206] is used as a link along the path of a source stacked LSP, | |||
would additionally count towards the depth of the label stack when | since the labels of the FA-LSP would additionally count towards the | |||
calculating the appropriate positions to insert the ELs. The | depth of the label stack when calculating the appropriate positions | |||
recommendations for inserting <ELI, EL> pairs are: | to insert the ELs. The recommendations for inserting <ELI, EL> pairs | |||
are: | ||||
o An LSR that is limited in the number of <ELI, EL> pairs that it | o An LSR that is limited in the number of <ELI, EL> pairs that it | |||
can insert SHOULD insert such pairs deeper in the stack. | can insert SHOULD insert such pairs deeper in the stack. | |||
o An LSR SHOULD try to insert an <ELI, EL> pair within the RLD of | o An LSR SHOULD try to insert <ELI, EL> pairs at positions so that | |||
the maximum number of LSRs along the path as it can. | for the maximum number of transit LSRs, the EL occurs within the | |||
RLD of the incoming packet to that LSR. | ||||
o An LSR SHOULD try to insert the minimum number of such pairs while | o An LSR SHOULD try to insert the minimum number of such pairs while | |||
trying to satisfy the above criteria. | trying to satisfy the above criteria. | |||
A sample algorithm to insert ELs is shown below. Implementations can | A sample algorithm to insert ELs is shown below. Implementations can | |||
choose any algorithm as long as it follows the above recommendations. | choose any algorithm as long as it follows the above recommendations. | |||
Initialize the current EL insertion point to the | Initialize the current EL insertion point to the | |||
bottommost label in the stack that is EL-capable | bottommost label in the stack that is EL-capable | |||
while local-node can push more labels OR | while (local-node can push more <ELI,EL> pairs OR | |||
top of stack has been reached { | insertion point is not above label stack) { | |||
insert an ELI+EL at current insertion point | insert an <ELI,EL> pair below current insertion point | |||
move insertion point up until current EL is out of RLD | move new insertion point up from current insertion point until | |||
AND | ((last inserted EL is below the RLD) AND (RLD > 2) | |||
insertion point is EL-capable | AND | |||
(new insertion point is EL-capable)) | ||||
set current insertion point to new insertion point | set current insertion point to new insertion point | |||
} | } | |||
Figure 2: Algorithm to insert <ELI, EL> pairs in a label stack | Figure 2: Algorithm to insert <ELI, EL> pairs in a label stack | |||
When this algorithm is applied to the example described in Section 3 | ||||
it will result in ELs being inserted in two positions, one below the | ||||
label L_N-D and another below L_N-P3. Thus the resulting label stack | ||||
would be <L_N-P3, ELI, EL, L_A-L1, L_N-D, ELI, EL> | ||||
The RLD can be advertised via protocols and those extensions would be | The RLD can be advertised via protocols and those extensions would be | |||
described in a separate document. | described in separate documents [I-D.xu-isis-mpls-elc] and | |||
[I-D.xu-ospf-mpls-elc]. | ||||
The recommendations above are not expected to bring any additional | The recommendations above are not expected to bring any additional | |||
OAM considerations beyond those described in section 6 of [RFC6790]. | OAM considerations beyond those described in section 6 of [RFC6790]. | |||
However, the OAM requirements and solutions for source stacked | However, the OAM requirements and solutions for source stacked | |||
tunnels are still under discussion and future revisions of this | tunnels are still under discussion and future revisions of this | |||
document will address those if needed. | document will address those if needed. | |||
5. Options considered | 5. Options considered | |||
5.1. Single EL at the bottom of the stack of tunnels | 5.1. Single EL at the bottom of the stack of tunnels | |||
In this option a single EL is used for the entire label stack. The | In this option a single EL is used for the entire label stack. The | |||
source LSR S encodes the entropy label (EL) below the labels of all | source LSR S encodes the entropy label (EL) below the labels of all | |||
the stacked tunnels. In Figure 1 label stack at LSR S would look | the stacked tunnels. In the example described in Section 3 it will | |||
like <SP1, SS1, S-SvcS1, SS2, S-SvcS2, SD, ELI, EL> <remaining packet | result in the label stack at LSR S to look like <L_N-P3, L_A-L1, L_N- | |||
header>. Note that the notation in [RFC6790] is used to describe the | D, ELI, EL> <remaining packet header>. Note that the notation in | |||
label stack. An issue with this approach is that as the label stack | [RFC6790] is used to describe the label stack. An issue with this | |||
grows due an increase in the number of SIDs, the EL correspondingly | approach is that as the label stack grows due an increase in the | |||
goes deeper in the label stack. As a result, intermediate LSRs (such | number of SIDs, the EL goes correspondingly deeper in the label | |||
as P1) that have to walk the label stack at least until the EL (if | stack. Hence transit LSRs have to access a larger number of bytes in | |||
found) to perform load balancing decisions have to access a larger | the packet header when making forwarding decisions. In the example | |||
number of bytes in the packet header when making forwarding | described in Section 3 the LSR P1 would poorly load-balance traffic | |||
decisions. A load balanced network design using this approach must | on the parallel links L3, L4 since the EL is below the RLD of the | |||
ensure that all intermediate LSRs have the capability to traverse the | packet received by P1. A load balanced network design using this | |||
maximum label stack depth in order to do effective load balancing. | approach must ensure that all intermediate LSRs have the capability | |||
The use-case for which the tunnel stacking is applied would determine | to traverse the maximum label stack depth as required for that | |||
the maximum label stack depth. | application that uses source routed stacking. | |||
In the case where the hardware is capable of pushing a single <ELI, | In the case where the hardware is capable of pushing a single <ELI, | |||
EL> pair at any depth, this option is the same as the recommended | EL> pair at any depth, this option is the same as the recommended | |||
solution in Section 4. | solution in Section 4. | |||
This option was discounted since there exist a number of hardware | This option was discounted since there exist a number of hardware | |||
implementations which have a low maximum readable label depth. | implementations which have a low maximum readable label depth. | |||
Choosing this option can lead to a loss of load-balancing using EL in | Choosing this option can lead to a loss of load-balancing using EL in | |||
a significant part of the network but that is a critical requirement | a significant part of the network but that is a critical requirement | |||
in a service provider network. | in a service provider network. | |||
5.2. An EL per tunnel in the stack | 5.2. An EL per tunnel in the stack | |||
In this option each tunnel in the stack can be given its own EL. The | In this option each tunnel in the stack can be given its own EL. The | |||
source LSR pushes an <ELI, EL> before pushing a tunnel label when | source LSR pushes an <ELI, EL> before pushing a tunnel label when | |||
load balancing is required to direct traffic on that tunnel. For the | load balancing is required to direct traffic on that tunnel. In the | |||
same Figure 1 above, the source LSR S encoded label stack would be | example described in Section 3, the source LSR S encoded label stack | |||
<SS1, ELI, EL1, S-SvcS1, SS2, ELI, EL2, S-SvcS2, SD> where all the | would be <L_N-P3, ELI, EL, L_A-L1, L_N-D, ELI, EL> where all the ELs | |||
ELs can have the same value. Accessing the EL at an intermediate LSR | can be the same. Accessing the EL at an intermediate LSR is | |||
is independent of the depth of the label stack and hence independent | independent of the depth of the label stack and hence independent of | |||
of the specific use-case to which the stacked tunnels are applied. A | the specific application that uses source stacking on that network. | |||
drawback is that the depth of the label stack grows significantly, | A drawback is that the depth of the label stack grows significantly, | |||
almost 3 times as the number of labels in the label stack. The | almost 3 times as the number of labels in the label stack. The | |||
network design should ensure that source LSRs should have the | network design should ensure that source LSRs should have the | |||
capability to push such a deep label stack. Also, the bandwidth | capability to push such a deep label stack. Also, the bandwidth | |||
overhead and potential MTU issues of deep label stacks should be | overhead and potential MTU issues of deep label stacks should be | |||
accounted for in the network design. | accounted for in the network design. | |||
In the case where the RLD is the minimum value (3) for all LSRs, all | In the case where the RLD is the minimum value (3) for all LSRs, all | |||
LSRs are EL capable and the LSR that is inserting <ELI, EL> pairs has | LSRs are EL capable and the LSR that is inserting <ELI, EL> pairs has | |||
no limit on how many it can insert then this option is the same as | no limit on how many it can insert then this option is the same as | |||
the recommended solution in Section 4. | the recommended solution in Section 4. | |||
skipping to change at page 8, line 20 | skipping to change at page 8, line 11 | |||
terminated tunnel for the next inner tunnel. It does this by storing | terminated tunnel for the next inner tunnel. It does this by storing | |||
the EL from the outer tunnel when that tunnel is terminated and re- | the EL from the outer tunnel when that tunnel is terminated and re- | |||
inserting it below the next inner tunnel label during the label swap | inserting it below the next inner tunnel label during the label swap | |||
operation. The LSR that stacks tunnels SHOULD insert an EL below the | operation. The LSR that stacks tunnels SHOULD insert an EL below the | |||
outermost tunnel. It SHOULD NOT insert ELs for any inner tunnels. | outermost tunnel. It SHOULD NOT insert ELs for any inner tunnels. | |||
Also, the penultimate hop LSR of a segment MUST NOT pop the ELI and | Also, the penultimate hop LSR of a segment MUST NOT pop the ELI and | |||
EL even though they are exposed as the top labels since the | EL even though they are exposed as the top labels since the | |||
terminating LSR of that segment would re-use the EL for the next | terminating LSR of that segment would re-use the EL for the next | |||
segment. | segment. | |||
For the same Figure 1 above, the source LSR S encoded label stack | In Section 3 above, the source LSR S encoded label stack would be | |||
would be <SS11, ELI, EL, S-SvcS1, SS2, S-SvcS2, SD>. At P1 the | <L_N-P3, ELI, EL, L_A-L1, L_N-D>. At P1 the outgoing label stack | |||
outgoing label stack would be <SS1, ELI, EL, S-SvcS1, SS2, S-SvcS2, | would be <L_N-P3, ELI, EL, L_A-L1, L_N-D> after it has load balanced | |||
SD> after it has load balanced to one of the links L1 or L2. At S1 | to one of the links L3 or L4. At P3 the outgoing label stack would | |||
the outgoing label stack would be <SS2, S-SvS2, ELI, EL, SD>. At P2 | be <L_N-D, ELI, EL>. At P2 the outgoing label stack would be <L_N-D, | |||
the outgoing label stack would be <SS2, ELI, EL, S-SvcS2, SD> and it | ELI, EL> and it would load balance to one of the nexthop LSRs P4 or | |||
would load balance to one of the nexthop LSRs P3 or P4. Accessing | P5. Accessing the EL at an intermediate LSR (e.g. P1) is | |||
the EL at an intermediate LSR (e.g. P3) is independent of the depth | independent of the depth of the label stack and hence independent of | |||
of the label stack and hence independent of the specific use-case to | the specific use-case to which the stacked tunnels are applied. | |||
which the stacked tunnels are applied. | ||||
This option was discounted due to the significant change in label | This option was discounted due to the significant change in label | |||
swap operations that would be required for existing hardware. | swap operations that would be required for existing hardware. | |||
5.3.1. EL at top of stack | 5.3.1. EL at top of stack | |||
A slight variant of the re-usable EL option is to keep the EL at the | A slight variant of the re-usable EL option is to keep the EL at the | |||
top of the stack rather than below the tunnel label. In this case | top of the stack rather than below the tunnel label. In this case | |||
each LSR that is not terminating a segment should continue to keep | each LSR that is not terminating a segment should continue to keep | |||
the received EL at the top of the stack when forwarding the packet | the received EL at the top of the stack when forwarding the packet | |||
skipping to change at page 9, line 10 | skipping to change at page 8, line 48 | |||
In this option the source LSR inserts ELs for tunnels in the label | In this option the source LSR inserts ELs for tunnels in the label | |||
stack at depths such that each LSR along the path that must load | stack at depths such that each LSR along the path that must load | |||
balance is able to access at least one EL. Note that the source LSR | balance is able to access at least one EL. Note that the source LSR | |||
may have to insert multiple ELs in the label stack at different | may have to insert multiple ELs in the label stack at different | |||
depths for this to work since intermediate LSRs may have differing | depths for this to work since intermediate LSRs may have differing | |||
capabilities in accessing the depth of a label stack. The label | capabilities in accessing the depth of a label stack. The label | |||
stack depth access value of intermediate LSRs must be known to create | stack depth access value of intermediate LSRs must be known to create | |||
such a label stack. How this value is determined is outside the | such a label stack. How this value is determined is outside the | |||
scope of this document. This value can be advertised using a | scope of this document. This value can be advertised using a | |||
protocol such as an IGP. For the same Figure 1 above, if LSR P1 | protocol such as an IGP. For the same Section 3 above, if LSR P1 | |||
needs to have the EL within a depth of 4, then the source LSR S | needs to have the EL within a depth of 4, then the source LSR S | |||
encoded label stack would be <SS1, S-SvcS1, ELI, EL2, SS2, SD> where | encoded label stack would be <L_N-P3, ELI, EL, L_A-L1, L_N-D, ELI, | |||
all the ELs would typically have the same value. | EL> where all the ELs would typically have the same value. | |||
In the case where the RLD has different values along the path and the | In the case where the RLD has different values along the path and the | |||
LSR that is inserting <ELI, EL> pairs has no limit on how many pairs | LSR that is inserting <ELI, EL> pairs has no limit on how many pairs | |||
it can insert, and it knows the appropriate positions in the stack | it can insert, and it knows the appropriate positions in the stack | |||
where they should be inserted, then this option is the same as the | where they should be inserted, then this option is the same as the | |||
recommended solution in Section 4. | recommended solution in Section 4. | |||
A variant of this solution was selected which balances the number of | A variant of this solution was selected which balances the number of | |||
labels that need to be pushed against the requirement for entropy. | labels that need to be pushed against the requirement for entropy. | |||
6. Acknowledgements | 6. Acknowledgements | |||
The authors would like to thank John Drake and Loa Andersson for | The authors would like to thank John Drake, Loa Andersson, Curtis | |||
their comments. | Villamizar, Greg Mirsky, Markus Jork, Kamran Raza and Nobo Akiya for | |||
their review comments and suggestions. | ||||
7. IANA Considerations | 7. IANA Considerations | |||
This memo includes no request to IANA. | This memo includes no request to IANA. | |||
8. Security Considerations | 8. Security Considerations | |||
This document does not introduce any new security considerations | This document does not introduce any new security considerations | |||
beyond those already listed in [RFC6790]. | beyond those already listed in [RFC6790]. | |||
skipping to change at page 10, line 5 | skipping to change at page 9, line 40 | |||
9.1. Normative References | 9.1. Normative References | |||
[I-D.filsfils-spring-segment-routing] | [I-D.filsfils-spring-segment-routing] | |||
Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., | Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., | |||
Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., | Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., | |||
Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, | Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, | |||
"Segment Routing Architecture", draft-filsfils-spring- | "Segment Routing Architecture", draft-filsfils-spring- | |||
segment-routing-04 (work in progress), July 2014. | segment-routing-04 (work in progress), July 2014. | |||
[I-D.filsfils-spring-segment-routing-use-cases] | ||||
Filsfils, C., Francois, P., Previdi, S., Decraene, B., | ||||
Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., | ||||
Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E. | ||||
Crabbe, "Segment Routing Use Cases", draft-filsfils- | ||||
spring-segment-routing-use-cases-01 (work in progress), | ||||
October 2014. | ||||
[I-D.gredler-spring-mpls] | [I-D.gredler-spring-mpls] | |||
Gredler, H., Rekhter, Y., Jalil, L., Kini, S., and X. Xu, | Gredler, H., Rekhter, Y., Jalil, L., Kini, S., and X. Xu, | |||
"Supporting Source/Explicitly Routed Tunnels via Stacked | "Supporting Source/Explicitly Routed Tunnels via Stacked | |||
LSPs", draft-gredler-spring-mpls-06 (work in progress), | LSPs", draft-gredler-spring-mpls-06 (work in progress), | |||
May 2014. | May 2014. | |||
[I-D.ravisingh-mpls-el-for-seamless-mpls] | [I-D.ravisingh-mpls-el-for-seamless-mpls] | |||
Singh, R., Shen, Y., and J. Drake, "Entropy label for | Singh, R., Shen, Y., and J. Drake, "Entropy label for | |||
seamless MPLS", draft-ravisingh-mpls-el-for-seamless- | seamless MPLS", draft-ravisingh-mpls-el-for-seamless- | |||
mpls-02 (work in progress), July 2014. | mpls-04 (work in progress), October 2014. | |||
[I-D.xu-isis-mpls-elc] | ||||
Xu, X., Kini, S., Sivabalan, S., Filsfils, C., and S. | ||||
Litkowski, "Signaling Entropy Label Capability Using IS- | ||||
IS", draft-xu-isis-mpls-elc-01 (work in progress), | ||||
September 2014. | ||||
[I-D.xu-ospf-mpls-elc] | ||||
Xu, X., Kini, S., Sivabalan, S., Filsfils, C., and S. | ||||
Litkowski, "Signaling Entropy Label Capability Using | ||||
OSPF", draft-xu-ospf-mpls-elc-01 (work in progress), | ||||
October 2014. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC4206] Kompella, K. and Y. Rekhter, "Label Switched Paths (LSP) | [RFC4206] Kompella, K. and Y. Rekhter, "Label Switched Paths (LSP) | |||
Hierarchy with Generalized Multi-Protocol Label Switching | Hierarchy with Generalized Multi-Protocol Label Switching | |||
(GMPLS) Traffic Engineering (TE)", RFC 4206, October 2005. | (GMPLS) Traffic Engineering (TE)", RFC 4206, October 2005. | |||
[RFC6790] Kompella, K., Drake, J., Amante, S., Henderickx, W., and | [RFC6790] Kompella, K., Drake, J., Amante, S., Henderickx, W., and | |||
L. Yong, "The Use of Entropy Labels in MPLS Forwarding", | L. Yong, "The Use of Entropy Labels in MPLS Forwarding", | |||
RFC 6790, November 2012. | RFC 6790, November 2012. | |||
[RFC7325] Villamizar, C., Kompella, K., Amante, S., Malis, A., and | ||||
C. Pignataro, "MPLS Forwarding Compliance and Performance | ||||
Requirements", RFC 7325, August 2014. | ||||
9.2. Informative References | 9.2. Informative References | |||
[I-D.previdi-isis-segment-routing-extensions] | [I-D.filsfils-spring-segment-routing-use-cases] | |||
Filsfils, C., Francois, P., Previdi, S., Decraene, B., | ||||
Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., | ||||
Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E. | ||||
Crabbe, "Segment Routing Use Cases", draft-filsfils- | ||||
spring-segment-routing-use-cases-01 (work in progress), | ||||
October 2014. | ||||
[I-D.ietf-isis-segment-routing-extensions] | ||||
Previdi, S., Filsfils, C., Bashandy, A., Gredler, H., | Previdi, S., Filsfils, C., Bashandy, A., Gredler, H., | |||
Litkowski, S., and J. Tantsura, "IS-IS Extensions for | Litkowski, S., Decraene, B., and J. Tantsura, "IS-IS | |||
Segment Routing", draft-previdi-isis-segment-routing- | Extensions for Segment Routing", draft-ietf-isis-segment- | |||
extensions-05 (work in progress), February 2014. | routing-extensions-03 (work in progress), October 2014. | |||
[I-D.psenak-ospf-segment-routing-extensions] | [I-D.ietf-ospf-segment-routing-extensions] | |||
Psenak, P., Previdi, S., Filsfils, C., Gredler, H., | Psenak, P., Previdi, S., Filsfils, C., Gredler, H., | |||
Shakir, R., Henderickx, W., and J. Tantsura, "OSPF | Shakir, R., Henderickx, W., and J. Tantsura, "OSPF | |||
Extensions for Segment Routing", draft-psenak-ospf- | Extensions for Segment Routing", draft-ietf-ospf-segment- | |||
segment-routing-extensions-05 (work in progress), June | routing-extensions-04 (work in progress), February 2015. | |||
2014. | ||||
[RFC7325] Villamizar, C., Kompella, K., Amante, S., Malis, A., and | ||||
C. Pignataro, "MPLS Forwarding Compliance and Performance | ||||
Requirements", RFC 7325, August 2014. | ||||
Authors' Addresses | Authors' Addresses | |||
Sriganesh Kini (editor) | Sriganesh Kini (editor) | |||
Ericsson | Ericsson | |||
Email: sriganesh.kini@ericsson.com | Email: sriganesh.kini@ericsson.com | |||
Kireeti Kompella | Kireeti Kompella | |||
Juniper | Juniper | |||
End of changes. 30 change blocks. | ||||
129 lines changed or deleted | 146 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |