<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.0.2) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lou-rtgwg-sinc-deployment-considerations-01" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="SINC deployment considerations">Signaling In-Network Computing operations (SINC) deployment considerations</title>
    <seriesInfo name="Internet-Draft" value="draft-lou-rtgwg-sinc-deployment-considerations-00"/>
    <author initials="D." surname="Lou" fullname="Zhe Lou">
      <organization abbrev="Huawei">Huawei Technologies</organization>
      <address>
        <postal>
          <street>Riesstrasse 25</street>
          <city>Munich</city>
          <code>80992</code>
          <country>Germany</country>
        </postal>
        <email>zhe.lou@huawei.com</email>
      </address>
    </author>
    <author initials="L." surname="Iannone" fullname="Luigi Iannone">
      <organization abbrev="Huawei">Huawei Technologies France S.A.S.U.</organization>
      <address>
        <postal>
          <street>18, Quai du Point du Jour</street>
          <city>Boulogne-Billancourt</city>
          <code>92100</code>
          <country>France</country>
        </postal>
        <email>luigi.iannone@huawei.com</email>
      </address>
    </author>
    <author initials="Y." surname="Li" fullname="Yizhou Li">
      <organization abbrev="Huawei">Huawei Technologies</organization>
      <address>
        <postal>
          <street>xx</street>
          <city>Nanjing</city>
          <code>xx</code>
          <country>China</country>
        </postal>
        <email>liyizhou@huawei.com</email>
      </address>
    </author>
    <author initials="C." surname="Zhang" fullname="Cuimin Zhang">
      <organization abbrev="Huawei">Huawei Technologies</organization>
      <address>
        <postal>
          <street>Huawei base in Bantian, Longgang District</street>
          <city>Shenzhen</city>
          <country>China</country>
        </postal>
        <email>zhangcuimin@huawei.com</email>
      </address>
    </author>
    <date/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 82?>

<t>This document is intended to discuss some deployment aspects of "Signaling In-Network Computing operations" (SINC). Based on some examples, this document analyzes how each device in the SINC chain undertakes its own functions. This document showcase the use of SINC mechanism.</t>
    </abstract>
  </front>
  <middle>
    <?line 86?>

<section anchor="SEC_intro">
      <name>Introduction</name>
      <t>"Signaling In-Network Computing operations" (SINC) is a mechanism to enable signaling in-network computing operations on data packets in specific scenarios like NetReduce, NetDistributedLock, NetSequencer, etc. This mechanism can effectively reduce the task completion time and improve the system efficiency. The SINC framework design can be found in <xref target="I-D.zhou-rtgwg-sinc-00"/>.</t>
    </section>
    <section anchor="SEC_terminology">
      <name>Terminology</name>
      <t>This document uses the terms as defined in <xref target="RFC7498"/>, <xref target="RFC7665"/>, <xref target="RFC8300"/>, <xref target="RFC3031"/>, <xref target="RFC5036"/> and <xref target="RFC2205"/>. This document assumes that the reader is familiar with the Service Function Chaining architecture and Multi-Protocol Label Switching architecture.</t>
    </section>
    <section anchor="sinc-deployment-considerations">
      <name>SINC Deployment Considerations</name>
      <t>When deploying the SINC solution in the network, the packets from the host needs to be transmitted through a path containing SINC capable switches/routers (SW/R) for in-network data computation. 
Different from the simplistic experimental network environment used for in network computing verification in research papers, the real network is much more complex, containing multiple SINC SW/Rs with different capabilities and multiple paths between sources and destinations, as shown in <xref target="Fig_SINCDe"/>.</t>
      <figure anchor="Fig_SINCDe">
        <name>SINC In Deployment Topology</name>
        <artwork><![CDATA[
    +--------+  +--------+   
    |  SINC  |  |  SINC  |         
    | Node A |  | Node B |
    +--------+  +--------+
       |      \/    |    \        
       |     / \    |     \
       |    /   \   |      \
    +-------+    +-------+   +-------+
    | SW/R  |    | SW/R  |   | SW/R  |         
    +-------+    +-------+   +-------+
      |             |            |
    +-------+    +-------+       |
    | Proxy |    | Proxy |       |
    +-------+    +-------+       |
      |             |            |
 +---------+   +---------+   +---------+ 
 | Host A  |   | Host B  |   | Host C  |     
 +---------+   +---------+   +---------+ 
]]></artwork>
      </figure>
      <t>The packets traveling between Host A and Host B may pass SINC Node A or SINC Node B via different paths. It is essential to create a proper route with nodes to support SINC operation and facilitate the packet delivery. The SINC capable SW/Rs should periodically advertise, to the control plane, their networking &amp; computing capacities and capabilities, e.g. the operation it can perform, the current work load, the link capacity, etc. Based on those information, the control plane is responsible to create a proper route where the data in the packet will undertake the desired computation before arriving at the destination host. Such a path could be located at layer 2, 3 or 4 dependent of the network context and application environments. For instance, in a telecommunication network where the Multi-Protocol Label Switching (MPLS) <xref target="RFC3031"/> is deployed, MPLS can be used to encapsulate the SINC header and deliver the packet to a SINC capable SW/R. In a Data Center Network, if the Generic Network Virtualization Encapsulation (GENEVE) <xref target="RFC8926"/> is applied, It can be used for encapsulation. Other encapsulation protocols like General Routing Encapsulation (GRE) <xref target="RFC2784"/>, Service Function Chaining (SFC)  <xref target="RFC7665"/>, and so on, could be potential candidates as well. The SINC header is usually copied/moved right after the new encapsulation header, which makes it easier to access the SINC header.</t>
    </section>
    <section anchor="sinc-over-geneve-considerations">
      <name>SINC over GENEVE Considerations</name>
      <t>TBC</t>
      <section anchor="sinc-geneve-encapsulation">
        <name>SINC GENEVE encapsulation</name>
        <t>TBC</t>
      </section>
      <section anchor="sinc-over-geneve-workflow">
        <name>SINC over GENEVE Workflow</name>
        <t>TBC</t>
      </section>
    </section>
    <section anchor="sinc-over-sfc-considerations">
      <name>SINC over SFC Considerations</name>
      <t>In this section, SFC, which is a layer 3.5 protocol, is used as a running example on how to create a tunnel and encapsulate the SINC header, in order to implement the desired in-network computation.</t>
      <t><xref target="Fig_SINCSFC"/> shows the architecture of a SFC-based SINC network. In the computing service chain, a host sends out packets containing data operations to be executed in the network. The data operation description should be carried in the packet itself by using a SINC-specific NSH encapsulation added by the Ingres Proxy and trimmed by the Egress Proxy.</t>
      <figure anchor="Fig_SINCSFC">
        <name>SINC over SFC Architecture.</name>
        <artwork><![CDATA[
 +---------+                                          +---------+
 | Host A  |                                          | Host B  |
 +---------+                                          +---------+
      |                     +-----------+                  |
      |                     | SINC SW/R |                  |
 +------------+   +-----+   |  +-----+  |   +-----+   +-----------+
 |SINC Ingress|   |     |   |  |     |  |   |     |   |SINC Egress|
 | Proxy      |-->| SFF |-->|  | SFF |  |-->| SFF |-->| Proxy     |
 +------------+   +-----+   |  +-----+  |   +-----+   +-----------+
                            |     |     |           
                            |  +-----+  |     
                            |  |  SF |  |    
                            |  +-----+  |    
                            +-----------+
]]></artwork>
      </figure>
      <t>Once the SINC packet enters into the SFC domain, the Service Function Forwarder (SFF) <xref target="RFC7665"/> will forward packets to one or more connected service functions according to information carried in the SFC encapsulation. The Service Function (SF) <xref target="RFC7665"/> is responsible for implementing data operations.</t>
      <section anchor="sinc-nsh-encapsulation">
        <name>SINC NSH encapsulation</name>
        <t>This section shows how the SINC header can be embedded in the Network Service Header (NSH) <xref target="RFC8300"/> for SFC <xref target="RFC7665"/>.</t>
        <t>The SINC NSH base header, as shown in <xref target="Fig_nshbasic"/>, is basically another type of NSH Meta Data (MD) header. SINC NSH encapsulation uses the NSH MD fixed-length context headers to carry the data operation information as show in <xref target="Fig_nshbasic"/>. Please refer to the NSH <xref target="RFC8300"/> for a detailed SFC basic header description.</t>
        <figure anchor="Fig_nshbasic">
          <name>NSH Base Header, where 'MD Type' should contain a code-point assigned by IANA.</name>
          <artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|ver|O|U|    TTL    |   Length  |U|U|U|U|MD Type| Next Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <!-- 
Regarding to the definition of Next Protocol, the RFC8300 has the following values:
      0x1: IPv4
      0x2: IPv6
      0x3: Ethernet
      0x4: NSH
      0x5: MPLS
      0xFE: Experiment 1
      0xFF: Experiment 2

suggest to define a new value: 0x6: SINC

experiment 0xFE, ask expert review on code-point assigned by IANA...
-->

<t>Following the NSH basic header there is the Service Path Header, show in  <xref target="fig_nshSph"/>, as defined in <xref target="RFC8300"/>.</t>
        <figure anchor="fig_nshSph">
          <name>NSH Service Path Header.</name>
          <artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Service Path Identifier (SPI)        | Service Index |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The complete SINC NSH header, as shown in <xref target="Fig_SINCNSH"/>, stacks the NSH base header, NSH Service Path Header, and the SINC Header all together.</t>
        <figure anchor="Fig_SINCNSH">
          <name>SINC NSH Header.</name>
          <artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
|ver|O|U|    TTL    |   Length  |U|U|U|U|MD Type| Next Protocol | \N
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |S
|          Service Path Identifier (SPI)        | Service Index | /H
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Reserved  |D|L|                    Group ID                   | \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |S
|     No. of Data Sources       |    Data Source ID             | |I       
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |N
|                           SeqNum                              | |C
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|       Data Operation          |    Data Offset                | /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
]]></artwork>
        </figure>
      </section>
      <section anchor="sinc-over-sfc-workflow">
        <name>SINC over SFC Workflow</name>
        <t>For the sake of clarity, a simple example with one sender (Host A) and one receiver (Host B) is used to illustrate the workflow. Packet processing goes through the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Host A transmits a packet containing a SINC header together with data, which will be processed by SFs on SINC capable SW/Rs, to the SINC Ingress Proxy.</t>
          </li>
          <li>
            <t>The SINC Ingress Proxy encapsulates the original packet with the SINC header into a SINC NSH header, as the transport protocol indicated by the SFC.</t>
          </li>
          <li>
            <t>The SFF forwards the encapsulated packet to the SINC SW/R.</t>
          </li>
          <li>
            <t>As shown in <xref target="Fig_SINCSFC"/>, when the packet reaches the SINC SW/R, the header of the packet will be removed. The SFF looks up the Service Path Identifier (SPI) table and Service Index (SI) table and sends the packet to the SF.</t>
          </li>
          <li>
            <t>The SF performs the computing based on the defined operation in the SINC header after the verification of the Group ID and Data Source ID. The payload will be replaced with the result after computation. The Operation Done flag will be set to 1. The packet is then re-encapsulated with the NSH SINC header. The SI is reduce by 1 while other fields are untouched. Finally, the packet is forwarded to the SINC Egress Proxy.</t>
          </li>
          <li>
            <t>When the packet reaches the SINC Egress Proxy, it looks up the SPI &amp; SI tables and realizes it is the egress. It removes the NSH encapsulation and forwards the inner packet to the final destination.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="sinc-over-mpls-considerations">
      <name>SINC over MPLS Considerations</name>
      <t>In this section, MPLS, which is a layer 2.5 protocol, is used as a running example on how to create a tunnel and encapsulate the SINC header, in order to implement the desired in-network computation.</t>
      <t>As shown in the <xref target="Fig_SINCMPLS"/>, the overall architecture is similar to the SFC solution. In this case, the SINC proxy is also a Label Edge Router. The SW/Rs connecting the SINC proxies and SINC SW/Rs are Label Switching Routers (LSR). Before sending out a SINC packet, the Label Switched Paths (LSP) should be established between the SINC proxies and SINC SW/Rs. The SINC SW/Rs and proxies can identify a SINC packet by the LSPs used.</t>
      <t>Upon receiving a packet with a SINC header, the SINC Ingress Proxy encapsulates the packet with a MPLS label(s) according to LSP, before forwarding it to the SINC SW/R. Besides the common LSR functions, the SINC SW/R will further identify the location of the SINC header by checking the Next Hop Label Forwarding Entry (NHLFE) as defined in the <xref target="RFC3031"/>. Usually the next_hop field in the NHLFE will be a special loop IP address, which enables the SW/R to send the packet to itself, in order to execute the required computation as the header defined. The results will be forwarded to the SINC Egress Proxy where the MPLS label will be popped up again before the packet is delivered to the destination.</t>
      <figure anchor="Fig_SINCMPLS">
        <name>SINC over MPLS Architecture.</name>
        <artwork><![CDATA[
 +---------+                                         +---------+
 | Host A  |                                         | Host B  |
 +---------+                                         +---------+
      |                                                  |
      |                                                  |
 +------------+   +-----+   +-----------+   +-----+   +-----------+
 |SINC Ingress|   |     |   |   SINC    |   |     |   |SINC Egress|
 | Proxy      |-->| LSR |-->|   SW/R    |-->| LSR |-->| Proxy     |
 +------------+   +-----+   +-----------+   +-----+   +-----------+         
                           
]]></artwork>
      </figure>
      <section anchor="sinc-mpls-encapsulation">
        <name>SINC MPLS encapsulation</name>
        <t>As shown in the <xref target="Fig_SINCMPLSLABEL"/>, one or more MPLS labels are added in front of the SINC header.</t>
        <figure anchor="Fig_SINCMPLSLABEL">
          <name>SINC MPLS Header.</name>
          <artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \
|                  Label                |  TC |S|      TTL      | |M
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P
~                 ...                                           ~ |L
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |S
|                  Label                |  TC |S|      TTL      | /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved  |D|L|                    Group ID                   | \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |S
|     No. of Data Sources       |    Data Source ID             | |I    
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |N
|                           SeqNum                              | |C
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|       Data Operation          |    Data Offset                | /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
      </section>
      <section anchor="sinc-over-mpls-workflow">
        <name>SINC over MPLS Workflow</name>
        <t>A simple example with one sender (Host A) and one receiver (Host B) is used to illustrate the workflow. Packet processing goes through the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Host A transmits a packet containing a SINC header together with data to the SINC Ingress Proxy.</t>
          </li>
          <li>
            <t>Based on the LSP information obtained from control plane, the SINC Ingress Proxy builds up a SINC MPLS header pre-pended to the original packet. Then, according to the LSP information, the SINC packet is forwarded to the next hop.</t>
          </li>
          <li>
            <t>The LSR forwards the packet based on the LSP information obtained from control plane.</t>
          </li>
          <li>
            <t>As shown in <xref target="Fig_SINCMPLS"/>, when the packet reaches the SINC node, the LSP tunnel ID indicates that this packet contains a SINC header. The SINC SW/R pops up the label and hands the packet to in-network computing module. It is worth noting that the penultimate hop popping must be disabled. Otherwise, an additional mechanism is needed to signal to the SINC node that there is actually a SINC header in the packet.</t>
          </li>
          <li>
            <t>The in-network computing module verifies the Group ID and Data Source ID in the SINC header, then preforms the required computation defined in the Data Operation field. When it is done, the payload is replaced with the result. The Operation Done flag will be set to 1. The SINC SW/R pushes a MPLS label to the packet. Finally, the packet is forwarded to the SINC egress proxy.</t>
          </li>
          <li>
            <t>When the packet reaches the SINC Egress Proxy, it looks up the LSP information and realizes it is the egress. It pops up the MPLS label, replaces the inner SINC header with the outer SINC header, and forwards the inner packet to the final destination (Host B).</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="SEC_sec">
      <name>Security Considerations</name>
      <t>In-network computing exposes computing data to network devices, which  inevitably raises security and privacy considerations. 
The security problems faced by in-network computing include, but are not limited to:</t>
      <ul spacing="normal">
        <li>
          <t>Trustworthiness of participating devices</t>
        </li>
        <li>
          <t>Data hijacking and tampering</t>
        </li>
        <li>
          <t>Private data exposure</t>
        </li>
      </ul>
      <t>This documents assume that the deployment is done in a trusted environment. For example, in a data center network or a private network.</t>
      <t>A fine security analysis will be provided in future revisions of this memo.</t>
    </section>
    <section anchor="SEC_iana">
      <name>IANA Considerations</name>
      <t>This memo does not contain any request to IANA.</t>
    </section>
    <section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>This document received great contribution from Yujing Zhou, as well as valuable feedbacks from Dirk Trossen, which was of great help in improving the content. The authors would like to thank all of them.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="I-D.zhou-rtgwg-sinc-00">
        <front>
          <title>Signaling In-Network Computing operations (SINC)</title>
          <author fullname="Zhe Lou" initials="Z." surname="Lou">
            <organization>Huawei Technologies</organization>
          </author>
          <author fullname="Luigi Iannone" initials="L." surname="Iannone">
            <organization>Huawei Technologies France S.A.S.U.</organization>
          </author>
          <author fullname="Yujing Zhou" initials="Y." surname="Zhou">
            <organization>Huawei Technologies</organization>
          </author>
          <author fullname="Jinze Yang" initials="J." surname="Yang">
            <organization>Huawei Technologies</organization>
          </author>
          <author fullname="Zhangcuimin" initials="" surname="Zhangcuimin">
            <organization>Huawei Technologies</organization>
          </author>
          <date day="22" month="February" year="2023"/>
          <abstract>
            <t>   This memo introduces "Signaling In-Network Computing operations"
   (SINC), a mechanism to enable signaling in-network computing
   operations on data packets in specific scenarios like NetReduce,
   NetDistributedLock, NetSequencer, etc.  In particular, this solution
   allows to flexibly communicate computational parameters, to be used
   in conjunction with the payload, to in-network SINC-enabled devices
   in order to perform computing operations.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-zhou-rtgwg-sinc-00"/>
      </reference>
      <reference anchor="RFC7498">
        <front>
          <title>Problem Statement for Service Function Chaining</title>
          <author fullname="P. Quinn" initials="P." role="editor" surname="Quinn"/>
          <author fullname="T. Nadeau" initials="T." role="editor" surname="Nadeau"/>
          <date month="April" year="2015"/>
          <abstract>
            <t>This document provides an overview of the issues associated with the deployment of service functions (such as firewalls, load balancers, etc.) in large-scale environments. The term "service function chaining" is used to describe the definition and instantiation of an ordered list of instances of such service functions, and the subsequent "steering" of traffic flows through those service functions.</t>
            <t>The set of enabled service function chains reflects operator service offerings and is designed in conjunction with application delivery and service and network policy.</t>
            <t>This document also identifies several key areas that the Service Function Chaining (SFC) working group will investigate to guide its architectural and protocol work and associated documents.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7498"/>
        <seriesInfo name="DOI" value="10.17487/RFC7498"/>
      </reference>
      <reference anchor="RFC7665">
        <front>
          <title>Service Function Chaining (SFC) Architecture</title>
          <author fullname="J. Halpern" initials="J." role="editor" surname="Halpern"/>
          <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro"/>
          <date month="October" year="2015"/>
          <abstract>
            <t>This document describes an architecture for the specification, creation, and ongoing maintenance of Service Function Chains (SFCs) in a network. It includes architectural concepts, principles, and components used in the construction of composite services through deployment of SFCs, with a focus on those to be standardized in the IETF. This document does not propose solutions, protocols, or extensions to existing protocols.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7665"/>
        <seriesInfo name="DOI" value="10.17487/RFC7665"/>
      </reference>
      <reference anchor="RFC8300">
        <front>
          <title>Network Service Header (NSH)</title>
          <author fullname="P. Quinn" initials="P." role="editor" surname="Quinn"/>
          <author fullname="U. Elzur" initials="U." role="editor" surname="Elzur"/>
          <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro"/>
          <date month="January" year="2018"/>
          <abstract>
            <t>This document describes a Network Service Header (NSH) imposed on packets or frames to realize Service Function Paths (SFPs). The NSH also provides a mechanism for metadata exchange along the instantiated service paths. The NSH is the Service Function Chaining (SFC) encapsulation required to support the SFC architecture (defined in RFC 7665).</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8300"/>
        <seriesInfo name="DOI" value="10.17487/RFC8300"/>
      </reference>
      <reference anchor="RFC3031">
        <front>
          <title>Multiprotocol Label Switching Architecture</title>
          <author fullname="E. Rosen" initials="E." surname="Rosen"/>
          <author fullname="A. Viswanathan" initials="A." surname="Viswanathan"/>
          <author fullname="R. Callon" initials="R." surname="Callon"/>
          <date month="January" year="2001"/>
          <abstract>
            <t>This document specifies the architecture for Multiprotocol Label Switching (MPLS). [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3031"/>
        <seriesInfo name="DOI" value="10.17487/RFC3031"/>
      </reference>
      <reference anchor="RFC5036">
        <front>
          <title>LDP Specification</title>
          <author fullname="L. Andersson" initials="L." role="editor" surname="Andersson"/>
          <author fullname="I. Minei" initials="I." role="editor" surname="Minei"/>
          <author fullname="B. Thomas" initials="B." role="editor" surname="Thomas"/>
          <date month="October" year="2007"/>
          <abstract>
            <t>The architecture for Multiprotocol Label Switching (MPLS) is described in RFC 3031. A fundamental concept in MPLS is that two Label Switching Routers (LSRs) must agree on the meaning of the labels used to forward traffic between and through them. This common understanding is achieved by using a set of procedures, called a label distribution protocol, by which one LSR informs another of label bindings it has made. This document defines a set of such procedures called LDP (for Label Distribution Protocol) by which LSRs distribute labels to support MPLS forwarding along normally routed paths. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5036"/>
        <seriesInfo name="DOI" value="10.17487/RFC5036"/>
      </reference>
      <reference anchor="RFC2205">
        <front>
          <title>Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification</title>
          <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
          <author fullname="L. Zhang" initials="L." surname="Zhang"/>
          <author fullname="S. Berson" initials="S." surname="Berson"/>
          <author fullname="S. Herzog" initials="S." surname="Herzog"/>
          <author fullname="S. Jamin" initials="S." surname="Jamin"/>
          <date month="September" year="1997"/>
          <abstract>
            <t>This memo describes version 1 of RSVP, a resource reservation setup protocol designed for an integrated services Internet. RSVP provides receiver-initiated setup of resource reservations for multicast or unicast data flows, with good scaling and robustness properties. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2205"/>
        <seriesInfo name="DOI" value="10.17487/RFC2205"/>
      </reference>
      <reference anchor="RFC8926">
        <front>
          <title>Geneve: Generic Network Virtualization Encapsulation</title>
          <author fullname="J. Gross" initials="J." role="editor" surname="Gross"/>
          <author fullname="I. Ganga" initials="I." role="editor" surname="Ganga"/>
          <author fullname="T. Sridhar" initials="T." role="editor" surname="Sridhar"/>
          <date month="November" year="2020"/>
          <abstract>
            <t>Network virtualization involves the cooperation of devices with a wide variety of capabilities such as software and hardware tunnel endpoints, transit fabrics, and centralized control clusters. As a result of their role in tying together different elements of the system, the requirements on tunnels are influenced by all of these components. Therefore, flexibility is the most important aspect of a tunneling protocol if it is to keep pace with the evolution of technology. This document describes Geneve, an encapsulation protocol designed to recognize and accommodate these changing capabilities and needs.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8926"/>
        <seriesInfo name="DOI" value="10.17487/RFC8926"/>
      </reference>
      <reference anchor="RFC2784">
        <front>
          <title>Generic Routing Encapsulation (GRE)</title>
          <author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
          <author fullname="T. Li" initials="T." surname="Li"/>
          <author fullname="S. Hanks" initials="S." surname="Hanks"/>
          <author fullname="D. Meyer" initials="D." surname="Meyer"/>
          <author fullname="P. Traina" initials="P." surname="Traina"/>
          <date month="March" year="2000"/>
          <abstract>
            <t>This document specifies a protocol for encapsulation of an arbitrary network layer protocol over another arbitrary network layer protocol. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2784"/>
        <seriesInfo name="DOI" value="10.17487/RFC2784"/>
      </reference>
    </references>
    <?line 332?>


    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="J." surname="Yang" fullname="Jinze Yang">
        <organization/>
        <address>
          <postal>
            <country>China</country>
          </postal>
          <email>jz.yang@live.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1ceXPbRpb/H5+ix6qaWGWSluUjNmdna3TaSsmKRlImldls
TbWAJtkRCCA4JNGW/Nnn914faIC0fGmrUrvLpGwcfbz7bHg4HEZxnuhsOhZN
PRm+jC7H4mkU1bpO1Vg8ONXTTKZ4LQ6y4ZGqr/LyQuzk86Kp6WFeqFLWOs8q
8fD04GhnXSSqSPPFXGW1iPFYJ27AgyiS5+eluqRVMfSukUkeZ3KO/ZNSTuph
mjfDsp5eTYeVzuJhO3HYnTjc2IhiWatpXi7GQl0XUVWXSs7H4mDvbD9aI+Cn
Zd4UYyFOzl6Ln19HF2qBpwlGZLUqM1UPd2nLKNJFORZ12VT15sbGq43NKMHC
Y/F+d+ts7xbryiz5l0zzDM8WqooKPRb/VefxQFR5iU0nFa4Wc3MBdOayKECw
/wYRmnqWl+NoGAmhs2osdkfiMG9wZ1D+50zZ+7wEU9408kppcabiWZan+VRj
MyEcJc1bPCBEVT0WJ3iPa1lVSmw+x4tY16DF2ybT8Yxu8yariTqvVTmX2YIf
Jdj2u5cbr15tfod7NZc6HYt3MzUC4f824y1GcT5vQT4ciQOZZcDeg33Y6KkO
nn4MeLFfyixW4nS0NTod/TRahcyaKHOSPpXoOi8D7J68HIi/N1KLpBHHuYbk
4OKHvCk9ott5g30yNdzWaYqN8K4O0Ta7t1i/2nyysRFgnRIaI23QWIn7L2CX
9mj/ot/N8sY8+Rp+XV970I9k9htEJIR2Z6Yz2QJ7fR1Cqhe890ogd0aQI8mL
GTh3Gj3XmX/4NaDa4ecSooWltmVWg04DCGs2nWJZsasxVMe1x+h0pjKIUbYK
JS9lmBkzcCEisEkYrs+buqMqP4zELyFWP+jsnXKP1u5Aam1Zxhxa20r/Tqbs
JJfJQLyROgFWIS5rVrKU/hh71ix/IEobr54HPPrt3WgB4P6W6ktl8Fo7URNV
Kshg9ZcoynIoYY2XYxicbNLeCWH+xx/RcDgEU0ipAU50NtMVGZSGDSeuoQUq
S1Qi6lwkuoqbqoINmqvQvsqqUHFdiXzyBRb9gTXpI7C6wvp5ZtZV13JepAp2
re7AIrHs4h00fJZfCSXjGSC41DELSw2jxkY/nkncNgC4rOUFBmsC6yoTkyaL
eduR6KJYYbmYZI7WaPA3kOCl5mCxzHQ1HxkazXWSpAokJlte5knD64n3a6d7
O2NNj26j6MvRJxrLdjMis8rkeapE5ZfS2TCzS8WrfCPAgPuQopDxhaqJZ4I4
oic6FlWM5UqdV9DoCyUA0okC7GpAl0YMoQYqOczjC352qn5vSIDKgVB1bMnV
whdDetVkAn5DktKFKHk1pl4tKwNgqpg0tQY74ciEnhdlfmkGVYuqVnNaQsca
+yxoB8u9SQm1YzQTRdjzZudKTKARCWH1/v2fDoa7I7JLocfe2Li9HQlizRnc
jmbFXFjO1O2T2754g92VgRyDwAa8UhOdKbfXyf7O989evby9Hbi7Fy+et3cv
n9LG7u7pxtMn7d3zjacvbm8Ze/Ngc3PjOUHZhQCOFBcEhKwZEsQTkF0Siomc
61TLUlzpemYkXJUs8PtWlmEgIO0kC7KMZ7oGT5rSUPxtk9Z6eFzmiBnyVBzK
c5WKU6yEcb3xI6Ibk3+31eidTuAD0v4MO2tVnhbwClflacOwWC20cjrgGyeP
kzKf84NZXtUYopKK5BychdXJqrmuazIwM8RO05kgOQbGZKIteka1ZWHUgrFQ
1WOMBt8oMvz58ck6hKQMFYUVwmgLIwH52NUTNo51C1AF0UyhBFAUxHOq1IS9
TB0aUMVLXeaZk5bE7iKW1fESkyHS0hGjVJUiMgMZrFsNHHfbtUmtGgyY52Ca
UZvrQYj2nJiIpwZ/wrIywpB4RJgoEJOaQh9ivJ9DNKxA4vpKKbKsTRnbIdAt
QGw4OyChJxOYGZHf19Mx7barjEZ9+PCB3cSjof096l4bJ3IjDIh0EV7bnx1z
BC8mtswYvt4WN3csHtnZdp1fH/ubXzsL+yGPzQtz82vn3WM7y63V2fZR/+ZR
B4QbprydG950XrTwfOay4bylu5u7V2qH3Ajo+PXCARfcfMkqn4LFM6WDx/Jd
hJlvSMW3HIX4brtz50XjC9YlMXw/FmuteArOIP9qUr2DLLRdZ3nB5v4B2/vW
CsHWwGORYjmtsLCSUlhA53KB8QhxeF0rsVD59nZbXGoZaCDrGfIVDpaQHCkK
W1MybzG0vVZkzkry1YLtlVHgDCuxCayaokBCZ9b3Hp0hmsiYFJuWaG0plJeC
vTL0ms4wGgMBZW7SRJAtQ94dyxQ+WiaYUusKTh970moc/8IxFEhiFNsmXTrD
RBT6c2DZaP24tTChyUGIMJqOeMUWeF2z38Y9RZzG8MVNydRiw5dyKEyPwY0L
t/7Cxhs+GkQey6mAjVvzbLAMOhEdlrYgd0U0+DjZZ2AXz2fHYL2VJeoVkrk2
aDSjEIAgtAk9CMRmQqZalqW+ZC9au6HOnrKDG4lTMuvejRE74OrSnGoHCc1K
5QKAbQ7EU5KtZ+RXKcYGfRB8Bl6UcVXXNdMdGX7q/EvgliB7++yTqGZAYR1Q
kwhoUgXQ55SXmyluyZYQn4gRHr49Pjxd7wQ3RG0TAygwkN67CI19I4eu4GbV
pE5qWUBnJqYxvofFNyQ+ZsllQR6RUkuxS8zaUVQ8EUcutNCGSK9VBiGP3XPx
D13WDQLmdwbhPQ8K3T18vXe09489h8/LV5svDD5MVkLnoO4gQ45ehUuMxI/Y
tfeQhIzJZ8Nrhgnqf5Ib3ekDceIh2Pz+5TMKFz8e1D083Ud60Is8iYhVLkgZ
vGQVeW2tDhBINFWSOJi9Umka2ImZDy2bqmG7EOcFUH88R2yeiFJPZ5C0SW3Z
k6mrHq5mgQFESFPYYvMr5GKVpjngY4wYo+oznuIIF2LmxHzDiuUY82x7BwPt
SDuoA0FvSLjYz5CASZpf2SGd/UDH3mZRdJCZ9LJSsTEtGOQw44zM6OjT0XPP
4oEhHakwDSibjNlk81XB2n/VsUA1hkCniGd3KAarbF4mhoYUkCr2Y6EZWsoA
jUhGURuyAQFINMVyhgOdnAB2RRKKw3O2rry7XZA1zRhWZ/ErK5OcTUPmTNwO
14a4HYLtPWoQq7JVDVJSE96raxVTctnLDoxQdqcQqnGpC762TgwrxGRt2wWs
zUBWr9KJOF+AH2yJGaOhT3qPTt/0ZFcmVMPABFrlIJvCadhoibiDJHg+b9/v
0Wv7HjSm8MP+VoQtn/kLJvXDpM/8BdHUfcBg17x73MrlVweNLZg+XVk1ogN7
J9Z7ZJb0NzedNx2YQEEb+DGnbjww9srf9N7wJMPdm8jHy+b9cPifAH1/314J
e7P8pp10T7jc8btZ+tP8PjWps/Gnh1PStu8J92WL3zm6i2lXj8KAnkx0GNF7
u70VVioooo9+zOLAhFqDwBECFytNfEtTk3zO5mtl6QQx05Vkmws3u7/e8bIm
HpyYEW36QF5XUcBmE3bY9phsm7OWvsRIfhD2nOskeRjA9q0ZQdmLMc5WAQsQ
exD2wl6uSjjHscIcc3HMusQl22irYtYTWg/CrqwXOdjwSM3PFVtTi4WLvxzY
b8zoh9hovVMpYzAJ5xAVAs2HKAQbNwCcZ1yuTmTVDCN0TMEQoOZrk+RkOcdn
9aJgf0drvVW1jSEfvt1d9/HIajq05UCeuism+lolw1RlU1uOolDcrMHiQNxc
tDlFkAEFLLcYrEJgJI5TRdiWVLR3qRltvkQ1ZJxARafku0FAXsCxJXCctmTT
Kpk3FxviidhEvvFMPBcvxPfipXj1Jc+iR8Nv/C+6gUrf/HjzExuNs7NDa0zE
oaGvwBvzHyh/Bh7eQLBAb5+f3NwDDC1tvPVx7HDmh8hPKagV44FNmL6zUH3n
YhMb+wjJ3bNhwe1CWVHZ2gQSB1tHW2yx/uNPw6GITtRUeptgQrsJQieWEZLW
EFdjs6wEiJk0UjnJUwS4XGuUaaOqsbW8G9dPxuLg+PKZv9/k+xf+/ulY7JFu
IPzyz56NSdL87fMx53P+fn8Pc3xFFALgX+x3XmxGUdVMp0iBuUHE5XPQhJIH
hnKMKS/GrHFR1JZYeQdS7wtTd62hA5cak8hI3kHP0SiCD46ifU8LpzIdlaiZ
Z7rq2P5jSscdV51OQtUmRgpOixknWCuaAEYR/9DK1YLTQfeAqgoIidnPHR+s
t17cDTvIEnX9P6FcLVlD1VrBDOPWz2auCF4HzuDjfoCGYASxrKrhoqtQEloH
8pE9TSLtHZx1WfAjkOKpIvEZ/WGZDSC+2ZaKX4/uAZCb028XPPH4zT1AAjhO
FAViUFtxs3tzuDI3eU2Hc8TB7opXoMh9EuQoH5FV59Dj1PZe3Eb4Bc/74NyI
mwMna/cA0FG0khKeZb8fNfM7BhiAdu4DEg8II/+jD5aCjfzLyaRCUL8EyOP7
kJQVMYC1JZ0MhO5D+7TWryi1FSeqv3IzkYrH4HqcypLr2dL0F/2ZBlP8pyyC
aimkGqYMsM7WiJ6XKlZcIDVvttd9zYkyiTRt6JyGLSFdWQAQRpokqChzqr+R
V5zmHMqahmo3eKhqVVRjlq/oycgVIlwjthLuGEFY3ZGdPMCZSNuMBMdc5YwT
J6pIGkiM4z7d5xMKy70K340Ic3lbdTHwbQbly877sJ5mLH9e6qnOZNrW9F3X
PKx9Zm21uede+BgAEYH7Ma7mhxnURKnb2hBYP2LYnlrY9vddqmgWCSBLghq3
B4Wr21H0bCS2Vjo1ruNx2NkpeZV05EVV3XVMoGiRs72DsKdxThLF5d0W2DTP
4SxhB5dioyWbXTOvSDa7RvvhaeelKQx2S/qGVBQyPXdbu45Q1as2nrcNH+Vj
rzCZWu4k+CJ1p+tuCeCtPMHWtbQGlEIuqAUVkKhIZaySVmYgaE3qiuGdQwQ0
v7Vdu6Szk1RO/VqVQf+J28mUKxllOhMw7EiH34+jlLBibqTepPl8vgbS94SU
jArNrHtgUwqqS8S5DaS6gXCAyfukAukiPH7BZ0lstSPpSGKvzPliJH7+lNCF
UwZU/O9K0/GB+DPBzbJh2oV05EG/M50CG5ArXoR7pkY629itV7TNkq5u6SwD
6l0pm7DWB024Ua/8z32qpWbDUgOAhq3oAGz+0TsAoRWhCa0lIYzIlLB5vKS+
VNrtChD6eq7hrkRQN3NHemxjAIPofNwgqLmxBSYapRWZU9M53EumivteXn65
H23rZJ1DQ7SAaycHZ1tIlvtdyBN3yOfw9ISOCpoWLFkcPgPX1M6cG6EwUIaL
gHTHfBQGKxyvB50FCAykVFc0wh0I+ASEgTeyEOO1G0rVMW0s6KILlHMdAMCI
z4j8x09Fnll/b1xs6LhkVzxWO8llJ9hdggU/JVo8rNa7RUmAMnD9bKthfNBw
hasCzUlzvNWeA2wwoy13DroTbPW0KdlMeYpwuz/vWurQpoNGYFZ84XN6Slje
5IVl5n4L5B6djhUPj94c7u+t9/J1owC+YT0SP9lWp+k+Xdf/mmFJtp2+fEnr
ePstzclJWBRYNniRY+ocEcmdaTCHM61JJHTpFIeyyWRrmUyHqqvYthtmPczv
zdIBAxuG+Loeo2WEznikysP5aYsedvq9ILQRWl4UmAzDLadUxrKy0HUbtlvf
bhJa2X415Ot6Ut/cFvvmrtjnNsXuhuKbpt7RROq34r6yIWbP5H15Q4w03TbE
7HG35Tef2xD7TFw8Ze7qLN3RS2JpX2om8dOlbpLL6vhtrytyt2M93NreOyTv
GjaFWkUz3ky6PsmkzNvTPb2zEX/UMtOvq0oHxhr3RViIsx0Ikx1vC1JcOnh7
H6WD4+hDf0sxGo3uEI/+74O4Obz3gtdX0uQeqhj/+8pd/1/r6gFyH1LykVKX
N18dK8m266MVL37blry2/q9Utu4uUXGFajusXyCw7rR/83Paic4T0icHy8du
V4X1542m1J5is8A7WRCLUg0L/0XWisoXx4t0aiuM91eAFiZ0Hy8UZNzzzouR
L3hx7B8m5S7J+Uoy3FULcxnsJ4thdKB64He2WTdMjSvf+S9sgGNXCKquCPRS
PIqTfXnDRNAk0DO5XPFa+ZHWPE+aVLnj4XjJh79tNmzPD4ObdBJ3TtJP2QmF
5ubzD8gvQvVEV5RyJPYA6hWf45Z8pI3bx+B8+3kWdqHvawwDzRdkHREmQvmt
TQlAxrXJkbq60DlxFxTy7sDTluMsY+6ow60o6g1MiQzi3dYIVyZJvWyvZ2E5
tbOFLFNxSnKnaq7ux1W11SW/Ly3wBYLSVCSRYdbtCO9I+EXFOVMkM7WWeynO
9VXy08W5UPZbrAaOeGFJLhQcT1Iu3XR5/HUVPe8zbGkPaTQ1WPpFPfPBX6Xi
WyrvrZBSdV3kdManfeJMvP9qjD8p9ck+wMMDqhMtRCk1za3c5qb2oy9lvOj9
AwNQFpINPxI8hP7O6ZO+2DQSVuqQzuK0ITN2TlUt6CYMhUg1XBeLxjiKhuKM
/sUANiOArOIvbgtZ1jrWhTQIGQQExrJmzPRv0hRVuOENZw0VzaZ4fUyw1/bs
ElMGSVHvC8nKfqDYGqvgq1+rW/aDAwJMJeGXCebDBBsg2O8SzFd55jy/owAf
byosNO6EMIUYfJYkoLdMF5WuwibTpXb5VcMFTTpEUplPYifG2M/VPDefhtL5
kdUSo7G0+zaUxgMtUJCo7w/5ZAs2RvaYCx9FYVHcii+y/ArGeaoMvd6v9R/d
UuyVNfNzKqT89cFEppV6sPQpqg2PEjGl0rHw36ezTSOf+UtDn4eLf87yZuAO
99PfdMqGOzETmP1zPgjB43c1SHtW5vRFkm/PSSaM2WKm0oJIZz7OdWU3PuaW
WTto/i0J8ltUM+UPHFhFZXbBZyVMPus+kKbNo+jfAwwH2fJDAAA=

-->

</rfc>
