<?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" ?>
<?rfc compact="yes"?>
<?rfc text-list-symbols="o*+-"?>
<?rfc subcompact="no"?>
<?rfc sortrefs="no"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc toc="yes"?>
<rfc category="info" consensus="true"
     docName="draft-pan-transparent-ordered-bonding-00" ipr="trust200902"
     obsoletes="" sortRefs="false" submissionType="IETF" symRefs="true"
     tocInclude="true" updates="" version="3" xml:lang="en"
     xmlns:xi="http://www.w3.org/2001/XInclude">
  <front>
    <title abbrev="Ordered Bonding">Transparent Ordered Bonding for
    High-Capacity WAN Links</title>

    <seriesInfo name="Internet-Draft"
                value="draft-pan-transparent-ordered-bonding-00"/>

    <author fullname="Haoyu Pan" initials="H." surname="Pan">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <city>Beijing</city>

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

        <email>panhaoyu@chinamobile.com</email>
      </address>
    </author>

    <author fullname="Ruifeng Li" initials="R." surname="Li">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <city>Beijing</city>

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

        <email>liruifengyjy@chinamobile.com</email>
      </address>
    </author>

    <date day="6" month="July" year="2026"/>

    <workgroup></workgroup>

    <abstract>
      <t>This document describes a Transparent Ordered Bonding (TOB)
      mechanism for high-capacity wide-area links that are physically
      composed of multiple lower-rate member links. Traditional flow-based load balancing mechanisms
      can preserve packet ordering, but they cannot fully utilize all member
      links for a single large traffic stream.</t>

      <t>TOB introduces a bonding layer between two adjacent network nodes.
      The bonding layer fragments ingress packets into cells, distributes
      them across member links according to link status, and reassembles them
      in strict order at the remote node. This document specifies the
      applicability, architecture, packet format, scheduling considerations,
      and resequencing behavior of TOB.</t>
    </abstract>

    <note removeInRFC="false">
      <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 RFC 2119.</t>
    </note>
  </front>

  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>

      <t>High-capacity wide-area network links are often implemented by
      bonding multiple lower-rate physical or logical member links. For
      example, a 400 Gbit/s logical connection between two network nodes may
      be constructed from eight 50 Gbit/s member links. In order to fully
      utilize the aggregate capacity, traffic needs to be distributed across
      all member links.</t>

      <t>Existing link aggregation and equal-cost multipath mechanisms
      commonly rely on hash-based traffic distribution. IEEE 802.1AX defines
      link aggregation for multiple point-to-point links <xref
      target="IEEE8021AX"/>. ECMP and link aggregation deployments typically
      use flow-based hashing in order to avoid packet reordering within a
      flow <xref target="RFC2992"/> <xref target="RFC7424"/>. This behavior
      is appropriate for many network scenarios, but it also means that a
      single large flow may be pinned to one member link and cannot consume
      the full capacity of the logical bundle.</t>

      <t>Packet-level or cell-level striping across member links can improve
      utilization of the aggregate capacity. However, different member links
      may have different propagation delay, queuing delay, loss rate, or
      operational state. If packets are simply sprayed across member links,
      the receiver may observe packet reordering. Since the bonding layer
      cannot assume that the end-to-end transport protocol has a strong
      in-order delivery or reordering capability, the bonding mechanism needs
      to provide in-order delivery before packets are released to the upper
      layer.</t>

      <t>This document defines a prototype mechanism named Transparent Ordered
      Bonding (TOB). TOB is inspired by the multilink fragmentation and
      resequencing model of Multilink PPP <xref target="RFC1990"/> and the
      connection-level sequencing concept used by Multipath TCP <xref
      target="RFC8684"/>. TOB is intended to be deployed between two adjacent
      network nodes, such as WAN edge routers, data center gateways, or
      transport network adaptation devices. The endpoints and upper-layer
      protocols are not required to be aware of the member-link structure.</t>
    </section>

    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>

      <t>The following terms are used in this document:</t>

      <ul>
        <li>
          <t>Transparent Ordered Bonding (TOB): A bonding mechanism that
          distributes traffic over multiple member links and delivers
          reassembled packets in their original order.</t>
        </li>

        <li>
          <t>Bundle: A logical link composed of two or more member links.</t>
        </li>

        <li>
          <t>Member Link: A physical link, logical tunnel, wavelength,
          timeslot, or other transport resource that carries TOB cells.</t>
        </li>

        <li>
          <t>TOB Cell: A fragment generated by the TOB sender. A TOB cell
          contains a TOB header and a portion of an original packet.</t>
        </li>

        <li>
          <t>Frame Sequence Number: A monotonically increasing sequence number
          assigned to each original ingress packet before fragmentation.</t>
        </li>

        <li>
          <t>Fragment Sequence Number: A monotonically increasing sequence
          number assigned to each TOB cell.</t>
        </li>

        <li>
          <t>Resequencing Buffer: A receiver-side buffer that stores
          out-of-order cells and completed packets until all earlier packets
          have been delivered.</t>
        </li>
      </ul>
    </section>

    <section anchor="deployment-scenarios" numbered="true" toc="default">
      <name>Deployment Scenarios</name>

      <section numbered="true" toc="default">
        <name>Deployment over Bundled WAN Links</name>

        <t>In wide-area network deployments, operators may provide a
        high-capacity logical link by combining multiple lower-rate links. The
        member links may be parallel optical channels, Ethernet services,
        packet tunnels, or other transport resources. If flow-based
        distribution is used, a small number of large flows may lead to
        uneven member-link utilization. TOB enables the two edge nodes of the
        bundle to stripe cells across all available member links while
        preserving packet order toward the customer-facing interface.</t>

        <t>In this scenario, TOB sender and TOB receiver functions are
        implemented on the two WAN edge nodes. The WAN edge nodes monitor
        member-link rate, delay, loss, and queue depth. The sender schedules
        TOB cells across member links, and the receiver performs verification,
        resequencing, reassembly, and ordered delivery.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Deployment between Data Center Gateways</name>

        <t>Distributed computing, disaster recovery, and cross-data-center
        storage replication often require high-throughput data transfer
        between data centers. The traffic carried over the WAN may include
        TCP, QUIC, UDP, RDMA-based encapsulations, or proprietary transport
        protocols. A network operator may not be able to rely on any specific
        endpoint transport behavior for packet reordering recovery.</t>

        <t>TOB can be deployed on data center gateways to provide a single
        high-capacity ordered logical link to the upper network layers. The
        gateways hide member-link differences and avoid exposing reordering
        to endpoint protocols. This is especially useful when member links
        have similar capacity but non-identical delay or when member links
        are added and removed dynamically according to operational state.</t>
      </section>
    </section>

    <section anchor="framework-overview" numbered="true" toc="default">
      <name>Overview of TOB Framework</name>

      <t>This section describes the overall architecture of the TOB
      framework.</t>

      <t>TOB introduces a bonding layer between two adjacent network nodes, as
      shown in Figure 1.</t>

      <figure anchor="fig-tob-architecture">
        <name>Transparent Ordered Bonding Architecture</name>

        <artwork align="center" xml:space="preserve">+-----------+                                  +-----------+
|           |   member 0  ======================&gt;  |           |
|  TOB      |   member 1  ======================&gt;  |  TOB      |
|  Sender   |   ...                               |  Receiver |
|           |   member N  ======================&gt;  |           |
+-----^-----+                                  +------v----+
      |                                               |
      | ordered packet stream                         | ordered packet stream
      +-----------------------------------------------+          </artwork>
      </figure>

      <t>The TOB sender receives packets from an upper interface, assigns a
      Frame Sequence Number, fragments the packet into TOB cells, assigns
      Fragment Sequence Numbers, and transmits the cells over selected member
      links. The TOB receiver validates cells, stores out-of-order cells in a
      resequencing buffer, reassembles original packets, and releases only
      the next expected packet to the upper interface.</t>

      <t>The TOB layer is transparent to endpoints. The endpoints do not need
      to negotiate multipath capability, change congestion control behavior,
      or understand the number of member links in the bundle. TOB operates
      hop-by-hop between the two nodes that terminate the bundle.</t>
    </section>

    <section anchor="sender-behavior" numbered="true" toc="default">
      <name>TOB Sender Behavior</name>

      <t>The TOB sender performs the following functions:</t>

      <ul>
        <li>
          <t>Assign a monotonically increasing Frame Sequence Number to each
          ingress packet.</t>
        </li>

        <li>
          <t>Fragment the ingress packet into one or more TOB cells according
          to the configured cell size and member-link MTU.</t>
        </li>

        <li>
          <t>Assign a monotonically increasing Fragment Sequence Number to
          each TOB cell.</t>
        </li>

        <li>
          <t>Select an output member link for each TOB cell according to the
          scheduling algorithm.</t>
        </li>

        <li>
          <t>Maintain a transmission buffer until cells have been acknowledged
          or otherwise considered recoverable by a configured loss-recovery
          mechanism.</t>
        </li>
      </ul>

      <t>The scheduler SHOULD consider member-link rate, queue occupancy,
      measured delay, loss, and administrative weight. For member links with
      the same capacity and similar delay, a weighted deficit round-robin
      scheduler is sufficient. When member links have non-negligible
      differential delay, the scheduler SHOULD reduce the amount of traffic
      sent to paths that would significantly increase resequencing depth.</t>

      <t>An implementation MAY use the following scheduling score for each
      member link:</t>

      <artwork align="center" xml:space="preserve">score[i] = queue_bytes[i] / rate[i] + measured_delay[i]</artwork>

      <t>The sender selects the member link with the lowest score among
      eligible member links. Other algorithms are possible, as long as they
      preserve the receiver's ability to reassemble packets and deliver them
      in order.</t>
    </section>

    <section anchor="receiver-behavior" numbered="true" toc="default">
      <name>TOB Receiver Behavior</name>

      <t>The TOB receiver performs cell validation, missing-cell detection,
      packet reassembly, and ordered delivery. The receiver MUST NOT deliver
      a reassembled packet with a Frame Sequence Number greater than the next
      expected Frame Sequence Number unless all lower Frame Sequence Numbers
      have already been delivered or declared unrecoverable according to a
      configured policy.</t>

      <t>The basic receiver procedure is as follows:</t>

      <artwork align="center" xml:space="preserve">on_cell(cell):
    verify(cell)
    store cell by Frame Sequence Number and Fragment Offset

    while packet[next_frame_seq] is complete:
        reassemble packet[next_frame_seq]
        deliver packet[next_frame_seq]
        release buffer for packet[next_frame_seq]
        next_frame_seq = next_frame_seq + 1</artwork>

      <t>If a missing Fragment Sequence Number or incomplete packet is
      detected, the receiver MAY request retransmission by sending a negative
      acknowledgment to the sender. Alternatively, if forward error correction
      is enabled, the receiver MAY recover missing cells from parity cells
      before requesting retransmission.</t>

      <t>The receiver needs to provision the resequencing buffer according to
      the aggregate bundle rate and the maximum expected differential delay
      among member links. A minimum buffer estimate is:</t>

      <artwork align="center" xml:space="preserve">reorder_buffer &gt;= aggregate_rate * max_differential_delay</artwork>

      <t>For example, a 400 Gbit/s bundle with 2 ms maximum differential
      delay requires approximately 100 MBytes of resequencing buffer before
      considering burst absorption, retransmission, or implementation
      overhead. A practical implementation SHOULD apply a safety factor based
      on operator policy and measured traffic burstiness.</t>
    </section>

    <section anchor="control-plane" numbered="true" toc="default">
      <name>TOB Control Plane</name>

      <t>TOB requires a control function between the two bundle endpoints.
      This document does not mandate a specific control protocol, but the
      control function SHOULD support the following capabilities:</t>

      <ul>
        <li>
          <t>Discovery and authentication of member links belonging to the
          same bundle.</t>
        </li>

        <li>
          <t>Negotiation of TOB version, cell size, maximum frame size,
          maximum resequencing window, loss-recovery mode, and integrity
          protection mode.</t>
        </li>

        <li>
          <t>Member-link liveness detection and removal of failed member
          links from the scheduler.</t>
        </li>

        <li>
          <t>Generation number synchronization when the bundle membership or
          critical operating parameters change.</t>
        </li>

        <li>
          <t>Telemetry exchange for member-link rate, delay, loss, jitter,
          and queue depth.</t>
        </li>
      </ul>

      <t>The Generation Number is used to distinguish cells sent under
      different bundle configurations. When bundle membership changes, the
      sender and receiver SHOULD complete or drain cells from the old
      generation before fully switching to the new generation, unless an
      implementation-specific recovery policy is used.</t>
    </section>

    <section anchor="tob-packet-format" numbered="true" toc="default">
      <name>TOB Packet Format</name>

      <t>This section defines a prototype TOB cell format. TOB may be carried
      directly over an Ethernet service using a dedicated EtherType, or it
      may be carried inside an IP tunnel such as UDP or GRE. The exact
      encapsulation is deployment-specific.</t>

      <section numbered="true" toc="default">
        <name>TOB Encapsulation</name>

        <t>When TOB is carried over Ethernet, a TOB cell is encapsulated as
        follows:</t>

        <artwork align="center" xml:space="preserve">[ETH + TOB Header + TOB Payload + Integrity Check]</artwork>

        <t>When TOB is carried over UDP/IP, a TOB cell is encapsulated as
        follows:</t>

        <artwork align="center" xml:space="preserve">[ETH + IP + UDP + TOB Header + TOB Payload + Integrity Check]</artwork>

        <t>The UDP destination port or EtherType value is outside the scope of
        this prototype document and is expected to be assigned or configured
        according to deployment requirements.</t>
      </section>

      <section numbered="true" toc="default">
        <name>TOB Header Fields</name>

        <artwork align="center" xml:space="preserve">TOB Header {
    Version (8),
    Header Length (8),
    Flags (16),
    Bundle ID (32),
    Generation Number (32),
    Member ID (16),
    Traffic Class (16),
    Frame Sequence Number (64),
    Fragment Sequence Number (64),
    Fragment Offset (32),
    Original Frame Length (32),
    Header CRC (32)
}</artwork>

        <ul>
          <li>
            <t>Version (8 bits): TOB protocol version. The initial version
            defined in this document is 0x01.</t>
          </li>

          <li>
            <t>Header Length (8 bits): Length of the TOB header in 4-octet
            units.</t>
          </li>

          <li>
            <t>Flags (16 bits): Control flags. This document defines BEGIN,
            END, SINGLE, RETX, FEC, ACK, and NACK flags. Additional flags are
            reserved for future use.</t>
          </li>

          <li>
            <t>Bundle ID (32 bits): Identifier of the logical bundle.</t>
          </li>

          <li>
            <t>Generation Number (32 bits): Identifier of the active bundle
            configuration.</t>
          </li>

          <li>
            <t>Member ID (16 bits): Identifier of the member link selected by
            the sender.</t>
          </li>

          <li>
            <t>Traffic Class (16 bits): Traffic class or quality-of-service
            indication copied from the ingress packet or assigned by local
            policy.</t>
          </li>

          <li>
            <t>Frame Sequence Number (64 bits): Sequence number of the
            original ingress packet.</t>
          </li>

          <li>
            <t>Fragment Sequence Number (64 bits): Sequence number of the TOB
            cell.</t>
          </li>

          <li>
            <t>Fragment Offset (32 bits): Offset of the payload carried in
            this TOB cell within the original ingress packet.</t>
          </li>

          <li>
            <t>Original Frame Length (32 bits): Length of the original
            ingress packet before fragmentation.</t>
          </li>

          <li>
            <t>Header CRC (32 bits): Integrity check for the TOB header.</t>
          </li>
        </ul>
      </section>
    </section>

    <section anchor="loss-recovery" numbered="true" toc="default">
      <name>Loss Recovery</name>

      <t>TOB deployments may operate over member links with different loss
      characteristics. This document defines three prototype operating
      modes:</t>

      <ul>
        <li>
          <t>Resequencing-only mode: The receiver only compensates for
          differential delay and reordering. Loss recovery is left to lower
          or upper layers.</t>
        </li>

        <li>
          <t>Selective retransmission mode: The receiver sends NACK messages
          for missing cells. The sender retransmits missing cells on any
          healthy member link.</t>
        </li>

        <li>
          <t>FEC-assisted mode: The sender periodically transmits parity
          cells for a block of data cells. The receiver uses the parity cells
          to recover from limited loss before requesting retransmission.</t>
        </li>
      </ul>

      <t>The configured loss-recovery mode needs to balance latency,
      bandwidth overhead, and head-of-line blocking. In all modes, the
      receiver MUST have a policy for declaring a missing packet
      unrecoverable. Otherwise, a single lost cell can block delivery of all
      subsequent packets.</t>
    </section>

    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>

      <t>This document does not require any IANA actions. Future versions may
      request assignment of a UDP port, EtherType, or protocol registry values
      if a common encapsulation is standardized.</t>
    </section>

    <section anchor="contributors" numbered="true" toc="default">
      <name>Contributors</name>

      
    </section>
  </middle>

  <back>
    <references>
      <name>Informative References</name>

      <reference anchor="IEEE8021AX">
        <front>
          <title>IEEE Standard for Local and Metropolitan Area Networks--Link
          Aggregation</title>

          <author>
            <organization>IEEE</organization>
          </author>

          <date year="2020"/>
        </front>

        <seriesInfo name="IEEE" value="802.1AX-2020"/>
      </reference>

      <reference anchor="RFC1990">
        <front>
          <title>The PPP Multilink Protocol (MP)</title>

          <author fullname="K. Sklower" initials="K." surname="Sklower"/>

          <author fullname="B. Lloyd" initials="B." surname="Lloyd"/>

          <author fullname="G. McGregor" initials="G." surname="McGregor"/>

          <author fullname="D. Carr" initials="D." surname="Carr"/>

          <author fullname="T. Coradetti" initials="T." surname="Coradetti"/>

          <date month="August" year="1996"/>
        </front>

        <seriesInfo name="RFC" value="1990"/>
      </reference>

      <reference anchor="RFC2992">
        <front>
          <title>Analysis of an Equal-Cost Multi-Path Algorithm</title>

          <author fullname="C. Hopps" initials="C." surname="Hopps"/>

          <date month="November" year="2000"/>
        </front>

        <seriesInfo name="RFC" value="2992"/>
      </reference>

      <reference anchor="RFC7424">
        <front>
          <title>Mechanisms for Optimizing Link Aggregation Group (LAG) and
          Equal-Cost Multipath (ECMP) Component Link Utilization in
          Networks</title>

          <author fullname="Y. Krishnan" initials="Y." surname="Krishnan"/>

          <author fullname="A. Yong" initials="A." surname="Yong"/>

          <author fullname="E. Haleplidis" initials="E." surname="Haleplidis"/>

          <author fullname="K. Pentikousis" initials="K." surname="Pentikousis"/>

          <author fullname="J. Halpern" initials="J." surname="Halpern"/>

          <date month="January" year="2015"/>
        </front>

        <seriesInfo name="RFC" value="7424"/>
      </reference>

      <reference anchor="RFC8684">
        <front>
          <title>TCP Extensions for Multipath Operation with Multiple
          Addresses</title>

          <author fullname="A. Ford" initials="A." surname="Ford"/>

          <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>

          <author fullname="M. Handley" initials="M." surname="Handley"/>

          <author fullname="O. Bonaventure" initials="O." surname="Bonaventure"/>

          <author fullname="C. Paasch" initials="C." surname="Paasch"/>

          <date month="March" year="2020"/>
        </front>

        <seriesInfo name="RFC" value="8684"/>
      </reference>
    </references>
  </back>
</rfc>
