<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.26 (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-01" 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>


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


<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 reorderings 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 in a given node can be expressed as:</t>

<t>T = T0 + B / 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>B 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 equipments 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 Mbps), 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 2Mbps 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="148" y="84">-M.D</text>
<text x="180" y="84">20</text>
<text x="204" y="84">ms</text>
<text x="340" y="84">-M.D</text>
<text x="372" y="84">40</text>
<text x="396" y="84">ms</text>
<text x="144" y="100">-Cp</text>
<text x="168" y="100">5</text>
<text x="196" y="100">Mbps</text>
<text x="336" y="100">-Cp</text>
<text x="360" y="100">7</text>
<text x="388" y="100">Mbps</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="148" y="148">-M.D</text>
<text x="184" y="148">200</text>
<text x="212" y="148">ms</text>
<text x="340" y="148">-M.D</text>
<text x="376" y="148">300</text>
<text x="404" y="148">ms</text>
<text x="144" y="164">-Cp</text>
<text x="172" y="164">50</text>
<text x="204" y="164">Mbps</text>
<text x="336" y="164">-Cp</text>
<text x="364" y="164">60</text>
<text x="396" y="164">Mbps</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="152" y="212">-Best</text>
<text x="196" y="212">eff.</text>
<text x="344" 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="148" y="356">-M.D</text>
<text x="180" y="356">50</text>
<text x="204" y="356">ms</text>
<text x="340" y="356">-M.D</text>
<text x="372" y="356">30</text>
<text x="396" y="356">ms</text>
<text x="144" y="372">-Cp</text>
<text x="168" y="372">9</text>
<text x="196" y="372">Mbps</text>
<text x="336" y="372">-Cp</text>
<text x="360" y="372">6</text>
<text x="388" y="372">Mbps</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="148" y="420">-M.D</text>
<text x="184" y="420">200</text>
<text x="212" y="420">ms</text>
<text x="340" y="420">-M.D</text>
<text x="376" y="420">400</text>
<text x="404" y="420">ms</text>
<text x="144" y="436">-Cp</text>
<text x="172" y="436">50</text>
<text x="204" y="436">Mbps</text>
<text x="336" y="436">-Cp</text>
<text x="364" y="436">70</text>
<text x="396" y="436">Mbps</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="152" y="484">-Best</text>
<text x="196" y="484">eff.</text>
<text x="344" 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 Mbps   |      |   -Cp 7 Mbps   |
            |                |      |                |
            | - Queue Q2     +------+ - Queue Q2     |
           /|   -M.D 200 ms  |      |   -M.D 300 ms  |\
          / |   -Cp 50 Mbps  |      |   -Cp 60 Mbps  | \
         /  |                |      |                |  \
        /   | - 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 Mbps   |      |   -Cp 6 Mbps   | /
           \|                |      |                |/
            | - Queue Q2     +------+ - Queue Q2     |
            |   -M.D 200 ms  |      |   -M.D 400 ms  |
            |   -Cp 50 Mbps  |      |   -Cp 70 Mbps  |
            |                |      |                |
            | - 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; Bw = 2Mbps; Record-route = [A]].
It contains six (6) parameters of interest for the reservation procedure:</t>

<t><list style="symbols">
  <t>an nonce ID that identifies the request;</t>
  <t>a 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 to be respected on the path from the source to the destination;</t>
  <t>an end-to-end delay commitment which represents the sum of the maximum delays nodes that the message traversed commit to respect;</t>
  <t>a capacity which is the upper bound of the capacity required to serve the data flow on the path;</t>
  <t>a recorded 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; Bw = 2Mbps; Record-route = [A, B]].
Then it relays the packet to D and E.</t>

<t>At the same time, C procedes 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; Bw = 2Mbps; 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; Bw = 2Mbps; Record-route = [A, B]] and Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; Bw = 2Mbps; 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; Bw = 2Mbps; 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 can not 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 refrain 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; Bw = 2Mbps; Record-route = [A, B]] and Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; Bw = 2Mbps; 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; Bw = 2Mbps; Record-route = [A, B, E]] and Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 80ms; Bw = 2Mbps; 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; Bw = 2Mbps; Record-route = [A, B, D]];</t>
  <t>Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 50ms; Bw = 2Mbps; Record-route = [A, B, E]];</t>
  <t>Req.[ID = Nonce; Flow-ID = f-ID; max-E2E-delay = 85ms; E2E-delay-commit. = 80ms; Bw = 2Mbps; 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; Bw = 2Mbps; 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 behaviour 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 teh Resv message.</t>

</section>
</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'>



<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="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'>



<reference anchor='IEEE8023'>
  <front>
    <title>IEEE Standard for Ethernet</title>
    <author>
      <organization/>
    </author>
    <date month='July' year='2022'/>
  </front>
  <seriesInfo name='IEEE' value='standard'/>
  <seriesInfo name='DOI' value='10.1109/ieeestd.2022.9844436'/>
</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>


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

<t>TODO acknowledge.</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="Huawei">Huawei Technologies France S.A.S.U.</organization>
      <address>
        <email>anne.bouillard@huawei.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
kwAA

-->

</rfc>

