<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC0768 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0768.xml">
<!ENTITY RFC0793 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0793.xml">
<!ENTITY RFC1122 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1122.xml">
<!ENTITY RFC1123 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1123.xml">
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2474 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2474.xml">
<!ENTITY RFC2768 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2768.xml">
<!ENTITY RFC3022 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3022.xml">
<!ENTITY RFC3168 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml">
<!ENTITY RFC4340 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4340.xml">
<!ENTITY RFC4960 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4960.xml">
<!ENTITY RFC6071 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6071.xml">
<!ENTITY RFC6275 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6275.xml">
<!ENTITY RFC6347 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml">
<!ENTITY RFC7413 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7413.xml">
<!ENTITY RFC8402 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC8446 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8655 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8655.xml">
<!ENTITY RFC8684 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8684.xml">
<!ENTITY RFC8831 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8831.xml">
<!ENTITY RFC8899 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8899.xml">
<!ENTITY I-D.ietf-rtcweb-data-channel SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-rtcweb-data-channel.xml">
<!ENTITY I-D.ietf-ippm-ioam-data SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-ippm-ioam-data.xml">
<!ENTITY I-D.kunze-coin-industrial-use-cases SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.kunze-coin-industrial-use-cases.xml">
]>

<?rfc strict="no" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>

<!--ipr="noDerivativeWorks2026", full2026, trust200902-->
<!-- trust200902, noDerivativeWorks2026 -->
<rfc docName="draft-asai-tsvwg-transport-review-00" ipr="trust200902" category="std" consensus="yes">

  <front>
    <title abbrev="Data Path and Data Flow Layers">
      Separation of Data Path and Data Flow Sublayers in the Transport Layer
    </title>
    <author fullname="Hirochika Asai" initials="H." surname="Asai">
      <organization abbrev="Preferred Networks">Preferred Networks, Inc.</organization>
      <address>
        <postal>
<!--<country>, <code>, <region>, <street>, <extaddr> for Japan-->
          <street>1-6-1 Otemachi, Chiyoda</street>
          <region>Tokyo</region>
          <code>100-0004</code>
          <country>JP</country>
        </postal>
        <email>panda@wide.ad.jp</email>
      </address>
    </author>

    <date month="Nov" day="2" year="2020" />

    <!-- Meta-data Declarations -->
    <area>Transport</area>
    <!--<workgroup></workgroup>-->
    <keyword>Transport Layer</keyword>
    <keyword>Data Path Layer</keyword>
    <keyword>Data Flow Layer</keyword>
    <keyword>Congestion Control</keyword>
    <keyword>Reliability</keyword>
    
    <abstract>
      <t>This document reviews the architectural design of the transport
      layer.
      In particular, this document separates the transport layer into two
      sublayers; the data path and the data flow layers.
      The data path layer provides functionality on the data path, such as
      connection handling, path quality and trajectory monitoring,
      waypoint management, and congestion control.
      The data flow layer provides additional functionality upon the data path
      layer, such as flow control for the receive buffer management,
      retransmission for reliable data delivery, and transport layer security.
      The data path layer multiplexes multiple data flow layer protocols and
      provides data path information to the data flow layer to control data
      transmissions, such as prioritization and inverse multiplexing for
      multipath protocols.
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>This document specifies two sublayers of the transport layer; the data
      path and the data flow layers.
      In this document, the transport layer's data path functionality, such as
      bidirectional connection handling, waypoint management,
      and congestion control, is separated
      from the data flow functionality, such as flow control for the receive
      buffer management, retransmission for reliable data delivery, and
      transport layer security.
      This document reviews the transport layer's functionality from the
      viewpoint of data paths and data flows in
      <xref target="architecture-review" />.
      It then specifies the data path layer and the data flow layer in
      <xref target="specification" />.
      The data path and data flow layers provide the data path and the data flow
      functionality, respectively.
      </t>
      <t>This document reviews the transport layer to clarify the transport
      layer's functionality and to invent data flow layer protocols for advanced
      Internet technologies, such as middleboxes and in-network computing.
      Hence, this document does not intend to obsolete the transport layer or
      violate the current Internet architecture.
      </t>
    <!--</section>
    <section title="Terminology">-->
      <t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;,
      &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
      &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,
      &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this
      document are to be interpreted as described in
      <xref target="RFC2119">RFC 2119</xref>.
      </t>
    </section>

    <section anchor="architecture-review"
        title="Transport Layer Functionality Review">
      <t>This section reviews the conventional layering and transport layer
        functionality.
        It then summarizes the transport layer functionality by distinguishing
        data paths and data flows.
      </t>

      <section title="Conventional Layering">
        <t><xref target="RFC1122">RFC 1122</xref> defines three communication
          layers, link layer, Internet layer, transport layer, and the
          interfaces between these layers.
          Link-layer protocols provide hop-by-hop data communications.
          Internet layer protocols such as the Internet Protocol (IP), the
          Internet Control Message Protocol (ICMP), and the Internet Group
          Management Protocol (IGMP) provide fragmentation, hop-by-hop datagram
          forwarding, and end-to-end datagram delivery.
          <xref target="RFC1123">RFC 1123</xref> defines the interface between
          the application layer and the transport layer.
        </t>
        <t>The Internet design follows the end-to-end principle to keep the
          simplicity of the Internet layer. Thus, the main functionality of the
          Internet layer is to provide end-to-end reachability.
          It does not guarantee datagram integrity, which means that packet
          loss, duplication, corruption, or reordering may occur.
          Over the Internet layer, the transport layer implements such
          functionality to provide datagram integrity on the end-hosts to
          achieve end-to-end communications.
        </t>
        <figure align="center" anchor="conventional-layering"
          title="Conventional layering of Internet architecture">
          <artwork align="left"><![CDATA[
+-------------------+                           +-------------------+
| Application layer |<------------------------->| Application layer |
+-------------------+                           +-------------------+
| Transport layer   |<------------------------->| Transport layer   |
+-------------------+   +-------------------+   +-------------------+
| Internet layer    |<->| Internet layer    |<->| Internet layer    |
+-------------------+   +-------------------+   +-------------------+
| Link layer        |<->| Link layer        |<->| Link layer        |
+-------------------+   +-------------------+   +-------------------+
  End-host                Router                  End-host
              ]]></artwork>
        </figure>
        <t>The transport layer provides various functions over the IP.
          <xref target="RFC0768">User Datagram Protocol (UDP)</xref> 
          and <xref target="RFC0793">Transmission Control Protocol (TCP)</xref>
          are the most commonly used transport layer protocols.
          UDP is a connectionless transport protocol with a minimum header.
          TCP implements flow control according to the receiver's buffer capacity,
          retransmission for reliable communication, congestion control by a
          packet delivery status such as packet loss and delay.
          The transport layer may implement an end-to-end security function,
          <xref target="RFC8446">Transport Layer Security (TLS)</xref>.
        </t>
        <t><xref target="conventional-layering" /> illustrates the conventional
          layering of Internet architecture.
          A router forwards an IP datagram to a next-hop router corresponding to
          the destination address.
          In this way, the Internet layer protocol, IP, provides end-to-end
          reachability through hop-by-hop routing.
          The transport layer provides additional functions for end-to-end
          communications.
        </t>
      </section>

      <section title="Data Path-aware Networking">
        <t>As described above, the Internet layer's main functionality has been
          end-to-end reachability with hop-by-hop packet forwarding based on
          destination IP address.
          Therefore, it is unaware of data paths, i.e., trajectories of packets.
          Best-effort communications over ``dumb'' networks without the quality
          of service (QoS) have been the Internet principle
          <xref target="RFC2768" />.
          This end-to-end principle of the Internet has achieved a scalable
          architecture.
          However, computer networks' advancement introduced QoS and middleboxes
          to achieve high-quality data communication and optimize communication
          over distributed and heterogeneous computer networks.
          These technologies require to be aware of data paths associated with
          data flows.
        </t>
        <t>The Internet layer has been extended to support QoS.
          <xref target="RFC2474">Differentiated Services, DiffServ</xref>,
          is one of the technologies to implement QoS.
          It enables autonomous and scalable service discrimination using an IP
          header field, differentiated services codepoint (DSCP), to implement
          QoS for a data path.
          <xref target="RFC8402">Segment Routing</xref> enables data path
          configuration for individual flows by leveraging the source routing
          paradigm.
          Thus, Segment Routing is another technology to treat QoS.
        </t>
        <t>Middleboxes are more complex than QoS.
          They add various functions such as firewalls, TCP offloading,
          transcoding, and content caches to a data path.
          These functions require to be aware of waypoints to be activated.
          Routing technologies with packet classification using the IP and the
          transport protocol headers have collectively been leveraged to route
          traffic through the middleboxes as the IP layer is not aware of data
          paths.
          If a middlebox is transparent to end-hosts, it should be installed at
          the network gateway or redirected by policy-based routing or segment
          routing to activate the function. 
          Otherwise, an end-host should specify the middlebox as a target
          end-host.
          In addition to these middleboxes, distributed computing technologies,
          such as in-network computing and multi-access edge computing (MEC),
          also require to be aware of data paths.
        </t>
        <t>In summary, advanced computer networks require to treat data paths
          for QoS, middleboxes, and distributed computing.
           Packet classification for data path treatment may use the header
           information of transport layer protocols such as port numbers as well
           as IP header fields.
        </t>
      </section>

      <section title="Resource Management: Flow Control and Congestion Control">
        <t>As the Internet layer does not provide resource management
          functionality, transport layer protocols may implement it, such as
          flow control and congestion control.
          Both flow control and congestion control mechanisms control packet
          transmission for resource management.
          However, the target resource is different.
          They control packet transmission according to the receiver's buffer
          capacity and the network bandwidth capacity, respectively.
        </t>
        <t>For example, in TCP's flow control, a receiver announces the
          remaining receive buffer size as the window size.
          Hence, flow control is not aware of network bandwidth capacity.
          On the other hand, congestion control is performed based on data
          communication quality information, such as packet loss and delay.
          The underlying Internet layer may provide congestion information by
          the
          <xref target="RFC3168">Explicit Congestion Notification (ECN)</xref>.
          In this manner, transport layer protocols control congestion depending
          on the data path's network resources.
          Therefore, congestion control is associated with a data path, while
          flow control is associated with the end-hosts.
        </t>
        <t>As discussed above, congestion control should be performed on the
          associated data path.
          However, in current transport layer protocols such as TCP,
          <xref target="RFC4340">Datagram Congestion Control Protocol (DCCP)</xref>,
          and <xref target="RFC4960">Stream Control Transmission Protocol (SCTP)</xref>,
          an individual flow independently performs congestion control even if
          the same data path multiplexes multiple flows.
          Therefore, multiple flows cannot collectively perform congestion
          control for the data path.
          For example, when a data path multiplexes a TCP and a UDP flows, the
          TCP flow's congestion control may affect the other UDP flow's quality.
          Moreover, transport layer protocols utilize network resources on a
          fair basis.
          Thus, flow prioritization cannot be implemented at the transport
          layer, although a QoS technology such as DiffServ may be leveraged.
        </t>
      </section>

      <section title="Multipath Protocols">
        <t><xref target="RFC8684">Multipath TCP</xref> and SCTP utilize multiple
          data paths over multiple endpoint addresses.
          As these multipath protocols are unaware of data paths, they
          distinguish the data paths by endpoint IP addresses.
          Accordingly, multiple flows of these protocols may use an identical
          data path without recognizing it.
        </t>
        <t>Multipath protocols are also responsible for inverse multiplexing to
          split a data stream into multiple data paths.
          This inverse multiplexing is independent of data paths except for
          congestion control.
        </t>
      </section>

      <section title="Reliable Data Communication">
        <t>Transport layer protocols may implement retransmission and reordering
          functions to recover lost or reordered datagrams for reliable data
          communication.
          This functionality is independent of data paths, and consequently,
          should be implemented over data paths.
          Instead, ``smart'' end-hosts or middleboxes may implement it.
        </t>
        <t>An end-host may transmit a duplicate packet for improving
          reliability <xref target="RFC8655" />.
          This functionality is also independent of data paths.
          However, a router in a data path may be capable of duplicating a
          packet because the duplication process does not require significant
          computing resources, unlike retransmission.
        </t>
      </section>

      <section title="Security">
        <t>The transport layer may implement an end-to-end security function,
          such as 
          <xref target="RFC8446">Transport Layer Security (TLS)</xref>
          <xref target="RFC6347">Datagram Transport Layer Security (DTLS)</xref>.
          As TLS does not encrypt the underlying transport protocol header,
          middleboxes such as TCP offloading can still work.
          However, some protocols implementing a transport layer protocol over
          DTLS, such as SCTP over DTLS used in
          <xref target="I-D.ietf-rtcweb-data-channel">WebRTC Data Channel</xref>,
          encrypt the transport layer header, and consequently, have difficulty
          cooperating with these middleboxes.
        </t>
      </section>

      <section anchor="data-path-flow-summary" title="Summary">
        <t>As described above, the transport layer functionality is summarized
        by distinguishing data paths and data flows as follows:</t>
        <t>The following functionality is categorized as data path functions.
        <list style="symbols">
          <t>In-band trajectory monitoring</t>
          <t>Waypoint management</t>
          <t>Bidirectional connection establishment</t>
          <t>Data path quality (congestion) monitoring and congestion control</t>
          <t>Data flow multiplexing</t>
          <t>Packet duplication</t>
        </list>
        </t>
        <t>The following functionality is categorized as data flow functions.
        <list style="symbols">
          <t>Retransmission for reliable data communication</t>
          <t>Flow control for receive-buffer management</t>
          <t>Flow prioritization</t>
          <t>End-to-end security</t>
          <t>Inverse multiplexing for multipath protocols</t>
        </list>
        </t>
      </section>

    </section>


    <section anchor="specification" title="Specifications of Data Path Layer and Data Flow Layer">
      <t>As summarized in <xref target="data-path-flow-summary" />, this
      document separates data paths and data flows from the transport layer. 
      Hence, this document divides the transport layer into two sublayers;
      the data path and the data flow layers.
      This section specifies the functionality of these two sublayers.
      </t>
      <section anchor="data-path-layer" title="Data Path Layer">
        <t>The data path layer provides the functionality to make the transport
          layer aware of data paths upon the Internet layer.
          The data path layer forwards packets without manipulating the payload.
          It means that the data path layer does not provide fragmentation,
          segmentation, or reassembly. Instead, the Internet layer or the data
          flow layer provide these functions.
        </t>
        <t>The data path layer may implement in-band trajectory monitoring,
          bidirectional connection establishment, data
          path quality monitoring and congestion control,
          data flow multiplexing, and packet duplication.
          A data path layer protocol may implement other functions related to
          data paths.
        </t>
        <section title="In-band trajectory monitoring">
          <t>The data path layer may provide an in-band trajectory monitoring
            function.
            The in-band trajectory monitoring function enables an upper-layer
            protocol to detect path change events and a single point of failure
            for multipath protocols.
          </t>
          <figure align="center" anchor="appending"
              title="Appending data path router identifiers to distinguish the data path">
            <preamble>DPH: Data path layer protocol header</preamble>
            <artwork align="left"><![CDATA[
+--------+     *--------------*     *--------------*     +--------+
| Host A |-----| DPR1 (ID: 3) |-----| DPR2 (ID: 4) |-----| Host B |
+--------+     *--------------*     *--------------*     +--------+
                  |                    |
                  |                    v
                  |           +-----+-+-+----...----+
                  |           | DPH |3|4| Payload   |
                  |           +-----+-+-+----...----+
                  v
           +-----+-+----...----+
           | DPH |3| Payload   |
           +-----+-+----...----+
                ]]></artwork>
          </figure>
          <t>One approach to implement this functionality is prepending,
            appending, or XOR-ing device identifiers like in-band network
            telemetry or
            <xref target="I-D.ietf-ippm-ioam-data">in-situ OAM</xref>
            by data path layer protocol's routers.
            <xref target="appending" /> shows an example of in-band trajectory
            monitoring.
            A router that handles a data path layer protocol appends the router
            identifier to the header.
            In case the upper-layer protocol does not require the path
            information but path change events, the router can apply an XOR
            operation with a hashed identifier to a fixed-length field.
            Other alternative approaches may be used.
          </t>
          <t>The latter approach separates the control plane and the data plane.
          The control plane manages the data path, and the data plane monitors
          if packets pass through the dedicated data path.
          The data path control may leverage underlay protocols such as Segment
          Routing.</t>
        </section>
        <section title="Waypoint management">
          <t>The data path layer may support waypoint management functionality.
            The in-band trajectory monitoring functionality described above does
            not provide the functionality to designate the data path's
            waypoints.
            However, some middleboxes such as firewalls and in-network computing
            require to designate waypoints to activate the in-network functions.
          </t>
          <t>A data path layer protocol may define a specification to control
            the waypoints of a data path.
            There are two approaches to designate waypoints over the Internet
            layer; 1) setting a waypoint as the destination IP address
            and 2) using routing technologies such as source routing and
            policy-based routing.
            The former approach includes
            <xref target="RFC3022">Network Address Translation (NAT)</xref>
            and proxy services.
            The latter approach may leverage underlay protocols to designate
            waypoints, such as Segment Routing and
            <xref target="RFC6275">IPv6 Type 2 Routing Header</xref>.
            Other alternative approaches may be used in a data path layer
            protocol.
          </t>
        </section>
        <section title="Bidirectional connection establishment">
          <t>The data path layer should support both unidirectional and
            bidirectional paths.
            A bidirectional path may be symmetric or asymmetric.
            As the characteristics of unidirectional and bidirectional paths are
            different, some data path layer protocols may only support either
            unidirectional or bidirectional paths.
          </t>
          <t>A data path protocol supporting bidirectional data paths should
            implement a handshake mechanism to establish a bidirectional
            connection, such as a 3-way handshake of TCP and a 4-way handshake
            of SCTP.
            It may provide a 0-RTT connection establishment feature such as
            <xref target="RFC8446">TLS 1.3</xref>
            and <xref target="RFC7413">TCP Fast Open</xref>.
          </t>
        </section>
        <section title="Data path quality (congestion) monitoring and congestion control">
          <t>The data path layer should implement congestion control.
            However, Data path layer protocols supporting only unidirectional
            paths may not implement congestion control because it cannot
            implement congestion or data path quality reporting. 
          </t>
          <t>Congestion control is performed based on data path quality or
            congestion reporting from the receiver end-host or intermediate
            nodes that process a data path layer protocol.
            Data path quality or congestion signals may be packet losses, delay,
            or ECN, as used in many transport layer protocols.
            Other signals or metrics, such as in-band network telemetry
            information, may be used.
          </t>
        </section>
        <section title="Data flow multiplexing">
          <t>The data path layer enables us to collectively handle different
            characteristics (e.g., service level requirements) of transport
            layer protocols such as stream and datagram protocols. </t>
        </section>
        <section title="Packet Duplication">
          <t>On a lossy data path, a data path layer protocol may implement
            packet duplication for improving reliability.
            However, the data path layer should not provide retransmission
            because it requires significant resources.
          </t>
        </section>
      </section>

      <section anchor="data-flow-layer" title="Data Flow Layer">
        <t>The data flow layer may implement various functions for end-to-end
          data communication over the data path layer.
          Data flow layer protocols may be stream, datagram, or message-oriented
          protocols.
          Middleboxes, MEC nodes, or in-network computing nodes may process data
          flow layer protocols.
          Therefore, a node processing data flow layer protocols should be as
          ``smart'' as end-hosts.
        </t>
        <t>A data flow layer protocol may implement a retransmission function
          for reliable data communication, a flow control mechanism for
          receive-buffer management, flow prioritization for effective network
          resource utilization, a security extension such as TLS and DTLS,
          and a multipath transport protocol using multiple bidirectional paths
          over the data path layer.
        </t>
        <section title="Retransmission for reliable data communication">
          <t>A data flow layer protocol may provide retransmission for reliable
            data communication.
            To this end, a node implementing the data flow layer protocol must
            equip a transmit buffer for retransmission to retransmit lost
            corrupted packets.
            It must also equip a receive buffer to reassemble a stream and a
            message from a sequence of packets in a stream and message-oriented
            data flow layer protocols.
            The receive buffer also handles packet reordering and duplication.
          </t>
        </section>
        <section title="Flow control for receive-buffer management">
          <t>Flow control is necessary for receive-buffer management.
            Therefore, a data flow layer protocol may implement the flow control
            mechanism.
            A receiver node advertises the available receive-buffer size in the
            data flow layer, like TCP's window size, when implementing the flow
            control mechanism.
            A sender node controls the transmission so that transmitted data do
            not exceed the receive-buffer size.
          </t>
        </section>
        <section title="Flow prioritization">
          <t>The prioritization of data flows multiplexed in a data path layer
            protocol may be implemented on the data flow layer using the data
            path layer information, such as monitored data path quality or
            congestion.
            A data flow layer protocol may provide a service code point or
            priority so that nodes processing the data flow protocol
            discriminate a flow.
          </t>
        </section>
        <section title="End-to-end security">
          <t>A data flow layer protocol may implement the end-to-end security
            function.
            TLS and DTLS can be used for stream and datagram protocols,
            respectively.
          </t>
        </section>
        <section title="Inverse multiplexing for multipath protocols">
          <t>A multipath data flow protocol may leverage multiple bidirectional
            data paths established by data path layer protocols.
            The data flow layer is responsible for the inverse multiplexing
            functionality.
            Therefore, the multipath data flow protocol divides a stream, a
            message, or a datagram into these multiple data paths.
            Note that the data path layer performs congestion control for each
            data path, while the data flow layer performs flow control.
          </t>
        </section>
      </section>
    </section>

    <section title="Use Cases">
      <t>This document does not specify any data path protocols or data flow
        protocols, but the data path and data flow layers' architectural design.
        For better understanding, this section describes the use cases of the
        data path and the data flow layers.
        In the use cases, a data path router (DPR) and a data flow layer
        node (DFN) denote a router that processes a data path layer protocol
        and a node that processes a data flow layer protocol, respectively.
      </t>
      <section title="Multipath Transport Protocols">
        <figure align="center" anchor="example-multipath"
            title="An example of multipath data communication">
          <preamble>Hosts A and B communicate with each other
            over multiple data paths; Path R1-DPR3-DPR2 and Path DPR4-DPR2.
            R1 is an IP router.
            DPR2, DPR3, and DPR4 are data path routers that treat data path
            layer protocols.</preamble>

          <artwork align="center"><![CDATA[
               *----*     *------*
            +--| R1 |-----| DPR3 |--+
+--------+_/   *----*     *------*   \_*------*     +--------+
| Host A |_                           _| DPR2 |-----| Host B |
+--------+ \              *------*   / *------*     +--------+
            +-------------| DPR4 |--+
                          *------*
            ]]></artwork>
        </figure>
        <t><xref target="example-multipath" /> shows an example of multipath
          data communication over two data paths.
          The end-hosts A and B establish two bidirectional data paths;
          A-R1-DPR3-R2-B and A-DPR4-DPR2-B, and they use a data flow layer
          protocol over these data paths for end-to-end communication.
          The data path layer protocols monitor the data path quality and
          perform congestion control for each data path.
          The data flow layer protocol performs flow control and inverse
          multiplexing into these data paths.
        </t>
        <t>Multipath transport protocols may leverage in-band trajectory
          monitoring to detect a shared waypoint. 
          We assume that the data path routers manipulate the header of a data
          path layer protocol.
          They add the router identifier to the data path layer protocol's
          header to report the trajectory to the end-hosts.
          When sending packets from end-host A to end-host B over these paths,
          each packet reports trajectory A-DPR3-DPR2-B or A-DPR4-DPR2-B.
          In this way, end-host B recognizes two different data paths and
          detects a shared data path router, DPR2, on the multiple paths,
          potentially a single point of failure for end-to-end communication.
        </t>
      </section>
      <section title="Congestion Control Acceleration">
        <t>Some TCP congestion control acceleration functions proxy TCP sessions
          to shorten the perspective latency.
          The acceleration functions acknowledge receipt of packets.
          Using a loss-based congestion control algorithm, both congestion
          control and flow control use the acknowledgments (ACKs).
          For congestion control, missing ACKs report packet losses, and
          consequently, they present the data path quality to control the
          transmission rate to avoid congestion.
          For flow control,  ACKs report successful data delivery.
          Then, the sender can release part of the transmit buffer.
          Otherwise, the sender retransmits the lost data.
        </t>
        <figure align="center" anchor="layer-congestion-control"
            title="An example of a communication model for congestion control acceleration">
          <artwork align="left"><![CDATA[
+-------------------+                           +-------------------+
| Application layer |<------------------------->| Application layer |
+-------------------+                           +-------------------+
| Data flow layer   |<------------------------->| Data flow layer   |
+-------------------+   +-------------------+   +-------------------+
| Data path layer   |<->| Data path layer   |<->| Data path layer   |
+-------------------+   +-------------------+   +-------------------+
| Internet layer    |<->| Internet layer    |<->| Internet layer    |
+-------------------+   +-------------------+   +-------------------+
| Link layer        |<->| Link layer        |<->| Link layer        |
+-------------------+   +-------------------+   +-------------------+
  Sender                  Accelerator             Receiver
              ]]></artwork>
        </figure>
        <t><xref target="layer-congestion-control" /> illustrates an example of
          a communication model for congestion control acceleration using the
          data path layer.
          The accelerator or the receiver reports the data path quality to the
          sender on the data path layer to perform congestion control.
          There are various ways to measure data path quality.
          For example, data path routers may use the buffer capacity in the same
          way as ECN.
          If a data path router can detect packet losses for a
          connection of data path layer protocols, the packet losses or
          statistics may be used to report the data path quality.
          The data path quality report by the accelerator enables the fast
          response of congestion control algorithms.
          The data flow layer is responsible for retransmission for reliable
          communication and flow control for receive-buffer management.
        </t>

      </section>
      <section title="In-Network Computing">
        <t>In-network computing
          <xref target="I-D.kunze-coin-industrial-use-cases" />
          is a novel distributed computing paradigm.
          It requires to be aware of the data path's waypoints
          because computing components are placed in between end-hosts.
          The message-oriented protocol may adopt the pub/sub communication
          model, widely used in machine-to-machine communication.
        </t>
        <t>The data path layer establishes a data path
          while designating the waypoints to perform in-network computing.
          The data flow layer over the data path implements a
          message-oriented protocol or a stream protocol to feed data into
          in-network computing nodes.
          The message-oriented protocol may adopt the pub/sub communication
          model, widely used in machine-to-machine communication.
        </t>
        <figure align="center" anchor="layer-in-network-computing"
            title="An example of communication model of in-network computing">
          <preamble>App., DF, DP, IP, and Link denote the application layer,
            the data flow layer, the data path layer, the IP, and the link
            layer, respectively. H1 and H2 are end-hosts, C1 and C2
            are in-network computing nodes, P1 is a data path router,
            and R1 is an IP router.</preamble>

          <artwork align="left"><![CDATA[
+------+                                               +------+
| App. |<--------------------------------------------->| App. |
+------+              +------+              +------+   +------+
| DF   |<------------>| DF   |<------------>| DF   |<->| DF   |
+------+   +------+   +------+              +------+   +------+
| DP   |<->| DP   |<->| DP   |<------------>| DP   |<->| DP   |
+------+   +------+   +------+   +------+   +------+   +------+
| IP   |<->| IP   |<->| IP   |<->| IP   |<->| IP   |<->| IP   |
+------+   +------+   +------+   +------+   +------+   +------+
| Link |<->| Link |<->| Link |<->| Link |<->| Link |<->| Link |
+------+   +------+   +------+   +------+   +------+   +------+

 +----+     *----*     *----*     *----*     *----*     +----+
 | H1 |-----| P1 |-----| C1 |-----| R1 |-----| C2 |-----| H2 |
 +----+     *----*     *----*     *----*     *----*     +----+
              ]]></artwork>
        </figure>
        <t><xref target="layer-in-network-computing" /> illustrates an example
          of the communication model of in-network computing.
          A data path is established between H1 and H2.
          A data path layer protocol designates C1 and C2 as the waypoints.
          Over the established data path, H1 transmits messages to H2 using a
          data flow layer protocol.
          C1 and C2 process the messages according to the programs
          running on C1 and C2.
        </t>
      </section>
      <section title="Flow Arbitration">
        <t>The separation of the data path and the data flow layer enables
          flow-level prioritization.
          As the data path layer is responsible for congestion control, the
          multiplexed data flows over a data path can collectively perform
          resource arbitration for the data path bandwidth capacity.
        </t>
        <t>For example, a data path multiplexes two data flows; one of them
          requires a constant data rate, and the other is tolerant of delayed
          data delivery.
          Flow control can prioritize the former data flow and decrease the
          transmission rate when the data path layer detects congestion.
          This flow arbitration is crucial in coexisting deadline-based and
          best-effort flows.
        </t>
      <figure align="center" anchor="fig-flow-arbitration"
            title="An example of flow arbitration over multiple data paths">
          <preamble>H1, H2, H3, and H4 are end-hosts.
            R1, R2, and R3 are IP routers.
            P1 is a data path router that support the data path quality
            monitoring function.
          </preamble>

          <artwork align="left"><![CDATA[
+----+                           *----*     +----+
| H1 |--+                     +--| R2 |-----| H3 |
+----+   \_*----*     *----*_/   *----*     +----+
          _| R1 |-----| P1 |_    
+----+   / *----*     *----* \   *----*     +----+
| H2 |--+                     +--| R3 |-----| H4 |
+----+                           *----*     +----+
              ]]></artwork>
        </figure>
        <t>Moreover, the data path layer may support data path quality
          monitoring for multiple data paths.
          If data path routers monitor multiple data paths' bandwidth capacity,
          they can report the estimated capacity to arbitrate multiple flows
          over the data paths.
          <xref target="fig-flow-arbitration" /> shows an example flow
          arbitration over multiple data paths.
          Suppose data flows X and Y are over the data paths H1-R1-P1-R2-H3 and
          H2-R1-P1-R3-H4, respectively;
          the data path router P1 can monitor the data path quality such as
          packet losses for these data paths.
          If the bandwidth utilization reaches the capacity, the data path
          router requests resource arbitration.
          A flow may reduce the data rate using the flow control mechanism in
          the data flow layer if its priority is not high.
          Thus, these two flows can autonomously perform the flow arbitration.
          This flow arbitration may fail and perform best-effort communication,
          such in case both flows are the high priority
          and do not reduce the data rate.
        </t>
      </section>
    </section>

    <section title="Implementation Considerations">
      <t>Although this document does not specify the data path layer and the
        data flow layer protocols, it discusses the implementation of these
        protocols' specifications. 
        The data path layer may be implemented over UDP for interoperability
        with the current Internet operations
        because other protocols than ICMP, TCP, and UDP may be filtered on
        the Internet.
        Data path layer protocols must implement the
        <xref target="RFC8899">maximum transmission unit (MTU) discovery</xref>.
      </t>
     <figure align="center" anchor="implementation"
        title="An implementation of data path layer and data flow layer protocols over UDP">
      <preamble>LH: Link-layer protocol header, IPH: IP header,
        UDPH: UDP header, DPH: Data path layer protocol header,
        DFH: Data flow layer protocol header</preamble>
      <artwork align="left"><![CDATA[
+----+-----+------+-----+-----+------------------+-----------+
| LH | IPH | UDPH | DPH | DFH | Payload          | (Trailer) |
+----+-----+------+-----+-----+------------------+-----------+
            ]]></artwork>
      </figure>
      <t><xref target="implementation" /> illustrates an example packet format
        of data path layer and data flow layer protocols over UDP.
        <!--The current transport layer protocol integrates a data path protocol
        and a data flow protocol headers.-->
        In this figure, the UDP header is not intended to provide
        the transport layer's functionality
        but is introduced for interoperability with existing middleboxes
        on the Internet.
      </t>
      <t>A data path layer protocol may use hop-by-hop UDP connections to
        designate waypoints like an overlay network.
        Otherwise, data path routers require to leverage routing technologies
        such as Segment Routing and policy-based routing to support waypoint
        management.
      </t>
    </section>

    <!--
    <section anchor="Discussion" title="Discussion: IP vs. Transport Layer">
    <t>This document proposes to separate the data path layer
      and data flow layer from the transport layer.
      The IP provides hop-by-hop information, e.g., ICMP and ECN.
    </t>
    </section>
    -->

    <section anchor="IANA" title="IANA Considerations">
      <t>This document does not have IANA Considerations.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>End-to-end encryption becomes critical to Internet protocols for
      privacy and security.
      The data path layer must be visible to intermediate nodes, such as routers
      and middleboxes, by design to process and manipulate a data path layer
      protocol.
      Therefore, this document proposes to implement transport layer security at
      the data flow layer.
      It exposes data path information.
      Therefore, data path layer protocols must not include privacy-sensitive
      information in the protocol header.
      </t>
      <t>
      Data path layer protocols may not be visible to intermediate nodes if an
      underlay protocol encrypts the payload.
      For example, <xref target="RFC6071">IPsec</xref> encrypts the payload of
      IP datagrams.
      In such cases, intermediate nodes cannot process or manipulate data path
      layer protocols.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>We thank Kenichi Murata, Ryokichi Onishi,
      Yusuke Doi, and Masahiro Ishiyama for their comments and
      review of this document.</t>
    </section>

  </middle>

  <back>
    <!-- References split into informative and normative -->

    <references title="Normative References">
      &RFC0768;
      &RFC0793;
      &RFC1122;
      &RFC1123;
      &RFC2119;
      &RFC2474;
      &RFC2768;
      &RFC3022;
      &RFC3168;
      &RFC4340;
      &RFC4960;
      &RFC6071;
      &RFC6275;
      &RFC6347;
      &RFC7413;
      &RFC8402;
      &RFC8446;
      &RFC8655;
      &RFC8684;
      <!--&RFC8831;-->
      &RFC8899;
    </references>
    <references title="Informative References">
      &I-D.ietf-ippm-ioam-data;
      &I-D.ietf-rtcweb-data-channel;
      &I-D.kunze-coin-industrial-use-cases;
    </references>

  </back>
</rfc>
