<?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-tsvwg-out-of-order-insensitive-traffic-00"
     ipr="trust200902">
  <front>
    <title abbrev="OOO Insensitive Traffic">Out-of-order Insensitive Traffic
    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>Web and Internet Transport Area</area>

    <workgroup>TSVWG</workgroup>

    <keyword>Load balancing</keyword>

    <abstract>
      <t>This document describes a kind of out-of-order insensitive traffic in
      the transport network, and the related load balancing mechanism for
      it.</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>Load balancing (LB) in the network is important, which can make the
      link loads in the network similar so as to avoid potential partial
      congestion in the network. Two basic load balancing methods supported in
      the packet forwarding equipment are the per-packet LB, and the per-flow
      LB.</t>

      <t>In the per-packet LB mechanism, when a flow comes, the packets of the
      flow will be distributed to the paths with the same cost in a
      round-robin manner. Hence, the load of the paths will be similar.
      However, the different paths may have different latencies to the
      destination, the packets in the flow will potentially be out-of-order
      when they arrive at the destination. For some applications, for example,
      the real time audio or video service, it is no recommended to use the
      per-packet LB mechanism.</t>

      <t>In the per-flow LB mechanism, when a packet comes, some information
      in the packet header will be HASHed and the packet will be forwarded to
      a path accordingly if multiple paths with the same cost exist. The
      packets of the same flow will have the same HASH value so that no
      out-of-order will take place at the destination due to the per-flow
      LB.</t>

      <t>In the current network, the network layer (IP layer) is not aware of
      the service requirement of the flow, i.e., it is not aware about whether
      the flow is out-of-order sensitive or insensitive. Therefore, in the
      current transport network, the per-flow LB will be enabled by
      default.</t>

      <t>However, the result of the per-packet LB will normally be better than
      the per-flow LB. The result of the per-flow LB will depend on whether
      the sizes of the flows are even. If there are large flows and they are
      distributed to the same path because they have the same HASH value, the
      network may become partial congested.</t>

      <t>In this situation, we may deploy an scheduler in the network, which
      can be aware of the network traffic status, and make some policy
      decision to do the traffic engineering for the network. It is a little
      complicated, and can only do the optimization after the congestion
      happens.</t>

      <t>In this document, we propose some mechanisms to enable per-packet LB
      for specific flows, which can be regarded as a kind of precaution
      mechanism.</t>
    </section>

    <section title="Enabling Per-packet LB for Specific Flows">
      <t>To enable the per-packet LB in the transport network, both the edge
      device and the forwarding device will be involved. The edge device may
      be the user's terminal or an edge router which can mark the packets of
      the users. The forwarding device is the device that along the path of
      the packet, which will receive the packets sent out by the edge device.
      </t>

      <t>In the edge device, the specific traffic needs to be marked as
      out-of-order insensitive. Thus, each packet of the traffic would include
      a specific mark in its packet header when it is sent out by the edge
      device. By comparison, normal traffic will not be marked with the
      specific mark.</t>

      <t>In the forwarding device, both the per-flow LB and the per-packet LB
      is enabled. The packets without the specific mark will be treated as
      usual, i.e., load balancing by using the per-flow LB mechanism, and the
      packets with the specific mark will be treated specifically. For
      example, we can do load balance for the packets by using the per-packet
      LB mechanism.</t>

      <t> </t>
    </section>

    <section anchor="SpecificMark" title="Considerations About Specific Mark">
      <t>In this section, we will describe the considerations about the
      specific mark, which indicates that the packet is out-of-order
      insensitive.</t>

      <t>In <xref target="RFC8622"/>, a lower-effort traffic is proposed with
      a DSCP codepoint as "000001". The traffic is described as with a
      priority lower than the BE traffic, and a specific lower-than-BE
      transport protocol is developed for it <xref target="RFC6817"/>.</t>

      <t>The out-of-order insensitive traffic in this document has a different
      semantic meaning compared to the lower-effort traffic. Similarly, we can
      occupy a specific DSCP codepoint to mark the out-of-order insensitive
      packets. In details, the DSCP codepoint will be found in the ToS (Type
      of Service) field of the IPv4 header, or in the TC (Traffic Class) field
      of the IPv6 header. In this case, the DSCP codepoint would indicate both
      the QoS level and the out-of-order insensitive information.</t>

      <t>Alternatively, we can also consider mark the out-of-order insensitive
      packets by using a specific bit in the packet header outside of the
      ToS/TC field. In this case, the meanings of the DSCP codepoints need not
      to be changed; however, a new place needs to be found to convey the
      specific bit.</t>

      <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"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.8622"?>

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