diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8595.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8595.txt')
-rw-r--r-- | doc/rfc/rfc8595.txt | 1795 |
1 files changed, 1795 insertions, 0 deletions
diff --git a/doc/rfc/rfc8595.txt b/doc/rfc/rfc8595.txt new file mode 100644 index 0000000..1a41250 --- /dev/null +++ b/doc/rfc/rfc8595.txt @@ -0,0 +1,1795 @@ + + + + + + +Internet Engineering Task Force (IETF) A. Farrel +Request for Comments: 8595 Old Dog Consulting +Category: Standards Track S. Bryant +ISSN: 2070-1721 Futurewei + J. Drake + Juniper Networks + June 2019 + + + An MPLS-Based Forwarding Plane for Service Function Chaining + +Abstract + + This document describes how Service Function Chaining (SFC) can be + achieved in an MPLS network by means of a logical representation of + the Network Service Header (NSH) in an MPLS label stack. That is, + the NSH is not used, but the fields of the NSH are mapped to fields + in the MPLS label stack. This approach does not deprecate or replace + the NSH, but it acknowledges that there may be a need for an interim + deployment of SFC functionality in brownfield networks. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc8595. + + + + + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 1] + +RFC 8595 MPLS SFC June 2019 + + +Copyright Notice + + Copyright (c) 2019 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Introduction ....................................................3 + 2. Requirements Language ...........................................4 + 3. Choice of Data-Plane SPI/SI Representation ......................4 + 4. Use Case Scenarios ..............................................5 + 4.1. Label Swapping for Logical NSH .............................5 + 4.2. Hierarchical Encapsulation .................................5 + 4.3. Fine Control of Service Function Instances .................6 + 4.4. Micro Chains and Label Stacking ............................6 + 4.5. SFC and Segment Routing ....................................6 + 5. Basic Unit of Representation ....................................6 + 6. MPLS Label Swapping .............................................7 + 7. MPLS Label Stacking ............................................10 + 8. Mixed-Mode Forwarding ..........................................12 + 9. A Note on Service Function Capabilities and SFC Proxies ........13 + 10. Control-Plane Considerations ..................................14 + 11. Use of the Entropy Label ......................................14 + 12. Metadata ......................................................15 + 12.1. Indicating Metadata in User Data Packets .................16 + 12.2. In-Band Programming of Metadata ..........................18 + 12.2.1. Loss of In-Band Metadata ..........................21 + 13. Worked Examples ...............................................22 + 14. Implementation Notes ..........................................26 + 15. Security Considerations .......................................26 + 16. IANA Considerations ...........................................28 + 17. References ....................................................29 + 17.1. Normative References .....................................29 + 17.2. Informative References ...................................30 + Acknowledgements ..................................................31 + Contributors ......................................................31 + Authors' Addresses ................................................32 + + + + +Farrel, et al. Standards Track [Page 2] + +RFC 8595 MPLS SFC June 2019 + + +1. Introduction + + Service Function Chaining (SFC) is the process of directing packets + through a network so that they can be acted on by an ordered set of + abstract Service Functions (SFs) before being delivered to the + intended destination. An architecture for SFC is defined in + [RFC7665]. + + When applying a particular service function chain to the traffic + selected by a service classifier, the traffic needs to be steered + through an ordered set of SFs in the network. This ordered set of + SFs is termed a Service Function Path (SFP), and the traffic is + passed between Service Function Forwarders (SFFs) that are + responsible for delivering the packets to the SFs and for forwarding + them onward to the next SFF. + + In order to steer the selected traffic between SFFs and to the + correct SFs, the service classifier needs to attach information to + each packet. This information indicates the SFP on which the packet + is being forwarded and hence the SFs to which it must be delivered. + The information also indicates the progress the packet has already + made along the SFP. + + The Network Service Header (NSH) [RFC8300] has been defined to carry + the necessary information for SFC in packets. The NSH can be + inserted into packets and contains various information, including a + Service Path Identifier (SPI), a Service Index (SI), and a Time To + Live (TTL) counter. + + Multiprotocol Label Switching (MPLS) [RFC3031] is a widely deployed + forwarding technology that uses labels placed in a packet in a label + stack to identify the forwarding actions to be taken at each hop + through a network. Actions may include swapping or popping the + labels as well as using the labels to determine the next hop for + forwarding the packet. Labels may also be used to establish the + context under which the packet is forwarded. In many cases, MPLS + will be used as a tunneling technology to carry packets through + networks between SFFs. + + This document describes how SFC can be achieved in an MPLS network by + means of a logical representation of the NSH in an MPLS label stack. + This approach is applicable to all forms of MPLS forwarding (where + labels are looked up at each hop and are swapped or popped + [RFC3031]). It does not deprecate or replace the NSH, but it + acknowledges that there may be a need for an interim deployment of + SFC functionality in brownfield networks. The mechanisms described + in this document are a compromise between the full function that can + be achieved using the NSH and the benefits of reusing the existing + + + +Farrel, et al. Standards Track [Page 3] + +RFC 8595 MPLS SFC June 2019 + + + MPLS forwarding paradigms (the approach defined here does not include + the O bit defined in [RFC8300] and has some limitations to the use of + metadata as described in Section 12). + + Section 4 provides a short overview of several use case scenarios + that help to explain the relationship between the MPLS label + operations (swapping, popping, stacking) and the MPLS encoding of the + logical NSH described in this document. + + It is assumed that the reader is fully familiar with the terms and + concepts introduced in [RFC7665] and [RFC8300]. + + Note that one of the features of the SFC architecture described in + [RFC7665] is the "SFC proxy", which exists to include legacy SFs that + are not able to process NSH-encapsulated packets. This issue is + equally applicable to the use of MPLS-encapsulated packets that + encode a logical representation of an NSH. It is discussed further + in Section 9. + +2. Requirements Language + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + +3. Choice of Data-Plane SPI/SI Representation + + While [RFC8300] defines the NSH that can be used in a number of + environments, this document provides a mechanism to handle situations + in which the NSH is not ubiquitously deployed. In this case, it is + possible to use an alternative data-plane representation of the + SPI/SI by carrying the identical semantics in MPLS labels. + + In order to correctly select the mechanism by which SFC information + is encoded and carried between SFFs, it may be necessary to configure + the capabilities and choices either within the whole Service Function + Overlay Network or on a hop-by-hop basis. It is a requirement that + both ends of a tunnel over the underlay network (i.e., a pair of SFFs + adjacent in the SFP) know that the tunnel is used for SFC and know + what form of NSH representation is used. A control-plane signaling + approach to achieve these objectives is provided using BGP in + [BGP-NSH-SFC]. + + + + + + + +Farrel, et al. Standards Track [Page 4] + +RFC 8595 MPLS SFC June 2019 + + + Note that the encoding of the SFC information is independent of the + choice of tunneling technology used between SFFs. Thus, an MPLS + representation of the logical NSH (as defined in this document) may + be used even if the tunnel between a pair of SFFs is not an MPLS + tunnel. Conversely, MPLS tunnels may be used to carry other + encodings of the logical NSH (specifically, the NSH itself). + +4. Use Case Scenarios + + There are five scenarios that can be considered for the use of an + MPLS encoding in support of SFC. These are set out in the following + subsections. + +4.1. Label Swapping for Logical NSH + + The primary use case for SFC is described in [RFC7665] and delivered + using the NSH, which, as described in [RFC8300], uses an + encapsulation with a position indicator that is modified at each SFC + hop along the chain to indicate the next hop. + + The label-swapping use case scenario effectively replaces the NSH + with an MPLS encapsulation as described in Section 6. The MPLS + labels encode the same information as the NSH to form a logical NSH. + The labels are modified (swapped per [RFC3031]) at each SFC hop along + the chain to indicate the next hop. The processing and the + forwarding state for a chain (i.e., the actions to take on a received + label) are programmed into the network using a control plane or + management plane. + +4.2. Hierarchical Encapsulation + + [RFC8459] describes an architecture for hierarchical encapsulation + using the NSH. It facilitates partitioning of SFC domains for + administrative reasons and allows concatenation of service function + chains under the control of a service classifier. + + The same function can be achieved in an MPLS network using an MPLS + encoding of the logical NSH, and label stacking as defined in + [RFC3031] and described in Section 7. In this model, swapping is + used per Section 4.1 to navigate one chain, and when the end of the + chain is reached, the final label is popped, revealing the label for + another chain. Thus, the primary mode is swapping, but stacking is + used to enable the ingress classifier to control concatenation of + service function chains. + + + + + + + +Farrel, et al. Standards Track [Page 5] + +RFC 8595 MPLS SFC June 2019 + + +4.3. Fine Control of Service Function Instances + + It may be that a service function chain (as described in Section 4.1) + allows some leeway in the choice of service function instances along + the chain. However, it may be that a service classifier wishes to + constrain the choice and this can be achieved using chain + concatenation so that the first chain ends at the point of choice, + the next label in the stack indicates the specific service function + instance to be executed, and the next label in the stack starts a new + chain. Thus, a mixture of label swapping and stacking is used. + +4.4. Micro Chains and Label Stacking + + The scenario in Section 4.2 may be extended to its logical extreme by + making each concatenated chain as short as it can be: one SF. Each + label in the stack indicates the next SF to be executed, and the + network is programmed through the control plane or management plane + to know how to route to the next (i.e., first) hop in each chain just + as it would be to support the scenarios in Sections 4.1 and 4.2. + + This scenario is functionally identical to the use of Segment Routing + (SR) in an MPLS network (known as SR-MPLS) for SFC, as described in + Section 4.5, and the discussion in that section applies to this + section as well. + +4.5. SFC and Segment Routing + + SR-MPLS uses a stack of MPLS labels to encode information about the + path and network functions that a packet should traverse. SR-MPLS is + achieved by applying control-plane and management-plane techniques to + program the MPLS forwarding plane and by imposing labels on packets + at the entrance to the SR-MPLS network. An implementation proposal + for achieving SFC using SR-MPLS can be found in [SR-Srv-Prog] and is + not discussed further in this document. + +5. Basic Unit of Representation + + When an MPLS label stack is used to carry a logical NSH, a basic unit + of representation is used. This unit comprises two MPLS labels, as + shown below. The unit may be present one or more times in the label + stack as explained in subsequent sections. + + In order to convey the same information as is present in the NSH, two + MPLS label stack entries are used. One carries a label to provide + context within the SFC scope (the SFC Context Label), and the other + carries a label to show which SF is to be actioned (the SF Label). + This two-label unit is shown in Figure 1. + + + + +Farrel, et al. Standards Track [Page 6] + +RFC 8595 MPLS SFC June 2019 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | SFC Context Label | TC |S| TTL | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | SF Label | TC |S| TTL | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 1: The Basic Unit of MPLS Label Stack for SFC + + The fields of these two label stack entries are encoded as follows: + + Label: The Label fields contain the values of the SFC Context Label + and the SF Label encoded as 20-bit integers. The precise + semantics of these Label fields are dependent on whether the label + stack entries are used for MPLS label swapping (see Section 6) or + MPLS label stacking (see Section 7). + + TC: The TC bits have no meaning in this case. They SHOULD be set to + zero in both label stack entries when a packet is sent and MUST be + ignored on receipt. + + S: The "Bottom of Stack" bit has its usual meaning in MPLS. It MUST + be clear in the SFC Context Label stack entry. In the SF Label + stack entry, it MUST be clear in all cases except when the label + is the bottom of the stack, when it MUST be set. + + TTL: The TTL field in the SFC Context Label stack entry SHOULD be + set to 1. The TTL in the SF Label stack entry (called the SF TTL) + is set according to its use for MPLS label swapping (see + Section 6) or MPLS label stacking (see Section 7) and is used to + mitigate packet loops. + + The sections that follow show how this basic unit of MPLS label stack + may be used for SFC in the MPLS label-swapping case and in the MPLS + label-stacking case. For simplicity, these sections do not describe + the use of metadata; that topic is covered separately in Section 12. + +6. MPLS Label Swapping + + This section describes how the basic unit of MPLS label stack for SFC + (introduced in Section 5) is used when MPLS label swapping is in use. + The use case scenario for this approach is introduced in Section 4.1. + + As can be seen in Figure 2, the top of the label stack comprises the + labels necessary to deliver the packet over the MPLS tunnel between + SFFs. Any MPLS encapsulation may be used (i.e., MPLS, MPLS in UDP, + MPLS in GRE, and MPLS in Virtual Extensible Local Area Networks + + + +Farrel, et al. Standards Track [Page 7] + +RFC 8595 MPLS SFC June 2019 + + + (VXLANs) or the Generic Protocol Extension for VXLAN (GPE)); thus, + the tunnel technology does not need to be MPLS, but MPLS is shown + here for simplicity. + + An entropy label [RFC6790] may also be present, as described in + Section 11. + + --------------- + ~ Tunnel Labels ~ + +---------------+ + ~ Optional ~ + ~ Entropy Label ~ + +---------------+ - - - + | SPI Label | + +---------------+ Basic unit of MPLS label stack for SFC + | SI Label | + +---------------+ - - - + | | + ~ Payload ~ + | | + --------------- + + Figure 2: The MPLS SFC Label Stack + + Under these labels (or other encapsulation) comes a single instance + of the basic unit of MPLS label stack for SFC. In addition to the + interpretation of the fields of these label stack entries (provided + in Section 5), the following meanings are applied: + + SPI Label: The Label field of the SFC Context Label stack entry + contains the value of the SPI encoded as a 20-bit integer. The + semantics of the SPI are exactly as defined in [RFC8300]. Note + that an SPI as defined by [RFC8300] can be encoded in 3 octets + (i.e., 24 bits), but that the Label field allows for only 20 bits + and reserves the values 0 through 15 as "special-purpose labels" + [RFC7274]. Thus, a system using MPLS representation of the + logical NSH MUST NOT assign SPI values greater than 2^20 - 1 or + less than 16. + + SI Label: The Label field of the SF Label stack entry contains the + value of the SI exactly as defined in [RFC8300]. Since the SI + requires only 8 bits, and to avoid overlap with the + special-purpose label range of 0 through 15 [RFC7274], the SI is + carried in the top (most significant) 8 bits of the Label field + with the low-order 12 bits set to zero. + + TC: The TC fields are as described in Section 5. + + + + +Farrel, et al. Standards Track [Page 8] + +RFC 8595 MPLS SFC June 2019 + + + S: The S bits are as described in Section 5. + + TTL: The TTL field in the SPI Label stack entry SHOULD be set to 1 + as stated in Section 5. The TTL in the SF Label stack entry is + decremented once for each forwarding hop in the SFP, i.e., for + each SFF transited, and so mirrors the TTL field in the NSH. + + The following processing rules apply to the Label fields: + + o When a classifier inserts a packet onto an SFP, it sets the SPI + Label to indicate the identity of the SFP and sets the SI Label to + indicate the first SF in the path. + + o When a component of the SFC system processes a packet, it uses the + SPI Label to identify the SFP and the SI Label to determine which + SFF or instance of an SF (an SFI) to deliver the packet to. Under + normal circumstances (with the exception of branching and + reclassification -- see [BGP-NSH-SFC]), the SPI Label value is + preserved on all packets. The SI Label value is modified by SFFs + and through reclassification to indicate the next hop along + the SFP. + + The following processing rules apply to the TTL field of the SF Label + stack entry and are derived from Section 2.2 of [RFC8300]: + + o When a classifier places a packet onto an SFP, it MUST set the TTL + to a value between 1 and 255. It SHOULD set this according to the + expected length of the SFP (i.e., the number of SFs on the SFP), + but it MAY set it to a larger value according to local + configuration. The maximum TTL value supported in an NSH is 63, + and so the practical limit here may also be 63. + + o When an SFF receives a packet from any component of the SFC system + (classifier, SFI, or another SFF), it MUST discard any packets + with TTL set to zero. It SHOULD log such occurrences but MUST + apply rate limiting to any such logs. + + o An SFF MUST decrement the TTL by one each time it performs a + lookup to forward a packet to the next SFF. + + o If an SFF decrements the TTL to zero, it MUST NOT send the packet + and MUST discard the packet. It SHOULD log such occurrences but + MUST apply rate limiting to any such logs. + + o SFIs MUST ignore the TTL but MUST mirror it back to the SFF + unmodified along with the SI (which may have been changed by local + reclassification). + + + + +Farrel, et al. Standards Track [Page 9] + +RFC 8595 MPLS SFC June 2019 + + + o If a classifier along the SFP makes any change to the intended + path of the packet, including for looping, jumping, or branching + (see [BGP-NSH-SFC]), it MUST NOT change the SI TTL of the packet. + In particular, each component of the SFC system MUST NOT increase + the SI TTL value; otherwise, loops may go undetected. + +7. MPLS Label Stacking + + This section describes how the basic unit of MPLS label stack for SFC + (introduced in Section 5) is used when MPLS label stacking is used to + carry information about the SFP and SFs to be executed. The use case + scenarios for this approach are introduced in Section 4. + + As can be seen in Figure 3, the top of the label stack comprises the + labels necessary to deliver the packet over the MPLS tunnel between + SFFs. Any MPLS encapsulation may be used. + + ------------------- + ~ Tunnel Labels ~ + +-------------------+ + ~ Optional ~ + ~ Entropy Label ~ + +-------------------+ - - - + | SFC Context Label | + +-------------------+ Basic unit of MPLS label stack for SFC + | SF Label | + +-------------------+ - - - + | SFC Context Label | + +-------------------+ Basic unit of MPLS label stack for SFC + | SF Label | + +-------------------+ - - - + ~ ~ + +-------------------+ - - - + | SFC Context Label | + +-------------------+ Basic unit of MPLS label stack for SFC + | SF Label | + +-------------------+ - - - + | | + ~ Payload ~ + | | + ------------------- + + Figure 3: The MPLS SFC Label Stack for Label Stacking + + An entropy label [RFC6790] may also be present, as described in + Section 11. + + + + + +Farrel, et al. Standards Track [Page 10] + +RFC 8595 MPLS SFC June 2019 + + + Under these labels comes one or more instances of the basic unit of + MPLS label stack for SFC. In addition to the interpretation of the + fields of these label stack entries (provided in Section 5), the + following meanings are applied: + + SFC Context Label: The Label field of the SFC Context Label stack + entry contains a label that delivers SFC context. This label + contains the SPI, encoded as a 20-bit integer using the semantics + exactly as defined in [RFC8300]. Note that in this case a system + using MPLS representation of the logical NSH MUST NOT assign SPI + values greater than 2^20 - 1 or less than 16. This label may also + be used to convey other SFC context-specific semantics, such as + indicating how to interpret the SF Label or how to forward the + packet to the node that offers the SF if so configured and + coordinated with the controller that programs the labels for + the SFP. + + SF Label: The Label field of the SF Label stack entry contains a + value that identifies the next SFI to be actioned for the packet. + This label may be scoped globally or within the context of the + preceding SFC Context Label and comes from the range + 16 ... 2^20 - 1. + + TC: The TC fields are as described in Section 5. + + S: The S bits are as described in Section 5. + + TTL: The TTL fields in the SFC Context Label stack entry and in the + SF Label stack entry SHOULD be set to 1 as stated in Section 5 but + MAY be set to larger values if the label indicated a forwarding + operation towards the node that hosts the SF. + + The following processing rules apply to the Label fields: + + o When a classifier inserts a packet onto an SFP, it adds a stack + comprising one or more instances of the basic unit of MPLS label + stack for SFC. Taken together, this stack defines the SFs to be + actioned and so defines the SFP that the packet will traverse. + + o When a component of the SFC system processes a packet, it uses the + top basic unit of label stack for SFC to determine to which SFI to + next deliver the packet. When an SFF receives a packet, it + examines the top basic unit of MPLS label stack for SFC to + determine where to send the packet next. If the next recipient is + a local SFI, the SFF strips the basic unit of MPLS label stack for + SFC before forwarding the packet. + + + + + +Farrel, et al. Standards Track [Page 11] + +RFC 8595 MPLS SFC June 2019 + + +8. Mixed-Mode Forwarding + + The previous sections describe homogeneous networks where SFC + forwarding is either all label swapping or all label popping + (stacking). This simplification helps to clarify the explanation of + the mechanisms. + + However, as described in Section 4.2, some use cases may use label + swapping and stacking at the same time. Furthermore, it is also + possible that different parts of the network utilize swapping or + popping such that an end-to-end service chain has to utilize a + combination of both techniques. It is also worth noting that a + classifier may be content to use an SFP as installed in the network + by a control plane or management plane and so would use label + swapping, but that there may be a point in the SFP where a choice of + SFIs can be made (perhaps for load balancing) and where, in this + instance, the classifier wishes to exert control over that choice by + use of a specific entry on the label stack as described in + Section 4.3. + + When an SFF receives a packet containing an MPLS label stack, it + checks from the context of the incoming interface, and from the SFP + indicated by the top label, whether it is processing an {SPI, SI} + label pair for label swapping or a {context label, SFI index} label + pair for label stacking. It then selects the appropriate SFI to + which to send the packet. When it receives the packet back from the + SFI, it has four cases to consider. + + o If the current hop requires an {SPI, SI} and the next hop requires + an {SPI, SI}, it sets the SPI Label according to the SFP to be + traversed, selects an instance of the SF to be executed at the + next hop, sets the SI Label to the SI value of the next hop, and + tunnels the packet to the SFF for that SFI. + + o If the current hop requires an {SPI, SI} and the next hop requires + a {context label, SFI Label}, it pops the {SPI, SI} from the top + of the MPLS label stack and tunnels the packet to the SFF + indicated by the context label. + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 12] + +RFC 8595 MPLS SFC June 2019 + + + o If the current hop requires a {context label, SFI Label}, it pops + the {context label, SFI Label} from the top of the MPLS label + stack. + + * If the new top of the MPLS label stack contains an {SPI, SI} + label pair, it selects an SFI to use at the next hop and + tunnels the packet to the SFF for that SFI. + + * If the new top of the MPLS label stack contains a {context + label, SFI Label}, it tunnels the packet to the SFF indicated + by the context label. + +9. A Note on Service Function Capabilities and SFC Proxies + + The concept of an "SFC proxy" is introduced in [RFC7665]. An SFC + proxy is logically located between an SFF and an SFI that is not + "SFC aware". Such SFIs are not capable of handling the SFC + encapsulation (whether that be NSH or MPLS) and need the + encapsulation stripped from the packets they are to process. In many + cases, legacy SFIs that were once deployed as "bumps in the wire" fit + into this category until they have been upgraded to be SFC aware. + + The job of an SFC proxy is to remove and then reimpose SFC + encapsulation so that the SFF is able to process as though it was + communication with an SFC-aware SFI, and so that the SFI is unaware + of the SFC encapsulation. In this regard, the job of an SFC proxy is + no different when NSH encapsulation is used and when MPLS + encapsulation is used as described in this document, although (of + course) it is different encapsulation bytes that must be removed and + reimposed. + + It should be noted that the SFC proxy is a logical function. It + could be implemented as a separate physical component on the path + from the SFF to the SFI, but it could be co-resident with the SFF or + it could be a component of the SFI. This is purely an implementation + choice. + + Note also that the delivery of metadata (see Section 12) requires + specific processing if an SFC proxy is in use. This is also no + different when NSH functionality or the MPLS encoding defined in this + document is in use, and how it is handled will depend on how (or if) + each non-SFC-aware SFI can receive metadata. + + + + + + + + + +Farrel, et al. Standards Track [Page 13] + +RFC 8595 MPLS SFC June 2019 + + +10. Control-Plane Considerations + + In order that a packet may be forwarded along an SFP, several + functional elements must be executed. + + o Discovery/advertisement of SFIs. + + o Computation of the SFP. + + o Programming of classifiers. + + o Advertisement of forwarding instructions. + + Various approaches may be taken. These include a fully centralized + model where SFFs report to a central controller the SFIs that they + support, the central controller computes the SFP and programs the + classifiers, and (if the label-swapping approach is taken) the + central controller installs forwarding state in the SFFs that lie on + the SFP. + + Alternatively, a dynamic control plane may be used, such as that + described in [BGP-NSH-SFC]. In this case, the SFFs use the control + plane to advertise the SFIs that they support, a central controller + computes the SFP and programs the classifiers, and (if the + label-swapping approach is taken) the central controller uses the + control plane to advertise the SFPs so that SFFs that lie on the SFP + can install the necessary forwarding state. + +11. Use of the Entropy Label + + Entropy is used in ECMP situations to ensure that packets from the + same flow travel down the same path, thus avoiding jitter or + reordering issues within a flow. + + Entropy is often determined by hashing on specific fields in a packet + header, such as the "five-tuple" in the IP and transport headers. + However, when an MPLS label stack is present, the depth of the stack + could be too large for some processors to correctly determine the + entropy hash. This problem is addressed by the inclusion of an + entropy label as described in [RFC6790]. + + + + + + + + + + + +Farrel, et al. Standards Track [Page 14] + +RFC 8595 MPLS SFC June 2019 + + + When entropy is desired for packets as they are carried in MPLS + tunnels over the underlay network, it is RECOMMENDED that an entropy + label be included in the label stack immediately after the tunnel + labels and before the SFC Labels, as shown in Figures 2 and 3. + + If an entropy label is present in an MPLS payload, it is RECOMMENDED + that the initial classifier use that value in an entropy label + inserted in the label stack when the packet is forwarded (on the + first tunnel) to the first SFF. In this case, it is not necessary to + remove the entropy label from the payload. + +12. Metadata + + Metadata is defined in [RFC7665] as providing "the ability to + exchange context information between classifiers and SFs, and among + SFs." [RFC8300] defines how this context information can be directly + encoded in fields that form part of the NSH encapsulation. + + Sections 12.1 and 12.2 describe how metadata is associated with user + data packets, and how metadata may be exchanged between SFC nodes in + the network, when using an MPLS encoding of the logical + representation of the NSH. + + It should be noted that the MPLS encoding is less functional than the + direct use of the NSH. Both methods support metadata that is + "per-SFP" or "per-flow" (see [RFC8393] for definitions of these + terms), but "per-packet" metadata (where the metadata must be carried + on each packet because it differs from one packet to the next even on + the same flow or SFP) is only supported using the NSH and not using + the mechanisms defined in this document. + + + + + + + + + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 15] + +RFC 8595 MPLS SFC June 2019 + + +12.1. Indicating Metadata in User Data Packets + + Metadata is achieved in the MPLS realization of the logical NSH by + the use of an SFC Metadata Label, which uses the extended + special-purpose label construct [RFC7274]. Thus, three label stack + entries are present, as shown in Figure 4: + + o The Extension Label (value 15). + + o An extended special-purpose label called the Metadata Label + Indicator (MLI) (value 16). + + o The Metadata Label (ML). + + ---------------- + | Extension = 15 | + +----------------+ + | MLI | + +----------------+ + | Metadata Label | + ---------------- + + Figure 4: The MPLS SFC Metadata Label + + The Metadata Label value is an index into a table of metadata that is + programmed into the network using in-band or out-of-band mechanisms. + Out-of-band mechanisms potentially include management-plane and + control-plane solutions (such as [BGP-NSH-SFC]) but are out of scope + for this document. The in-band mechanism is described in + Section 12.2. + + The SFC Metadata Label (as a set of three labels as indicated in + Figure 4) may be present zero, one, or more times in an MPLS SFC + packet. For MPLS label swapping, the SFC Metadata Labels are placed + immediately after the basic unit of MPLS label stack for SFC, as + shown in Figure 5. For MPLS label stacking, the SFC Metadata Labels + are placed at the bottom of the label stack, as shown in Figure 6. + + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 16] + +RFC 8595 MPLS SFC June 2019 + + + ---------------- + ~ Tunnel Labels ~ + +----------------+ + ~ Optional ~ + ~ Entropy Label ~ + +----------------+ + | SPI Label | + +----------------+ + | SI Label | + +----------------+ + | Extension = 15 | + +----------------+ + | MLI | + +----------------+ + | Metadata Label | + +----------------+ + ~ Other ~ + | Metadata | + ~ Label Triples ~ + +----------------+ + | | + ~ Payload ~ + | | + ---------------- + + Figure 5: The MPLS SFC Label Stack for Label Swapping + with Metadata Label + + + + + + + + + + + + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 17] + +RFC 8595 MPLS SFC June 2019 + + + ------------------- + ~ Tunnel Labels ~ + +-------------------+ + ~ Optional ~ + ~ Entropy Label ~ + +-------------------+ + | SFC Context Label | + +-------------------+ + | SF Label | + +-------------------+ + ~ ~ + +-------------------+ + | SFC Context Label | + +-------------------+ + | SF Label | + +-------------------+ + | Extension = 15 | + +-------------------+ + | MLI | + +-------------------+ + | Metadata Label | + +-------------------+ + ~ Other ~ + | Metadata | + ~ Label Triples ~ + +-------------------+ + | | + ~ Payload ~ + | | + ------------------- + + Figure 6: The MPLS SFC Label Stack for Label Stacking + with Metadata Label + +12.2. In-Band Programming of Metadata + + A mechanism for sending metadata associated with an SFP without a + payload packet is described in [RFC8393]. The same approach can be + used in an MPLS network where the NSH is logically represented by an + MPLS label stack. + + + + + + + + + + + +Farrel, et al. Standards Track [Page 18] + +RFC 8595 MPLS SFC June 2019 + + + The packet header is formed exactly as previously described in this + document so that the packet will follow the SFP through the SFC + network. However, instead of payload data, metadata is included + after the bottom of the MPLS label stack. An extended + special-purpose label is used to indicate that the metadata is + present. Thus, three label stack entries are present: + + o The Extension Label (value 15). + + o An extended special-purpose label called the Metadata Present + Indicator (MPI) (value 17). + + o The Metadata Label (ML) that is associated with this metadata on + this SFP and can be used to indicate the use of the metadata as + described in Section 12. + + The MPI, if present, is placed immediately after the last basic unit + of MPLS label stack for SFC. The resultant label stacks are shown in + Figure 7 for the MPLS label-swapping case and Figure 8 for the MPLS + label-stacking case. + + --------------- + ~ Tunnel Labels ~ + +---------------+ + ~ Optional ~ + ~ Entropy Label ~ + +---------------+ + | SPI Label | + +---------------+ + | SI Label | + +---------------+ + | Extension = 15| + +---------------+ + | MPI | + +---------------+ + | Metadata Label| + +---------------+ + | | + ~ Metadata ~ + | | + --------------- + + Figure 7: The MPLS SFC Label Stack for Label Swapping + Carrying Metadata + + + + + + + +Farrel, et al. Standards Track [Page 19] + +RFC 8595 MPLS SFC June 2019 + + + ------------------- + ~ Tunnel Labels ~ + +-------------------+ + ~ Optional ~ + ~ Entropy Label ~ + +-------------------+ + | SFC Context Label | + +-------------------+ + | SF Label | + +-------------------+ + | SFC Context Label | + +-------------------+ + | SF Label | + +-------------------+ + ~ ~ + +-------------------+ + | SFC Context Label | + +-------------------+ + | SF Label | + +-------------------+ + | Extension = 15 | + +-------------------+ + | MPI | + +-------------------+ + | Metadata Label | + +-------------------+ + | | + ~ Metadata ~ + | | + ------------------- + + Figure 8: The MPLS SFC Label Stack for Label Stacking + Carrying Metadata + + In both cases, the metadata is formatted as a TLV, as shown in + Figure 9. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | Metadata Type | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ~ Metadata ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 9: The Metadata TLV + + + + + +Farrel, et al. Standards Track [Page 20] + +RFC 8595 MPLS SFC June 2019 + + + The fields of this TLV are interpreted as follows: + + Length: The length of the metadata carried in the Metadata field in + octets, not including any padding. + + Metadata Type: The type of the metadata present. Values for this + field are taken from the "NSH MD Types" registry maintained by + IANA and defined in [RFC8300] and encoded with the most + significant bit first. + + Metadata: The actual metadata formatted as described in whatever + document defines the metadata. This field is end-padded with zero + to 3 octets of zeroes to take it up to a 4-octet boundary. + +12.2.1. Loss of In-Band Metadata + + Note that in-band exchange of metadata is vulnerable to packet loss. + This is both a risk arising from network faults and an attack + vulnerability. + + If packets that arrive at an SFF use an MLI that does not have an + entry in the metadata table, an alarm can be raised and the packet + can be discarded or processed without the metadata according to local + configuration. This provides some long-term mitigation but is not an + ideal solution. + + Further mitigation of loss of metadata packets can be achieved by + retransmitting them at a configurable interval. This is a relatively + cheap, but only partial, solution because there may still be a window + during which the metadata has not been received. + + The concern of lost metadata may be particularly important when the + metadata applicable to a specific MPI is being changed. This could + result in out-of-date metadata being applied to a packet. If this is + a concern, it is RECOMMENDED that a new MPI be used to install a new + entry in the metadata table, and the packets in the flow should be + marked with the equivalent new MLI. + + Finally, if an application that requires metadata is sensitive to + this potential loss or attack, it SHOULD NOT use in-band metadata + distribution but SHOULD rely on control-plane or management-plane + mechanisms, because these approaches can use a more sophisticated + protocol that includes confirmation of delivery and can perform + verification or inspection of entries in the metadata table. + + + + + + + +Farrel, et al. Standards Track [Page 21] + +RFC 8595 MPLS SFC June 2019 + + +13. Worked Examples + + This section reverts to the simplified descriptions of networks that + rely wholly on label swapping or label stacking. As described in + Section 4, actual deployment scenarios may depend on the use of both + mechanisms and utilize a mixed mode as described in Section 8. + + Consider the simplistic MPLS SFC overlay network shown in Figure 10. + A packet is classified for an SFP that will see it pass through two + SFs (SFa and SFb) that are accessed through two SFFs (SFFa and SFFb, + respectively). The packet is ultimately delivered to the + destination, D. + + +---------------------------------------------------+ + | MPLS SFC Network | + | | + | +---------+ +---------+ | + | | SFa | | SFb | | + | +----+----+ +----+----+ | + | ^ | | ^ | | | + | (2)| | |(3) (5)| | |(6) | + | (1) | | V (4) | | V (7) | + +----------+ ---> +----+----+ ----> +----+----+ ---> +-------+ + |Classifier+------+ SFFa +-------+ SFFb +------+ D | + +----------+ +---------+ +---------+ +-------+ + | | + +---------------------------------------------------+ + + Figure 10: Service Function Chaining in an MPLS Network + + Let us assume that the SFP is computed and assigned an SPI value of + 239. The forwarding details of the SFP are distributed (perhaps + using the mechanisms of [BGP-NSH-SFC]) so that the SFFs are + programmed with the necessary forwarding instructions. + + The packet progresses as follows: + + 1. The classifier assigns the packet to the SFP and imposes two + label stack entries comprising a single basic unit of MPLS SFC + representation: + + * The higher label stack entry contains a label carrying the SPI + value of 239. + + * The lower label stack entry contains a label carrying the SI + value of 255. + + + + + +Farrel, et al. Standards Track [Page 22] + +RFC 8595 MPLS SFC June 2019 + + + Further labels may be imposed to tunnel the packet from the + classifier to SFFa. + + 2. When the packet arrives at SFFa, SFFa strips any labels + associated with the tunnel that runs from the classifier to SFFa. + SFFa examines the top labels and matches the SPI/SI to identify + that the packet should be forwarded to SFa. The packet is + forwarded to SFa unmodified. + + 3. SFa performs its designated function and returns the packet + to SFFa. + + 4. SFFa modifies the SI in the lower label stack entry (to 254) and + uses the SPI/SI to look up the forwarding instructions. It sends + the packet with two label stack entries: + + * The higher label stack entry contains a label carrying the SPI + value of 239. + + * The lower label stack entry contains a label carrying the SI + value of 254. + + Further labels may be imposed to tunnel the packet from SFFa + to SFFb. + + 5. When the packet arrives at SFFb, SFFb strips any labels + associated with the tunnel from SFFa. SFFb examines the top + labels and matches the SPI/SI to identify that the packet should + be forwarded to SFb. The packet is forwarded to SFb unmodified. + + 6. SFb performs its designated function and returns the packet + to SFFb. + + 7. SFFb modifies the SI in the lower label stack entry (to 253) and + uses the SPI/SI to look up the forwarding instructions. It + determines that it is the last SFF in the SFP, so it strips the + two SFC Label stack entries and forwards the payload toward D + using the payload protocol. + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 23] + +RFC 8595 MPLS SFC June 2019 + + + Alternatively, consider the MPLS SFC overlay network shown in + Figure 11. A packet is classified for an SFP that will see it pass + through two SFs (SFx and SFy) that are accessed through two SFFs + (SFFx and SFFy, respectively). The packet is ultimately delivered to + the destination, D. + + +---------------------------------------------------+ + | MPLS SFC Network | + | | + | +---------+ +---------+ | + | | SFx | | SFy | | + | +----+----+ +----+----+ | + | ^ | | ^ | | | + | (2)| | |(3) (5)| | |(6) | + | (1) | | V (4) | | V (7) | + +----------+ ---> +----+----+ ----> +----+----+ ---> +-------+ + |Classifier+------+ SFFx +-------+ SFFy +------+ D | + +----------+ +---------+ +---------+ +-------+ + | | + +---------------------------------------------------+ + + Figure 11: Service Function Chaining Using MPLS Label Stacking + + Let us assume that the SFP is computed and assigned an SPI value of + 239. However, the forwarding state for the SFP is not distributed + and installed in the network. Instead, it will be attached to the + individual packets using the MPLS label stack. + + The packet progresses as follows: + + 1. The classifier assigns the packet to the SFP and imposes two + basic units of MPLS SFC representation to describe the full SFP: + + * The top basic unit comprises two label stack entries as + follows: + + + The higher label stack entry contains a label carrying the + SFC context. + + + The lower label stack entry contains a label carrying the + SF indicator for SFx. + + + + + + + + + + +Farrel, et al. Standards Track [Page 24] + +RFC 8595 MPLS SFC June 2019 + + + * The lower basic unit comprises two label stack entries as + follows: + + + The higher label stack entry contains a label carrying the + SFC context. + + + The lower label stack entry contains a label carrying the + SF indicator for SFy. + + Further labels may be imposed to tunnel the packet from the + classifier to SFFx. + + 2. When the packet arrives at SFFx, SFFx strips any labels + associated with the tunnel from the classifier. SFFx examines + the top labels and matches the context/SF values to identify that + the packet should be forwarded to SFx. The packet is forwarded + to SFx unmodified. + + 3. SFx performs its designated function and returns the packet + to SFFx. + + 4. SFFx strips the top basic unit of MPLS SFC representation, + revealing the next basic unit. It then uses the revealed + context/SF values to determine how to route the packet to the + next SFF, SFFy. It sends the packet with just one basic unit of + MPLS SFC representation comprising two label stack entries: + + * The higher label stack entry contains a label carrying the SFC + context. + + * The lower label stack entry contains a label carrying the SF + indicator for SFy. + + Further labels may be imposed to tunnel the packet from SFFx + to SFFy. + + 5. When the packet arrives at SFFy, SFFy strips any labels + associated with the tunnel from SFFx. SFFy examines the top + labels and matches the context/SF values to identify that the + packet should be forwarded to SFy. The packet is forwarded to + SFy unmodified. + + 6. SFy performs its designated function and returns the packet + to SFFy. + + 7. SFFy strips the top basic unit of MPLS SFC representation, + revealing the payload packet. It forwards the payload toward D + using the payload protocol. + + + +Farrel, et al. Standards Track [Page 25] + +RFC 8595 MPLS SFC June 2019 + + +14. Implementation Notes + + It is not the job of an IETF specification to describe the internals + of an implementation, except where that directly impacts upon the + bits on the wire that change the likelihood of interoperability or + where the availability of configuration or security options directly + affects the utility of an implementation. + + However, in view of the objective of this document to acknowledge + that there may be a need for an interim deployment of SFC + functionality in brownfield MPLS networks, this section provides some + observations about how an SFF might utilize MPLS features that are + available in existing routers. This section is not intended to be + definitive or technically complete; rather, it is indicative. + + Consider the mechanism used to indicate to which Virtual Routing and + Forwarding (VRF) system an incoming MPLS packet should be routed in a + Layer 3 Virtual Private Network (L3VPN) [RFC4364]. In this case, the + top MPLS label is an indicator of the VRF system that is to be used + to route the payload. + + A similar approach can be taken with the label-swapping SFC technique + described in Section 6 such that the SFC Context Label identifies a + routing table specific to the SFP. The SF Label can be looked up in + the context of this routing table to determine to which SF to direct + the packet and how to forward it to the next SFF. + + Advanced features (such as metadata) are not inspected by SFFs. The + packets are passed to SFIs that are MPLS-SFC aware or to SFC proxies, + and those components are responsible for handling all metadata + issues. + + Of course, an actual implementation might make considerable + optimizations on this approach, but this section should provide hints + about how MPLS-based SFC might be achieved with relatively small + modifications to deployed MPLS devices. + +15. Security Considerations + + Discussion of the security properties of SFC networks can be found in + [RFC7665]. Further security discussion for the NSH and its use is + provided in [RFC8300]. Those documents provide analysis and present + a set of requirements and recommendations for security, and the + normative security requirements from those documents apply to this + specification. However, it should be noted that those documents do + not describe any mechanisms for securing NSH systems. + + + + + +Farrel, et al. Standards Track [Page 26] + +RFC 8595 MPLS SFC June 2019 + + + It is fundamental to the SFC design that the classifier is a fully + trusted element. That is, the classification decision process is not + visible to the other elements, and its output is treated as accurate. + As such, the classifier has responsibility for determining the + processing that the packet will be subject to, including, for + example, firewall functions. It is also fundamental to the MPLS + design that packets are routed through the network using the path + specified by the node imposing the labels and that the labels are + swapped or popped correctly. Where an SF is not encapsulation aware, + the encapsulation may be stripped by an SFC proxy such that a packet + may exist as a native packet (perhaps IP) on the path between the SFC + proxy and the SF; however, this is an intrinsic part of the SFC + design, which needs to define how a packet is protected in that + environment. + + SFC components are configured and enabled through a management system + or a control plane. This document does not make any assumptions + about what mechanisms are used. Deployments should, however, be + aware that vulnerabilities in the management plane or control plane + of an SFC system imply vulnerabilities in the whole SFC system. + Thus, control-plane solutions (such as [BGP-NSH-SFC]) and management- + plane mechanisms must include security measures that can be enabled + by operators to protect their SFC systems. + + An analysis of the security of MPLS systems is provided in [RFC5920], + which also notes that the MPLS forwarding plane has no built-in + security mechanisms. Some proposals to add encryption to the MPLS + forwarding plane have been suggested [MPLS-Opp-Sec], but no + mechanisms have been agreed upon at the time of publication of this + document. Additionally, MPLS does not provide any cryptographic + integrity protection on the MPLS headers. That means that procedures + described in this document rely on three basic principles: + + o The MPLS network is often considered to be a closed network such + that insertion, modification, or inspection of packets by an + outside party is not possible. MPLS networks are operated with + closed boundaries so that MPLS-encapsulated packets are not + admitted to the network, and MPLS headers are stripped before + packets are forwarded from the network. This is particularly + pertinent in the SFC context because [RFC7665] notes that "The + architecture described herein is assumed to be applicable to a + single network administrative domain." Furthermore, [RFC8300] + states that packets originating outside the SFC-enabled domain + MUST be dropped if they contain an NSH and packets exiting the + SFC-enabled domain MUST be dropped if they contain an NSH. These + constraints apply equally to the use of MPLS to encode a logical + representation of the NSH. + + + + +Farrel, et al. Standards Track [Page 27] + +RFC 8595 MPLS SFC June 2019 + + + o The underlying transport mechanisms (such as Ethernet) between + adjacent MPLS nodes may offer security mechanisms that can be used + to defend packets "on the wire". + + o The SFC-capable devices participating in an SFC system are + responsible for verifying and protecting payload packets and their + contents as well as providing other security capabilities that + might be required in the particular system. + + Additionally, where a tunnel is used to link two non-MPLS domains, + the tunnel design needs to specify how the tunnel is secured. + + Thus, this design relies on the component underlying technologies to + address the potential security vulnerabilities, and it documents the + necessary protections (or risk of their absence) above. It does not + include any native security mechanisms in-band with the MPLS encoding + of the NSH functionality. + + Note that configuration elements of this system (such as the + programming of the table of metadata; see Section 12) must also be + adequately secured, although such mechanisms are not in scope for + this protocol specification. + + No known new security vulnerabilities over the SFC architecture + [RFC7665] and the NSH specification [RFC8300] are introduced by this + design, but if issues are discovered in the future, it is expected + that they will be addressed through modifications to control/ + management components of any solution or through changes to the + underlying technology. + +16. IANA Considerations + + IANA has made allocations from the "Extended Special-Purpose MPLS + Label Values" subregistry of the "Special-Purpose Multiprotocol Label + Switching (MPLS) Label Values" registry as follows: + + Value | Description | Reference + -------+-----------------------------------+-------------- + 16 | Metadata Label Indicator (MLI) | RFC 8595 + 17 | Metadata Present Indicator (MPI) | RFC 8595 + + + + + + + + + + + +Farrel, et al. Standards Track [Page 28] + +RFC 8595 MPLS SFC June 2019 + + +17. References + +17.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [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, + <https://www.rfc-editor.org/info/rfc6790>. + + [RFC7274] Kompella, K., Andersson, L., and A. Farrel, "Allocating + and Retiring Special-Purpose MPLS Labels", RFC 7274, + DOI 10.17487/RFC7274, June 2014, + <https://www.rfc-editor.org/info/rfc7274>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in + RFC 2119 Key Words", BCP 14, RFC 8174, + DOI 10.17487/RFC8174, May 2017, + <https://www.rfc-editor.org/info/rfc8174>. + + [RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., + "Network Service Header (NSH)", RFC 8300, + DOI 10.17487/RFC8300, January 2018, + <https://www.rfc-editor.org/info/rfc8300>. + + [RFC8393] Farrel, A. and J. Drake, "Operating the Network Service + Header (NSH) with Next Protocol "None"", RFC 8393, + DOI 10.17487/RFC8393, May 2018, + <https://www.rfc-editor.org/info/rfc8393>. + + + + + + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 29] + +RFC 8595 MPLS SFC June 2019 + + +17.2. Informative References + + [BGP-NSH-SFC] + Farrel, A., Drake, J., Rosen, E., Uttaro, J., and L. + Jalil, "BGP Control Plane for NSH SFC", Work in Progress, + draft-ietf-bess-nsh-bgp-control-plane-11, May 2019. + + [MPLS-Opp-Sec] + Farrel, A. and S. Farrell, "Opportunistic Security in + MPLS Networks", Work in Progress, + draft-ietf-mpls-opportunistic-encrypt-03, March 2017. + + [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol + Label Switching Architecture", RFC 3031, + DOI 10.17487/RFC3031, January 2001, + <https://www.rfc-editor.org/info/rfc3031>. + + [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private + Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, + February 2006, <https://www.rfc-editor.org/info/rfc4364>. + + [RFC5920] Fang, L., Ed., "Security Framework for MPLS and GMPLS + Networks", RFC 5920, DOI 10.17487/RFC5920, July 2010, + <https://www.rfc-editor.org/info/rfc5920>. + + [RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function + Chaining (SFC) Architecture", RFC 7665, + DOI 10.17487/RFC7665, October 2015, + <https://www.rfc-editor.org/info/rfc7665>. + + [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., + Decraene, B., Litkowski, S., and R. Shakir, "Segment + Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, + July 2018, <https://www.rfc-editor.org/info/rfc8402>. + + [RFC8459] Dolson, D., Homma, S., Lopez, D., and M. Boucadair, + "Hierarchical Service Function Chaining (hSFC)", RFC 8459, + DOI 10.17487/RFC8459, September 2018, + <https://www.rfc-editor.org/info/rfc8459>. + + [SR-Srv-Prog] + Clad, F., Ed., Xu, X., Ed., Filsfils, C., Bernier, D., Li, + C., Decraene, B., Ma, S., Yadlapalli, C., Henderickx, W., + and S. Salsano, "Service Programming with Segment + Routing", Work in Progress, + draft-xuclad-spring-sr-service-programming-02, April 2019. + + + + + +Farrel, et al. Standards Track [Page 30] + +RFC 8595 MPLS SFC June 2019 + + +Acknowledgements + + This document derives ideas and text from [BGP-NSH-SFC]. The authors + are grateful to all those who contributed to the discussions that led + to that work: Loa Andersson, Andrew G. Malis, Alexander (Sasha) + Vainshtein, Joel Halpern, Tony Przygienda, Stuart Mackie, Keyur + Patel, and Jim Guichard. Loa Andersson provided helpful review + comments. + + Thanks to Loa Andersson, Lizhong Jin, Matthew Bocci, Joel Halpern, + and Mach Chen for reviews of this text. Thanks to Russ Mundy for his + Security Directorate review and to S Moonesamy for useful + discussions. Thanks also to Benjamin Kaduk, Alissa Cooper, Eric + Rescorla, Mirja Kuehlewind, Alvaro Retana, and Martin Vigoureux for + comprehensive reviews during IESG evaluation. + + The authors would like to be able to thank the authors of + [SR-Srv-Prog] and [RFC8402] whose original work on service chaining + and the identification of services using Segment Identifiers (SIDs), + and conversation with whom, helped clarify the application of SR-MPLS + to SFC. + + Particular thanks to Loa Andersson for conversations and advice about + working group process. + +Contributors + + The following individual contributed text to this document: + + Andrew G. Malis + Email: agmalis@gmail.com + + + + + + + + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 31] + +RFC 8595 MPLS SFC June 2019 + + +Authors' Addresses + + Adrian Farrel + Old Dog Consulting + + Email: adrian@olddog.co.uk + + + Stewart Bryant + Futurewei + + Email: stewart.bryant@gmail.com + + + John Drake + Juniper Networks + + Email: jdrake@juniper.net + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Farrel, et al. Standards Track [Page 32] + |