<?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.6.34 (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-00" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <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 assume 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-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>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.</li>
          <li>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.</li>
          <li>The SFF forwards the encapsulated packet to the SINC SW/R.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</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>Host A transmits a packet containing a SINC header together with data to the SINC Ingress Proxy.</li>
          <li>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.</li>
          <li>The LSR forwards the packet based on the LSP information obtained from control plane.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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).</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>Trustworthiness of participating devices</li>
        <li>Data hijacking and tampering</li>
        <li>Private data exposure</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>
      <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">
            <organization/>
          </author>
          <author fullname="T. Nadeau" initials="T." role="editor" surname="Nadeau">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="U. Elzur" initials="U." role="editor" surname="Elzur">
            <organization/>
          </author>
          <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="A. Viswanathan" initials="A." surname="Viswanathan">
            <organization/>
          </author>
          <author fullname="R. Callon" initials="R." surname="Callon">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="I. Minei" initials="I." role="editor" surname="Minei">
            <organization/>
          </author>
          <author fullname="B. Thomas" initials="B." role="editor" surname="Thomas">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="L. Zhang" initials="L." surname="Zhang">
            <organization/>
          </author>
          <author fullname="S. Berson" initials="S." surname="Berson">
            <organization/>
          </author>
          <author fullname="S. Herzog" initials="S." surname="Herzog">
            <organization/>
          </author>
          <author fullname="S. Jamin" initials="S." surname="Jamin">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="I. Ganga" initials="I." role="editor" surname="Ganga">
            <organization/>
          </author>
          <author fullname="T. Sridhar" initials="T." role="editor" surname="Sridhar">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="T. Li" initials="T." surname="Li">
            <organization/>
          </author>
          <author fullname="S. Hanks" initials="S." surname="Hanks">
            <organization/>
          </author>
          <author fullname="D. Meyer" initials="D." surname="Meyer">
            <organization/>
          </author>
          <author fullname="P. Traina" initials="P." surname="Traina">
            <organization/>
          </author>
          <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 320?>


    <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:
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
g2VaPIr+DUcI0D2CQwAA

-->

</rfc>
