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


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

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-detnet-glbf-02" category="std" consensus="true" submissionType="IETF" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="detnet-glbf">Deterministic Networking (DetNet) Data Plane - guaranteed Latency Based Forwarding (gLBF) for bounded latency with low jitter and asynchronous forwarding in Deterministic Networks</title>

    <author initials="T." surname="Eckert" fullname="Toerless Eckert" role="editor">
      <organization>Futurewei Technologies USA</organization>
      <address>
        <postal>
          <street>2220 Central Expressway</street>
          <city>Santa Clara</city>
          <code>CA 95050</code>
          <country>USA</country>
        </postal>
        <email>tte@cs.fau.de</email>
      </address>
    </author>
    <author initials="A." surname="Clemm" fullname="Alexander Clemm">
      <organization>Sympotech</organization>
      <address>
        <postal>
          <code>CA</code>
          <country>USA</country>
        </postal>
        <email>ludwig@clemm.org</email>
      </address>
    </author>
    <author initials="S." surname="Bryant" fullname="Stewart Bryant">
      <organization>Independent</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>sb@stewartbryant.com</email>
      </address>
    </author>
    <author initials="S." surname="Hommes" fullname="Stefan Hommes">
      <organization>Rohde &amp; Schwarz</organization>
      <address>
        <postal>
          <country>DE</country>
        </postal>
        <email>stefan.hommes@icloud.com</email>
      </address>
    </author>

    <date year="2026" month="November" day="02"/>

    
    <workgroup>DETNET</workgroup>
    

    <abstract>


<?line 235?>

<t>This memo proposes a mechanism called "guaranteed Latency Based Forwarding" (gLBF) as part of DetNet for hop-by-hop packet forwarding with per-hop deterministically bounded latency and minimal jitter.</t>

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

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

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

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



    </abstract>



  </front>

  <middle>


<?line 253?>

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

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

<dl>
  <dt>CaaS</dt>
  <dd>
    <t>Control as a Service. Cloud (compute) and network services to enable control (loops) with network connected devices, for example cars.</t>
  </dd>
  <dt>CQF</dt>
  <dd>
    <t>Cyclic Queuing and Forwarding.  A queuing mechanism defined by annex T of IEEE802.1Q.</t>
  </dd>
  <dt>DT</dt>
  <dd>
    <t>Dead Time. A term from CQF indicating the time during each cycle in which no frames can be sent because the the receiving node could not receive it into the desired cycle buffer.</t>
  </dd>
  <dt>node</dt>
  <dd>
    <t>Term used to indicate a system that with respect to gLBF does not act as a host, aka: sender/receiver. This memo avoids the term router to avoid implying that this is an IP/IPv6 router, as opposed to an LSR (label switch router). Likewise, a node can also be an 802.1 bridge implementing gLBF.</t>
  </dd>
  <dt>TCQF</dt>
  <dd>
    <t>Tagged Cyclic Queuing and Forwarding. The mechanism specified in this memo.</t>
  </dd>
</dl>

</section>
<section anchor="summary"><name>Summary</name>

<t>This memo proposes a mechanism called "guaranteed Latency Based Forwarding" (gLBF) for
hop-by-hop packet forwarding with per-hop deterministically bounded latency and minimal jitter.</t>

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

<t>At its foundation, gLBF addresses the problems of burst accumulation and jitter accumulation across multiple hops to achieve per-hop fixed latency guarantees. This allows easy calculation of end-to-end latency as the sum of these per-hop latencies.</t>

<t>gLBF especially eliminates the need for a controll-plane to interact with the intermedia hop routers of a gLBF path, simplifying the controller-plane and network operations with it as well as increasing scalability of supportable flows in the network: per-flow state is now only required on ingress routers with gLBF. Note that the controller plane in general is out of scope in this document, <xref target="controller-plane"/> discusses important aspects relevant for system design in conjunction with gLBF, especially also the possible opportunity for decentraliced controller plane/admission control <xref target="decentralized"/>.</t>

<t>Burst accumulation is  the phenomenon in which bursts of packets from senders in admission-controlled network will increase across intermediate nodes. This can only be managed with exponential complexity in admission control processing and significantly worst-case increase in end-to-end latency and/or lowered maximum utilization. What is needed for dynamic, large-scale or easy to manage admission control solutions are forwarding mechanisms without this problem, so that admission control for bandwidth and jitter/buffer-requirements can be linear: decomposed into solely per-hop calculations independent of changes in prior-hop traffic characteristics. Without forwarding plane solutions to overcome burst accumulation, this is not possible</t>

<t>Existing solutions addressing burst-accumulation do this by maintaining inter-packet gaps on a per-flow basis, such as in TSN Asynchronous Traffic Shaping (TSN-ATS). gLBF instead ensures inter-packet gaps are always maintained without the need for per-flow state. The basic idea involves assigning a specific queuing delay budget for any given node and class of traffic. This budget is pre-known from admission control calculus.  As the packet is transmitted, the actual queuing delay that was experienced by the packet at the node is subtracted from that budget and carried in a new header field of the packet.  Upon receiving the packet, the subsequent node subjects the packet to a delay stage.  Here the packet needs to wait for the time specified by that parameter before the node proceeds with regular processing of the packet.  This way, any queuing delay variations are absorbed and deterministic delay without the possibility of burst accumulation can be achieved.</t>

<t>By addressing burst-accumulation, gLBF also overcomes the problem of jitter-accumulation. This is the second core problem of mechanisms such as TSN-ATS: Depending on the amount of competing admitted traffic on a hop at any point in time packets of a flow may experience zero to maximum delay across the hop. This is the per-hop jitter. This jitter is additive across multiple hope, resulting in the inability for applications requiring (near) synchronous packet delivery to solely rely on such mechanisms. It likewise limits the ability of high utilization of networks with large number of bounded latency flows.</t>

<t>The basic principle on which gLBF operates was already proposed by researchers in the early 1990th
and called "Dampers". These dampers where not pursued or adopted due to the lack of network equipment capabilities
back then.  Only with recent and upcoming improvements in advanced forwarding planes will it be possible to
build these technologies at scale and cost.</t>

<t>Contrary to other proposals, gLBF does not require network wide clock synchronization.  Likewise, it does not need to maintain per-flow state at network nodes, as delay budget and the queuing delay variations that are to be absorbed are carried as part of the packets themselves, making them "self-contained".  This eliminate the for the per-flow, per-hop state maintenance required by TSN-ATS, which involves
scaling problems of signaling this per-flow state to every hop from the controller-plane as well as the
high-speed networking hardware implementation cost of high-speed speed read/write memory access to retrieve,
process and update these per-flow state variables for large number of flows.</t>

<t>Opposed to other damper proposals, gLBF also supports the queuing model and calculus of Urgency Based Scheduling (UBS, <xref target="UBS"/>),
which is used by TSN-ATS. gLBF is intended to be a plug-in replacement for
TSN-ATS or as a parallel mechanism beside TSN-ATS because it allows to keeping the same controller-plane
design which is selecting paths for TSN-ATS, sizing TSN-ATS queues, calculating latencies and admitting
flows to calculated paths for calculated latencies.</t>

<t>While gLBF as presented here is intended for use with IETF forwarding protocols and to provide
DetNet QoS for bounded latency and lower bounded jitter, it would equally applicable to other forwarding
planes, such as IEEE 802.1 Ethernet switching - assuming appropriate packet headers are defined
to carry the hop-by-hop and end-to-end metadata required by the mechanism.</t>

</section>
<section anchor="application-scenarios-and-use-cases"><name>Application scenarios and use cases</name>

<t>gLBF addresses the same use cases that are targeted by deterministic networking and high-precision networking services in general.  Common requirements of those services involve the need to provide service levels within very tightly defined service level bounds, in particular very specific latencies without the possibility of congestion-induced loss.  The ability to provide services with corresponding service level guarantees enables many applications that would simply not be feasible without such guarantees.  The following describes some use cases and application scenarios.</t>

<t>The development towards autonomous driving vehicles leads to new requirements and a high demand of computational resources that are often not available within a car. A solution is to reduce the in-car processing to a minimum, and to offload more computational expensive tasks to the cloud environment. Due to the safety implications and use cases, a delay in the transport of message from the cloud to the car and vice versa is often not acceptable. This includes application scenarios such as trajectory planning for driverless vehicles, but also emergency notifications to surrounding cars that require a fast delivery of messages to prevent a delayed action in case of an accident. While the usage of TSN for in-vehicle networks is already investigated and more mature, the usage of a real-time communication with guaranteed latencies for vehicles with to the cloud is still an open challenge.</t>

<t>Another use case that is important for the automotive industry is to further optimise the manufacturing process by taking into account more data sources. Since most of the SCADA systems and PLCs cannot connect to large data lakes and perform more advanced computational jobs, a real-time communication to the shop floor from a cloud instance does have several benefits. First of all does it integrate more data into the decision making process, since the control algorithms to automate manufacturing sites located in a cloud environment can take into account more variables than single plant control systems. Another aspect is also to reduce the resources on a particular factory floor or plant by transferring complex, recurring and more resource computational jobs to a cloud provider where a lack of computational power is not the limiting factor. However, in such cases it is important that associated control can still occur in real-time and according to very precise timing constraints.  Such a development is already foreseen by trends such as Industry 4.0 and Control-as-a-Service (CaaS).</t>

</section>
<section anchor="background"><name>Background</name>

<t>The following background introduces and explains gLBF step by step.
It uses IEEE 802.1 "Time Sensitive Networking" (TSN) mechanisms for reference, because
at the time of this memo, TSN bounded latency mechanisms are the most commonly understood and
deployed mechanisms to provide bounded latency and jitter services.</t>

<t>All mechanisms compared here are as well as those used by TSN based on the overall service design
that traffic flows have a well-defined rate and burstyness, which are tracked by the controller-plane and
called here the "envelope" of the flow.</t>

<t>The traffic model used for gLBF is taken from UBS gives the flow a rate r [bps/sec] and
a burst size b [bits] and the traffic envelope condition is that the total number of
bits w(t) over a period t [sec] of for the flow must be equal to or smaller than (r * t + b).
In one typical case, a flow wants to send a packet of size b one every interval of p [sec].
This translates into a rate r = b / p for the flow because after the flow has sent the first packet
of b bits, it will take p seconds until (r * t) has a size of b again: (r * t) = ((b / p) * p).</t>

<t>The controller-plane uses this per-flow information to calculate for each flow a path with sufficient free bandwidth
and per-hop buffers so that the bounded end-to-end latency of packets can be guaranteed. It then
allocates bandwidth and buffer resources to the flow so that further flows will not impact it.</t>

<t>Within this framework, bounded latency mechanisms can in general be divided into "on-time" and "in-time"
mechanisms.</t>

<section anchor="in-time-mechanisms"><name>In-time mechanisms</name>

<t>"In-time" bounded latency mechanisms forward packets in an (almost) work conserving manner.</t>

<t>When there is no competing traffic in the network, packets of traffic flows that comply
to their admitted envelope are forwarded without any mechanism introduced queuing latency.
When the maximum amount of admitted traffic is present, then packets of admitted flows
will experience the maximum guaranteed, so-called bounded latency. In result, in-time mechanism
introduce the maximum amount of jitter because the amount of competing traffic can
quickly change and then the latency of packets will change greatly.</t>

<t>IEEE TSN Asynchronous Traffic Shaping is the prime example of
an in-time mechanism. IETF <xref target="RFC2212"/>, "Integrated Services" is an older mechanism
based on the same principles.  In-time mechanisms have the benefit of not requiring
clock-synchronization between nodes to support their queuing.</t>

</section>
<section anchor="on-time-mechanisms"><name>On-time mechanisms</name>

<t>On-time bounded latency mechanisms do deliver packets (near) synchronously with zero or a small
maximum jitter - significantly smaller than that of in-time mechanisms.</t>

<t>EEE TSN Cyclic Queuing and Forwarding (CQF) is an example of an on-time
mechanism as is the Tagged Cyclic Queuing and Forwarding (TCQF) mechanism proposed to DetNet.<br />
Unlike the before mentioned in-time mechanisms, these mechanisms require clock synchronization
between router.</t>

</section>
<section anchor="control-loops-vs-in-time-and-on-time"><name>Control loops vs. in-time and on-time</name>

<t>One set of applications that require or prefer on-time (low jitter) delivery of packets are
control loops in vehicles or industrial environments and hence low-speed and short-range networks.</t>

<t>Emerging or future use-cases such as remote PLC or remote driving extend these requirements also
into metropolitan scale networks. In these environments, on-time forwarding is also called
synchronous forwarding for synchronous control loops.</t>

<t>Typically, in synchronous control loops, central units such as Programmable Logic Controllers
(PLC) do control a set of sensors and actors, polling or periodically receiving status information
from sensors and sending action instructions to actors. When packet forwarding is
on-time (synchronous), this central unit does exactly know the time at which sensors
sent a packet and the time at which packets are received by actors and they can react on it.</t>

<t>These solutions do not require sensors and actors to have accurate, synchronised clocks. Instead,
the central unit can control the time at which sensor and actors perform their operations
within the accuracy of the (zero/low) jitter of the network packet transmission.</t>

<t>When bounded latency forwarding is (only) in-time, edge nodes in the network and/or sensors
and actors need to convert the packets arriving with high jitter into an on-time arrival model
to continue supporting this application required model.</t>

<t>This conversion is typically called a playout-buffer mechanism and involves the need to synchronizing time
between senders and receivers, and hence most commonly the need for the network to support clock
synchronization to support these edge devices and/or sender receivers.</t>

<t>In result, existing bounded latency mechanisms to support synchronous, on-time delivery of packets
do require clock synchronization across the network. In the existing mechanisms like CQF for
the forwarding mechanism itself, in the on-time mechanisms to synchronize edge-devices and hosts.</t>

</section>
<section anchor="challenges-with-network-wide-clock-synchronization"><name>Challenges with network wide clock synchronization</name>

<t>Clock synchronization is a well understood technology. It is also a significant operational
and potentially also device equipment cost factor, such as in the difference in hardware
cost for differently accuracte local oscillators in network devices.</t>

<t>Clock synchronization with e.g.: IEEE 1588 PTP is
only deployed where no simpler solutions exist that provide the same benefits but without
clock synchronization. Today this for example means that in mobile networks, only the so-called
fronthaul deploys clock synchronization, but not the backhaul. The required</t>

<t>In result, it could be a challenge
to introduce new applications such as the above mentioned remote PLC or (car) driving applications if
they wanted to rely on a bounded latency network service with current strict clocking requirements.
But even for existing markets such as in-car or industrial networks, removal or reduction of the need
for clock synchronization could be a significant evolution to reduce cost and increase simplicity of solutions.
this reduction in clock synchronization requirements is what gLBF provides.</t>

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

<section anchor="dampers"><name>Dampers</name>

<t>The principle of the mechanism presented here is the so-called "Damper" mechanism, first mentioned
in the early 1990th, but never standardized back then, primarily because the required forwarding
was considered to be too advanced to be supportable in equipment at the time. These limitations
are now starting to be resolved, and hence it seems like a good time to re-introduce this mechanism.</t>

<t>The principle of damper based forwarding is easily explained: When a packet is sent by a node A,
this node will have measured the latency L, how long the packet was processed by the node. The main factor
of L is  the queuing latency of the packet in A because of competing traffic sent to the
same outgoing interface. Based on the admission control and queuing algorithms used in the node, there
can be a known upper bound M(ax) for this processing latency though, and when the packet then arrives at the
next-hop receiving node B, this node will simply further delay the packet by (B-L), and in result
the packet will have synchronously been forwarded from A to B with a constant latency of M(ax).</t>

<figure title="Forwarding without Damper" anchor="FIG1"><artwork><![CDATA[
+------------------------+      +------------------------+ 
| Node A                 |      | Node B                 |
|   +-+         +-+      |      |   +-+         +-+      |
|-x-|F|---------|Q|------|------|-x-|F|---------|Q|------|
|   +-+         +-+      | Link |   +-+         +-+      |
+------------------- ----+      +------------------------+
  |<--------- Hop A/B latency --->|
]]></artwork></figure>

<t><xref target="FIG1"/> shows a single hop from node A to node B without Dampers.</t>

<t>A receives a packet. The F)orwarding module determines some outgoing
interface towards node B where it is enqueued into Q because
competing packets may already be in line to be sent from Q to B.
This is because packets may be arriving simultaneously from multiple
different input interfaces on A (not shown in picture), and/or the
speed of the receiving interface on A is higher than the speed of the
link to B.</t>

<t>Forwarding F can be L2 switching and/or L3 routing, the choice does not
impact the considerations described here.</t>

<t>When the packet is finally sent from Q over link to B, B repeats the same steps
towards the next (not shown) node.</t>

<t>(x) is the reception time of
the packet in A and B, and the per-hop latency of the packet
is xB - xA, predominantly determined by the time the packet has
to wait in Q plus any other relevant processing latency, fixed or
variable from F plus the propagation latency of the packet across
link, which is predominantly determined by the serialization latency
of the packet plus the propagation latency of the link, which is
the speed of light in the material used, for example fiber, where
the speed of light is 31 percent slower than across vacuum.</t>

<t>All the factors impacting the hop A/B latency other than Q in A are
naturally bounded: A well defined maximum can be calculated or
overestimated. The transmission of the packet from A to B is composed
from the serialization latency of the packet which can be calculated
from the packet length of the packet and per-packet-bit speed of the
packet. The propagation latency through the link can be calculated from
speed of light and material (speed of light is 31% slower through fiber than
vacuum for example). And so on.</t>

<t>To have a guaranteed bounded latency through Q, an admission control
system is required that tracks, accounts and limits the total amount
of traffic through Q. Admission control mechanisms rely on knowing the
maximum amount of bursts that each traffic flow can cause and adding
up those bursts to determine the maximum amount of simultaneous packet data
in Q that therefore impacts the maximum latency of each individual packet
through Q.</t>

<t>With such an admission control system, one can therefore calculate
a maximum hop A/B propagation latency MAX for a packet, but 
packets will naturally have variable hop A/B latency lower than MAX,
based on differences in packet size and differences in competing
traffic. In result, their relative arrival times xB in B will be different
from their relative arrival times xA in A. This leads to so-called
"burst-aggregation" and hence the problem that the admission control
system can not easily calculate the maximum burst and latency
through Q in B as it can do for Q in A.</t>

<t>If however packets could be made to be forwarded such that
their Hop A/B latency would all be the same (synchronous, on-time), then the
admission control system could apply the same calculus to
B as it was able to apply to A. This is what damper mechanisms attempt to achieve.</t>

<figure title="Forwarding with Damper" anchor="FIG2"><artwork><![CDATA[
+------------------------+      +------------------------+ 
| Node A                 |      | Node B                 |
|   +-+   +-+   +-+      |      |   +-+   +-+   +-+      |
|-x-|D|-y-|F|---|Q|------|------|-x-|D|-y-|F|---|Q|------|
|   +-+   +-+   +-+      | Link |   +-+   +-+   +-+      |
+------------------------+      +------------------------+
        |<- A/B in-time latency ->|
        |<--A/B on-time latency ------->|
]]></artwork></figure>

<t><xref target="FIG2"/> shows the most simple to explain, but not implement, Damper
mechanism to achieve exactly this. Node A measures the time at
xA, sends this value in a packet header to B. B measures the
time directly at reception of the packet in xB. It then delays
the packet for a time (MAX-(xB-yA)). In result, the latency
(yB-yA) will exactly be MAX, up to the accuracy of the damper.</t>

<t>The first challenge with simple approach is the need to synchronize
the clocks between A and B, so that (xB-yA) can correctly be calculated.</t>

<figure title="Forwarding with Damper and measuring" anchor="FIG3"><artwork><![CDATA[
+------------------------+      +------------------------+ 
| Node A                 |      | Node B                 |
|   +-+   +-+   +-+      |      |   +-+   +-+   +-+      |
|-x-|D|-y-|F|---|Q|----z-|------|-x-|D|-y-|F|---|Q|----z-|
|   +-+   +-+   +-+      | Link |   +-+   +-+   +-+      |
+------------------------+      +------------------------+
        |<- A/B in-time latency ->|
        |<--A/B on-time latency ------->|
]]></artwork></figure>

<t><xref target="FIG3"/> shows how this can be resolved by also measuring the time
at z. A calculates d = (MAX1-(zA-yA)) and sends d in a header of the
packet to B. B then delays the packet in D by d relative to the also
locally measured time xB. Because the calculation of d in A and the
delay by d in D does not depend on clock synchronization between A
and B anymore, this approach eliminate the need for clock synchronization.</t>

<t>But in result of this change, the measurement of latency incurred by
transmitting the packet over link is also not included in this
approach.</t>

<t>MAX1 in this approach is the bounded latency for all processing of
a packet except for this link propagation latency P, equivalent to
the speed of light across the transmission medium times the length of the medium,
and MAX = MAX1 + P.</t>

<t>The serialization latencies latency across the sending interface
on A and the receiving interface on B can be included in MAX1 though.
It is only necessary for the measured timestamps zA and xB to
be the logically for the same point in time assuming the link had a minimum
length, e.g.: for a  back to back connection. For example, the reference
time is the time when the first bit of the packet can be observed
on the shortest wire between A an B. A can most likely measure zA only
some fixed offset o of time before r, hence needs to correct zA += o
before calculating d. Likewise, B could for example only measure xB
exactly after the whole packet arrived. this would be l * r later than
the reference time, where r is the serialization rate of the receiving
interface on B and l is the length of the packet. B would hence need
to adjust d -= l * r to subtract this time from the time the packet
needs to be delayed in D.</t>

<figure title="gLBF refined model" anchor="FIG4"><artwork><![CDATA[
+------------------------+      +------------------------+ 
| Node A                 |      | Node B                 |
| +-+    +-+   +-+   +-+ |      | +-+    +-+   +-+   +-+ |
|-|F|--x-|D|-y-|Q|-z-|M|-|------|-|F|--x-|D|-y-|Q|-z-|M|-|
| +-+    +-+   +-+   +-+ |      | +-+    +-+   +-+   +-+ |
+------------------------+      +------------------------+
       |<- Dampened Q ->|              |<- Dampened Q ->|
             |<- A/B in-time latency ->|
             |<--A/B on-time latency ------->|
]]></artwork></figure>

<t><xref target="FIG4"/> shows a further refined model for simpler implementation.
Larger routers/switches are typically modular, and forwarding
happens on a different modular component (such as a linecard)
than the queuing for the outgoing interface. Expecting clock
synchronization even within such a large device is undesirable.</t>

<t>In result, <xref target="FIG4"/> shows damper operation as occurring solely before
enqueuing packets into Q and after dequeuing them. The Damper
module measures the x timestamp, extracts d from the packet header,
adjusts it according to the above described considerations and then
delays the packet by that value and enqueues the packet afterwards. 
After the packet is dequeued, the Marking module measures the time
z, adjusts it according to the previously described considerations
calculates the value of d and overwrites the packet header before
sending the packet.</t>

</section>
<section anchor="dampers-and-controller-plane"><name>Dampers and controller-plane</name>

<figure title="Path selection and gLBF example" anchor="FIG5"><artwork><![CDATA[
         Controller-plane:
        Path Control  and
         Admission Control
      ..     .      .      ..
     .       .       .       . 
   +---+   +---+   +---+   +---+  Src---| A |---| B |---| C |---| D |
   +---+   +---+   +---+   +---+
     |       |       |       |
   +---+   +---+   +---+   +---+
   | E |---| F |---| G |---| H |--- Dst
   +---+   +---+   +---+   +---+
]]></artwork></figure>

<t>While the damper mechanism described so far can be realized with different
queuing mechanisms and hence different calculus for every interface
for which bounded latency can be supported, the role of the controller
plane involves other components beside admission control, and those
need to be possible to tightly be coupled with admission control for
efficient use of resources.</t>

<t><xref target="FIG5"/> shows the most common problem. The controller-plane needs to
provide for a new traffic flow from Src to Dst a path through the
network and reserve the resources. The most simple form for just bandwidth
reservation is called Constrained Shortest Path First (CSPF). With the
need to also provide end-to-end latency guarantees in support of bounded
latency, not only does the path calculation becomes more complex, but
many per-hop bounded latency queuing mechanisms support also to select
more than one per-hop latency on the hop, and the controller-plane
needs to determine for each hop of a possible hop, which one is best.</t>

<t>In result, the controller-plane needs to know exactly what parameters
the bounded latency queuing mechanism on each hop/interface can have
to perform these operations, and standardization of these parameters
ultimately results in standardizing the bounded latency queuing mechanism -
and not only the damper part.</t>

</section>
</section>
<section anchor="glbf-spec"><name>gLBF specification (normative)</name>

<section anchor="damper-with-ubs-queuingcalculus"><name>Damper with UBS queuing/calculus</name>

<t>guaranteed Latency Based Forwarding (gLBF) is using the queuing model
of Urgency Based Scheduling (UBS), which is also used in TSN
Asynchronus Traffic Shaping (TSN-ATS).  This allows gLBF to
re-use or co-develop one and the same controller-plane and its
optimization algorithms for bandwidth and latency control for
TSN-ATS or a DetNet L3 equivalent thereof and gLBF. Hence, gLBF
should provide the most easily operationalised on-time solution
for networks that want to evolve from an in-time model via TSN-ATS,
or that even would want to operate both options in parallel.</t>

<t>Effectively, gLBF replaces the per-flow interleaves regulators of UBS
with per-flow stateless damper operations. Where UBS only provides
for in-time latency guarantees, gLBF provides in result in-time
latency service, but with fundamentally the same calculus as UBS.</t>

<figure title="Path selection and gLBF example" anchor="FIG6"><artwork><![CDATA[
   +-----------------------------------------------+
   | UBS strict priority Queuing block             |
   |                                               |
   |               +--------------+   +----------+ |
   | +-------+   /-| Prio 1 queue |---|          | |
   | | Packet|  /  +--------------+   | Strict   | |
-->| | Prio  |->         ...         -| Priority | |--->
   | | enque |  \  +--------------+   | Schedule | |
   | +-------+   \-| Prio 8 queue |---|          | |
   |               +--------------+   +----------+ |
   +-----------------------------------------------+
]]></artwork></figure>

<t>Strict Priority Scheduling removes packets always from the
highest priority queue (1 is highest) that has a pending packet
and forward it. UBS defines two options for the traffic model
traffic flows. The more flexible one defines that each flow
specifies a rate r and a maximum burst size b (in bits).</t>

<t>In result, the bounded latency of a packet in priority 1 is (roughly)
the latency required to serialize the sum of the bursts 
of all the flows admitted into priority 1. The bounded latency of a packet
in priority 2 is that priority latency plus the latency required
to serialize the sum of the bursts of all the flows admitted into
priority 2. And so on.</t>

</section>
<section anchor="glbf-processing"><name>gLBF processing</name>

<t>The following text extends/refines the damper processing as necessary
for gLBF.</t>

<figure title="refined gLBF processing diagram" anchor="FIG7"><artwork><![CDATA[
   +------------------------+       +------------------------+ 
   | Node A                 |       | Node B                 |
   | +-+    +-+   +-+   +-+ |       | +-+    +-+   +-+   +-+ |
 --|-|F|--x-|D|-y-|Q|-z-|M|-|-------|-|F|--x-|D|-y-|Q|-z-|M|-|--->
IIF| +-+    +-+   +-+   +-+ |OIF IIF| +-+    +-+   +-+   +-+ |OIF
   +------------------------+       +------------------------+
          |<- Dampened Q ->|               |<- Dampened Q ->|
                |<- A/B in-time latency -->|
                |<--A/B on-time latency -------->|
]]></artwork></figure>

<t>The Delay module retrieves the delay from a packet header fields,
requirements for that packet header field are defined in <xref target="DM"/>.</t>

<t>Because serialization speeds on the Incoming InterFace (IIF) will be different
for different IIF, and because D will likely need to compensate the measured
time x based on the packet length and serialization speed, an internal
packet header should maintain this information. Note that this is solely
an implementation consideration and should not impact the configuration model
of gLBF.</t>

<t>The Queuing module is logically as described in UBS, except that
the priority of a packet in gLBF is not selected based on per-flow state,
but instead an appropriate packet header field of the packet is looked
up in the Packet Prio Enque stage of Q and the packet accordingly
enqueued based on that fields value. Possible options for indicating
such a priority in a packet header field are defined below in <xref target="DM"/>.</t>

<t>Like Q, M also needs to look up the packet priority to know MAX1 for
the packet and hence calculate d that it rewrites in the packet header.</t>

<t>The overall configuration data model to be defined for gLBF is hence
the configuration data model for UBS, which is a set of priority queues
and their maximum size, and in addition for gLBF for each of these
queues a controller-plane calculated MAX maximum latency value to be used
by node M.</t>

<t>Given how the node knows the serialization speed of OIF, MAX1 for each of
the queues could automatically be derived from the maximum length in bytes
for each of the UBS priority queues. Additional configuration parameters
to fine tune the latency, such as making it some percent higher as a
safety margin might be beneficial though. Such implementation details are
outside the scope of this specification.</t>

<t>TBD: paint a small yang-like data model, even though its trivial, like in the TCQF draft.
This should primarily include additional diagnostic data model elements,
such as maximum occupancy of any of the priority queus and number of overruns.</t>

</section>
<section anchor="error-handling"><name>Error handling</name>

<t>A well specified standard for a damper mechanism such as described in
this document needs to take care of error cases as well. The prime error
condition is, when the sending node A of a gLBF packet recognizes that
the packet was enqueued for longer than MAX1 and hence the to-be-calculated
delay to be put into the packet would have to be &lt; 0.</t>

<t>In this case, error signaling, such as ICMPv6/ICMP needs to be triggered
(throttled !), and the packet be discarded - to avoid failure of admission
control / congestion further down the path for other packets as well.</t>

<t>The data model (below) describes an optional data model that allows
instead of discarding of the packet to signal an ECN like mechanism together
with lower-priority forwarding of such packet to inform the receiver directly
about the problem and allow the application to deal with such conditions
better than through other error signaling.</t>

</section>
<section anchor="DM"><name>Data Model for gLBF packet metadata</name>

<t>gLBF is specifically designated to support per-hop, per-flow stateless
operations because it does not require any per-flow, but only per-packet
metadata for its processing. While it is possible to</t>

<section anchor="damper-24-bit-value-unit-1-usec"><name>damper:  24 bit value, unit 1 usec.</name>

<t>This is a value potentially different for every packet in a flow
and it is rewritten by every gLBF forwarder along the path.</t>

<t>gLBF requires a packet header indicating the delay that the damper
on the next hop needs to apply to the packet. Dampening only needs
to be accurate to the extent that synchronous delivery needs to be
accurate. A unit of 1 usec is considered today to be sufficient for
all purposes. The maximum size of delay is the maximum per-hop
queuing latency. 65 msec is considered to be much more than ever
desirable. Therefore, a 16 bit header field is sufficient.</t>

<t>Note that link propagation latency does not impact delay. Hence
the size of delay does not create any constraint on the length of links.</t>

</section>
<section anchor="end-to-end-priority-3-bits"><name>end-to-end-priority: 3 bits</name>

<t>This is a field that needs to be the same for all packets of
a flow so that they will be forwarded with the same latency
processing and hence do not incur different latencies and therefore
possible reordering. This field is written when the packet
enters the gLBF path and only read.</t>

<t>8 Priorities and hence 8 different latencies per hop are considered
sufficient on a per-hop basis. If prio is an end-to-end packet header 
field such as by using 8 different DSCP in IPv6/IP, this results in
8 different latency traffic classes.</t>

</section>
<section anchor="hop-by-hop-priority-3-bits-per-hop"><name>hop-by-hop-priority: 3 bits (per hop)</name>

<t>This is a better, more advanced alternative to the end-to-end-priority.
This data is optional. If it is present for a particular hop, then
it supersedes the end-to-end-priority.</t>

<t>Because this data is per-hop, it should not be encoded in an
end-to-end part of the packet header, but into a hop-by-hop part of the
header:</t>

<t>Because DetNet traffic needs the resources of each flow to be controlled,
re-routing of DetNet flows without the controller-plane is highly
undesirable and could easily result in congestion. A per-hop,
per-flow stateless forwarding mechanism such as SR-MPLS or SRv6 is
therefore highly desirable to provide a per-hop steering field. The priority
could easily be part of such a per-hop steering field by allocating
dynamically, or on-demand up to 8 different SID (Segment IDentifiers),
such as up to 8 MPLS labels, or using 3 bits of the parameter field
of IPv6 SIDs.</t>

<t>When such per-hop priority is indicated, the controller-plane can
support much more than 8 end-to-end latencies, simply by using different
per-hop latencies. For example one flow may use priority 1-1-1-1-1
across four hops, the new slower flow may use 1-2-1-2 across 4 hops,
the next one may use 2-2-2-2, and so on.</t>

</section>
<section anchor="phop-prio-3-bits"><name>phop-prio: 3 bits</name>

<t>This field is re-written on every hop when hop-by-hop-priorities are used.</t>

<t>This is an optional field which may be beneficial in and end-to-end
header if hop-by-hop priorities are used for forwarding in gLBF
and the hop-by-hop-priority of the packet on the prior hop is not
available from the hop-by-hop packet header anymore. This is typically
the case in MPLS based forwarding, such as SR-MPLS because this information
would have been removed. Note that this header field is only required
in support of optional simplified high-speed forwarding implementation
options.</t>

</section>
<section anchor="error-handling-data-items"><name>Error handling data items</name>

<t>Di: one bit</t>

<t>Downgrade intent. This bit is set when the packet enters the gLBF
domain and never changed.</t>

<t>Ds: one bit</t>

<t>Downgrade status. This bit is set to 0 when the packet enters the
gLBF domain and potentially changed to 1 by one gLBF forwarder
as described in the following.</t>

<t>When the Di bit is not set, and a gLBF forwarder recognizes that the
packet can not be forwarded within its guaranteed latency, the packet
is discarded and forwarding plane specific error signaling is triggered
(such as IGMP/ICMPv6). Discarding is done to avoid causing latency
errors further down the path because of this packet.</t>

<t>When this bit is set, the packet will not be discarded, but instead
the Ds bit is set to indicate that the packet must not be forwarded
with gLBF guaranteed latency anymore, but only with best or even
lower-than-best effort.</t>

<t>Di and DS may be encoded into the two ECN bits for IP/IPv6 dataplanes.
The required behavior should be backward compatible with existing
ECN implementations should the packet unexpected pass a router that
processes the packet not as gLBF.</t>

</section>
<section anchor="accuracy-and-sizing-of-the-damper-field-considerations"><name>Accuracy and sizing of the damper field considerations</name>

<t>This memo recommends that the damper field in packet headers has
a size of 24 bits or larger and represents the dampening time with
a resolution of 1 nsec. The following text explains the reasoning
for this recommendation.</t>

<t>The accuracy needed for the damper value in the packet header as well
as the internal calculations performed for gLBF depends on a variety of
factors. The most important factor is the accuracy of the provided
bounded latency as desired/required by the applications.</t>

<t>Even though Ethernet is defined as an asynchronous medium, the
clock accuracy is required to be +- 100 ppm (part per million). For a
1500 byte packet across a 100 Mbps Ethernet the propagation
latency difference between fastest and slowest clock is 24 nsec.
If gLBF is to be supported also on such slower speed networks with
multiple hops, then these errors may add up (?), and it is likely
not possible to provide end-to-end propagation latency accuracy
much better than 1 usec without requiring more transmission
accuracy through mechanisms such as PTP - which gLBF attempts
to avoid/minimize. For higher speed links, errors in short term
propagation latency variation becomes irrelevant though.</t>

<t>In WAN network deployments, propagation latency is in the order of
msec such as ca. 1 msec for 250 Km of fiber. Serialization latency
on a 1gbps Ethernet is ca. 1 usec for a 128 byte packet. It is
likely that an accuracy of propagation latency in the order of
1 usec is sufficient when the round-trip-time is potentially
1000 times faster.</t>

<t>In result of these two simple data points, we consider that the
accuracy of end-to-end propagation latency of interest is 1 usec.
To avoid introducing additive errors, the resolution
of the damper value needs to be higher. This memo therefore
considers to use 1 nsec resolution to represent damper values.
This too is the value used in PTP.</t>

<t>The maximum value and hence the size of the damper field in
packets depends on the maximum latency introduced in
buffering on the sending node plus smaller factors such
as serialization latency. This maximum is primarily depending
on the slowest links to be supported. A 128 byte packet
on a 100 Mbps link has ca. 10 usec propagation latency.
With just 16 bit damper value with nsec accuracy this would
allow only 6 packet buffers. This may be too low. Hence
the damper field should at minimum be at least 24 bits.</t>

</section>
</section>
<section anchor="ingress-and-egress-processing"><name>Ingress and Egress processing</name>

<section anchor="network-ingress-edge-policing"><name>Network ingress edge policing</name>

<t>When packets enter a gLBF domain from a prior hop,
such as a node from a different domain or a sending host, and that
prior hop is sending gLBF packet markings, then the timing
of the packet arrival as well as the markings in packet header(s) for
gLBF MUST only be observed when that prior hop is trusted by the gLBF domain</t>

<t>If the prior hop can not be trusted for correct marking and/or timing of
the packets, the first-hop gLBF node in the gLBF domain MUST implement
a per-flow policer for the flow to avoid that packets from such a prior hop will cause
problems with gLBF guarantees in the gLBF domain.</t>

<t>A policer is to be placed logically after the damper module of gLBF and 
before the queuing module.</t>

<t>Instead of a policer, the ingress edge node of the gLBF domain MAY instead
use a per-flow shaper or interleaved regulator. When a prior hop sends
for example packets of a flow with too high a rate, a shaper would
attempt to avoid discard packets from such a flow until also the burst size
of the flow is exceeded, by further delaying them. A policer would immediately
discard any packets that does not meet their flows envelope.</t>

</section>
<section anchor="glbf-sender-types"><name>gLBF sender types</name>

<section anchor="simple-glbf-senders"><name>Simple gLBF senders</name>

<t>Senders are expected to send their traffic flows such that their
relative timing complies to the admitted traffic envelope. Senders
that for example only send one flow, such as simple sensors or
actors, typically will be able to do this.</t>

<t>When senders can actually do this (send packets for gLBF with the
right timing), then these packets do not need to have gLBF packet header elements.
Instead, this ingress network node can calculate the damper time locally from
the following consideration to avoid any need for gLBF processing
in the sender.</t>

<t>The maximum gLBF damper time in this case is the serialization time of the largest packet
for gLBF received from the sender. Thus, when the sender sends smaller
packets than the maximum admitted packet size, then the first hop network
node needs to dampen packets based on that difference in serialization time.</t>

</section>
<section anchor="normal-glbf-senders"><name>Normal gLBF senders</name>

<t>When senders can not fully comply to send packets with their
admitted envelope, then they need to implement gLBF and indicate in the packet header the
gLBF damper value. For example, when the sender can not ensure that
at the target sending time of a gLBF packet the outgoing interface is
free, then that other still serializing packet will impact the timing
of the following packet(s) for gLBF. Another reason is when the sender has to send
packets from multiple flows and those can not or are are not generated in a coordinated
fashion to avoid delay, then they could compete on the outgoing interface
of the sender, introducing delay.</t>

<t>Normal gLBF senders simply need to implement the queue and marking stage
of gLBF, but not the dampening stage, because that only applies to receivers/forwarders.</t>

</section>
<section anchor="non-glbf-senders"><name>Non gLBF senders</name>

<t>When senders can not be simple gLBF senders but can also not
implement the gLBF queuing and marking stage, then the following
first hop node of the gLBF domain needs to treat them like untrusted
prior hop but always use a shaper or interleaved regulator so as not
to discard their packets.</t>

</section>
</section>
<section anchor="receivers-and-glbf"><name>receivers and gLBF</name>

<section anchor="normal-glbf-receivers"><name>Normal gLBF receivers</name>

<t>Normal gLBF receivers can process packet gLBF markings and need to 
therefore implement the gLBF dampening block.</t>

</section>
<section anchor="glbf-incapable-receivers"><name>gLBF incapable receivers</name>

<t>When receivers can not implement the gLBF dampening stage, then
the worst-case burst that may arrive at the receiver is to be
counted as added jitter to the end-to-end service.</t>

<t>It is impossible to let the network eliminate such bursts without
additional coordination and gating of packets across all senders
and their network ingress nodes by gating of those packets. This is
not a gLBF specific issue, but simply a limitation of the (near)
synchronous service model offered by gLBF and equally exists
in any delay and latency model with this type of service:</t>

<t>Consider a set of N senders conspire to generate a burst at the
same receiver. They do know from the admission control model the
latency each of them has to that receiver and can thus time the generation
of packets such that the last-hop router would have to send all those
N packets (one from each sender) in parallel on the interface. Which
is obviously not possible.</t>

<t>With gLBF capable receivers, this possible burst is taken into account
by including the latency introduced by such a worst-case burst into the
end-to-end latency through the controller-plane, and indicating the actual
latency that the packet needs to be dampened in the gLBF header field to the receiver.
But when the receiver does not support such dampening, then that
maximum last-hop burst-size simply turns into possible jitter.</t>

</section>
</section>
<section anchor="further-considerations"><name>Further considerations</name>

<t>A host may be a different type of gLBF sender than it is gLBF receiver.
In a common case in cloud applications, a container or VM in a data center
may the a sender/receiver, and such an application may be considered
to be trusted by the gLBF domain if it is an application of the network
operator itself (such as part of a higher level service of the network operator),
but not when it is a customer application.</t>

<t>gLBF marking needs to happen after contention of packets from all applications,
so it is something that can considered to happen inside the operating system.
This operating system of such a host may not (yet) implement gLBF, so
it may not be possible to correctly generate the gLBF marking as a sender.
Instead, the application may generate the appropriate packet markings for
steering and gLBF, but may need to leave the damper marking incorrect.</t>

<t>On the other hand, dampening received gLBF packets on a receiver can happen at the
application level, so that the operating system does not need to do it. Such
dampening is exactly the same functionality that in applications is normally
called "playout buffering", except that it will be a much smaller amount of
delay time because playout buffering needs to take the whole path delay into
account, whereas gLBF dampening is only for the prior hop.</t>

</section>
<section anchor="summary-1"><name>Summary</name>

<t>There is a non-trivial set of options for ingress/egress processing
that could be beneficial to simplify and secure dealing with different
type of sender and receivers.</t>

<t>Later versions of this memo can attempt
to define specific profiles of edge behavior to limit the recommended
set of implememtation options for sender/receivers and gLBF edge nodes.</t>

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

<section anchor="glbf-versus-ubs-tsn-ats"><name>gLBF versus UBS / TSN-ATS</name>

<t>By relying on <xref target="UBS"/> for both the traffic model as well as the
bounded latency calculus, gLBF should be easy to operationalize
by relying on controller-plane implementations for TSN-ATS: UBS/TSN-ATS
and gLBF provide the same bounded latency and use the same model
to manage bandwidth for different flows: By calculating which
flow needs to go on which hop into which priority queues.</t>

<t>The main change to a UBS/TSN-ATS controller-plane when using gLBF
is that when a flow is to be admitted into the network, removed,
or rerouted. In UBS, each of these operations imply that the
controller-plane needs to signal to each node along the path
the traffic flow parameters so the forwarding plane can establish
the per-hop,per-flow state for the flow. Depending on network
configuration this will also imply configuration of the next-hop
for the flow for the routing.</t>

<t>For gLBF hop-by-hop operations, the first hop needs to receive
the per-path or per-hop priority information that is then imposed
into an appropriate packet header for the flows packets.</t>

</section>
<section anchor="first-hop-policing"><name>first-hop policing</name>

<t>In gLBF, the controller-plane has to perform this action only against
the ingress node to the gLBF domain. The traffic parameters such as
rate and burst size are only relevant to establish a policer so
that the flow can not violate the admitted traffic parameters for
the flow. This "policing" on the first hop is actually a function
independent of gLBF, UBS or any other method used across the path.</t>

</section>
<section anchor="path-steering"><name>path steering</name>

<t>gLBF operated independently of the path steering mechanism, but
the controller-plane will very likely want to ensure that gLBF
(or for that matter any DetNet) traffic does not unexpectedly gets
rerouted by in-networking routing mechanisms because normally
it will or can not reserve resources for such re-routed flows
on such arbitrary failure paths without significant additional
effort and/or waste of resources.</t>

</section>
<section anchor="decentralized"><name>decentralized controller plane</name>

<t>Todays deployment of (pre DetNet) controller planes commonly uses one centralized
"SDN" controller to implement the functions of the "Path
Computation Engine" (PCE) which tracks free bandwith
for every hop in the network topology and can hence calculate on
which path enough resources for a requested new flow are available.
For example, this is the typical deployment with RSVP-TE and Segment Routing.</t>

<t>However, it is equally possible to design a fully decentralized
controller plane especially for detnet networks which may not have
all the complex policy requirements that make a centralized PCE
most desirable. This is due to the fact that the controller-plane
does not need to inderact with non-ingress routers in gLBF during
dynamic allocation of resources to new traffic flows.</t>

<t>The model for fully decentralized controller plane could be derived
from the model developed and in deployment for RSVP-TE (without centralized
PCE) where the ingress routers (LSR) do perform path calculations based on
IGP flooded information about available resources across every hop.
Hoewever, the necessary protocol operations may not ideally lend
themselves to existing IGPs but may even need to develop a new
decentrallized controller plane.</t>

<t>Note though, that all (complex) considerations about the controller
plane do not even need to apply for deployments, where the total
amount of gLBF is well defined and so small versus available capacity
that even under supported failures in the network no bandwidth resource
exhaustion would happen. In those cases, gLBF is still necessary
to guarantee the latency for traffic, but the whole controller plane
is reduced to a network capacity planning and ingress-router 
configuration task. This "controller-plane-free" mode of operation
is standard-practice in many large service provider networks for
traffic that requires guaranteed bandwidth but has statically known
(limited capacity requirements, such as IPTV.</t>

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

<t>None yet.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>Thanks to Florian Kauer for his input.</t>

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

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

<t>Individual document (draft-eckert-detnet-glbf)</t>

<t>00 Initial version.</t>

<t>01 Added use cases from  Stefan</t>

<t>02 refresh only, waiting for progress in WG discussion</t>

<t>03 refresh, affiliation change of co-author</t>

<t>04 refresh, still waiting for more discuss in detnet</t>

<t>05 refresh, still waiting for more discuss in detnet</t>

<t>06 added Solution Scope, Taxonomy and Status for DetNet adoption considerations</t>

<t>07 Fixed author address (hommes)</t>

<t>WG document (draft-ietf-detnet-glbf)</t>

<t>00 Initial version</t>

<t>01 Just refreshing. Ran out of time to incorporate outstanding feedback for IETF126. Sorry
   Will get too it within a month.</t>

<t>02 Updated author address (hommes). Changes in response to the WG adoption
   review by Florian Kauer:</t>

<t><list style="symbols">
  <t>Summary: added that with gLBF the controller-plane only needs to interact
with (and per-flow state is only needed on) ingress routers, with pointers
to the controller-plane considerations.</t>
  <t>New section "decentralized controller plane": centralized SDN/PCE
controller-plane as today's deployment model, option for a decentralized
controller-plane, and "controller-plane-free" deployments.</t>
  <t>Fixed "TSN-ATN" -&gt; "TSN-ATS" and "not starting" -&gt; "now starting".</t>
  <t>Resolved TBDs: clock synchronization cost factor, MAX1 fine-tuning.</t>
</list></t>

<t>Other changes:</t>

<t><list style="symbols">
  <t>Summary: per-hop fixed latency guarantees, end-to-end latency as sum of
per-hop latencies.</t>
  <t>Clock synchronization challenges: stated that gLBF reduces clock
synchronization requirements.</t>
  <t>Status: added the declarative traffic engineering implementation (<xref target="dgLBF"/>).</t>
  <t>Added Acknowledgements section.</t>
</list></t>

</section>


  </middle>

  <back>


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

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



<reference anchor="RFC2210">
  <front>
    <title>The Use of RSVP with IETF Integrated Services</title>
    <author fullname="J. Wroclawski" initials="J." surname="Wroclawski"/>
    <date month="September" year="1997"/>
    <abstract>
      <t>This note describes the use of the RSVP resource reservation protocol with the Controlled-Load and Guaranteed QoS control services. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2210"/>
  <seriesInfo name="DOI" value="10.17487/RFC2210"/>
</reference>
<reference anchor="RFC2212">
  <front>
    <title>Specification of Guaranteed Quality of Service</title>
    <author fullname="S. Shenker" initials="S." surname="Shenker"/>
    <author fullname="C. Partridge" initials="C." surname="Partridge"/>
    <author fullname="R. Guerin" initials="R." surname="Guerin"/>
    <date month="September" year="1997"/>
    <abstract>
      <t>This memo describes the network element behavior required to deliver a guaranteed service (guaranteed delay and bandwidth) in the Internet. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2212"/>
  <seriesInfo name="DOI" value="10.17487/RFC2212"/>
</reference>
<reference anchor="RFC2474">
  <front>
    <title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
    <author fullname="K. Nichols" initials="K." surname="Nichols"/>
    <author fullname="S. Blake" initials="S." surname="Blake"/>
    <author fullname="F. Baker" initials="F." surname="Baker"/>
    <author fullname="D. Black" initials="D." surname="Black"/>
    <date month="December" year="1998"/>
    <abstract>
      <t>This document defines the IP header field, called the DS (for differentiated services) field. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2474"/>
  <seriesInfo name="DOI" value="10.17487/RFC2474"/>
</reference>
<reference anchor="RFC3270">
  <front>
    <title>Multi-Protocol Label Switching (MPLS) Support of Differentiated Services</title>
    <author fullname="F. Le Faucheur" initials="F." role="editor" surname="Le Faucheur"/>
    <author fullname="L. Wu" initials="L." surname="Wu"/>
    <author fullname="B. Davie" initials="B." surname="Davie"/>
    <author fullname="S. Davari" initials="S." surname="Davari"/>
    <author fullname="P. Vaananen" initials="P." surname="Vaananen"/>
    <author fullname="R. Krishnan" initials="R." surname="Krishnan"/>
    <author fullname="P. Cheval" initials="P." surname="Cheval"/>
    <author fullname="J. Heinanen" initials="J." surname="Heinanen"/>
    <date month="May" year="2002"/>
    <abstract>
      <t>This document defines a flexible solution for support of Differentiated Services (Diff-Serv) over Multi-Protocol Label Switching (MPLS) networks. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3270"/>
  <seriesInfo name="DOI" value="10.17487/RFC3270"/>
</reference>
<reference anchor="RFC8655">
  <front>
    <title>Deterministic Networking Architecture</title>
    <author fullname="N. Finn" initials="N." surname="Finn"/>
    <author fullname="P. Thubert" initials="P." surname="Thubert"/>
    <author fullname="B. Varga" initials="B." surname="Varga"/>
    <author fullname="J. Farkas" initials="J." surname="Farkas"/>
    <date month="October" year="2019"/>
    <abstract>
      <t>This document provides the overall architecture for Deterministic Networking (DetNet), which provides a capability to carry specified unicast or multicast data flows for real-time applications with extremely low data loss rates and bounded latency within a network domain. Techniques used include 1) reserving data-plane resources for individual (or aggregated) DetNet flows in some or all of the intermediate nodes along the path of the flow, 2) providing explicit routes for DetNet flows that do not immediately change with the network topology, and 3) distributing data from DetNet flow packets over time and/or space to ensure delivery of each packet's data in spite of the loss of a path. DetNet operates at the IP layer and delivers service over lower-layer technologies such as MPLS and Time- Sensitive Networking (TSN) as defined by IEEE 802.1.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8655"/>
  <seriesInfo name="DOI" value="10.17487/RFC8655"/>
</reference>
<reference anchor="RFC8200">
  <front>
    <title>Internet Protocol, Version 6 (IPv6) Specification</title>
    <author fullname="S. Deering" initials="S." surname="Deering"/>
    <author fullname="R. Hinden" initials="R." surname="Hinden"/>
    <date month="July" year="2017"/>
    <abstract>
      <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="86"/>
  <seriesInfo name="RFC" value="8200"/>
  <seriesInfo name="DOI" value="10.17487/RFC8200"/>
</reference>
<reference anchor="RFC8964">
  <front>
    <title>Deterministic Networking (DetNet) Data Plane: MPLS</title>
    <author fullname="B. Varga" initials="B." role="editor" surname="Varga"/>
    <author fullname="J. Farkas" initials="J." surname="Farkas"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="A. Malis" initials="A." surname="Malis"/>
    <author fullname="S. Bryant" initials="S." surname="Bryant"/>
    <author fullname="J. Korhonen" initials="J." surname="Korhonen"/>
    <date month="January" year="2021"/>
    <abstract>
      <t>This document specifies the Deterministic Networking (DetNet) data plane when operating over an MPLS Packet Switched Network. It leverages existing pseudowire (PW) encapsulations and MPLS Traffic Engineering (MPLS-TE) encapsulations and mechanisms. This document builds on the DetNet architecture and data plane framework.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8964"/>
  <seriesInfo name="DOI" value="10.17487/RFC8964"/>
</reference>



    </references>

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



<reference anchor="RFC3209">
  <front>
    <title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
    <author fullname="D. Awduche" initials="D." surname="Awduche"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="D. Gan" initials="D." surname="Gan"/>
    <author fullname="T. Li" initials="T." surname="Li"/>
    <author fullname="V. Srinivasan" initials="V." surname="Srinivasan"/>
    <author fullname="G. Swallow" initials="G." surname="Swallow"/>
    <date month="December" year="2001"/>
    <abstract>
      <t>This document describes the use of RSVP (Resource Reservation Protocol), including all the necessary extensions, to establish label-switched paths (LSPs) in MPLS (Multi-Protocol Label Switching). Since the flow along an LSP is completely identified by the label applied at the ingress node of the path, these paths may be treated as tunnels. A key application of LSP tunnels is traffic engineering with MPLS as specified in RFC 2702. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3209"/>
  <seriesInfo name="DOI" value="10.17487/RFC3209"/>
</reference>
<reference anchor="RFC4875">
  <front>
    <title>Extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE Label Switched Paths (LSPs)</title>
    <author fullname="R. Aggarwal" initials="R." role="editor" surname="Aggarwal"/>
    <author fullname="D. Papadimitriou" initials="D." role="editor" surname="Papadimitriou"/>
    <author fullname="S. Yasukawa" initials="S." role="editor" surname="Yasukawa"/>
    <date month="May" year="2007"/>
    <abstract>
      <t>This document describes extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for the set up of Traffic Engineered (TE) point-to-multipoint (P2MP) Label Switched Paths (LSPs) in Multi- Protocol Label Switching (MPLS) and Generalized MPLS (GMPLS) networks. The solution relies on RSVP-TE without requiring a multicast routing protocol in the Service Provider core. Protocol elements and procedures for this solution are described.</t>
      <t>There can be various applications for P2MP TE LSPs such as IP multicast. Specification of how such applications will use a P2MP TE LSP is outside the scope of this document. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4875"/>
  <seriesInfo name="DOI" value="10.17487/RFC4875"/>
</reference>
<reference anchor="RFC8296">
  <front>
    <title>Encapsulation for Bit Index Explicit Replication (BIER) in MPLS and Non-MPLS Networks</title>
    <author fullname="IJ. Wijnands" initials="IJ." role="editor" surname="Wijnands"/>
    <author fullname="E. Rosen" initials="E." role="editor" surname="Rosen"/>
    <author fullname="A. Dolganow" initials="A." surname="Dolganow"/>
    <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
    <author fullname="S. Aldrin" initials="S." surname="Aldrin"/>
    <author fullname="I. Meilik" initials="I." surname="Meilik"/>
    <date month="January" year="2018"/>
    <abstract>
      <t>Bit Index Explicit Replication (BIER) is an architecture that provides optimal multicast forwarding through a "multicast domain", without requiring intermediate routers to maintain any per-flow state or to engage in an explicit tree-building protocol. When a multicast data packet enters the domain, the ingress router determines the set of egress routers to which the packet needs to be sent. The ingress router then encapsulates the packet in a BIER header. The BIER header contains a bit string in which each bit represents exactly one egress router in the domain; to forward the packet to a given set of egress routers, the bits corresponding to those routers are set in the BIER header. The details of the encapsulation depend on the type of network used to realize the multicast domain. This document specifies a BIER encapsulation that can be used in an MPLS network or, with slight differences, in a non-MPLS network.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8296"/>
  <seriesInfo name="DOI" value="10.17487/RFC8296"/>
</reference>
<reference anchor="RFC8402">
  <front>
    <title>Segment Routing Architecture</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
    <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
    <author fullname="B. Decraene" initials="B." surname="Decraene"/>
    <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
    <author fullname="R. Shakir" initials="R." surname="Shakir"/>
    <date month="July" year="2018"/>
    <abstract>
      <t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
      <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
      <t>SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8402"/>
  <seriesInfo name="DOI" value="10.17487/RFC8402"/>
</reference>
<reference anchor="RFC8754">
  <front>
    <title>IPv6 Segment Routing Header (SRH)</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="D. Dukes" initials="D." role="editor" surname="Dukes"/>
    <author fullname="S. Previdi" initials="S." surname="Previdi"/>
    <author fullname="J. Leddy" initials="J." surname="Leddy"/>
    <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <date month="March" year="2020"/>
    <abstract>
      <t>Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header (SRH). This document describes the SRH and how it is used by nodes that are Segment Routing (SR) capable.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8754"/>
  <seriesInfo name="DOI" value="10.17487/RFC8754"/>
</reference>
<reference anchor="RFC8938">
  <front>
    <title>Deterministic Networking (DetNet) Data Plane Framework</title>
    <author fullname="B. Varga" initials="B." role="editor" surname="Varga"/>
    <author fullname="J. Farkas" initials="J." surname="Farkas"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="A. Malis" initials="A." surname="Malis"/>
    <author fullname="S. Bryant" initials="S." surname="Bryant"/>
    <date month="November" year="2020"/>
    <abstract>
      <t>This document provides an overall framework for the Deterministic Networking (DetNet) data plane. It covers concepts and considerations that are generally common to any DetNet data plane specification. It describes related Controller Plane considerations as well.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8938"/>
  <seriesInfo name="DOI" value="10.17487/RFC8938"/>
</reference>
<reference anchor="RFC8986">
  <front>
    <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="P. Camarillo" initials="P." role="editor" surname="Camarillo"/>
    <author fullname="J. Leddy" initials="J." surname="Leddy"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
    <author fullname="Z. Li" initials="Z." surname="Li"/>
    <date month="February" year="2021"/>
    <abstract>
      <t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t>
      <t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t>
      <t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8986"/>
  <seriesInfo name="DOI" value="10.17487/RFC8986"/>
</reference>
<reference anchor="RFC9016">
  <front>
    <title>Flow and Service Information Model for Deterministic Networking (DetNet)</title>
    <author fullname="B. Varga" initials="B." surname="Varga"/>
    <author fullname="J. Farkas" initials="J." surname="Farkas"/>
    <author fullname="R. Cummings" initials="R." surname="Cummings"/>
    <author fullname="Y. Jiang" initials="Y." surname="Jiang"/>
    <author fullname="D. Fedyk" initials="D." surname="Fedyk"/>
    <date month="March" year="2021"/>
    <abstract>
      <t>This document describes the flow and service information model for Deterministic Networking (DetNet). These models are defined for IP and MPLS DetNet data planes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9016"/>
  <seriesInfo name="DOI" value="10.17487/RFC9016"/>
</reference>
<reference anchor="RFC9262">
  <front>
    <title>Tree Engineering for Bit Index Explicit Replication (BIER-TE)</title>
    <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
    <author fullname="M. Menth" initials="M." surname="Menth"/>
    <author fullname="G. Cauchie" initials="G." surname="Cauchie"/>
    <date month="October" year="2022"/>
    <abstract>
      <t>This memo describes per-packet stateless strict and loose path steered replication and forwarding for "Bit Index Explicit Replication" (BIER) packets (RFC 8279); it is called "Tree Engineering for Bit Index Explicit Replication" (BIER-TE) and is intended to be used as the path steering mechanism for Traffic Engineering with BIER.</t>
      <t>BIER-TE introduces a new semantic for "bit positions" (BPs). These BPs indicate adjacencies of the network topology, as opposed to (non-TE) BIER in which BPs indicate "Bit-Forwarding Egress Routers" (BFERs). A BIER-TE "packets BitString" 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 "subdomains" (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 "Interior Gateway Protocol" (IGP).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9262"/>
  <seriesInfo name="DOI" value="10.17487/RFC9262"/>
</reference>
<reference anchor="RFC9320">
  <front>
    <title>Deterministic Networking (DetNet) Bounded Latency</title>
    <author fullname="N. Finn" initials="N." surname="Finn"/>
    <author fullname="J.-Y. Le Boudec" initials="J.-Y." surname="Le Boudec"/>
    <author fullname="E. Mohammadpour" initials="E." surname="Mohammadpour"/>
    <author fullname="J. Zhang" initials="J." surname="Zhang"/>
    <author fullname="B. Varga" initials="B." surname="Varga"/>
    <date month="November" year="2022"/>
    <abstract>
      <t>This document presents a timing model for sources, destinations, and Deterministic Networking (DetNet) transit nodes. Using the model, it provides a methodology to compute end-to-end latency and backlog bounds for various queuing methods. The methodology can be used by the management and control planes and by resource reservation algorithms to provide bounded latency and zero congestion loss for the DetNet service.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9320"/>
  <seriesInfo name="DOI" value="10.17487/RFC9320"/>
</reference>

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

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

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

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

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

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

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


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

<reference anchor="LSDN">
   <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="TCQF">
   <front>
      <title>Deterministic Networking (DetNet) Data Plane - Tagged Cyclic Queuing and Forwarding (TCQF) for bounded latency with low jitter in large scale DetNets</title>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies USA</organization>
      </author>
      <author fullname="Yizhou Li" initials="Y." surname="Li">
         <organization>Huawei Technologies</organization>
      </author>
      <author fullname="Stewart Bryant" initials="S." surname="Bryant">
         <organization>University of Surrey ICS</organization>
      </author>
      <author fullname="Andrew G. Malis" initials="A. G." surname="Malis">
         <organization>Malis Consulting</organization>
      </author>
      <author fullname="Jeong-dong Ryoo" initials="J." surname="Ryoo">
         <organization>ETRI</organization>
      </author>
      <author fullname="Peng Liu" initials="P." surname="Liu">
         <organization>China Mobile</organization>
      </author>
      <author fullname="Guangpeng Li" initials="G." surname="Li">
         <organization>Huawei Technologies</organization>
      </author>
      <author fullname="Shoushou Ren" initials="S." surname="Ren">
         <organization>Huawei Technologies</organization>
      </author>
      <date day="15" month="December" year="2025"/>
      <abstract>
	 <t>   This memo specifies a forwarding method for bounded latency and
   bounded jitter for Deterministic Networks and is a variant of the
   IEEE TSN Cyclic Queuing and Forwarding (CQF) method.  Tagged CQF
   (TCQF) supports more than 2 cycles and indicates the cycle number via
   an existing or new packet header field called the tag to replace the
   cycle mapping in CQF which is based purely on synchronized reception
   clock.

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

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

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

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

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

<reference anchor="BIER-TE">
   <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="DNBL">
   <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.stein-srtsn">
   <front>
      <title>Segment Routed Time Sensitive Networking</title>
      <author fullname="Yaakov (J) Stein" initials="Y. J." surname="Stein">
         <organization>RAD</organization>
      </author>
      <date day="29" month="August" year="2021"/>
      <abstract>
	 <t>   Routers perform two distinct user-plane functionalities, namely
   forwarding (where the packet should be sent) and scheduling (when the
   packet should be sent).  One forwarding paradigm is segment routing,
   in which forwarding instructions are encoded in the packet in a stack
   data structure, rather than programmed into the routers.  Time
   Sensitive Networking and Deterministic Networking provide several
   mechanisms for scheduling under the assumption that routers are time
   synchronized.  The most effective mechanisms for delay minimization
   involve per-flow resource allocation.

   SRTSN is a unified approach to forwarding and scheduling that uses a
   single stack data structure.  Each stack entry consists of a
   forwarding portion (e.g., IP addresses or suffixes) and a scheduling
   portion (deadline by which the packet must exit the router).  SRTSN
   thus fully implements network programming for time sensitive flows,
   by prescribing to each router both to-where and by-when each packet
   should be sent.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-stein-srtsn-01"/>
   
</reference>

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

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

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

<reference anchor="UBS" >
  <front>
    <title>Urgency-Based Scheduler for Time-Sensitive Switched Ethernet Networks</title>
    <author initials="J." surname="Specht" fullname="Johannes Specht">
      <organization></organization>
    </author>
    <author initials="S." surname="Samii" fullname="Soheil Samii">
      <organization></organization>
    </author>
    <date year="2016"/>
  </front>
  <seriesInfo name="IEEE" value="28th Euromicro Conference on Real-Time Systems (ECRTS)"/>
</reference>
<reference anchor="LBF" >
  <front>
    <title>High-Precision Latency Forwarding over Packet-Programmable Networks</title>
    <author initials="T." surname="Eckert" fullname="Toerless Eckert">
      <organization></organization>
    </author>
    <author initials="A." surname="Clemm" fullname="Alexander Clemm">
      <organization></organization>
    </author>
    <date year="2020" month="April"/>
  </front>
  <seriesInfo name="IEEE" value="2020 IEEE/IFIP Network Operations and Management Symposium (NOMS 2020)"/>
  <seriesInfo name="doi" value="10.1109/NOMS47738.2020.9110431"/>
</reference>
<reference anchor="gLBF" target="https://dl.ifip.org/db/conf/cnsm/cnsm2021/1570754857.pdf">
  <front>
    <title>gLBF: Per-Flow Stateless Packet Forwarding with Guaranteed Latency and Near-Synchronous Jitter,</title>
    <author initials="T." surname="Eckert" fullname="Toerless Eckert">
      <organization></organization>
    </author>
    <author initials="A." surname="Clemm" fullname="Alexander Clemm">
      <organization></organization>
    </author>
    <author initials="S." surname="Bryant" fullname="Stewart Bryant">
      <organization></organization>
    </author>
    <date year="2021" month="October"/>
  </front>
  <seriesInfo name="IEEE" value="2021 17th International Conference on Network and Service Management (CNSM), Izmir, Turkey"/>
  <seriesInfo name="doi" value="10.23919/CNSM52442.2021.9615538"/>
</reference>
<reference anchor="gLBF-Springer2023" >
  <front>
    <title>High Precision Latency Forwarding for Wide Area Networks Through Intelligent In-Packet Header Processing (gLBF)</title>
    <author initials="T." surname="Eckert" fullname="Toerless Eckert">
      <organization></organization>
    </author>
    <author initials="A." surname="Clemm" fullname="Alexander Clemm">
      <organization></organization>
    </author>
    <author initials="S." surname="Bryant" fullname="Stewart Bryant">
      <organization></organization>
    </author>
    <date year="2023" month="February"/>
  </front>
  <seriesInfo name="Springer" value="Journal of Network and Systems Management, 31, Article number: 34 (2023)"/>
  <seriesInfo name="doi" value="https://doi.org/10.1007/s10922-022-09718-9"/>
</reference>
<reference anchor="IEEE802.1Q" target="https://doi.org/10.1109/ieeestd.2018.8403927">
  <front>
    <title>IEEE Standard for Local and Metropolitan Area Network — Bridges and Bridged Networks (IEEE Std 802.1Q)</title>
    <author >
      <organization>IEEE 802.1 Working Group</organization>
    </author>
    <date year="2018"/>
  </front>
  <seriesInfo name="doi" value="10.1109/ieeestd.2018.8403927"/>
</reference>
<reference anchor="IEEE802.1Qbv" >
  <front>
    <title>IEEE Standard for Local and metropolitan area networks -- Bridges and Bridged Networks - Amendment 25: Enhancements for Scheduled Traffic (TAS)</title>
    <author >
      <organization>IEEE Time-Sensitive Networking (TSN) Task Group.</organization>
    </author>
    <date year="2015"/>
  </front>
</reference>
<reference anchor="CQF" >
  <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 (CQF)</title>
    <author >
      <organization>IEEE Time-Sensitive Networking (TSN) Task Group.</organization>
    </author>
    <date year="2017"/>
  </front>
</reference>
<reference anchor="TSN-ATS" target="https://1.ieee802.org/tsn/802-1qcr/">
  <front>
    <title>P802.1Qcr - Bridges and Bridged Networks Amendment: Asynchronous Traffic Shaping</title>
    <author initials="J." surname="Specht" fullname="Johannes Specht">
      <organization></organization>
    </author>
    <date year="2020" month="July" day="09"/>
  </front>
  <seriesInfo name="IEEE" value=""/>
</reference>
<reference anchor="IPV6-PARMS" target="https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml">
  <front>
    <title>Internet Protocol Version 6 (IPv6) Parameters</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="IANA" value=""/>
</reference>
<reference anchor="LDN" target="https://dl.ifip.org/db/conf/networking/networking2021/1570696888.pdf">
  <front>
    <title>Towards Large-Scale Deterministic IP Networks</title>
    <author initials="B." surname="Liu" fullname="Binyang Liu">
      <organization></organization>
    </author>
    <author initials="S." surname="Ren" fullname="Shoushou Ren">
      <organization></organization>
    </author>
    <author initials="C." surname="Wang" fullname="Chuang Wang">
      <organization></organization>
    </author>
    <author initials="V." surname="Angilella" fullname="Vincent Angilella">
      <organization></organization>
    </author>
    <author initials="P." surname="Medagliani" fullname="Paolo Medagliani">
      <organization></organization>
    </author>
    <author initials="S." surname="Martin" fullname="Sebastien Martin">
      <organization></organization>
    </author>
    <author initials="J." surname="Leguay" fullname="Jeremie Leguay">
      <organization></organization>
    </author>
    <date year="2021"/>
  </front>
  <seriesInfo name="IEEE" value="2021 IFIP Networking Conference (IFIP Networking)"/>
  <seriesInfo name="doi" value="10.23919/IFIPNetworking52078.2021.9472798"/>
</reference>
<reference anchor="multipleCQF" target="https://www.ieee802.org/1/files/public/docs2021/new-finn-multiple-CQF-0921-v02.pdf">
  <front>
    <title>Multiple Cyclic Queuing and Forwarding</title>
    <author initials="N." surname="Finn" fullname="Norm Finn">
      <organization></organization>
    </author>
    <date year="2021" month="October"/>
  </front>
</reference>
<reference anchor="dgLBF" target="https://doi.org/10.1016/j.future.2026.108494">
  <front>
    <title>Declarative traffic engineering for Low-Latency and reliable networking</title>
    <author initials="J." surname="Massa" fullname="Jacopo Massa">
      <organization></organization>
    </author>
    <author initials="S." surname="Forti" fullname="Stefano Forti">
      <organization></organization>
    </author>
    <author initials="F." surname="Paganelli" fullname="Federica Paganelli">
      <organization></organization>
    </author>
    <author initials="P." surname="Dazzi" fullname="Patrizio Dazzi">
      <organization></organization>
    </author>
    <author initials="A." surname="Brogi" fullname="Antonio Brogi">
      <organization></organization>
    </author>
    <author initials="A." surname="Clemm" fullname="Alexander Clemm">
      <organization></organization>
    </author>
    <author initials="T." surname="Eckert" fullname="Toerless Eckert">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
  <seriesInfo name="DOI" value="10.1016/j.future.2026.108494"/>
<refcontent>Future Generation Computer Systems, Vol. 182, 108494, ISSN 0167-739X</refcontent></reference>


    </references>

</references>


<?line 1172?>

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

<section anchor="high-speed-example-pseudocode-instead-of-reference-pseudocode"><name>High speed example pseudocode instead of reference pseudocode</name>

<t>This memo does not describe a normative reference code that aligns with
the normative functional description above <xref target="glbf-spec"/>. The primary reason
is that a naive 1:1 implementation of the functional description would
lead to inferior performance. Nevertheless, the feasibility of high speed
implementations is an important factor in the ability to deploy 
mechanisms like gLBF. Therefore, this appendix describes considerations
for such high speed implementations including pseudocode for on
possible option.</t>

<t><xref target="gLBF"/> describes two approaches for possible optimized hardware implementation
approaches for gLBF. One using "Push In First Out" (PIFO) queues, the
other one times FIFO queues. The following is a representation and
explanation of that second approach because it is hopefully more feasible
for nearer term hardware implementations given the fact that scalable
FIFO high-speed hardware implementations are still a matter for research.</t>

<t>However, the timed FIFO style algorithm presented here is also subject
to possible scalability challenges for hardware because it requires for
each outgoing interface  O(IIF * priorities^2) number of FIFO queues,
where IIF is the number of (incoming) interfaces on the node, and priorities is the
number of priority levels desired (TSN allows up to 8). If however
the priority of flows (packets) used is not per-hop but the same for every
hop (per-path), then the number is just (IIF * priorities).</t>

</section>
<section anchor="ubs-high-speed-implementations"><name>UBS high speed implementations</name>

<t>The algorithm for the pseudocode shown in this appendix further down in this section
is based on the analysis of gLBF behavior done in and for <xref target="gLBF"/>. 
This analysis re-applies the same type of analysis and algorithm that
was done in <xref target="UBS"/> and can be used to implement TSN-ATS in high
speed switching hardware. Therefore, this appendix will start by explaining
the UBS mechanisms.</t>

<t>UBS (see <xref target="UBS"/>, Figure 4), logically consists of two separate stages.
The first stage is a per priority, per incoming interface (IIF) interleaved
regulator. An interleaved regulator is a FIFO where dequeuing of the
queue head packet (qhead) is based on the per-flow state of qhead.</t>

<t>A target departure time for that qhead is calculated from the flow state of
the packet maintained on the router across packets and once that departure time
is reached, the packet is passed to one of the egress strict priority
queues. This is called interleaved regulator, because the FIFO will have
packets from multiple flows (all from the same incoming interface and
outgoing priority), hence 'interleave', and regulator because of the delaying
of the packet up to the target departure time.</t>

<t>The innovation of interleaved regulators as opposed to the prior per-flow shapers
as used in <xref target="RFC2210"/> is the recognition and mathematical proof that the arrival and
target departure times of all packets received from the same IIF (prior hop node)
and the same egress priority will be in order and that they can 
be enqueued into a single FIFO where the per-flow processing only needs to
happen for the qhead. Without (anything but negligible) added latency
vs. per-flow shapers.</t>

<t>With this understanding, the interleaved regulator and following strict
priority stage can easily be combined into a single queuing stage with
appropriate scheduling. In this "flattened" approach, each logical egress
strict priority queue consists of the per-IIF interleaved regulator (FIFO queue)
for that priority.</t>

<t>Scheduling of packets on egress does now need to perform the per-queue
processing of the per-flow state of the qhead, and then take the target
departure time of that packet into account, selecting the interleaved regulator
with the highest priority and earliest target departure time qhead.</t>

</section>
<section anchor="glbf-compared-to-ubs"><name>gLBF compared to UBS</name>

<t>In gLBF, the very same line of thoughts as in UBS can be applied and are the basis
for the described algorithm and shown pseudocode.</t>

<t>In glBF, the order of packets in their arrival and target departure times
depends on the egress priority, the IIF, but also on the priority the packet had
on the prior hop (pprio). All packets with the same (IIF,prio,prio) will arrive
in the same order in which they need to depart, and in which it is therefore
possible to use a FIFO to enqueue the packets and only do timed dequeuing
of the qhead.</t>

<t>Both prio and pprio are of interest, because when gLBF uses an encapsulation
allowing per-hop priority indications, its priority on each hop can be different.
In UBS, priority can equally be different across hops for the same packet,
but the prior hop priority is not necessary to put packets into separate
interleaved regulators because UBS targets in-time delay, where the
interleaved regulator does (only) need to compensate for burst accumulation,
but in gLBF the delay to be introduced depends on the damper value which
depends on the prior hop priority and in result, the order in which in
gLBF packets should depart (absent any burst accumulation) depends also
on the prior hop priority.</t>

<t>Because gLBF does not deal with per-flow state on the router as UBS
does in its interleaved regulators, the FIFOs for gLBF are called timed
FIFOs in this memo and not interleaved regulators</t>

</section>
<section anchor="comparison-to-normative-behavior"><name>Comparison to normative behavior</name>

<t>Whereas the normative description described D, Q and M blocks,
where the D block performs the dampening, and the Q block performs
the priority queuing block, in the high speed hardware optimization,
these are replaced by a single DQ block where the packets are
enqueued into a single stage per-(IIF,pprio,prio) FIFO (similar to UBS) and then
the dampening happens (similar to UBS) on dequeuing from that stage
by the damper time but scheduling/prioritizing packets based on their prio.</t>

<figure title="High Speed single stage gLBF" anchor="FIG-hs-diagram"><artwork><![CDATA[
   +------------------------+       +------------------------+ 
   | Node A                 |       | Node B                 |
   | +-+    +-------+   +-+ |       | +-+    +-------+   +-+ |
 --|-|F|--x-| DQ y  |-z-|M|-|-------|-|F|--x-| DQ y  |-z-|M|-|--->
IIF| +-+    +-------+   +-+ |OIF IIF| +-+    +-------+   +-+ |OIF
   +------------------------+       +------------------------+
          |<- Dampened Q ->|               |<- Dampened Q ->|
                 |<- A/B in-time latency ->|
                 |<--A/B on-time latency -------->|
]]></artwork></figure>

<t>In the normative definition, the damper value to be put into the packet
depended on the time y, where the packet left the damper stage D and
entered the priority queue stage Q. Simplified, the damper value is
(MAX1 - (z - y)).</t>

<t>In the high-speed implementation, the packets are not passed from
a damper state queue to a priority queue. Instead they stay in the
same queue. This is on one hand one of the core reasons why this
approach can support high speed - it does not require two-stage
enqueuing/dequeing/ But it eliminates also the ability to take a time stamp
at time y.</t>

<t>To therefore be able to replicate the normative gLBF behavior with a
single stage, it is necessary in the marking stage M (where the new
damper value is calculated), to somehow know y.</t>

<t>Luckily, y is exactly the target departure time of the packet for
the D and therefore also the DQ stage, so already needs to be
calculated on entry to DQ by calculation: y = (x + damper - &lt;details&gt;),
as explained below.</t>

<t>The pseudocode consists of glbf_enqueue() describing the enqueuing
into the DQ stage, and glbf_dequeue() describing the dequeuing
from the DQ stage. glbf_dequeue() (synchronously) calls 
glbf_send() which represents the marking stage M.</t>

</section>
<section anchor="pseudocode"><name>Pseudocode</name>

<section anchor="glbfenqueue"><name>glbf_enqueue()</name>

<figure title="Reference pseudocode for glbf_enqueue()" anchor="FIG-glbf-enqueue"><artwork><![CDATA[
void glbf_enqueue(pak,oif) {
  tdamp = pak.header.tdamp // damper value from packet
  prio  = pak.header.prio  // this hops packet prio
  pprio = pak.header.pprio // previous hops packet prior
  iif   = pak.context.iif  // incoming interface of packet

  ta = adj_rcv_time(now(),                  \[1]
                    pak.context.iif.speed,
                    pak.context.length)

  td = now() + ta // (dampened earliest) departure time
  pak.context.max1 = max1\[oif,prio]
  enqueue(pak, td, q(oif,iif,prio,pprio))
}
]]></artwork></figure>

<t>pak.header are parsed fields from the received gLBF packet. tdamp is
the damper value.  pak.context is a node local header of the packet.
iif is the interface on which the packet was received.</t>

<t>prio and pprio are current prior hop priority from the packet header.
If for example SRH (<xref target="RFC8754"/>) is used
in conjunction with gLBF, and <xref target="RFC8986"/> formatting of SIDs
is used, then the priority for each hop could be expressed as
a 4-bit SID ARG field (see <xref target="RFC8986"/>, section 3.1) to indicate
16 different priorities per hop.</t>

<t>Parsing the prior hop priority is not a normative requirement of gLBF,
but a specific requirement of the high speed algorithm
presented here to allow the use of single stage timed FIFOs instead of PIFOs.
This type of parsing is not required for SRH, but would be a benefit
of a packet header which like SRH keeps the prior hops information,
opposed to the SR-MPLS approach where past hop SD/Labels are discarded.</t>

<t>now() takes a timestamp from a local (unsynchronised) clock at the
time of execution.</t>

<t>[1] pak.context.ta (time of arrival) is the calculated time at which the first bit of the packet
was entering the incoming interface of the node. adj_rcv_time() is defined
in the next subsection. td is the target
departure time calculated from the current time and the damper
value from the packet. It simply convert the relative damper value to
an absolute timestamp.</t>

<t>max1[oif,prio] is the only gLBF specific interface level state
maintained (read-only) across packets. It is the maximum time calculated
by admission control in the controller-plane for each priority. It
is transferred into a context header field here even though it will
only be used further down in dequeuing because of the assumption that
access to state information is not desirable at the time critical stage
of dequeuing/serialization, whereas such state lookup is very common
for many forwarding plane features before enqueuing.</t>

<t>Finally, the packet is enqueued into a per-oif,iif,prio,pprio timed
FIFO queue.</t>

</section>
<section anchor="adjrcvtime"><name>adj_rcv_time()</name>

<t>To calculate the reference time against which the damper value in the
packet is to be used, this specification assumes the time when the
first bit of the packet is seen on the media connecting to the
incoming interface.</t>

<figure title="Example pseudocode for adv_rcv_time()" anchor="FIG-adj-rcv-time"><artwork><![CDATA[
time_t adj_rcv_time(now, speed, length) {
  time_t now
  int speed, length
      
  return now - length * 8 / speed - FUDGE
}
]]></artwork></figure>

<t>In most simple node equipment, the primary variable latency introduced 
between that (first bit) measurement point and the time when the time
parameter t for adj_rcv_time() can be taken is the deserialization time of the
packet. This can easily be calculated from the packet length as assumed to be 
known from pak.context.length and the bitrate of the incoming interface known
from pak.context.iif.speed plus fixed measured or calculated other
latency FUDGE through internal processing. The example pseudocode, those
are assumed to be static.</t>

<t>If other internal factors in prior forwarding within the node do create
significant enough variation, then those may need compensation through
additional mechanisms. In this case, instead of as shown in
glbf_enqueue(), the reference time for calculation should be taken
directly upon receipt of the packet, before entering the forwarding stage F,
and then used as the now parameter for adj_rcv_time(). This is explicitly
not shown in the code so as to highlight the most simple implementation
option that should be sufficient for most node types.</t>

</section>
<section anchor="glbfdequeue"><name>glbf_dequeue()</name>

<figure title="Pseudocode for glbf_dequeue()" anchor="FIG-glbf-dequeue-"><artwork><![CDATA[
void glbf_dequeue(oif) {
  next_packet: while(1) {
    tnow = now()
    ftd = tnow + 1  // time of first packet to send
    fq = NULL      // queue of first packet to send
    foreach prio in maxpriority...minpriority {
      foreach iif in iifs {
        foreach pprio in priorities}
          // find qhead with earliest departure time
          if (q = q(oif,iif,prio,pprio).qhead) {
            td = q.qhead.td   // target (departure) time
            if td < ftd
              ftd = td
              fq = q
            }
          }
        }
      }
      if fq { // found packet
        pak = dequeue(q,oif)
        glbf_send(oif,tnow,pak)
        break next_packet
      }
    }
  }
}
]]></artwork></figure>

<t>glbf_dequeue() finds the gLBF packet to send as the enqueued packet with the highest
priority and the earliest departure time td (as calculated in glbf_enqueue()),
where td must also not in the future, because otherwise the packet still needs to
be dampened.</t>

<t>The outer loops across this hops prio will find the packet
with exactly those properties, dequeues and sends it. For this,
the  strict priority is expressed through the term maxpriority...minpriority,
which first searches from maximum to minimum priority..</t>

<t>The two inner loops simply look for the packet with the earliest
target departure time across all the (IIF,pprio) timed FIFO queues
for the same prio and OIF.</t>

<t>In ASIC / FPGA implementations, finding this packet is not a sequential
operation as shown in the pseudocode, but can be a single clock-cycle
parallel compare operation across the td values of all queues qheads - at the expense of
chip space, similar to how TCAMs work.</t>

</section>
<section anchor="glbfsend"><name>glbf_send()</name>

<figure title="Reference pseudocode for glbf dequeue" anchor="FIG-glbf-dequeue"><artwork><![CDATA[
void glbf_send(oif,tnow,pak) {
  qtime = tnow - pak.context.td          // \[1]
  td = pak.context.max1 - qtime - FUDGE2 // \[2]
  pak.header.tdamp = td
  serialize(oif,pak)
}
]]></artwork></figure>

<t>Sending packet pak represents the marking block M in the specification.
This needs to calculate the new damping value t and update it in the
packet header before sending the packet.</t>

<t>td needs to be the maximum time max1 that the packet could have
stayed in priority queuing minus the time qtime that it actually did stay in
the queue and minus any additional time FUDGE2 that the packet will still
needs to be processed by the router before its first bit will show up
on the sending interface. This is calculated as shown in 
in [1] and [2] of <xref target="FIG-glbf-dequeue"/>.</t>

<t>The primary factor impacting FUDGE2 is whether or not this calculation and
updating of the packet header td field can be done directly before serialization
starts, or whether it potentially would need to be done while there is
still another packet in the process of being serialized on the interface.
Taking the added latency of a currently serializing packet into account
can for example be implemented by remembering the timestamp of when
that packet started to be serialized and its length - and then taking
that into account to calculate FUDGE2.</t>

</section>
</section>
<section anchor="performance-considerations"><name>Performance considerations</name>

<t>IEEE 802.1 PTP clock synchronization does need to capture the accurate
arrival time of PTP packets. It is also measuring the residency time
of PTP packets between receiving and sending the packet with an
accuracy of nsec and add this to a PTP packet header field  (correctionField).
Given how this needs to be a hardware supported functionality, it is
unclear whether there is a relevant difference supporting this for
few PTP signaling packets as compared to a much larger number of
gLBF data packets - or whether it is a good indication of the feasibility
packet processing steps gLBF requires.</t>

</section>
</section>
<section anchor="history-and-comparison-with-other-bounded-latency-methods"><name>History and comparison with other bounded latency methods</name>

<t>Preceding this work, the best solution to solve the requirements outlined in
this document, where <xref target="TCQF"/> and <xref target="SCQF"/>, which are proven to
be feasible for high speed forwarding planes, because of vendor high-speed
forwarding plane implementation using low-cost FPGA for cyclic queuing. On the other hand,
it was concluded from implementation analysis, that <xref target="UBS"/> was infeasible for the
same type of high-speed, low-cost hardware due to the need for high-speed
flow-state operations, especially read/write cycles to update the state for every packet
at packet processing speeds.</t>

<t>While TCQF and <xref target="SCQF"/> are very good solution proven to work
at high-speed, low cost, available for deployment and ready for standardization, 
the need for network wide and hop-by-hop clock synchronization (albeit at lower
accuracy than required for other mechanisms feasible at high-speed, low-cost) as well
as the need to find network wide good compromise clock cycle times makes planning and
managing them in dynamic, large-scale and/or low-cost network solutions still more complex
to operationalize than what the authors wished for.</t>

<t>In parallel to short term operationalizable solutions <xref target="TCQF"/> and <xref target="SCQF"/>, <xref target="LBF"/> was researched,
which is exploring a wide range of options to signal and control latency through advanced
per-hop processing and in-packet latency related new header elements. Unfortunately, with
the flexibility of <xref target="LBF"/> it was impossible to find a calculus for simple admission control. 
Ultimately, <xref target="gLBF"/> was designed out of the desire to have a mechanism 
derived from <xref target="LBF"/> that also provides guaranteed bounded latency, has the flexibility
benefits of <xref target="UBS"/> with respect to fine-grained and per-hop independent latency
management but does hopefully still fits the limits of what can be implemented in
high-speed, low-cost forwarding/queuing hardware.</t>

<t>This high-speed hardware forwarding feasibility of gLBF has yet to be proven.
Here are some comsiderations, why the authors think that this should be well
feasible:</t>

<t>The total number of FIFO that a platform needs to support is comparable to
the number of queues already supportable in the same type of devices today,
except that service provider core nodes may not all implement that many,
because absent of DetNet services, there is no requirement for them.</t>

<t>The need to implement timed FIFOs (if the proposed high-speed implementation
approach is used) is equal or less complex to shapers, which by now have
also started to appear on high-speed (100Gbps and faster) core routers,
primarily due to high-speed virtual leased line type of services.</t>

<t>The re-marking of packet header fields derived from the calculated
latency of the packet experienced in the node is arguably something where
iOAM type functionality likely provides also prior evidence of feasibility in
high speed hardware forwarding planes. Similarily, processing of PPT timing
protocol packets also have similar requirements.</t>

<t>Even when implementation challenges at high-speed, low-cost make gLBF a
longer term option in those networks, implementation at low-speed (1/10 Gbps)
such as in manufacturing or cars may be an interesting option to explore given
how it has the no-jitter benefits of <xref target="CQF"/> without the need for cycle
management or clock-synchronization: Best of both worlds <xref target="CQF"/> and TSN-ATS ??</t>

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

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

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

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

<t>Using the section number/titles of the taxonomy document
<xref target="I-D.ietf-detnet-dataplane-taxonomy"/> the TCQF technology
can be classified as follows. In summary, gLBF is very much like TCQF except
that it removes cycles and replaces them with Dampers, hence even further
reducing the end-to-end jitter, reducing clock accuracy requirements (only
phase synchronization, not clock synchronization required) and removed
the complexity of end-to-end cycle management. In comparison to older Damper
based proposals, gLBF re-uses ATS calculus, which allows to re-use ATS
admission control and delaycalculations and to use simple FIFO with timed
scheduler based implementation (like ATS).</t>

<t><list style="symbols">
  <t>4.1 Per Hop Dominant Factor for Latency Bound  <vspace blankLines='1'/>
The per-hop dominant latency bound is Category 3. The per-hop latency for each
class is determined by the configured burst size cycle size.</t>
  <t>5.1 Periodicity  <vspace blankLines='1'/>
gLBF is not periodic. Its fundamental mode of operation is not based on cycles to manage
bursts but instead by using per-hop per-packet synchronous delivery to allow maintaining
the burst sizes across all hops end-to-end.</t>
  <t>5.2.  Traffic Granularity  <vspace blankLines='1'/>
Factually, gLBF is class-level granularity. However, the description in <xref target="I-D.ietf-detnet-dataplane-taxonomy"/>,
revision 04 claiming that all packets within a class are treated the same is questionable for gLBF
(and in general all Damper solutions). In Damper solutions like gLBF, packets latency is calculate
per-packet (within the same class) based on prior experienced per-hop latency - to compensate it.</t>
  <t>5.3.  Time Bounds  <vspace blankLines='1'/>
gLBF is per-hop bounded. It is Right Bounded by the configured burst size for the hop and class the packet
is in. It is Left bounded by the signalled remaining latency to achieve synchronous forwarding. If
observation of bound was not taken on e.g.: the wire but instead in a specific forwarding step in the
router(after reception, before enqueuing), then the per-hop bound would be extremely tight bounded,
limited only by implementation accuracy.</t>
  <t>5.4 Service Order  <vspace blankLines='1'/>
gLBF service order is solely arrival based.</t>
  <t><list style="numbers" type="1">
      <t>Suitable Categories for DetNet</t>
    </list>
TCQF is "6.5.  Class level non-periodic bounded category" according to the categorization.</t>
</list></t>

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

<t>gLBF has primarily an open source simulation level validation implementation as described in <xref target="gLBF"/>.
Additional implementations where done in Linux kernel by University (TBD reference) and a second
university in conjunction with a Prolog based Admission Control Server implementation (<xref target="dgLBF"/>).</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+296XIbWZIu+P88RQzT7jRQCYCLdlpXdVOilKlqSakUmZX3
WldPWQAIklECIpARAVJMpczmIeYJ50nG/XP3swSCkqqs2qat7aqskiQQy1n8
+O6fT6dTt6iXZXV5nG27i+lj57qyWxXH2WnRFc26rMq2KxfZm6K7qZv3dF02
om/oz3F2mnd59naVV0U2zS63eZNXXVEss1d5V1SL2+xp3tJfL+rmJm+WuPPy
1dMX4+yibrJ5va2W9O1Kr70pu6tsVd9kfy07em+WV8ssb2+rxVVTV/W25Zvs
MWU1PLjW5fN5U1wfZ8uiq4puermaX7hlvajyNU1o2eQX3bQsaJbR99ODI3dD
kz99fv7m+blb0Hgu6+b2OGu7pSs3zXHWNdu2Ozo4eEJXtl1T5Ovj7OXz8xeO
/qJh/iVf1RU9/rZo3aY8dlmWdfVC/pbfl8WmuzrOHvCfbd3QIy5a/317u07+
XtTrdVF1+oHLt91V3fBTp/wt/5PZnNdFsyraNnu+eF80nX1ZNzSXF9tu2xQ3
RZmdF4urql7Vl2XRZj+dndhlPI+iO86Ojo4Osmf0viZfZc8/bBp64k1+a5ct
yo5W4oz2Nc+erWiD/Rf1ksbw7CR78uDgwUH4dEtPojuiNxXrvFzRInbFvy7a
2UW+nS0L+66pmdCKZdnVze4MT1bFB1pfIoZnq2K9TmZ4drve1B1Nrj+grxjK
aru8KS//dcEPndHTdt981hVEa132tLmlqScvfkkD2hT0n/C5Prad/2sr981x
24x2cnc0/2YfDb71Iq+y75kA2uSl7+qrZZH9n9nZ4oqe/2v/xbhvdoX7/rVc
rOrtcvDlp8+dq+pmnXfldcEk9e7Fs6Ojw4PjzP9+ZB/ff3Rff7139OhAf338
8MED+5UOhP365CFd68rqovfse0cHT/TX+48fhTufPLRf7x/YC+n7+/559x77
Xx/btU8ODv2vRw/ttif0Dv715fR0Fp/sJbGmDXOmaZd/IAayvrWrChwXu+6C
WM60JLZFZym/Zi7o6LqzZz++OMbVi6uismvbZjpnjjZV3jVV3kU3vDo7fSM3
/FLm1aXdQSfmspi2i3xV6Ed07bl/eDqUbvHLhdNBLvkhv2yLLY1oyqxxut6u
unJDz1ncLlblYjrfXlwUTcuzevry+bvp+fPjsAjzsmimXTHNGxyQ0zdPXx3v
LNHuLPgKIqayoql2bXX89wxmd16990w3TT2no9dipX96egaOmanQ+YkWjC8S
0UH0Xiy3K+IALDLOy3UxPSuqtmQay85oKPx99ry7Khp6UxAD4HBFQzyPifJY
D8LL589pkY4ek6B5vm3qdblo6uxZXdHQ6Z1FVlfZuyJfTfk9xGBoJdZtNnr+
7N352RiPIKKiIR4RIeLPwJr5nz/MJJ6Ief9xlp1tiD95LqGH/I/1VV5VxIyT
b3s3n9HN+bose/ee1VdFudKvmOqevkgW7/vy8mr6tikWZVvSZEwMRwK4vqa1
fJvT/nR0YX3Z5Ot1TrvxlUt3QMKCf91/+eLlW7sn+2FTNHTs66qF1H6dV/ll
wTJMuHRbbtfZ6M0Pr8/wgLE+clmXx9nhwezw8ODJPn97/9Gje49nfMnsCX14
/95hsuhHB9OD+19e9/NZTyB+Vlz2bj6ZpaLmDkFEX1/21z7bw0fZWzp5L1iP
Oeto4HijrHe8DVB2vttVmHj53hR5Mz2LFJ8/QiGa7H1paw6zw0f02JfMzCrs
B4n0lLxtx/g9Z0VzXdLH0XaNnr05ez2eZC9/XZfNJDvfNu+L2952Hd17cvhk
ny98cHT//hHv1+HsycPDBw/uPU7363B6KIpBx1yQdI2rrtu0x/v7y9WsvCg3
LHr3l/P9BQ1xf1G1a/yHb9w/fPDogOTB4wePZpvlxX+NTb/roKY6wrACoQQz
Pds0tP1FQ5O816MePrvZZ88us8CfS9IDTkgF9Qc2Oyc62V7Kvq9W5SVv5Mtq
qkT3fZHzFOisL2gdgg5+FzXZCI+zvT/W24ZJqL5I6UYZY6CbSXbvcEKjIk2c
OEm1Xc/5/nv3sxHPU1+lFORpoC6x/8wADg4e7bfEBY6OSBen/z95dPh4+iQl
pnuspv93oAM+ro8PjmaHPyYEsMefM8+olrTd2OtXNekNwlGLrqk39aqkr5Pd
z/7f//v/oWeXy8tCeK/8vgzUMdLnLjN5qe5Guoqi2PKFuCj7WQ2974iyNqnk
e3wH3STcvCyKgqynGV8/Ix3v3pOjR8OcIKKCO29MFm1+/fXLto6XLedlq2xZ
ptPPL9s0OyHKXoIrHj04zp5XJLUXoHZYol4zWWbnZFVekA06Oj85+8Lq9hSY
2KQ+P3szzs7z9r0s+ixLl/0BrwLrjfh4ehytiJpAvQWx/V5cTen2RzqAv5W+
eCG+fp2ekP0FfTD7UZRF3BOb/zSD/7QlAqHQNdOT81Sl3HurS9F8aTZ+LnTq
Y9eDbfHZVb6hoXxeEu8oLY+Iow1S/+GM6Z0Hx2eAFO59+n16+Mui2R9Yo2H1
kQ/H2z89nL49efe6N21RBEgGEPPv6kW9yv5EOjoLl4fEFt5ePxyTZkIKIHtS
2jvndPLm5Hhw9Dc3NzOydXIMPifZclnheOyXm+uH041/cv/v2Yerbr2C+ko2
UzLi85oppSXhx2bTGZtNPUdP0Dp1xEHb+Oym7EE/irVWJqlIORr1vkul1p5X
fPiycNWDo4NHj1UFuv/o6NGTx3vJWu19TuWp/GOiX7368/DJw8ePH7P6M3Rg
gvgRsnhaViRgLrNX5faOK86uiJLp/2TiVHdc8uxqy8/4mf5zxxV/Kmmt6Kif
VJflirSN/I7r3ub1qia2sswvV0QjZsdMs/6gCjKou7KoSJsg9eGugf2RNmld
Ftmr4nKb3zLpmAHqWaKR0Gv94vOc6GuW9E3drLMXZVVFdPbDoqtJuQn0Nngo
okN9uH9BC9Xub7ZzGg3Ju0WLHa6Km+kFPTtY0jQT4hOkNF/Traz00vOXO1bG
3mmxYDccmGOnbKmg3aiKojEl8VV9M40tiqagTWAjL5DZ4AJ4w/U1Hee8vwf5
gkRE8tXU6z60st2OsQqvVJ18p3e8mBGFXOYV66u9u14UpGmVi3znAr317Sw7
zX/9tX/b27xryl/LOvly6vW6p2Tq9m85qbq6ojvi76Z/jyb4t6uenmmJH6Ep
LoghdJA7e+K6zb4rKjWqiUutN1t2iavmPcn+VK9m2eHjowlpXI/vP7lPFtvZ
2Zvs4PDho+mje0/+513M/PSHl6Kk0ZX7f51d4FXMvh7O5EFfVNLuvNFNSaXK
5y3R5IKk0vlV2ZL+ta6zDWsWLUtc+ntBwqts1xlxdlad9r4iZrBnQYO8zTas
SpM5IvEH0PpVvZnOb6f0g76FxXPRM7M3ZJDz18tYkND7b3dCENAZ6YI1qUUS
hZg5xy/PaDLsI8TVXZ3Ni2zbFhdb0p4WTd3y3G7YMKO5XBY8QK9nIoqx2dDZ
VwcJhlTxhDF6dthsvNGXDDE6rbyVbKvT1hMDXm01CDJd5E14VR39vm31BWW1
3NKelKzobbt6LRSlo6bfLmi36uY2u1jVdUOPp3XJuqsiu8lveaLffkvG2Xfz
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
GmHOvD3/E6z1lydvTnYqVN6w3L2VThjZyYIfvWIrHw9hJpZr6umLFen0JPv+
Ld+qWi75MCRrxRcA+5DEpHN//vd3L55NC9I56uaYNqNgJ7OYc//BKrrvrexB
hEYAU5oWpN033VQEy5Thw8fOHRwQdZWcaW0uEnrfwSHjVRViKwvMEHhldtYV
F3lFFxxxrxxa1Sto3HSw8hL8gUdOmyLMj/bs5+8Qq91KCr87uGf3TTLeo5Xm
z6v5S2SwqKf5loi9oYvvh4uF0uO3oEBAny3MmqdFdz34u+56qLHOM8ulPlsg
u+Q8/1BX9Vq0kzOUGOJBWn2eL8W1s7PzB4+yF2guJrPhp2NNRlfsKmpp5Xlp
ejtUFt3FF/cH2/NHzibWeQIR4h2X4W4738IMsnhRN8SIoENtO5wprAMdAbRs
Q/HY8/MXh0cPZzTxhjhIlmU/85pdoi6uFgcl6gsZeKiCzUGb/9NmCfPijsnN
lF4NfntDS+JVCpq3rRq/jnvTkIAnXT85A8fO/c68jce6N+Lo8GG3QUslgLzI
EnRQR+hFuG9kre4jT0HZhpsggMd96T2Rm1FQwJHmzKayW3WeUMGMpvCGK7wV
oHnv8wrK3nGioZGGvs9aWjaAad8Kqsw/JTaBYqwpQSrmWKJz7j5KIkl38eZI
dvJchKD3xDdF5sP0D/bHmXQD30Mcr2PsCjaE+ftK1lk+4Ye8s76i50+5kHe4
o+aCNVPJ+DfsPhLI025bifL9g8TwhMhSUjE3ibT2GwKIH4iUsgQAuDEt0W6x
Pz3+2fAwraEvTQTEtAyWsArRVvtuZTs3x/KEXyHMJdA666kLEneaY+pzSNnm
Esu9h903+vhxyW/+9GnMzxMO3hc6Roy0iNPpFHWgLF++55xhqYL6HBgqMmrj
i306cltsiZtJIrnPmw79CMP3cdlm1GFVKqgRTVCXdnQ3nqs6IllUWs4Ghcpf
HSI0+rSNKc305cePoVvGpwCVxxqxpL55PyoNIOfHHR4f9lfCMuqGXyT51Sue
uYCiFQidqL7PWDEzYgbEw+kZDB2i/j9G75iXKwUsuPIr6/rebwnQ7pZcimKZ
6zOgiPOhzVzkJEEWlmT8nQecJ+vkyp7RDxHiXG/Hva/k6i4aaaMMhogQAHtX
BQAjYUwz7kgkZBq9k4u3rKms2vTJfWuwxCtSCW/yph8acL07ZaY/VIU6yvfe
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
3JayfkABAA==

-->

</rfc>

