<?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.17 (Ruby 3.0.2) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zhou-sfc-sinc-00" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="SINC Architecture">Signaling In-Network Computing operations (SINC)</title>
    <seriesInfo name="Internet-Draft" value="draft-zhou-sfc-sinc-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="Zhou" fullname="Yujing Zhou">
      <organization abbrev="Huawei">Huawei Technologies</organization>
      <address>
        <postal>
          <street>Beiqing Road, Haidian District</street>
          <city>Beijing</city>
          <code>100095</code>
          <country>China</country>
        </postal>
        <email>zhouyujing3@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/>
    <workgroup>SFC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This memo introduces "Signaling In-Network Computing operations" (SINC), a mechanism to enable in-packet operation signaling for in-network computing for specific scenarios like NetReduce, NetDistributedLock, NetSequencer, etc. In particular, this solution allows to flexibly communicate computation parameters to be used in conjunction with the packets' payload, to signal to in-network SINC-enabled devices the computing operations to be performed.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="SEC_intro">
      <name>Introduction</name>
      <t>According to the original design, the Internet performs just "store and forward" of packets, and leaves more complex operations at the end-points. However, new emerging applications could benefit from in-network packet processing to improve the overall system efficiency (<xref target="GOBATTO"/>, <xref target="ZENG"/>).</t>
      <t>The formation of the COIN Research Group <xref target="COIN"/> in IRTF encourages people to explore this emerging technology and its impact on the Internet architecture. The "Use Cases for In-Network Computing" draft <xref target="I-D.irtf-coinrg-use-cases"/> introduces some use cases to demonstrate how real applications can benefit from COIN and show essential requirements demanded by COIN applications.</t>
      <t>Recent research has shown that network devices undertake some computing tasks can greatly improve the network and application performance in some scenarios like aggregating path-computing <xref target="NetReduce"/>, key-value(K-V) cache <xref target="NetLock"/>, and strong consistency <xref target="GTM"/>. Their implementations are mainly based on programmable network devices, by using P4 or other languages. In the context of such heterogeneity of scenarios, it is desirable to have a generic and flexible protocol to explicitly signal the computing operation to be performed by network devices, which is applicable to many use cases, enabling easier deployment of these research results.</t>
      <t>This document specifies a signaling architecture for in-network computing operation. The computing functions are hosted on network devices, which can be perceived as network SINC service instances.</t>
      <t>It focuses on the design of the data plane, while the control plane will be depicted in a separate draft.
Service Function Chaining (SFC) <xref target="RFC7665"/> is used as a running example on how to tunnel the SINC header to the in-network device and implement the desired in-network computation. Nevertheless, the mechanism can be adapted to other transport protocols, like Remote Direct Memory Access (RDMA) <xref target="ROCEv2"/>, but such adaptation is out of the scope of this document.</t>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>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 <xref target="RFC2119"/> and <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section anchor="SEC_terminology">
      <name>Terminology</name>
      <t>This document uses the terms as defined in <xref target="RFC7498"/>, <xref target="RFC7665"/> and <xref target="RFC8300"/>. This document assume that the reader is familiar with the Service Function Chaining architecture.</t>
    </section>
    <section anchor="SEC_usecases">
      <name>SINC Relevant Use Cases</name>
      <t>Hereafter a few relevant use cases are described, namely NetReduce, NetDistributedLock, and Net Sequencer, in order to help understanding of the requirements for a general framework. Such a framework, should be generic enough to accommodate a large variety of use cases, besides the ones described in this document.</t>
      <section anchor="netreduce">
        <name>NetReduce</name>
        <t>Over the last decade, the rapid development of the Deep Neural Networks (DNN) has greatly improved the performance of many Artificial Intelligence (AI) applications like computer vision and natural language processing. However, DNN training is a computation intensive and time consuming task, which has been increased exponentially (computation time gets doubled every 3.4 months <xref target="OPENAI"/>) in the past 10 years. Scale-up techniques concentrating on the computing capability of a single device cannot meet the expectation. Distributed DNN training approaches with synchronous data parallelism like Parameter Server and All-Reduce are commonly employed in practice, which on the other hand, become increasingly a network-bound workload since communication becomes a bottleneck at scale (<xref target="PARAHUB"/>,<xref target="MGWFBP"/>).</t>
        <t>Comparing with the host oriented solutions, in-network aggregation approaches like SwithML <xref target="SwitchML"/> and SHARP <xref target="SHARP"/> could potentially reduce nearly half of the bandwidth needed for data aggregation by offloading gradients aggregation from the host to the network switch. The SwitchML solution uses UDP for network transport. The system solely relies on application layer logic to trigger retransmission for packet loss, which leads to extra latency and reduces the training performance. The SHARP solution on the contrary, uses Remote Direct Memory Access (RDMA) to provide reliable transmission <xref target="ROCEv2"/>. As the Infini-Band (IB) technology requires specific hardware support, this solution is not very cost-effective. NetReduce <xref target="NetReduce"/> doesn't depend on dedicated hardware and provides a general in-network aggregation solution that is suitable for Ethernet networks.</t>
      </section>
      <section anchor="netdistributedlock">
        <name>NetDistributedLock</name>
        <t>In the majority of distributed system, the lock primitive is a widely used concurrency control mechanism. For large distributed systems, there is commonly a dedicated lock manager that nodes compete to gain read and/or write permissions of a resource. The lock manager is often abstracted as Compare And Swap (CAS) or Fetch Add (FA) operations.</t>
        <t>The lock manager is typically running on a server, causing a limitation on the performance by the speed of disk I/O transaction. When the load increases, for instance in the case of database transactions processed on a single node, the lock manager becomes a major performance bottleneck, consuming nearly 75% of transaction time <xref target="OLTP"/>. The multi-node distributed lock processing superimposes the communication latency between nodes, which makes the performance even worse. Therefore offloading the lock manager function from the server to the network switch might be a much better choice, as the switch is capable of managing lock function efficiently. Meanwhile it releases the server for other computation tasks.</t>
        <t>The test results in NetLock <xref target="NetLock"/> show that the lock manager running on a switch is able to answer 100 million requests per second, nearly 10 times more than what a lock server can do.</t>
      </section>
      <section anchor="netsequencer">
        <name>NetSequencer</name>
        <!--YJ And Cuimin update-->
<t>Transaction managers are centralized solutions to the consistency issue for distributed transactions, such as GTM in Postgre-XL (<xref target="GTM"/>, <xref target="CALVIN"/>). However, as a centralized module, transaction managers have became a bottleneck in large scale high-performance distributed systems. <br/>
The work <xref target="HPRDMA"/> introduces a server based networked sequencer, which is a kind of task manager assigning monotonically increasing sequence number for transactions. In <xref target="HPRDMA"/>, the authors shows that the maximum throughput is 122 Million requests per second (Mrps), at the cost of an increased average latency. 
This bounded throughput will impact the scalability of distributed systems. Meanwhile, the authors also test the bottlenecks for varies optimization methods, including CPU, DMA bandwidth and PCIe RTT, which is introduced by the CPU centric architecture.</t>
        <t>For a programmable switch, a sequencer is a rather simple operation to implement, while the pipeline architecture can avoid bottlenecks. It is worth trying to implement a  switch based sequencer, which set the performance goals as hundreds of Mrps and latency in the order of microseconds.</t>
      </section>
    </section>
    <section anchor="SEC_cbo">
      <name>Simple Generic Operations</name>
      <t>The COIN use case draft <xref target="I-D.irtf-coinrg-use-cases"/> illustrates some general requirements for scenarios like in-network control and distributed AI, where the aforementioned use cases belong to. One of the requirements defined in <xref target="I-D.irtf-coinrg-use-cases"/> is that any in-network computing system must provide means to specify the constraints for placing execution logic in certain logical execution points (and their associated physical locations). In case of NetReduce, NetDistributedLock and NetSequencer, data aggregation, lock management and sequence number generation functions can be offloaded respectively onto the network switch.</t>
      <t>We can see that those functions are based on some "simple" and "generic" operators, as shown in <xref target="table_usecases"/>. Programmable switches are capable of performing those basic operations by executing one or more operators, without impacting the forwarding performance (<xref target="NetChain"/>, <xref target="ERIS"/>).</t>
      <table anchor="table_usecases">
        <name>Example of in-network operators.</name>
        <thead>
          <tr>
            <th align="left">Use Case</th>
            <th align="left">Operation</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">NetReduce</td>
            <td align="left">Sum value (SUM)</td>
            <td align="left">The network device sums the collected parameters together and outputs the resulting value.</td>
          </tr>
          <tr>
            <td align="left">NetLock</td>
            <td align="left">Compare And Swap or Fetch-and-Add (CAS or FA)</td>
            <td align="left">By comparing the request value with the status of its own lock, the network device sends out whether the host has the acquired the lock. Through the CAS and FA, host can implement shared and exclusive locks.</td>
          </tr>
          <tr>
            <td align="left">NetSequencer</td>
            <td align="left">Fetch-and-Add (FA)</td>
            <td align="left">The network device offers a counter service and provides a monotonically increasing sequence number for the host.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="SEC_overview">
      <name>SINC Overview</name>
      <t>This section describes the various elements and functional modules in the SINC system and explains how they work together.</t>
      <t>The SINC computing protocol and extensions are designed for limited domains such as the data center network instead of across the Internet. The requirements and semantics are specifically limited, as defined in the previous sections.</t>
      <t>The main deployment model is to place SINC-capable switches/routers, aiming to take over part of the data computing operations during the data transmission. For instance, in the case of NetLock, Top-of-Rack switches can be equipped with SINC capabilities to manage I/O locks. In the case of NetReduce, SINC-capable switches can be deployed in a centric point where all data has to pass through, to achieve on-path aggregation/reduction.</t>
      <t><xref target="Fig_SINCArch"/> shows the architecture of a 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 the SINC header.</t>
      <t>Once the packet is in the SINC domain, it includes a SINC header, so that  SINC-enabled switches and router have access to such header and can perform the desired operation directly on the in-network device. Note that hosts can also be SINC enabled, in that case the proxies are not necessary.</t>
      <figure anchor="Fig_SINCArch">
        <name>SINC Architecture.</name>
        <artwork><![CDATA[
+---------+                    +---------+
| Hosts   |                    | Hosts   |
+---------+                    +---------+
     |        +-------------+       |
     |        |  SINC SW/R  |       |
+---------+   |  +-------+  |   +---------+
| SINC    |   |  |SINC   |  |   | SINC    |
| Ingress |-->|->|Service|->|-->| Egress  |
| Proxy   |   |  +-------+  |   | Proxy   |
+---------+   +-------------+   +---------+ 
]]></artwork>
      </figure>
    </section>
    <section anchor="SEC_SINC-CH">
      <name>SINC Header</name>
      <t>The SINC header, has a fixed length of 16 octets and it is  appended right after the Service Path Header, carries the data operation information, used for on-path in-switch SFs.</t>
      <!--
Group ID: 24 bits as VLAN tag 
SeqNum: 32 bits to allow large number of requests
Data Operation: 16 bit very large but allows to create structure, like first octet to identify a class of operation and the second octet the specific operation in the class.
Position of the fields:
First the group, then how many sources are in the group, then the single specific source, then the sequence number, can be used as round ID or Batch ID, then the operation to be performed and finally the data offset.    
-->
<figure anchor="fig_nshContext">
        <name>SINC Context 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved    |L|                    Group ID                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     No. of Data Sources       |    Data Source ID             |       
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SeqNum                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Data Operation          |    Data Offset                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <ul spacing="normal">
        <li>Reserved: Flags field reserved for future use. MUST be set to zero on transmission and ignored on reception.</li>
        <li>Loopback flag (L): Zero (0) indicates that the packet should be sent to the destination after the data operation. One (1) indicates that the packet should be sent back to the source node after the data operation.</li>
        <li>Group ID: The group ID identifies different groups. Each group is associated with one task.</li>
        <li>Number of Data Sources: Total number of data source nodes that are part of the group.</li>
        <li>Data Source ID: Unique identifier of the data source node of the packet.</li>
        <li>Sequence Number (SeqNum): The SeqNum is used to identify different requests within one group.</li>
        <li>Data Operation: The operation to be executed by the SF (see <xref target="SEC_ComputingOpe"/>).</li>
        <li>Data Offset: The in-packet offset from the SINC context header to the data required by the operation.</li>
      </ul>
    </section>
    <section anchor="SEC_sfcsinc">
      <name>SFC for Signal In-Network Computing</name>
      <t>As previously stated, Service Function Chaining (SFC) <xref target="RFC7665"/> is used as a running example on how to tunnel the SINC header to the in-network device and 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.</t>
      <t>Once the SINC packet is in the SFC domain, the Service Function Forwarder (SFF) <xref target="RFC7665"/> is responsible for forwarding 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>
      <figure anchor="Fig_SINCSFC">
        <name>SINC for SFC Architecture.</name>
        <artwork><![CDATA[
 +---------+                                         +---------+
 | Hosts   |                                         | Hosts   |
 +---------+                                         +---------+
      |                    +-----------+                 |
      |                    | SINC SW/R |                 |
 +-----------+   +-----+   |  +-----+  |   +-----+   +-----------+
 | Ingress   |   |     |   |  |     |  |   |     |   | Egress    |
 | SFC Proxy |-->| SFF |-->|  | SFF |  |-->| SFF |-->| SFC Proxy |
 +-----------+   +-----+   |  +-----+  |   +-----+   +-----------+
                           |     |     |           
                           |  +-----+  |     
                           |  |  SF |  |    
                           |  +-----+  |    
                           +-----------+
]]></artwork>
      </figure>
      <section anchor="sfc-elements">
        <name>SFC Elements</name>
        <t>As shown in <xref target="Fig_SINCSFC"/>, the SFC proxy, SFF, and SINC switch/router containing SFF and SF, are used.</t>
        <t>The SFC proxy is required to support SFC-unaware hosts to encapsulate the packets with correct NSH header and SINC context header, and to forward the packets to a correct SFF. 
The SFF forwards packets based on the Service Path Header (SPH), as specified in <xref target="RFC8300"/>.
The SFC-unaware hosts can only add the SINC information in the payload after the transport layer encapsulation.</t>
        <t>The SFC proxy needs to associate packets to a group and, hence, to a specific operation to be done in-network. For TCP and UDP packets, the five-tuple is sufficient for flow identification. For RoCEv2 packets, the destination port number is set to 4791 for the indication of the InfiniBand Base Transport Header (IB BTH), which cannot be used for flow identification. Therefore, a combination of source IP address, destination IP address, and Destination Queue Pair number <xref target="ROCEv2"/> should be used to for flow identification.</t>
        <t>For packets from the SFC-unaware hosts that requires SINC operation, the ingress SFC proxy will copy the SINC information to a SINC context header and set the Data Offset value accordingly ((see <xref target="SEC_SINC-CH"/>)).</t>
        <t>Based on the Group ID, the SPI is matched and the NSH based header is built. With a SFC encapsulation, the SINC packet will be forwarded to SFF.</t>
        <t>The egress SFC proxy removes the NSH header, including the SINC context header, before forwarding the packets to destination.</t>
        <t>With the standardized context header, the SFs can be decoupled from transport layer encapsulation. The SFs perform the data operation as defined in the headers, update the original payload with the results, and forward the packets to the next hop.</t>
      </section>
      <section anchor="sinc-nsh-encapsulation">
        <name>SINC NSH encapsulation</name>
        <t>This section defines the SINC header fields as part of the NSH <xref target="RFC8300"/> encapsulation for SFC <xref target="RFC7665"/>.</t>
      </section>
      <section anchor="nsh-base-header">
        <name>NSH Base Header</name>
        <t>The SINC NSH header is basically another type of NSH MD header. SINC NSH encapsulation uses the NSH Meta Data (MD) fixed-length context headers to carry the data operation information. Please refer to the NSH <xref target="RFC8300"/> for a detailed SFC basic header description. This draft suggest the base header specifies MD type = 0x4, to allow a fixed length context header immediately following the service path header.</t>
        <figure anchor="fig_nshbasic">
          <name>NSH Base Header, where "MD Type is set to 0x4.</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>
      </section>
      <section anchor="nsh-service-path-header">
        <name>NSH Service Path Header</name>
        <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>
      </section>
      <section anchor="SEC_SFCSINC">
        <name>Complete SINC NSH Header</name>
        <t>By stacking the previously shown headers, the complete SINC NSH header, meaning the NSH base header, NSH Service Path Header, and the SINC Header, all together are shown in <xref target="Fig_SINCNSH"/>.</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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Service Path Identifier (SPI)        | Service Index |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved    |L|                    Group ID                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     No. of Data Sources       |    Data Source ID             |       
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SeqNum                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Data Operation          |    Data Offset                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="sfc-based-sinc-workflow">
      <name>SFC-based SINC Workflow</name>
      <t>This section describes the SINC system workflow, focusing on elements and key information changes through the workflow. 
Since SINC's use-cases will use a programmable switch to host the SF, it is assumed that both SFF and SF are colocated on the same switch, as shown in <xref target="Fig_SINCWF"/>.</t>
      <figure anchor="Fig_SINCWF">
        <name>An Example of SINC system.</name>
        <artwork><![CDATA[
 +---------+                                         +---------+
 | Host A  |                                         | Host B  |
 +---------+                                         +---------+
      |                    +-----------+                 |
      |                    | SINC SW/R |                 |
 +-----------+   +-----+   |  +-----+  |   +-----+   +-----------+
 | Ingress   |   |     |   |  |     |  |   |     |   | Egress    |
 | SFC Proxy |-->| SFF |-->|  | SFF |  |-->| SFF |-->| SFC Proxy |
 +-----------+   +-----+   |  +-----+  |   +-----+   +-----------+
                           |     |     |           
                           |  +-----+  |     
                           |  |  SF |  |    
                           |  +-----+  |    
                           +-----------+   
]]></artwork>
      </figure>
      <t>For the sake of clarity, a simple example with one sender (Host A) and one Receiver (Host B) is provided. Packet processing goes through the following steps:</t>
      <ol spacing="normal" type="1"><li>Host A transmit the packet containing data that can be processed by the SF on the switch.</li>
        <li>The SFC Proxy performs encapsulates the original packet with the NSH header containing the SINC Header. Based on the information obtained from control plane, the SFC proxy builds a SINC context header pre-pended to the original packet. The SFC proxy encapsulates the packet as the transport protocol indicated by the SFC.</li>
        <li>SFF forwards the SINC packets to the specified SF. As shown in <xref target="Fig_SINCWF"/>, when the packet reaches the SINC switch, the packet reaches the egress point of the tunnel and the header is removed. The SFF looks up the SPI table and SI table and forwards the packet to the SF.</li>
        <li>SF performs the Computing Operation according to the content of the SINC header. The SF verifies the Group ID and Data Source ID in the SINC context header, then preforms the required computing according to the Data Operation field. When the computing is done, the payload is replaced with the result. The packet is re-encapsulated with the NSH SINC header. The SI is reduce by 1 while other fields are untouched. Then, the packet is forwarded to the SFC Egress.</li>
        <li>Packets are forwarded to Host B, its the final destination. When the packet reaches the SFC Egress, it looks up the SPI table and SI table and realizes it is the egress. It removes the NSH encapsulation and forwards the inner packet to the final destination.</li>
      </ol>
    </section>
    <section anchor="sinc-control-plane">
      <name>SINC Control Plane</name>
      <t>SINC networks need to deploy and control the whole life-cycle of the task. It should be able to manage the full life-cycle from the initialization to the end of the computing task and give support to the computing tasks. The detailed design of the control plane will be discussed in a separate document.</t>
    </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 document defines a new NSH fixed length context header. As such, IANA is requested to add the entry depicted in <xref target="Table_SINCIANA"/>, to the "NSH MD Types" sub registry of the "Network Service Header Parameter" registry. [Note to RFC Editor: If IANA assign a different value the authors will update the document accordingly]</t>
      <table anchor="Table_SINCIANA">
        <name>NSH MD type allocation for SINC NSH Context Header.</name>
        <thead>
          <tr>
            <th align="left">MD Type</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x4</td>
            <td align="left">NSA SINC MD Header</td>
            <td align="left">[This Document]</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>Dirk Trossen's feedback was of great help in improving this document.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7665" target="https://www.rfc-editor.org/info/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="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC7498" target="https://www.rfc-editor.org/info/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="RFC8300" target="https://www.rfc-editor.org/info/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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="COIN" target="https://datatracker.ietf.org/rg/coinrg/about/">
          <front>
            <title>Computing in the Network, COIN, proposed IRTF group</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NetReduce">
          <front>
            <title>NetReduce:/ RDMA-compatible in-network reduction for distributed DNN training acceleration</title>
            <author initials="S." surname="Liu" fullname="Shuo Liu">
              <organization/>
            </author>
            <author initials="Q." surname="Wang" fullname="Qiaoling Wang">
              <organization/>
            </author>
            <author initials="J." surname="Zhang" fullname="Junyi Zhang">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="NetLock">
          <front>
            <title>Netlock:/ Fast, centralized lock management using programmable switches</title>
            <author initials="Y." surname="Z" fullname="Yu Z">
              <organization/>
            </author>
            <author initials="Z." surname="Y" fullname="Zhang Y">
              <organization/>
            </author>
            <author initials="B." surname="V" fullname="Braverman V">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="Proceedings of the Annual conference of the ACM Special Interest Group on Data Communication on the applications, technologies, architectures, and protocols for computer communication." value=""/>
        </reference>
        <reference anchor="GTM" target="https://www.postgres-xl.org/documentation/xc-overview-gtm.html">
          <front>
            <title>GTM and Global Transaction Management</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OPENAI" target="https://openai.com/blog/ai-and-compute/">
          <front>
            <title>OpenAI. AI and compute</title>
            <author>
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="PARAHUB">
          <front>
            <title>Parameter hub:/ a rack-scale parameter server for distributed deep neural network training</title>
            <author initials="L." surname="L" fullname="Luo L">
              <organization/>
            </author>
            <author initials="N." surname="J" fullname="Nelson J">
              <organization/>
            </author>
            <author initials="C." surname="L" fullname="Ceze L">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="Proceedings of the ACM Symposium on Cloud Computing." value=""/>
        </reference>
        <reference anchor="MGWFBP">
          <front>
            <title>MG-WFBP:/ Efficient data communication for distributed synchronous SGD algorithms</title>
            <author initials="S." surname="Shi" fullname="Shaohua Shi">
              <organization/>
            </author>
            <author initials="X." surname="Chu" fullname="Xiaowen Chu">
              <organization/>
            </author>
            <author initials="B." surname="Li" fullname="Bo Li">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="IEEE INFOCOM 2019-IEEE Conference on Computer Communications. IEEE" value=""/>
        </reference>
        <reference anchor="SwitchML">
          <front>
            <title>Scaling distributed machine learning with in-network aggregation</title>
            <author initials="S." surname="A" fullname="Sapio A">
              <organization/>
            </author>
            <author initials="C." surname="M" fullname="Canini M">
              <organization/>
            </author>
            <author initials="C." surname="Ho" fullname="CY Ho">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="SHARP">
          <front>
            <title>Scalable hierarchical aggregation and reduction protocol (SHARP) TM streaming-aggregation hardware design and evaluation</title>
            <author initials="G. R." surname="L" fullname="Graham R L">
              <organization/>
            </author>
            <author initials="L." surname="L" fullname="Levi L">
              <organization/>
            </author>
            <author initials="B." surname="D" fullname="Burredy D">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="International Conference on High Performance Computing" value=""/>
        </reference>
        <reference anchor="OLTP">
          <front>
            <title>Improving OLTP scalability using speculative lock inheritance</title>
            <author initials="J." surname="R" fullname="Johnson R">
              <organization/>
            </author>
            <author initials="P." surname="I" fullname="Pandis I">
              <organization/>
            </author>
            <author initials="A." surname="A" fullname="Ailamaki A">
              <organization/>
            </author>
            <date year="2009"/>
          </front>
          <seriesInfo name="Proceedings of the VLDB Endowment" value=""/>
        </reference>
        <reference anchor="HPRDMA" target="https://www.usenix.org/conference/atc16/technical-sessions/presentation/kalia">
          <front>
            <title>Design Guidelines for High Performance RDMA Systems</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NetChain">
          <front>
            <title>NetChain:/ Scale-free sub-RTT coordination</title>
            <author initials="X." surname="Jin" fullname="Xin Jin">
              <organization/>
            </author>
            <author initials="X." surname="Li" fullname="Xiaozhou Li">
              <organization/>
            </author>
            <author initials="H." surname="Zhang" fullname="Haoyu Zhang">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="ERIS">
          <front>
            <title>Eris:/ Coordination-Free Consistent Transactions Using In-Network Concurrency Control</title>
            <author initials="J." surname="Li" fullname="Jialin Li">
              <organization/>
            </author>
            <author initials="E." surname="Michael" fullname="Ellis Michael">
              <organization/>
            </author>
            <author initials="D. R. K." surname="Ports" fullname="Dan R. K. Ports">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="SOSP '17:/ Proceedings of the 26th Symposium on Operating Systems Principles" value=""/>
        </reference>
        <reference anchor="ROCEv2" target="https://cw.infinibandta.org/document/dl/7781">
          <front>
            <title>InfiniBand Architecture Specification Release 1.2.1 Annex A17 RoCEv2</title>
            <author>
              <organization/>
            </author>
            <date year="2014" month="September"/>
          </front>
          <seriesInfo name="InfiniBand Trade Association" value=""/>
        </reference>
        <reference anchor="CALVIN">
          <front>
            <title>Calvin: fast distributed transactions for partitioned database systems</title>
            <author fullname="Alexander Thomson" initials="A." surname="Thomson">
              <organization/>
            </author>
            <author fullname="Thaddeus Diamond" initials="T." surname="Diamond">
              <organization/>
            </author>
            <author fullname="Shu-Chun Weng" initials="S." surname="Weng">
              <organization/>
            </author>
            <author fullname="Kun Ren" initials="K." surname="Ren">
              <organization/>
            </author>
            <author fullname="Philip Shao" initials="P." surname="Shao">
              <organization/>
            </author>
            <author fullname="Daniel J. Abadi" initials="D." surname="Abadi">
              <organization/>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="Proceedings of the 2012 international conference on Management of Data - SIGMOD" value="'12"/>
          <seriesInfo name="DOI" value="10.1145/2213836.2213838"/>
        </reference>
        <reference anchor="GOBATTO">
          <front>
            <title>Programmable Data Planes meets In-Network Computing: A Review of the State of the Art and Prospective Directions</title>
            <author fullname="Leonardo Reinehr Gobatto" initials="L." surname="Reinehr Gobatto">
              <organization/>
            </author>
            <author fullname="Pablo Rodrigues" initials="P." surname="Rodrigues">
              <organization/>
            </author>
            <author fullname="Mateus Saquetti Pereira de Carvalho Tirone" initials="M." surname="Tirone">
              <organization/>
            </author>
            <author fullname="Weverton Luis da Costa Cordeiro" initials="W." surname="Cordeiro">
              <organization/>
            </author>
            <author fullname="José Rodrigo Furlanetto Azambuja" initials="J." surname="Azambuja">
              <organization/>
            </author>
            <date month="August" year="2021"/>
          </front>
          <seriesInfo name="Journal of Integrated Circuits and Systems" value="vol. 16, no. 2, pp. 1-8"/>
          <seriesInfo name="DOI" value="10.29292/jics.v16i2.497"/>
        </reference>
        <reference anchor="ZENG">
          <front>
            <title>Guest Editorial: In-Network Computing: Emerging Trends for the Edge-Cloud Continuum</title>
            <author fullname="Deze Zeng" initials="D." surname="Zeng">
              <organization>School of Computer Science, China University of Geosciences,Wuhan,China</organization>
            </author>
            <author fullname="Nirwan Ansari" initials="N." surname="Ansari">
              <organization>New Jersey Institute of Technology (NJIT),USA</organization>
            </author>
            <author fullname="Marie-Jose Montpetit" initials="M." surname="Montpetit">
              <organization>Concordia University,Montreal,Canada</organization>
            </author>
            <author fullname="Eve M. Schooler" initials="E." surname="Schooler">
              <organization>Intel,USA</organization>
            </author>
            <author fullname="Daniele Tarchi" initials="D." surname="Tarchi">
              <organization>University of Bologna,Italy</organization>
            </author>
            <date month="September" year="2021"/>
          </front>
          <seriesInfo name="IEEE Network" value="vol. 35, no. 5, pp. 12-13"/>
          <seriesInfo name="DOI" value="10.1109/mnet.2021.9606835"/>
        </reference>
        <reference anchor="I-D.irtf-coinrg-use-cases" target="https://www.ietf.org/archive/id/draft-irtf-coinrg-use-cases-02.txt">
          <front>
            <title>Use Cases for In-Network Computing</title>
            <author fullname="Ike Kunze" initials="I." surname="Kunze">
              <organization>RWTH Aachen University</organization>
            </author>
            <author fullname="Klaus Wehrle" initials="K." surname="Wehrle">
              <organization>RWTH Aachen University</organization>
            </author>
            <author fullname="Dirk Trossen" initials="D." surname="Trossen">
              <organization>Huawei Technologies Duesseldorf GmbH</organization>
            </author>
            <author fullname="Marie-Jose Montpetit" initials="M." surname="Montpetit">
              <organization>Concordia University</organization>
            </author>
            <author fullname="Xavier de Foy" initials="X." surname="de Foy">
              <organization>InterDigital Communications, LLC</organization>
            </author>
            <author fullname="David Griffin" initials="D." surname="Griffin">
              <organization>University College London</organization>
            </author>
            <author fullname="Miguel Rio" initials="M." surname="Rio">
              <organization>University College London</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <abstract>
              <t>   Computing in the Network (COIN) comes with the prospect of deploying
   processing functionality on networking devices, such as switches and
   network interface cards.  While such functionality can be beneficial
   in several contexts, it has to be carefully placed into the context
   of the general Internet communication.

   This document discusses some use cases to demonstrate how real
   applications can benefit from COIN and to showcase essential
   requirements that have to be fulfilled by COIN applications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-coinrg-use-cases-02"/>
        </reference>
      </references>
    </references>
    <section anchor="SEC_ComputingOpe">
      <name>Computing Capability Operation abstraction</name>
      <t>Computing tasks and application are becoming increasingly complex. The complexities are caused by model extension. If some computing tasks are directly offloaded on network devices, the universality of devices will be reduced. Complex models can be disassembled into basic calculation operation, such as addition, subtraction, Max, etc. Therefore, a more appropriate offloading method is to disassemble complex tasks into basic computing operations.</t>
      <t>The DOIN Network needs to provide a set of general computing abilities abstraction framework. The application, management and computing network nodes can negotiate and calculate resources according to the abstract computing abilities. For each calculation operation, such as addition, subtraction and maximization, the corresponding settings should be found in the abstract scheme and the abstraction should be realized. The abstraction of computing abilities represents that network nodes should give the same output with the same input and operation.</t>
      <table anchor="table_operationex">
        <name>The example of DOIN Operation</name>
        <thead>
          <tr>
            <th align="left">OpName</th>
            <th align="left">Operation Explanation</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Max</td>
            <td align="left">Maximum value of several parameters</td>
          </tr>
          <tr>
            <td align="left">MIN</td>
            <td align="left">Minimum value</td>
          </tr>
          <tr>
            <td align="left">SUM</td>
            <td align="left">Sum value</td>
          </tr>
          <tr>
            <td align="left">PROD</td>
            <td align="left">Product value</td>
          </tr>
          <tr>
            <td align="left">LAND</td>
            <td align="left">Logical and</td>
          </tr>
          <tr>
            <td align="left">BAND</td>
            <td align="left">Bit-wise and</td>
          </tr>
          <tr>
            <td align="left">LOR</td>
            <td align="left">Logical or</td>
          </tr>
          <tr>
            <td align="left">BOR</td>
            <td align="left">Bit-wise or</td>
          </tr>
          <tr>
            <td align="left">LXOR</td>
            <td align="left">Logical xor</td>
          </tr>
          <tr>
            <td align="left">BXOR</td>
            <td align="left">Bit-wise xor</td>
          </tr>
          <tr>
            <td align="left">WRITE</td>
            <td align="left">Write value accord to key</td>
          </tr>
          <tr>
            <td align="left">READ</td>
            <td align="left">Read value accord to key</td>
          </tr>
          <tr>
            <td align="left">DELETE</td>
            <td align="left">Delete value accord to key</td>
          </tr>
          <tr>
            <td align="left">CAS</td>
            <td align="left">Compare and swap. compare the value of the key and old value. If not same, swap old value to key value. Return old key value.</td>
          </tr>
          <tr>
            <td align="left">CAADD</td>
            <td align="left">Compare and add. compare the value of the key and expected value. If same, add add-value to key value. Return old key value.</td>
          </tr>
          <tr>
            <td align="left">CASUB</td>
            <td align="left">Compare and subtract. compare the value of the key and expected value. If same, sub sub-value to key value. Return old key value.</td>
          </tr>
          <tr>
            <td align="left">FA</td>
            <td align="left">Fetch and add. Fetch value according key. Add add-value to key value. Return old key-value.</td>
          </tr>
          <tr>
            <td align="left">FASUB</td>
            <td align="left">Fetch and subtract.Fetch value according key. Subtract sub-value to key value. Return old key value.</td>
          </tr>
          <tr>
            <td align="left">FAOR</td>
            <td align="left">Fetch and OR. Fetch value according key. Key value get logical or operation with parameter. Return old key value.</td>
          </tr>
          <tr>
            <td align="left">FAADD</td>
            <td align="left">Fetch and ADD. Fetch value according key. Key value get logical add operation with parameter. Return old key value.</td>
          </tr>
          <tr>
            <td align="left">FANAND</td>
            <td align="left">Fetch and NAND. Fetch value according key. Key value get logical NAND operation with parameter. Return old key value.</td>
          </tr>
          <tr>
            <td align="left">FAXOR</td>
            <td align="left">Fetch and XOR. Fetch value according key. Key value get logical XOR operation with parameter. Return old key value.</td>
          </tr>
        </tbody>
      </table>
      <t>Defining an appropriate abstract model of computing capability is helpful for interoperability between computing devices. They are also a necessary condition for the application and practice of In-Network computing technology. Most of the existing papers are based on a single computing task, and corresponding private protocols are proposed. The lack of unified protocols makes the equipment complex and unstable. It also makes the research task of In-Network computing impossible to disassemble. For example, scholars who study hardware prefer to focus on optimizing the processing efficiency of a single operator in the device, but they are not good at the message protocol with the design operator. The computing capability abstraction model should support a variety of operators, including the possibility of operator extension.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
WTKFcX0AAA==

-->

</rfc>
