<?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.6.9 (Ruby 3.1.2) -->


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

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-eckert-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">
      <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="S." surname="Bryant" fullname="Stewart Bryant">
      <organization>University of Surrey ICS</organization>
      <address>
        <email>s.bryant@surrey.ac.uk</email>
      </address>
    </author>
    <author initials="A. G." surname="Malis" fullname="Andrew G. Malis">
      <organization>Malis Consulting</organization>
      <address>
        <email>agmalis@gmail.com</email>
      </address>
    </author>
    <author initials="G." surname="Li" fullname="Guangpeng Li">
      <organization>Huawei Network Technology Laboratory</organization>
      <address>
        <email>liguangpeng@huawei.com</email>
      </address>
    </author>

    <date year="2023" month="March" day="13"/>

    
    <workgroup>DETNET</workgroup>
    

    <abstract>


<t>This memo specifies a forwarding method for bounded latency for Deterministic Networks.
It uses cycle tagging of packets for cyclic queuing and forwarding with multiple buffers (TCQF).
This memo standardizes tagging via the MPLS packet Traffic Class (TC) field for MPLS links and the
IP/IPv6 DSCPfield for IP/IPv6 links. The short-hand for this mechanism is Tagged Cyclic Queuing and Forwarding (TCQF).</t>

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



    </abstract>



  </front>

  <middle>


<section anchor="introduction-informative"><name>Introduction (informative)</name>

<t>Cyclic Queuing and Forwarding (CQF), <xref target="IEEE802.1Qch"/>, is an IEEE standardized queuing mechanism in support of deterministic bounded latency. See also <xref target="I-D.ietf-detnet-bounded-latency"/>, Section 6.6.</t>

<t>CQF benefits for Deterministic QoS include the tightly bounded jitter it provides as well as the per-flow stateless operation, minimizing the complexity of high-speed hardware implementations and allowing to support on transit hops arbitrary number of DetNet flow in the forwarding plane because of the absence of per-hop, per-flow QoS processing. In the terms of the IETF QoS architecture, CQF can be called DiffServ QoS technology, operating only on a traffic aggregate.</t>

<t>CQFs is limited to only limited-scale wide-area network deployments because it cannot take the propagation latency of links into account, nor potential variations thereof. It also requires very high precision clock synchronization, which is uncommon in wide-area network equipment beyond mobile network fronthaul. See <xref target="I-D.eckert-detnet-bounded-latency-problems"/> for more details.</t>

<t>This specification introduces and utilizes an enhanced form of CQF where packets are tagged with cycle identifiers for a limited number of cycles (such as 3...7) and hop-by-hop forwarded through the use of per-cycle buffers. This multiple buffer forwarding overcome the distance and clock synchronization limitations of CQF. <xref target="I-D.qiang-DetNet-large-scale-DetNet"/> and <xref target="I-D.dang-queuing-with-multiple-cyclic-buffers"/> provide additional details about the background of TCQF. TCQF does not depend on other elements of <xref target="RFC8655"/>, so it can also be used in otherwise non-deterministic IP or MPLS networks to achieve bounded latency and low jitter.</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<figure title="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]
 
# MPLS TC tagging specific data
tcqf_tc[oif]
+--uint8 tc[oif_cycle]

# IP/IPv6 DSCP tagging specific data
tcqf_dscp[oif]
+--uint8 dscp[oif_cycle]
]]></artwork></figure>

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

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

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

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

<t>tcqf.cycles is the number of cycles used across all interfaces in the TCQF domain.
routers MUST support 3 and 4 cycles. To support interfaces with MPLS TC tagging,
7 or less cycles MUST be used across all interfaces in the CQF domain.</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 LSR/router is expected to be synchronized with
the neighboring LSR/router in TCQF domain.  tcqf.cycle_clock_offset can be configurable
by the operator, or it can be read-only. In either case will the operator be
able to configure working TCQF forwarding through appropriately calculated
cycle mapping.</t>

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

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

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

<t>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. Likewise, tcqf_dscp[oif] MUST be configured, when oif uses
IP/IPv6.</t>

<t>This data model does not determine whether interfaces use MPLS or IP/IPv6
encapsulation. This is determined by the setup 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="tcqf-with-mpls-label-stack-operations"><name>TCQF with MPLS label stack operations</name>

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

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

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

</section>
<section anchor="tcqf-with-ip-operations"><name>TCQF with IP operations</name>

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

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

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

<figure title="TCQF Pseudocode" anchor="FIG-Pseudocode"><artwork><![CDATA[
void receive(pak) {
  // Receive side TCQF - retrieve cycle of received packet
  // from packet internal header
  iif = pak.context.iif
  if (tcqf.if_config[iif]) { // TCQF enabled on iif
    if (tcqf_tc[iif]) {      // MPLS TCQF enabled on iif
      tc = pak.mpls_header.lse[tos].tc
      pak.context.tcqf_cycle = map_tc2cycle( tc, tcqf_tc[iif])
    } else
    if (tcqf_dscp[iif]) {      // IP TCQF enabled 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
      // IP TCQF enabled on iif
      if (tcqf_dscp[oif]) {
        pak.ip_header.dscp = map_cycle2dscp(cycle, tcqf_dscp[oif])
      } // else...  other future encap/tagging options for TCQF
  
      tcqf_enqueue(pak, oif.cycleq[cycle,iif])  // [3]
      return
    } else {
      // Forwarding of egress TCQF packets [1]
    }
  }
  // ... non TCQF OIF forwarding [2]
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<t><eref target="https://ceni.org.cn/406.html">https://ceni.org.cn/406.html</eref> is a report summary of a
100Gbps link speed commercial router validation implementation of TCQF deployed and measured in a research
testbed with a range of up to 2000km across China, operated by the China Environment for Network Innovations (CENI).
The report also provides a reference to a more deteilled 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 has no IANA considerations.</t>

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

<t>Many thanks for review by David Black (DetNet techadvisor).</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>

</section>


  </middle>

  <back>


    <references title='Normative References'>





<reference anchor='RFC2474' target='https://www.rfc-editor.org/info/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'><organization/></author>
<author fullname='S. Blake' initials='S.' surname='Blake'><organization/></author>
<author fullname='F. Baker' initials='F.' surname='Baker'><organization/></author>
<author fullname='D. Black' initials='D.' surname='Black'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc3270'>
<front>
<title>Multi-Protocol Label Switching (MPLS) Support of Differentiated Services</title>
<author fullname='F. Le Faucheur' initials='F.' surname='Le Faucheur'><organization/></author>
<author fullname='L. Wu' initials='L.' surname='Wu'><organization/></author>
<author fullname='B. Davie' initials='B.' surname='Davie'><organization/></author>
<author fullname='S. Davari' initials='S.' surname='Davari'><organization/></author>
<author fullname='P. Vaananen' initials='P.' surname='Vaananen'><organization/></author>
<author fullname='R. Krishnan' initials='R.' surname='Krishnan'><organization/></author>
<author fullname='P. Cheval' initials='P.' surname='Cheval'><organization/></author>
<author fullname='J. Heinanen' initials='J.' surname='Heinanen'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8655'>
<front>
<title>Deterministic Networking Architecture</title>
<author fullname='N. Finn' initials='N.' surname='Finn'><organization/></author>
<author fullname='P. Thubert' initials='P.' surname='Thubert'><organization/></author>
<author fullname='B. Varga' initials='B.' surname='Varga'><organization/></author>
<author fullname='J. Farkas' initials='J.' surname='Farkas'><organization/></author>
<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='RFC8964' target='https://www.rfc-editor.org/info/rfc8964'>
<front>
<title>Deterministic Networking (DetNet) Data Plane: MPLS</title>
<author fullname='B. Varga' initials='B.' role='editor' surname='Varga'><organization/></author>
<author fullname='J. Farkas' initials='J.' surname='Farkas'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='A. Malis' initials='A.' surname='Malis'><organization/></author>
<author fullname='S. Bryant' initials='S.' surname='Bryant'><organization/></author>
<author fullname='J. Korhonen' initials='J.' surname='Korhonen'><organization/></author>
<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>




    </references>

    <references title='Informative References'>





<reference anchor='RFC3209' target='https://www.rfc-editor.org/info/rfc3209'>
<front>
<title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
<author fullname='D. Awduche' initials='D.' surname='Awduche'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='D. Gan' initials='D.' surname='Gan'><organization/></author>
<author fullname='T. Li' initials='T.' surname='Li'><organization/></author>
<author fullname='V. Srinivasan' initials='V.' surname='Srinivasan'><organization/></author>
<author fullname='G. Swallow' initials='G.' surname='Swallow'><organization/></author>
<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' target='https://www.rfc-editor.org/info/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'><organization/></author>
<author fullname='D. Papadimitriou' initials='D.' role='editor' surname='Papadimitriou'><organization/></author>
<author fullname='S. Yasukawa' initials='S.' role='editor' surname='Yasukawa'><organization/></author>
<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' target='https://www.rfc-editor.org/info/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'><organization/></author>
<author fullname='E. Rosen' initials='E.' role='editor' surname='Rosen'><organization/></author>
<author fullname='A. Dolganow' initials='A.' surname='Dolganow'><organization/></author>
<author fullname='J. Tantsura' initials='J.' surname='Tantsura'><organization/></author>
<author fullname='S. Aldrin' initials='S.' surname='Aldrin'><organization/></author>
<author fullname='I. Meilik' initials='I.' surname='Meilik'><organization/></author>
<date month='January' year='2018'/>
<abstract><t>Bit Index Explicit Replication (BIER) is an architecture that provides optimal multicast forwarding through a &quot;multicast domain&quot;, 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' target='https://www.rfc-editor.org/info/rfc8402'>
<front>
<title>Segment Routing Architecture</title>
<author fullname='C. Filsfils' initials='C.' role='editor' surname='Filsfils'><organization/></author>
<author fullname='S. Previdi' initials='S.' role='editor' surname='Previdi'><organization/></author>
<author fullname='L. Ginsberg' initials='L.' surname='Ginsberg'><organization/></author>
<author fullname='B. Decraene' initials='B.' surname='Decraene'><organization/></author>
<author fullname='S. Litkowski' initials='S.' surname='Litkowski'><organization/></author>
<author fullname='R. Shakir' initials='R.' surname='Shakir'><organization/></author>
<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 &quot;segments&quot;.  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='RFC8986' target='https://www.rfc-editor.org/info/rfc8986'>
<front>
<title>Segment Routing over IPv6 (SRv6) Network Programming</title>
<author fullname='C. Filsfils' initials='C.' role='editor' surname='Filsfils'><organization/></author>
<author fullname='P. Camarillo' initials='P.' role='editor' surname='Camarillo'><organization/></author>
<author fullname='J. Leddy' initials='J.' surname='Leddy'><organization/></author>
<author fullname='D. Voyer' initials='D.' surname='Voyer'><organization/></author>
<author fullname='S. Matsushima' initials='S.' surname='Matsushima'><organization/></author>
<author fullname='Z. Li' initials='Z.' surname='Li'><organization/></author>
<date month='February' year='2021'/>
<abstract><t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t><t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t><t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t></abstract>
</front>
<seriesInfo name='RFC' value='8986'/>
<seriesInfo name='DOI' value='10.17487/RFC8986'/>
</reference>



<reference anchor='RFC9016' target='https://www.rfc-editor.org/info/rfc9016'>
<front>
<title>Flow and Service Information Model for Deterministic Networking (DetNet)</title>
<author fullname='B. Varga' initials='B.' surname='Varga'><organization/></author>
<author fullname='J. Farkas' initials='J.' surname='Farkas'><organization/></author>
<author fullname='R. Cummings' initials='R.' surname='Cummings'><organization/></author>
<author fullname='Y. Jiang' initials='Y.' surname='Jiang'><organization/></author>
<author fullname='D. Fedyk' initials='D.' surname='Fedyk'><organization/></author>
<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='I-D.ietf-bier-te-arch' target='https://datatracker.ietf.org/doc/html/draft-ietf-bier-te-arch-13'>
   <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.ietf-detnet-bounded-latency' target='https://datatracker.ietf.org/doc/html/draft-ietf-detnet-bounded-latency-10'>
   <front>
      <title>Deterministic Networking (DetNet) Bounded Latency</title>
      <author fullname='Norman Finn' initials='N.' surname='Finn'>
         <organization>Huawei Technologies Co. Ltd</organization>
      </author>
      <author fullname='Jean-Yves Le Boudec' initials='J.' surname='Le Boudec'>
         <organization>EPFL</organization>
      </author>
      <author fullname='Ehsan Mohammadpour' initials='E.' surname='Mohammadpour'>
         <organization>EPFL</organization>
      </author>
      <author fullname='Jiayi Zhang' initials='J.' surname='Zhang'>
         <organization>Huawei Technologies Co. Ltd</organization>
      </author>
      <author fullname='Balazs Varga' initials='B.' surname='Varga'>
         <organization>Ericsson</organization>
      </author>
      <date day='8' month='April' 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='Internet-Draft' value='draft-ietf-detnet-bounded-latency-10'/>
   
</reference>


<reference anchor='I-D.eckert-detnet-bounded-latency-problems' target='https://datatracker.ietf.org/doc/html/draft-eckert-detnet-bounded-latency-problems-00'>
   <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' target='https://datatracker.ietf.org/doc/html/draft-qiang-detnet-large-scale-detnet-05'>
   <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' target='https://datatracker.ietf.org/doc/html/draft-dang-queuing-with-multiple-cyclic-buffers-00'>
   <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="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="LDN" >
  <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>


    </references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA7V963PbRrLvd1Xpf5jr1D0RY5J6+K2zTq0iyYlOObYiKbv3
lu3yBUmQxJoEaACUzDi+f/vpXz9mBiBpZz8cVcUhiXn29Lt7Gr1eb3dnWIyy
fHLslvW493R3Z3enzupZeuzO0jot51meVXU2dK/S+q4oP1BLt0dP6GvHnSV1
4i5nSZ66nrtJJpN05E5Xwxk1/22ZLtE2yUfuRVHeJeWIu96c/vai48ZF6QbF
Mh9Rh1lSp/lw5e6yeupmxZ37V1bTxC7L6VE5SV01TGapkzmr3Z1kMCjT22M3
Sus8rXv18ON4d2dUDPNkToselcm47qXDD2lZ96ImvYOj3Z072uXZ+c2r8xva
NU07KcrVsavq0e5OtiiPXV0uq/ro4OAZGld1mSbzY3dxfvMCUKlq2sv7ZFbk
NM0qpZUssuPdHedcXQz1F/kyShf19Ng94u9VUdJA4yq0qFbz5g/DYj5P89p+
oS0u62lR8uA9boE/2d9NkZaztKrcOW/RPy1K2tuLZb0s07s0czfpcJoXs2KS
pZX7/frEt8Ou0vrYHR0dHbhTmrVMZu7806KkMe+SlW83zGoCzXWS0wmf0jkk
4UkxonWcnrhnjw4eHUQ/L2kw6hPPls6TbEZwrdO/D6v+OFn2R+mmXV3XKWFI
7X4qVzRjc1O/59ltWla0HleM3fWyLNOVuzi9bk9S9Qfc++8VN+knw/7yw6bJ
TvIRAcn93He/JrOsas7GP7nTIq+Ws5owtj1LMpmjxd8n+Nqnk9s0w8/LJJ8s
UsL3l5lrjv/LMsH5KDWFc1q5l8mgKJOaULI95yyb2IB/n3J/mXh3Jy/KeVIT
fBhXrl6cHj188tA+Pzh6cmCfnz5+9Mh/fvYYbQjn83G7/4Ojg2f2+eHTJ6HP
0bPH/vPDg6Mw1lP/+7ODw8c8rnMXvbN+lhI/GWRp2avTXlIOp8eNJ0qbygV6
ygV8myYFt1r1FmUxmKXzyjf/mBGAesIjesw2esw29CffboRmH4U39cBxenOc
84JaDplx9QbL8ZjQjTfCvc7Pz58eHPUPfxvcCrk75Y/38IhQl9gCcTfmaS8L
mpR53jyty2JRzDJ67BLiJC6XI69cr0d4no0mRJloKZ9HhhL03J0QOxiBJbij
R8fuPJ8m+TBlFsGzXA+n6Wg5oz43xO3G2fCerCtiGx7feI032TztXac5ERGd
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
aM5BxvciJF7nbZptQFVm2Hev8yii4BDZ6NouvNyQBVxHx7S787XFbt6exEWx
NB1CVhVdTfEBaUYjcfHC/+tb6DlDt4xSS31W/9gzCWXkNtcaAHycTR/fERvJ
NNtlqJfXXp6xIW3Reos2EM503WWawwSdw97+hY7mshCut3f5y2VHlKy80MEl
8lRpEsHF2YaLDSrWkH5NDfYVPgtqkHhjzZZl2ejtzOR1qoIjoEFHJyJHGtxB
sH2IsgesNCacfOQNCXEOwKeNlP9S1RNJi6BtmuquY3VbDMAzPtyFHktKh14x
CzoeMyx2rYkucWcpCTAZOPjabdz9uYMjSmixkRYcLko2mKbPYhE85aYC0szW
LdMb+u7ufKK/w0N37/z/XO6//P2eOyXGt4DvwFULTmBay39H6YTmRTZm1dA9
OMNIQqOH6kNU33CZ6PS0jcbpXVbpkmCIGFHkmV/3ny9CuzJlx36lOWUeq4y5
CcOMPPtfRJXBfY8JWYT1lMx7N06qKbucq2hs1ri9L8wcf8YWmB6benss+ZQV
01QIh/KPHe/p5lsbyiT3FsmHjvtsrt/9fXclD5gnyTw9alyXfLVEOAsH9FR1
E8qP+vN5mo5nHEkuNlgrqMrPqc2HPjyVyL+jX/zDsZrqwRMOjzUtEqNLnCaH
1smcP+oYusLPbH1sWaqofKU3DHBdFlla1XtZc39WpW/qooKOGLeNV89zCmie
QzWi+Y/46x4N2XWNJYUxvnB4asPq2WfdXj9xlW+sHt10/dnCVo8f//Ky0dgW
js+RSrZ58VhYv9+3W05M/9bmi31Q7GdM+0/50TvTtX+UHidxIkuh2a6ceESO
hw+IXKyhmPyird+rcONe3rNPR6AZU+8RtHuf5rg2JjQS7Z2oYVnmWLv5YOOA
qGaqck9RhvqNCTafQAfD5UXe9Mvqhb7KHcRo0iaPIqDKBgp5ffEiRgCQAknd
6OxBjbgMSv/ryRn62Ffc0RBl8/rX854FpQSb+N/uptzoDVsJRuubgHXtLQg1
9yS/ITwy4GigKUKIgP5biDte8FE91DU34ladeLA2+f5FKm1S+dZFNim4sTb8
0FhdGKm5PloPlggCUwodc7EpOeR9H2ZdiG5mPtc2uHmOiBS6bL/yAj6+kXUI
s8KEbx40UuCFVNbYxucW2F7E2qQpxQ1KeHMYjftljccoH/EEREgfi+M3R+/W
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

-->

</rfc>

