<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.8 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-detnet-tcqf-01" category="std" consensus="true" submissionType="IETF" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="detnet-tcqf">Deterministic Networking (DetNet) Data Plane - Tagged Cyclic Queuing and Forwarding (TCQF) for bounded latency with low jitter in large scale DetNets</title>

    <author initials="T." surname="Eckert" fullname="Toerless Eckert" role="editor">
      <organization>Futurewei Technologies USA</organization>
      <address>
        <postal>
          <street>2220 Central Expressway</street>
          <city>Santa Clara</city>
          <code>CA 95050</code>
          <country>USA</country>
        </postal>
        <email>tte@cs.fau.de</email>
      </address>
    </author>
    <author initials="Y." surname="Li" fullname="Yizhou Li" role="editor">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <city>Nanjing</city>
          <country>China</country>
        </postal>
        <email>liyizhou@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Bryant" fullname="Stewart Bryant">
      <organization>University of Surrey ICS</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>s.bryant@surrey.ac.uk</email>
      </address>
    </author>
    <author initials="A. G." surname="Malis" fullname="Andrew G. Malis">
      <organization>Malis Consulting</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>agmalis@gmail.com</email>
      </address>
    </author>
    <author initials="J.-d." surname="Ryoo" fullname="Jeong-dong Ryoo">
      <organization>ETRI</organization>
      <address>
        <postal>
          <country>South Korea</country>
        </postal>
        <email>ryoo@etri.re.kr</email>
      </address>
    </author>
    <author initials="P." surname="Liu" fullname="Peng Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liupengyjy@chinamobile.com</email>
      </address>
    </author>
    <author initials="G." surname="Li" fullname="Guangpeng Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>liguangpeng@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Ren" fullname="Shoushou Ren">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>renshoushou@huawei.com</email>
      </address>
    </author>

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

    
    <workgroup>DETNET</workgroup>
    

    <abstract>


<?line 173?>

<t>This memo specifies a forwarding method for bounded latency and bounded jitter for Deterministic Networks and is a variant of the IEEE TSN Cyclic Queuing and Forwarding (CQF) method. Tagged CQF (TCQF) supports more than 2 cycles and indicates the cycle number via an existing or new packet header field called the tag to replace the cycle mapping in CQF which is based purely on synchronized reception clock.</t>

<t>This memo standardizes TCQF as a mechanism independent of the tagging method used. It also specifies tagging via the (1) the existing MPLS packet Traffic Class (TC) field for MPLS packets, (2)  the IP/IPv6 DSCP field for IP/IPv6 packets, and (3) a new TCQF Option header for IPv6 packets.</t>

<t>Target benefits of TCQF include low end-to-end jitter, ease of high-speed hardware implementation, optional ability to support large number of flow in large networks via DiffServ style aggregation by applying TCQF to
the DetNet aggregate instead of each DetNet flow individually, and support of wide-area DetNet
networks with arbitrary link latencies and latency variations as well as low accuracy clock synchronization.</t>



    </abstract>



  </front>

  <middle>


<?line 183?>

<section anchor="introduction"><name>Introduction</name>

<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>CQF</dt>
  <dd>
    <t>Cyclic Queuing and Forwarding.  A queuing mechanism defined by annex T of <xref target="IEEE802.1Q"/>.</t>
  </dd>
  <dt>DT</dt>
  <dd>
    <t>Dead Time. A term from CQF indicating the time during each cycle in which no frames can be sent because the the receiving node could not receive it into the desired cycle buffer.</t>
  </dd>
  <dt>TCQF</dt>
  <dd>
    <t>Tagged Cyclic Queuing and Forwarding. The mechanism specified in this memo.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="overview-informative"><name>Overview (informative)</name>

<section anchor="cyclic-queuing-and-forwarding-cqf"><name>Cyclic Queuing and Forwarding (CQF)</name>

<t>Cyclic Queuing and Forwarding (CQF) is a bounded (guaranteed) per-hop
latency forwarding mechanism standardized for use in ethernet switched
networks by the IEEE TSN working group originally via <xref target="IEEE802.1Qch"/>
(802.1 Qch), which later became annex T of <xref target="IEEE802.1Q"/>.  See also <xref target="RFC9320"/>, Section 6.6.</t>

<t>CQF is not a separate forwarding mechanism, but it is simple a profile
of the IEEE Time Aware Shaper (TAS) standard, <xref target="IEEE802.1Qbv"/>, which introduce
Time-Gated Queues.</t>

<t>CQF uses a two-queue based forwarding mechanism on every switch along a
path between a sender and receiver. One queue is used to receive and
store frames destined toward a particular outgoing interface on the switch,
the other queue is used simultaneously to send frames to the same outgoing
interface. At every cycle time T_c interval these two queues are swapped, or
in terms of Time-Gated Queus, one is closed for sending, the other is opened
for sending. This operation is synchronized across all switches in the 
network by network wide synchronized clocks, so that all queues
open and close at the same time.</t>

<t>For a path of h hops, the end-to-end latency bound is between (h-1) * T_c + DT
and (h+1) * T_c. DT is the so-called dead time at the end of a cycle
during which no frames can be transmitted from the sending queue to ensure
that the last byte of the last frame will be received earlier than
the end of the same cycle on the receiving switch.</t>

<t>A core contributor to DT is the (physical) link between the sending
and receiving switch. DT needs to be larger than the latency of
this link, including physical propagation latency (speed of light), possible
error correction latencies, and interface serialization latency.</t>

<t>T_c needs to be choosen carefully: The larger it is, the higher the
bounded latency. The smaller it is, the fewer bytes (and hence frames)
will fit into a cycle.</t>

<t>To admit flows into a CQF network, the ingress switch uses per-flow
Time-Gated Queues. In the most simple case, such a gate is configured
to admit a maximum amount of bytes from the flow into every cycle. More
advanced admission control can be performed for bursty flows. For example
N bursty flows f_i = 0...(N-1) could share admitted bandwidth by each having their
burst admitted in different cycles c_i = c % N + c_i, where c is a continuous
increasing cycle number.</t>

</section>
<section anchor="highspeed"><name>Benefits of CQF with higher speed links</name>

<t>The typical CQF deployments in manufacturing networks with 1Gbps links
uses no less than hundreds of microseconds as a cycle interval.  In a
network with a small diameter, say less than 8 hops, it is sufficiently good to provide an
end-to-end latency bound in the order of several milliseconds.</t>

<t>With the increasing of link speed from 100Mbps to 1Gbps, 10Gbps, 100Gbps
or even higher in larger networks, either more bytes can be transmitted
within the same cycle interval or the smaller cycle interval is
required to transmit the same amount of bytes in a cycle as that in
low speed networks. Likewise, the serialization latency reduces with
higher speed links and DT reduces. This overall makes CQF for higher speed
networks more attractive than for lower speed networks.</t>

<t><xref target="Fig1"/> shows a simple calculation on the number of bytes that can
be transmitted in a cycle with different cycle intervals and link
speeds. A minimum of 1500 bytes is labeled with * as a baseline because
a typical maximum Ethernet frame is 1500 bytes and a selected cycle interval
should at least allow one such frame size to be transmitted unless
otherwise specified.</t>

<t>TBD: These numbers probbly need to be adjusted to reflect reducing DT based on
serialization latency.</t>

<figure title="Bytes transmitted within one cycle interval" anchor="Fig1"><artwork><![CDATA[
+----------+------------------------------------------------+
|          |           Bytes Transmitted in a Cycle         |
|Cycle Time+------------------------------------------------+
|          |             Link Speed                         |
|  (us)    |   100Mbps  |   1Gbps     |   10Gbps  | 100Gbps |
+----------+------------+-------------+-----------+---------+
|    1     |    12.5    |    125      |    1250   |   12500*|
+----------+------------+-------------+-----------+---------+
|   1.2    |     15     |    150      |    1500*  |   15000 |
+----------+------------+-------------+-----------+---------+
|    2     |     25     |    250      |    2500   |   25000 |
+----------+------------+-------------+-----------+---------+
|    4     |     50     |    500      |    5000   |   50000 |
+----------+------------+-------------+-----------+---------+
|    10    |    125     |   1250      |   12500   |  125000 |
+----------+------------+-------------+-----------+---------+
|    12    |    150     |   1500*     |   15000   |  150000 |
+----------+------------+-------------+-----------+---------+
|   120    |    1500*   |   15000     |   150000  | 1500000 |
+----------+------------+-------------+-----------+---------+
]]></artwork></figure>

<t>When the link speed is at 10Gbps, the cycle interval could be as
small as 1.2 us if a 1500 byte frame needs to be transmitted in one
cycle interval, and with 100Gbps links even 1 usec cycle time
allows for 8 frames of 1500 byte each.  These are not accurate calculations because there are
certainly other factors to determine the cycle interval.  However, it
shows that as the link speed increases, cycle interval can be greatly
reduced in practice while satisfying the minimum amount of data
transmitted in a single cycle.  The end-to-end latency bound when
applying CQF is determined by cycle interval and number of hops.
That is to say, CQFs with a smaller cycle interval have the potential
to meet more strict end-to-end latency requirements in higher link
speed networks or meet the same end-to-end latency requirement in
networks with much larger network diameter (number of hops).</t>

<t>Industry automation has some typical application period requirement,
e.g.  100 us to 2 ms for isochronous traffic, 500 us to 1 ms for
cyclic-synchronous and 2 to 20 ms for cyclic-asynchronous traffic.
The network cycle interval is usually a fraction of the application
period.  When the cycle interval is in the order of tens of
microseconds, CQF can be used to meet the most strict end-to-end
latency requirements.  For instance, if we assume the number of hops
is 24, when cycle interval is set to 10us, the end-to-end latency
bound can be around (24+1)*10 = 250 us which has the potential to
meet the latency bound requirement for isochronous traffic.</t>

<t>In summary a higher speed network makes the shorter cycle interval
feasible because sufficiently large traffic volume can be transmitted
within one cycle interval.  A shorter cycle interval further offers
shorter end-to-end latency and jitter bounds which provide CQF with
the potentials to meet more strict latency requirements in wider
deployments while preserving its simplicity of latency calculation
and provisioning.  Therefore there is a strong motivation to leverage
CQF and at the same time to make cycle interval as short as possible.</t>

</section>
<section anchor="cqfdt"><name>Challenges of CQF with higher latency links</name>

<t>Unlike the original targets for IEEE TSN work, DetNet not only targets
to support IETF forwarding planes (IP, MPLS,...), but also wide-area
networks with therefore longer physcial propagation latencies.</t>

<t>As shown in <xref target="Fig2"/> for fundamental (two buffer) CQF, the last byte
sent by node A in cycle (i-1) has to be ready for sending at node B
before the start of cycle i.  To realize it, DT or dead time is
imposed.  It is a time interval usually at the end of a cycle so that
a node should not send the scheduled CQF packets.</t>

<t>Dead time is at least the sum of the maximum propagation delay to the
next node, the maximum processing delay at the next node and the
maximum other time variations.  Therefore either the longer
propagation or longer processing delay makes dead time larger.
Packets from DetNet service is likely to be propagated over long
links in the wider area.  It takes around 5us per kilometer to
propagate, i.e. 0.5ms every hundred kilometers.  Hence the dead time
can be as large as milliseconds or tens of milliseconds in case of
hundred kilometers of longer links and larger processing delays.
That would make the dead time eat up most of the cycle interval when
cycle interval is short (e.g., at the same order or one order higher
of magnitude in time as dead time).  Then the useful time in a cycle
will be much reduced.  In some extreme cases, when the link is long
and the cycle interval is set to extremely short, the first packet
sent in a cycle by a node will not be possibly received in the same
cycle interval at the next node.  That makes the useful time in a
cycle reaches zero in two buffer CQF.  Then two buffer CQF will be no
longer suitable.</t>

<t>In result of these considerations, reasonable limits for the size
of TSN CQF networks are in the order of at most few Km per hop,
beyond which DT exceeds common cycle times and possible through
of CQF traffic is hence 0.</t>

<figure title="Fundamental Two Buffer CQF" anchor="Fig2"><artwork><![CDATA[
--------------------------------------------------------> Time

          |             |             |             |
Node A    |  cycle i-1  |   cycle i   |  cycle i+1  |
          |             |             |             |
Sending  ---------------+----------------------------------
          |+------+     |+------+     |+------+     |
          ||//////|     ||//////|     ||//////|     |
          |+------+     |+------+     |+------+     |
          |  buf_1      |  buf_2      |  buf_1      |
          |       |     |       |     |       |     |
          |       | DT  |       | DT  |       | DT  |
Node B    |       |<--->|       |<--->|       |<--->|
          |             |             |             |
Receiving--------------------------------------------------
          |     +------+|     +------+|     +------+|
          |     |//////||     |//////||     |//////||
          |     +------+|     +------+|     +------+|
          |       buf_1 |       buf_2 |       buf_1 |
          |             |             |             |
          |             |             |             |
Node B    |             |             |             |
          |             |             |             |
Sending  --------------------------------------------------
          |             |+------+     |+------+     |
          |             ||//////|     ||//////|     |
          |             |+------+     |+------+     |
          |             |  buf_1      |  buf_2

DT=Dead Time
]]></artwork></figure>

</section>
<section anchor="cqf-review"><name>Review of CQF benefits and challenges for DetNet</name>

<t>In review, CQF has a range of benefits for DetNet.</t>

<t><list style="numbers">
  <t>It provides bounded latency.</t>
  <t>It provided tightly bounded jitter.</t>
  <t>It has a very simple and easily standardized calculus for its bounded latency and jitter.</t>
  <t>It has very simple per-hop forwarding machinery (cyclic queues) easily supportable in high-speed network equipment.</t>
  <t>Like Diffserv forwarding, it does not use per-hop,per-flow state in the forwarding plane and therefore does not require per-hop,per-flow signaling with the DetNet controller-plane, allowing it to scale to large number of flows.</t>
  <t>The faster the links are, the lower the per-hop latency impact of the cyclic queuing mechanism.</t>
</list></t>

<t>The core limitation of CQF, which TCQF intends to solve, lies in its use of arrival time clock to determine the cycle into which the packet is to be placed, see <xref target="I-D.eckert-detnet-bounded-latency-problems"/> for more details.</t>

<t><list style="numbers">
  <t>Cycles times should be as short as feasible to support lower end to end latency (<xref target="highspeed"/>).</t>
  <t>When networks have longer links, or links with higher propagation jitter as in Metro and WAN, this increases the dead time, and hence reduces the possible utilization or need to increase cycle times.</t>
  <t>When shorter cycle times are feasible because of higher speed links, this would require an increase in clock-synchronization accuracy.</t>
</list></t>

</section>
<section anchor="tagged-cqf"><name>Tagged CQF</name>

<t>Tagging of CQF packets with cycle identifiers can be used to solve
the dilemma aforementioned with minor changes to the fundamental two buffer CQF.
This section introduces this mechanism with multipl buffers and
CQF cycle identification in the packet header. Note that we are also now
using the term packet (as used for IP, MPLS and other IETF forwarding planes) and
buffers for packets, as opposed to frames as used by IEEE.</t>

<section anchor="cqf-with-more-than-two-buffers"><name>CQF with more than two buffers</name>

<t>CQF can use more than two buffers to minimize the dead time and
increase the useful time in a cycle so as to support long link delay.
<xref target="Fig3"/> shows how a three buffer CQF works in a rotating manner in
general.  Node A sends packets in cycle (i-1).  The time interval
over which node B receives these packet spans two cycles, cycle (i-1)
and cycle i.  Hence a method is needed to make node B send them all
at once in cycle (i+1) in order to ensure packets in a single cycle
from the previous node always being sent out in one cycle at the
current node.</t>

<figure title="Three Buffer CQF" anchor="Fig3"><artwork><![CDATA[
--------------------------------------------------------> Time

          |             |             |             |
Node A    |  cycle i-1  |   cycle i   |  cycle i+1  |
          |             |             |             |
Sending  ---------------+----------------------------------
          |+----------+ |+----------+ |+----------+ |
          ||//////////| ||//////////| ||//////////| |
          |+----------+ |+----------+ |+----------+ |
          |  buf_1      |  buf_2         buf_3      |
          |           | |           | |           | |
          |         ->| |<-       ->| |<-       ->| |<-
          |            DT            DT            DT
          |
          -------------------------------------------------
Node B    |     +-----------+ +-----------+ +-----------+
          |     |///////////| |///////////| |///////////|
Receiving |     +-----------+ +-----------+ +-----------+
          |       buf_1 |       buf_2 |       buf_3 |
          |             |             |             |
          |             |             |             |
          |             |             |             |
          |             |             |             |
         ---------------|----------------------------------
Node B    |             |             |+----------+ |+----------+
          |             |             ||//////////| ||//////////|
Sending   |             |             |+----------+ |+----------+
          |             |                buf_1         buf_2

DT=Dead Time
]]></artwork></figure>

<t>More than three buffers will be required when the receiving interval
at node B for packets sent in a single cycle interval from node A
spans over more than two cycle interval boundaries.  This can happen
when the time variance (jitter) including propagation, processing, regulation,
clock synchronization variance (so called Maximum Time Interval Error - MTIE)
and other factors between two neighbouring DetNet nodes can become larger
than a single cycle tim.</t>

</section>
<section anchor="from-cqf-with-multiple-buffers-to-tcqf"><name>From CQF with multiple buffers to TCQF</name>

<t>Note that due to the variance in time, the receiving interval at the
downstream node can be much larger than one cycle interval in which
the upstream node transmits.  When time variance is large and cycle
interval and dead time are set small, the possible receiving time of
the last few packets from node A’s cycle (i-1) at node B can overlap
with the possible receiving time of the first few packets from node
A’s cycle i in different rounds of buffer rotations.  Hence, when the
buffer number is larger than two, if the receiving side still uses
the traditional CQF implicit time borderline to demarcate the
receiving packets from the consecutive cycles of the upstream node,
it may cause the ambiguity in identifying the right sending cycle at
the upstream node and further affect the correctness of the decision
of which output buffer to put the received packets at the current
node.</t>

<t><xref target="Fig4"/> shows such an ambiguity when time based cycle demarcation is
used.  The packet sent by node A in its cycle (i-1) can be received
at any time in the receiving interval indicated as “receiving window
for A’s buf_1” in Figure 4.  The receiving window refers to the time
interval between the earliest time that the first packet sent in a
given cycle from an upstream node is processed and enqueued in an
output buffer and the latest time that the last packet of the cycle
is processed and enqueued in an output buffer.  Network operators may
configure the size of the receiving window, taking the time variance
of their networks into account.  It can be seen that the spanning
time period of receiving window is longer than the cycle interval.
This is because there is a large time variance experienced between A
and B, e.g. varying processing time for different packets in
different cycles.  It does not mean the receiving interval for every
cycle always constantly span over such a large receiving window.  The
receiving window time interval indeed is determined by the worst case
time variance value and that should be used for regular time cycle
demarcation.</t>

<figure title="Three Buffer ambiguity" anchor="Fig4"><artwork><![CDATA[
--------------------------------------------------------> Time

           |        |        |        |        |
Node A     | cycle  | cycle  | cycle  | cycle  |
           |  i-1   |   i    |  i+1   |  i+2   |
Sending   ----------+--------+--------+--------+
           |+-----+ |+-----+ |+-----+ |+-----+ |
           ||/////| ||/////| ||/////| ||/////| |
           |+-----+ |+-----+ |+-----+ |+-----+ |
           | buf_1  | buf_2  | buf_3  | buf_4  |
           |      | |      | |      | |      | |
           |    ->| |<-  ->| |    ->| |    ->| |
           |      DT       DT       DT       DT
           |
          --------------------------------------
           |      +-----------+receiving window
Node B     |      |///////////|for A's buf_1
           |      +-----------+
Receiving  |    put to B's buf_1
           |
           |             ->|  |<- ambiguity window 1
           |
           |               +-----------+receiving window
           |               |///////////|for A's buf_2
           |        |      +-----------+
           |        |     put to B's buf_2
           |        |
           |        |             ->|  |<- ambiguity window 2
           |        |        |
           |        |        |      +-----------+receiving window
           |        |        |      |///////////|for A's buf_3
           |        |        |      +-----------+
           |        |        |     put to B's buf_3
           |        |        |
           |        |        |             ..........
           |        |        |
          -|--------|--------|--------|---------------
Node B     |        |        |        |        |        |
           |        |        | +-----+|+-----+ |+-----+ |+-----+
Sending    |        |        | |/////|||/////| ||/////| ||/////|
           |        |        | +-----+|+-----+ |+-----+ |+-----+
           |        |        |  buf_4 | buf_1  | buf_2  | buf_3

DT=Dead Time
]]></artwork></figure>

<t>When a packet is received in ambiguity window 1 in <xref target="Fig4"/>, node B
is not able to use the receiving time to determine which buffer is
the correct one to put the packet in because it cannot tell if the
packet is sent from cycle (i-1) or cycle i on node A.  If node B puts
the packet to the wrong output buffer, the packet may experience the
unexpected delay.  At the same time, the packet occupying the non-
designated buffer may break the contracts between the end hosts and
DetNet networks and then cause the unpredictable consequences.</t>

<t>It has been noted that the DT can be greatly increased to beat the
time variance in order to make the receiving windows do not overlap
so as to remove such ambiguity.  However, it is not always practical
and usually not desired because large DT will eat useful cycle time
and bring the low utilization issue as illustrated in <xref target="cqfdt"/>.
Therefore, it would be desired to keep DT as small as possible and at
the same time identify the cycle interval correctly.</t>

<t>With tagged CQF, the sending router A encodes the sending cycle identification in some
existing or new packet header field as specified later in this document.
This allows the receiving router B to determine the correct output port cycle buffer to
place the data packet into. Except for the need for the operator to
pre-configure this mapping on router B, based on the above described latency and jitter
of the link (and processing between the sending and receiving router,
tagging does not change the fundamental mechanism and benefits of CQF.
makes no change from the fundamental CQF.</t>

<t>Compared to CQF with multiple buffers, Tagged CQF allows to
operate with clock synchronization at significantly reduced accuracy
requirements than CQF. In CQF, the MTIE is an addend determing DT 
and should hence typically be less than 1% of the cycle time. In TCQF it
is an addent in the permitted receive window and can hence be for  example
as large as the cycle time, and such 100 times larger. A network using
TCQF with 100Gbps interfaces can hence can hence use the same or less
expensive clock synchronization setup than a CQF network with 1Gbps interfaces.
In addition, when conditions of the network connections change, the mappings
can dynamically changed from network operations.</t>

<t>CQF with multiple buffers but without tagging has been proposed to IEEE TSN
in <xref target="multipleCQF"/>, but has not been adopted. Instead of relying on a cycle
tag in a packet header, it still relies solely on the arrival time of packet,
and can hence not equally resolve arrival time ambiguities as TCQF can,
because it does not know the cycle from which the packet was sent.</t>

</section>
</section>
<section anchor="summary-of-tcqf-benefits-and-goals-for-detnet"><name>Summary of TCQF benefits and goals for DetNet</name>

<t>TCQF inherits the benefits of CQF for DetNet as outlined in <xref target="cqf-review"/>, and byusing a configurable number of three or more cycles, and signaling the cycle as part of a packet header, it resolves these problems as follows.</t>

<t><list style="numbers">
  <t>With three cycles, TCQF can support arbitrary latency links at arbitrary speeds without reduction of utilization because of longer links or higher link speeds (same cycle time, same clock accuracy, only change in lengths and speeds).</t>
  <t>With four or more cycles, TCQF can also eliminate Dead Time caused by variation of clock synchronization inaccuracies (MTIE) as well as jitter caused by link propagation and processing variation. The sum of cycles times needs to be larger than the total jitter to achieve this.</t>
</list></t>

<t>Prior documents describing the concept of TCQF (without using that name) include <xref target="I-D.qiang-detnet-large-scale-detnet"/> and <xref target="I-D.dang-queuing-with-multiple-cyclic-buffers"/>. TCQF does not depend on other elements of <xref target="RFC8655"/>, so it can also be used stand alone in otherwise non-deterministic IP/IPv6 or MPLS networks to achieve bounded latency and low jitter.</t>

<t>TCQF is likely especially beneficial when networks are architected to avoid per-hop, per-flow state even for traffic steering, which is the case for networks using SR-MPLS <xref target="RFC8402"/> for traffic steering of MPLS unicast traffic, SRv6 <xref target="RFC8986"/> for traffic steeering of IPv6 unicast traffic and/or BIER-TE <xref target="I-D.ietf-bier-te-arch"/> for tree engineering of MPLS multicast traffic by using the TC and/or DSCP header fields of BIER packets according to <xref target="RFC8296"/>.</t>

<t>In these networks, it is specifically undesirable to require per-flow signaling to non-edge forwarders (such as P-LSR in MPLS networks) solely for DetNet QoS because such per-flow state is unnecessary for traffic steering and would only be required for the bounded latency QoS mechanism and require likely even more complex hardware and manageability support than what was previously required for per-hop steering state (such as in RSVP-TE, <xref target="RFC4875"/>). Note that the DetNet architecture <xref target="RFC8655"/> does not include full support for this DiffServ model, which is why this memo describes how to use TCQF with the DetNet architecture per-hop, per-flow processing as well as without it.</t>

</section>
</section>
<section anchor="using-tcqf-in-the-detnet-architecture-and-mpls-forwarding-plane-informative"><name>Using TCQF in the DetNet Architecture and MPLS forwarding plane (informative)</name>

<t>This section gives an overview of how the operations of TCQF relates
to the DetNet architecture. We first revisit QoS with DetNet in the absence of TCQF
using an MPLS network as an example.</t>

<figure title="A DetNet MPLS Network" anchor="FIG-DetNet-MPLS"><artwork><![CDATA[
 DetNet MPLS       Relay       Transit         Relay       DetNet MPLS
 End System        Node         Node           Node        End System
    T-PE1          S-PE1        LSR-P          S-PE2       T-PE2
 +----------+                                             +----------+
 |   Appl.  |<------------ End-to-End Service ----------->|   Appl.  |
 +----------+   +---------+                 +---------+   +----------+
 | Service  |<--| Service |-- DetNet flow --| Service |-->| Service  |
 +----------+   +---------+  +----------+   +---------+   +----------+
 |Forwarding|   |Fwd| |Fwd|  |Forwarding|   |Fwd| |Fwd|   |Forwarding|
 +-------.--+   +-.-+ +-.-+  +----.---.-+   +-.-+ +-.-+   +---.------+
         :  Link  :    /  ,-----.  \   : Link :    /  ,-----.  \
         +........+    +-[ Sub-  ]-+   +......+    +-[ Sub-  ]-+
                         [Network]                   [Network]
                          `-----'                     `-----'
         |<- LSP -->| |<-------- LSP -----------| |<--- LSP -->|
  
         |<----------------- DetNet MPLS --------------------->|
]]></artwork></figure>

<t>The above <xref target="FIG-DetNet-MPLS"/>, is copied from <xref target="RFC8964"/>, Figure 2, 
and only enhanced by numbering the nodes to be able to better refer
to them in the following text.</t>

<t>Assume a DetNet flow is sent from T-PE1 to T-PE2 across S-PE1, LSR, S-PE2. 
In general, bounded latency QoS processing is then required on the
outgoing interface of T-PE1 towards S-PE1, and any further outgoing
interface along the path. When T-PE1 and S-PE2 know that their next-hop
is a service LSR, their DetNet flow label stack may simply have the
DetNet flows Service Label (S-Label) as its Top of Stack (ToS) LSE,
explicitly indicating one DetNet flow.</t>

<t>On S-PE1, the next-hop LSR is
not DetNet aware, which is why S-PE1 would need to send a label stack
where the S-Label is followed by a Forwarding Label (F-Label), and
LSR-P would need to perform bounded latency based QoS on that F-Label.</t>

<t>For bounded latency QoS mechanisms relying on per-flow regulator state (aka:
per-flow packet scheduling), such as in <xref target="TSN-ATS"/>, this requires the use of a
per-detnet flow F-Labels across the network from S-PE1 to S-PE2. These could
for for example be assigned/managed through RSVP-TE <xref target="RFC3209"/>
enhanced as necessary with QoS parameters matching the underlying bounded
latency mechanism (such as <xref target="TSN-ATS"/>).</t>

<t>With TCQF, a sequence of LSR and DetNet service node implements
TCQF with MPLS TC, ideally from T-PE1 (ingress) to T-PE2 (egress).  The ingress
node needs to perform per-DetNet-flow per-packet "shaping"/"regulating" to  assign
each packet of a flow to a particular TCQF cycle. This is specified in <xref target="ingress"/>.</t>

<t>All LSR/Service nodes after the ingress node only have to map a
received TCQF tagged DetNet packet to the configured cycle
on the output interface, not requiring any per-DetNet-flow QoS state.
These LSR/Service nodes do therefore also not require per-flow
interactions with the controller plane for the purpose of bounded latency.</t>

<t>Per-flow state therefore is only required on nodes that are 
DetNet service nodes, or when explicit, per-DetNet flow steering
state is desired, instead of ingress steering through e.g.: SR-MPLS.</t>

<t>Operating TCQF per-flow stateless across a service node, such as S-PE1, S-PE2
in the picture is only one option. It is of course equally feasible to
Have one TCQF domain from T-PE1 to S-PE2, start a new TCQF domain there,
running for example up to S-PE2 and start another one to T-PE2.</t>

<t>A service node must act as an egress/ingress edge of a TCQF domain if it needs
to perform operations that do change the timing of packets other than
the type of latency that can be considered in configuration of TCQF (see <xref target="calculation"></xref>).</t>

<t>For example, if T-PE1 is ingress for a TCQF domain, and T-PE2 is the egress,
S-PE1 could perform the DetNet Packet Replication Function (PRF)  without having to be a TQCF 
edge node as long as it does not introduce latencies not included in the TCQF
setup and the controller plane reserves resources for the multitude of flows
created by the replication taking the allocation of resources in the TCQF cycles into account.</t>

<t>Likewise, S-PE2 could perform the Packet Elimination Function without being
a TCQF edge node as this most likely does not introduce any non-TCQF acceptable
latency - and the controller plane accordingly reserves only for one flow
the resources on the S-PE2-&gt;T-PE2 leg.</t>

<t>If on the other hand, S-PE2 was to perform the Packet Reordering Function (PRF), this could
create large peaks of packets when out-of-order packets are released together.
A PRF would either have to take care of shaping out those bursts for the traffic
of a flow to again conform to the admitted CIR/PIR, or else the service node
would have to be a TCQF egress/ingress, performing that shaping itself as an
ingress function.</t>

</section>
<section anchor="forwarding"><name>TCQF per-flow stateless forwarding (normative)</name>

<section anchor="model"><name>Configuration Data model and tag processing for MPLS TC tags</name>

<t>The following data model summarizes the configuration parameters
as required for TCQF and discussed in further sections. 'tcqf' 
includes the parameters independent of the tagging on an interface.
'tcqf_*' describes the parameters for interfaces using MPLS TC and
IP DSCP tagging.</t>

<figure title="Encapsulation independent TCQF Configuration Data Model" anchor="FIG-Data-Model"><artwork><![CDATA[
# Encapsulation agnostic data
tcqf 
+-- uint16 cycles
+-- uint16 cycle_time
+-- uint32 cycle_clock_offset
+-- if_config[oif] # Outgoing InterFace
    +-- uint32 cycle_clock_offset
    +-- cycle_map[iif] # Incoming InterFace
        +--uint8 oif_cycle[iif_cycle]
]]></artwork></figure>

</section>
<section anchor="processing"><name>Packet processing</name>

<t>This section explains the TCQF packet processing and through
it, introduces the semantic of the objects in <xref target="FIG-Data-Model"/></t>

<t>tcqf contains the router wide configuration of TCQF parameters,
independent of the specific tagging mechanism on any interface. Any
interface can have a different tagging method. This document uses the term
router when it is irrelevant whether forwarding is for IP or MPLS packet,
and the term Label Switched Router (LSR) to indicate MPLS is used, or IP
router to indicate IP or IPv6 are used - independent of the specific encapsulation
used for IP or MPLS to carry the cycle identification.</t>

<t>The model represents a single TQCF domain, which is a set of
interfaces acting both as ingress (iif) and egress (oif)
interfaces, capable to forward TCQF packets amongst each other. A router
may have multiple TCQF domains each with a set of interfaces disjoint
from those of any other TCQF domain.</t>

<t>tcqf.cycles is the number of cycles used across all interfaces in the TCQF domain.
routers MUST support 3 and 4 cycles. The maximum number of supportable cycles
depends on the encapsulation. For example, to support interfaces with MPLS TC tagging,
7 or fewer cycles MUST be used across all interfaces in the CQF domain. See <xref target="mpls"/>.</t>

<t>The unit of tcqf.cycle_time is micro-seconds.
routers MUST support configuration of cycle-times of 20,50,100,200,500,1000,2000 usec.</t>

<t>Cycles start at an offset of tcqf.cycle_clock_offset in units of nsec as follows. 
Let clock1 be a timestamp of the local reference clock for TCQF, at which
cycle 1 starts, then:</t>

<t>tcqf.cycle_clock_offset = (clock1 mod (tcqf.cycle_time * tcqf.cycles) )</t>

<t>The local reference clock of the router is expected to be synchronized with
the neighboring LSR/router in TCQF domain.  tcqf.cycle_clock_offset can be configurable
by the operator, or it can be read-only. In either case will the operator be
able to configure working TCQF forwarding through appropriately calculated
cycle mapping.</t>

<t>tcqf.if_config[oif] is optional per-interface configuration of TCQF parameters.
tcqf.if_config[oif].cycle_clock_offset may be different from tcqf.cycle_clock_offset,
for example, when interfaces are on line cards with independently synchronized clocks,
or when non-uniform ingress-to-egress propagation latency over a complex router/LSR
fabric makes it beneficial to allow per-egress interface or line card configuration
of cycle_clock_offset. It may be configurable or read-only.</t>

<t>The value of -1 for tcqf.if_config[oif].cycle_clock_offset is used to indicate
that the domain wide tcqf.cycle_clock_offset is to be used for oif.
This is the only permitted negative number for this parameter.</t>

<t>When a packet is received from iif with a cycle value of iif_cycle and the
packet is routed towards oif, then the cycle value (and buffer) to use on
oif is tcqf.if_config[oif].cycle_map[iif].oif_cycle[iif_cycle]. This is
called the cycle mapping and is must be configurable. This cycle mapping
always happens when the packet is received with a cycle tag on an interface
in a TCQF domain and forwarded to another interface in the same TCQF domain.</t>

<t>This encapsulation independent data model only defines how to map from
a received packets cycle to a sending interface cycle buffer and hence sent
packet cycle. It does not specify how the cycle identifier is encoded in
the received or sent packet. This is amended by the specification in the following
sections.</t>

<t>This data model does therefore also not determine whether interfaces use IP/IPv6, MPLS
or any other encapsulation. This is determined by the configuration of the DetNet domain. A mixed
use of MPLS and IP/IPv6 interfaces is possible with this data model, but
at the time of writing this document not supported by DetNet.</t>

</section>
<section anchor="mpls"><name>TCQF for MPLS with TC tagging</name>

<t>This section describes operation of TCQF for MPLS packets using the
Traffic Class (TC) field of MPLS label to carry the cycle-id. To support
this encapsulation, the TCQF Data Model as defined in <xref target="FIG-Data-Model"/>
is expanded as follows.</t>

<figure title="TCQF Configuration Data for MPLS TC" anchor="FIG-Data-Model-TC"><artwork><![CDATA[
# MPLS TC tagging specific data
tcqf_tc[oif]
+--uint8 tc[oif_cycle]
]]></artwork></figure>

<t>tcqf_tc[oif].tc[oif_cycle] defines how to map from the internal cycle number
oif_cycle to an MPLS TC value on interface oif. tcqf_tc[oif] MUST be
configured, when oif uses MPLS. This oif_cycle &lt;=&gt; tc mapping is not only
 used to map from internal cycle number to MPLS TC tag when sending
packets, but also to map from MPLS TC tag to the internal cycle number when
receiving packets.</t>

<t>In the terminology of <xref target="RFC3270"/>, TCQF QoS as defined here, is 
TC-Inferred-PSC LSP (E-LSP) behavior: Packets are determined to
belong to the TCQF PSC solely based on the TC of the received
packet.</t>

<t>The internal cycle number SHOULD be assigned from the Top of Stack (ToS)
MPLS label TC bits before any other label stack operations
happens. On the egress side, the TC value of the ToS MPLS label
SHOULD be assigned from the internal cycle number after any label
stack processing.</t>

<t>With this order of processing, TCQF can support forwarding of
packets with any label stack operations such as label swap in the
case of LDP or RSVP-TE created LSP, Penultimate Hop Popping (PHP),
or no label changes from SID hop-by-hop forwarding and/or SID/label
pop as in the case of SR-MPLS traffic steering.</t>

</section>
<section anchor="dscp"><name>TCQF for IP/IPv6 with DSCP tagging</name>

<t>This section describes operation of TCQF for IP/IPv6 packets using the
Differentiated Services Code Point (DSCP) field of IP/IPv6 packets to carry the cycle-id.
To support this encapsulation, the TCQF Data Model as defined in <xref target="FIG-Data-Model"/>
is expanded as follows.</t>

<figure title="TCQF Configuration Data for IP/IPv6 DSCP" anchor="FIG-Data-Model-DSCP"><artwork><![CDATA[
# IP/IPv6 DSCP tagging specific data
tcqf_dscp[oif]
+--uint8 dscp[oif_cycle]
]]></artwork></figure>

<t>tcqf_dscp[oif].dscp[oif_cycle] defines how to map from the internal cycle number
oif_cycle to an IP/IPv6 DSCP value on interface oif. tcqf_dscp[oif] MUST be
configured, when oif uses DSCP tagging of IP/IPv6 packets for TCQF. This
oif_cycle &lt;=&gt; idscp mapping is not only used to map from internal cycle number to the
DSCP tag when sending packets, but also to map from IP/IPv6 DSCP to the internal cycle number when
receiving packets.</t>

<t>As how DetNet domains are currently assumed to be single administrative network
operator domains, this document does not ask for standardization
of the DSCP to use with TCQF. Instead, deployments wanting to use TCQF with
IP/IPv6 encapsulation and DSCP tagging need to assign within their domain DSCP from the
xxxx11 "EXP/LU" Codepoint space according to <xref target="RFC2474"/>, Section 6. This
allows up to 16 DSCP for intradomain use and hence up to 16 cycle identifiers.</t>

</section>
<section anchor="option"><name>TCQF for IPv6 with IPv6 Option tagging</name>

<t>This section describes operation of TCQF for IPv6 packets without having
to rely on DSCP by defining a new IPv6 option for DetNet.  This option is to be placed in the
IPv6 HbH (Hop-by-Hop) Options or DOH (Destination Option Header) header.
To support this encapsulation, the TCQF Data Model as defined in <xref target="FIG-Data-Model"/>
is expanded as follows.</t>

<figure title="TCQF Configuration Data for IPv6 TCQF Option Header" anchor="FIG-Data-Model-IPV6OH"><artwork><![CDATA[
# IPv6 TCQF Option tagging specific data
tcqf_ipv6oh[oif]
+--uint8 ipv6oh[oif_cycle]
]]></artwork></figure>

<section anchor="tcqf-option-format"><name>TCQF Option Format</name>

<t>The TCQF Option helps the receiving port to identify in which
time cycle interval the packet is sent from the upstream router.  It
can be used to determine the output port cycle buffer to enqueue the
packet.</t>

<figure title="TCQF Option Format" anchor="Fig5"><artwork><![CDATA[
 0                   1                   2                   3
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Option Type  |  Opt Data Len |E|    Flags    |   Cycle Id    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.                                                               .
~         (64-bit extension if flag E-bit is 1)                 ~
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>TCQF-Option fields:</t>

<t><list style="symbols">
  <t>Option Type: 8-bit identifier of the type of option.  Value TBD by
IANA.  If the processing IPv6 node does not recognize the Option
Type it must discard the packet and return an ICMPv6 message (the
highest-order 2 bits = 10).  The Option Data of this option may
change en route to the packet's final destination (the third-
highest-order bit=1).</t>
  <t>Opt Data Len: 8-bit length of the option data.</t>
  <t>Flags: 8-bit field to indicate what TCQF Option information
follows.  The leftmost bit is called E-bit.  When E-bit set to 1,
there is a 64-bit extension in length after Cycle Id.</t>
  <t>Cycle Id: 8-bit field to indicate the time cycle ID at output port
of the upstream node when the packet is sent out. This is the
packet header field name for the data model ipv6oh[oif_cycle]
element.</t>
  <t>64-bit extension: This field contains values required for a
possible additional options, such as timestamp.  This field exists only
when E-bit in Flags field is set to one.  [Editor's Note: Text
will be modified or added as specific uses for this field are
identified]</t>
</list></t>

</section>
<section anchor="tcqf-option-processing"><name>TCQF Option Processing</name>

<t>A packet carrying the TCQF Option with Cycle Id does not change
the fundamental cyclic queuing and forwarding behaviors of TCQF over
the encapsulation independent forwarding behavior described above (<xref target="processing"/>).</t>

<t>Compared to DSCP it does not introduce a limited number of cycle-ids, and
eliminates the possible operation consideration to use multiple DSCP for
effectively a single per-hop forwarding behavior, which otherwise would
be a novel aspect that could cause issues for example with diagnostics or
other operational standards. It also allows easier extensions with other
potentially beneficial DetNet features in the same Option header.</t>

<t>As part of the packet processing of <xref target="processing"/>, the Cycle ID field
of the option heade is rewritting from tcqf.ipv6oh[oif_cycle], in the
same way as DSCP wold be rewritten from tcqf.dscp[oif_cycle].</t>

</section>
<section anchor="encapsulation-of-tcqf-option-for-deterministic-ip-dip-data-plane"><name>Encapsulation of TCQF Option for Deterministic IP (DIP) data plane</name>

<t>When used in IPv6 (<xref target="RFC8200"/>) networks, the TCQF Option can be placed in
an HbH extension header or Destination Option Header (DOH).</t>

<figure title="TCQF Option Encapsulated in HbH for Deterministic IP data plane" anchor="Fig6"><artwork><![CDATA[
+-----------------------------------+
|         DetNet IP Packet          |
+-----------------------------------+
|            other EHs              |
+-----------------------------------+
|        IPv6 Hop-by-Hop Ex Hdr     |
|         (DIP-TCQF Option)         |
+-----------------------------------+
|            IPv6 Header            |
+-----------------------------------+
|             Data-Link             |
+-----------------------------------+
|             Physical              |
+-----------------------------------+
]]></artwork></figure>

<t><xref target="Fig6"/> shows the encapsulation of TCQF option in HbH
extension header for deterministic IP (DIP）data plane.  When every DetNet forwarding node along the path
is provisioned to use TCQF as the queuing mechanism, this
option should be placed here.  If a router does not support this
option, it discards the packet and returns an ICMP message.</t>

<t>In some deployments the path selection is indicated using IPv6
routing header (RH) by specifying a set of nodes that must be
traversed by the packet along its path to the destination.  When such
a source routing mechanism is used, TCQF Option is placed in
DOH (Destination Option Header) as shown in <xref target="Fig7"/> for Deterministic IP data plane. Then the TCQF
Option will be processed by the specified in-path routers.</t>

<figure title="TCQF Option Encapsulated in DOH for Deterministic IP data plane" anchor="Fig7"><artwork><![CDATA[
+-----------------------------------+
|         DetNet IP Packet          |
+-----------------------------------+
|         other EHs including RH    |
+-----------------------------------+
|       IPv6 Destination Ex Hdr     |
|         (DIP-TCQF Option)         |
+-----------------------------------+
|            IPv6 Header            |
+-----------------------------------+
|             Data-Link             |
+-----------------------------------+
|             Physical              |
+-----------------------------------+
]]></artwork></figure>

<t>(TBD: Should and how TCQF Option be used in SRv6 ?)</t>

</section>
</section>
<section anchor="tcqf-pseudocode-normative"><name>TCQF Pseudocode (normative)</name>

<t>The following pseudocode restates the forwarding behavior of <xref target="forwarding"/>
in an algorithmic fashion as pseudocode. It uses the objects of the TCQF configuration
data model defined in <xref target="model"></xref>.</t>

<figure title="TCQF Pseudocode" anchor="FIG-Pseudocode"><artwork><![CDATA[
void receive(pak) {
  // Receive side TCQF - retrieve cycle of received packet
  // from packet internal header
  iif = pak.context.iif
  if (tcqf.if_config[iif]) { // TCQF enabled on iif
    if (tcqf_tc[iif]) {      // MPLS TCQF enabled on iif
      tc = pak.mpls_header.lse[tos].tc
      pak.context.tcqf_cycle = map_tc2cycle( tc, tcqf_tc[iif])
    } else
    if (tcqf_ipv6oh[iif]) {    // IPv6 Option Header used on iif
      cycle_id = pak.ipv6_header.tcqf_oh[cycle_id]
      pak.context.tcqf_cycle = 
        map_ipv6oh2cycle( cycle_id, tcqf_ipv6oh[iif])
    } else
    if (tcqf_dscp[iif]) {      // IP DSCP TCQF used on iif
      dscp = pak.ip_header.dscp
      pak.context.tcqf_cycle = map_dscp2cycle( dscp, tcqf_dscp[iif])
    } else // ... other encaps
  }
  forward(pak);
}

// ... Forwarding including any label stack operations

void forward(pak) {
  oif = pak.context.oif = forward_process(pak)

  if(ingres_flow_enqueue(pak))
    return // ingress packets are only enqueued here.

  if(pak.context.tcqf_cycle) // non TCQF packets cycle is 0
    if(tcqf.if_config[oif]) {    // TCQF enabled on OIF
      // Map tcqf_cycle iif to oif - encap agnostic
      cycle = pak.context.tcqf_cycle
            = map_cycle(cycle,
              tcqf.if_config[oif].cycle_map[[iif])
  
      // MPLS TC-TCQF
      if(tcqf.tc[oif]) {
        pak.mpls_header.lse[tos].tc = map_cycle2tc(cycle, tcqf_tc[oif])
      } else
      if (tcqf_ipv6oh[oif]) { // IPv6 Option Header used on iif
        pak.ipv6_header.tcqf_oh[cycle_id] =
          map_cycle2ipv6oh(cycle, tcqf_ipv6oh[oif])
      } else
      // IP DSCP TCQF enabled on iif
      if (tcqf_dscp[oif]) {
        pak.ip_header.dscp = map_cycle2dscp(cycle, tcqf_dscp[oif])
      } // else...  other future encap/tagging options for TCQF
  
      tcqf_enqueue(pak, oif.cycleq[cycle,iif])  // [3]
      return
    } else {
      // Forwarding of egress TCQF packets [1]
    }
  }
  // ... non TCQF OIF forwarding [2]
}

// Started when TCQF is enabled on an interface
// dequeues packets from oif.cycleq
// independent of encapsulation
void send_tcqf(oif) {
  cycle = 1
  cc =  tcqf.cycle_time *
        tcqf.cycle_time
  o =   tcqf.cycle_clock_offset
  nextcyclestart = floor(tnow / cc) * cc + cc + o

  while(1) {
    ingress_flow_2_tcqf(oif,cycle) // [5]
    wait_until(tnow >= nextcyclestart); // wait until next cycle
    nextcyclestart += tcqf.cycle_time
    forall(iif) {
      forall(pak = tcqf_dequeue(oif.cycleq[cycle,iif]) {
        schedule to send pak on oif before nextcyclestart; // [4]
      }
    }
    cycle = (cycle + 1) mod tcqf.cycles + 1
  }
}
]]></artwork></figure>

<t>Processing of ingress TCQF packets is performed
via ingres_flow_enqueue(pak) and
ingress_flow_2_tcqf(oif,cycle) as explained in <xref target="ingres_pseudocode"/>.</t>

<t>Packets in a cycle buffer can be sent almost arbitrarily within the time
period of the cycle. They also do not need to be sent as soon as possible,
as long as all will be sent within that period. There is no need to send them
in the order of their arrival except that packets from the same ingres
flow that end up in the same cycle must not be reordered across any number of
tcqf hops. The pseudocode describes this by using a queue oif.cycleq[cycle,iif] ([3]) for
all packets from the same iif. The pseudocode describes the oterwise
arbitrary scheduling of all packets within the cycle time via the
statement shown in [4].</t>

<t>Ingress packets are passed from their ingress queues to the next cycle queue via [5].</t>

<t>Processing of egres TCQF packets is out-of-scope. 
It can performed by any non-TCQF packet forwarding mechanism such as
some strict priority queuing in step [2], and packets could accordingly be
marked with an according packet header traffic class indicator for
such a traffic class in step [1].</t>

</section>
</section>
<section anchor="ingress"><name>TCQF Per-flow Ingress forwarding (normative)</name>

<t>Ingress flows in the context of this text
are packets of flows that enter the router from a non-TCQF interface
and need to be forwarded to an interface with TCQF.</t>

<t>In the most simple case, these packets are sent by the
source and the router is the first-hop router.
In another case, the routers ingress interface
connects to a hop where the previous router(s) did
perform a different bounded latency forwarding mechanism
than TCQF.</t>

<section anchor="ingress-flows-configuration-data-model"><name>Ingress Flows Configuration Data Model</name>

<figure title="TCQF Ingress Configuration Data Model" anchor="FIG-IData-Model"><artwork><![CDATA[
# Extends above defined tcqf
tcqf
...
| Ingress Flows, see below (TBD:
+-- iflow[flowid]
    +-- uint32 csize # in bits
]]></artwork></figure>

<t>The data model shown in <xref target="FIG-IData-Model"/> expands the tcqf data
model  from <xref target="FIG-Data-Model"/>. For every DetNet flow for which
this router is the TCQF ingress, the controller plane has to specify a maximum 
number of bits called csize (cycle size) that are permitted to 
go into each individual cycle.</t>

<t>Note, that iflow[flowid].csize is not specific to the sending
interface because it is a property of the DetNet flow.</t>

</section>
<section anchor="ingres_pseudocode"><name>Ingress Flows Pseudocode</name>

<t>When a TCQF ingress is received, it first has to be enqueued into a
per-flow queue. This is necessary because the permitted
burst size for the flow may be larger than what can fit
into a single cycle, or even into the number of cycles
used in the network.</t>

<figure title="TCQF Ingress Enqueue Pseudocode" anchor="FIG-Ingress-enqueue"><artwork><![CDATA[
bool ingres_flow_enqueue(pak) {
  if(!pak.context.tcqf_cycle &&
      flowid = match_detnetflow(pak)) {
    police(pak) // according to RFC9016 5.5
    enqueue(pak, flowq[oif][flowid])
    return true
  }
  return false
}
]]></artwork></figure>

<t>ingres_flow_enqueue(pak) as shown in <xref target="FIG-Ingress-enqueue"/>
performs this enqueuing of the packet. Its position
in the DetNet/TCQF forwarding code is shown in 
<xref target="FIG-Pseudocode"/>.</t>

<t>police(pak): If the router is not only the TCQF ingress router, but also
the first-hop router from the source, ingres_flow_enqueue(pak)
will also be the place where policing of the flows packet
according to the Traffic Specification of the flow would happen -
to ensure that packets violating the Traffic Specification
will not be forwarded, or be forwarded with lower priority
(e.g.: as best effort). This policing and resulting forwarding
action is not specific to TCQF and therefore out of scope for
this text. See <xref target="RFC9016"/>, section 5.5.</t>

<figure title="TCQF Ingress Pseudocode" anchor="FIG-Ingress-2-TCQF"><artwork><![CDATA[
void ingress_flow_2_tcqf(oif, cycle) {
  foreach flowid in flowq[oif][*] {
    free = tcqf.iflow[flowid].csize
    q = flowq[oif][flowid]
    while(notempty(q) &&
          (l = head(q).size) <= free) {
      pak = dequeue(q)
      free -= l
      tcqf_enqueue(pak, oif.cycleq[cycle,internal])
    }
  }
}
]]></artwork></figure>

<t>ingress_flow_2_tcqf(oif, cycle) as shown in
<xref target="FIG-Ingress-2-TCQF"/> transfers ingress DetNet flow
packets from their per-flow queue into the queue of the cycle
that will be sent next. The position of ingress_flow_2_tcqf() 
in the DetNet/TCQF forwarding code is shown in <xref target="FIG-Pseudocode"/>.</t>

</section>
</section>
<section anchor="implementation-deployment-operations-and-validation-considerations-informative"><name>Implementation, Deployment, Operations and Validation considerations (informative)</name>

<section anchor="solution-scope-taxonomy-and-status-for-detnet-adoption-considerations"><name>Solution Scope, Taxonomy and Status for DetNet adoption considerations</name>

<section anchor="solution-scope"><name>Solution scope</name>

<t>TCQF is proposed as a solution not standalone, but in conjunction with <xref target="I-D.eckert-detnet-flow-interleaving"/>
as a per-flow mechanism to be used on the ingress TCQF router to allow more flexible per-flow management
of admission of flow bursts into cycles than presented in this document. The reason for splitting up
the proposal into two documents is because <xref target="I-D.eckert-detnet-flow-interleaving"/> can be combined
with all "mostly-synchronous" per-hop mechanisms, for example beyong TCQF also (of course) CQF and
GLBF (<xref target="I-D.eckert-detnet-glbf"/>.</t>

</section>
<section anchor="taxonomy"><name>Taxonomy</name>

<t>Using the section number/titles of the taxonomy document
<xref target="I-D.ietf-detnet-dataplane-taxonomy"/> the TCQF technology
can be classified as follows.</t>

<t><list style="symbols">
  <t>4.1 Per Hop Dominant Factor for Latency Bound  <vspace blankLines='1'/>
The per-hop dominan latency bound is Category 3. The per-hop latency for each
class is determined by the cycle size, which has to be determined by the
sum of burst sizes required by the flows. This burst can be split up across
multiple cycles by the mechanisms described in <xref target="I-D.eckert-detnet-flow-interleaving"/>
for flows whose rate is low enough that they do not need resources in every cycle.</t>
  <t>5.1 Periodicity  <vspace blankLines='1'/>
TCQF is Periodic, however, by using tagging it reduces the required synchronization
across the network (using CQF as a reference) by potentially a factor of 100 or
more, allowing to use the same or even less stringent clock synchronization at 100 times
or more speedup versus current CQF networks.</t>
  <t>5.2.  Traffic Granularity  <vspace blankLines='1'/>
TCQF has Class level granularity. In its current form, this draft only describes operation
for a single cycle class, but it can easily be extended to use multiple classes. In addition,
additional differentiation into more classes can happen at the ingress edge through
<xref target="I-D.eckert-detnet-flow-interleaving"/>. However, those additional options do not increase
the amount of per-hop state in the TCQF network, that will stay limited to the cycle states
required for the per-hop classes (e.g.: just one class now). Hence TCQF maintains minimal
state per-hop.</t>
  <t>5.3.  Time Bounds  <vspace blankLines='1'/>
TCQF is Bounded (Left and Right bounded) as determind by the time in which the cycle the packet is
in is sent. In result, The total end-to-end jitter of a packet is limited to the 
cycle time deployed, as is the per-hop jitter.</t>
  <t>5.4 Service Order  <vspace blankLines='1'/>
TCQF service order is solely arrival based.</t>
  <t><list style="numbers">
      <t>Suitable Categories for DetNet</t>
    </list>
TCQF is "6.3.  Class level periodic bounded category" according to the categorization.</t>
</list></t>

</section>
<section anchor="status"><name>Status</name>

<t>TCQF has a high-speed (100Gbps interface) ASIC/FPGA implementation which was deployed and
tested by an academic network test organization, a test report is in <xref target="CENI"/>. There is
also a large-scale simulation of the algorithm/mechanisms and results presented at a
peer reviewed academic conference, see <xref target="LDN"/>.</t>

</section>
</section>
<section anchor="high-speed-implementation"><name>High-Speed Implementation</name>

<t>High-speed implementations with programmable forwarding planes of TCQF
packet forwarding require Time-Gated Queues for the cycle queues,
such as introduced by <xref target="IEEE802.1Qbv"/> and also employed in CQF <xref target="IEEE802.1Qch"/>.</t>

<t>Compared to CQF, the accuracy of clock synchronization across the nodes
is reduced as explained in <xref target="calculation"/> below.</t>

<t>High-speed forwarding for ingress packets as specified in <xref target="ingress"/>
above would require to pass packets first into a per-flow queue and
then re-queue them into a cycle queue. This is not ideal for
high speed implementations.  The pseudocode for ingres_flow_enqueue()
and ingress_flow_2_tcqf(), like the rest of the pseudocode in this
document is only meant to serve as the most compact and hopefully
most easy to read specification of the desired externally observable
behavior of TCQF - but not as a guidance for implementation, especially not
for high-speed forwarding planes.</t>

<t>High-speed forward could be implemented with single-enqueueing into
cycle queues as follows:</t>

<t>Let B[f] be the maximum amount of data that the router would need to
buffer for ingress flow f at any point in time. This can be calculated
from the flows Traffic Specification. For example, when using the
parameters of <xref target="RFC9016"/>, section 5.5.</t>

<figure><artwork><![CDATA[
B[f] <= MaxPacketsPerInterval*MaxPayloadSize*8

maxcycles = max( ceil( B[f] / tcqf.iflow[f].csize) | f)
]]></artwork></figure>

<t>Maxcycles is the maximum number of cycles required so that packets
from all ingress flows can be directly enqueued into maxcycles queues.
The router would then not cycle across tcqf.cycles number of queues,
but across maxcycles number of queues, but still cycling across tcqf.cycles
number of cycle tags.</t>

<t>Calculation of B[f] and in result maxcycles may further be refined (lowered)
by additionally known constraints such as the bitrates of the ingress interface(s)
and TCQF output interface(s).</t>

</section>
<section anchor="calculation"><name>Controller plane computation of cycle mappings</name>

<t>The cycle mapping is computed by the controller plane by taking at minimum
the link, interface serialization and node internal forwarding latencies as well
as the cycle_clock_offsets into account.</t>

<figure title="Calculation reference" anchor="Calc1"><artwork><![CDATA[
Router  . O1
 R1     . | cycle 1 | cycle 2 | cycle 3 | cycle 1 |
        .    .
        .     ............... Delay D
        .                    .
        .                    O1'
        .                     | cycle 1 |
Router  .   | cycle 1 | cycle 2 | cycle 3 | cycle 1 |
  R2    .   O2

CT  = cycle_time
C   = cycles
CC  = CT * C
O1  = cycle_clock_offset router R1, interface towards R2
O2  = cycle_clock_offset router R2, output interface of interest
O1' = O1 + D
]]></artwork></figure>

<t>Consider in <xref target="Calc1"/> that Router R1 sends packets via C = 3 cycles with a
cycle_clock offset of O1 towards Router R2. These packets arrive
at R2 with a cycle_clock offset of O1' which includes through D all latencies
incurred between releasing a packet on R1 from the cycle buffer until
it can be put into a cycle buffer on R2: serialization delay on R1,
link delay, non_CQF delays in R1 and R2, especially forwarding in
R2, potentially across an internal fabric to the output interface
with the sending cycle buffers.</t>

<figure title="Calculating cycle mapping" anchor="Calc2"><artwork><![CDATA[
A = ( ceil( ( O1' - O2 ) / CT) + C + 1) mod CC
map(i) = (i - 1 + A) mod C + 1
]]></artwork></figure>

<t><xref target="Calc2"/> shows a formula to calculate the cycle mapping between
R1 and R2, using the first available cycle on R2. In the example
of <xref target="Calc1"/> with CT = 1, (O1' - O2) =~ 1.8, A will be 0, resulting
in map(1) to be 1, map(2) to be 2 and map(3) to be 3.</t>

<t>The offset "C" for the calculation of A is included so that
a negative (O1 - O2) will still lead to a positive A.</t>

<t>In general, D will be variable [Dmin...Dmax], for example because
of differences in serialization latency between min and max size
packets, variable link latency because of temperature based length
variations, link-layer variability (radio links) or in-router
processing variability. In addition, D also needs to account for the
drift between the synchronized clocks for R1 and R2. This
is called the Maximum Time Interval Error (MTIE).</t>

<t>Let A(d) be A where O1' is calculated with D = d. To account for
the variability of latency and clock synchronization, map(i) has to
be calculated with A(Dmax), and the controller plane needs to
ensure that that A(Dmin)...A(Dmax) does cover at most (C - 1) cycles.</t>

<t>If it does cover C cycles, then C and/or CT are chosen too small,
and the controller plane needs to use larger numbers for either.</t>

<t>This (C - 1) limitation is based on the understanding that there is only
one buffer for each cycle, so a cycle cannot receive packets
when it is sending packets. While this could be changed by
using double buffers, this would create additional implementation
complexity and not solve the limitation for all cases, because
the number of cycles to cover [Dmin...Dmax] could also be (C + 1)
or larger, in which case a tag of 1...C would not suffice.</t>

</section>
<section anchor="link-speed-and-bandwidth-sharing"><name>Link speed and bandwidth sharing</name>

<t>TCQF hops along a path do not need to have the same bitrate, they
just need to use the same cycle time. The controller plane has to then
be able to take the TCQF capacity of each hop into account when
admitting flows based on their Traffic Specification and TCQF csize.</t>

<t>TCQF does not require to be allocated 100% of the
link bitrate. When TCQF has to share a link with other traffic
classes, queuing just has to be set up to ensure that all
data of a TCQF cycle buffer can be sent within the TCQF
cycle time. For example by making the TCQF cycle queues the
highest priority queues and then limiting their capacity through
admission control to leave time for other queues to be served
as well.</t>

</section>
<section anchor="controller-plane-considerations"><name>Controller-plane considerations</name>

<t>TCQF is applicable to both centralized as well as decentralized/distributed
controller-plane models. From the perspective of the controller plane. If
the controller-plane is centralized, then it is logically very simple to
perform admission control for any additional flow by checking that there
is sufficient bandwidth for the amount of bits required for the flow on
every cycle along the intended path. Likewise, path computation can be
done to determine on which non-shortest path those resources are available.</t>

<t>More efficient use of resources can be achieved by considering that flows
with low bit rates would not need bits reserved in every cycle, but only in
every N'th cyce. This requires different gates on ingres to admit packets
from such flows than shown in this document and more complex admission control
that attempts for example to interleave multiple flows across different
set of cycles to as best as possible utilize all cycles. This is the same
complexity as possible in TSN technologies. Beside the admission control
and different ingres policing, such enhancements have no impact on the
per-hop TCQF forwarding and can thus potentially be added incrementally.</t>

<t>Decentralized or distributed controller planes including on-path, per-flow
signaling, such as one using the mechanisms of RSVP-TE, <xref target="RFC3209"/> is
equally feasible with TCQF. In this case one of the potential benefits of TCQ is not
leveraged, which is the complete removal of per-hop,per-flow awarenes on
each router. Nevertheless, the controller-plane only introduces the need
for this state maintenance into the control-plane of each router, but
does not change the TCQF forwarding plane, but maintains its per-hop, per-flow
non-stateful nature and resulting performance/cost benefits.</t>

</section>
<section anchor="validation"><name>Validation</name>

<t><xref target="LDN"/> describes an accurate simualtion based validation of TCQF 
and provides further details on the mathematical models.</t>

<t><xref target="CENI"/> is a report summary of a
100Gbps link speed commercial router validation implementation of TCQF deployed and measured in a research
testbed with a range of up to 2000km across China, operated by the China Environment for Network Innovations (CENI).
The report also provides a reference to a more detailled version of the report. Note that both reports are in chinese. 
TCQF is called DIP in these reports.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>TBD.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document defines a new TCQF-Variant Option for the “Destination
Options and Hop-by-Hop Options” under the “Internet Protocol Version
6 (IPv6) Parameters” registry <xref target="IPV6-PARMS"/> with the suggested values
in <xref target="Fig9"/>.</t>

<figure title="TCQF Option Code in Destination Options and Hop-by-Hop Options" anchor="Fig9"><artwork><![CDATA[
+------+-----+-----+-------+--------------------+-------------+
| Hexa | act | chg | rest  | Description        | Reference   |
+------+-----+-----+-------+--------------------+-------------+
| 0xB1 | 10  | 1   | 10001 | TCQF Option        |this document|
+------+-----+-----+-------+--------------------+-------------+
]]></artwork></figure>

</section>
<section anchor="acknowledgement"><name>Acknowledgement</name>

<t>Many thanks for review by David Black (DetNet techadvisor).
Thanks to Xiaoliang Zheng and Fan Yang for their input to the TCQF option format.
They where initially listed as co-authors for draft-yizhou-detnet-ipv6-options-for-cqf-variant,
which was merged into.</t>

</section>
<section anchor="changelog"><name>Changelog</name>

<t>[RFC-editor: please remove]</t>

<t>Initial draft name: draft-eckert-detnet-mpls-tc-tcqf</t>

<t>00</t>

<t>Initial version</t>

<t>01</t>

<t>Added new co-author.</t>

<t>Changed Data Model to "Configuration Data Model",</t>

<t>and changed syntax from YANG tree to a non-YANG tree, removed empty section
targeted for YANG model. Reason: the configuration parameters that we need
to specify the forwarding behavior is only a subset of what likely would
be a good YANG model, and any work to define such a YANG model not necessary
to specify the algorithm would be scope creep for this specification. Better
done in a separate YANG document. 
Example additional YANG aspects for such a document are
how to map parameters to configuration/operational space, what additional
operational/monitoring parameter to support and how to map the
YANG objects required into various pre-existing YANG trees.</t>

<t>Improved text in forwarding section, simplified sentences, used simplified
configuration data model.</t>

<t>02</t>

<t>Refresh</t>

<t>03</t>

<t>Added ingress processing, and further implementation considerations.</t>

<t>New draft name: draft-eckert-detnet-tcqf</t>

<t>00</t>

<t>Added text for DSCP based tagging of IP/IPv6 packets, therefore changing the
original, MPLS-only centric scope of the document, necessitating a change
in name and title.</t>

<t>This was triggered by the observation of David Black at the IETF114 DetNet
meeting that with DetNet domains being single administrative domains, it
is not necessary to have standardized (cross administrative domain) DSCP
for the tagging of IP/IP6 packets for TCQF. Instead it is sufficient
to use EXP/LU DSCP code space and assignment of these is a local matter
of a domain as is that of TC values when MPLS is used. Standardized DSCP
in the other hand would have required likely work/oversight by TSVWG.</t>

<t>In any case, the authors feel that with this insight, there is no need to
constrain single-domain definition of TCQF to only MPLS, but instead both
MPLS and IP/IPv6 tagging can be easily specified in this one draft.</t>

<t>01</t>

<t>Added new co-author.</t>

<t>02</t>

<t>Attempt to resolve issues from https://github.com/toerless/detnet/issues/1.</t>

<t><list style="symbols">
  <t>Review from David Black, refine queueing/scheduling of pseudocode/explanation to highlight the non-sequential requirements.</t>
  <t>Comment from Lou Berger re. applicability of controller-plane resulting in new section about controller-plane.</t>
  <t>Reference to CENI chinese validation deployment.</t>
</list></t>

<t>03</t>

<t>Merged draft with draft-yizhou-detnet-ipv6-options-for-cqf-variant-02.</t>

<t>Changed specification to be independent of encapsulation/forwarding plane and moved MPLS and IP/DSCP (from old TCQF draft) and IPv6 with extension header into separate seconds.</t>

<t>Human translation of CENI report, uploaded CENI report with permission from CENI onto web page accessible from outside chinese firewall.</t>

<t>04</t>

<t>Added appendix sections on comparison with CSQF and multi class TCQF</t>

<t>05</t>

<t>Refresh.</t>

<t>06</t>

<t>Refresh.</t>

<t>07</t>

<t>Refresh - still waiting for more discuss of direction in detnet WG.</t>

<t>08</t>

<t>Refresh - still waiting for more discuss of direction in detnet WG.</t>

<t>09</t>

<t>Added section "Solution Scope, Taxonomy and Status for DetNet adoption considerations",
made <xref target="I-D.eckert-detnet-flow-interleaving"/> normative and claim it to be part of the
overall solution.</t>

<t>10, 11</t>

<t>Moved Xiaoliang Zheng and Fan Yang into acknowledgement section. 
Explanation: They where initially listed as co-authors for draft-yizhou-detnet-ipv6-options-for-cqf-variant
which was merged into draft-eckert-detnet-tcqf and at that point in time the
list of authors was simply merged. As part of preparing for possible adoption of
draft-eckert-detnet-tcqf we revisited the amount of participation of the listed
authors and concluded, that the input from Xiaoliang Zheng and Fan Yang
was best met by giving them acknowledgment also noting that they have not
been active in the IETF DetNet work itself.</t>

<t>IETF adopted draft name: draft-ietf-detnet-tcqf</t>

<t>00 Initial version</t>

<t>01 Just refresh. Ran out of time incorporating outstanding feedback before IETF126. Sorry.
   Will get to it within a month.</t>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC2474">
  <front>
    <title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
    <author fullname="K. Nichols" initials="K." surname="Nichols"/>
    <author fullname="S. Blake" initials="S." surname="Blake"/>
    <author fullname="F. Baker" initials="F." surname="Baker"/>
    <author fullname="D. Black" initials="D." surname="Black"/>
    <date month="December" year="1998"/>
    <abstract>
      <t>This document defines the IP header field, called the DS (for differentiated services) field. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2474"/>
  <seriesInfo name="DOI" value="10.17487/RFC2474"/>
</reference>

<reference anchor="RFC3270">
  <front>
    <title>Multi-Protocol Label Switching (MPLS) Support of Differentiated Services</title>
    <author fullname="F. Le Faucheur" initials="F." role="editor" surname="Le Faucheur"/>
    <author fullname="L. Wu" initials="L." surname="Wu"/>
    <author fullname="B. Davie" initials="B." surname="Davie"/>
    <author fullname="S. Davari" initials="S." surname="Davari"/>
    <author fullname="P. Vaananen" initials="P." surname="Vaananen"/>
    <author fullname="R. Krishnan" initials="R." surname="Krishnan"/>
    <author fullname="P. Cheval" initials="P." surname="Cheval"/>
    <author fullname="J. Heinanen" initials="J." surname="Heinanen"/>
    <date month="May" year="2002"/>
    <abstract>
      <t>This document defines a flexible solution for support of Differentiated Services (Diff-Serv) over Multi-Protocol Label Switching (MPLS) networks. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3270"/>
  <seriesInfo name="DOI" value="10.17487/RFC3270"/>
</reference>

<reference anchor="RFC8655">
  <front>
    <title>Deterministic Networking Architecture</title>
    <author fullname="N. Finn" initials="N." surname="Finn"/>
    <author fullname="P. Thubert" initials="P." surname="Thubert"/>
    <author fullname="B. Varga" initials="B." surname="Varga"/>
    <author fullname="J. Farkas" initials="J." surname="Farkas"/>
    <date month="October" year="2019"/>
    <abstract>
      <t>This document provides the overall architecture for Deterministic Networking (DetNet), which provides a capability to carry specified unicast or multicast data flows for real-time applications with extremely low data loss rates and bounded latency within a network domain. Techniques used include 1) reserving data-plane resources for individual (or aggregated) DetNet flows in some or all of the intermediate nodes along the path of the flow, 2) providing explicit routes for DetNet flows that do not immediately change with the network topology, and 3) distributing data from DetNet flow packets over time and/or space to ensure delivery of each packet's data in spite of the loss of a path. DetNet operates at the IP layer and delivers service over lower-layer technologies such as MPLS and Time- Sensitive Networking (TSN) as defined by IEEE 802.1.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8655"/>
  <seriesInfo name="DOI" value="10.17487/RFC8655"/>
</reference>

<reference anchor="RFC8200">
  <front>
    <title>Internet Protocol, Version 6 (IPv6) Specification</title>
    <author fullname="S. Deering" initials="S." surname="Deering"/>
    <author fullname="R. Hinden" initials="R." surname="Hinden"/>
    <date month="July" year="2017"/>
    <abstract>
      <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="86"/>
  <seriesInfo name="RFC" value="8200"/>
  <seriesInfo name="DOI" value="10.17487/RFC8200"/>
</reference>

<reference anchor="RFC8964">
  <front>
    <title>Deterministic Networking (DetNet) Data Plane: MPLS</title>
    <author fullname="B. Varga" initials="B." role="editor" surname="Varga"/>
    <author fullname="J. Farkas" initials="J." surname="Farkas"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="A. Malis" initials="A." surname="Malis"/>
    <author fullname="S. Bryant" initials="S." surname="Bryant"/>
    <author fullname="J. Korhonen" initials="J." surname="Korhonen"/>
    <date month="January" year="2021"/>
    <abstract>
      <t>This document specifies the Deterministic Networking (DetNet) data plane when operating over an MPLS Packet Switched Network. It leverages existing pseudowire (PW) encapsulations and MPLS Traffic Engineering (MPLS-TE) encapsulations and mechanisms. This document builds on the DetNet architecture and data plane framework.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8964"/>
  <seriesInfo name="DOI" value="10.17487/RFC8964"/>
</reference>


<reference anchor="I-D.eckert-detnet-flow-interleaving">
   <front>
      <title>Deterministic Networking (DetNet) Data Plane - Flow interleaving for scaling detnet data planes with minimal end-to-end latency and large number of flows.</title>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies USA</organization>
      </author>
      <date day="7" month="July" year="2025"/>
      <abstract>
	 <t>   This memo explain requirements, benefits and feasibility of a new
   DetNet service function tentatively called &quot;flow interleaving&quot;.  It
   proposes to introduce this service function into the DetNet
   architecture.

   Flow interleaving can be understood as a DetNet equivalent of the
   IEEE TSN timed gates.  Its primary role is intended to be at the
   ingress edge of DetNet domains supporting higher utilization and
   lower bounded latency for flow aggregation (interleaving of flows
   into a single flow), as well as higher utilization and lower bounded
   latency for interleaving occurring in transit hops of the DetNet
   domain in conjunction with in-time per-hop bounded latency forwarding
   mechanisms.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-eckert-detnet-flow-interleaving-03"/>
   
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC3209">
  <front>
    <title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
    <author fullname="D. Awduche" initials="D." surname="Awduche"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="D. Gan" initials="D." surname="Gan"/>
    <author fullname="T. Li" initials="T." surname="Li"/>
    <author fullname="V. Srinivasan" initials="V." surname="Srinivasan"/>
    <author fullname="G. Swallow" initials="G." surname="Swallow"/>
    <date month="December" year="2001"/>
    <abstract>
      <t>This document describes the use of RSVP (Resource Reservation Protocol), including all the necessary extensions, to establish label-switched paths (LSPs) in MPLS (Multi-Protocol Label Switching). Since the flow along an LSP is completely identified by the label applied at the ingress node of the path, these paths may be treated as tunnels. A key application of LSP tunnels is traffic engineering with MPLS as specified in RFC 2702. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3209"/>
  <seriesInfo name="DOI" value="10.17487/RFC3209"/>
</reference>

<reference anchor="RFC4875">
  <front>
    <title>Extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE Label Switched Paths (LSPs)</title>
    <author fullname="R. Aggarwal" initials="R." role="editor" surname="Aggarwal"/>
    <author fullname="D. Papadimitriou" initials="D." role="editor" surname="Papadimitriou"/>
    <author fullname="S. Yasukawa" initials="S." role="editor" surname="Yasukawa"/>
    <date month="May" year="2007"/>
    <abstract>
      <t>This document describes extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for the set up of Traffic Engineered (TE) point-to-multipoint (P2MP) Label Switched Paths (LSPs) in Multi- Protocol Label Switching (MPLS) and Generalized MPLS (GMPLS) networks. The solution relies on RSVP-TE without requiring a multicast routing protocol in the Service Provider core. Protocol elements and procedures for this solution are described.</t>
      <t>There can be various applications for P2MP TE LSPs such as IP multicast. Specification of how such applications will use a P2MP TE LSP is outside the scope of this document. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4875"/>
  <seriesInfo name="DOI" value="10.17487/RFC4875"/>
</reference>

<reference anchor="RFC8296">
  <front>
    <title>Encapsulation for Bit Index Explicit Replication (BIER) in MPLS and Non-MPLS Networks</title>
    <author fullname="IJ. Wijnands" initials="IJ." role="editor" surname="Wijnands"/>
    <author fullname="E. Rosen" initials="E." role="editor" surname="Rosen"/>
    <author fullname="A. Dolganow" initials="A." surname="Dolganow"/>
    <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
    <author fullname="S. Aldrin" initials="S." surname="Aldrin"/>
    <author fullname="I. Meilik" initials="I." surname="Meilik"/>
    <date month="January" year="2018"/>
    <abstract>
      <t>Bit Index Explicit Replication (BIER) is an architecture that provides optimal multicast forwarding through a "multicast domain", without requiring intermediate routers to maintain any per-flow state or to engage in an explicit tree-building protocol. When a multicast data packet enters the domain, the ingress router determines the set of egress routers to which the packet needs to be sent. The ingress router then encapsulates the packet in a BIER header. The BIER header contains a bit string in which each bit represents exactly one egress router in the domain; to forward the packet to a given set of egress routers, the bits corresponding to those routers are set in the BIER header. The details of the encapsulation depend on the type of network used to realize the multicast domain. This document specifies a BIER encapsulation that can be used in an MPLS network or, with slight differences, in a non-MPLS network.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8296"/>
  <seriesInfo name="DOI" value="10.17487/RFC8296"/>
</reference>

<reference anchor="RFC8402">
  <front>
    <title>Segment Routing Architecture</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
    <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
    <author fullname="B. Decraene" initials="B." surname="Decraene"/>
    <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
    <author fullname="R. Shakir" initials="R." surname="Shakir"/>
    <date month="July" year="2018"/>
    <abstract>
      <t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
      <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
      <t>SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8402"/>
  <seriesInfo name="DOI" value="10.17487/RFC8402"/>
</reference>

<reference anchor="RFC8938">
  <front>
    <title>Deterministic Networking (DetNet) Data Plane Framework</title>
    <author fullname="B. Varga" initials="B." role="editor" surname="Varga"/>
    <author fullname="J. Farkas" initials="J." surname="Farkas"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="A. Malis" initials="A." surname="Malis"/>
    <author fullname="S. Bryant" initials="S." surname="Bryant"/>
    <date month="November" year="2020"/>
    <abstract>
      <t>This document provides an overall framework for the Deterministic Networking (DetNet) data plane. It covers concepts and considerations that are generally common to any DetNet data plane specification. It describes related Controller Plane considerations as well.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8938"/>
  <seriesInfo name="DOI" value="10.17487/RFC8938"/>
</reference>

<reference anchor="RFC8986">
  <front>
    <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="P. Camarillo" initials="P." role="editor" surname="Camarillo"/>
    <author fullname="J. Leddy" initials="J." surname="Leddy"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
    <author fullname="Z. Li" initials="Z." surname="Li"/>
    <date month="February" year="2021"/>
    <abstract>
      <t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t>
      <t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t>
      <t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8986"/>
  <seriesInfo name="DOI" value="10.17487/RFC8986"/>
</reference>

<reference anchor="RFC9016">
  <front>
    <title>Flow and Service Information Model for Deterministic Networking (DetNet)</title>
    <author fullname="B. Varga" initials="B." surname="Varga"/>
    <author fullname="J. Farkas" initials="J." surname="Farkas"/>
    <author fullname="R. Cummings" initials="R." surname="Cummings"/>
    <author fullname="Y. Jiang" initials="Y." surname="Jiang"/>
    <author fullname="D. Fedyk" initials="D." surname="Fedyk"/>
    <date month="March" year="2021"/>
    <abstract>
      <t>This document describes the flow and service information model for Deterministic Networking (DetNet). These models are defined for IP and MPLS DetNet data planes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9016"/>
  <seriesInfo name="DOI" value="10.17487/RFC9016"/>
</reference>

<reference anchor="RFC9320">
  <front>
    <title>Deterministic Networking (DetNet) Bounded Latency</title>
    <author fullname="N. Finn" initials="N." surname="Finn"/>
    <author fullname="J.-Y. Le Boudec" initials="J.-Y." surname="Le Boudec"/>
    <author fullname="E. Mohammadpour" initials="E." surname="Mohammadpour"/>
    <author fullname="J. Zhang" initials="J." surname="Zhang"/>
    <author fullname="B. Varga" initials="B." surname="Varga"/>
    <date month="November" year="2022"/>
    <abstract>
      <t>This document presents a timing model for sources, destinations, and Deterministic Networking (DetNet) transit nodes. Using the model, it provides a methodology to compute end-to-end latency and backlog bounds for various queuing methods. The methodology can be used by the management and control planes and by resource reservation algorithms to provide bounded latency and zero congestion loss for the DetNet service.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9320"/>
  <seriesInfo name="DOI" value="10.17487/RFC9320"/>
</reference>


<reference anchor="I-D.ietf-detnet-dataplane-taxonomy">
   <front>
      <title>Dataplane Enhancement Taxonomy</title>
      <author fullname="Jinoo Joung" initials="J." surname="Joung">
         <organization>Sangmyung University</organization>
      </author>
      <author fullname="Xuesong Geng" initials="X." surname="Geng">
         <organization>Huawei</organization>
      </author>
      <author fullname="Shaofu Peng" initials="S." surname="Peng">
         <organization>ZTE Corporation</organization>
      </author>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies</organization>
      </author>
      <date day="4" month="July" year="2026"/>
      <abstract>
	 <t>   This draft is to facilitate the understanding of the data plane
   enhancement solutions, which are suggested currently or can be
   suggested in the future, for deterministic networking.  This draft
   provides criteria for classifying data plane solutions.  Examples of
   each category are listed, along with reasons where necessary.
   Strengths and limitations of the categories are described.
   Suitability of the solutions for various services of deterministic
   networking are also mentioned.  Reference topologies for evaluation
   of the solutions are given as well.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-detnet-dataplane-taxonomy-06"/>
   
</reference>


<reference anchor="I-D.ietf-bier-te-arch">
   <front>
      <title>Tree Engineering for Bit Index Explicit Replication (BIER-TE)</title>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies Inc.</organization>
      </author>
      <author fullname="Michael Menth" initials="M." surname="Menth">
         <organization>University of Tuebingen</organization>
      </author>
      <author fullname="Gregory Cauchie" initials="G." surname="Cauchie">
         <organization>KOEVOO</organization>
      </author>
      <date day="25" month="April" year="2022"/>
      <abstract>
	 <t>This memo describes per-packet stateless strict and loose path steered replication and forwarding for &quot;Bit Index Explicit Replication&quot; (BIER) packets (RFC 8279); it is called &quot;Tree Engineering for Bit Index Explicit Replication&quot; (BIER-TE) and is intended to be used as the path steering mechanism for Traffic Engineering with BIER.

 BIER-TE introduces a new semantic for &quot;bit positions&quot; (BPs). These BPs indicate adjacencies of the network topology, as opposed to (non-TE) BIER in which BPs indicate &quot;Bit-Forwarding Egress Routers&quot; (BFERs). A BIER-TE &quot;packets BitString&quot; therefore indicates the edges of the (loop-free) tree across which the packets are forwarded by BIER-TE. BIER-TE can leverage BIER forwarding engines with little changes. Co-existence of BIER and BIER-TE forwarding in the same domain is possible -- for example, by using separate BIER &quot;subdomains&quot; (SDs). Except for the optional routed adjacencies, BIER-TE does not require a BIER routing underlay and can therefore operate without depending on a routing protocol such as the &quot;Interior Gateway Protocol&quot; (IGP).
	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-bier-te-arch-13"/>
   
</reference>


<reference anchor="I-D.eckert-detnet-bounded-latency-problems">
   <front>
      <title>Problems with existing DetNet bounded latency queuing mechanisms</title>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies USA</organization>
      </author>
      <author fullname="Stewart Bryant" initials="S." surname="Bryant">
         <organization>Stewart Bryant Ltd</organization>
      </author>
      <date day="12" month="July" year="2021"/>
      <abstract>
	 <t>   The purpose of this memo is to explain the challenges and limitations
   of existing (standardized) bounded latency queuing mechanisms for
   desirable (large scale) MPLS and/or IP based networks to allow them
   to support DetNet services.  These challenges relate to low-cost,
   high-speed hardware implementations, desirable network design
   approaches, system complexity, reliability, scalability, cost of
   signaling, performance and jitter experience for the DetNet
   applications.  Many of these problems are rooted in the use of per-
   hop, per-flow (DetNet) forwarding and queuing state, but highly
   accurate network wide time synchronization can be another challenge
   for some networks.

   This memo does not intend to propose a specific queuing solution, but
   in the same way in which it describes the challenges of mechanisms,
   it reviews how those problem are addressed by currently proposed new
   queuing mechanisms.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-eckert-detnet-bounded-latency-problems-00"/>
   
</reference>


<reference anchor="I-D.qiang-detnet-large-scale-detnet">
   <front>
      <title>Large-Scale Deterministic IP Network</title>
      <author fullname="Li Qiang" initials="L." surname="Qiang">
         <organization>Huawei</organization>
      </author>
      <author fullname="Xuesong Geng" initials="X." surname="Geng">
         <organization>Huawei</organization>
      </author>
      <author fullname="Bingyang Liu" initials="B." surname="Liu">
         <organization>Huawei</organization>
      </author>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Huawei</organization>
      </author>
      <author fullname="Liang Geng" initials="L." surname="Geng">
         <organization>China Mobile</organization>
      </author>
      <author fullname="Guangpeng Li" initials="G." surname="Li">
         </author>
      <date day="2" month="September" year="2019"/>
      <abstract>
	 <t>   This document presents the overall framework and key method for
   Large-scale Deterministic Network (LDN).  LDN can provide bounded
   latency and delay variation (jitter) without requiring precise time
   synchronization among nodes, or per-flow state in transit nodes.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-qiang-detnet-large-scale-detnet-05"/>
   
</reference>


<reference anchor="I-D.dang-queuing-with-multiple-cyclic-buffers">
   <front>
      <title>A Queuing Mechanism with Multiple Cyclic Buffers</title>
      <author fullname="Bingyang Liu" initials="B." surname="Liu">
         <organization>Huawei</organization>
      </author>
      <author fullname="Joanna Dang" initials="J." surname="Dang">
         <organization>Huawei</organization>
      </author>
      <date day="22" month="February" year="2021"/>
      <abstract>
	 <t>   This document presents a queuing mechanism with multiple cyclic
   buffers.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-dang-queuing-with-multiple-cyclic-buffers-00"/>
   
</reference>


<reference anchor="I-D.chen-detnet-sr-based-bounded-latency">
   <front>
      <title>Segment Routing (SR) Based Bounded Latency</title>
      <author fullname="Mach Chen" initials="M." surname="Chen">
         <organization>Huawei</organization>
      </author>
      <author fullname="Xuesong Geng" initials="X." surname="Geng">
         <organization>Huawei</organization>
      </author>
      <author fullname="Zhenqiang Li" initials="Z." surname="Li">
         <organization>China Mobile</organization>
      </author>
      <author fullname="Jinoo Joung" initials="J." surname="Joung">
         <organization>Sangmyung University</organization>
      </author>
      <author fullname="Jeong-dong Ryoo" initials="J." surname="Ryoo">
         <organization>ETRI</organization>
      </author>
      <date day="7" month="July" year="2023"/>
      <abstract>
	 <t>   One of the goals of DetNet is to provide bounded end-to-end latency
   for critical flows.  This document defines how to leverage Segment
   Routing (SR) to implement bounded latency.  Specifically, the SR
   Identifier (SID) is used to specify transmission time (cycles) of a
   packet.  When forwarding devices along the path follow the
   instructions carried in the packet, the bounded latency is achieved.
   This is called Cycle Specified Queuing and Forwarding (CSQF) in this
   document.

   Since SR is a source routing technology, no per-flow state is
   maintained at intermediate and egress nodes, SR-based CSQF naturally
   supports flow aggregation that is deemed to be a key capability to
   allow DetNet to scale to large networks.


	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-chen-detnet-sr-based-bounded-latency-03"/>
   
</reference>


<reference anchor="I-D.eckert-detnet-glbf">
   <front>
      <title>Deterministic Networking (DetNet) Data Plane - guaranteed Latency Based Forwarding (gLBF) for bounded latency with low jitter and asynchronous forwarding in Deterministic Networks</title>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies USA</organization>
      </author>
      <author fullname="Alexander Clemm" initials="A." surname="Clemm">
         <organization>Sympotech</organization>
      </author>
      <author fullname="Stewart Bryant" initials="S." surname="Bryant">
         <organization>Independent</organization>
      </author>
      <author fullname="Stefan Hommes" initials="S." surname="Hommes">
         <organization>ZF Friedrichshafen AG</organization>
      </author>
      <date day="11" month="December" year="2025"/>
      <abstract>
	 <t>   This memo proposes a mechanism called &quot;guaranteed Latency Based
   Forwarding&quot; (gLBF) as part of DetNet for hop-by-hop packet forwarding
   with per-hop deterministically bounded latency and minimal jitter.

   gLBF is intended to be useful across a wide range of networks and
   applications with need for high-precision deterministic networking
   services, including in-car networks or networks used for industrial
   automation across on factory floors, all the way to ++100Gbps
   country-wide networks.

   Contrary to other mechanisms, gLBF does not require network wide
   clock synchronization, nor does it need to maintain per-flow state at
   network nodes, avoiding drawbacks of other known methods while
   leveraging their advantages.

   Specifically, gLBF uses the queuing model and calculus of Urgency
   Based Scheduling (UBS, [UBS]), which is used by TSN Asynchronous
   Traffic Shaping [TSN-ATS]. gLBF is intended to be a plug-in
   replacement for TSN-ATN or as a parallel mechanism beside TSN-ATS
   because it allows to keeping the same controller-plane design which
   is selecting paths for TSN-ATS, sizing TSN-ATS queues, calculating
   latencies and admitting flows to calculated paths for calculated
   latencies.

   In addition to reducing the jitter compared to TSN-ATS by additional
   buffering (dampening) in the network, gLBF also eliminates the need
   for per-flow, per-hop state maintenance required by TSN-ATS.  This
   avoids the need to signal per-flow state to every hop from the
   controller-plane and associated scaling problems.  It also reduces
   implementation cost for high-speed networking hardware due to the
   avoidance of additional high-speed speed read/write memory access to
   retrieve, process and update per-flow state variables for a large
   number of flows.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-eckert-detnet-glbf-07"/>
   
</reference>


<reference anchor="CENI" target="https://raw.githubusercontent.com/network2030/publications/main/CENI_DIP_Networking_Test_Report.pdf">
  <front>
    <title>CENI DIP Networking Test Report</title>
    <author >
      <organization>China Environment for Network Innovations (CENI)</organization>
    </author>
    <date year="2020"/>
  </front>
<annotation>Translated with permission from chinese version at: https://ceni.org.cn/406.html</annotation></reference>
<reference anchor="IEEE802.1Q" target="https://doi.org/10.1109/ieeestd.2018.8403927">
  <front>
    <title>IEEE Standard for Local and Metropolitan Area Network — Bridges and Bridged Networks (IEEE Std 802.1Q)</title>
    <author >
      <organization>IEEE 802.1 Working Group</organization>
    </author>
    <date year="2018"/>
  </front>
  <seriesInfo name="doi" value="10.1109/ieeestd.2018.8403927"/>
</reference>
<reference anchor="IEEE802.1Qbv" >
  <front>
    <title>IEEE Standard for Local and metropolitan area networks -- Bridges and Bridged Networks - Amendment 25: Enhancements for Scheduled Traffic</title>
    <author >
      <organization>IEEE Time-Sensitive Networking (TSN) Task Group.</organization>
    </author>
    <date year="2015"/>
  </front>
</reference>
<reference anchor="IEEE802.1Qch" >
  <front>
    <title>IEEE Std 802.1Qch-2017: IEEE Standard for Local and Metropolitan Area Networks - Bridges and Bridged Networks - Amendment 29: Cyclic Queuing and Forwarding</title>
    <author >
      <organization>IEEE Time-Sensitive Networking (TSN) Task Group.</organization>
    </author>
    <date year="2017"/>
  </front>
</reference>
<reference anchor="TSN-ATS" target="https://1.ieee802.org/tsn/802-1qcr/">
  <front>
    <title>P802.1Qcr - Bridges and Bridged Networks Amendment: Asynchronous Traffic Shaping</title>
    <author initials="J." surname="Specht" fullname="Johannes Specht">
      <organization></organization>
    </author>
    <date year="2020" month="July" day="09"/>
  </front>
  <seriesInfo name="IEEE" value=""/>
</reference>
<reference anchor="IPV6-PARMS" target="https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml">
  <front>
    <title>Internet Protocol Version 6 (IPv6) Parameters</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="IANA" value=""/>
</reference>
<reference anchor="LDN" target="https://dl.ifip.org/db/conf/networking/networking2021/1570696888.pdf">
  <front>
    <title>Towards Large-Scale Deterministic IP Networks</title>
    <author initials="B." surname="Liu" fullname="Binyang Liu">
      <organization></organization>
    </author>
    <author initials="S." surname="Ren" fullname="Shoushou Ren">
      <organization></organization>
    </author>
    <author initials="C." surname="Wang" fullname="Chuang Wang">
      <organization></organization>
    </author>
    <author initials="V." surname="Angilella" fullname="Vincent Angilella">
      <organization></organization>
    </author>
    <author initials="P." surname="Medagliani" fullname="Paolo Medagliani">
      <organization></organization>
    </author>
    <author initials="S." surname="Martin" fullname="Sebastien Martin">
      <organization></organization>
    </author>
    <author initials="J." surname="Leguay" fullname="Jeremie Leguay">
      <organization></organization>
    </author>
    <date year="2021"/>
  </front>
  <seriesInfo name="IEEE" value="2021 IFIP Networking Conference (IFIP Networking)"/>
  <seriesInfo name="doi" value="10.23919/IFIPNetworking52078.2021.9472798"/>
</reference>
<reference anchor="multipleCQF" target="https://www.ieee802.org/1/files/public/docs2021/new-finn-multiple-CQF-0921-v02.pdf">
  <front>
    <title>Multiple Cyclic Queuing and Forwarding</title>
    <author initials="N." surname="Finn" fullname="Norm Finn">
      <organization></organization>
    </author>
    <date year="2021" month="October"/>
  </front>
</reference>


    </references>


<?line 1561?>

<section anchor="csqf"><name>CSQF</name>

<t><xref target="I-D.chen-detnet-sr-based-bounded-latency"/> (CSQF) describes a variation of the cyclic
queuing mechanism in which the cycle identifier is not mapped by a mapping table
in each node (as in TCQF), instead the packet header carries the sequence of cycles for every
cyclic queuing hop. In the draft, this is proposed specifically for networks
using Segment Routing and can therefore allocate for N cycles N SIDs, each one for
a different cycle to allow indicating in a SID sequence header for each hop, which
cycle to use.</t>

<t>The core new functionality enabled with eliminating the cycle mapping table on
the routers and moving the sequence of cycles into the header is the ability to
utilize in a flexible fashion more than a fixed number of cycles, independently on each hop.</t>

<t>Assume a minimum of N (e.g.: N = 3) cycles would be required in a particular deployment
with TCQF. If CSQF is then set up with e.g.: N + 4 = 7 cycles, then it would be
possible for the controller-plane to delay packets of a flow on every hop
by 1,2,3 or 4 more cycles than necessary at minimum. This can lead to an easier
ability to achieve higher utilization in the face of controller-plane operations
that manages large number of flows in large scale DetNets, and does not allocate
to every flow bandwidth in every cycle. This naturally leads to uneven utilization
of cycles and the problem of managing distribution of traffic load across cycles.</t>

<t><xref target="I-D.eckert-detnet-flow-interleaving"/> discusses this overall advanced controller-plane
traffic management and how different queuing options can be used in such a setup. It
also describes the necessary ingress processing to allow forwarding traffic flows
only in such well engineered specific cycles.</t>

<t>While such advanced cycle engineering may look at first quite complex, it should simply
be compared to the mechanisms that already are standard in service provider networks
to manage bandwidth/capacity by engineering per-flow paths across topologies with
non-equal cost paths. In that overall complex problem space, managing distribution
of traffic across cycles is but a minor extension.</t>

<t>Note that TCQF can of course also benefit from such advanced cycle engineering at
the controller plane, albeit less flexibly than CSQF.</t>

<t>Given how CQSF and TCQF share all the forwarding behavior except for where the
cycle Identifier is retrieved from and how it is mapped, it would also be a very
useeful consideration to consider both approaches options of a single target standard.
It seems unlikely though, that an implementation that can support TCQF could not
support CSQF - or vice versa.</t>

</section>
<section anchor="priorities"><name>TCQF with multiple priorities</name>

<t>TSN CQF <xref target="IEEE802.1Qch"/> does permit to establish multiple independent cyclic
queuing instances and therefore create more flexbility.</t>

<t>Consider likewise, that in DetNet,
there are separate packet headers for a packet priority and a cycle identifier.
For each priority, a separate instance of TCQF is established, and the priority
decides which instance of CQF the packet gets processed by, whereas the cycle 
identifier determines the cycle within the TCQF instance.</t>

<t>Consider for example a setup with 4 priorities 1..4. The cycle time for the
highest priority 1 is C. The cycle time for priority 2 is 2 * C, for priority 3
3 * C and for priority 4 4 * C. In queuing, strict priority queuing is used,
packets from a priority 1 cycle queue will always be sent over those from
priorities 2...4, and so on. In result, a flow can now be given one out of
4 priorities, each with an increasing per-hop latency: C (prio 1), 2C (prio 2), 
3C (prio 3), 4C (prio 4). This does of course also require for admission control
to not allow full utilization of the capacity of cycles in each class. In a simple
static splitting of capacity across classes, each cycle of of each priority could for
example be allowed to be utilized up to 25%.</t>

<t>This multi-priority "extension" to TCQF is in this version of the document only
mentioned as an appendix, because it is not clear if this degree of flexibility is
desired in a first-generation target standard for TCQF. Given how both priority and
cycle identifiers are needed, this mechanism would certainly require for both MPLS
and IP/IPv6 a new extension header, such as the one proposed in this document
to carry the Cycle IDentifierm and then the priority could be indicated by the IP
header DSCP.</t>

</section>
<section anchor="tsn-multiple-buffer-cqf"><name>TSN Multiple Buffer CQF</name>

<t>CQF with multiple buffers but without tagging has been proposed to IEEE TSN
in <xref target="multipleCQF"/>, but has not been adopted. Instead of relying on a cycle
tag in a packet header as proposed in this memo, it still relies solely on
the arrival time of packet, and can hence not equally resolve arrival time
ambiguities as TCQF can, because it does not know the cycle from which the packet was sent,
or the cycle for which it is intended.</t>

<t>Consider that multiple buffer CQF is like TCQF, except the cycle id is
missing from the packet that is sent. Upon arrival at the receiving router,
the sending cycle ID has to be determined solely by the time the packet
is received (reception timestamp) because this time is an indicator of the
sending timestamp and hence the sending cycle. The sum of MTIE, processing
variation link propagation latency and other variations from layer 1 and layer
2 processing (forward error correction, retransmissions) is the erorr of
the sending time that the receiving router can determine. As soon as this
error is so large, that the receiving router can not unambiguously determine
a sending cycle, the mechanism does not work anymore. The receiving router can
also not simply assume for a packet to be sent by one of the possible cycles,
because when this is not the actual sending cycle, then such an assumption will
cause possible overruns of cycle buffers and hence failure of admission control
and pckets drop or congestion. In result, multiple buffer CQF without carrying
a target cycle in a packet header seems not feasible to actually solve the
issue or real propagation latency variation in transmission, or the perceived
variation in propagation due to jitter in clocks between adjacend nodes.</t>

<t>https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

