<?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-03" 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 that need high-precision deterministic networking services,
from in-car networks and networks for industrial automation on factory
floors all the way to country-wide networks at 100 Gbps and beyond.</t>

<t>Unlike other mechanisms, gLBF does not require network-wide clock
synchronization, nor does it require per-flow state on network nodes. It
thereby avoids the drawbacks of other known methods while retaining 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 as a plug-in replacement for, or a mechanism
in parallel to, TSN-ATS, because it allows reuse of the same
controller-plane design that selects paths for TSN-ATS, sizes TSN-ATS
queues, calculates latencies and admits flows onto the calculated paths with
the calculated latencies.</t>

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



    </abstract>



  </front>

  <middle>


<?line 266?>

<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 that enable control (loops) for network-connected devices, for example cars.</t>
  </dd>
  <dt>CQF</dt>
  <dd>
    <t>Cyclic Queuing and Forwarding. A queuing mechanism defined in Annex T of IEEE 802.1Q.</t>
  </dd>
  <dt>DT</dt>
  <dd>
    <t>Dead Time. A term from CQF indicating the time during each cycle in which no frames can be sent because the receiving node could not receive them into the desired cycle buffer.</t>
  </dd>
  <dt>node</dt>
  <dd>
    <t>A system that, with respect to gLBF, does not act as a host (sender/receiver). This memo avoids the term router so as not to imply an IP/IPv6 router as opposed to an LSR (label switching router). Likewise, a node can also be an IEEE 802.1 bridge implementing gLBF.</t>
  </dd>
  <dt>TCQF</dt>
  <dd>
    <t>Tagged Cyclic Queuing and Forwarding. A mechanism proposed to DetNet, see <xref target="TCQF"/>.</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 that need high-precision deterministic networking services,
from in-car networks and networks for industrial automation on factory
floors all the way to country-wide networks at 100 Gbps and beyond.</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>In particular, gLBF eliminates the need for the controller-plane to interact
with the intermediate-hop routers of a gLBF path. This simplifies the
controller-plane and network operations, and increases the number of flows
the network can support: with gLBF, per-flow state is only required on
ingress routers. Although the controller-plane in general is out of scope
for this document, <xref target="controller-plane"/> discusses aspects relevant to system
design with gLBF, including the opportunity for a decentralized
controller-plane/admission control (<xref target="decentralized"/>).</t>

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

<t>Existing solutions address burst accumulation by maintaining inter-packet
gaps on a per-flow basis, as in TSN Asynchronous Traffic Shaping (TSN-ATS).
gLBF instead ensures that inter-packet gaps are maintained without the need
for per-flow state. The basic idea is to assign a specific queuing delay
budget to each node and traffic class. This budget is known in advance from
the admission control calculus. When the packet is transmitted, the queuing
delay it actually experienced in the node is subtracted from that budget,
and the result is carried in a new header field of the packet. On receipt,
the next node passes the packet through a delay stage, where the packet
waits for the time indicated in that field before the node proceeds with
regular processing. In this way, queuing delay variations are absorbed, and
deterministic delay is achieved without the possibility of burst
accumulation.</t>

<t>By addressing burst accumulation, gLBF also overcomes the problem of jitter
accumulation, 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 anything from zero to the maximum
delay across the hop. This is the per-hop jitter. It adds up across multiple
hops, so applications requiring (near-)synchronous packet delivery cannot
rely solely on such mechanisms. It likewise limits how highly networks with
a large number of bounded latency flows can be utilized.</t>

<t>The basic principle on which gLBF operates was proposed by researchers in
the early 1990s under the name "Dampers". Dampers were not pursued or
adopted at the time because network equipment lacked the necessary
capabilities. Only recent and upcoming improvements in advanced forwarding
planes make it possible to build them at scale and at acceptable cost.</t>

<t>Unlike other proposals, gLBF does not require network-wide clock
synchronization. Likewise, it does not need to maintain per-flow state on
network nodes, because the delay budget and the queuing delay variations to
be absorbed are carried in the packets themselves, making them
"self-contained". This eliminates the per-flow, per-hop state maintenance
required by TSN-ATS, with its scaling problems of signaling per-flow state
from the controller-plane to every hop, and with the cost, in high-speed
networking hardware, of the high-speed read/write memory accesses needed to
retrieve, process and update these per-flow state variables for a large
number of flows.</t>

<t>Unlike 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 as a plug-in replacement for, or a mechanism in
parallel to, TSN-ATS, because it allows reuse of the same controller-plane
design that selects paths for TSN-ATS, sizes TSN-ATS queues, calculates
latencies and admits flows onto the calculated paths with the calculated
latencies.</t>

<t>While gLBF as presented here is intended for use with IETF forwarding
protocols, to provide DetNet QoS with bounded latency and lower, bounded
jitter, it would be 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 include the need to provide service levels
within very tightly defined 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 vehicles leads to new requirements and a
high demand for computational resources that are often not available within
a car. One solution is to reduce in-car processing to a minimum and to
offload computationally expensive tasks to the cloud. Because of the safety
implications of these use cases, delays in the transport of messages from
the cloud to the car and vice versa are often not acceptable. This includes
application scenarios such as trajectory planning for driverless vehicles,
but also emergency notifications to surrounding cars, which require fast
delivery of messages to avoid delayed reactions in case of an accident.
While the use of TSN for in-vehicle networks has already been investigated
and is more mature, real-time communication with guaranteed latencies
between vehicles and the cloud is still an open challenge.</t>

<t>Another important use case for the automotive industry is to further
optimize the manufacturing process by taking more data sources into account.
Since most SCADA systems and PLCs cannot connect to large data lakes or
perform more advanced computational jobs, real-time communication between a
cloud instance and the shop floor has several benefits. First, it integrates
more data into the decision-making process, since control algorithms for
automating manufacturing sites that run in a cloud environment can take more
variables into account than single-plant control systems. Second, it reduces
the resources needed on a particular factory floor or plant by transferring
complex, recurring and resource-intensive computational jobs to a cloud
provider, where computational power is not the limiting factor. However, in
such cases it is important that the 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 writing, TSN bounded latency mechanisms
are the most commonly understood and deployed mechanisms providing bounded
latency and jitter services.</t>

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

<t>The traffic model used for gLBF is taken from UBS. It gives the flow a rate
r [bits/sec] and a burst size b [bits], and the traffic envelope condition
is that the total number of bits w(t) of the flow over a period t [sec]
must be equal to or smaller than (r * t + b). In one typical case, a flow
sends one packet of size b every interval 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 takes p seconds until (r * t) reaches 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 with their admitted envelope are forwarded without any queuing
latency introduced by the mechanism. When the maximum amount of admitted
traffic is present, packets of admitted flows experience the maximum
guaranteed, so-called bounded, latency. As a result, in-time mechanisms
introduce the maximum amount of jitter, because the amount of competing
traffic can change quickly, and with it the latency of packets.</t>

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

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

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

<t>IEEE 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. Unlike the in-time mechanisms mentioned above, these
mechanisms require clock synchronization between routers.</t>

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

<t>One class of applications that requires or prefers on-time (low-jitter)
delivery of packets is control loops in vehicles or industrial environments,
and hence in low-speed, short-range networks.</t>

<t>Emerging or future use cases such as remote PLC or remote driving extend
these requirements 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) control a set of sensors and actuators, polling or
periodically receiving status information from sensors and sending action
instructions to actuators. When packet forwarding is on-time (synchronous),
the central unit knows exactly when sensors sent a packet and when packets
are received by actuators, and can act accordingly.</t>

<t>These solutions do not require sensors and actuators to have accurate,
synchronized clocks. Instead, the central unit can control the time at which
sensors and actuators 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 actuators need to convert the packets arriving with high
jitter into an on-time arrival model, to continue supporting the model the
application requires.</t>

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

<t>As a result, existing bounded latency mechanisms that support synchronous,
on-time delivery of packets require clock synchronization across the
network: in on-time mechanisms like CQF for the forwarding mechanism itself,
and in in-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. However, it is also a
significant operational cost factor, and potentially an equipment cost
factor, for example through the difference in hardware cost between local
oscillators of different accuracy in network devices.</t>

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

<t>As a result, it could be challenging to introduce new applications such as
the remote PLC or remote driving applications mentioned above if they had to
rely on a bounded latency network service with today's strict clocking
requirements. But even in existing markets such as in-car or industrial
networks, removing or reducing the need for clock synchronization could be a
significant step towards lower cost and simpler 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 described in the early 1990s but never standardized,
primarily because the required forwarding was considered too advanced for
the equipment of the time. These limitations are now starting to be
resolved, so it seems like a good time to reintroduce the mechanism.</t>

<t>The principle of damper-based forwarding is easily explained: when node A
sends a packet, it has measured the latency L, i.e., how long the packet was
processed in the node. The main component of L is the queuing latency of the
packet in A caused by competing traffic 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. When the
packet then arrives at the next-hop node B, B simply delays the packet
further by (M-L). As a result, the packet has been forwarded synchronously
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 the outgoing
interface towards node B, where the packet is enqueued into Q, because
competing packets may already be waiting to be sent from Q to B. This
happens because packets may arrive simultaneously from multiple input
interfaces on A (not shown in the figure), and/or because 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 the link to B, B repeats the
same steps towards the next node (not shown).</t>

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

<t>All factors impacting the hop A/B latency other than Q in A are naturally
bounded: a well-defined maximum can be calculated or conservatively
estimated. The transmission latency of the packet from A to B is composed of
the serialization latency of the packet, which can be calculated from the
packet length and the bit rate of the interface, and the propagation latency
through the link, which can be calculated from the speed of light in the
link material and the length of the link.</t>

<t>To guarantee bounded latency through Q, an admission control system is
required that tracks, accounts for and limits the total amount of traffic
through Q. Admission control mechanisms rely on knowing the maximum burst
that each traffic flow can cause, and add up those bursts to determine the
maximum amount of simultaneous packet data in Q, which in turn determines
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 latency MAX for a packet. However, packets will naturally have a
variable hop A/B latency lower than MAX, due to differences in packet size
and in competing traffic. As a result, their relative arrival times xB in B
will differ from their relative arrival times xA in A. This leads to
so-called "burst accumulation", and hence to the problem that the admission
control system cannot calculate the maximum burst and latency through Q in B
as easily as it can for Q in A.</t>

<t>If, however, packets could be forwarded such that their hop A/B latencies
were all the same (synchronous, on-time), then the admission control system
could apply the same calculus to B as to A. This is what damper mechanisms
aim 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 Damper mechanism that is simplest to explain, but not to
implement. Node A measures the time xA and sends this value in a packet
header to B. B measures the time xB directly on reception of the packet. It
then delays the packet for a time (MAX-(xB-yA)). As a result, the latency
(yB-yA) will be exactly MAX, up to the accuracy of the damper.</t>

<t>The first challenge with this simple approach is the need to synchronize the
clocks of A and B, so that (xB-yA) can be calculated correctly.</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 locally measured time xB.
Because neither the calculation of d in A nor the delay by d in D depends on
clock synchronization between A and B, this approach eliminates the need for
clock synchronization.</t>

<t>As a consequence of this change, however, the latency incurred by
transmitting the packet over the link is no longer included in the
measurement.</t>

<t>In this approach, MAX1 is the bounded latency for all processing of a packet
except the link propagation latency P, which is the length of the medium
divided by the speed of light in the medium, and MAX = MAX1 + P.</t>

<t>The serialization latencies across the sending interface on A and the
receiving interface on B can, however, be included in MAX1. It is only
necessary for the measured timestamps zA and xB to logically refer to the
same point in time, assuming a link of minimal length, e.g., a back-to-back
connection. For example, the reference time could be the time when the first
bit of the packet can be observed on the shortest wire between A and B. A
can most likely measure zA only some fixed time offset o before that
reference time, and hence needs to correct zA += o before calculating d.
Likewise, B may only be able to measure xB after the whole packet has
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. Requiring clock synchronization even within such a large
device is undesirable.</t>

<t>Therefore, <xref target="FIG4"/> shows damper operations occurring solely before
enqueuing packets into Q and after dequeuing them. The Damper module
measures the timestamp x, extracts d from the packet header, adjusts it
according to the considerations described above, delays the packet by that
value and then enqueues it. After the packet is dequeued, the Marking module
measures the time z, adjusts it according to the same considerations,
calculates the value of d and rewrites it in 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 calculi, on every interface that
supports bounded latency, the role of the controller-plane involves other
components besides admission control, and those need to be tightly coupled
with admission control for efficient use of resources.</t>

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

<t>As a result, to perform these operations, the controller-plane needs to know
exactly which parameters the bounded latency queuing mechanism on each
hop/interface supports. Standardizing these parameters ultimately means
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) uses the queuing model of Urgency
Based Scheduling (UBS), which is also used in TSN Asynchronous Traffic
Shaping (TSN-ATS). This allows one and the same controller-plane, including
its optimization algorithms for bandwidth and latency control, to be reused
or co-developed for both TSN-ATS (or a DetNet L3 equivalent) and gLBF.
Hence, gLBF should provide the most easily operationalized on-time solution
for networks that want to evolve from an in-time model based on TSN-ATS, or
that even want to operate both options in parallel.</t>

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

<figure title="UBS strict priority queuing block" 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 always takes the next packet from the
highest-priority queue (1 is highest) that has a pending packet, and
forwards it. UBS defines two options for the traffic model of traffic flows.
In the more flexible one, each flow specifies a rate r and a maximum burst
size b (in bits).</t>

<t>As a 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
the priority 1 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 Damper module (D) retrieves the delay from a packet header field.
Requirements for that header field are defined in <xref target="DM"/>.</t>

<t>Because serialization speeds differ between Incoming InterFaces (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
carry 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
from an appropriate packet header field, which is looked up in the Packet
Prio Enque stage of Q; the packet is then enqueued according to that field's
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 needs to look up the packet priority to determine MAX1 for the
packet, and hence calculate the value 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 of UBS, which is a set of priority queues and their
maximum sizes, plus, for gLBF, a maximum latency value MAX1 for each of
these queues, calculated by the controller-plane and used by the M module.</t>

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

<t>TBD: sketch a small YANG-like data model, even though it is trivial, as in
the TCQF draft. It should primarily include additional diagnostic elements,
such as the maximum occupancy of each priority queue and the number of
overruns.</t>

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

<t>A well-specified standard for a damper mechanism such as the one described
in this document also needs to handle error cases. The primary error
condition is when the sending node A of a gLBF packet recognizes that the
packet was enqueued for longer than MAX1, so that the delay to be written
into the packet would have to be &lt; 0.</t>

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

<t>The data model below describes an option that, instead of discarding the
packet, signals the condition through an ECN-like mechanism combined with
lower-priority forwarding of the packet. This informs the receiver directly
about the problem and allows 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 designed to support per-hop, per-flow stateless
operation, because its processing requires no per-flow metadata, only
per-packet metadata.</t>

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

<t>This value is 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 field indicating the delay that the damper on
the next hop needs to apply to the packet. Dampening only needs to be as
accurate as synchronous delivery needs to be. A unit of 1 usec is currently
considered sufficient for all purposes. The maximum delay value is the
maximum per-hop queuing latency. 65 msec is considered far more than will
ever be needed. Therefore, a 16-bit header field is sufficient.</t>

<t>Note that link propagation latency does not affect the delay value. Hence,
the size of the delay field does not constrain the length of links.</t>

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

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

<t>Eight priorities, and hence eight different latencies per hop, are
considered sufficient. If the priority is an end-to-end packet header field,
such as 8 different DSCPs in IP/IPv6, 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 more advanced alternative to the end-to-end-priority. It is
optional. If it is present for a particular hop, 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 in a hop-by-hop part of the header.</t>

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

<t>When such a per-hop priority is indicated, the controller-plane can support
many more than 8 end-to-end latencies simply by combining different per-hop
latencies. For example, one flow may use priorities 1-1-1-1 across four
hops, the next, slower flow 1-2-1-2, the next one 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 rewritten on every hop when hop-by-hop priorities are used.</t>

<t>It is an optional field that may be beneficial in an 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 no longer available
from the hop-by-hop packet header. This is typically the case in MPLS-based
forwarding such as SR-MPLS, because this information will have been removed.
Note that this header field is only required to support optional simplified
high-speed forwarding implementations.</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
is 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 may be changed to 1 by a gLBF forwarder, as described below.</t>

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

<t>When the Di bit is set, the packet is not discarded; instead, the Ds bit is
set to indicate that the packet must no longer be forwarded with gLBF
guaranteed latency, but only as best-effort or even lower-than-best-effort
traffic.</t>

<t>Di and Ds may be encoded in the two ECN bits for IP/IPv6 data planes. The
required behavior should be backward compatible with existing ECN
implementations, in case the packet unexpectedly passes a router that does
not process it 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 be 24 bits or
larger and represent 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
for the internal calculations performed for gLBF, depends on a variety of
factors. The most important factor is the accuracy of the bounded latency
desired/required by the applications.</t>

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

<t>In WAN deployments, propagation latency is on the order of milliseconds,
e.g., ca. 1 msec for 250 km of fiber. Serialization latency on 1 Gbps
Ethernet is ca. 1 usec for a 128-byte packet. It is likely that a latency
accuracy on the order of 1 usec is sufficient when the round-trip time is
potentially 1000 times larger.</t>

<t>Based on these two simple data points, this memo considers an end-to-end
latency accuracy of 1 usec to be the target. To avoid introducing additive
errors, the resolution of the damper value needs to be higher. This memo
therefore proposes a resolution of 1 nsec for damper values, which is also
the resolution used in PTP.</t>

<t>The maximum value, and hence the size, of the damper field depends on the
maximum buffering latency in the sending node plus smaller factors such as
serialization latency. This maximum depends primarily on the slowest links
to be supported. A 128-byte packet on a 100 Mbps link has a serialization
latency of ca. 10 usec. With a 16-bit damper value at nsec resolution, this
would allow buffering of only 6 such packets, which may be too low. Hence,
the damper field should 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 sends gLBF packet
markings, then the packet arrival timing and the gLBF markings in the packet
header(s) MUST only be honored when that prior hop is trusted by the gLBF
domain.</t>

<t>If the prior hop cannot be trusted to mark and/or time packets correctly,
the first-hop gLBF node in the gLBF domain MUST implement a per-flow policer
to prevent packets from such a prior hop from compromising gLBF guarantees
in the gLBF domain.</t>

<t>The policer is logically placed after the gLBF damper module and before the
queuing module.</t>

<t>Instead of a policer, the ingress edge node of the gLBF domain MAY use a
per-flow shaper or interleaved regulator. When, for example, a prior hop
sends packets of a flow at too high a rate, a shaper delays them further and
avoids discarding packets of that flow until the flow's burst size is also
exceeded. A policer would immediately discard any packet that does not
conform to its flow's 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 with the admitted traffic envelope. Senders that send only
one flow, such as simple sensors or actuators, will typically be able to do
this.</t>

<t>When senders can do this (send gLBF packets with the right timing), these
packets do not need gLBF packet header elements. Instead, the ingress
network node can calculate the damper time locally, as described next,
avoiding any need for gLBF processing in the sender.</t>

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

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

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

<t>Normal gLBF senders simply need to implement the queuing and marking stages
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 neither act as simple gLBF senders nor implement the gLBF
queuing and marking stages, the first-hop node of the gLBF domain needs to
treat them as an 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 process gLBF packet markings and therefore need to
implement the gLBF dampening stage.</t>

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

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

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

<t>Consider a set of N senders that conspire to generate a burst at the same
receiver. They 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 N packets (one from each
sender) on the interface simultaneously, which is obviously not possible.</t>

<t>With gLBF-capable receivers, this possible burst is accounted for by the
controller-plane including the latency introduced by such a worst-case burst
in the end-to-end latency, and by indicating to the receiver, in the gLBF
header field, the actual time the packet needs to be dampened. When the
receiver does not support such dampening, however, that maximum last-hop
burst 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 gLBF receiver. A common
case in cloud applications is a container or VM in a data center acting as
sender/receiver. Such an application may be considered trusted by the gLBF
domain if it belongs to the network operator itself (such as part of a
higher-level service of the network operator), but not if it is a customer
application.</t>

<t>gLBF marking needs to happen after contention between packets from all
applications, so it would typically happen inside the operating system. The
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 have to leave the damper marking inaccurate.</t>

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

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

<t>There is a non-trivial set of ingress/egress processing options that could
help to simplify and secure the handling of different types of senders and
receivers.</t>

<t>Later versions of this memo may define specific profiles of edge behavior to
limit the recommended set of implementation options for senders/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 and the bounded latency
calculus, gLBF should be easy to operationalize using existing
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, namely calculating which flow goes into which priority
queue on which hop.</t>

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

<t>For gLBF hop-by-hop operations, the first hop needs to receive the per-path
or per-hop priority information, which it then imposes in an appropriate
packet header of the flow's 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 towards the
ingress node of the gLBF domain. Traffic parameters such as rate and burst
size are only needed there to establish a policer, so that the flow cannot
violate its admitted traffic parameters. This first-hop policing is actually
a function independent of gLBF, UBS or any other method used along the path.</t>

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

<t>gLBF operates 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 get rerouted by in-network
routing mechanisms, because it normally will not, or cannot, reserve
resources for such rerouted flows on arbitrary failure paths without
significant additional effort and/or waste of resources.</t>

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

<t>Today's (pre-DetNet) controller-plane deployments commonly use one
centralized "SDN" controller to implement the functions of the "Path
Computation Element" (PCE), which tracks free bandwidth on every hop in the
network topology and can hence calculate on which path enough resources are
available for a requested new flow. This is, for example, 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 that may not have all the
complex policy requirements that make a centralized PCE most desirable. This
is possible because, with gLBF, the controller-plane does not need to
interact with non-ingress routers when dynamically allocating resources to
new traffic flows.</t>

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

<t>Note, though, that none of these (complex) controller-plane considerations
need to apply to deployments where the total amount of gLBF traffic is well
defined and so small compared to the available capacity that no bandwidth
exhaustion would occur, even under supported failure conditions. In those
cases, gLBF is still necessary to guarantee the latency of the 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 discussion in detnet</t>

<t>05 refresh, still waiting for more discussion 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 to 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>

<t>03 Editorial English fixes throughout
   (grammar, wording, typos, punctuation, US spelling, hyphenation). Semantic fixes:</t>

<t><list style="symbols">
  <t>Damper principle: delay is (M-L), not (B-L).</t>
  <t>Damper with UBS: gLBF provides on-time (not in-time) latency service.</t>
  <t>Link propagation latency P is medium length divided by speed of light (not times).</t>
  <t>High speed appendix: PIFO (not FIFO) hardware implementations are still research.</t>
  <t>PCE is "Path Computation Element".</t>
  <t>Terminology: TCQF is no longer called "the mechanism specified in this memo".</t>
  <t>Taxonomy: TCQF replaced by gLBF (copy-paste error).</t>
  <t>Fixed titles of the UBS strict priority queuing figure and the glbf_send() figure.</t>
  <t>Per-hop priority example: 1-1-1-1 across four hops (was five).</t>
  <t>IGMP -&gt; ICMP, PPT -&gt; PTP.</t>
  <t>Damper field accuracy: serialization (not propagation) latency in the 24 nsec and 10 usec examples.</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 1271?>

<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 provide normative reference code aligned with the
normative functional description in <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 deployability of mechanisms
like gLBF. Therefore, this appendix describes considerations for such
high-speed implementations, including pseudocode for one possible option.</t>

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

<t>However, the timed FIFO algorithm presented here may also face hardware
scalability challenges, because it requires O(IIF * priorities^2) FIFO
queues per outgoing interface, where IIF is the number of (incoming)
interfaces on the node and priorities is the number of desired priority
levels (TSN allows up to 8). If, however, the priority of flows (packets) is
not per-hop but the same on 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 later in this appendix is based on
the analysis of gLBF behavior performed in <xref target="gLBF"/>. That analysis reapplies
the same type of analysis and algorithm as <xref target="UBS"/>, which can be used to
implement TSN-ATS in high-speed switching hardware. Therefore, this appendix
starts 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 the qhead is calculated from the flow state that
the router maintains across packets, and once that departure time is
reached, the packet is passed to one of the egress strict priority queues.
It is called an interleaved regulator because the FIFO holds packets from
multiple flows (all from the same incoming interface and with the same
outgoing priority), hence 'interleaved', and 'regulator' because it delays
the packet until the target departure time.</t>

<t>The innovation of interleaved regulators, compared to the earlier 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) with the same egress priority are in the same
order, so that these packets can be enqueued into a single FIFO in which
per-flow processing only needs to happen for the qhead, with no more than
negligible added latency compared to per-flow shapers.</t>

<t>With this understanding, the interleaved regulator and the 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 regulators (FIFO
queues) for that priority.</t>

<t>Egress scheduling now needs to perform the per-flow state processing for the
qhead of each queue, and then take the target departure time of that packet
into account, selecting the interleaved regulator whose qhead has the
highest priority and earliest target departure time.</t>

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

<t>The same line of thought as in UBS can be applied to gLBF and is the basis
for the algorithm and pseudocode described here.</t>

<t>In gLBF, the order of packets by arrival and target departure time depends
on the egress priority and the IIF, but also on the priority the packet had
on the prior hop (pprio). All packets with the same (IIF,prio,pprio) arrive
in the same order in which they need to depart, so it is possible to enqueue
them into a FIFO and only perform timed dequeuing of the qhead.</t>

<t>Both prio and pprio matter because, when gLBF uses an encapsulation that
allows per-hop priority indications, a packet's priority can differ on each
hop. In UBS, the priority of a packet can equally differ across hops, but
the prior-hop priority is not needed to separate packets into interleaved
regulators, because UBS targets in-time delay, where the interleaved
regulator only needs to compensate for burst accumulation. In gLBF, in
contrast, the delay to be introduced depends on the damper value, which
depends on the prior-hop priority. As a result, the order in which gLBF
packets should depart (absent any burst accumulation) also depends 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 rather than interleaved regulators.</t>

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

<t>Whereas the normative description defines D, Q and M blocks, where the D
block performs the dampening and the Q block performs the priority queuing,
the high-speed hardware optimization replaces D and Q with a single DQ
block. In it, packets are enqueued into a single-stage per-(IIF,pprio,prio)
FIFO (similar to UBS), and the dampening by the damper time happens on
dequeuing from that stage (also similar to UBS), while packets are
scheduled/prioritized 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
depends on the time y at which the packet leaves the damper stage D and
enters the priority queue stage Q. Simplified, the damper value is (MAX1 -
(z - y)).</t>

<t>In the high-speed implementation, packets are not passed from a damper stage
queue to a priority queue; instead, they stay in the same queue. On the one
hand, this is one of the core reasons why this approach can support high
speed: it does not require two-stage enqueuing/dequeuing. On the other hand,
it also eliminates the ability to take a timestamp at time y.</t>

<t>To replicate the normative gLBF behavior with a single stage, the marking
stage M (where the new damper value is calculated) therefore needs to know y
by other means.</t>

<t>Fortunately, y is exactly the target departure time of the packet from the D
stage, and therefore also from the DQ stage, so it already needs to be
calculated on entry to DQ: 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 contains the parsed fields of 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 the current and prior-hop priorities from the packet
header. If, for example, SRH (<xref target="RFC8754"/>) is used with gLBF, and SIDs are
formatted according to <xref target="RFC8986"/>, then the priority for each hop could be
expressed as a 4-bit SID ARG field (see <xref target="RFC8986"/>, Section 3.1),
indicating 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, which
allows the use of single-stage timed FIFOs instead of PIFOs. This type of
parsing is not required by SRH, but it is a benefit of packet headers that,
like SRH, retain the prior hops' information, as opposed to the SR-MPLS
approach, where past-hop SIDs/labels are discarded.</t>

<t>now() takes a timestamp from a local (unsynchronized) 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 entered 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 converts the relative damper value into 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 copied into a
context header field here, even though it is only used later during
dequeuing, on the assumption that accessing state information is undesirable
in the time-critical dequeuing/serialization stage, whereas such state
lookups are 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>As the reference time against which the damper value in the packet is
applied, this specification assumes the time when the first bit of the
packet is seen on the medium connected to the incoming interface.</t>

<figure title="Example pseudocode for adj_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 between that
(first-bit) measurement point and the time at which the now parameter of
adj_rcv_time() can be taken is the deserialization time of the packet. It
can easily be calculated from the packet length, assumed to be known from
pak.context.length, and the bit rate of the incoming interface, known from
pak.context.iif.speed, plus a fixed, measured or calculated latency FUDGE
for other internal processing. In the example pseudocode, these are assumed
to be static.</t>

<t>If other internal factors in prior forwarding within the node create
significant variation, they may need to be compensated through additional
mechanisms. In this case, rather than as shown in glbf_enqueue(), the
reference time should be taken directly upon receipt of the packet, before
it enters the forwarding stage F, and then be used as the now parameter of
adj_rcv_time(). This is deliberately not shown in the code, to highlight the
simplest implementation option, which 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() selects as the gLBF packet to send the enqueued packet with
the highest priority and the earliest departure time td (as calculated in
glbf_enqueue()), where td must also not be in the future, because otherwise
the packet still needs to be dampened.</t>

<t>The outer loop across this hop's prio finds the packet with exactly these
properties, dequeues it and sends it. Strict priority is expressed through
the term maxpriority...minpriority, which 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 queue qheads, at the
expense of chip area, similar to how TCAMs work.</t>

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

<figure title="Reference pseudocode for glbf_send()" 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>glbf_send() represents the marking block M of the specification. It needs to
calculate the new damper value td 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 stayed in the queue,
minus any additional time FUDGE2 that the packet still needs to be processed
by the router before its first bit appears on the sending interface. This is
calculated as shown in [1] and [2] of <xref target="FIG-glbf-dequeue"/>.</t>

<t>The primary factor impacting FUDGE2 is whether this calculation and the
update of the td field in the packet header can be done directly before
serialization starts, or whether they may need to be done while another
packet is still being serialized on the interface. Taking the added latency
of a packet currently being serialized into account can, for example, be
implemented by remembering the time when that packet started to be
serialized and its length, and then using these to calculate FUDGE2.</t>

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

<t>PTP clock synchronization needs to capture the accurate arrival time of PTP
packets. It also measures the residence time of PTP packets between
receiving and sending them with nsec accuracy, and adds it to a PTP packet
header field (correctionField). Given that this needs to be
hardware-supported functionality, it is unclear whether there is a relevant
difference between supporting it for a few PTP signaling packets and for a
much larger number of gLBF data packets, or whether it is a good indication
of the feasibility of the packet processing steps that 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>Before this work, the best solutions for the requirements outlined in this
document were <xref target="TCQF"/> and <xref target="SCQF"/>, which have been proven feasible for
high-speed forwarding planes through vendor high-speed forwarding plane
implementations using low-cost FPGAs for cyclic queuing. On the other hand,
implementation analysis concluded 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 <xref target="TCQF"/> and <xref target="SCQF"/> are very good solutions, proven to work at high
speed and low cost, available for deployment and ready for standardization,
the need for network-wide, hop-by-hop clock synchronization (albeit at lower
accuracy than required by other mechanisms feasible at high speed and low
cost), as well as the need to find good network-wide compromise cycle times,
still makes planning and managing them in dynamic, large-scale and/or
low-cost networks more complex to operationalize than the authors would
like.</t>

<t>In parallel to the short-term operationalizable solutions <xref target="TCQF"/> and
<xref target="SCQF"/>, <xref target="LBF"/> was researched, exploring a wide range of options to
signal and control latency through advanced per-hop processing and new
latency-related in-packet header elements. Unfortunately, given 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 for a
mechanism derived from <xref target="LBF"/> that also provides guaranteed bounded latency
and has the flexibility benefits of <xref target="UBS"/> with respect to fine-grained,
per-hop independent latency management, but hopefully still fits within the
limits of what can be implemented in high-speed, low-cost forwarding/queuing
hardware.</t>

<t>The feasibility of gLBF in high-speed forwarding hardware has yet to be
proven. The following considerations explain why the authors think it should
be quite feasible:</t>

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

<t>Implementing timed FIFOs (if the proposed high-speed implementation approach
is used) is no more complex than implementing shapers, which have by now
also started to appear on high-speed (100 Gbps and faster) core routers,
primarily for high-speed virtual leased line services.</t>

<t>For the rewriting of packet header fields based on the calculated latency
the packet experienced in the node, IOAM-type functionality arguably already
provides evidence of feasibility in high-speed hardware forwarding planes.
Processing of PTP timing protocol packets has similar requirements.</t>

<t>Even if implementation challenges at high speed and low cost make gLBF a
longer-term option in those networks, low-speed (1/10 Gbps) implementations,
such as in manufacturing or cars, may be an interesting option to explore,
given that gLBF has the no-jitter benefits of <xref target="CQF"/> without the need for
cycle management or clock synchronization: the 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 not proposed as a standalone solution, but in conjunction with
<xref target="I-D.eckert-detnet-flow-interleaving"/>, a per-flow mechanism used on the
ingress gLBF router to allow more flexible per-flow management of the
admission of flow bursts than presented in this document. The proposal is
split into two documents because <xref target="I-D.eckert-detnet-flow-interleaving"/> can
be combined with all "mostly synchronous" per-hop mechanisms, for example,
besides gLBF, also CQF and <xref target="TCQF"/>.</t>

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

<t>Using the section numbers/titles of the taxonomy document
<xref target="I-D.ietf-detnet-dataplane-taxonomy"/>, gLBF can be classified as follows.
In summary, gLBF is very much like TCQF, except that it replaces cycles with
Dampers, thereby further reducing end-to-end jitter, reducing clock accuracy
requirements (only phase synchronization, not clock synchronization, is
required) and removing the complexity of end-to-end cycle management.
Compared to older Damper-based proposals, gLBF reuses the ATS calculus,
which allows reuse of ATS admission control and delay calculations, and a
simple implementation based on FIFOs with timed scheduling (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.</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 on per-hop, per-packet synchronous delivery,
which maintains burst sizes end-to-end across all hops.</t>
  <t>5.2.  Traffic Granularity  <vspace blankLines='1'/>
Formally, gLBF has class-level granularity. However, the statement in
<xref target="I-D.ietf-detnet-dataplane-taxonomy"/> (revision 04) that all packets
within a class are treated the same is questionable for gLBF (and for
Damper solutions in general): in Damper solutions like gLBF, packet
latency is calculated per packet (within the same class) based on the
previously experienced per-hop latency, in order to compensate for 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 of the packet. It is Left Bounded by the signaled
remaining latency needed to achieve synchronous forwarding. If the bound
were observed not on the wire, but at a specific forwarding step in the
router (after reception, before enqueuing), then the per-hop bound would
be extremely tight, 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>
gLBF 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 primarily has an open-source, simulation-level validation
implementation, as described in <xref target="gLBF"/>. Additional implementations were
done in the Linux kernel by a university (TBD reference) and by a second
university in conjunction with a Prolog-based admission control server
implementation (<xref target="dgLBF"/>).</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+2963Ib2ZUu+H8/RQ4rYgy4APCiS0l029OUKJXlI6kkUWWf
E+0eRwJIkukCMlGZCVIslSLmIeYJ50lmfeuyL5mAJPv0ienoGHW7SAJ52Ze1
1319azqdukW9LKur02zbXU4fOdeV3ao4zc6LrmjWZVW2XbnIXhfdbd38RNdl
I/qG/hxn53mXZ29WeVVk0+xqmzd51RXFMnuZd0W1uMue5C399bxubvNmyXde
vXzyfJxd1k02r7fVkr5d6bW3ZXedrerb7O9lR+/N8mqZ5e1dtbhu6qretrjJ
HlNWuwfXunw+b4qb02xZdFXRTa9W80u3rBdVvqYJLZv8spuWBc0y+n56dM/d
0uTPn71//ey9W9B4rurm7jRru6UrN81p1jXbtjs5Onp8dOLariny9Wn24tn7
547+omH+LV/VFT3+rmjdpjx1WZZ19UL+lt+Xxaa7Ps0e4M+2bugRl63/vr1b
J38v6vW6qDr9wOXb7rpu8NQpvsU/mc37umhWRdtmzxY/FU1nX9YNzeX5tts2
xW1RZu+LxXVVr+qrsmizHy/O7DLMo+hOs5OTk6PsKb2vyVfZsw+bhp54m9/Z
ZYuyo5W4oH3Ns6cr2mD/Rb2kMTw9yx4/OHpwFD7d0pPojuhNxTovV7SIXfGv
i3Z2mW9ny8K+a2oQWrEsu7oZzvBsVXyg9SVieLoq1utkhhd3603d0eT6A/qK
oay2y9vy6l8XeOiMnjZ880VXEK112ZPmjqaevPgFDWhT0H/C5/rYdv6vrdw3
59tmtJPD0fw3+2jnWy/zKvsjCKBNXvquvl4W2f+eXSyu6fm/9F/M982u+b5/
LRerervc+fLzZ85VdbPOu/KmAEm9e/705OT46DTzv5/Yx/e/u6+/3jv57kh/
ffTwwQP7lQ6E/fr4IV3ryuqy9+x7J0eP9df7j74Ldz5+aL/eP7IX0vf3/fPu
PfK/PrJrHx8d+19PHtptj+kd+PXF9HwWn+wlsaYNONO0yz8QA1nf2VUFHxe7
7pJYzrQktkVnKb8BF3R03cXTt89P+erFdVHZtW0znYOjTZV3TZV30Q0vL85f
yw0/l3l1ZXfQibkqpu0iXxX6EV373j88HUq3+PnS6SCXeMjP22JLI5qCNU7X
21VXbug5i7vFqlxM59vLy6JpMasnL569m75/dhoWYV4WzbQrpnnDB+T89ZOX
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
T2h6IwmZ6ieZmXMRJTw3nvbyJCp/11G8vMduQvrkd+I2uK45/KsJ8E7jQhqy
Zcmp8i/IauxZFEuJtu6ylFS0eOk5yJkMFxywKTZFLsnQjjk91KHW04fxTSGU
sLjgVB9MzmDhNhLD05B9PBqsIGMUCr2mJckDodRmH55k0+zDGVvYEj5Zos5B
XNKesn1gRqR6wo8dTQ4kiHcT2W6QzY0oj+RI+bJaqb6mvbCkmR2SRbj3c31I
L7ARvTUqysHyylTpUnZiQH5/fhIAuMqtWnTPK2wE7NjOr3Zeindb8F+qmFof
3TCKXSHXVQ+HIzWTX81i+Xf49JJIK7UTJ3oL6QVInM3uHWMTuQ6lFX0ZxwKV
Tjf5Yrtda4aEWJytRjhNR7/u8VPZEz5Xb5VWoN8hiw4U7NT2OO1nPVjkQo9Y
lG7OyaEccWQVmp6BTD1MdCnbEvvA9qx1LLNLyfDgUIIU1n/NdtkuDMdndRlG
8jDxNJDMliESsLjE5VLjFMqLQu7DDgJwsS0fU8H+9++hCOYOnizslTrIiMyg
LNchTD4wEm1AbydJtXcv8QyHw1sMEqlHvgr8Y5K6pmUfiNVL6VjI6gghStVY
/SK8JXVt8MIkjCOmLVRN7zBUgpISRQGyyXsJOOLP1RQLLn1A7UomaT5a9U40
48+3HrF+vDUWa76oTjIJsVxaTELbsW2qSJa7eJgR0fEwURZKViUSVXo1pm81
s0DN6/17MeEElUWugXkuJw0ZGbkPS/eP8Kuz/661OaaXeE+WyXRJd7BDrU51
n6w4YAqBq+Dhk2y5ZcMt+KikdFzmiTwac/YNjJih3l6yBBDYSXMnQ4aw4KFH
PHE8WHmXPyyfueuM2ZY6BiyN3UVW97Ci9SB2/6qZZbWpIfNwiAUgR8YSZ/3W
DMhXzkv/IMrscm+45pz2iP3G7gn3RSz3ku3QdAO97ySyckBONtqy6W0i10VA
pzSYFlYu4qDQxFy844mYa7vNSEW+kAHAf3UXHudrtZhR5/zTdsJcLloKFucJ
lusIjOU/nckV/3eXydX/Pphc579O79Sw2mly7fz+S2/vmVw73/7Pr52HGFW7
iynIXPbe5vrDr/3rpriu7l8n/4J9drLHPhsYZyfeOANtnfdIRr3BCltD2gRX
UIrbJ3Lr1s7jU82MGNTd0wZV9cOZD7VqNhzxkm0h6d3qfVCYATGWnux6yBNi
UKR2dyLHggLewyQQTMlq6OBQhi2RWuKx09GHJ9O7s/EuR4epGKM7vkSY+bzw
sVtm0RCD9a7QpB5A9a2Ju9GXLli+ll9bKYLLpZjS+3R7ARtIVYm94h1qXXi8
k0ynskP14XoqjHn2X/jM//KFM//Lf+0zf+/zZ17bKeBAISfdc4B7ngPAB8sU
qfRjjmVONUBMzt+dhPR/oZPjIvjPZfZ7PlnH09EvZ3y0onOvkCJ6zlPbQ0/9
voOLjoFcWxkUEj14HJ5b3UUuZmEVM/fE4w6Uam6FY6FcQ8ASGbmWD61U0N/J
5+eRMbkn3GExQn8aeQn9ad4DMLb7YRYUYzPu5620/LnUTeG8w0hDiW3yskJt
iVRge8CYMnWnp24QST6Fy52zDbjubemNY1lIZuiMm5bMaQLGd2x8akcSBas+
kUuBkT+UwxcfwLHDOHbZ9G+iuvKhDQZELGCCaL6vORJ22XR6rSid0NZ/L0P/
NnujbHmXQcv13cGtYblBPd+YGoj7nGdPcIqi3ZoXySpjGObo4ewHD37hY/wJ
NbcdHeI2+0XeS1IQVWNIndJkp0uRmt6ZxRgsmcdgCaXWsuooIVS8RFlci0fn
HKBFljh+Oq1RY7yK52nEuMh8AUumxWeqKXvmcGvKrWTez8uud+KV0dRzOC2i
fFQk2UHbuEXyRO+ACbepJHkEUa5w8LE8HKfmUl3xcqlj7pKzyAJWUN65dPix
YVIxfBDn2LDYxHO//X243XMQ1AfPXADyeMI+XANnszp5Gx3tWihPuL2uV4nr
Tjy/S1Xifen9Kvtt1jBhRk7Y/tDFid3oeXEpUcc+lb3EynbT4Ly5WKV6ooMK
a8TGxPLvKBZZZtPf61g5ZUfQpoRvcJqnd7703ZZ+seeFL2IF5/3Poqmo9O8r
BP72fd+rpsIaiFdHSBEhLeTVr0FT2ff9f8Tb/2M0FSgqrELA+/gW+klvoQbf
u6z/72uVHbv46zSe+6bxcC5BYw5SJMAF/eZ+FH6y4GZyqaS7ar5Dio09kzY2
jdPE5kOJZhQSiw9Zcxx9yjUdKYqVW6QHySQu5Avp5VHwemQZIMyfSWlpluNw
3C2YrJLB7YhJZ+++kIfPuSeaRykvU0AZSVRiCJeKoZe5Hp6lo7jCAPeSrKM6
FkKCppSDNgonWDD3w51OAmlxvEwiauJDZF64LOwSmtla/NRmhnJMzw2MQJaF
2Qck7jGXgVbp2UuCHzJR9gR/j0uKUz8bXtIk+KEKyroGiQ4xXFUDqCxe2HJ+
1Zln8SGyI5M0AL9XeaOV5Lvnl/0SjzsbjNswbqLBT2IFHNfICFm9ldxHxieS
ct9quFC2YabrRHw/TsSRNOM+uk56gp/2vj5Nvn6DcjYrDODizeTm4LzWa6Kv
ZzP5kSU/ZuGK2d6fds23yvt2/nTZRbMATyZhwVYjCQX5+VR/nme/fuWTPCvb
9/Mfes6v2TMdwXP9+b3+/CP/zM7b7useqIzzgTFO3g5BRFJYZ4VFFj0PXFSf
G8FG9B2L0ckhI/ESjM0MSEHSFTPU8z83wK1PsoIDnxSaLuEvjatFJY6Pc+gR
rXpGiOqndcgV2wFcfAPjtpU4nPOsGGH5ltMoBx5Zi0PVbVB/oO4qhA7pv7Rk
S0GG3g09W/gKToXe8JWTM5VWD4jLlqsVcv/8WY7SpM1ZLtq4QHMmcRpGQiE6
5tqfVv1Yg8l7ncsQgrTONI6lRcntjBPY3FiamxV75pywVWo6hncRIodvkiLt
OnmAAZpz4UhrueZPDRMANWym+TNhMvxENnp68eb5WDKd3I4S1ggPiL0U0dbo
9FihtOTtgKzoPLXAiykpt7WHKwUKUeQpmBcMpsvgFx7SAR5Qxh7y1bc9Y3hI
6QkUmzyO5TwRnxtkCFQS4krafezfTB8wc2I9I6hVMj13oawYz2d7nM7ospRW
G4An76XjgjZCOQaINSrH+PwwEFt0obwFIwmdA3e6DIZ9LHTmiLgdhjNvx33m
m2CWv6i04jQa/xJkyiCSK6Zh1bq2f/2XxyAr7ikjMD4A03UhhdVgsYRMRpXP
YM0+fnO1ml+icmzxKZKiwg1/fHJh7zy0aI5zO/pJ95soWA+FPY2MAnif2wne
F2P2MSlaWuK+6lQ3xGlOQPrrKgKU2YW+F0G1O8SxFW1HayASSJheebntjee/
cqoZ8G/pON1hqughmv88J27uAfxGzCIVAu/lPU60Jb2I2O/YS7qZ+6NAcMhe
XrOFa1zRM1+NG0ZVCCzWzECxJGkXdXoxCDKFsS9Y2oiamke1GbxnvhjXIxFy
anCuGeP2DIVxlUnWG4/yZECJqEMk0bmQ5A+dkgItpkCcIkdXRX7DiFFASLaq
BtAlV8ymaJQMajVQ/JkpAyqeb+Nz4qsQrFx2yKYnHuzQ+E24q2/zaaY9s1qR
rJfoW8EW2mpnRFQGM3OxQvSP/Iu0LkxKs/oZrR2QdVaEO2crK/73a7jxH/u3
98be0L9NP/o2vvHb6JpDUgzf0HizY8GwVF0xvC++8VdtbU/fH+5846/EbHkJ
wo2wwTN9Bz38D/7Js9nM/66D4EX7lYfwh/itbDNhxn/d91btzpwON57nX22e
j75inv/kyv7j1KMq9kNTsXcR0c8xEbGr4qJ3RRu4dr66ZTOUIUo6S0uM87Xg
E+A8zbabJu8ostGxT+Jsu7HwpGtBYlVTz7K2YIup60IMWQxcks7otbe15zge
lD2BwOmDU8wkbKAa0yV6UcwZmBqVlB7fRIUn5/Yqvotg4KRJSYoYMyJmB8iW
8UBb2SHQo6CDb7eAdeEFGbGei/JOzvzSW0I+Vu0DA5ouy71l5D2+x4cleAgY
h0e2kOYQ/nXadeArR3eCvDDJivHjtXsGmZhfM163Z7zZnvGeiN4DxPlKbH8r
3bF+IT0ArQ7UKNXr7WFj9BLMxCgOhEZaHuPb4JK+glN/++ULwkH/vLv3S/7e
7MtO1y95XbPPuXV1wJ+9QPjkixfP97/ohxfPv3jBf8Cy9nyzX/IEf5UrOPuM
N/gzN3zOIxy5hL8ztvtOXbw96s2WZQ7wAWa6A19jNjof+7aEbRQPFr2t5zPj
9hMz9y6udxPmmKfXsLc4as338eP5K26zZuHpNGDDoczWEvEs/PWiUtR77gn/
nHW6EdGA5Pc7S+4/lywVDYyF4nNsSutz5tJAeRajwezIzt0xvIlosehOHxIv
dc6iRTvDai4T7AUkCHWFpc9Jupo6jfHExP3uEienDOXadw9MCwW42EGu8wLJ
GuXRFW+DkYR9RsKij57mbVoGyBDnPk4taX7OM8ge5zbENy4QYEcaYtK2nqkS
LVqs2QB7Ua+FaCI7bVXXALLbbsx3KyqbY+XnGStS3EcFY3v7u57vOfZQL/vO
ZGui8ptWfNqz7I01SIjFfdQSUmMHfjmi7C0dvhvS/LxQGD1P+YiZIuX3VfAb
YJaSVBwy/+0tSW4xh/AtFhKpL+o/TNNDxRGuKdYM8Wme8NgNrolnSiwGTZiS
FScqK7qCRitldjHw37VhWbm9N4uRFZvhBnGS6m4eB7cMrbUYoV5qMib+vZNI
XzLOKNP2K8Ual2+ON0C2/zxIohVKcuxCTxCt1PflTVH5AyJ1MoJt0g0SK5Kq
IZJNk3Ro0kU4ZBCgfzxMU0OIlXPqYzx+ssKioBXeYUtpgjxRaK7pWiIt3vep
TXcm9k3VqB8qpt22KlykaE2iAm3ujMaxNw4HcaaBFoVwHzPeToa2RnX3VVlN
3JozUuZWj79AeYH01FMM1F5D3iVaWq8kxlhvu1ZdEY7b6vl8oMTvBMJ9cn6a
tUTLfD4F5ep/nL3+fsqVwIH+JuJU0KZ+pfaYKm9oVNqyi6cOUCn04L7kZMrg
GbHKZ8Obj/r/QrRWNfdGKmQ+7cR5zOxo3xAu3ORxEn/PajF/koevZLTQZlsJ
OEX2rGkYs7harlgjPZMSGbMmlr5e23oB9iMW8ahqaX0t/N8ZDKE1LQw+ZUXF
oXcWWcEDYHgnLe7ihbmTL5yH5JRkbM2CseCaFj3G/SGZ2zXFor6quAdFEDu+
FDrw8EvuuMeJW1YpcDxJAB9FaREuBXZHVOw8WLM9UpI5ckmjowv/JTuKkr0E
xVPmGTqteATep6/eHOI/Nw+TBA4ipKsrlLq7Ecy5KZeuFMv/bRzV8OxI+yjb
BafWTwKe+bAI4JIOxVaBwEJ3AV4N7cpjPRc1yr9ELaQ58w2VP/BhEUoB35/h
xaWYj1sLWx86hvrgAarv2MscWZfWOKd1J7cWZ1X27OlrOX5Ru9x6PfcN6xzX
ewSbPUod6OUzvw9qVCg9ZOw7S4d2+dy3YtCKCjalxUuLj2M8IBaodGZvfX2M
nwADskfpRjIbWeIePVhwmNb0lU+liEna9+L4+A0J/tCT1zOvFVcF4oFqxmpg
REMh/ZalcEM673+Mu8Ek1fEeSqiqwwNsLBNJuNuEfoL2jSLfCLc4zU7uT5Gy
xqJ0IrBWxxCGC8VQ0vT1NgGgCdFLFm4Cgu21RUHF1XaundSA6QGFNJHLeZGs
3KTRMFtEx+rX1SnutEqyXhNvZQieP6gjtwr9+hgewM6kVpvUCQmKYce0Walp
YQcY6WuKFAbuEEcRPCxSdD3aUfNyEpHLinI4EBmsKBP1aj/X2gTQW0ss3Tbc
hdpQIESmWHMr3ZIuqj+zsFoPFWKWPXyQre3l4ZUIYIe4HKwpxxgg80KR4PnF
lhuTZ8cPmUzS5W+jkdOWBZtnb9Jr6FnOPvxo21Qzl0CFlGHCz2NVBmKg8mv9
MzzOeprPx283gKcQSvUM6DS7xw42JXB5aMLfzd3uN6Pf3C8RRHfcvydFng3P
8H6tyEMUsgAEpo4Tm6PUgbQDk+/m1hQ1zgpYUhYNHdJXT9dtWivuABej4Ujf
oznTfhbaFDnXHCV2iSK4wnqcrlVZJEkLBX8XDn8YJw6aBHCbYjdlk4KlzN4b
VQIUGmLdu+xDr1o9it57fvH0Dds22qFe09HFUcpfPBqM8i7g2664YacSSGix
NCCQbKTTGiupsBmTtqrIV+wdiBP1d5CcJkE7Eb3od0SLUVoBfOsPftx5gZez
ZDw22sNCMa/crqcHH4todVxs2gbxUnaxSwG1PdWi1oyB/hY0nUvTly3JDGkA
pTbBDD3tG5/t7I3LJwlckOVRmBKskUoWVlESQ+gSDQQoxU5w0cURvhcntRjT
H+a8tNZ7Mkr1c5LThSXQMKe1ga0iNQss+3MymVQlPn47dOyLd9NXb15eQG27
eEf6onBnLbPV8fjRoJgsSkrx7QL16eJyM41bDksydu6JzZ1nefmduSt2PkgK
WxjanNssLKVXNctxaJWV9l3SIi8XH52LF+d0Ci6KKzYSXpxDAaCHNu04WItS
GvYo4+mvclI4W250N79zW2Z3epiUTMhcFJNjdPbu+3HotcurhvcZ5EVvUjHb
8E1y92RpRJ3hHTJXIkn3aIgPD/6lSEEClDSXBtBhGXQMUUO7tE4AxpXv+cpg
J559ZsdT/j+rtbik46DNWU0rmRjOAj/ieHpC15+Er/npJ1P+v37Y4ptsY4xr
p1RjpmjCweeXYTlZUsQnOYw4F1xfdF2V0g1vM5AqLc9l0YfJpvb+gJ0oKy8v
3edfxdwvht9Sl6OVn+xg0r0iCy2q4G95gknpj+8RFjL0Ey4WMbpQXxwyn5nI
tFU8yFzwwqLm5H02EIOtp55hcVyzQcqwUox2h7XuOYz7ipZK6ygUZpletjNM
wuwYcFHbznhREweMyb/Uy6CyAz2DnDsvT5n4iKzoD7IzrxpwHe7lY9baXKQY
fHs95SPrKx/LmsHM4MfH5rC6KfVeILXzdufLBNd4+DJagaMvvdGFNxqx6vtw
+zEzxp4dMkn95Gw9xxg856UNQlzhnUZye9bMDieHqWRa3j/v9yoAlilxyUHv
sLsEjgzS3fwILs3DF9439Q0M+16N0Q63xpgDsebOIOsnuADYOyTdZMVXAXqO
4eb4+akfwvmkwnncBq80GIzdK9kWXX+OWCE/z9+Zk0KuOjc6cEoHJg36S51x
g5fABAZLLkSya8Wh6/CJyyWzcFpcXvJha8SvKB4NCJRp9LVpmKDmkgnjvDXC
izQuTiu4reE3EckI5qearJw/aTEqTRpDf8+CuAa4m6pyc4EZ5f4c3KOo8x0f
A/YmvcP1zj3DmTM3i5ZqW6FJBcI6yG6Shva5It3LusLqctwEW5vFIWm/tegT
OMmZVYYLtOYvkYNHTXHhZmlSv8ordB3iY7Nea+l8asWbwd9vnUqrcHJfFYzG
cbFHo8UApln7p7BUl5o9Aerj2t+t1cgeZxXZybNea0yN/GuXLNFp87b27RDV
8tCBez/1dVQpr63VLKVEZ+RxAXbo2qHJlLO7fBgyytf1aOJRfGYSI0PlDH5V
sLRUjGDzKCDjLzREk++sNK5f49/L6+BOw0SSh73eswn+LEzJyAXvW+NyoYiE
lHJWLfLYkWKlrNhP6SgeYIfbRP7Rxn97OM2Oj46yzWZNplqOFHl2gJOEpRGM
LX38+MHR0RSxExd0Bdz2ar5p/bgmO+I53mkRwJM1Ts2MDv0qC0OSBUdoDb6b
hkpEKdT04tKHzdjJrqB5Ir05firqu7AUEdo+u5Lp1EPiebWxLYz7MpqewBSN
/o+xomLzIltsvE7bwZvZsSPF3K/0msaTuEfVfWUGWOiGIrawOcUS5C3phecx
m6LccN8h4b0vgRZlj1643nRRu8+6kQJeEqQzQO8pTp+uErt5ouJjfq60rkAQ
NYoS+l7wkt/uysZQ4iQW8Jez14pDLfGcna6r0mOtsRdGqouJ0rSb1sRJbfEi
n9F6sccNR/LkwVH2E6cpMfIaGjHuBBfDIn9PBOnigyLP2tqziJRPHjElRwgg
0V5Lc1x/SsMp7g07eCMjx6PXpbhN4JSUgo3wSuDbRa5fOjlHio0k3BYWf5RZ
0YpwU7wPEWco0249APe69iKg5wFyA1IMow2uOWlBDYxvJRPD+2XfGkfqbgon
B8RquGM+P+DBse9PKEz1TYzVBTNeW860eySHdMeNHtz2stBdbyyWlE4HQUWG
OXPVGx+hSKk/dLJToqZYgC6kFYJvxTpbuSNGxwl31gvIUP0McnwnQ7TV8U5p
eXsIm1qFuzJFPqiux/jga+mRs0gsz5rZiSxpnMkwPJWgexVOyBFTyCz7i0h1
dVUnW0wHg7corL6Qo5MAIcePovWiJ7P691AWQv2/tp2q0gHnGuZB7LNOtiUo
anCJk9bQma4iIaUXZONAk8I2P5Nf4wxE6FTaX5M2Tr7nZgbokLPgS6I+La1Y
P2aLqOljKV1mFge3TS67LxdEZbt6o3SRUjpBxwSLbeZdZGQL3EkUC3NrKfts
I9Avw9AMuGrmBPemod21M19l1I6zVz9evPeQA9ekK0ALUJaVjIjj/KT3B6Uk
sgQZ/qznJwj2mN0HMAMaj0G5MhMMQGkKMSTbzZAP7EPgafCK6hTiXeDRezVc
nVrs7eGtLBrHkhmmRedfJe17okSkACgMdZ9+lmyP8YtC3YEbvt+Az+VdaVoY
100sI8gGuS/JF+QmiIYpUbifkywzlqA+hpzbWyaqtEZky6uj7CtZnbP/wU6z
PKrGuM45dNfsruGQMrkeimm0SorOPgjbMFQ4nVruNi+52LhP3xYqodfeqoWz
goVMG4fH416FnF2GZ0s3zU5Tj3/Txh1OTQAg306Ca2d+O4QDlWuovlLNpW9i
UFuP9qgmGKMHI7eHi9ZqVpT1fdYIUc0xqfXh1jBwZRFl4ONvsguRzNHXLVLz
rYdMU2RmCkrGtaVn9XrV9vEBDa7I+SbIcEdZXxW2DiwXu9/cFUqRvF0a0BTc
OG1158yvGriWqhXWhAhcKrSHYtda8NpF4CRLyN4yuJb1dfATL2vRS0b82oiV
RSNvBCCXJza2vnF2lcbwOJYRZwWoB8+ShHp9pPRkWN8LORyCPxon9ulBlHzg
WtuRJS4q9iALjQpbvQuNMvppwZH4Z70tTYPpIgUk5gKqBe4wkCI8aDG92y7r
5fpIG68ASiuvJgViy+K0iEck4sQvbK8/YdTa0ggpggiV4Qd+bIW9vK6heJTd
AH6DVUKkzXGGU5zpyXkNJ+4qOTlDggItXG65y1TUs9Qkqe+J1YM7KBs3aGg6
keCyBcmC/PCu8cjzlTBut9+30Itc9HdAJ0DHa2sIQmw6DLA4GIYcDXqtEzMr
5X6eRhlJ7hfM0ziJSduszwv2oFtpx1LOcZT4rBxFCS24ZqJHk45APFWfbg2Q
NOtUOKDVBClPc4mY9Sb2peYR5V1QDDiaJW1JSAuSZrydBk+JFfM+CvRy3l4T
zfxOzSCvMwj5Gnxt4R1BMrTftDugTiaJUcOSiRMsBgRokashleANP0fNNFXH
kiTq1mnmeNq3KLjJ+Ko4jJGbR3QjbJ1bCGmvsUPv+W7DWammnz8oHq6Ou/l5
1p5MDnh16YxYm9s/rQEb2KNzGEdwXVMIBa/VHUViXPXASGnGGmmFGmsquxUU
5xUUhOjyVnFDvTwXQRn65WKd3tka+mLdHczGL3RKAv5j75NNstJMp1ZNW41Y
JRQ3XNb+7ttW4rtpWS3yTS5ZKH4wvKVhFHpivvxk2SXiz7RLkD1SvhWiitof
QlmLTwLU48vZAltuhIQtW8Iz6bsiujQDw0prVQU2aWtszmALRb/QIjLfOTpO
ptZTrhUa7kqyzqIueBrfRbpQ3I9P9rzqmXHcYFEbZWi4QzhlCN+UbbuVWgo7
4nnUJ8k3hhz0AvZtuywP/7JQD61m0YuHkJvec3sj7q1WVg6ag6RZxVXp8pSA
4wpNUhqV8ltOnXuqvpyQ4f/ar4D27q7aDTDuaO+MewKCT6CsZY+RKuX5CXuo
7zjNPmgOQ6wR3wMyhKRCAcDaqEXb68qTQwvR7nrbBpQ2HZYurFdA4Af1gYhV
rjxFoyJpajFrj9j816FPM6uvGD9n/8uajM05EgE+JG1QIp9RPb8ppTVK7MU1
vHcml8GhVC+bd/nKKpetAe4bhABrPm6YPGMgBsm6pv3S1SYNx1frV6232MCz
LKs+v0vyNevkbE9is9mlFUISkei2iske6zRJfrWW5EXdokL6sKUM+uaWmIPn
SgneKPMgqzORLXdmyvE5BG6/Ynz5ZRb+ozz9uRqP/UDXGTtSzH2URwkmdqoS
mw1qb8LnYTUKQo6zbITFqt4u075/pWKrdgCbYRH151eSuMXO2IW6iaRnB7v4
8LrD8JILayQQZVJb+Dzq8rbXy4JOg6gbKRB3bW2njQVKXjMEJzfyDGFpyyXL
nXr5VwC98Oys1/DWHjMOCkxpKXU0SRpbvSZFOJqD5RSbwhBVOwC/Tl0gWDhp
nOhrEhNNkY54/NDW+tEJNwjGpz60rKywxQAlIAMZ814Cjf1PmbfKAfPEgsmN
7opu3LMB7N16jQMWUBTq8b6qwHX7Djet5FGjLDZQXX/3k2fsqOrz6gYDDVoG
GstKr2biOcYwWWWKbVwbEolZDSjNWLiAqzHSR1AiGFNKTcvEYmcHsj/14PO2
uWLHxJNi8tJE3uHuBJbhIcqVdZTdzF0k7MMbx5wzvK0Wip7SaUiGJTzUttB6
+EA7Dzvvcz7gM5pQVq86U6UzPO8c6RLzOPTtSpsZJyQOWAXRuRSQFUhl8jRu
wSyyQSFWiSf0lLZFfSMN6TUXymvGyvAutmvUBSmcohzBCmXMUnFleoFqP4dF
39ftyzBVX0Bh7XWx4sRCTWvSrIJisdVGZj5jKWlSy44ubaRuOliwU1CSyRiz
2hW69fkpHJUCeUps2pduYJCX5UrzV+HF9GkYpEOzPmZyTBIAkPOss03r3eJK
Ux3cYVClAyad77/N4Et9nME+nGPSTTT7+E1foH8K4AZ4z1YwbA4Ng8e5J3fc
LkcKHrKPH+nrT58CyhCb3wkEhm9k1MsJMGiaFGQImS95exeAfQxXKJNkIktU
2aGJpFkrPCQd9SkmcWgASH7pNLTt/FHsw1FomWc4q77OdZ1XqGsMwEwAL4+K
XOAVmGQV3SNH2AMji67G/t+rulCtQOHANFFRyz6R+sefy7GRaB8kOGekccw7
mdZgQdhVsw0uf7pgUZAm4m7FtSEgrHyVervLPv5FJEAnlnk4kT67rNQuGc9E
KsNFlVZXRoSCmjQwHwySDywyzliGJKB9aQkqP5+t87TyJy3xC9ltLmT2Ahp1
vipboc49+dqhiTiH6M4LQ4Lx5UBqCcZlsgZrjzyNUt3XdoHpxL6OyNxRDEiI
NZScdWkSKFsU5Zj2keWkU0ZSj6TcwM8KywH8r2EGdEgn9daC9kQt1xKhlkzc
SEy71Cut2pRGDmKXhOARygt9nPFFpQrHzk1XSytA6bG54WEQ426DLraAdzhm
ZgbIFpOLaYhiOMKUCHg5XD5slVqFOjqYwDyVRDGphLa04xc0J2Lo7HJHNGUQ
pggj8WU3/RUSA6tjk9rlXgeAwcOEp617ZQ0ZRayJWhbSw69rrUAf1MHRjgh+
qapUqsUqTFobv2IVJUVHd8Rof3MpnhyyW/a5cna4JpN4TLfgCpaNGlmfefYO
r7kJ4oRnI9UaY79wXoVKsguvODAg/EaMwqk56/UIJZCpofgxKFHSbwze2Npc
1hOD73Sh5IRFLWjHv+5SwfyIbOYlDRONCKTglpfM+36SDuKRH0jTQDUyfIsE
sD7AKUpFCxhZjXqzB0v98ZtlfMEndNqT5uqjTVNMbRUH90UZSmoGrqTaAKia
8RsPLs5fH0T3D/3CRqC+KoMxcknbXm+2qq88k8sPstGbp888nqK07xPPf5CW
SWWBdtcwBtvVdEjqqzvveenjV3jByERbVJwuFuGvNmSLWPq+pkFBBhVsfQIa
Vji8Zu33gsKsv4hR5sL6iT/r3cWf30zfP+OBWYnLO8/EfZM7sSnNXxYbWFLS
y4jrUuEbbcLghJFIZaVSQB5ojFrblCIpmrknLfQEysopEqtwG18FIISgd3Eb
9JgGaNMkxzOgnXt3Y3AOFdrt0GdD7+HwfWNI+vLCcc93Qtc3xq4g8qKIxLVG
oQYp2l16VB/dtzXtyNda71zgHVU/fWANhgnu/KMCiCZ2XKhB3WFGCt7121/L
iQstlPszHb28eNeOvfjrg+q2HijHvfj+DVQUTQQPNSGhqD1QelQ5F52u0HxR
tRjrp0KCvqsX9SpW1YyYVhrDX5MdDcQnTi3mHmeqfNO4tM5TwJa/sNB4LqfB
h/o95xdX64BBSDjJ6lGr4Av16uRIKXoHk+v5zHwDDqvVjplg2JJ+x1AWVEZU
pczY+bRjKaES8BDOnNeU4nQD4FpdeBu+qiOg5+LDNZ0bKedhouPWAIo5spVQ
tk/wNQEToAfgackYYZv9eGYyIR+TA6JhV7u4BWvskVW2rVMUyKVg3++qiaQ5
sgOXDY0QB9E54rLKHDZK4FN1dKdIMl3e/qTc9qD/ninkwgEfN4YzMVKUqSlY
yQZ8o5RYOxfnceaA9/OpFRdBzMIWs71Ub76aIFHpRhBGUHGgkcIMUNaDSELl
RorTMQ7TjllpSDJ58eb9n9n6fnH2+mzgxX0NUr6TngHZ2QLPXsFq54eAdeXV
T6wPP1+Ruk4C77/l24Kr2zKpBSMRK7Y9W34kG53767+9e/50WhB91M0pbUYB
964YaP8O7ds3f/WALSNGrZkWpLg33XRZdLRcUyAxj507OiICK5Gva44Oet/R
MdCBCrGAmezEoXnRFZd5Rd+foGEIreq1Ypdbl3cMnDZFeB7t2V++54DmVnBL
3NE9u2+Cov5yJbnWZtciR7Oe5lsi94Yuvh8uFlqP38LZ5OHZeJlMjG588M/e
+FAjhBeWdXux4NyK9/mHuqrXopdccJVZLJbzpcKk9Lf/6DuykD4IbNM1hNNy
ySszuoYDqKXlxwL1tqksussvbhLv0Z9Qs6RT5UL/d6i+3EqVNUc/UPC0qBvi
Lqw9bTs+WbwUdBBQEiQFRc/ePz8+eTijiTfNHTeQ+AvW7UqLpjqrOkNFe8Wm
BpHAj5slpzLsmdxMiZYJgb7ZoIWbsU6at60a3tYUNyXJEtLwk4Nw6txvzWF4
qnsjINKmg+xWQVI4DtM/6EV834iBElIPgFVNqmVYV+O+6FbFh/PT4YXLoqYp
nxNLM5rCa5pbqx0lDvYJTKnkOjhN1AnSzg9JpaC3DYHIMDmxBSJtVRGtlCAV
7ClRNoePEnG+j0NHUhRzEYI+ENcTmQ7TP9gfFwfyHI6ddQAngKca31eyzvIJ
HvLOGim+f4Jazt0NehZQSSXJ3NDRFItMtO4fJHAmRJaSirlBpOPZLsDtXTUt
raLE0hKljQdQxU2Pf7p7mNbBlCbCxLSMDGCRpFaflA1ujoUKXiHMJdA6FNQF
CT0FjfDJkFe0EmKw91zHo48fl3jzp09jPE/YeF/yGDHOmCU/Y1EC5vKsumIv
CJYN5gKX48DEpSM6AkjoGi2dbiUbbQJjqUYBDAzErbqYfryAP3y1kkjp3YY0
e/5mjMRNEuHAQuPH84adGyIusSnkVJ2GuMXo1fTlWBpRjJ7Qr7NwubULOE18
uQEqfSQ4KdJRug+cjue83NtnkSMmXFdmGDFRV8VeR0V+DVe38OD+iERhuYT9
q8vyw2n25sXzH+TC5/TbmJSNZnkLP1TfZY3PRFjBN5E3i2s8E5YZlCdtEjS0
uHHRe0aBZMP5VFDqknp2iyKxcROwKDwynOG7Iawhz1Nppw9TvHyfFgKNfHM3
3bBDgytnxoEvMNas9xR8Dumb1cQAbAdJ9zfEOkZj/Yrn33dnqrF+ugsqgWve
shGQ4S4R4sADXnz/6g1YEEqYJ9mbN+/xB9fQeGpScE6tIjrt5XSOtIzVSGXc
r4/R4j2eiFaX2ChhnU6nUy69hRIXUUjv1PYVh2+Siy1HcdMWW9IWpHDAp9GH
1ofh+7hQ1tvjVs7nG3JEty7Euy6oY5bL7MKVIVKp6cQb9VlmHz+Gnh6fUug/
KX4V/G6uNqtyPOv49HgQ8LpMXE29t4jdtMJ82Z2AiKX4utksrtDt7TUMXXoG
sFfUaw4AlHm5UvyHgHPQL3JW2IphgWulDBjyLw9PivrHM5QdlzXHCFjWG5Z5
QISn14vHmcsxhmDYUX9tSTbR7jPCXxVF8EXcc8skYf7RW1Fhl1y4Zs1iDyfy
PW2L1gOSC9iChJMO3mxJQJBNKq2Iftiy1495m4GocoicZbPcAha5dOB/eolQ
ScjNjREHl2n9tBRMhka7LnLxAvmC1HPx9wioPm+5uv6Q7YbCe5R32mSH9e1X
AbO1JU7J1ny0H8y/990dMW3gzWpWYcTAg2NQU5PpibwOvsmLQTphQ+Cg4IzG
FTcNWxThxTI0ocCgbyQOb2/o/gAM7Oy3EXTK/3ky5tc6RdHlbNQdacTiI8Hd
mqTg0UYROxaw7bHzN/gaVwnNVcsYrWXwBK0DD6FOzqlouYmOYTIqPNAYldC9
vs4xlIt45kcaiWJcCuZv1nJqG/IEU3fzyEJl46jkTIdIA0aDQTdYvbE46iHL
rvcx8Far+P22WkQxOrRoFVlp31qTuZ5JlJHnj11LxAPv2rL1DiqfShCq+IX5
8nHHiQKHtbuI80rqdQhwW9qYv0awMG3AJDQ1oG/ue21Zx5GmJAfYos70/uik
SCNQrgBUqt3PEx0bA1xToafdIqZY5cBfaeXxwagtijC656I43B9HlWnMWbWp
A1cUFwjEdYoCrugYEkYVXPCy1co6oyuJCRuVT0PGJSPK787cRhXB7qIzeT4f
dTlUoamnijo+ipy8aElRo5/x1zgmBR/ejSxVup8vRMcPq6RYYrodh97KdQhn
83XaV85grX2ObPRIX7qhTjwEVztmwapd+ZrWnKuttNlg/7WM3QnJsexDtDBI
CLsTg2s308yeXfohNKcXXdQRL9+3zvMIP46X+7peRdV87NXvFWyM4MoNRUY4
G7btUaItZpqAM4bCCxsqMRGJT/0mGttvZJF+44f4m5hJS9lg1EQ6qgTcuZca
3yirqr7xqtLuXlWTgX+apBDxgMZTkJNKBO4IZfXkHz++e/705OT4CEer9Ei6
QCTyLQZItF0XijoOLZKzpjUybpW6rMfvmoFvtGJ7Mij0kv7sYLsjXlpfjDHu
wWP6XDAlFdZeqmiHBJUpCtz3KmsYW0cxoyWZLYOGslLaKTW6GGpL47SzxKek
qYLJSZtYgCtAyLmqIIv6inUSMelDB7ewV71S1taytplncojA3HZWD7jrKJgl
FfQqOVqhUYOwPk6L8diAHn05XQ/jVnILIzPHeZyhGZPGJ2CkXq6gAtGzDoK+
Jrk7yqh1A93OI5/ycOV7rIvs7sw2ijSacegyEuFcapl81DiqUhzJXgrKgMdG
225dFYSXGjAlv9YjeFchZ3I3Q7baXy1VT/MotdmsCsDde3vLLVZlDNeC0m79
raLjAOWZjzzqY/ZwE8vwi+mPBKuwGQGhLY1Hw/vTCQI+C2Y9QqJa8J2hulD7
WBJdBRiiSLuAchhUoVCRCuE46+UMeeyRqPTyi2zGkCWcSs0Br9DT8eLFcyvR
YmjEVLmMGPN1vnTx16pA4neUD0YMLWVS0BcmuGoi12qBkosYlc7Q2A0+D0V5
Mi1L144j8JxgI3oD+LGdWDEotAw6UDUbG0O1Q1WHJ0jYxPhka/g3tWBCoB+U
zTvMnTUZfWWRb1prAMtqg2ruO/LOliE52RC5fxNtCNdTS0OfqLcpsxNOKuwr
/R7Vm/mXZljoA1RNEcwjC28GWRLDgVpiglWsq56YdGPfqexF1hbOghChb+oo
kn2SxZH/XbV+qRSJmhBxFq1UOS0W27WuMS+HnIxScf9z62EctzSIim5SfJcE
2UQ1e9e7ZLhQRN/9ZnI9kuUSDl/7JPm7QrmkX80ZSg3h2uGMxnLweig0O4YQ
sIE15U+9WAGkv68Ye0girlmR7OWlJNpym9V9apPpjm2og4dmoapnsNq1E4gH
oMvZx8GlN7sfLez2KXPaspUeA8GlZhYdl0Zyy1Cxpe372ANmXQfPJ9lbPrGv
pFNiG1PcuZMWnMoCop5zFq3nT95mOy7ru2clZSQy77y7KGlW63upnvPj3xpY
nmoR529lSEzGJVGSL4Bs9mliU9E4sLfCSYWVgpOKC2nU0uuBeS2CK+qjEaY6
j7sTi3iwnGeyrwNTVA00N6twJK2o+y+45Ubv0did6hTF8tD8BL8Uy8RsKzmq
Uf9n7uUXXr+nl1/vgmEvP9rg7A4NT/f18ttxwa5efr0XDXv5DS/4z9vLb38z
v8/c8JXN/KbX7VT79VlbP44TXIgLRk6d0DL4GPf0e1ENGAsxk9Jy2Hv4Ztom
nqHTk3YXfanBI71DTa5XYkxCMyNMWl7KkJhJxH0GehaAXPV2JrAzHJ3aMUKO
DSIaPHWjX7Jpdjcez/ws97rSU97D7kJxSijqVTxQrcJgrpQOMYWXZYvqLjZB
rbfWD4qiV5GaznDp1tgv8n8sYCRKiATpaXfeRcaWU4xLzrNyPKtT9iKYLFSf
L1xeyjeFqRIdHHouF0bD8orH40pVgH1Vu4J5qo/ZysByMeE7WhyuvuY9h0+i
ZtYfAEUCdaXeylQeRAX9WsHnZNivslGQY5xV2Nvx4MHiBrURPgErUlz+fefm
IUs+Z1TR57R624qRkiYZ63/Fh5zLHL9grHla9o6ic6ejTyESxFnvL3prcxT1
PV+haUbS6sVFzjgovqS58Xqfvz2lEf4+G33IvrXpT7O//ov2PvvrH8YM5qP+
0gL9LQVv+n3qZo7NaA6qqpwdjc3sMlPT00rohBXGz5VSuF3oaMftnsDcYPqz
/q2jCHQAPYahW7WZi4O+wkU8Em8bU4lyhlda4hCFORlzIpmlCFzGeky+2OQ/
Terycpx9VCbcYZFpwemLmeLdyEeHhyn58fSUCcqtbC6lt8pHdKsgsiMSHbVs
tPv4qvQ+/ojuA6QbKvgH9zZ6c1leZvZSrjz+0M34M7p5hwPT2898u805pwfk
y7//rVnc/A3UPqKDMyLKGvz7678d//tuaYV5pEOYSQPUr7pcsirGyaCWNCge
B1E+jZDmM7ICfe/QGPeOqRs+ep1/OKYn4cdf/422mrVGm0RMBvTGSfbzCJeU
epka6zKuT17ccmhbb4366A7i7WI5JHTIsjdstFXZq+DLG5Y9SD3wDq9dZcq/
UzLVHtgxXc7iyVsd7bKYMvRXr3bLIGBBL/qoiFKqoQhHEoWNh05dz1OQK6fW
BlUh9tfv2eA5Q9pUlMN7Se3Fxbs/InXp3fOnj757cP/TJw6DsI86Kjfg7Et0
GdEeSuyw6HVwlWc8fvQQ/mwf44v7yYkHj+EctQjAEVOFt0hBYjLpckZvys7e
fa/5IRqDih5+oQl992bHYxKoAa7i+GHcDiQshjYIouV8Q9tvbHS/myJPMjV8
nlgoDmM3lvPlx71reurQvpCzOQWitngKxp8YZKkZ7JNPEB+3UjeNMLqNzq5M
lBTOH6Jt1uZASrHSEKQL3MqDtXPLQUmw4LsayMGeP679TVrfSLtXb1DU6EMg
2mPDBYe06BkbA2gBPR1KJxpp0GudBGibhCdBEWoTTUhVRjloo20Vkvo4YZyt
69zDkfGaFB+KxVZzNMBaE8ZFPG/kQdDE0Tk2j2qkLfAlsb6tEc152fWUFlax
NX9wt2joNGw/c4k0GMeQ67raXMTabueWMwh+rYPrK1DAcywmO8ONxipkErHF
nojZiFkhAqgoKgtGdugsOrVSOybFxoe6jvIYBu0twnbRivdEgg2fnXE9JCVb
JEMUYdeSBUS5iyfR5xR3jnvRUQPYFr1FQGF4tmlT4WEbT13nQYKv51W9zmB0
5ab0fhNnEiDpAiMne9jX1uoAl5qIsORi5eASmZh5R8bRdh2af4LJakREE6aj
kiSNUln7rDIYiNMFeN+C87nMMOn1QRZ1U8EkFJcdb3Dofr3dyKnkDA6pY5Qk
fjgXo3Y1umBF3nE/VAWg9QouLAGychgQM41M951Q7HfaoRhE/E+sQ0WzSE+P
c2dGo6YjCL1fQfLHlvJn+jqQfNYIi5qNSV9j2Rg116Q/hQm5PjdwYZptIT2d
mDYlvZXIpvLIrbsZhTqv8Ja/dQO1cWJ971WlC4q1XE+XmOZK5z65NtIU9Vfi
7tum4gDd1DJvf5s9yg413WaaPf/x/PtnPfWMhjSlIYnXRNWzZ8NkSc6CTzbq
4BN7DLjoUbEEOYkJomoDAerjD5zIyF0BEIIxz4zB/XAIZCQ13rTwYxieKIFm
GcylAp7XDbg3T9bXi0NI9FixhtsgfypjLMtiL6pqhPPvejHeHfzYu2qw1BOl
KmuWwTVQkjwx1N2DwxWk1mhOym4Kmux7VLAaBFM+l1T9iS3gUqq1/bht4YUK
Qodj3+kkhGw1Il3sSJu1hhhgKTpjg5rnAjDB/O492WDu0U+GFY+I72hZjEnT
DL3QiXXFFeG+o4S6jLjQMu5laCEgrKn2SfZF5C7KhfKBdkHgjcMPeavZZeiF
llghgs/UY0cBb0VoyxomZ9tNrRiNm55KMVGeCsdR5MCLu5qxmvg8Copb8piP
bHyW3EMvNTTInTNigaLZ+bmJmOR9FGBuScTHFOUUt91uKB3LaQsz77XRZU6A
LXSMCjSLPAvei9H3LNgXiVcB2tLfZM1OJXAwOg7fEnPEMqi56z+8ZBOYv/o2
OxY3gh5sYeqG7K14tP6+n+m21z++fCl/0m2KH/Ol++rGKxZSWvnB6xizGR1h
b4p8jFi13cVGZIUfbfJ99Fx7cLB+PvW8AzRW0jKXmtMgjagsd2GnpW//6OUj
THun/T7THLqPA18Er/DP8v2M/pBFFv115F843vVGfifd8i/Ypx1ODt29nV/x
SAdf9Bcj/Tv+K/6dRkHP+8hLB7Si1Ccl/4jH0huNMn9mj1dyQXC5YflAchO6
J71mTrv4U0zJOwdkv33a5TPREUxNKr/Z4SrxBwvSuOcwlKSY1nhHjFUbAc0H
9c3cFkhUMsN3kBzT+Zy4AZFhf0d5kilZVi7lpWMfbF1Kuzj2/WpDCOVOl1s8
MqQKsCy5Ldsizvmzyu0deJTizpUQNinAG7MxzKuoGRR8dtpYkGsrN+/cBsZb
g6Jq6cusKyud2BgcDfeXpC1c9JKx2Edu7hCVSDx4TqTfyyk8h+XUd3P9eDuo
luZM27XPRtOpIlu3rCqdroeohvIfkqijKcZ76HY78CN0XVwdwsixFq95pj5X
iaM33s31w4vnElM6u3jx9PD5m+/PhpUZ2AJx4viehcFz02K9uQ1SVNkei+nu
OlVM4BSx/CrzvLAnYbq4W6ygyzfIR/AgBFn0WCMRpkzpJmRJlyIPmOshD0dk
JQB2KvHxLK7LDdShfBKHvWmQ2funZ69a1Pr9FAtDcdb3JeGQn3gO/DNviQq3
aer2WAa2Qjwt8jgzQx24dqf6MLUFTuSmE7tp4MePeLIHjOdReoa3m2l9naNX
VoK9vHEYY08AQ1IuXplSlZh0bNZ7kPG0p8MgFtYJJsWWa6/ZqN8B3G/KmkfY
j7wqrhs2sE/cFbzW/faYiwBgjJinsMdB0ggO+TYyTX9WDN6cHX4GehWewFdK
LqWTW2HXRxhKfL/udn9IQy6qNgBiYxLg01wgdQdw+xNvIyMfJG98ONuWKhi/
po/GAbv4BLMbD3sBGsTGfvzYp6RPnyw+p4akVZZxvwK8TudWMkCJKvRRuNMy
sHFqdcsNzWMZ2lwO9185CTdl9dq9J4qe/6XppAl3GMHQTOEnSR6M9mWIvQu7
WzP0watpRfOfjByTbGiX5PeJp5AH3HtinDiLOfaCCPOoQkucbbDEUd1jb40d
Jj4fV9bAo9NE7xP88zbrGb4GrSjGJPL4/JmV/dQ4ZahPHBR4vnn/Zk/Ve0gO
zDedAZj6tolRYywmBXqOi/2PrJKoDW2uKLzY235yT0it1R6VEuuxNLGIb6w1
qZ1LXLVGVuF/lqxBSJpEeGYCyI1aYQYWppk9xwdk5n0fKu6Y1uPYuGWZTSNI
nBgj1xC26LMVnd6YZA1L1ro1umEnTsun4HPeGVwUcViMPjQ/9oki0jI5yx1j
6Gq/2FDRpsC3nVFueooswnFV1775Cry+VuqaVqdGRzhKPm+7YqOwXYomIDV+
M6kmbomXKFZayDHk7RIXRh/TVLADW2RWaoOuUiS8eLvQnTizlnet174SCDFi
qKsQHCDm6NFLbrEDHz+iZPzTJx7Ux48X/IephqGROSqRUT0RlWvu6UMu3Y29
Z4TuWmprzz3XDmo0tRF1fTtlPAnocjI36FXlwmTX7iyZXmmslc4BTnW19Wgk
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
AQA=

-->

</rfc>

