<?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-mpls-tc-tcqf-03" category="std" consensus="true" submissionType="IETF" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="detnet-mpls-tc-tcqf">Deterministic Networking (DetNet) Data Plane - MPLS TC Tagging for Cyclic Queuing and Forwarding (MPLS-TC TCQF)</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>

    <date year="2022" month="July" day="11"/>

    
    <workgroup>DETNET</workgroup>
    

    <abstract>


<t>This memo defines the use of the MPLS TC field of MPLS Label Stack Entries (LSE) to support
cycle tagging of packets for Multiple Buffer Cyclic Queuing and Forwarding (TCQF).
TCQF is a mechanism to support bounded latency forwarding in DetNet network.</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 a cycle identifier, and a limited number of cycles, e.g.: 3...7 are used to overcome these distance and clock synchronization limitations. Because this memo defines how to use the TC field of MPLS LSE as the tag to carry the cycle identifier, it calls this scheme TC Tagged multiple buffer CQF (TC TCQF). See <xref target="I-D.qiang-DetNet-large-scale-DetNet"/> and <xref target="I-D.dang-queuing-with-multiple-cyclic-buffers"/> for more details of the theory of operations of TCQF. Note that TCQF is not necessarily limited to deterministic operations but could also be used in conjunction with congestion controlled traffic, but those considerations are outside the scope of this memo.</t>

<t>TCQF is likely especially beneficial when MPLS networks are designed 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 and/or BIER-TE <xref target="I-D.ietf-bier-te-arch"/> for tree engineering of MPLS multicast traffic. In these networks, it is specifically undesirable to require per-flow signaling to P-LSR 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 (e.g. In RSVP-TE). 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 MPLS TC 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.</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,
such as in <xref target="TSN-ATS"/>, this requires the use of a per-detnet flow F-Label
across the network from S-PE1 to S-PE2, for example 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 TC TCQF, a sequence of LSR and DetNet service node implements
TC TCQF, ideally from T-PE1 (ingress) to T-PE2 (egress).  The ingress
node needs to perform per-DetNet-flow per-packet "shaping" to  assign
each packet of a flow to a particular TCQF cycle. This ingress-edge-function
is currently out of scope of this document (TBD), but would be based
on the same type of edge function as used in CQF.</t>

<t>All LSR/Service node 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 therefore 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 an 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_tc' describes the parameters for interfaces using MPLS TC tagging.</t>

<t>This configuration model is extensible for interfaces with other tagging,
such as IP/DSCP in other documents.</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]
]]></artwork></figure>

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

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

<t>tcqf contains the router/LSR wide configuration of TCQF parameters,
independent of the specific tagging mechanism on any interface. Any
interface can have a different tagging method.</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/LSR
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.
router/LSR 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.
router/LSR 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. When tcqf_tc[oif] is
configured, oif will use MPLS TC tagging for TCQF. This mapping
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>

</section>
<section anchor="tcqf-with-label-stack-operations"><name>TCQF with 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, 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-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 // other future encap/tagging options for TCQF
  }
  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
     tcqf.if_config[oif]) {    // TCQF enabled
    // Map tcqf_cycle iif to oif
    cycle = pak.context.tcqf_cycle
          = map_cycle(cycle,
            tcqf.if_config[oif].cycle_map[[iif])

    if(tcqf.mpls_tc_tag[iif]) { // TC-TCQF
      pak.mpls_header.lse[tos].tc =
        map_cycle2tc(cycle, tcqf_tc[oif])
    } else // other future encap/tagging options for TCQF

    tcqf_enqueue(pak, oif.cycleq[cycle])
  }
}

// Started when TCQF is enabled on an interface
// dequeues packets from oif.cycleq
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) {
    ingres_flow_2_tcqf(oif,cycle)
    while(tnow < nextcyclestart) { }
    while(pak = dequeue(oif.cycleq(cycle)) {
      send(pak)
    } 
    cycle = (cycle + 1) mod tcqf.cycles + 1
    nextcyclestart += tcqf.cycle_time
  }
}
]]></artwork></figure>

<t>Processing of ingress DetNet packets is performed
via ingres_flow_enqueue(pak) and
ingres_flow_2_tcqf(oif,cycle) as explained in <xref target="ingres_pseudocode"/>.</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 ingres_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])
    }
  }
}
]]></artwork></figure>

<t>ingres_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 ingres_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 requires Time-Gate 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 ingres_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="validation"><name>Validation</name>

<t><xref target="LDN"/> describes an experimental validation of TCQF with high-speed forwarding
hardware and provides further details on the mathematical models.</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="changelog"><name>Changelog</name>

<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>

</section>


  </middle>

  <back>


    <references title='Normative References'>





<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='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='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'>
   <front>
      <title>Tree Engineering for Bit Index Explicit Replication (BIER-TE)</title>
      <author fullname='Toerless Eckert'>
	 <organization>Futurewei Technologies Inc.</organization>
      </author>
      <author fullname='Michael Menth'>
	 <organization>University of Tuebingen</organization>
      </author>
      <author fullname='Gregory 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, RFC8279) packets.  It is called BIER Tree
   Engineering (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; (BP).  They
   indicate adjacencies of the network topology, as opposed to (non-TE)
   BIER in which BPs indicate &quot;Bit-Forwarding Egress Routers&quot; (BFER).  A
   BIER-TE packets BitString therefore indicates the edges of the (loop-
   free) tree that the packet is forwarded across 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;sub-domains&quot; (SDs).
   Except for the optional routed adjacencies, BIER-TE does not require
   a BIER routing underlay, and can therefore operate without depending
   on an &quot;Interior Gateway Routing protocol&quot; (IGP).

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-bier-te-arch-13'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-bier-te-arch-13.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-detnet-bounded-latency'>
   <front>
      <title>DetNet Bounded Latency</title>
      <author fullname='Norman Finn'>
	 <organization>Huawei Technologies Co. Ltd</organization>
      </author>
      <author fullname='Jean-Yves Le Boudec'>
	 <organization>EPFL</organization>
      </author>
      <author fullname='Ehsan Mohammadpour'>
	 <organization>EPFL</organization>
      </author>
      <author fullname='Jiayi Zhang'>
	 <organization>Huawei Technologies Co. Ltd</organization>
      </author>
      <author fullname='Balázs Varga'>
	 <organization>Ericsson</organization>
      </author>
      <date day='8' month='April' year='2022'/>
      <abstract>
	 <t>   This document presents a timing model for sources, destinations, and
   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'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-detnet-bounded-latency-10.txt' type='TXT'/>
</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'>
	 <organization>Futurewei Technologies USA</organization>
      </author>
      <author fullname='Stewart 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'/>
   <format target='https://www.ietf.org/archive/id/draft-eckert-detnet-bounded-latency-problems-00.txt' type='TXT'/>
</reference>


<reference anchor='I-D.qiang-DetNet-large-scale-DetNet'>
   <front>
      <title>Large-Scale Deterministic IP Network</title>
      <author fullname='Li Qiang'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Xuesong Geng'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Bingyang Liu'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Toerless Eckert'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Liang Geng'>
	 <organization>China Mobile</organization>
      </author>
      <author fullname='Guangpeng 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'/>
   <format target='https://www.ietf.org/archive/id/draft-qiang-DetNet-large-scale-DetNet-05.txt' type='TXT'/>
</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'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Joanna 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'/>
   <format target='https://www.ietf.org/archive/id/draft-dang-queuing-with-multiple-cyclic-buffers-00.txt' type='TXT'/>
</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:
H4sIAAAAAAAAA7V9aXMbR5L2d0bwP9RK8a4BCwAPWZbFHU0MRVIebuigCXom
NiSF3ga6ALQFdEPdDVKwrP3t++RRRzcAyRMbyxlTQHcdWVl5Z1ax3+/v742L
NMunJ2ZVT/o/7e/t79VZPbcn5tzWtlxkeVbV2di8svVdUX5AS9PBG3ztmvOk
TszVPMmt6ZuXVy+G5ubM3CTTKbWaFKU5W4/n6PvLyq7oUZKn5nlR3iVlyuNQ
lz51OfvleXd/LxmNSnt7YlJb57buL5bzql+P8f+Pk/29tBjnyQJgpWUyqft2
/MGWdX9L0/7hw/29O6zn/OLm1cUN1pfUdlqU6xNT1en+XrYsT0xdrqr6+PDw
yeHx/l5VlzZZnJjLi5vntP6qBqDvk3mRY7q1rfb3ltnJ/p4xpi7G+kS+pHZZ
z07MI/5eFSUGmlShRbVeNB+Mi8XC5rV7Qv9LVvWsKHn4PrehH1npTWHLua0q
c8GL9W+LEqt7vqpXpb2zmbmx41lezItpZivz6/DUt6N12frEHB8fH5ozzFsm
c3PxaVlizLtk7duNsxrIGSY5dvNsnpRJeFOkgOPs1Dx5dPjoMHq8wmDoE89m
F0k2B2Zr+7dxNZgkq0Fqt61qWFsQQG2elWvM2FzUr3l2a8sK8JhiYoarsrRr
c3k2bE9SDUbc+28VNxkk48Hqw7bJTvMUSDI/D8zLZJ5Vzdn4kTkr8mo1r0GQ
7VmS6YJa/G1KXwfYO9qvvCgXSQ0wecuun589PH586D7/9OOjR/7zkx9/OKEe
WT7Z7HP4xLf74fDYfX5yePQj9zHmsn8+yCxYcpTZsl/bflKOZyeNN0r8I+xG
atP+HHSej9e+TZNFWq36y7IYze2i8s0/Zkk+7Qtro1U5tf1qnMytPvLtUmr2
UTi6f5fVs/6C0LdEyzGze3+0mkywi24hFxcXPx0eD45+Gd0KFxkVMPfoFegB
3AaJwALjRYEpWU4sbF0Wy2Ke4bVJwKAmFwlUmX4fxJOlU5A7tZTPqZNQeG9O
wWUpcZo5fnRiLvJZko8tcx7PMhzPbLqao88NhMkkG98TuCJe9ETCMN5kC9sf
2hyUiV1syMKb4asuZF71wfxcFqvlwEjvFGgG5x0ePWpjQXdxAwupce/76PZY
Z96BnZcxdk4JO9Hq/zxynpx8XUT/H+LlseAFzfqnN8MWSq4UFeW3VuPXAlav
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
93EAAA==

-->

</rfc>

