<?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.22 (Ruby 3.0.2) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zhou-rtgwg-sinc-00" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="SINC">Signaling In-Network Computing operations (SINC)</title>
    <seriesInfo name="Internet-Draft" value="draft-zhou-rtgwg-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="J." surname="Yang" fullname="Jinze Yang">
      <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>yangjinze@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>
      <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>
  <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 computing to improve the overall system efficiency (<xref target="GOBATTO"/>, <xref target="ZENG"/>).</t>
      <t>The formation of the COmputing In-Network (COIN) Research Group <xref target="COIN"/>, in the IRTF, encourages people to explore this emerging technology and its impact on the Internet architecture. The "Use Cases for In-Network Computing" document <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 undertaking some computing tasks can greatly improve the network and application performance in some scenarios, like for instance aggregating path-computing <xref target="NetReduce"/>, key-value(K-V) cache <xref target="NetLock"/>, and strong consistency <xref target="GTM"/>. Their implementations mainly rely on programmable network devices, by using P4 <xref target="P4"/> or other languages. In the context of such heterogeneity of scenarios, it is desirable to have a generic and flexible framework,  able to explicitly signaling the computing operation to be performed by network devices, which should be applicable to many use cases, enabling easier deployment.</t>
      <t>This document specifies such a Signaling In-Network Computing (SINC) framework for, as the name states, in-network computing operation. The computing functions are hosted on network devices, which, in this memo, are generally named as SINC switches/routers.</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_usecases">
      <name>SINC Relevant Use Cases</name>
      <t>Hereafter a few relevant use cases are described, namely NetReduce, NetDistributedLock, and NetSequencer, in order to help understanding the requirements for a 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 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 increasing 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 <xref target="PARAHUB"/> and All-Reduce <xref target="MGWFBP"/> are commonly employed in practice, which on the other hand, become increasingly a network-bound workload since communication becomes a bottleneck at scale.</t>
        <t>Comparing to host-oriented solutions, in-network aggregation approaches like SwitchML <xref target="SwitchML"/> and SHARP <xref target="SHARP"/> could potentially reduce to nearly half the bandwidth needed for data aggregation, by offloading gradients aggregation from the host to network switches. 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"/> does not 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 usually a dedicated lock manager that nodes contact 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 better choice, since the switch is capable of managing lock function efficiently. Meanwhile it liberate 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>
        <t>Transaction managers are centralized solutions to guarantee consistency for distributed transactions, such as GTM in Postgre-XL (<xref target="GTM"/>, <xref target="CALVIN"/>). However, as a centralized module, transaction managers have become a bottleneck in large scale high-performance distributed systems. The work by Kalia et al. <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. The authors also test the bottleneck 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, while the pipeline architecture can avoid bottlenecks. It is worth implementing a switch-based sequencer, which sets the performance goal as hundreds of Mrps and latency in the order of microseconds.</t>
      </section>
    </section>
    <section anchor="SEC_inet-op">
      <name>In-Network 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 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 onto the in-network device. 
It can be observed that those functions are based on "simple" and "generic" operators, as shown in <xref target="Table_usecases"/>. Programmable switches are capable of performing 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 operations.</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 in-network device sums the data 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 with the status of its own lock, the in-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 in-network device provides a monotonically increasing counter number for the host.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="SEC_overview">
      <name>SINC Framework Overview</name>
      <t>This section describes the various elements of the SINC framework and explains how they work together.</t>
      <t>The SINC protocol and extensions are designed for deployment in limited domains, such as a data center network, rather than deployment across the open  Internet. The requirements and semantics are specifically limited, as defined in the previous sections.</t>
      <t><xref target="Fig_SINCArch"/> shows the overall SINC framework, consisting of Hosts, the SINC Ingress Proxy, SINC switch/router (SW/R), the SINC Egress Proxy and normal switches/routers(if any).</t>
      <figure anchor="Fig_SINCArch">
        <name>General SINC deployment.</name>
        <artwork><![CDATA[
 +---------+                                             +---------+
 | Host A  |                                             | Host B  |
 +---------+                                             +---------+
      |                                                       |
      |                                                       |
 +------------+   +------+   +-----------+   +------+   +-----------+
 |SINC Ingress|   |      |   |           |   |      |   |SINC Egress|
 |Proxy       |-->| SW/R |-->| SINC SW/R |-->| SW/R |-->|Proxy      |
 +------------+   +----- +   +-----------+   +------+   +-----------+        
                                
]]></artwork>
      </figure>
      <t>In the SINC domain, a host MUST be SINC-aware. It defines the data operation to be executed. However, it does not need to be aware of where the operation will be executed and how the traffic will be steered in the network.
The host sends out packets with a SINC header containing the definition and parameters of data operations. The SINC header could be placed directly after the transport layer, before the computing data as part of the payload. However, the SINC header can also potentially be positioned at layer 4, layer 3, or even layer 2, depending on the network context of the applications and the deployment consideration. This will be discussed in further details in <xref target="I-D.zhou-sinc-deployment-considerations"/>.</t>
      <t>The SINC proxies are responsible for encapsulating/decapsulating packets in order to steer them through the right network path and nodes. The SINC proxies may or may not be collocated with hosts. 
The SINC Ingress Proxy encapsulates and forwards packets containing a SINC header, to the right node(s) with SINC operation capabilities. Such an operation may involve the use of protocols like Service Function Chaining (SFC <xref target="RFC7665"/>), LISP <xref target="RFC9300"/>, Geneve <xref target="RFC8926"/>, or even MPLS <xref target="RFC3031"/>. Based on the definition of the required data processing and the network capabilities, the SINC ingress proxy can determine whether the data processing defined in the SINC header could be executed in a single node or in multiple nodes. The SINC Egress Proxy is responsible for decapsulating packets before forwarding them to the destination host.</t>
      <t>The SINC switch/router is the node equipped with in-network computing capabilities. Upon receiving a SINC packet, the SINC switch/router data-plane processes the SINC header, executes required operations, updates the payload with results (if necessary) and forwards the packet to the destination.</t>
      <t>The SINC workflow is as follows:</t>
      <ol spacing="normal" type="1"><li>Host A transmits a packet with the SINC header and data to the SINC Ingress proxy.</li>
        <li>The SINC Ingress proxy encapsulates and forwards the original packet to a SINC switch/router(s).</li>
        <li>The SINC switches/routers verifies the source, checks the integrity of the data and performs the required data processing defined in the SINC header. When the computing is done, if necessary, the payload is updated with the result and then forwarded to the SINC Egress proxy.</li>
        <li>When the packet reaches the SINC Egress Proxy, the encapsulation will be removed and the inner packet will be forwarded to the final destination (Host B).</li>
      </ol>
    </section>
    <section anchor="data-operation-mode">
      <name>Data Operation Mode</name>
      <t>According to the SINC scenarios, the SINC processing can be divided into two modes: individual computing mode and batch computing mode.</t>
      <t>Individual operations include all operations that can be performed on data coming from a single packet (e.g., Netlock). Conversely, batch operations include all operations that require to collect data from multiple packets (e.g., NetReduce data aggregation).</t>
      <section anchor="individual-computing-mode">
        <name>Individual Computing Mode</name>
        <t>The NetLock is a typical scenario involving individual operations, where the SINC switch/router acts as a lock server, generating a lock for a packet coming from one host.</t>
        <t>This kind of operation has some general aspects to be considered:</t>
        <ul spacing="normal">
          <li>Initialization of the context on the computing device. The context is the information necessary to perform operations on the packets. For instance, the context for a lock operation includes selected keys, lock states (values) for granting locks.</li>
          <li>Error conditions. Operations may fail and, as a consequence, sometimes actions needs to be taken, e.g. sending a message to the source host. However, error handling is not necessarily handled by the SINC switch/router, which could simply roll back the operation and forward the packet unchanged to the destination host. The destination host will in this case perform the operation. If the operation fails again, the destination host will handle the error condition and may send a message back to the source host. In this way SINC switches/router operation remains relatively simple.</li>
        </ul>
      </section>
      <section anchor="batch-computing-mode">
        <name>Batch Computing Mode</name>
        <t>The batch operations require to collect data from multiple before actually being able to perform the required operations. For instance, in the NetReduce scenario, the gradient aggregation requires packets carrying gradient arrays from each host to generate the desired result array.</t>
        <t>In this scenario, beside the general issues mentioned for the individual operations, the batch operation may fail because some packets do not arrive (or arrive too late). The time the packets are temporarily cached on the SINC switch/router should be carefully configured. On the one hand, it has to be sufficiently long so that there is enough time to receive all required packets. On the other hand, it has to be sufficiently short so that no retransmissions are triggered at the transport or application layers on the end hosts. Similarly to the error condition  for the individual operations, if the SINC switch/router does not receive all required packets in the configured time interval, it can simply forward the packets to the end host so that they deal with packet losses and retransmissions if necessary.</t>
      </section>
    </section>
    <section anchor="SEC_SINC-CH">
      <name>SINC Header</name>
      <t>The SINC header carries the data operation information and it has a fixed length of 16 octets, as shown in <xref target="Fig_nshContext"/>.</t>
      <figure anchor="Fig_nshContext">
        <name>SINC 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  |D|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 MUST be ignored on reception.</li>
        <li>Done flag (D): Zero (0) indicates that the request operation is not yet performed. One (1) indicates the operation has been done. The source host MUST set this bit to 0. The in-network switch/router performing the operation MUST set this flag to 1 after the operation is executed.</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 SINC switch/router.  <xref target="SEC_ComputingOpe"/> briefly discusses possible operations.</li>
        <li>Data Offset: The in-packet offset from the SINC header to the data required by the operation. This field is useful in cases where the data is not right after the SINC header, the offset indicates directly where, in the packet, the data is located.</li>
      </ul>
    </section>
    <section anchor="sinc-control-plane-requirements">
      <name>SINC Control Plane Requirements</name>
      <t>The SINC control plane has to configure SINC network elements to ensure the proper execution of the computing task. The SINC framework can work with either centralized or distributed control planes However, this document does not assume any specific control plane design. The basic requirements of the control plane shall include the following:</t>
      <ul spacing="normal">
        <li>The SINC control plane should be aware of the switch resources. This may be achieved by regularly querying the devices.</li>
        <li>The SINC control plane should be able to select the switches/roouters based on certain constraints. For instance selecting switches/routers that are able to perform a specific more complex operations, or being able to distribute the load on various alternative switches/routers without increasing the transmission delay.</li>
        <li>The SINC control plane should be able to provide the necessary configuration so that packets flow to the right place and encapsulation/decapsulation operations are performed correctly. This means for instance configuring the parameters of the selected transport and its forwarding rules.</li>
        <li>The SINC control plane should provide monitoring and failover mechanism in order to handle errors and failures.</li>
      </ul>
    </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 makes no requests to IANA.</t>
    </section>
    <section anchor="acknowledgements-acknowledgements-numberedfalse">
      <name>Acknowledgements {#Acknowledgements} {: numbered="false"}</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="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">
          <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>
      </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 initials="A." surname="Kalia" fullname="Anuj Kalia">
              <organization/>
            </author>
            <author initials="M." surname="Kaminsky" fullname="Michael Kaminsky">
              <organization/>
            </author>
            <author initials="D. G." surname="Andersen" fullname="David G. Andersen">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="2016 USENIX Annual Technical Conference (USENIX ATC 16)" value=""/>
        </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>Yale University, New Haven, CT, USA</organization>
            </author>
            <author fullname="Thaddeus Diamond" initials="T." surname="Diamond">
              <organization>Yale University, New Haven, CT, USA</organization>
            </author>
            <author fullname="Shu-Chun Weng" initials="S." surname="Weng">
              <organization>Yale University, New Haven, CT, USA</organization>
            </author>
            <author fullname="Kun Ren" initials="K." surname="Ren">
              <organization>Yale University, New Haven, CT, USA</organization>
            </author>
            <author fullname="Philip Shao" initials="P." surname="Shao">
              <organization>Yale University, New Haven, CT, USA</organization>
            </author>
            <author fullname="Daniel J. Abadi" initials="D." surname="Abadi">
              <organization>Yale University, New Haven, CT, USA</organization>
            </author>
            <date month="May" year="2012"/>
          </front>
          <seriesInfo name="Proceedings of the 2012 ACM SIGMOD International Conference on Management of" value="Data"/>
          <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="P4">
          <front>
            <title>P4: programming protocol-independent packet processors</title>
            <author fullname="Pat Bosshart" initials="P." surname="Bosshart">
              <organization>Barefoot Networks, Palo Alto, CA, USA</organization>
            </author>
            <author fullname="Dan Daly" initials="D." surname="Daly">
              <organization>Intel, Ann Arbor, MI, USA</organization>
            </author>
            <author fullname="Glen Gibb" initials="G." surname="Gibb">
              <organization>Barefoot Networks, Palo Alto, CA, USA</organization>
            </author>
            <author fullname="Martin Izzard" initials="M." surname="Izzard">
              <organization>Barefoot Networks, Palo Alto, CA, USA</organization>
            </author>
            <author fullname="Nick McKeown" initials="N." surname="McKeown">
              <organization>Stanford University, Stanford, CA, USA</organization>
            </author>
            <author fullname="Jennifer Rexford" initials="J." surname="Rexford">
              <organization>Princeton University, Princeton, NJ, USA</organization>
            </author>
            <author fullname="Cole Schlesinger" initials="C." surname="Schlesinger">
              <organization>Princeton University, Princeton, NJ, USA</organization>
            </author>
            <author fullname="Dan Talayco" initials="D." surname="Talayco">
              <organization>Barefoot Networks, Palo Alto, CA, USA</organization>
            </author>
            <author fullname="Amin Vahdat" initials="A." surname="Vahdat">
              <organization>Google, Mountain View, CA, USA</organization>
            </author>
            <author fullname="George Varghese" initials="G." surname="Varghese">
              <organization>Microsoft Research, Mountain View, CA, USA</organization>
            </author>
            <author fullname="David Walker" initials="D." surname="Walker">
              <organization>Princeton University, Princeton, NJ, USA</organization>
            </author>
            <date month="July" year="2014"/>
          </front>
          <seriesInfo name="ACM SIGCOMM Computer Communication Review" value="vol. 44, no. 3, pp. 87-95"/>
          <seriesInfo name="DOI" value="10.1145/2656877.2656890"/>
        </reference>
        <reference anchor="I-D.irtf-coinrg-use-cases">
          <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>
        <reference anchor="I-D.zhou-sinc-deployment-considerations">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </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="RFC9300">
          <front>
            <title>The Locator/ID Separation Protocol (LISP)</title>
            <author fullname="D. Farinacci" initials="D." surname="Farinacci">
              <organization/>
            </author>
            <author fullname="V. Fuller" initials="V." surname="Fuller">
              <organization/>
            </author>
            <author fullname="D. Meyer" initials="D." surname="Meyer">
              <organization/>
            </author>
            <author fullname="D. Lewis" initials="D." surname="Lewis">
              <organization/>
            </author>
            <author fullname="A. Cabellos" initials="A." role="editor" surname="Cabellos">
              <organization/>
            </author>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document describes the data plane protocol for the Locator/ID Separation Protocol (LISP). LISP defines two namespaces: Endpoint Identifiers (EIDs), which identify end hosts; and Routing Locators (RLOCs), which identify network attachment points. With this, LISP effectively separates control from data and allows routers to create overlay networks. LISP-capable routers exchange encapsulated packets according to EID-to-RLOC mappings stored in a local Map-Cache.</t>
              <t>LISP requires no change to either host protocol stacks or underlay routers and offers Traffic Engineering (TE), multihoming, and mobility, among other features.</t>
              <t>This document obsoletes RFC 6830.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9300"/>
          <seriesInfo name="DOI" value="10.17487/RFC9300"/>
        </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="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>
      </references>
    </references>
    <section anchor="SEC_ComputingOpe">
      <name>Computing Capability Operation abstraction</name>
      <t>In-Network computing can greatly help distributed applications that make an intensive usage of the network. Yet, not all of the operations can be performed in-network, since the computational resources are usually very limited. Disassembling complex tasks into basic calculation operation, such as addition, subtraction, Max, etc. is the most appropriate approach for offloading these operations on in-network devices at line rate.</t>
      <t>SINC aims at providing a general way for signaling the operation to be performed on the data. As such, the definition of the operations are orthogonal to the SINC proposal it self, as long as it is possible to identify the different operations via a code point. An example of basic operation that may be performed in-network are listed in <xref target="table_ops"/></t>
      <table anchor="table_ops">
        <name>Example of in-network operations.</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>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81caXMjOXL9zl8Bq8OxUixJHd3Thxw+KFHq1qyuFdU7M+tw
OEoskMSoWMWtQxJHkn+7X2YCKBRZ6mN2HeHeQ2QdQCKR+fIEe71eZ5zFJp3u
q6qc9N537vbV606nNGWi99XGyEzTKMFtdZL2znV5n+W36jCbL6qSLmYLnUel
ydJCbY5Ozg+3Njqd6OYm13f0Li5sdOJsnEZzjBXn0aTs/TbLql5eTu+nvcKk
497OTmcclXqa5ct9pR8WnaLMdTTfVydH18edVzTfNM+qBS6cXw+ujgadW73E
1RgX0lLnqS57Qxq50zGLfF+VeVWUezs7H3b2OjEG3lePw8H10TPGjdL4v6Mk
S3FtqYvOwuyr/yyzcVcVWY5JJwU+LefyAVTPo8UCa/wvrKgqZ1m+3+l1lDJp
sa+GfXWaVfgmK/vrTNvvWQ4+fqqie23UtR7P0izJpgaTKeXYIndxgRaqy311
hfv4HBWFVns/4MbYlODFWZWa8Yy+ZlVaEnc+6nwepUu+FGPaP7zf+fBh7w/4
rueRSfbVbzPdT7LqP2Y8RX+czWuST/vqJEpTrN6TfVqZqQmuvkS8Os6jdKzV
qD/oj/qf+22LeaXyjARGx6bM8mB1u++76s9VZFRcqcvMpCV9+DGrcr/Qg6zC
PKnuHZgkwUS4V4bLltnrVX/Y293ZCVad0DL6RpbRuvZf+tiiYL9+qX4l4bXX
fs+eHWjzNxriKovirvoUmRjzq6HBfTMu66VpQzOFqzmcmTSqF4Ol7Hz4obGH
WbVk+l63ruXHvvol4iFlLT+a9DftLv3/WsoSRP1K5LUu5JA2JVzJYWXmJvUX
f89a7OM3EVQJQx1EaYnFdKGc6XSKYdeXNZrpFGqTtq3L7wjeHDNx4UI6r670
ROcasln8S6eTZlDO0tzpfQBROgm+KXV4cXK+j79KWVitARRUlkAPi6xdfrSr
Fnm2yAodq5Or62PF+CevR/mU1jkry0Wxv70NgIuAHONbnfeNLid9MG0b/x1D
0fAnusmqchtvYvgrHVdj3aCivrqtroZngx6WtQDVNwlxr5datM/pGcJ4hVWp
mDl4U5Wgbnh+DryNTEoricZjnVhrwLNY1FT8pcf/77Z6NKsydWqqllt/NlHG
9uYn2q+WB36s0qXxUqKUgPzezt6OLPQ0G9+uLjOha9vqOCrKrhprbDNs2m9Y
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

-->

</rfc>
