| < 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.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||