| < draft-ietf-mpls-spring-entropy-label-01.txt | draft-ietf-mpls-spring-entropy-label-02.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: Standards Track K. Kompella | |||
| Expires: March 9, 2016 Juniper | Expires: July 29, 2016 Juniper | |||
| S. Sivabalan | S. Sivabalan | |||
| Cisco | Cisco | |||
| S. Litkowski | S. Litkowski | |||
| Orange | Orange | |||
| R. Shakir | R. Shakir | |||
| X. Xu | X. Xu | |||
| Huawei | Huawei | |||
| W. Hendrickx | W. Hendrickx | |||
| Alcatel-Lucent | Alcatel-Lucent | |||
| J. Tantsura | J. Tantsura | |||
| Ericsson | Ericsson | |||
| September 6, 2015 | January 26, 2016 | |||
| Entropy labels for source routed stacked tunnels | Entropy labels for source routed tunnels with label stacks | |||
| draft-ietf-mpls-spring-entropy-label-01 | draft-ietf-mpls-spring-entropy-label-02 | |||
| Abstract | Abstract | |||
| Source routed tunnel stacking is a technique that can be leveraged to | Source routed tunnels with label stacking is a technique that can be | |||
| provide a method to steer a packet through a controlled set of | leveraged to provide a method to steer a packet through a controlled | |||
| segments. This can be applied to the Multi Protocol Label Switching | set of segments. This can be applied to the Multi Protocol Label | |||
| (MPLS) data plane. Entropy label (EL) is a technique used in MPLS to | Switching (MPLS) data plane. Entropy label (EL) is a technique used | |||
| improve load balancing. This document examines and describes how ELs | in MPLS to improve load balancing. This document examines and | |||
| are to be applied to source routed stacked tunnels. | describes how ELs are to be applied to source routed tunnels with | |||
| label stacks. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 March 9, 2016. | This Internet-Draft will expire on July 29, 2016. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2016 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 requiring multipath load balancing in source stacked | 3. Use-case requiring multipath load balancing . . . . . . . . . 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 . . . . . . . . . . 7 | 5.3. A re-usable EL for a stack of tunnels . . . . . . . . . . 8 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 1. Introduction | 1. Introduction | |||
| The source routed stacked tunnels paradigm is leveraged by techniques | The source routed tunnels with label stacking paradigm is leveraged | |||
| such as Segment Routing (SR) [I-D.filsfils-spring-segment-routing] to | by techniques such as Segment Routing (SR) | |||
| steer a packet through a set of segments. This can be directly | [I-D.ietf-spring-segment-routing] to steer a packet through a set of | |||
| applied to the MPLS data plane, but it has implications on label | segments. This can be directly applied to the MPLS data plane, but | |||
| stack depth. | it has implications on the label stack depth. | |||
| Clarifying statements on label stack depth have been provided in | Clarifying statements on label stack depth have been provided in | |||
| [RFC7325] but they do not address the case of source routed stacked | [RFC7325] but the RFC does not address the case of source routed | |||
| MPLS tunnels as described in [I-D.filsfils-spring-segment-routing] | stacked MPLS tunnels as described in | |||
| where deeper label stacks are more prevalent. | ||||
| [I-D.ietf-spring-segment-routing] where deeper label stacks are more | ||||
| prevalent. | ||||
| Entropy label (EL) [RFC6790] is a technique used in the MPLS data | Entropy label (EL) [RFC6790] is a technique used in the MPLS data | |||
| plane to provide entropy for load balancing. When using LSP | plane to provide entropy for load balancing. When using LSP | |||
| hierarchies there are implications on how [RFC6790] should be | hierarchies there are implications on how [RFC6790] should be | |||
| applied. One such issue is addressed by | applied. The current document addresses the case where the hierarchy | |||
| [I-D.ravisingh-mpls-el-for-seamless-mpls] but that is when different | is created at a single LSR as required by source routed tunnels with | |||
| levels of the hierarchy are created at different LSRs. The current | label stacks. | |||
| document addresses the case where the hierarchy is created at a | ||||
| single LSR as required by source stacked tunnels. | ||||
| A use-case requiring load balancing with source stacked tunnels is | A use-case requiring load balancing with source routed tunnels with | |||
| given in Section 3. A recommended solution is described in Section 4 | label stacks is given in Section 3. A recommended solution is | |||
| keeping in consideration the limitations of implementations when | described in Section 4 keeping in consideration the limitations of | |||
| applying [RFC6790] to deeper label stacks. Options that were | implementations when applying [RFC6790] to deeper label stacks. | |||
| considered to arrive at the recommended solution are documented for | Options that were considered to arrive at the recommended solution | |||
| historical purposes in Section 5. | are documented for historical purposes in Section 5. | |||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| Although this document is not a protocol specification, the use of | Although this document is not a protocol specification, the use of | |||
| this language clarifies the instructions to protocol designers | this language clarifies the instructions to protocol designers | |||
| producing solutions that satisfy the requirements set out in this | producing solutions that satisfy the requirements set out in this | |||
| skipping to change at page 4, line 4 ¶ | skipping to change at page 3, line 50 ¶ | |||
| SR - Segment Routing | SR - Segment Routing | |||
| 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 requiring multipath load balancing in source stacked | 3. Use-case requiring multipath load balancing | |||
| tunnels | ||||
| +------+ | +------+ | |||
| | | | | | | |||
| +-------| P3 |-----+ | +-------| P3 |-----+ | |||
| | +-----| |---+ | | | +-----| |---+ | | |||
| L3| |L4 +------+ L1| |L2 +----+ | L3| |L4 +------+ L1| |L2 +----+ | |||
| | | | | +--| P4 |--+ | | | | | +--| P4 |--+ | |||
| +-----+ +-----+ +-----+ | +----+ | +-----+ | +-----+ +-----+ +-----+ | +----+ | +-----+ | |||
| | S |-----| P1 |------------| P2 |--+ +--| D | | | S |-----| P1 |------------| P2 |--+ +--| D | | |||
| | | | | | |--+ +--| | | | | | | | |--+ +--| | | |||
| +-----+ +-----+ +-----+ | +----+ | +-----+ | +-----+ +-----+ +-----+ | +----+ | +-----+ | |||
| +--| P5 |--+ | +--| P5 |--+ | |||
| +----+ | +----+ | |||
| S=Source LSR, D=Destination LSR, P1,P2,P3,P4,P5=Transit LSRs, | S=Source LSR, D=Destination LSR, P1,P2,P3,P4,P5=Transit LSRs, | |||
| L1,L2,L3,L4=Links | L1,L2,L3,L4=Links | |||
| Figure 1: Traffic engineering use-case | Figure 1: Traffic engineering use-case | |||
| Traffic-engineering (TE) is one of the applications of MPLS and is | Traffic-engineering (TE) is one of the applications of MPLS and is | |||
| also a requirement for source stacked tunnels. Consider the topology | also a requirement for source routed tunnels with label stacks. | |||
| shown in Figure 1. Lets say the LSR P1 has a limitation that it can | Consider the topology shown in Figure 1. Lets say the LSR P1 has a | |||
| only look four labels deep in the stack to do multipath decisions. | limitation that it can only look four labels deep in the stack to do | |||
| All other transit LSRs in the figure can read deep label stacks and | multipath decisions. All other transit LSRs in the figure can read | |||
| the LSR S can insert as many <ELI, EL> pairs as needed. The LSR S | deep label stacks and the LSR S can insert as many <ELI, EL> pairs as | |||
| requires data to be sent to LSR D along a traffic-engineered path | needed. The LSR S requires data to be sent to LSR D along a traffic- | |||
| that goes over the link L1. Good load balancing is also required | engineered path that goes over the link L1. Good load balancing is | |||
| across equal cost paths (including parallel links). To engineer | also required across equal cost paths (including parallel links). To | |||
| traffic along a path that takes link L1, the label stack that LSR S | engineer traffic along a path that takes link L1, the label stack | |||
| creates consists of a label to the node SID of LSR P3, stacked over | that LSR S creates consists of a label to the node SID of LSR P3, | |||
| the label for the adjacency SID of link L1 and that in turn is | stacked over the label for the adjacency SID of link L1 and that in | |||
| stacked over the label to the node SID of LSR D. For simplicity lets | turn is stacked over the label to the node SID of LSR D. For | |||
| assume that all LSRs use the same label space for source stacked | simplicity lets assume that all LSRs use the same label space for | |||
| tunnels. Lets L_N-P denote the label to be used to reach the node | source routed label stacks. Lets L_N-P denote the label to be used | |||
| SID of LSR P. Let L_A-Ln denote the label used for the adjacency SID | to reach the node SID of LSR P. Let L_A-Ln denote the label used for | |||
| for link Ln. The LSR S must use the label stack <L_N-P3, L_A-L1, | the adjacency SID for link Ln. The LSR S must use the label stack | |||
| L_N-D> for traffic-engineering. However to achieve good load | <L_N-P3, L_A-L1, L_N-D> for traffic-engineering. However to achieve | |||
| balancing over the equal cost paths P2-P4-D, P2-P5-D and the parallel | good load balancing over the equal cost paths P2-P4-D, P2-P5-D and | |||
| links L3, L4, a mechanism such as Entropy labels [RFC6790] should be | the parallel links L3, L4, a mechanism such as Entropy labels | |||
| adapted for source stacked tunnels. Multiple ways to apply entropy | [RFC6790] should be adapted for source routed label stacks. Multiple | |||
| labels were considered and are documented in Section 5 along with | ways to apply entropy labels were considered and are documented in | |||
| their tradeoffs. A recommended solution is described in Section 4. | 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 | |||
| skipping to change at page 5, line 30 ¶ | skipping to change at page 5, line 30 ¶ | |||
| 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 tunnel's label below which | inserted in the label stack as long as the tunnel's label below which | |||
| they are inserted are advertised with entropy label capability | they are inserted are advertised with entropy label capability | |||
| enabled. The LSR that inserts <ELI, EL> pairs MAY have limitations | enabled. The LSR that inserts <ELI, EL> pairs MAY have limitations | |||
| on the number of such pairs that it can insert and also the depth at | on the number of such pairs that it can insert and also the depth at | |||
| which it can insert them. If due to any limitation, the inserted ELs | which it can insert them. If due to any limitation, the inserted ELs | |||
| are at positions such that an LSR along the path receives an MPLS | are at positions such that an LSR along the path receives an MPLS | |||
| packet without an EL in the label stack within that LSR's RLD, then | packet without an EL in the label stack within that LSR's RLD, then | |||
| the load balancing performed by that LSR would be poor. Special | the load balancing performed by that LSR would be poor. Special | |||
| attention should be paid when a forwarding adjacency LSP (FA-LSP) | attention should be paid when a forwarding adjacency LSP (FA-LSP) | |||
| [RFC4206] is used as a link along the path of a source stacked LSP, | [RFC4206] is used as a link along the path of a source routed LSP's | |||
| since the labels of the FA-LSP would additionally count towards the | label stack, since the labels of the FA-LSP would additionally count | |||
| depth of the label stack when calculating the appropriate positions | towards the depth of the label stack when calculating the appropriate | |||
| to insert the ELs. The recommendations for inserting <ELI, EL> pairs | positions to insert the ELs. The recommendations for inserting <ELI, | |||
| are: | 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 <ELI, EL> pairs at positions so that | o An LSR SHOULD try to insert <ELI, EL> pairs at positions so that | |||
| for the maximum number of transit LSRs, the EL occurs within the | for the maximum number of transit LSRs, the EL occurs within the | |||
| RLD of the incoming packet to that LSR. | 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. | |||
| skipping to change at page 6, line 24 ¶ | skipping to change at page 6, line 24 ¶ | |||
| 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 | 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 | 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 | 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> | 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 are | |||
| described in separate documents [I-D.xu-isis-mpls-elc] and | described in separate documents [I-D.xu-isis-mpls-elc] and | |||
| [I-D.xu-ospf-mpls-elc]. | [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 routed tunnels | |||
| tunnels are still under discussion and future revisions of this | formed by label stacking are still under discussion and future | |||
| document will address those if needed. | revisions of this document will address those if needed. | |||
| 5. Options considered | 5. Options considered | |||
| Different options that were considered to arrive at the recommended | ||||
| solution are documented in this section. | ||||
| 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) at the bottom of the | |||
| the stacked tunnels. In the example described in Section 3 it will | label stack. In the example described in Section 3 it will result in | |||
| result in the label stack at LSR S to look like <L_N-P3, L_A-L1, L_N- | the label stack at LSR S to look like <L_N-P3, L_A-L1, L_N-D, ELI, | |||
| D, ELI, EL> <remaining packet header>. Note that the notation in | EL> <remaining packet header>. Note that the notation in [RFC6790] | |||
| [RFC6790] is used to describe the label stack. An issue with this | is used to describe the label stack. An issue with this approach is | |||
| approach is that as the label stack grows due an increase in the | that as the label stack grows due an increase in the number of SIDs, | |||
| number of SIDs, the EL goes correspondingly deeper in the label | the EL goes correspondingly deeper in the label stack. Hence transit | |||
| stack. Hence transit LSRs have to access a larger number of bytes in | LSRs have to access a larger number of bytes in the packet header | |||
| the packet header when making forwarding decisions. In the example | when making forwarding decisions. In the example described in | |||
| described in Section 3 the LSR P1 would poorly load-balance traffic | Section 3 the LSR P1 would poorly load-balance traffic on the | |||
| on the parallel links L3, L4 since the EL is below the RLD of the | parallel links L3, L4 since the EL is below the RLD of the packet | |||
| packet received by P1. A load balanced network design using this | received by P1. A load balanced network design using this approach | |||
| approach must ensure that all intermediate LSRs have the capability | must ensure that all intermediate LSRs have the capability to | |||
| to traverse the maximum label stack depth as required for that | traverse the maximum label stack depth as required for that | |||
| application that uses source routed stacking. | 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 | |||
| skipping to change at page 7, line 26 ¶ | skipping to change at page 7, line 28 ¶ | |||
| 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. In the | load balancing is required to direct traffic on that tunnel. In the | |||
| example described in Section 3, the source LSR S encoded label stack | example described in Section 3, the source LSR S encoded label stack | |||
| would be <L_N-P3, ELI, EL, L_A-L1, L_N-D, ELI, EL> where all the ELs | would be <L_N-P3, ELI, EL, L_A-L1, L_N-D, ELI, EL> where all the ELs | |||
| can be the same. Accessing the EL at an intermediate LSR is | can be the same. Accessing the EL at an intermediate LSR is | |||
| independent of the depth of the label stack and hence independent of | independent of the depth of the label stack and hence independent of | |||
| the specific application that uses source stacking on that network. | the specific application that uses source routed tunnels with label | |||
| A drawback is that the depth of the label stack grows significantly, | stacking in that network. A drawback is that the depth of the label | |||
| almost 3 times as the number of labels in the label stack. The | stack grows significantly, almost 3 times as the number of labels in | |||
| network design should ensure that source LSRs should have the | the label stack. The network design should ensure that source LSRs | |||
| capability to push such a deep label stack. Also, the bandwidth | should have the capability to push such a deep label stack. Also, | |||
| overhead and potential MTU issues of deep label stacks should be | the bandwidth overhead and potential MTU issues of deep label stacks | |||
| accounted for in the network design. | should be 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. | |||
| This option was discounted due to the existence of hardware | This option was discounted due to the existence of hardware | |||
| implementations that can push a limited number of labels on the label | implementations that can push a limited number of labels on the label | |||
| stack. Choosing this option would result in a hardware requirement | stack. Choosing this option would result in a hardware requirement | |||
| to push two additional labels per tunnel label. Hence it would | to push two additional labels per tunnel label. Hence it would | |||
| restrict the number of tunnels that can form a LSP and constrain the | restrict the number of tunnels that can form a LSP and constrain the | |||
| types of LSPs that can be created. This was considered unacceptable. | types of LSPs that can be created. This was considered unacceptable. | |||
| 5.3. A re-usable EL for a stack of tunnels | 5.3. A re-usable EL for a stack of tunnels | |||
| In this option an LSR that terminates a tunnel re-uses the EL of the | In this option an LSR that terminates a tunnel re-uses the EL of the | |||
| 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. | |||
| In Section 3 above, the source LSR S encoded label stack would be | In Section 3 above, the source LSR S encoded label stack would be | |||
| <L_N-P3, ELI, EL, L_A-L1, L_N-D>. At P1 the outgoing label stack | <L_N-P3, ELI, EL, L_A-L1, L_N-D>. At P1 the outgoing label stack | |||
| would be <L_N-P3, ELI, EL, L_A-L1, L_N-D> after it has load balanced | would be <L_N-P3, ELI, EL, L_A-L1, L_N-D> after it has load balanced | |||
| to one of the links L3 or L4. At P3 the outgoing label stack would | to one of the links L3 or L4. At P3 the outgoing label stack would | |||
| be <L_N-D, ELI, EL>. At P2 the outgoing label stack would be <L_N-D, | be <L_N-D, ELI, EL>. At P2 the outgoing label stack would be <L_N-D, | |||
| ELI, EL> and it would load balance to one of the nexthop LSRs P4 or | ELI, EL> and it would load balance to one of the nexthop LSRs P4 or | |||
| P5. Accessing the EL at an intermediate LSR (e.g. P1) is | P5. Accessing the EL at an intermediate LSR (e.g. P1) is | |||
| independent of the depth of the label stack and hence independent of | independent of the depth of the label stack and hence independent of | |||
| the specific use-case to which the stacked tunnels are applied. | the specific use-case to which the label stack is 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 22 ¶ | skipping to change at page 9, line 28 ¶ | |||
| 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, Loa Andersson, Curtis | The authors would like to thank John Drake, Loa Andersson, Curtis | |||
| Villamizar, Greg Mirsky, Markus Jork, Kamran Raza and Nobo Akiya for | Villamizar, Greg Mirsky, Markus Jork, Kamran Raza and Nobo Akiya for | |||
| their review comments and suggestions. | 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. Note to RFC Editor: Remove | |||
| this section before publication. | ||||
| 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]. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [I-D.filsfils-spring-segment-routing] | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., | Requirement Levels", BCP 14, RFC 2119, | |||
| Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., | DOI 10.17487/RFC2119, March 1997, | |||
| Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, | <http://www.rfc-editor.org/info/rfc2119>. | |||
| "Segment Routing Architecture", draft-filsfils-spring- | ||||
| segment-routing-04 (work in progress), July 2014. | ||||
| [I-D.ravisingh-mpls-el-for-seamless-mpls] | [RFC6790] Kompella, K., Drake, J., Amante, S., Henderickx, W., and | |||
| Singh, R., Shen, Y., and J. Drake, "Entropy label for | L. Yong, "The Use of Entropy Labels in MPLS Forwarding", | |||
| seamless MPLS", draft-ravisingh-mpls-el-for-seamless- | RFC 6790, DOI 10.17487/RFC6790, November 2012, | |||
| mpls-04 (work in progress), October 2014. | <http://www.rfc-editor.org/info/rfc6790>. | |||
| 9.2. Informative References | ||||
| [I-D.ietf-spring-segment-routing] | ||||
| Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., | ||||
| and r. rjs@rob.sh, "Segment Routing Architecture", draft- | ||||
| ietf-spring-segment-routing-07 (work in progress), | ||||
| December 2015. | ||||
| [I-D.xu-isis-mpls-elc] | [I-D.xu-isis-mpls-elc] | |||
| Xu, X., Kini, S., Sivabalan, S., Filsfils, C., and S. | Xu, X., Kini, S., Sivabalan, S., Filsfils, C., and S. | |||
| Litkowski, "Signaling Entropy Label Capability Using IS- | Litkowski, "Signaling Entropy Label Capability Using IS- | |||
| IS", draft-xu-isis-mpls-elc-02 (work in progress), April | IS", draft-xu-isis-mpls-elc-02 (work in progress), April | |||
| 2015. | 2015. | |||
| [I-D.xu-ospf-mpls-elc] | [I-D.xu-ospf-mpls-elc] | |||
| Xu, X., Kini, S., Sivabalan, S., Filsfils, C., and S. | Xu, X., Kini, S., Sivabalan, S., Filsfils, C., and S. | |||
| Litkowski, "Signaling Entropy Label Capability Using | Litkowski, "Signaling Entropy Label Capability Using | |||
| OSPF", draft-xu-ospf-mpls-elc-01 (work in progress), | OSPF", draft-xu-ospf-mpls-elc-01 (work in progress), | |||
| October 2014. | October 2014. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | ||||
| Requirement Levels", BCP 14, RFC 2119, | ||||
| DOI 10.17487/RFC2119, March 1997, | ||||
| <http://www.rfc-editor.org/info/rfc2119>. | ||||
| [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, | (GMPLS) Traffic Engineering (TE)", RFC 4206, | |||
| DOI 10.17487/RFC4206, October 2005, | DOI 10.17487/RFC4206, October 2005, | |||
| <http://www.rfc-editor.org/info/rfc4206>. | <http://www.rfc-editor.org/info/rfc4206>. | |||
| [RFC6790] Kompella, K., Drake, J., Amante, S., Henderickx, W., and | ||||
| L. Yong, "The Use of Entropy Labels in MPLS Forwarding", | ||||
| RFC 6790, DOI 10.17487/RFC6790, November 2012, | ||||
| <http://www.rfc-editor.org/info/rfc6790>. | ||||
| 9.2. Informative References | ||||
| [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., | ||||
| Litkowski, S., Decraene, B., and J. Tantsura, "IS-IS | ||||
| Extensions for Segment Routing", draft-ietf-isis-segment- | ||||
| routing-extensions-05 (work in progress), June 2015. | ||||
| [I-D.ietf-ospf-segment-routing-extensions] | ||||
| Psenak, P., Previdi, S., Filsfils, C., Gredler, H., | ||||
| Shakir, R., Henderickx, W., and J. Tantsura, "OSPF | ||||
| Extensions for Segment Routing", draft-ietf-ospf-segment- | ||||
| routing-extensions-05 (work in progress), June 2015. | ||||
| [RFC7325] Villamizar, C., Ed., Kompella, K., Amante, S., Malis, A., | [RFC7325] Villamizar, C., Ed., Kompella, K., Amante, S., Malis, A., | |||
| and C. Pignataro, "MPLS Forwarding Compliance and | and C. Pignataro, "MPLS Forwarding Compliance and | |||
| Performance Requirements", RFC 7325, DOI 10.17487/RFC7325, | Performance Requirements", RFC 7325, DOI 10.17487/RFC7325, | |||
| August 2014, <http://www.rfc-editor.org/info/rfc7325>. | August 2014, <http://www.rfc-editor.org/info/rfc7325>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Sriganesh Kini (editor) | Sriganesh Kini (editor) | |||
| Ericsson | Ericsson | |||
| End of changes. 29 change blocks. | ||||
| 137 lines changed or deleted | 116 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||