--- 1/draft-ietf-mpls-sfc-01.txt 2018-08-05 09:13:17.673521786 -0700 +++ 2/draft-ietf-mpls-sfc-02.txt 2018-08-05 09:13:17.729523097 -0700 @@ -1,21 +1,21 @@ MPLS Working Group A. Farrel Internet-Draft Juniper Networks Intended status: Standards Track S. Bryant -Expires: November 16, 2018 Huawei +Expires: February 6, 2019 Huawei J. Drake Juniper Networks - May 15, 2018 + August 5, 2018 An MPLS-Based Forwarding Plane for Service Function Chaining - draft-ietf-mpls-sfc-01 + draft-ietf-mpls-sfc-02 Abstract 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 before being delivered to the intended destination. An architecture for SFC is defined in RFC7665. The Network Service Header (NSH) can be inserted into packets to steer them along a specific path to realize a Service Function Chain. @@ -42,21 +42,21 @@ Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on November 16, 2018. + This Internet-Draft will expire on February 6, 2019. Copyright Notice Copyright (c) 2018 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 @@ -67,41 +67,42 @@ 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 . . . . . . . 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 + 6. MPLS Label Swapping . . . . . . . . . . . . . . . . . . . . . 8 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 . . . . . . . . . . . . . . . . 13 11. Use of the Entropy Label . . . . . . . . . . . . . . . . . . 14 12. Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . 15 12.1. Indicating Metadata in User Data Packets . . . . . . . . 15 12.2. Inband Programming of Metadata . . . . . . . . . . . . . 17 13. Worked Examples . . . . . . . . . . . . . . . . . . . . . . . 20 14. Implementation Notes . . . . . . . . . . . . . . . . . . . . 24 15. Security Considerations . . . . . . . . . . . . . . . . . . . 25 16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 17. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 - 18. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 - 18.1. Normative References . . . . . . . . . . . . . . . . . . 26 - 18.2. Informative References . . . . . . . . . . . . . . . . . 27 + 18. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 26 + 19. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 + 19.1. Normative References . . . . . . . . . . . . . . . . . . 26 + 19.2. Informative References . . . . . . . . . . . . . . . . . 27 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 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 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 @@ -247,36 +248,39 @@ 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 service function. Each label in the stack indicates the next service function 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 Section 4.1 and Section 4.2. + This scenario is functionally identical to the use of MPLS-SR for SFC + as described Section 4.5, and the discussion in that section applies + to this section as well. + 4.5. SFC and Segment Routing Segment Routing (SR) in an MPLS network (known as MPLS-SR) uses a stack of MPLS labels to encode information about the path and network functions that a packet should traverse. MPLS-SR 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 MPLS-SR network. The application of SR to SFC was considered in early versions of the - SR architecture [I-D.ietf-spring-segment-routing] and the MPLS-SR - specification [I-D.ietf-spring-segment-routing-mpls], but has since - been moved out of those documents. An implementation proposal for - achieving SFC using MPLS-SR can be found in - [I-D.xuclad-spring-sr-service-chaining] and is not discussed further - in this document. + SR architecture [RFC8402] and the MPLS-SR specification + [I-D.ietf-spring-segment-routing-mpls], but has since been moved out + of those documents. An implementation proposal for achieving SFC + using MPLS-SR can be found in [I-D.xuclad-spring-sr-service-chaining] + 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 @@ -658,27 +662,27 @@ 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. The next two sections 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 slightly less functional - than the direct use of the NSH. Both methods support metadata that - is "per-SFP" or "per-packet-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. + 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-packet-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. 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) @@ -1145,32 +1149,38 @@ The authors are grateful to all those who contributed to the discussions that led to this work: Loa Andersson, Andrew G. Malis, Alexander Vainshtein, Joel M. 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. The authors would like to be able to thank the authors of - [I-D.xuclad-spring-sr-service-chaining] and - [I-D.ietf-spring-segment-routing] whose original work on service - chaining and the identification of services using SIDs, and - conversation with whom helped clarify the application of MPLS-SR to - SFC. + [I-D.xuclad-spring-sr-service-chaining] and [RFC8402] whose original + work on service chaining and the identification of services using + SIDs, and conversation with whom helped clarify the application of + MPLS-SR to SFC. Particular thanks to Loa Andersson for conversations and advice about working group process. -18. References +18. Contributors -18.1. Normative References + The following people contributed text to this document: + + Andrew Malis + Email: agmalis@gmail.com + +19. References + +19.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, . [RFC7274] Kompella, K., Andersson, L., and A. Farrel, "Allocating and Retiring Special-Purpose MPLS Labels", RFC 7274, DOI 10.17487/RFC7274, June 2014, . @@ -1182,43 +1192,37 @@ [RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., "Network Service Header (NSH)", RFC 8300, DOI 10.17487/RFC8300, January 2018, . [RFC8393] Farrel, A. and J. Drake, "Operating the Network Service Header (NSH) with Next Protocol "None"", RFC 8393, DOI 10.17487/RFC8393, May 2018, . -18.2. Informative References +19.2. Informative References [I-D.ietf-bess-nsh-bgp-control-plane] Farrel, A., Drake, J., Rosen, E., Uttaro, J., and L. Jalil, "BGP Control Plane for NSH SFC", draft-ietf-bess- - nsh-bgp-control-plane-03 (work in progress), March 2018. + nsh-bgp-control-plane-04 (work in progress), July 2018. [I-D.ietf-sfc-hierarchical] Dolson, D., Homma, S., Lopez, D., and M. Boucadair, "Hierarchical Service Function Chaining (hSFC)", draft- - ietf-sfc-hierarchical-08 (work in progress), April 2018. - - [I-D.ietf-spring-segment-routing] - Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., - Litkowski, S., and R. Shakir, "Segment Routing - Architecture", draft-ietf-spring-segment-routing-15 (work - in progress), January 2018. + ietf-sfc-hierarchical-11 (work in progress), June 2018. [I-D.ietf-spring-segment-routing-mpls] Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing with MPLS - data plane", draft-ietf-spring-segment-routing-mpls-13 - (work in progress), April 2018. + data plane", draft-ietf-spring-segment-routing-mpls-14 + (work in progress), June 2018. [I-D.xuclad-spring-sr-service-chaining] Clad, F., Xu, X., Filsfils, C., daniel.bernier@bell.ca, d., Li, C., Decraene, B., Ma, S., Yadlapalli, C., Henderickx, W., and S. Salsano, "Segment Routing for Service Chaining", draft-xuclad-spring-sr-service- chaining-01 (work in progress), March 2018. [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, @@ -1232,20 +1236,25 @@ [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, . [RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function Chaining (SFC) Architecture", RFC 7665, DOI 10.17487/RFC7665, October 2015, . + [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, . + Authors' Addresses Adrian Farrel Juniper Networks Email: afarrel@juniper.net Stewart Bryant Huawei