<?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.43 (Ruby 3.4.12) -->


<!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-02" 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="November" day="02"/>

    
    <workgroup>DETNET</workgroup>
    

    <abstract>


<?line 174?>

<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 two cycles and indicates the cycle number in an existing or new packet header field, called the tag. The tag replaces the cycle mapping of CQF, which is based purely on the synchronized reception clock.</t>

<t>This memo standardizes TCQF as a mechanism independent of the tagging method used. It also specifies tagging via (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, the optional ability to support a large number of flows in large networks through 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 184?>

<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 receiving node could not receive them 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="summary-of-tcqf-benefits-and-goals-for-detnet-informative"><name>Summary of TCQF benefits and goals for DetNet (informative)</name>

<t>For background information on CQF, its benefits and challenges for DetNet, and how
multiple buffers and tagging address them, see <xref target="background"/>.</t>

<t>TCQF inherits the benefits of CQF for DetNet as outlined in <xref target="cqf-review"/>, and by using 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" type="1">
  <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 cycle 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 standalone in otherwise non-deterministic IP/IPv6 or MPLS networks to achieve bounded latency and low jitter.</t>

<t>TCQF is 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 steering 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 be required only for the bounded latency QoS mechanism, likely requiring 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 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 relate
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-P, 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 flow's 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
per-DetNet-flow F-Labels across the network from S-PE1 to S-PE2. These could
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 nodes implement
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 therefore also do 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-PE1, start a new TCQF domain there,
running for example up to S-PE2, and start another one from there 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 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 TCQF 
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 (PEF) without being
a TCQF edge node, as this most likely does not introduce latency that TCQF cannot
accommodate, and the controller plane accordingly reserves resources for only one flow
on the S-PE2-&gt;T-PE2 leg.</t>

<t>If, on the other hand, S-PE2 were to perform the Packet Ordering Function (POF), this could
create large peaks of packets when out-of-order packets are released together.
A POF would either have to shape these bursts so that the traffic
of the flow again conforms 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 the following 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 semantics 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 packets,
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 TCQF domain, which is a set of
interfaces acting both as ingress (iif) and egress (oif)
interfaces, capable of forwarding TCQF packets between 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,
all interfaces in the TCQF domain MUST NOT use more than 7 cycles. 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 may be configurable
by the operator, or it may be read-only. In either case, the operator is
able to configure working TCQF forwarding through appropriately calculated
cycle mappings.</t>

<t>tcqf.if_config[oif] is an 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 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 packet's 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 specified in the following
sections.</t>

<t>Therefore, this data model also does 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 the 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
happen. 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; dscp 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>Because DetNet domains are currently assumed to be networks of a single administrative
operator domain, 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 DSCPs within their domain 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
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
avoids the operational concern of using multiple DSCPs for what is
effectively a single per-hop forwarding behavior, a novel aspect that could
otherwise 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 header is rewritten from tcqf.ipv6oh[oif_cycle], in the
same way as DSCP would 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 the TCQF Option be used with SRv6, and if so, how?)</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"/>
algorithmically. 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 ingress
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 otherwise
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 egress TCQF packets is out-of-scope. 
It can be performed by any non-TCQF packet forwarding mechanism such as
some strict priority queuing in step [2], and packets could accordingly be
marked with a corresponding 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>In this section, ingress flows are flows
whose packets enter the router from a non-TCQF interface
and need to be forwarded to an interface with TCQF.</t>

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

<section anchor="cycle-scheduling-considerations"><name>Cycle scheduling considerations</name>

<t>The model specified in this document is the simplest possible
ingress scheduling model for passing packets from flows into
cycles. For each flow, a maximum number of bits is specified
on the ingress router that the flow is allowed to put
into a cycle. The controller plane is responsible for ensuring
that the sum of csize of all admitted ingress flows will fit
into each cycle. It likewise has to ensure that the cycle
sizes of all flows across some intermediate router hop will
fit into each TCQF cycle. Note that intermediate hops may have
higher-bandwidth links, so the same cycle length
does not necessarily mean the same cycle size in bits.</t>

<t>Controller plane operations will become difficult with this
scheduling model when the sum of burst sizes of flows
can exceed the cycle size on the ingress router. This is
especially true when carrying a larger number of flows with
a low guaranteed bit-rate but a large burst size. For
example, flows that need to send a single packet with a
period much longer than a single cycle. Without further
coordination across many of these flows, simple admission
control would need to assume that all these packets could
arrive at the same time, creating a burst of multiple cycles.
<xref target="I-D.eckert-detnet-flow-interleaving"/> provides a more
refined ingress scheduling mechanism which solves this
performance limitation of the simple ingress forwarding
model presented here. It can be implemented either as a replacement for
the ingress forwarding described here, or by prepending
its policing of packets to the one assumed here
(from <xref target="RFC9016"/>).</t>

</section>
<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 packet 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 all the 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 flow's packets
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="operational"><name>Operational Considerations</name>

<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 required accuracy of clock synchronization across the nodes
is lower, as explained in <xref target="calculation"/> below.</t>

<t>High-speed forwarding for ingress packets as specified in <xref target="ingress"/>
above would require packets to first be passed into a per-flow queue and
then be re-queued 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,
easiest 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 forwarding 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 flow's 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 cycle not across tcqf.cycles queues,
but across maxcycles queues, while still cycling across tcqf.cycles
cycle tags.</t>

<t>The calculation of B[f], and as a result maxcycles, may be further 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>In <xref target="Calc1"/>, consider 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) = 1, map(2) = 2 and map(3) = 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 A(Dmin)...A(Dmax) covers at most (C - 1) cycles.</t>

<t>If it covers 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 results from the fact 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>
<section anchor="implementation-deployment-and-validation-considerations-informative"><name>Implementation, Deployment and Validation considerations (informative)</name>

<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 then has
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 allocation of 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. This can be achieved, 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
it 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 cycle. This requires different gates on ingress 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
sets of cycles to utilize all cycles as well as possible. This is the same
complexity as in TSN technologies. Besides admission control
and different ingress 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 TCQF is not
leveraged, which is the complete removal of per-hop, per-flow awareness on
each router. Nevertheless, such a controller plane only introduces
this state maintenance into the control plane of each router; it
does not change the TCQF forwarding plane, which retains its per-hop, per-flow
stateless nature and the resulting performance/cost benefits.</t>

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

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

<t><xref target="CENI"/> summarizes the validation of a
commercial 100Gbps router implementation of TCQF, deployed and measured in a research
testbed spanning up to 2000km across China, operated by the China Environment for Network Innovations (CENI).
The report also provides a reference to a more detailed 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 to David Black (DetNet tech advisor) for his review.
Thanks to Lou Berger for his comments on controller-plane applicability.
Thanks to Aijun Wang for his suggestions on the structure of the document,
to Donald Eastlake for his review and editorial comments, to Janos Farkas
for his comments on the name of the mechanism, and to Jinoo Joung for his
feedback, all during or after the WG adoption call.
Thanks to Xiaoliang Zheng and Fan Yang for their input to the TCQF option format.
They were initially listed as co-authors for draft-yizhou-detnet-ipv6-options-for-cqf-variant,
which was merged into this document.</t>

</section>
<section anchor="open-issues"><name>Open Issues</name>

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

<t><list style="numbers" type="1">
  <t>Renaming of the mechanism (feedback from Janos Farkas). TCQF stands for "Tagged CQF",
but CQF as specified in <xref target="IEEE802.1Q"/> already operates on VLAN-tagged frames,
so "tagged" may not be sufficiently distinctive, and a more precise, functional name
was suggested (e.g.: "Labelled CQF", LCQF). The authors are hesitant to change the
name because of how long the current name has been in use. The authors will happily run a call
in the WG if there is more desire for a name change.</t>
</list></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>

<t>02</t>

<t>Added section "Cycle scheduling considerations" to the per-flow ingress
forwarding section: explains the simple per-flow csize ingress scheduling
model, the resulting controller-plane responsibilities (sum of csize per
cycle on ingress and on intermediate hops with possibly different link
speeds), its limitation for large numbers of low-rate flows with large bursts,
and how <xref target="I-D.eckert-detnet-flow-interleaving"/> can replace or complement it.</t>

<t>English editorial pass across the document, done with the help of claude.ai
(no intended technical changes). Includes: terminology fix Packet Reordering
Function (PRF) -&gt; Packet Ordering Function (POF) and added Packet Elimination
Function (PEF) abbreviation; fixed TCQF domain example (T-PE1 to S-PE1);
reworded MPLS TC cycle limit sentence ("MUST NOT use more than 7 cycles")
per review from Donald Eastlake; fixed duplicate list numbering, spelling
and punctuation.</t>

<t>Restructured the document following suggestions by Aijun Wang during the WG
adoption call: moved former sections 2.1 - 2.5.2 (CQF background) into new appendix
<xref target="background"/>; former section 2.6 (Summary of TCQF benefits and goals for DetNet)
is now section 2 and refers to that appendix; moved former section 6.1 (Solution Scope,
Taxonomy and Status) into appendix <xref target="scope"/>; moved former sections 6.2 (High-Speed
Implementation) and 6.3 (Controller plane computation of cycle mappings) into new
section <xref target="operational"/> preceding the remaining implementation considerations section.</t>

<t>Not (yet) accepted: Aijun Wang's proposal to remove the pseudocode. Pseudocode with
explanations has proven invaluable to implementers of RFCs such as <xref target="RFC8279"/>, and the
author(s) therefore think it should stay normative.</t>

<t>TBD: Aijun Wang's proposal to simplify section 3 (Using TCQF in the DetNet Architecture
and MPLS forwarding plane) - it is not yet clear what simplification is desired.</t>

<t>Added Open Issues section, recording the renaming suggestion by Janos Farkas.</t>

<t>Added Lou Berger, Aijun Wang, Donald Eastlake, Janos Farkas and Jinoo Joung to acknowledgements.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <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="RFC8279">
  <front>
    <title>Multicast Using Bit Index Explicit Replication (BIER)</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="T. Przygienda" initials="T." surname="Przygienda"/>
    <author fullname="S. Aldrin" initials="S." surname="Aldrin"/>
    <date month="November" year="2017"/>
    <abstract>
      <t>This document specifies a new architecture for the forwarding of multicast data packets. It provides optimal forwarding of multicast packets through a "multicast domain". However, it does not require a protocol for explicitly building multicast distribution trees, nor does it require intermediate nodes to maintain any per-flow state. This architecture is known as "Bit Index Explicit Replication" (BIER). 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 procedures for forwarding a packet based on its BIER header are specified in this document. Elimination of the per-flow state and the explicit tree-building protocols results in a considerable simplification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8279"/>
  <seriesInfo name="DOI" value="10.17487/RFC8279"/>
</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="1" month="November" 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-07"/>
   
</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>

</references>


<?line 1189?>

<section anchor="background"><name>Background</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 simply a profile
of the IEEE Time Aware Shaper (TAS) standard <xref target="IEEE802.1Qbv"/>, which introduced
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 Queues, 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 chosen 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 simplest case, such a gate is configured
to admit a maximum number 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>Typical CQF deployments in manufacturing networks with 1Gbps links
use cycle intervals of no less than hundreds of microseconds.  In a
network with a small diameter, say less than 8 hops, this is sufficient to provide an
end-to-end latency bound on the order of several milliseconds.</t>

<t>As link speeds increase from 100Mbps to 1Gbps, 10Gbps, 100Gbps
or even higher in larger networks, either more bytes can be transmitted
within the same cycle interval, or a smaller cycle interval
suffices to transmit the same number of bytes per cycle as in
low-speed networks. Likewise, serialization latency and hence DT decrease with
higher speed links. Overall, this makes CQF more attractive for higher-speed
networks than for lower-speed networks.</t>

<t><xref target="Fig1"/> shows a simple calculation of 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 probably 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>At 10Gbps, the cycle interval can 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 calculations are only approximate, because
other factors also determine the cycle interval.  However, it
shows that as the link speed increases, the 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.
Consequently, CQF with a smaller cycle interval has the potential
to meet stricter 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>Industrial automation has typical application period requirements,
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 strictest end-to-end
latency requirements.  For instance, assuming 24 hops
and a cycle interval of 10us, the end-to-end latency
bound is 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 potential to meet stricter 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 of IEEE TSN work, DetNet targets not only
IETF forwarding planes (IP, MPLS, ...), but also wide-area
networks, and therefore longer physical 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 achieve this, a dead time (DT) is
imposed: a time interval, usually at the end of a cycle, during which
a node does not send 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 are 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
links of hundreds of kilometers or longer and larger processing delays.
That would make the dead time eat up most of the cycle interval when
cycle interval is short (e.g., of the same order of magnitude as the
dead time, or one order higher).  The useful time in a cycle is then
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 cannot be received in the same
cycle interval at the next node.  That makes the useful time in a
cycle reach zero in two buffer CQF.  Two buffer CQF is then no
longer usable.</t>

<t>As a result of these considerations, TSN CQF networks are reasonably
limited to at most a few km per hop, beyond which DT exceeds common
cycle times and the possible throughput of CQF traffic hence drops
to zero.</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 summary, CQF has a range of benefits for DetNet.</t>

<t><list style="numbers" type="1">
  <t>It provides bounded latency.</t>
  <t>It provides 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 a 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 the arrival time 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" type="1">
  <t>Cycle 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, the dead time increases, which reduces the possible utilization or requires longer 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 aforementioned dilemma with minor changes to the fundamental two buffer CQF.
This section introduces this mechanism with multiple buffers and
CQF cycle identification in the packet header. From here on, this document
uses the terms packet (as used for IP, MPLS and other IETF forwarding planes) and
packet buffer, as opposed to frame 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 packets 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 that packets sent in a single
cycle by the previous node are always sent out in a single cycle by 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 time.</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,
this may cause ambiguity in identifying the correct sending cycle of
the upstream node, and hence in deciding into which output buffer of
the current node the received packets have to be placed.</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.  This does not mean that the receiving interval of every
cycle always spans such a large receiving window.  The
receiving window is determined by the worst-case
time variance, and that value has to be used for time-based 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 into the wrong output buffer, the packet may experience
unexpected delay.  At the same time, the packet occupying the non-
designated buffer may violate the service contract between the end hosts
and the DetNet network, with unpredictable consequences.</t>

<t>The DT could be increased substantially to cover the
time variance, so that the receiving windows do not overlap
and the ambiguity is removed.  However, it is not always practical
and usually not desired because large DT will eat useful cycle time
and cause the low utilization issue illustrated in <xref target="cqfdt"/>.
Therefore, it is desirable 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 latency and jitter
of the link (and of processing between the sending and receiving router) described above,
tagging does not change the fundamental mechanism and benefits of CQF.</t>

<t>Compared to CQF with multiple buffers, Tagged CQF can
operate with clock synchronization of significantly lower accuracy
than CQF. In CQF, the MTIE is an addend determining DT 
and should hence typically be less than 1% of the cycle time. In TCQF it
is an addend of the permitted receive window and can hence, for example,
be as large as the cycle time, i.e., 100 times larger. A network using
TCQF with 100Gbps interfaces can hence use the same or less
expensive clock synchronization setup than a CQF network with 1Gbps interfaces.
In addition, when the conditions of network connections change, network
operations can dynamically change the mappings.</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 packets,
and hence cannot resolve arrival time ambiguities as TCQF can,
because it does not know the cycle from which the packet was sent.</t>

</section>
</section>
</section>
<section anchor="scope"><name>Solution Scope, Taxonomy and Status for DetNet adoption considerations</name>

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

<t>TCQF is proposed not as a standalone solution, 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 beyond 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" type="1">
      <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="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 N SIDs for N cycles, one per
cycle, so that a SID sequence in the header indicates for each hop which
cycle to use.</t>

<t>The core new functionality enabled by 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 make it easier
to achieve higher utilization when the controller plane
manages a large number of flows in large-scale DetNets and does not allocate
bandwidth to every flow 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 at first look 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 CSQF 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 very
useful to consider both approaches as 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"/> permits establishing multiple independent cyclic
queuing instances, which creates more flexibility.</t>

<t>Consider likewise that in DetNet
there are separate packet header fields for packet priority and cycle identifier.
For each priority, a separate instance of TCQF is established, and the priority
decides which instance of TCQF 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. With strict priority queuing,
packets from a priority 1 cycle queue will always be sent over those from
priorities 2...4, and so on. As a 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 of course also requires admission control
not to allow full utilization of the capacity of cycles in each class. In a simple
static splitting of capacity across classes, each cycle 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 a new extension header for both MPLS
and IP/IPv6, such as the one proposed in this document
to carry the Cycle Identifier, 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 packets, and hence cannot 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 error of
the sending time that the receiving router can determine. As soon as this
error becomes so large that the receiving router cannot unambiguously determine
a sending cycle, the mechanism does not work anymore. The receiving router can
also not simply assume that a packet was sent in 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 packet drops or congestion. In result, multiple buffer CQF without carrying
a target cycle in a packet header seems not feasible to actually solve the
issue of real propagation latency variation in transmission, or the perceived
variation in propagation due to jitter in clocks between adjacent nodes.</t>

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

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+296ZIbV5Ym+P8+hQ9l1QIkALFwkcQs5WQwSEpRTZGRjMjM
rpFkGg/AEeFJwB1ydzAYSbGsHmL+jFnPy9WTzPnOchcHECQzWd0zZs3uSgUA
97uce+7Zl/F47Kb1rKwuH2brbj7+2rmu7BbFw+xx0RXNsqzKtiun2fOiu66b
V/RcNqBf6OMwe5x3eXa6yKsiG2fn+eVlMcuOb6YLevyP62KNZ/Nqlj2tm+u8
mfGr58d/fDrM5nWTXdTrakYvLPKuqKY32XXZXWWL+jr7a9nRxFlZ0U/NZZG1
03xRZDJn6/KLi6Z4/TCbFV1VdONu+uvczepplS9pybMmn3fjsqB9RL+P9w/d
NW3v8ZPz50/O3ZQmvKybm4dZ281cuWoeZl2zbrvD/f1v6Mm2a4p8+TA7eXL+
1NEn2sEv+aKuaPibonWr8qHLsqyrp/JZ/p4Vq+7qYXYfH9u6oSHmrf+9vVkm
n6f1cllUnX7h8nV3VTcYdYxf8U92c14XzaJo2+zJ9FXRdPZj3dBenq67dVNc
F2V2XkyvqnpRX5ZFm/3p7Mgewz6K7mF2eHi4nx3TfE2+yJ68WTU04nV+Y49N
y44gcZZXdJTHBPDc/1DPaA3HR9k39/fv74dv1zQSvRHNVCzzckFA7Io/TNvJ
PF9PZoX91tRApWJWdnWzucN/Lf92Va+zZ2Wyt+/XeX9jvakW5Q2/+YcrfnRC
EE338zyv/kr4trHq46uyyj9sbWddQVjbZY+aGwJOssA/VeXromlppqyeZ2fr
piluspPjs94q28kFv/uHlp+Y5NPJ+tUmIKuyo2vwX2m5M95Gbx1H1YwOOvtu
kv2QL8o2WQh/kx3XVbtedNF+dQH55RIP/OESHxMgpafYm/Ffirq6HM/of7KX
N3WdzPjk/OVJb5aGnvlD0TXlpCkmr5qNOc5qQvDsv9Z0rTbnOi1olmflOpmE
Tyn7ob4oF8XGya9X9MrNX2/+MMVTS35o697srHszfrfOq8uVTJt9NN5d2ts7
Ue9RUd6Ken00IzRucQleFtVHrqYpqlbf/jtX41xVN8u8I3QG/Xn59Pjw3lf3
9M+7h1/t659fP7h/3/4kMml/fvOAnz0ZP54UTKKM6s6Jjo/LqgP9yl+DtzhX
VvPeXHcP97/RP+99/VWY4JsH9ue9/UM/192v/Z9f+wcOv7IRvtk/sG+/oYFp
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
B4R/e/+nnW8SOt/+KeDDo+TNfwbC3frpH8SHlxYE8PEXYevMdgi3ftr6ph38
rZ8+8Zx28PGnw/5v/yCE//43N/HhP3/OXfTh78UH/+nj7mr86WPow6eacyu1
CDT/8fm3LIMzJ1ALry/D/TTSYcBoH3lGe0fCLzWpUjlVEmc9DfpglKHFmt9Y
gtffpXYFK+FJTJqrUMCBagOGESZc8+OkCxWg+uEu7jD9vUOQzuLGPyfq/cTd
5cdkxrjGIxd/0fzVOKpTtG9NOMOi+k20g+1g4u75weOhrZpdHJuYcwYgPTMQ
M5nGpA39GiTNn4Ob1QKZuqczmBhWksR5X1zr2eMS1cKb19FM3GnSK2Wwv1h1
NJ8YI3XaVIjbmogZ9OONeq2bo1mVvJD4oUjQT6kZic9YjB8c00iw1goYcZ6L
b4A8cQ8kqmlO2qJpY6w+5Gr90KZ4ljAEoNsxWYHBIPwr0JNQUeuEwraApC0v
6+8i2/kW85U4IzhLGUXGJTYRSGLFyWGxRP+CfOHtKztM/7UOzmv3DUNV/0My
zky62G5L41GUHOtex/CXL4plqzaJqDZaKxfpOJJF1ZEvapy38nizXVRyQoC7
xXw2ePs2BAahw++hFuj18jSnvKlorg3Aa/0rMRjFWrUa5KQK5Q8F4Q4j41+O
no962l3kBbFqgFyHMJWxpSSm19h9/U9dViSfM5XgDaSWRRXeEe7bt2pCgd0I
UUmKaPsKx1WIBoIejPjU8WYHNOmRJka2UKKI0DMUS4hsKgJERSakWCOaomn7
Rm3GVDZi5rjOoB40G4JOS8KXZa4uibKC+V6ysCy6ODZs9dQxqVLR+vReKwOp
cTmhC7b4O7SUqRYa5xjqUOzYFm8JDVV8ISSXW4v+sq0TyQxJJSnHEYd4RwKW
9c1BrpHUuA9mH5T8PDbsbDclcqKNtdiT9XIHunrFFjNuAcd+SRud1GTYLvnU
PgvW0JDOFSDXShg7DijN+IoeYXMsfHEcRpOgPBbm0WibHm3t6OtM62P7S4zG
Qr7pyERinO76GCekCqLVGIoRRRq2XGOpBVlr5ZIlsg3g8HDaMGLiVcK0KUxq
2VQDSGJr5JxqH9PMUqOaF1pV2W0sFJ5sGUhW4D8aWgosefOnmKxyJOpe1TPp
nVzM1L8DI5FOxbbKjvN30WMJ5uVpEa/6y4Mhl5UXQ86OBq/BZiJ+UedNJ4zC
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
XLj/F2I9EP3IRgEA

-->

</rfc>

