<?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.8 (Ruby 3.0.2) -->


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

]>

<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-aft-detnet-bound-delay-queue-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Bound delay queue">Enforcing end-to-end delay bounds via queue resizing</title>

    <author initials="A." surname="Fressancourt" fullname="Antoine Fressancourt" role="editor">
      <organization abbrev="Huawei">Huawei Technologies France S.A.S.U.</organization>
      <address>
        <postal>
          <street>18, Quai du Point du Jour</street>
          <city>Boulogne-Billancourt</city>
          <code>92100</code>
          <country>France</country>
        </postal>
        <email>antoine.fressancourt@huawei.com</email>
      </address>
    </author>

    <date />

    
    <workgroup>Deterministic Networking (detnet) Working Group</workgroup>
    <keyword>bounded delay</keyword> <keyword>reservation</keyword> <keyword>queue management</keyword>

    <abstract>


<?line 93?>

<t>This document presents a distributed mechanism to enforce strict delay bounds for some network flows in large scale networks.
It leverages on the capacity of modern network devices to adapt their queue's capacities to bound the maximum time spent by packets in those devices.
It is using a reservation protocol to guarantee the availability of the resources in the devices' queues to serve packets belonging to specific flows while enforcing an end-to-end delay constraint.</t>



    </abstract>



  </front>

  <middle>


<?line 99?>

<section anchor="intro"><name>Introduction</name>

<t>While constraining both the latency and the jitter makes sense for mission-critical real-time applications, some applications can accommodate a relaxation of the jitter constraint provided a bound on the end-to-end latency is respected in order to operate over longer distances.
Such use cases comprise online multiplayer gaming, augmented reality (AR) or virtual reality (VR), presented in <xref target="TS23501"/>, as well as synchronized stream playback or wide-area monitoring and control systems, presented in <xref target="RFC8578"/>.
In those use cases, packets may be buffered and reordered at the receiving end provided the data they carry can be delivered on time to the application.</t>

<t>This document presents a networked system designed to enforce strict delay bounds for some network flows in large scale networks.
It is using both a dynamic mechanism to adapt queue capacity in network devices and a distributed signaling mechanism.</t>

<t>In this system, the network devices have a set of queues which are served for a amount of time on a regular period, using a round robin strategy or one of its variants.
By controlling the amount of data packets that can be stored in each queue, the devices can control the maximum amount of time spent by packets in each queue, and commit on a maximum time spent to route packets belonging to a given flow.
As each device can adjust the size of its various queues, the network can adapt to the demand for latency-bound traffic.</t>

<t>Then, in a network connecting such devices, it becomes possible to build end-to-end paths on which the maximum delay is bounded.
A distributed signaling protocol is used to allow end devices to reserve capacity slots in the network devices queues in order to send traffic respecting end-to-end delay bounds to other end devices.</t>

</section>
<section anchor="switches"><name>Bounding delay at the switches</name>

<t><xref target="RFC9320"/> gives a detailed description of the timing model for relay nodes involved in a deterministic network. 
In this document, using the same notations and numbering, the transit time from a given node to its successor on the path is the sum of:</t>

<t><list style="numbers">
  <t>An output delay.</t>
  <t>A link delay;</t>
  <t>A frame preemption delay (according to <xref target="IEEE8023"/>);</t>
  <t>A processing delay;</t>
  <t>A regulator queueing delay;</t>
  <t>A queueing subsystem delay;</t>
</list></t>

<t>Components 1 to 4 in this per hop delay computation can be bounded by a non-queuing delay upper bound, while components 5 and 6 constitute a queuing delay depending on the queuing strategy.</t>

<t>In modern network equipment, several queues are used to park packets depending on a set of criteria.
In some architecture, such as the Protocol Independent Switch Architecture (see <xref target="figure1"/>), the queues are located before the egress processing pipeline.
The time spent by a packet in an equipment depends on the time spent in the processing pipelines, on the time it stays in a queue and on potential packet reordering in the queue.
Considering a round robin service of those queues, if no packet reordering operation is done in the queues, the time spent by packets in a queue depends on the queue's capacity.</t>

<figure title="A schematic view of the PISA architecture" anchor="figure1"><artset><artwork  type="svg" align="center" name="syntax"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="472" viewBox="0 0 472 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,48 L 8,208" fill="none" stroke="black"/>
<path d="M 112,48 L 112,208" fill="none" stroke="black"/>
<path d="M 128,48 L 128,80" fill="none" stroke="black"/>
<path d="M 128,112 L 128,144" fill="none" stroke="black"/>
<path d="M 128,176 L 128,208" fill="none" stroke="black"/>
<path d="M 144,48 L 144,80" fill="none" stroke="black"/>
<path d="M 144,112 L 144,144" fill="none" stroke="black"/>
<path d="M 144,176 L 144,208" fill="none" stroke="black"/>
<path d="M 160,48 L 160,80" fill="none" stroke="black"/>
<path d="M 160,112 L 160,144" fill="none" stroke="black"/>
<path d="M 160,176 L 160,208" fill="none" stroke="black"/>
<path d="M 176,48 L 176,80" fill="none" stroke="black"/>
<path d="M 176,112 L 176,144" fill="none" stroke="black"/>
<path d="M 176,176 L 176,208" fill="none" stroke="black"/>
<path d="M 192,48 L 192,80" fill="none" stroke="black"/>
<path d="M 192,112 L 192,144" fill="none" stroke="black"/>
<path d="M 192,176 L 192,208" fill="none" stroke="black"/>
<path d="M 208,48 L 208,80" fill="none" stroke="black"/>
<path d="M 208,112 L 208,144" fill="none" stroke="black"/>
<path d="M 208,176 L 208,208" fill="none" stroke="black"/>
<path d="M 224,48 L 224,80" fill="none" stroke="black"/>
<path d="M 224,112 L 224,144" fill="none" stroke="black"/>
<path d="M 224,176 L 224,208" fill="none" stroke="black"/>
<path d="M 240,48 L 240,80" fill="none" stroke="black"/>
<path d="M 240,112 L 240,144" fill="none" stroke="black"/>
<path d="M 240,176 L 240,208" fill="none" stroke="black"/>
<path d="M 256,48 L 256,80" fill="none" stroke="black"/>
<path d="M 256,112 L 256,144" fill="none" stroke="black"/>
<path d="M 256,176 L 256,208" fill="none" stroke="black"/>
<path d="M 272,48 L 272,80" fill="none" stroke="black"/>
<path d="M 272,112 L 272,144" fill="none" stroke="black"/>
<path d="M 272,176 L 272,208" fill="none" stroke="black"/>
<path d="M 288,48 L 288,80" fill="none" stroke="black"/>
<path d="M 288,112 L 288,144" fill="none" stroke="black"/>
<path d="M 288,176 L 288,208" fill="none" stroke="black"/>
<path d="M 304,48 L 304,80" fill="none" stroke="black"/>
<path d="M 304,112 L 304,144" fill="none" stroke="black"/>
<path d="M 304,176 L 304,208" fill="none" stroke="black"/>
<path d="M 320,48 L 320,80" fill="none" stroke="black"/>
<path d="M 320,112 L 320,144" fill="none" stroke="black"/>
<path d="M 320,176 L 320,208" fill="none" stroke="black"/>
<path d="M 336,48 L 336,80" fill="none" stroke="black"/>
<path d="M 336,112 L 336,144" fill="none" stroke="black"/>
<path d="M 336,176 L 336,208" fill="none" stroke="black"/>
<path d="M 352,48 L 352,80" fill="none" stroke="black"/>
<path d="M 352,112 L 352,144" fill="none" stroke="black"/>
<path d="M 352,176 L 352,208" fill="none" stroke="black"/>
<path d="M 368,48 L 368,80" fill="none" stroke="black"/>
<path d="M 368,112 L 368,144" fill="none" stroke="black"/>
<path d="M 368,176 L 368,208" fill="none" stroke="black"/>
<path d="M 384,32 L 384,224" fill="none" stroke="black"/>
<path d="M 464,80 L 464,176" fill="none" stroke="black"/>
<path d="M 384,32 L 440,32" fill="none" stroke="black"/>
<path d="M 8,48 L 112,48" fill="none" stroke="black"/>
<path d="M 128,48 L 368,48" fill="none" stroke="black"/>
<path d="M 128,80 L 368,80" fill="none" stroke="black"/>
<path d="M 128,112 L 368,112" fill="none" stroke="black"/>
<path d="M 128,144 L 368,144" fill="none" stroke="black"/>
<path d="M 128,176 L 368,176" fill="none" stroke="black"/>
<path d="M 8,208 L 112,208" fill="none" stroke="black"/>
<path d="M 128,208 L 368,208" fill="none" stroke="black"/>
<path d="M 384,224 L 440,224" fill="none" stroke="black"/>
<path d="M 440,32 L 464,80" fill="none" stroke="black"/>
<path d="M 440,224 L 464,176" fill="none" stroke="black"/>
<g class="text">
<text x="64" y="84">Match</text>
<text x="420" y="84">Action</text>
<text x="64" y="132">Logic</text>
<text x="416" y="132">Logic</text>
<text x="64" y="180">(Ingress)</text>
<text x="420" y="180">(Egress)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center" name="syntax"><![CDATA[
                                               +------+
+------------+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |       \
|            | | | | | | | | | | | | | | | | | |        \
|    Match   | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Action  +
|            |                                 |         |
|            | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |         |
|    Logic   | | | | | | | | | | | | | | | | | | Logic   |
|            | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |         |
|            |                                 |         |
|  (Ingress) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |(Egress) +
|            | | | | | | | | | | | | | | | | | |        /
+------------+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |       /
                                               +------+
]]></artwork></artset></figure>

<t>If the queues are served as FIFO, then, according to <xref target="LeBoudecTheory"/>, the worst node delay, i.e. the maximum time spent by a packet in transit (M.D.) in a given node can be expressed as:</t>

<t>M.D. = T0 + Cp / CIR</t>

<t>Where:</t>

<t><list style="symbols">
  <t>T0 is the upper bound of the non-queuing delay experienced by a packet in the node,</t>
  <t>Cp is the buffer capacity (in bits),</t>
  <t>CIR is the Committed Information Rate, i.e. the service rate of the queue (in bits per second (bps)).</t>
</list></t>

<t>According to this formula, it is possible to bound the time spent by a packet in an equipment by assigning it to a queue of the proper size.
Besides, the maximum time spent by packets in the equipment can be adjusted by changing the buffer size, i.e. the number of packets in the queue.
Thus, if each packet's size is bounded by the MTU, it is possible to express the buffer sizes as capacity reserved for specific network flows.</t>

<t>In the described system, end nodes commit to respect a strict threshold on the bandwidth they consume for data flows for which they want the end-to-end delay to be bound.
Indeed, hosts are allowed to send bursts of traffic violating the maximum bandwidth they are allowed to consume, the maximum delay experienced by packets in the various network nodes will not be bounded, as space in the various queues might be illegitimately allocated.
To respect this constraint, end hosts are forced to strictly respect the threshold they are allocated for their delay-bound flow, and reject every packet violating this cap at the network's ingress.</t>

<t>In this system, the capacity of the various queues in the equipment is steered, and end host can reserve capacity in those queues by means of a reservation protocol able to carry queue reservation parameters in reservation request and reply messages.</t>

</section>
<section anchor="exPathSetup"><name>Setting up an end-to-end path with a delay bound</name>

<t>To describe how a path with strict delay bounds can be set up, let us consider as an example the network presented in <xref target="figure2"/>.
This network consists in a source node A, a destination node F, and four (4) intermediate nodes A, B, C and D.
Each of these four intermediate nodes have 2 guaranteed service queues, characterized by the Maximum node transit Delay they offer (M.D, in ms) and their capacity (Cp, in Mbits), and a best effort queue.
Those queues are served in a round robin fashion, in such a way that their service time is guaranteed.
In this network, A wants to send traffic to F in a data flow, with a maximum capacity of 2Mbits and a end-to-end delay limit of 85 ms.</t>

<figure title="Example network" anchor="figure2"><artset><artwork  type="svg" align="center" name="syntax"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="512" width="536" viewBox="0 0 536 512" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,240 L 8,288" fill="none" stroke="black"/>
<path d="M 104,32 L 104,224" fill="none" stroke="black"/>
<path d="M 104,304 L 104,496" fill="none" stroke="black"/>
<path d="M 128,240 L 128,288" fill="none" stroke="black"/>
<path d="M 240,32 L 240,224" fill="none" stroke="black"/>
<path d="M 240,304 L 240,496" fill="none" stroke="black"/>
<path d="M 296,32 L 296,224" fill="none" stroke="black"/>
<path d="M 296,304 L 296,496" fill="none" stroke="black"/>
<path d="M 408,240 L 408,288" fill="none" stroke="black"/>
<path d="M 432,32 L 432,224" fill="none" stroke="black"/>
<path d="M 432,304 L 432,496" fill="none" stroke="black"/>
<path d="M 528,240 L 528,288" fill="none" stroke="black"/>
<path d="M 104,32 L 240,32" fill="none" stroke="black"/>
<path d="M 296,32 L 432,32" fill="none" stroke="black"/>
<path d="M 240,128 L 296,128" fill="none" stroke="black"/>
<path d="M 104,224 L 240,224" fill="none" stroke="black"/>
<path d="M 296,224 L 432,224" fill="none" stroke="black"/>
<path d="M 8,240 L 128,240" fill="none" stroke="black"/>
<path d="M 408,240 L 528,240" fill="none" stroke="black"/>
<path d="M 8,288 L 128,288" fill="none" stroke="black"/>
<path d="M 408,288 L 528,288" fill="none" stroke="black"/>
<path d="M 104,304 L 240,304" fill="none" stroke="black"/>
<path d="M 296,304 L 432,304" fill="none" stroke="black"/>
<path d="M 240,400 L 296,400" fill="none" stroke="black"/>
<path d="M 104,496 L 240,496" fill="none" stroke="black"/>
<path d="M 296,496 L 432,496" fill="none" stroke="black"/>
<path d="M 48,288 L 104,400" fill="none" stroke="black"/>
<path d="M 240,208 L 296,320" fill="none" stroke="black"/>
<path d="M 432,128 L 488,240" fill="none" stroke="black"/>
<path d="M 48,240 L 104,128" fill="none" stroke="black"/>
<path d="M 240,320 L 296,208" fill="none" stroke="black"/>
<path d="M 432,400 L 488,288" fill="none" stroke="black"/>
<g class="text">
<text x="164" y="52">Node</text>
<text x="192" y="52">B</text>
<text x="356" y="52">Node</text>
<text x="384" y="52">D</text>
<text x="120" y="68">-</text>
<text x="152" y="68">Queue</text>
<text x="188" y="68">Q1</text>
<text x="312" y="68">-</text>
<text x="344" y="68">Queue</text>
<text x="380" y="68">Q1</text>
<text x="128" y="84">-</text>
<text x="156" y="84">M.D:</text>
<text x="188" y="84">20</text>
<text x="212" y="84">ms</text>
<text x="320" y="84">-</text>
<text x="348" y="84">M.D:</text>
<text x="380" y="84">40</text>
<text x="404" y="84">ms</text>
<text x="128" y="100">-</text>
<text x="152" y="100">Cp:</text>
<text x="176" y="100">5</text>
<text x="208" y="100">Mbits</text>
<text x="320" y="100">-</text>
<text x="344" y="100">Cp:</text>
<text x="368" y="100">7</text>
<text x="400" y="100">Mbits</text>
<text x="120" y="132">-</text>
<text x="152" y="132">Queue</text>
<text x="188" y="132">Q2</text>
<text x="312" y="132">-</text>
<text x="344" y="132">Queue</text>
<text x="380" y="132">Q2</text>
<text x="128" y="148">-</text>
<text x="156" y="148">M.D:</text>
<text x="192" y="148">200</text>
<text x="220" y="148">ms</text>
<text x="320" y="148">-</text>
<text x="348" y="148">M.D:</text>
<text x="384" y="148">300</text>
<text x="412" y="148">ms</text>
<text x="128" y="164">-</text>
<text x="152" y="164">Cp:</text>
<text x="180" y="164">50</text>
<text x="216" y="164">Mbits</text>
<text x="320" y="164">-</text>
<text x="344" y="164">Cp:</text>
<text x="372" y="164">60</text>
<text x="408" y="164">Mbits</text>
<text x="120" y="196">-</text>
<text x="152" y="196">Queue</text>
<text x="188" y="196">Q3</text>
<text x="312" y="196">-</text>
<text x="344" y="196">Queue</text>
<text x="380" y="196">Q3</text>
<text x="128" y="212">-</text>
<text x="156" y="212">Best</text>
<text x="196" y="212">eff.</text>
<text x="320" y="212">-</text>
<text x="348" y="212">Best</text>
<text x="388" y="212">eff.</text>
<text x="68" y="260">Source</text>
<text x="472" y="260">Destination</text>
<text x="60" y="276">Node</text>
<text x="88" y="276">A</text>
<text x="460" y="276">Node</text>
<text x="488" y="276">F</text>
<text x="164" y="324">Node</text>
<text x="192" y="324">C</text>
<text x="356" y="324">Node</text>
<text x="384" y="324">E</text>
<text x="120" y="340">-</text>
<text x="152" y="340">Queue</text>
<text x="188" y="340">Q1</text>
<text x="312" y="340">-</text>
<text x="344" y="340">Queue</text>
<text x="380" y="340">Q1</text>
<text x="128" y="356">-</text>
<text x="156" y="356">M.D:</text>
<text x="188" y="356">50</text>
<text x="212" y="356">ms</text>
<text x="320" y="356">-</text>
<text x="344" y="356">M.D</text>
<text x="372" y="356">30</text>
<text x="396" y="356">ms</text>
<text x="128" y="372">-</text>
<text x="152" y="372">Cp:</text>
<text x="176" y="372">9</text>
<text x="208" y="372">Mbits</text>
<text x="320" y="372">-</text>
<text x="340" y="372">Cp</text>
<text x="360" y="372">6</text>
<text x="392" y="372">Mbits</text>
<text x="120" y="404">-</text>
<text x="152" y="404">Queue</text>
<text x="188" y="404">Q2</text>
<text x="312" y="404">-</text>
<text x="344" y="404">Queue</text>
<text x="380" y="404">Q2</text>
<text x="128" y="420">-</text>
<text x="156" y="420">M.D:</text>
<text x="192" y="420">200</text>
<text x="220" y="420">ms</text>
<text x="320" y="420">-</text>
<text x="348" y="420">M.D:</text>
<text x="384" y="420">400</text>
<text x="412" y="420">ms</text>
<text x="128" y="436">-</text>
<text x="152" y="436">Cp:</text>
<text x="180" y="436">50</text>
<text x="216" y="436">Mbits</text>
<text x="320" y="436">-</text>
<text x="344" y="436">Cp:</text>
<text x="372" y="436">70</text>
<text x="408" y="436">Mbits</text>
<text x="120" y="468">-</text>
<text x="152" y="468">Queue</text>
<text x="188" y="468">Q3</text>
<text x="312" y="468">-</text>
<text x="344" y="468">Queue</text>
<text x="380" y="468">Q3</text>
<text x="128" y="484">-</text>
<text x="156" y="484">Best</text>
<text x="196" y="484">eff.</text>
<text x="320" y="484">-</text>
<text x="348" y="484">Best</text>
<text x="388" y="484">eff.</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center" name="syntax"><![CDATA[
            +----------------+      +----------------+
            |     Node B     |      |     Node D     |
            | - Queue Q1     |      | - Queue Q1     |
            |  - M.D: 20 ms  |      |  - M.D: 40 ms  |
            |  - Cp: 5 Mbits |      |  - Cp: 7 Mbits |
            |                |      |                |
            | - Queue Q2     +------+ - Queue Q2     |
           /|  - M.D: 200 ms |      |  - M.D: 300 ms |\
          / |  - Cp: 50 Mbits|      |  - Cp: 60 Mbits| \
         /  |                |      |                |  \
        /   | - Queue Q3     |      | - Queue Q3     |   \
       /    |  - Best eff.   |      |  - Best eff.   |    \
      /     +----------------+\    /+----------------+     \
+----+---------+               \  /               +---------+----+
|    Source    |                \/                |  Destination |
|    Node A    |                /\                |    Node F    |
+----+---------+               /  \               +---------+----+
      \     +----------------+/    \+----------------+     /
       \    |     Node C     |      |     Node E     |    /
        \   | - Queue Q1     |      | - Queue Q1     |   /
         \  |  - M.D: 50 ms  |      |  - M.D 30 ms   |  /
          \ |  - Cp: 9 Mbits |      |  - Cp 6 Mbits  | /
           \|                |      |                |/
            | - Queue Q2     +------+ - Queue Q2     |
            |  - M.D: 200 ms |      |  - M.D: 400 ms |
            |  - Cp: 50 Mbits|      |  - Cp: 70 Mbits|
            |                |      |                |
            | - Queue Q3     |      | - Queue Q3     |
            |  - Best eff.   |      |  - Best eff.   |
            +----------------+      +----------------+           
]]></artwork></artset></figure>

<t>To set the path, A will use the resource reservation protocol to send a reservation request to F carrying the end-to-end delay bound and the maximum capacity of the data flow it is willing to send.
This message is denoted Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 0ms; M.C. = 2Mbits; Record-route = [A]].
It contains six (6) parameters of interest for the reservation procedure:</t>

<t><list style="symbols">
  <t>a nonce ID (ID) that identifies the request;</t>
  <t>a flow ID (Flow-ID) which follows the requirements stated in Section 5.1 of <xref target="RFC8939"/> to identify the flow for which the resource reservation is done;</t>
  <t>a maximum end-to-end delay (max-E2E-delay) to be respected on the path from the source to the destination;</t>
  <t>an end-to-end delay commitment (E2E-delay-commit.) which represents the sum of the maximum delays that nodes traversed by the packet commit to respect;</t>
  <t>a maximum capacity (M.C.) which is the upper bound of the capacity required to serve the data flow on the path;</t>
  <t>a recorded route (Record-route) that is used to determine which nodes the message has traversed.</t>
</list></t>

<t>The message is sent to B and C.</t>

<t>When B receives the message, it checks that it can participate in the path by checking whether it can accept packets with the requested capacity in one of its queues while respecting the end-to-end delay.
It can place packets associated to this flow in its queue Q1.
Then, before forwarding the packet, it sets a temporary reservation in its queue Q1, adds Q1's maximum delay (20ms) to the end-to-end delay commitment in the reservation request message, and adds itself in the Record-route stack in the message: Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 20ms; M.C. = 2Mbits; Record-route = [A, B]].
Then it relays the packet to D and E.</t>

<t>At the same time, C proceeds in a similar way, assigns a temporary reservation to its queue Q1 and sends messages Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; M.C. = 2Mbits; Record-route = [A, C]] to D and E.</t>

<t>When D receives both messages Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 20ms; M.C. = 2Mbits; Record-route = [A, B]] and Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; M.C. = 2Mbits; Record-route = [A, C]], it knows from the nonce ID that they are associated to the same request.
Looking at the first message, it determines that it can serve this flow by reserving some capacity in its queue Q1.
It thus creates a message Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 60ms; M.C. = 2Mbits; Record-route = [A, B, D]] by adding Q1's maximum delay to the end-to-end delay commitment and recording itself in the Record-Route, and forwards it to F.
Yet, looking at the second message, it realizes that it cannot answer the request given that the maximum delay of its fastest queue is higher than the end-to-end delay value requested in the message.
Then, it silently refrains from relaying the message.</t>

<t>At the same time, E processes both messages Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 20ms; M.C. = 2Mbits; Record-route = [A, B]] and Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; M.C. = 2Mbits; Record-route = [A, C]], makes a temporary reservation in its queue Q1 and relays messages Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; M.C. = 2Mbits; Record-route = [A, B, E]] and Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 80ms; M.C. = 2Mbits; Record-route = [A, C, E]] to F.</t>

<t>F, the destination, receives 3 messages dealing with the same end-to-end resource reservation request from A:</t>

<t><list style="symbols">
  <t>Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 60ms; M.C. = 2Mbits; Record-route = [A, B, D]];</t>
  <t>Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; M.C. = 2Mbits; Record-route = [A, B, E]];</t>
  <t>Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 80ms; M.C. = 2Mbits; Record-route = [A, C, E]].</t>
</list></t>

<t>From this set, F chooses a path.
The specific policy used to make a selection among several possible paths is out of the scope of this document.
In this example, F selects the path on which the end-to-end delay commitment value is the lowest, and answers the resource reservation request with a response containing six (6) parameters:</t>

<t><list style="symbols">
  <t>the nonce ID that identifies the request;</t>
  <t>the identifier of the flow for which the resource reservation is done;</t>
  <t>the maximum end-to-end delay to be respected on the path from the source to the destination;</t>
  <t>a delay contract value, which is the end-to-end delay commitment received by the destination on the path;</t>
  <t>a capacity;</t>
  <t>a route that is used to determine which nodes the message has traversed.</t>
</list></t>

<t>F sets the route to [A, B, E, F] in its response, and sets the delay contract to 50ms, and sends to E the message Res.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; M.C. = 2Mbits; Route = [A, B, E, F]].
This response is relayed to A through E and B following the information in the Route parameter (see for instance the behavior presented in <xref target="opInt"/> and <xref target="opDst"/>).
When they receive the message, both E and B confirm the temporary reservation they set for the request in their Q1 queues. 
When A receives the response, it knows that an end-to-end path going through B and E to reach F has been set, and that it respects the end-to-end delay constraint.</t>

</section>
<section anchor="queueAdapt"><name>Adapting the queues capacities</name>

<t>In the lifetime of a network, the demand for delay-bound traffic can change: the distribution of the delay bound requests can shift, requiring the nodes to adapt the size of their various buffers.</t>

<figure title="Influence of buffer size on capacity and maximum delay" anchor="figure3"><artset><artwork  type="svg" align="center" name="syntax"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="416" viewBox="0 0 416 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 56,224 L 56,256" fill="none" stroke="black"/>
<path d="M 168,32 L 168,64" fill="none" stroke="black"/>
<path d="M 168,128 L 168,160" fill="none" stroke="black"/>
<path d="M 168,224 L 168,256" fill="none" stroke="black"/>
<path d="M 184,32 L 184,64" fill="none" stroke="black"/>
<path d="M 184,224 L 184,256" fill="none" stroke="black"/>
<path d="M 200,32 L 200,64" fill="none" stroke="black"/>
<path d="M 200,224 L 200,256" fill="none" stroke="black"/>
<path d="M 216,32 L 216,64" fill="none" stroke="black"/>
<path d="M 216,224 L 216,256" fill="none" stroke="black"/>
<path d="M 232,32 L 232,64" fill="none" stroke="black"/>
<path d="M 232,224 L 232,256" fill="none" stroke="black"/>
<path d="M 248,32 L 248,64" fill="none" stroke="black"/>
<path d="M 248,224 L 248,256" fill="none" stroke="black"/>
<path d="M 264,32 L 264,64" fill="none" stroke="black"/>
<path d="M 264,224 L 264,256" fill="none" stroke="black"/>
<path d="M 280,32 L 280,64" fill="none" stroke="black"/>
<path d="M 280,224 L 280,256" fill="none" stroke="black"/>
<path d="M 296,32 L 296,64" fill="none" stroke="black"/>
<path d="M 296,128 L 296,160" fill="none" stroke="black"/>
<path d="M 296,224 L 296,256" fill="none" stroke="black"/>
<path d="M 312,32 L 312,64" fill="none" stroke="black"/>
<path d="M 312,128 L 312,160" fill="none" stroke="black"/>
<path d="M 312,224 L 312,256" fill="none" stroke="black"/>
<path d="M 328,32 L 328,64" fill="none" stroke="black"/>
<path d="M 328,128 L 328,160" fill="none" stroke="black"/>
<path d="M 328,224 L 328,256" fill="none" stroke="black"/>
<path d="M 344,32 L 344,64" fill="none" stroke="black"/>
<path d="M 344,128 L 344,160" fill="none" stroke="black"/>
<path d="M 344,224 L 344,256" fill="none" stroke="black"/>
<path d="M 360,32 L 360,64" fill="none" stroke="black"/>
<path d="M 360,128 L 360,160" fill="none" stroke="black"/>
<path d="M 360,224 L 360,256" fill="none" stroke="black"/>
<path d="M 376,32 L 376,64" fill="none" stroke="black"/>
<path d="M 376,128 L 376,160" fill="none" stroke="black"/>
<path d="M 376,224 L 376,256" fill="none" stroke="black"/>
<path d="M 392,32 L 392,64" fill="none" stroke="black"/>
<path d="M 392,128 L 392,160" fill="none" stroke="black"/>
<path d="M 392,224 L 392,256" fill="none" stroke="black"/>
<path d="M 408,32 L 408,64" fill="none" stroke="black"/>
<path d="M 408,128 L 408,160" fill="none" stroke="black"/>
<path d="M 408,224 L 408,256" fill="none" stroke="black"/>
<path d="M 168,32 L 408,32" fill="none" stroke="black"/>
<path d="M 168,64 L 408,64" fill="none" stroke="black"/>
<path d="M 176,112 L 288,112" fill="none" stroke="black"/>
<path d="M 296,128 L 408,128" fill="none" stroke="black"/>
<path d="M 296,160 L 408,160" fill="none" stroke="black"/>
<path d="M 64,208 L 160,208" fill="none" stroke="black"/>
<path d="M 168,224 L 408,224" fill="none" stroke="black"/>
<path d="M 168,256 L 408,256" fill="none" stroke="black"/>
<polygon class="arrowhead" points="296,112 284,106.4 284,117.6" fill="black" transform="rotate(0,288,112)"/>
<polygon class="arrowhead" points="184,112 172,106.4 172,117.6" fill="black" transform="rotate(180,176,112)"/>
<polygon class="arrowhead" points="168,208 156,202.4 156,213.6" fill="black" transform="rotate(0,160,208)"/>
<polygon class="arrowhead" points="72,208 60,202.4 60,213.6" fill="black" transform="rotate(180,64,208)"/>
<g class="text">
<text x="32" y="100">Smaller</text>
<text x="92" y="100">buffer</text>
<text x="132" y="100">-&gt;</text>
<text x="164" y="100">less</text>
<text x="224" y="100">capacity,</text>
<text x="296" y="100">smaller</text>
<text x="348" y="100">max.</text>
<text x="392" y="100">delay</text>
<text x="184" y="132">-</text>
<text x="200" y="132">-</text>
<text x="216" y="132">-</text>
<text x="232" y="132">-</text>
<text x="248" y="132">-</text>
<text x="264" y="132">-</text>
<text x="280" y="132">-</text>
<text x="184" y="164">-</text>
<text x="200" y="164">-</text>
<text x="216" y="164">-</text>
<text x="232" y="164">-</text>
<text x="248" y="164">-</text>
<text x="264" y="164">-</text>
<text x="280" y="164">-</text>
<text x="44" y="196">Larger</text>
<text x="100" y="196">buffer</text>
<text x="140" y="196">-&gt;</text>
<text x="172" y="196">more</text>
<text x="232" y="196">capacity,</text>
<text x="300" y="196">larger</text>
<text x="348" y="196">max.</text>
<text x="392" y="196">delay</text>
<text x="72" y="228">-</text>
<text x="88" y="228">-</text>
<text x="104" y="228">-</text>
<text x="120" y="228">-</text>
<text x="136" y="228">-</text>
<text x="152" y="228">-</text>
<text x="72" y="260">-</text>
<text x="88" y="260">-</text>
<text x="104" y="260">-</text>
<text x="120" y="260">-</text>
<text x="136" y="260">-</text>
<text x="152" y="260">-</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center" name="syntax"><![CDATA[
                    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    | | | | | | | | | | | | | | | |
                    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                                   
Smaller buffer -> less capacity, smaller max. delay
                     <------------->               
                    + - - - - - - - +-+-+-+-+-+-+-+
                    |               | | | | | | | |
                    + - - - - - - - +-+-+-+-+-+-+-+
                                                   
  Larger buffer -> more capacity, larger max. delay
       <----------->                               
      + - - - - - - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |             | | | | | | | | | | | | | | | |
      + - - - - - - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></artset></figure>

<t>A node participating in this system maintains a list of the currently active reservations in its queues, associated with their characteristics (i.e. the flow identifier, the requested capacities and the delay bound commitment to respect at the node).</t>

<t>The queues' capacities are not fixed, and can evolve with time. 
In the reservation protocol's operations, two types of events can lead a node to adapt the capacity of one of its queues:</t>

<t><list style="symbols">
  <t>If a node receives a reservation request it can not serve because the requested delay is too low, and the occupation of one of its queues is below an occupation threshold (20% of the current queue capacity for instance), then the node can reduce the buffer size to be able to enforce a lower delay for flows assigned to the queue and thus accept the request (see middle of <xref target="figure3"/>).</t>
  <t>If a node receives a reservation request it can not serve because the requested capacity is too high, then the node can observe the occupation and the minimum delay of active flow reservations in its queues. 
If one of its queues' minimal delay is under the minimum active flow delay commitment, the node can look whether augmenting the queue's delay to meet this minimum commitment can help it accept the request (see bottom of <xref target="figure3"/>).
In a proactive way, the node can set an occupation threshold (80 % for instance) above which it inspects the minimum delay commitment for active flows in a queue to see whether it can enlarge the queue's size to accept more flows.</t>
</list></t>

<t>Those buffer size adaptation operations can be performed independently by each node. 
Indeed, as presented in <xref target="exPathSetup"/>, when a source reserves resources to respect an end-to-end latency bound, each intermediate node takes a local commitment about a per node maximum delay it aims at respecting.
If, at a given time, the Maximum node transit Delay of a queue is smaller that the minimum delay commitment for active reservations in this queue, then the node can adapt this queue's size without interfering with any of the commitments it has taken. 
Thus, as long as the queue size adaptation respects ongoing commitments, this procedure do not require additional signalling.</t>

</section>
<section anchor="E2EprotocolOps"><name>End-to-end ressource reservation protocol operations</name>

<section anchor="modRSVP"><name>Using the RSVP protocol</name>

<t>The RSVP protocol is used to allow an end device to reserve a path in a network consisting in devices able to steer their queues depth.
Both the RSVP Path message and the RSVP Resv message are exchanged to set a queue capacity reservation on a path and acknowledge it.</t>

<t>To reserve capacity to serve a flow respecting a delay bound, the Path message carries a set of objects to carry the request information presented in the example described in <xref target="exPathSetup"/>. 
The acknowledgement of the resource reservation is made by using a Resv message.
It carries the request information presented in the example described in <xref target="exPathSetup"/>.</t>

</section>
<section anchor="information-encoding-in-rsvp-messages"><name>Information encoding in RSVP messages</name>

<t>The RSVP messages used in the protocol's operations need to convey the information listed in <xref target="modRSVP"/>.
Previous RFCs, namely <xref target="RFC2210"/>, <xref target="RFC2212"/> and <xref target="RFC2215"/>, present data objects that can be used to carry this information.</t>

<t>According to <xref target="RFC2210"/>, it is needed to use RSVP to agree on a guaranteed service to enforce a latency bound between the source and destination.
This will influence the data provided in the various objects carried by both the Path and Resv messages.</t>

<t>The reservation ID and the identifier associated with the flow for which the reservation is done are carried in the SESSION data object. 
<xref target="RFC2205"/> mentions that in the RSVP SESSION object, the flow is identified by the destination address and optionally by the destination port, the protocol ID and a 1-byte flags field. 
This limits the number of Detnet flows that can be identified compared to the requirements of <xref target="RFC8939"/> Section 5.1.
Route and record route elements lists are carried by EXPLICIT_ROUTE and ROUTE_RECORD objects (see <xref target="RFC3209"/>).</t>

<t>The rest of the information carried by the Path and Resv messages deal with the characterization of the data flow.
According to <xref target="RFC2210"/>, the end to end QoS characteristics of the flow should be carried either by a SENDER_TSPEC object in the Path message or by a FLOWSPEC object in the Resv message.
The information given by either the source or destination in those objects is not changed by on path nodes.
For the reservation procedure described in this document, it means that the maximum end-to-end delay and the Capacity values need to be conveyed by those objects.
On the contrary, the end-to-end delay commitment value needs to be modified by on path nodes. 
To carry this piece of information, both RSVP Path and Resv message can use an ADSPEC object.</t>

<t>According to <xref target="RFC2210"/>, the SENDER_TSPEC and the FLOWSPEC objects need to include both a general token bucket TSpec parameter and a guaranteed service RSpec parameter.
Those parameters consist in words characterizing the desired properties of the end-to-end flow.
The token bucket TSPEC contains five (5) words: (1) a token bucket rate r, (2) a token bucket size b, (3) a peak data rate p, (4) a minimum policed unit m and (5) a maximum packet size M.
The guaranteed service RSpec contains two (2) words: (1) a rate R and (2) a slack term S.
Those parameters' words are used to characterized the desired end-to-end delay bound (Dreq). 
According to <xref target="RFC2212"/>, it is given by the formula:</t>

<figure><artwork align="center" name="syntax"><![CDATA[
Dreq = S + b/r
]]></artwork></figure>

<t>when p=r=R in the parameters carried by the SENDER_TSPEC and the FLOWSPEC objects.</t>

<t>From this formula, a sender node can formalize its end to end delay contract by computing b/r and substracting this value from the desired end-to-end delay to obtain the value of the slack term S to be added as a word in the guaranteed service RSpec.</t>

<figure title="Token bucket TSpec and guaranteed service RSpec parameters carried by the SENDER_TSPEC and the FLOWSPEC objects" anchor="figure4"><artset><artwork  type="svg" align="center" name="syntax&quot;artwork-svg-options=&quot;--spaces=0"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="592" width="560" viewBox="0 0 560 592" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 32,48 L 32,400" fill="none" stroke="black"/>
<path d="M 96,48 L 96,80" fill="none" stroke="black"/>
<path d="M 160,80 L 160,144" fill="none" stroke="black"/>
<path d="M 160,304 L 160,336" fill="none" stroke="black"/>
<path d="M 176,80 L 176,112" fill="none" stroke="black"/>
<path d="M 288,48 L 288,144" fill="none" stroke="black"/>
<path d="M 288,304 L 288,336" fill="none" stroke="black"/>
<path d="M 544,48 L 544,400" fill="none" stroke="black"/>
<path d="M 32,48 L 544,48" fill="none" stroke="black"/>
<path d="M 32,80 L 544,80" fill="none" stroke="black"/>
<path d="M 32,112 L 544,112" fill="none" stroke="black"/>
<path d="M 32,144 L 544,144" fill="none" stroke="black"/>
<path d="M 32,176 L 544,176" fill="none" stroke="black"/>
<path d="M 32,208 L 544,208" fill="none" stroke="black"/>
<path d="M 32,240 L 544,240" fill="none" stroke="black"/>
<path d="M 32,272 L 544,272" fill="none" stroke="black"/>
<path d="M 32,304 L 544,304" fill="none" stroke="black"/>
<path d="M 32,336 L 544,336" fill="none" stroke="black"/>
<path d="M 32,368 L 544,368" fill="none" stroke="black"/>
<path d="M 32,400 L 544,400" fill="none" stroke="black"/>
<g class="text">
<text x="40" y="36">0</text>
<text x="104" y="36">4</text>
<text x="168" y="36">8</text>
<text x="184" y="36">9</text>
<text x="284" y="36">15</text>
<text x="540" y="36">31</text>
<text x="8" y="68">1</text>
<text x="48" y="68">A</text>
<text x="72" y="68">(0)</text>
<text x="188" y="68">Unused</text>
<text x="392" y="68">B</text>
<text x="428" y="68">(10)</text>
<text x="8" y="100">2</text>
<text x="80" y="100">C</text>
<text x="112" y="100">(2)</text>
<text x="168" y="100">0</text>
<text x="228" y="100">Reserved</text>
<text x="392" y="100">D</text>
<text x="424" y="100">(9)</text>
<text x="8" y="132">3</text>
<text x="80" y="132">E</text>
<text x="120" y="132">(127)</text>
<text x="208" y="132">F</text>
<text x="240" y="132">(0)</text>
<text x="392" y="132">G</text>
<text x="424" y="132">(5)</text>
<text x="8" y="164">4</text>
<text x="72" y="164">Token</text>
<text x="124" y="164">Bucket</text>
<text x="172" y="164">Rate</text>
<text x="232" y="164">[r]</text>
<text x="280" y="164">(32-bit</text>
<text x="332" y="164">IEEE</text>
<text x="388" y="164">floating</text>
<text x="448" y="164">point</text>
<text x="504" y="164">number)</text>
<text x="8" y="196">5</text>
<text x="72" y="196">Token</text>
<text x="124" y="196">Bucket</text>
<text x="172" y="196">Size</text>
<text x="232" y="196">[b]</text>
<text x="280" y="196">(32-bit</text>
<text x="332" y="196">IEEE</text>
<text x="388" y="196">floating</text>
<text x="448" y="196">point</text>
<text x="504" y="196">number)</text>
<text x="8" y="228">6</text>
<text x="68" y="228">Peak</text>
<text x="108" y="228">Data</text>
<text x="148" y="228">Rate</text>
<text x="232" y="228">[p]</text>
<text x="280" y="228">(32-bit</text>
<text x="332" y="228">IEEE</text>
<text x="388" y="228">floating</text>
<text x="448" y="228">point</text>
<text x="504" y="228">number)</text>
<text x="8" y="260">7</text>
<text x="80" y="260">Minimum</text>
<text x="144" y="260">Policed</text>
<text x="196" y="260">Unit</text>
<text x="232" y="260">[m]</text>
<text x="432" y="260">(32-bit</text>
<text x="500" y="260">integer)</text>
<text x="8" y="292">8</text>
<text x="80" y="292">Maximum</text>
<text x="140" y="292">Packet</text>
<text x="188" y="292">Size</text>
<text x="232" y="292">[M]</text>
<text x="432" y="292">(32-bit</text>
<text x="500" y="292">integer)</text>
<text x="8" y="324">9</text>
<text x="80" y="324">H</text>
<text x="120" y="324">(130)</text>
<text x="208" y="324">I</text>
<text x="240" y="324">(0)</text>
<text x="392" y="324">J</text>
<text x="424" y="324">(2)</text>
<text x="12" y="356">10</text>
<text x="68" y="356">Rate</text>
<text x="232" y="356">[R]</text>
<text x="280" y="356">(32-bit</text>
<text x="332" y="356">IEEE</text>
<text x="388" y="356">floating</text>
<text x="448" y="356">point</text>
<text x="504" y="356">number)</text>
<text x="12" y="388">11</text>
<text x="72" y="388">Slack</text>
<text x="116" y="388">Term</text>
<text x="232" y="388">[S]</text>
<text x="432" y="388">(32-bit</text>
<text x="500" y="388">integer)</text>
<text x="8" y="436">-</text>
<text x="24" y="436">A</text>
<text x="40" y="436">:</text>
<text x="80" y="436">Message</text>
<text x="140" y="436">format</text>
<text x="200" y="436">version</text>
<text x="260" y="436">number</text>
<text x="304" y="436">(0)</text>
<text x="8" y="452">-</text>
<text x="24" y="452">B</text>
<text x="40" y="452">:</text>
<text x="80" y="452">Overall</text>
<text x="140" y="452">length</text>
<text x="180" y="452">(9</text>
<text x="216" y="452">words</text>
<text x="280" y="452">excluding</text>
<text x="352" y="452">header)</text>
<text x="8" y="468">-</text>
<text x="24" y="468">C</text>
<text x="40" y="468">:</text>
<text x="80" y="468">Service</text>
<text x="144" y="468">header,</text>
<text x="208" y="468">service</text>
<text x="268" y="468">number</text>
<text x="304" y="468">2</text>
<text x="364" y="468">(Guaranteed)</text>
<text x="8" y="484">-</text>
<text x="24" y="484">D</text>
<text x="40" y="484">:</text>
<text x="96" y="484">Per-service</text>
<text x="164" y="484">data</text>
<text x="216" y="484">length,</text>
<text x="260" y="484">(9</text>
<text x="296" y="484">words</text>
<text x="360" y="484">excluding</text>
<text x="448" y="484">per-service</text>
<text x="528" y="484">header)</text>
<text x="8" y="500">-</text>
<text x="24" y="500">E</text>
<text x="40" y="500">:</text>
<text x="88" y="500">Parameter</text>
<text x="144" y="500">ID,</text>
<text x="200" y="500">parameter</text>
<text x="256" y="500">127</text>
<text x="300" y="500">(Token</text>
<text x="356" y="500">Bucket</text>
<text x="412" y="500">TSpec)</text>
<text x="8" y="516">-</text>
<text x="24" y="516">F</text>
<text x="40" y="516">:</text>
<text x="88" y="516">Parameter</text>
<text x="144" y="516">127</text>
<text x="184" y="516">flags</text>
<text x="232" y="516">(none</text>
<text x="276" y="516">set)</text>
<text x="8" y="532">-</text>
<text x="24" y="532">G</text>
<text x="40" y="532">:</text>
<text x="88" y="532">Parameter</text>
<text x="144" y="532">127</text>
<text x="192" y="532">length,</text>
<text x="232" y="532">5</text>
<text x="264" y="532">words</text>
<text x="328" y="532">excluding</text>
<text x="408" y="532">parameter</text>
<text x="476" y="532">header</text>
<text x="8" y="548">-</text>
<text x="24" y="548">H</text>
<text x="40" y="548">:</text>
<text x="88" y="548">Parameter</text>
<text x="144" y="548">ID,</text>
<text x="200" y="548">parameter</text>
<text x="256" y="548">130</text>
<text x="320" y="548">(Guaranteed</text>
<text x="400" y="548">Service</text>
<text x="460" y="548">RSpec)</text>
<text x="8" y="564">-</text>
<text x="24" y="564">I</text>
<text x="40" y="564">:</text>
<text x="88" y="564">Parameter</text>
<text x="144" y="564">130</text>
<text x="184" y="564">flags</text>
<text x="232" y="564">(none</text>
<text x="276" y="564">set)</text>
<text x="8" y="580">-</text>
<text x="24" y="580">J</text>
<text x="40" y="580">:</text>
<text x="88" y="580">Parameter</text>
<text x="144" y="580">130</text>
<text x="192" y="580">length,</text>
<text x="232" y="580">2</text>
<text x="264" y="580">words</text>
<text x="328" y="580">excluding</text>
<text x="408" y="580">parameter</text>
<text x="476" y="580">header</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center" name="syntax&quot;artwork-svg-options=&quot;--spaces=0"><![CDATA[
    0       4       8 9           15                              31
   +-------+-----------------------+-------------------------------+
1  | A (0) |        Unused         |            B  (10)            |
   +-------+-------+-+-------------+-------------------------------+
2  |     C  (2)    |0|  Reserved   |            D  (9)             |
   +---------------+-+-------------+-------------------------------+
3  |     E  (127)  |     F  (0)    |            G  (5)             |
   +---------------+---------------+-------------------------------+
4  |  Token Bucket Rate    [r] (32-bit IEEE floating point number) |
   +---------------------------------------------------------------+
5  |  Token Bucket Size    [b] (32-bit IEEE floating point number) |
   +---------------------------------------------------------------+
6  |  Peak Data Rate       [p] (32-bit IEEE floating point number) |
   +---------------------------------------------------------------+
7  |  Minimum Policed Unit [m]                    (32-bit integer) |
   +---------------------------------------------------------------+
8  |  Maximum Packet Size  [M]                    (32-bit integer) |
   +---------------+---------------+-------------------------------+
9  |     H  (130)  |     I  (0)    |            J  (2)             |
   +---------------+---------------+-------------------------------+
10 |  Rate                 [R] (32-bit IEEE floating point number) |
   +---------------------------------------------------------------+
11 |  Slack Term           [S]                    (32-bit integer) |
   +---------------------------------------------------------------+

- A : Message format version number (0)
- B : Overall length (9 words excluding header)
- C : Service header, service number 2 (Guaranteed)
- D : Per-service data length, (9 words excluding per-service header)
- E : Parameter ID, parameter 127 (Token Bucket TSpec)
- F : Parameter 127 flags (none set)
- G : Parameter 127 length, 5 words excluding parameter header
- H : Parameter ID, parameter 130 (Guaranteed Service RSpec)
- I : Parameter 130 flags (none set)
- J : Parameter 130 length, 2 words excluding parameter header
]]></artwork></artset></figure>

<t>The ADSPEC object carried by the Path and the Resv messages needs to include a set of default general parameters as well as a fragment carrying guaranteed service parameters. 
There are five (5) default parameters to include: (1) The global break bit, (2) the IS hop count, (3) the path bandwidth, (4) the minimum path latency and (5) the composed path MTU. 
The guaranteed service fragment needs to include four (4) parameters: (1) the end-to-end composed value of the rate-dependent error term Ctot, (2) the end-to-end composed value of the rate-independent error term Dtot, (3) the value of the rate-dependent error term since the last composition point Csum and (4) the value of the rate-independent error term since the last composition point Dsum. 
In the reservation procedure, the minimum path latency is set to the undetermined value specified in <xref target="RFC2215"/>, i.e. (2**32)-1, to signal that the propagation delay is not considered.
The on path node provide their contribution to the end-to-end delay commitment by adding the delay bound they commit to respect to both the Dtot and the Dsum parameters, while keeping the Ctot and the Csum parameters with a zero value.
Other parameters appearing in the ADSPEC object are set and modified according to the procedure described in <xref target="RFC2210"/>.</t>

<figure title="ADSPEC object format" anchor="figure5"><artset><artwork  type="svg" align="center" name="syntax&quot;artwork-svg-options=&quot;--spaces=0"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="704" width="552" viewBox="0 0 552 704" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 32,48 L 32,688" fill="none" stroke="black"/>
<path d="M 96,48 L 96,80" fill="none" stroke="black"/>
<path d="M 160,80 L 160,144" fill="none" stroke="black"/>
<path d="M 160,176 L 160,208" fill="none" stroke="black"/>
<path d="M 160,240 L 160,272" fill="none" stroke="black"/>
<path d="M 160,304 L 160,336" fill="none" stroke="black"/>
<path d="M 160,368 L 160,432" fill="none" stroke="black"/>
<path d="M 160,464 L 160,496" fill="none" stroke="black"/>
<path d="M 160,528 L 160,560" fill="none" stroke="black"/>
<path d="M 160,592 L 160,624" fill="none" stroke="black"/>
<path d="M 160,656 L 160,688" fill="none" stroke="black"/>
<path d="M 176,80 L 176,112" fill="none" stroke="black"/>
<path d="M 176,368 L 176,400" fill="none" stroke="black"/>
<path d="M 288,48 L 288,144" fill="none" stroke="black"/>
<path d="M 288,176 L 288,208" fill="none" stroke="black"/>
<path d="M 288,240 L 288,272" fill="none" stroke="black"/>
<path d="M 288,304 L 288,336" fill="none" stroke="black"/>
<path d="M 288,368 L 288,432" fill="none" stroke="black"/>
<path d="M 288,464 L 288,496" fill="none" stroke="black"/>
<path d="M 288,528 L 288,560" fill="none" stroke="black"/>
<path d="M 288,592 L 288,624" fill="none" stroke="black"/>
<path d="M 288,656 L 288,688" fill="none" stroke="black"/>
<path d="M 544,48 L 544,688" fill="none" stroke="black"/>
<path d="M 32,48 L 544,48" fill="none" stroke="black"/>
<path d="M 32,80 L 544,80" fill="none" stroke="black"/>
<path d="M 32,112 L 544,112" fill="none" stroke="black"/>
<path d="M 32,144 L 544,144" fill="none" stroke="black"/>
<path d="M 32,176 L 544,176" fill="none" stroke="black"/>
<path d="M 32,208 L 544,208" fill="none" stroke="black"/>
<path d="M 32,240 L 544,240" fill="none" stroke="black"/>
<path d="M 32,272 L 544,272" fill="none" stroke="black"/>
<path d="M 32,304 L 544,304" fill="none" stroke="black"/>
<path d="M 32,336 L 544,336" fill="none" stroke="black"/>
<path d="M 32,368 L 544,368" fill="none" stroke="black"/>
<path d="M 32,400 L 544,400" fill="none" stroke="black"/>
<path d="M 32,432 L 544,432" fill="none" stroke="black"/>
<path d="M 32,464 L 544,464" fill="none" stroke="black"/>
<path d="M 32,496 L 544,496" fill="none" stroke="black"/>
<path d="M 32,528 L 544,528" fill="none" stroke="black"/>
<path d="M 32,560 L 544,560" fill="none" stroke="black"/>
<path d="M 32,592 L 544,592" fill="none" stroke="black"/>
<path d="M 32,624 L 544,624" fill="none" stroke="black"/>
<path d="M 32,656 L 544,656" fill="none" stroke="black"/>
<path d="M 32,688 L 544,688" fill="none" stroke="black"/>
<g class="text">
<text x="40" y="36">0</text>
<text x="104" y="36">4</text>
<text x="168" y="36">8</text>
<text x="184" y="36">9</text>
<text x="284" y="36">15</text>
<text x="540" y="36">31</text>
<text x="8" y="68">1</text>
<text x="48" y="68">A</text>
<text x="72" y="68">(0)</text>
<text x="180" y="68">Unused</text>
<text x="392" y="68">B</text>
<text x="428" y="68">(19)</text>
<text x="8" y="100">2</text>
<text x="80" y="100">C</text>
<text x="112" y="100">(1)</text>
<text x="168" y="100">x</text>
<text x="192" y="100">D</text>
<text x="244" y="100">(reserved)</text>
<text x="392" y="100">E</text>
<text x="424" y="100">(8)</text>
<text x="8" y="132">3</text>
<text x="80" y="132">F</text>
<text x="112" y="132">(4)</text>
<text x="224" y="132">G</text>
<text x="392" y="132">H</text>
<text x="424" y="132">(1)</text>
<text x="8" y="164">4</text>
<text x="52" y="164">IS</text>
<text x="80" y="164">hop</text>
<text x="120" y="164">count</text>
<text x="424" y="164">(16-bit</text>
<text x="496" y="164">unsigned)</text>
<text x="8" y="196">5</text>
<text x="80" y="196">I</text>
<text x="112" y="196">(6)</text>
<text x="224" y="196">J</text>
<text x="392" y="196">K</text>
<text x="424" y="196">(1)</text>
<text x="8" y="228">6</text>
<text x="60" y="228">Path</text>
<text x="96" y="228">b/w</text>
<text x="148" y="228">estimate</text>
<text x="280" y="228">(32-bit</text>
<text x="332" y="228">IEEE</text>
<text x="388" y="228">floating</text>
<text x="448" y="228">point</text>
<text x="504" y="228">number)</text>
<text x="8" y="260">7</text>
<text x="80" y="260">L</text>
<text x="116" y="260">(l8)</text>
<text x="224" y="260">M</text>
<text x="392" y="260">N</text>
<text x="424" y="260">(1)</text>
<text x="8" y="292">8</text>
<text x="72" y="292">Minimum</text>
<text x="124" y="292">path</text>
<text x="176" y="292">latency</text>
<text x="420" y="292">(set</text>
<text x="452" y="292">to</text>
<text x="500" y="292">2**32-1)</text>
<text x="8" y="324">9</text>
<text x="80" y="324">O</text>
<text x="116" y="324">(10)</text>
<text x="224" y="324">P</text>
<text x="392" y="324">Q</text>
<text x="424" y="324">(1)</text>
<text x="12" y="356">10</text>
<text x="76" y="356">Composed</text>
<text x="128" y="356">MTU</text>
<text x="424" y="356">(16-bit</text>
<text x="496" y="356">unsigned)</text>
<text x="12" y="388">11</text>
<text x="80" y="388">R</text>
<text x="112" y="388">(2)</text>
<text x="168" y="388">x</text>
<text x="192" y="388">S</text>
<text x="244" y="388">(reserved)</text>
<text x="392" y="388">T</text>
<text x="424" y="388">(8)</text>
<text x="12" y="420">12</text>
<text x="80" y="420">U</text>
<text x="120" y="420">(133)</text>
<text x="224" y="420">V</text>
<text x="392" y="420">W</text>
<text x="424" y="420">(1)</text>
<text x="12" y="452">13</text>
<text x="84" y="452">End-to-end</text>
<text x="164" y="452">composed</text>
<text x="224" y="452">value</text>
<text x="264" y="452">for</text>
<text x="288" y="452">C</text>
<text x="372" y="452">[Ctot]</text>
<text x="468" y="452">(set</text>
<text x="500" y="452">to</text>
<text x="524" y="452">0)</text>
<text x="12" y="484">14</text>
<text x="80" y="484">X</text>
<text x="120" y="484">(134)</text>
<text x="224" y="484">Y</text>
<text x="392" y="484">Z</text>
<text x="424" y="484">(1)</text>
<text x="12" y="516">15</text>
<text x="84" y="516">End-to-end</text>
<text x="164" y="516">composed</text>
<text x="224" y="516">value</text>
<text x="264" y="516">for</text>
<text x="288" y="516">D</text>
<text x="372" y="516">[Dtot]</text>
<text x="432" y="516">(32-bit</text>
<text x="500" y="516">integer)</text>
<text x="12" y="548">16</text>
<text x="76" y="548">AA</text>
<text x="120" y="548">(135)</text>
<text x="220" y="548">BB</text>
<text x="388" y="548">CC</text>
<text x="424" y="548">(1)</text>
<text x="12" y="580">17</text>
<text x="124" y="580">Since-last-reshaping</text>
<text x="232" y="580">point</text>
<text x="292" y="580">composed</text>
<text x="336" y="580">C</text>
<text x="372" y="580">[Csum]</text>
<text x="468" y="580">(set</text>
<text x="500" y="580">to</text>
<text x="524" y="580">0)</text>
<text x="12" y="612">18</text>
<text x="76" y="612">DD</text>
<text x="120" y="612">(136)</text>
<text x="220" y="612">EE</text>
<text x="388" y="612">FF</text>
<text x="424" y="612">(1)</text>
<text x="12" y="644">19</text>
<text x="124" y="644">Since-last-reshaping</text>
<text x="232" y="644">point</text>
<text x="292" y="644">composed</text>
<text x="336" y="644">D</text>
<text x="372" y="644">[Dsum]</text>
<text x="432" y="644">(32-bit</text>
<text x="500" y="644">integer)</text>
<text x="12" y="676">20</text>
<text x="76" y="676">GG</text>
<text x="112" y="676">(5)</text>
<text x="168" y="676">x</text>
<text x="204" y="676">HH</text>
<text x="240" y="676">(0)</text>
<text x="388" y="676">II</text>
<text x="424" y="676">(0)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center" name="syntax&quot;artwork-svg-options=&quot;--spaces=0"><![CDATA[
    0       4       8 9           15                              31
   +-------+-----------------------+-------------------------------+
1  | A (0) |       Unused          |            B  (19)            |
   +-------+-------+-+-------------+-------------------------------+
2  |     C  (1)    |x| D (reserved)|            E  (8)             |
   +---------------+-+-------------+-------------------------------+
3  |     F  (4)    |       G       |            H  (1)             |
   +---------------+---------------+-------------------------------+
4  | IS hop count                                (16-bit unsigned) |
   +---------------+---------------+-------------------------------+
5  |     I  (6)    |       J       |            K  (1)             |
   +---------------+---------------+-------------------------------+
6  | Path b/w estimate         (32-bit IEEE floating point number) |
   +---------------+---------------+-------------------------------+
7  |     L  (l8)   |       M       |            N  (1)             |
   +---------------+---------------+-------------------------------+
8  | Minimum path latency                         (set to 2**32-1) |
   +---------------+---------------+-------------------------------+
9  |     O  (10)   |       P       |            Q  (1)             |
   +---------------+---------------+-------------------------------+
10 | Composed MTU                                (16-bit unsigned) |
   +---------------+-+-------------+-------------------------------+
11 |     R  (2)    |x| S (reserved)|            T  (8)             |
   +---------------+-+-------------+-------------------------------+
12 |     U  (133)  |       V       |            W  (1)             |
   +---------------+---------------+-------------------------------+
13 | End-to-end composed value for C       [Ctot]       (set to 0) |
   +---------------+---------------+-------------------------------+
14 |     X  (134)  |       Y       |            Z  (1)             |
   +---------------+---------------+-------------------------------+
15 | End-to-end composed value for D       [Dtot] (32-bit integer) |
   +---------------+---------------+-------------------------------+
16 |    AA  (135)  |      BB       |           CC  (1)             |
   +---------------+---------------+-------------------------------+
17 | Since-last-reshaping point composed C [Csum]       (set to 0) |
   +---------------+---------------+-------------------------------+
18 |    DD  (136)  |      EE       |           FF  (1)             |
   +---------------+---------------+-------------------------------+
19 | Since-last-reshaping point composed D [Dsum] (32-bit integer) |
   +---------------+---------------+-------------------------------+
20 |    GG  (5)    |x   HH  (0)    |           II  (0)             |
   +---------------+---------------+-------------------------------+
]]></artwork></artset></figure>

<figure title="Caption for ADSPEC object format" anchor="figure5bis"><artset><artwork  type="svg" align="center" name="syntax&quot;artwork-svg-options=&quot;--spaces=0"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="752" width="560" viewBox="0 0 560 752" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<g class="text">
<text x="20" y="36">Word</text>
<text x="52" y="36">1:</text>
<text x="96" y="36">Message</text>
<text x="160" y="36">Header:</text>
<text x="8" y="52">-</text>
<text x="24" y="52">A</text>
<text x="40" y="52">:</text>
<text x="80" y="52">Message</text>
<text x="140" y="52">header</text>
<text x="184" y="52">and</text>
<text x="232" y="52">version</text>
<text x="292" y="52">number</text>
<text x="8" y="68">-</text>
<text x="24" y="68">B</text>
<text x="40" y="68">:</text>
<text x="80" y="68">Message</text>
<text x="140" y="68">length</text>
<text x="184" y="68">(19</text>
<text x="224" y="68">words</text>
<text x="288" y="68">excluding</text>
<text x="360" y="68">header)</text>
<text x="24" y="100">Words</text>
<text x="68" y="100">2-7:</text>
<text x="120" y="100">Default</text>
<text x="184" y="100">general</text>
<text x="284" y="100">characterization</text>
<text x="396" y="100">parameters</text>
<text x="8" y="116">-</text>
<text x="24" y="116">C</text>
<text x="40" y="116">:</text>
<text x="96" y="116">Per-Service</text>
<text x="176" y="116">header,</text>
<text x="240" y="116">service</text>
<text x="300" y="116">number</text>
<text x="336" y="116">1</text>
<text x="84" y="132">(Default</text>
<text x="152" y="132">General</text>
<text x="232" y="132">Parameters)</text>
<text x="8" y="148">-</text>
<text x="24" y="148">D</text>
<text x="40" y="148">:</text>
<text x="76" y="148">Global</text>
<text x="128" y="148">Break</text>
<text x="168" y="148">bit</text>
<text x="232" y="148">(NON_IS_HOP</text>
<text x="312" y="148">general</text>
<text x="384" y="148">parameter</text>
<text x="436" y="148">2)</text>
<text x="480" y="148">(marked</text>
<text x="524" y="148">x)</text>
<text x="8" y="164">-</text>
<text x="24" y="164">E</text>
<text x="40" y="164">:</text>
<text x="76" y="164">Length</text>
<text x="116" y="164">of</text>
<text x="160" y="164">General</text>
<text x="236" y="164">Parameters</text>
<text x="300" y="164">data</text>
<text x="344" y="164">block</text>
<text x="380" y="164">(8</text>
<text x="420" y="164">words)</text>
<text x="8" y="180">-</text>
<text x="24" y="180">F</text>
<text x="40" y="180">:</text>
<text x="88" y="180">Parameter</text>
<text x="144" y="180">ID,</text>
<text x="200" y="180">parameter</text>
<text x="248" y="180">4</text>
<text x="332" y="180">(NUMBER_OF_IS_HOPS</text>
<text x="440" y="180">general</text>
<text x="516" y="180">parameter)</text>
<text x="8" y="196">-</text>
<text x="24" y="196">G</text>
<text x="40" y="196">:</text>
<text x="88" y="196">Parameter</text>
<text x="136" y="196">4</text>
<text x="164" y="196">flag</text>
<text x="204" y="196">byte</text>
<text x="8" y="212">-</text>
<text x="24" y="212">H</text>
<text x="40" y="212">:</text>
<text x="88" y="212">Parameter</text>
<text x="136" y="212">4</text>
<text x="172" y="212">length</text>
<text x="212" y="212">(1</text>
<text x="244" y="212">word</text>
<text x="304" y="212">excluding</text>
<text x="376" y="212">header)</text>
<text x="8" y="228">-</text>
<text x="24" y="228">I</text>
<text x="40" y="228">:</text>
<text x="88" y="228">Parameter</text>
<text x="144" y="228">ID,</text>
<text x="200" y="228">parameter</text>
<text x="248" y="228">6</text>
<text x="152" y="244">(AVAILABLE_PATH_BANDWIDTH</text>
<text x="288" y="244">general</text>
<text x="364" y="244">parameter)</text>
<text x="8" y="260">-</text>
<text x="24" y="260">J</text>
<text x="40" y="260">:</text>
<text x="88" y="260">Parameter</text>
<text x="136" y="260">6</text>
<text x="164" y="260">flag</text>
<text x="204" y="260">byte</text>
<text x="8" y="276">-</text>
<text x="24" y="276">K</text>
<text x="40" y="276">:</text>
<text x="88" y="276">Parameter</text>
<text x="136" y="276">6</text>
<text x="172" y="276">length</text>
<text x="212" y="276">(1</text>
<text x="244" y="276">word</text>
<text x="304" y="276">excluding</text>
<text x="376" y="276">header)</text>
<text x="8" y="292">-</text>
<text x="24" y="292">L</text>
<text x="40" y="292">:</text>
<text x="88" y="292">Parameter</text>
<text x="144" y="292">ID,</text>
<text x="200" y="292">parameter</text>
<text x="248" y="292">8</text>
<text x="136" y="308">(MINIMUM_PATH_LATENCY</text>
<text x="256" y="308">general</text>
<text x="332" y="308">parameter)</text>
<text x="8" y="324">-</text>
<text x="24" y="324">M</text>
<text x="40" y="324">:</text>
<text x="88" y="324">Parameter</text>
<text x="136" y="324">8</text>
<text x="164" y="324">flag</text>
<text x="204" y="324">byte</text>
<text x="8" y="340">-</text>
<text x="24" y="340">N</text>
<text x="40" y="340">:</text>
<text x="88" y="340">Parameter</text>
<text x="136" y="340">8</text>
<text x="172" y="340">length</text>
<text x="212" y="340">(1</text>
<text x="244" y="340">word</text>
<text x="304" y="340">excluding</text>
<text x="376" y="340">header)</text>
<text x="8" y="356">-</text>
<text x="24" y="356">O</text>
<text x="40" y="356">:</text>
<text x="88" y="356">Parameter</text>
<text x="144" y="356">ID,</text>
<text x="200" y="356">parameter</text>
<text x="252" y="356">10</text>
<text x="304" y="356">(PATH_MTU</text>
<text x="376" y="356">general</text>
<text x="452" y="356">parameter)</text>
<text x="8" y="372">-</text>
<text x="24" y="372">P</text>
<text x="40" y="372">:</text>
<text x="88" y="372">Parameter</text>
<text x="140" y="372">10</text>
<text x="172" y="372">flag</text>
<text x="212" y="372">byte</text>
<text x="8" y="388">-</text>
<text x="24" y="388">Q</text>
<text x="40" y="388">:</text>
<text x="88" y="388">Parameter</text>
<text x="140" y="388">10</text>
<text x="180" y="388">length</text>
<text x="220" y="388">(1</text>
<text x="252" y="388">word</text>
<text x="312" y="388">excluding</text>
<text x="384" y="388">header)</text>
<text x="24" y="420">Words</text>
<text x="76" y="420">11-19:</text>
<text x="148" y="420">Guaranteed</text>
<text x="224" y="420">service</text>
<text x="300" y="420">parameters</text>
<text x="8" y="436">-</text>
<text x="24" y="436">R</text>
<text x="40" y="436">:</text>
<text x="96" y="436">Per-Service</text>
<text x="176" y="436">header,</text>
<text x="240" y="436">service</text>
<text x="300" y="436">number</text>
<text x="336" y="436">2</text>
<text x="396" y="436">(Guaranteed)</text>
<text x="8" y="452">-</text>
<text x="24" y="452">S</text>
<text x="40" y="452">:</text>
<text x="72" y="452">Break</text>
<text x="112" y="452">bit</text>
<text x="8" y="468">-</text>
<text x="24" y="468">T</text>
<text x="40" y="468">:</text>
<text x="76" y="468">Length</text>
<text x="116" y="468">of</text>
<text x="176" y="468">per-service</text>
<text x="244" y="468">data</text>
<text x="276" y="468">(8</text>
<text x="312" y="468">words</text>
<text x="376" y="468">excluding</text>
<text x="448" y="468">header)</text>
<text x="8" y="484">-</text>
<text x="24" y="484">U</text>
<text x="40" y="484">:</text>
<text x="88" y="484">Parameter</text>
<text x="144" y="484">ID,</text>
<text x="200" y="484">parameter</text>
<text x="256" y="484">133</text>
<text x="312" y="484">(Composed</text>
<text x="376" y="484">Ctot)</text>
<text x="8" y="500">-</text>
<text x="24" y="500">V</text>
<text x="40" y="500">:</text>
<text x="84" y="500">Composed</text>
<text x="140" y="500">Ctot</text>
<text x="180" y="500">flag</text>
<text x="220" y="500">byte</text>
<text x="8" y="516">-</text>
<text x="24" y="516">W</text>
<text x="40" y="516">:</text>
<text x="84" y="516">Composed</text>
<text x="140" y="516">Ctot</text>
<text x="188" y="516">length</text>
<text x="228" y="516">(1</text>
<text x="260" y="516">word</text>
<text x="320" y="516">excluding</text>
<text x="392" y="516">header)</text>
<text x="8" y="532">-</text>
<text x="24" y="532">X</text>
<text x="40" y="532">:</text>
<text x="88" y="532">Parameter</text>
<text x="144" y="532">ID,</text>
<text x="200" y="532">parameter</text>
<text x="256" y="532">134</text>
<text x="312" y="532">(Composed</text>
<text x="376" y="532">Dtot)</text>
<text x="8" y="548">-</text>
<text x="24" y="548">Y</text>
<text x="40" y="548">:</text>
<text x="84" y="548">Composed</text>
<text x="140" y="548">Dtot</text>
<text x="180" y="548">flag</text>
<text x="220" y="548">byte</text>
<text x="8" y="564">-</text>
<text x="24" y="564">Z</text>
<text x="40" y="564">:</text>
<text x="84" y="564">Composed</text>
<text x="140" y="564">Dtot</text>
<text x="188" y="564">length</text>
<text x="228" y="564">(1</text>
<text x="260" y="564">word</text>
<text x="320" y="564">excluding</text>
<text x="392" y="564">header)</text>
<text x="8" y="580">-</text>
<text x="32" y="580">AA:</text>
<text x="88" y="580">Parameter</text>
<text x="144" y="580">ID,</text>
<text x="200" y="580">parameter</text>
<text x="256" y="580">135</text>
<text x="312" y="580">(Composed</text>
<text x="380" y="580">Csum).</text>
<text x="8" y="596">-</text>
<text x="32" y="596">BB:</text>
<text x="84" y="596">Composed</text>
<text x="140" y="596">Csum</text>
<text x="180" y="596">flag</text>
<text x="220" y="596">byte</text>
<text x="8" y="612">-</text>
<text x="32" y="612">CC:</text>
<text x="84" y="612">Composed</text>
<text x="140" y="612">Csum</text>
<text x="188" y="612">length</text>
<text x="228" y="612">(1</text>
<text x="260" y="612">word</text>
<text x="320" y="612">excluding</text>
<text x="392" y="612">header)</text>
<text x="8" y="628">-</text>
<text x="32" y="628">DD:</text>
<text x="88" y="628">Parameter</text>
<text x="144" y="628">ID,</text>
<text x="200" y="628">parameter</text>
<text x="256" y="628">136</text>
<text x="312" y="628">(Composed</text>
<text x="380" y="628">Dsum).</text>
<text x="8" y="644">-</text>
<text x="32" y="644">EE:</text>
<text x="84" y="644">Composed</text>
<text x="140" y="644">Dsum</text>
<text x="180" y="644">flag</text>
<text x="220" y="644">byte</text>
<text x="8" y="660">-</text>
<text x="32" y="660">FF:</text>
<text x="84" y="660">Composed</text>
<text x="140" y="660">Dsum</text>
<text x="188" y="660">length</text>
<text x="228" y="660">(1</text>
<text x="260" y="660">word</text>
<text x="320" y="660">excluding</text>
<text x="392" y="660">header)</text>
<text x="20" y="692">Word</text>
<text x="56" y="692">20:</text>
<text x="136" y="692">Controlled-Load</text>
<text x="244" y="692">parameters</text>
<text x="8" y="708">-</text>
<text x="32" y="708">GG:</text>
<text x="96" y="708">Per-Service</text>
<text x="176" y="708">header,</text>
<text x="240" y="708">service</text>
<text x="300" y="708">number</text>
<text x="336" y="708">5</text>
<text x="416" y="708">(Controlled-Load)</text>
<text x="8" y="724">-</text>
<text x="32" y="724">HH:</text>
<text x="72" y="724">Break</text>
<text x="112" y="724">bit</text>
<text x="8" y="740">-</text>
<text x="32" y="740">II:</text>
<text x="76" y="740">Length</text>
<text x="116" y="740">of</text>
<text x="192" y="740">controlled-load</text>
<text x="276" y="740">data</text>
<text x="308" y="740">(0</text>
<text x="344" y="740">words</text>
<text x="408" y="740">excluding</text>
<text x="480" y="740">header)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center" name="syntax&quot;artwork-svg-options=&quot;--spaces=0"><![CDATA[
Word 1: Message Header:
- A : Message header and version number
- B : Message length (19 words excluding header)

Words 2-7: Default general characterization parameters
- C : Per-Service header, service number 1 
      (Default General Parameters)
- D : Global Break bit (NON_IS_HOP general parameter 2) (marked x)
- E : Length of General Parameters data block (8 words)
- F : Parameter ID, parameter 4 (NUMBER_OF_IS_HOPS general parameter)
- G : Parameter 4 flag byte
- H : Parameter 4 length (1 word excluding header)
- I : Parameter ID, parameter 6 
      (AVAILABLE_PATH_BANDWIDTH general parameter)
- J : Parameter 6 flag byte
- K : Parameter 6 length (1 word excluding header)
- L : Parameter ID, parameter 8 
      (MINIMUM_PATH_LATENCY general parameter)
- M : Parameter 8 flag byte
- N : Parameter 8 length (1 word excluding header)
- O : Parameter ID, parameter 10 (PATH_MTU general parameter)
- P : Parameter 10 flag byte
- Q : Parameter 10 length (1 word excluding header)

Words 11-19: Guaranteed service parameters
- R : Per-Service header, service number 2 (Guaranteed)
- S : Break bit
- T : Length of per-service data (8 words excluding header)
- U : Parameter ID, parameter 133 (Composed Ctot)
- V : Composed Ctot flag byte
- W : Composed Ctot length (1 word excluding header)
- X : Parameter ID, parameter 134 (Composed Dtot)
- Y : Composed Dtot flag byte
- Z : Composed Dtot length (1 word excluding header)
- AA: Parameter ID, parameter 135 (Composed Csum).
- BB: Composed Csum flag byte
- CC: Composed Csum length (1 word excluding header)
- DD: Parameter ID, parameter 136 (Composed Dsum).
- EE: Composed Dsum flag byte
- FF: Composed Dsum length (1 word excluding header)

Word 20: Controlled-Load parameters
- GG: Per-Service header, service number 5 (Controlled-Load)
- HH: Break bit
- II: Length of controlled-load data (0 words excluding header)
]]></artwork></artset></figure>

</section>
<section anchor="operations-at-the-source"><name>Operations at the source</name>

<t>The source is the end host willing to send traffic to a destination in a data flow with a delay guarantee.
To do so, it sends a RSVP Path message to the destination. 
This RSVP Path message encodes the information listed in the reservation request described in <xref target="exPathSetup"/> according to the encoding method described in <xref target="modRSVP"/>. 
The Path message triggers a RSVP Resv message that answers to the according delay-bound path request.
At the reception of a Resv message replying to a pending request, the source waits for a bit in order to give time to other potential answers to arrive.
If a single answer is received, then the source starts using the path received in the EXPLICIT_ROUTE object of the Resv message.
If multiple answers have been received, then the source chooses a path, and sends a RSVP PathTear message to the paths that have not been selected.</t>

</section>
<section anchor="opInt"><name>Operations at intermediate nodes</name>

<t>At the reception of a Path message carrying an end-to-end delay request, it first checks that the message is not duplicated by looking at its ID.
Then, it looks at both the Delay and Capacity values, and determines whether it can accept the request or not.</t>

<t>If it can accept the request, then the intermediate node relays the RSVP Path message to the destination.
Before relaying the message, it substracts the maximum delay he commits to respect from the end-to-end delay, and adds its identifier in the ROUTE_RECORD object.
If it knows several paths to the destination, it can duplicate the message and relay it on the appropriate egress paths.</t>

<t>At the reception of a Resv message carrying a reply to an end-to-end delay request, it first checks that the message is not duplicated.
Then, it verifies that it has a pending temporary capacity reservation associated with the reply for one of its queues.
If it is the case, then it acknowledges the reservation, and allocates the dedicated capacity to the data flow.
It check the next hop for the Resv message in the EXPLICIT_ROUTE object carried by the message, and relays it to the next node.
If several Resv messages for the same data flow arrive at the intermediate node, the intermediate node relays all of them, as they might refer to different paths in the network from which the source end host needs to choose from.
Temporary reservations following the reception of a Path message that are not confirmed by a Resv message are cancelled by the reception of a PathErr message for this flow or by the expiration of a timer set to one RSVP timeout period.
Confirmed reservations may be teared down by a PathTear message or by the expiration of a cleanout timer set to the value of the RSVP cleanout period.</t>

</section>
<section anchor="opDst"><name>Operations at the destination</name>

<t>The destination node is in charge of building the RSVP Resv message from the RSVP path message it received from the source.</t>

<t>In case several Path messages have been sent or duplicated along the path to the destination, the destination can behave in two ways: either it chooses which path is the most appropriate from a set of Path message containing the same originating end-to-end delay request, or it replies to each request message and lets the source choose which path it will use.</t>

<t>If the destination is responsible for the choice of the path, then when it receives a Path message carrying an end-to-end delay request, it waits for a bit in order to give time to potential Path messages associated to the same request to arrive.
If several Path messages have been received, the destination chooses one of the Path message (for instance the message carrying the highest Delay value, or the one carrying the shortest path in terms of hops), and forges a RSVP Resv message to answer this request.
This Resv message carries the requested maximum end-to-end delay, the final end-to-end delay commitment received in the Path message, and a Route list containing the Record-route list received in the Path message to which the destination's ID is added at the end.
It also sends a set of PathErr messages for the Path messages that have not been selected to withdraw the reservation at the involved nodes.</t>

<t>If the destination lets the source choose, then, for each Path message carrying an end-to-end delay request object, the destination creates a Resv message in which the requested maximum end-to-end delay and the final end-to-end delay commitment are set to the values received in the Path message, and in which the Route list is set to the Record-route list received in the request message, with the destination's identifier added at the end of the list.</t>

<t>Following <xref target="RFC3209"/>, if the Path message received by the destination contains a ROUTE_RECORD object, then the destination adds an EXPLICIT_ROUTE object to the Resv message giving the list of nodes that have been crossed by the Path message. 
This EXPLICIT_ROUTE object tells intermediate nodes how they need to forward the Resv message.</t>

</section>
</section>
<section anchor="positioning-in-the-dataplane-enhancement-taxonomy"><name>Positioning in the Dataplane Enhancement Taxonomy</name>

<t><xref target="I-D.joung-detnet-taxonomy-dataplane"/> presents a taxonomy of dataplane enhancements proposed in the Detnet working group. The mechanism presented in this document targets the same goals as those proposals. Here is how this work can be positionned.</t>

<t><list style="symbols">
  <t><strong>Per Hop Dominant Factor for Latency Bound: Category 3.</strong> In category 3, the per hop dominant factor is the sum of Max Burst Sizes/Capacity: the mechanism presented in this draft assumes strict control of the maximum capacity for flows it deals with, and focuses on the repect of a maximum latency bound in this regard.</t>
  <t><strong>Periodicity: Non-periodic.</strong> The proposed mechanism does not assume packets are transmitted in a periodic pattern.</t>
  <t><strong>Network Synchronization: Asynchronous.</strong> No synchronization between nodes is assumed in the presented mechanism.</t>
  <t><strong>Traffic Granularity: Flow level.</strong> In the mechanism presented in this document, each packet is controlled based on its specific flow.</t>
  <t><strong>Work Conserving: Yes.</strong> Queues in equipments are served in a round robin fashion, whatever their length.</t>
  <t><strong>Target Transmission Time: In-time.</strong> The mechanism presented in this document aims at respecting a bounded end to end delay, whatever the jitter.</t>
  <t><strong>Service Order: Rate-based.</strong> In the mechanism described in this document, packets belonging to a flow are assigned to queues depending on the per hop delay bound that the node has commited to respect for packets belonging to this specific flow.</t>
</list></t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>A detailled analysis of the security aspects of the current draft will be presented in a future version of the draft.
Yet, the current document is not adding additional threats to the ones identified for RSVP and presented in Section 2.8 of <xref target="RFC2205"/>.</t>

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

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


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



<reference anchor="RFC2205">
  <front>
    <title>Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification</title>
    <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
    <author fullname="L. Zhang" initials="L." surname="Zhang"/>
    <author fullname="S. Berson" initials="S." surname="Berson"/>
    <author fullname="S. Herzog" initials="S." surname="Herzog"/>
    <author fullname="S. Jamin" initials="S." surname="Jamin"/>
    <date month="September" year="1997"/>
    <abstract>
      <t>This memo describes version 1 of RSVP, a resource reservation setup protocol designed for an integrated services Internet. RSVP provides receiver-initiated setup of resource reservations for multicast or unicast data flows, with good scaling and robustness properties. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2205"/>
  <seriesInfo name="DOI" value="10.17487/RFC2205"/>
</reference>

<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="RFC2215">
  <front>
    <title>General Characterization Parameters for Integrated Service Network Elements</title>
    <author fullname="S. Shenker" initials="S." surname="Shenker"/>
    <author fullname="J. Wroclawski" initials="J." surname="Wroclawski"/>
    <date month="September" year="1997"/>
    <abstract>
      <t>This memo defines a set of general control and characterization parameters for network elements supporting the IETF integrated services QoS control framework. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2215"/>
  <seriesInfo name="DOI" value="10.17487/RFC2215"/>
</reference>

<reference anchor="RFC8939">
  <front>
    <title>Deterministic Networking (DetNet) Data Plane: IP</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="D. Fedyk" initials="D." surname="Fedyk"/>
    <author fullname="S. Bryant" initials="S." surname="Bryant"/>
    <date month="November" year="2020"/>
    <abstract>
      <t>This document specifies the Deterministic Networking (DetNet) data plane operation for IP hosts and routers that provide DetNet service to IP-encapsulated data. No DetNet-specific encapsulation is defined to support IP flows; instead, the existing IP-layer and higher-layer protocol header information is used to support flow identification and DetNet service delivery. This document builds on the DetNet architecture (RFC 8655) and data plane framework (RFC 8938).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8939"/>
  <seriesInfo name="DOI" value="10.17487/RFC8939"/>
</reference>

<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="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.joung-detnet-taxonomy-dataplane">
   <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="25" month="February" year="2024"/>
      <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 briefly mentioned.

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


<reference anchor="LeBoudecTheory" >
  <front>
    <title>A Theory of Deterministic Queuing Systems for the Internet</title>
    <author initials="J." surname="Le Boudec" fullname="Jean-Yves Le Boudec">
      <organization></organization>
    </author>
    <author initials="P." surname="Thiran" fullname="Patrick Thiran">
      <organization></organization>
    </author>
    <date year="2001"/>
  </front>
</reference>


    </references>

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



<reference anchor="IEEE8023">
  <front>
    <title>IEEE Standard for Ethernet</title>
    <author>
      <organization/>
    </author>
    <date month="July" year="2022"/>
  </front>
  <seriesInfo name="DOI" value="10.1109/ieeestd.2022.9844436"/>
  <seriesInfo name="ISBN" value="[&quot;9781504487252&quot;]"/>
<refcontent>IEEE</refcontent></reference>

<reference anchor="RFC8578">
  <front>
    <title>Deterministic Networking Use Cases</title>
    <author fullname="E. Grossman" initials="E." role="editor" surname="Grossman"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This document presents use cases for diverse industries that have in common a need for "deterministic flows". "Deterministic" in this context means that such flows provide guaranteed bandwidth, bounded latency, and other properties germane to the transport of time-sensitive data. These use cases differ notably in their network topologies and specific desired behavior, providing as a group broad industry context for Deterministic Networking (DetNet). For each use case, this document will identify the use case, identify representative solutions used today, and describe potential improvements that DetNet can enable.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8578"/>
  <seriesInfo name="DOI" value="10.17487/RFC8578"/>
</reference>


<reference anchor="TS23501" target="https://www.3gpp.org/ftp/Specs/archive/23_series/23.501/23501-i00.zip">
  <front>
    <title>System architecture for the 5G System (5GS)</title>
    <author >
      <organization>3rd Generation Partnership Project</organization>
    </author>
    <author initials="D." surname="Chandramouli" fullname="Devaki Chandramouli">
      <organization>Nokia Germany</organization>
    </author>
    <date />
  </front>
</reference>


    </references>


<?line 563?>

<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>Thanks to Shaofu Peng for his remarks on the previous versions of this draft, that contributed in enhancing this document.</t>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="P." surname="Medagliani" fullname="Paolo Medagliani">
      <organization abbrev="Huawei">Huawei Technologies France S.A.S.U.</organization>
      <address>
        <email>paolo.medagliani@huawei.com</email>
      </address>
    </contact>
    <contact initials="S." surname="Martin" fullname="Sebastien Martin">
      <organization abbrev="Huawei">Huawei Technologies France S.A.S.U.</organization>
      <address>
        <email>sebastien.martin@huawei.com</email>
      </address>
    </contact>
    <contact initials="A." surname="Bouillard" fullname="Anne Bouillard">
      <organization abbrev="ENS - PSL">École Normale Supérieure - PSL</organization>
      <address>
        <email>anne.bouillard@ens.fr</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
BY/4ajJR2OIBXhfrUFsXXjSN/79qT9UIUZkAAA==

-->

</rfc>

