<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="info" docName="draft-du-coinrg-coordination-on-data-plane-00"
     ipr="trust200902">
  <front>
    <title abbrev="Coordination of Nodes in COIN">Data-driven Coordination of
    Network Devices in Computing in the Network</title>

    <author fullname="Zongpeng Du" initials=" Z." surname="Du">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>No.32 XuanWuMen West Street</street>

          <city>Beijing</city>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>duzongpeng@foxmail.com</email>
      </address>
    </author>

    <date month="" year=""/>

    <area>Internet Area</area>

    <workgroup>Computing in the Network Research Group</workgroup>

    <keyword>data-driven, COIN, network programming, distributed</keyword>

    <abstract>
      <t>This document describes a coordinatable mechanism for the network
      devices in Computing in the Network (COIN). A Flag filed in the packet
      header is used in the mechanism. It provides a straightforward way to
      communicate information among the network devices supporting COIN in the
      network. </t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>In SRv6, network programming on the data plane is supported <xref
      target="RFC8986"/>, in which a packet can contain a list of
      instructions. Each instruction contains a LOC and a FUNCT, which enables
      the packet get to a specific node related to the LOC, and implement a
      specific function related to the FUNCT.</t>

      <t>In COIN (Computing in the Network) as mentioned in <xref
      target="I-D.irtf-coinrg-use-cases"/> and <xref
      target="I-D.kutscher-coinrg-dir"/>, a more general scope of network
      programming is described, whose usecases include privacy protection,
      intrusion detection, network monitoring, etc. If the mechanism of COIN
      is implemented in a distributed system, the coordination is a key
      aspect.</t>

      <t>In this document, we introduce a preliminary mechanism to coordinate
      different network devices supporting COIN to complete a job which does
      not appoint a specific node to do it. </t>
    </section>

    <section title="Problem Statement">
      <t>In Figure 1, we assume that the Ingress, Egress, and the three
      Routers all support COIN. For example, they can detect the DDos attack
      by analyzing the characteristics of the flows, and drop packets of the
      suspect flows. In this situation, the detecting job can be done in any
      node, so some coordination methods are needed here.</t>

      <t><figure>
          <artwork><![CDATA[
 +---------+    +---------+    +---------+    +---------+    +---------+
 | Ingress |----| Router1 |----| Router2 |----| Router3 |----|  Egress |
 +---------+    +---------+    +---------+    +---------+    +---------+

  00101000       00001000       00001000       00000000       00000000

   Figure 1: Topology for the Coordinatable COIN network in which  
            the nodes can optionally do the job flexibly 

]]></artwork>
        </figure></t>

      <t>On one aspect, for a specific flow, only one pass of processing for
      the job is needed. We do not need every node along the path to do the
      job again and again. On the other aspect, if a node is busy, for example
      with a high load on forwarding, it is not suitable to occupy computing
      resource to do the optional analysis job. </t>

      <t>However, we do not know exactly when the interface of the node is too
      busy to do the job. The traffic in an IP network is quite dynamic.
      Hence, we propose a method to make some coordination on the data
      plane.</t>
    </section>

    <section title="Coordinatable Network Devices ">
      <t>In the proposed mechanism, we assume the packet can carry a Flag
      field that can be obtained by every node along the path. Each bit stands
      for a specific job needed to be done, but no specific node is appointed.
      </t>

      <t>For example, we assume two jobs are needed to be done in the network,
      so that we have two bits set to "1" in the Flag field in Figure 1. The
      Ingress does the first job, and cleans the third flag. The Router2 does
      the second job, and cleans the fifth flag.</t>

      <t>Every node along the path can see the Flag field, so that they will
      only do the job once for a specific flow. Meanwhile, if it is busy, it
      can choose not to analyses the flow, and just do the normal
      forwarding.</t>

      <t>Comparing to the SRv6 network programming, the proposed mechanism is
      more flexible in some scenarios. The reason is that we do not need to
      appoint a specific implementing node, and the nodes can make a local
      decision about whether to do the job according to its status. </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.8986"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.irtf-coinrg-use-cases"?>

      <?rfc include="reference.I-D.kutscher-coinrg-dir"?>
    </references>
  </back>
</rfc>
