SPRING Working Group C. Li
Internet-Draft Z. Li
Intended status: Informational Huawei Technologies
Expires: December 28, 2019 June 26, 2019

A Framework for Constructing Service Function Chaining Systems Based on Segment Routing


Segment Routing (SR) allows for a flexible definition of end-to-end paths by encoding paths as sequences of topological sub-paths, called "segments". Segment routing architecture can be implemented over an MPLS data plane as well as an IPv6 data plane.

Service Function Chaining (SFC) provides support for the creation of composite services that consist of an ordered set of Service Functions (SF) that are to be applied to packets and/or frames selected as a result of classification.

SFC can be implemented based on several technologies, such as Network Service Header (NSH) and SR. This document describes a framework for constructing SFC based on Segment Routing. The document reviews the control plane solutions for route distribution of service function instance and service function path,and steering packets into a service function chain.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

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 December 28, 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

Segment routing (SR) [RFC8402]is a source routing paradigm that explicitly indicates the forwarding path for packets at the ingress node by inserting an ordered list of instructions, called segments. When segment routing is deployed on MPLS dataplane, it is called SR- MPLS [I-D.ietf-spring-segment-routing-mpls]. When segment routing is deployed on IPv6 dataplane, it is called SRv6 [I-D.ietf-6man-segment-routing-header].

Service Function Chaining (SFC) [RFC7665] provides an architecture that supports the creation of composite service instances that consist of an ordered set of Service Functions (SF) that are to be applied to packets and/or frames selected as a result of classification.

SFC can be implemented based on Network Service Header [RFC8300]. In NSH-based SFC, per-SFC state, such as a mapping between Service Path ID (SPI) and Service Index (SI) to next-hop forwarding, needs to be maintained on nodes along the service function path, and it can therefore be termed as "stateful SFC". [I-D.ietf-bess-nsh-bgp-control-plane] defines the use of BGP as a control plane for networks that support Service Function Chaining (SFC) based on NSH and MPLS. The document introduces a new BGP address family called the SFC AFI/SAFI with two route types: Service Function Instance Route (SFIR) and Service Function Path Route (SFPR). A NSH or MPLS based SFC can be constructed based on the information of SFIR and SFPR.

SFC can also be instantiated based on SR. In SR, the forwarding path is explicitly encoded into the packets on the SR source node. In SR-based SFC, an SFC can be represented by a SID list explicitly indicated by the source SR node. The SID in SID list may need to be associated with service information in order to indicate network service, such as Deep Packet Inspection (DPI). Therefore, no per-SFC state needs to be maintained along with the service function path, and it can therefore be termed “stateless SFC”.

In order to construct SR-based SFC, several mechanisms are proposed, including the mechanisms of Service Function Instance Route(SFIR) and Service Function Path Route(SFPR) distribution, as well as the mechanism of steering packets into an SFP. This document reviews these solutions to describe a framework for the construction of a service function chaining system based on Segment Routing.

1.1. 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.

1.2. Terminology

MPLS: Multiprotocol Label Switching.

SID: Segment Identifier.

SR: Segment Routing.

SR-MPLS: Segment Routing with MPLS data plane.

SRH: Segment Routing Header.

SFIR: Service Function Instance Route

SFPR: Service Function Path Route

Further, this document makes use of the terms defined in [RFC7665] and [I-D.xuclad-spring-sr-service-programming].

2. Overview of SR Based SFC Control Plane

As per [RFC7665], the architecture of SFC consists of classifiers, Service Function Forwarders (SFFs), Service Functions (SFs) and SFC proxies, see Figure 1.

                                        +-----+         +-----+   +-----+
                                        |     |         | SFC |   |     |
                                        | SF1 |         |Proxy|---| SF2 |
                                        +-----+         +-----+   +-----+
                                           |               |
     +--------------+                      |               |
     |   Service    |       SFC        +------+        +------+
     |Classification|  Encapsulation   | SFF1 |        | SFF2 |
---->|   Function   |+---------------->|      |--------|      |-------->
     |              |                  |      |        |      |
     +--------------+                  +------+        +------+
         SFC-enabled Domain

                        Figure 1. SFC Architecture

In order to construct a service function chain, SFIR and SFPR should be distributed to classifiers and SFFs. Also, the rules of steering packets into specific service function paths should be configured at the classifier. [I-D.ietf-bess-nsh-bgp-control-plane].

In SR, a source node can explicitly indicate the forwarding path for packets by inserting an ordered list of instructions. These packets steering policies, known as SR policy, can be installed by a central controller via BGP [I-D.ietf-idr-segment-routing-te-policy] or other mechanisms.

When SFC is constructed based on SR, SFPR and pakcet steering rules can be installed by SR policy at the ingress node, which plays the role of classifier in the SFC architecture. In other words, SFPR does not need to be distributed to all the nodes along the service function path. The architecture of SR based SFC is illustrated in Figure 2.

         +-----+                        +-----+         +-----+   +-----+
         |     |                        |     |         | SR  |   |     |
         |SR-C |                        | SF1 |         |Proxy|---| SF2 |
         +-----+                        +-----+         +-----+   +-----+
            |                              |               |
            |                              |               |
     +--------------+                  +------+        +------+
     |              |   SFC Encap/SR   | SFF1/|        | SFF2/|
---->|CF/SR ingress |+---------------->|  SR  |--------|  SR  |-------->
     |              |                  |      |        |      |
     +--------------+                  +------+        +------+
         SFC-enabled Domain

                        Figure 2. SR based SFC architecture.

There are two solutions to encode SFC in the SR data plane. [I-D.xuclad-spring-sr-service-programming] defines data plane functionality required to implement service segments and achieve service programming in SR-enabled MPLS and IP networks. It can be termed "Stateless SFC" since no per-SFC state is maintained on the SR nodes along the service function path.

The second solution can be termed "Stateful SFC"[I-D.guichard-spring-nsh-sr], since it still maintains per-SFC state on nodes. [I-D.guichard-spring-nsh-sr]describes two modes:

In order to support these data plane encodings, control plane mechanisms are required. The existing control plane mechanisms are shown in table 1.

 | SR based SFC      |   SFIR    |    SFPR   | Steering policy|
 |                   |   BGP     |    BGP    |      BGP       |
 |Stateless          |   BGP-LS  |    PCEP   |      PCEP      |
 |                   |   IGP     |           |                |
 |NSH-based SFC      |   BGP     |    BGP    |      BGP       |  
 |with SR-based      |           |    PCEP   |                |
 |transport tunnel   |           |           |                |
 |                   |           |           |                |
 |                   |           |           |                |    
 |SR-based SFC       |   BGP     |    BGP    |      BGP       |
 |with Integrated    |   BGP-LS  |    PCEP   |      PCEP      |
 |NSH Service Plane  |   IGP     |           |                |  
 |                   |           |           |                |
          Table 1. SR based SFC Control Plane Solutions

3. Stateless SR Based SFC

As describe in [I-D.xuclad-spring-sr-service-programming], service instances are associated with a segment, called a service SID. These service SIDs are leveraged as part of a SID-list to steer packets through the corresponding services.

3.1. Service Function Instance Route Distribution

To associate a segment with a service, service information, such as Service Function Type(SFT), should be included in segment distribution.

To associate a segment with a service, service information, such as Service Function Type (SFT), should be included in segment distribution. [I-D.dawra-idr-bgp-ls-sr-service-segments] specifies the extensions to BGP-LS for discovery and advertisement of service segments so as to enable setup of service programming paths using Segment Routing. [I-D.dawra-idr-bgp-ls-sr-service-segments]extends SRv6 Node SID TLV [I-D.dawra-idr-bgpls-srv6-ext] and SR-MPLS SID/ Label TLV [I-D.ietf-idr-bgp-ls-segment-routing-ext] to associate the Service SID Value with Service-related Information using Service Chaining Sub-TLV. The Service Chaining Sub-TLV contains information of Service SID value, Function Identifier (Static Proxy, Dynamic Proxy, Shared Memory Proxy, Masquerading Proxy, SR Aware Service Etc.), Service Type (DPI, Firewall, Classifier, LB etc.), Traffic Type (IPv4 OR IPv6 OR Ethernet) and Opaque Data (such as brand and version, other extra information). This extension works for both SR- MPLS and SRv6.

[I-D.ietf-bess-nsh-bgp-control-plane] proposes a BGP-based SFC control plane solution, and it works for SR-MPLS as well. Service function instance route distribution can use SFIR in SFC AFI/SAFI. SFPR and steering rules for the classifier can be distributed by SR policy, which is defined in [I-D.ietf-idr-segment-routing-te-policy]. BGP control plane of SRv6-based SFC still needs to be defined.

IGP extensions are proposed by [I-D.xu-isis-service-function-adv] and [I-D.xu-ospf-service-function-adv]. . In IS-IS solution, SFFs within the SFC domain need to advertise each SF they are offering by using a new sub-TLV of the IS-IS Router CAPABILITY TLV [RFC4971]. This new sub-TLV is called Service Function sub-TLV, and it can appear multiple times within a given IS-IS Router CAPABILITY TLV or when more than one SF needs to be advertised. OSPF extensions are similar, and use the OSPF Router Information (RI) Opaque LSA [RFC4970] to carry Service Function sub-TLV.

However, due to IGP flooding issues, IGP extensions are not very appropriate, and the drafts have expired for a long time.

3.2. Service Function Path Route Distribution

With SR, the SFPR does not need to be distributed to nodes along the SFP but only to the ingress node. SFPR and steering rules for the classifier can be distributed by SR policy. The BGP extension is defined in [I-D.ietf-idr-segment-routing-te-policy]. The PCEP extension is defined in [I-D.barth-pce-segment-routing-policy-cp].

3.3. Steer Packets into SFC

In SR, packet steering rules are learned through SR policy. Thus, there is no need to install other rules in the classifier, which is the SR source node.

4. Stateful SR Based SFC

"Stateful SFC" [I-D.guichard-spring-nsh-sr]proposes two modes of SR based SFC:

4.1. Service Function Route Distribution

For NSH-based SFC with SR-based transport tunnel, service information is maintained by NSH while SR is only used for transport between SFFs, so [I-D.ietf-bess-nsh-bgp-control-plane] can be used for this mode.

To indicate NSH, an SFF label [I-D.ietf-mpls-sfc-encapsulation] should be inserted as the last label in the label stack in SR-MPLS. The control plane of SFF is also described in [I-D.ietf-bess-nsh-bgp-control-plane]. For choosing/configuring SR as the transport tunnel, BGP route of SFF's BGP Tunnel Encapsulation Attribute Type should be "SR TE Policy Type" [I-D.ietf-idr-segment-routing-te-policy]. For SR-based SFC with Integrated NSH Service Plane, there is no control plane solution as yet defined.

4.2. Service Function Path Route Distribution

Same as SFIR distribution, SFPR BGP distribution in NSH-based SFC with SR-based transport tunnel is identical to the mechanism defined in [I-D.ietf-bess-nsh-bgp-control-plane]. PCEP extension for SFPR distribution can reuse the NSH based SFC extension defined in [I-D.wu-pce-traffic-steering-sfc]. For SR-based SFC with Integrated NSH Service Plane, control plane solution is to be added in other documents.

4.3. Steer Packets into SFC

For NSH-based SFC with SR-based transport tunnel, it is the same with the NSH based SFC. The Classifier is responsible for determining to which packet flow a packet belongs (usually by inspecting the packet header), imposing an NSH, and initializing the NSH with the SPI of the selected SFP and the SI of its first hop [I-D.ietf-bess-nsh-bgp-control-plane]. For SR-based SFC with Integrated NSH Service Plane, control plane solution is to be added in other document.

5. IANA Considerations

This document does not require any IANA actions.

6. Security Considerations

This document does not introduce additional security requirements and mechanisms.

7. Acknowledgements


8. References

8.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.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017.

8.2. Informative References

[I-D.barth-pce-segment-routing-policy-cp] Barth, C., Koldychev, M., Sivabalan, S. and C. Li, "PCEP extension to support Segment Routing Policy Candidate Paths", Internet-Draft draft-barth-pce-segment-routing-policy-cp-02, March 2019.
[I-D.dawra-idr-bgp-ls-sr-service-segments] Dawra, G., Filsfils, C., daniel.bernier@bell.ca, d., Uttaro, J., Decraene, B., Elmalky, H., Xu, X., Clad, F. and K. Talaulikar, "BGP-LS Advertisement of Segment Routing Service Segments", Internet-Draft draft-dawra-idr-bgp-ls-sr-service-segments-01, January 2019.
[I-D.dawra-idr-bgpls-srv6-ext] Dawra, G., Filsfils, C., Talaulikar, K., Chen, M., daniel.bernier@bell.ca, d., Uttaro, J., Decraene, B. and H. Elmalky, "BGP Link State Extensions for SRv6", Internet-Draft draft-dawra-idr-bgpls-srv6-ext-06, March 2019.
[I-D.filsfils-spring-srv6-network-programming] Filsfils, C., Camarillo, P., Leddy, J., daniel.voyer@bell.ca, d., Matsushima, S. and Z. Li, "SRv6 Network Programming", Internet-Draft draft-filsfils-spring-srv6-network-programming-07, February 2019.
[I-D.gandhi-spring-udp-pm] Gandhi, R., Filsfils, C., daniel.voyer@bell.ca, d., Salsano, S., Ventre, P. and M. Chen, "UDP Path for In-band Performance Measurement for Segment Routing Networks", Internet-Draft draft-gandhi-spring-udp-pm-02, September 2018.
[I-D.guichard-spring-nsh-sr] Guichard, J., Song, H., Tantsura, J., Halpern, J., Henderickx, W., Boucadair, M. and S. Hassan, "NSH and Segment Routing Integration for Service Function Chaining (SFC)", Internet-Draft draft-guichard-spring-nsh-sr-01, March 2019.
[I-D.ietf-6man-segment-routing-header] Filsfils, C., Dukes, D., Previdi, S., Leddy, J., Matsushima, S. and d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header (SRH)", Internet-Draft draft-ietf-6man-segment-routing-header-21, June 2019.
[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", Internet-Draft draft-ietf-bess-nsh-bgp-control-plane-11, May 2019.
[I-D.ietf-idr-bgp-ls-segment-routing-ext] Previdi, S., Talaulikar, K., Filsfils, C., Gredler, H. and M. Chen, "BGP Link-State extensions for Segment Routing", Internet-Draft draft-ietf-idr-bgp-ls-segment-routing-ext-15, May 2019.
[I-D.ietf-idr-segment-routing-te-policy] Previdi, S., Filsfils, C., Jain, D., Mattes, P., Rosen, E. and S. Lin, "Advertising Segment Routing Policies in BGP", Internet-Draft draft-ietf-idr-segment-routing-te-policy-06, May 2019.
[I-D.ietf-mpls-sfc-encapsulation] Malis, A., Bryant, S., Halpern, J. and W. Henderickx, "MPLS Transport Encapsulation For The SFC NSH", Internet-Draft draft-ietf-mpls-sfc-encapsulation-04, March 2019.
[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", Internet-Draft draft-ietf-spring-segment-routing-mpls-22, May 2019.
[I-D.ietf-spring-segment-routing-policy] Filsfils, C., Sivabalan, S., daniel.voyer@bell.ca, d., bogdanov@google.com, b. and P. Mattes, "Segment Routing Policy Architecture", Internet-Draft draft-ietf-spring-segment-routing-policy-03, May 2019.
[I-D.li-idr-sr-policy-path-segment-distribution] Li, C., Chen, M., Dong, J. and Z. Li, "Segment Routing Policies for Path Segment and Bidirectional Path", Internet-Draft draft-li-idr-sr-policy-path-segment-distribution-01, October 2018.
[I-D.li-pce-sr-bidir-path] Li, C., Chen, M., Cheng, W., Li, Z., Dong, J., Gandhi, R. and Q. Xiong, "PCEP Extensions for Associated Bidirectional Segment Routing (SR) Paths", Internet-Draft draft-li-pce-sr-bidir-path-05, March 2019.
[I-D.li-pce-sr-path-segment] Li, C., Chen, M., Cheng, W., Dong, J., Li, Z., Gandhi, R. and Q. Xiong, "Path Computation Element Communication Protocol (PCEP) Extension for Path Segment in Segment Routing (SR)", Internet-Draft draft-li-pce-sr-path-segment-05, March 2019.
[I-D.wu-pce-traffic-steering-sfc] Wu, Q., Dhody, D., Boucadair, M., Jacquenet, C. and J. Tantsura, "PCEP Extensions for Service Function Chaining (SFC)", Internet-Draft draft-wu-pce-traffic-steering-sfc-12, June 2017.
[I-D.xu-isis-service-function-adv] Xu, X., Wu, N., Shah, H. and L. Contreras, "Advertising Service Functions Using IS-IS", Internet-Draft draft-xu-isis-service-function-adv-05, May 2017.
[I-D.xu-ospf-service-function-adv] Xu, X., Wu, N., Shah, H. and L. Contreras, "Advertising Service Functions Using OSPF", Internet-Draft draft-xu-ospf-service-function-adv-02, June 2014.
[I-D.xuclad-spring-sr-service-programming] Clad, F., Xu, X., Filsfils, C., daniel.bernier@bell.ca, d., Li, C., Decraene, B., Ma, S., Yadlapalli, C., Henderickx, W. and S. Salsano, "Service Programming with Segment Routing", Internet-Draft draft-xuclad-spring-sr-service-programming-02, April 2019.
[RFC4970] Lindem, A., Shen, N., Vasseur, JP., Aggarwal, R. and S. Shaffer, "Extensions to OSPF for Advertising Optional Router Capabilities", RFC 4970, DOI 10.17487/RFC4970, July 2007.
[RFC4971] Vasseur, JP., Shen, N. and R. Aggarwal, "Intermediate System to Intermediate System (IS-IS) Extensions for Advertising Router Information", RFC 4971, DOI 10.17487/RFC4971, July 2007.
[RFC7665] Halpern, J. and C. Pignataro, "Service Function Chaining (SFC) Architecture", RFC 7665, DOI 10.17487/RFC7665, October 2015.
[RFC8300] Quinn, P., Elzur, U. and C. Pignataro, "Network Service Header (NSH)", RFC 8300, DOI 10.17487/RFC8300, January 2018.
[RFC8402] Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Litkowski, S. and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, July 2018.

Authors' Addresses

Cheng Li Huawei Technologies EMail: chengli13@huawei.com
Zhenbin Li Huawei Technologies Huawei Campus, No. 156 Beiqing Rd. Beijing, 100095 China EMail: lizhenbin@huawei.com