<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2212 SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2212.xml">
<!ENTITY RFC3393 SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3393.xml">
<!ENTITY RFC8174 SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8655 SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8655.xml">
<!ENTITY RFC8938 SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8938.xml">
<!ENTITY I-D.liu-detnet-large-scale-requirements SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml-ids/reference.I-D.liu-detnet-large-scale-requirements.xml">
<!ENTITY I-D.ietf-detnet-bounded-latency SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml-ids/reference.I-D.ietf-detnet-bounded-latency.xml">
<!ENTITY I-D.yizhou-detnet-ipv6-options-for-cqf-variant SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml-ids/reference.I-D.yizhou-detnet-ipv6-options-for-cqf-variant.xml">
<!ENTITY I-D.joung-detnet-taxonomy-dataplane SYSTEM 
  "http://xml.resource.org/public/rfc/bibxml-ids/reference.I-D.joung-detnet-taxonomy-dataplane.xml">
]>

<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <!-- used by XSLT processors -->

<!-- OPTIONS, known as processing instructions (PIs) go here. -->
<!-- For a complete list and description of PIs,
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable PIs that most I-Ds might want to use. -->
<?rfc strict="yes" ?> <!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC): -->
<?rfc toc="yes"?> <!-- generate a ToC -->
<?rfc tocdepth="3"?> <!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references: -->
<?rfc symrefs="yes"?> <!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?> <!-- sort the reference entries alphabetically -->
<!-- control vertical white space: 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?> <!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?> <!-- keep one blank line between list items -->
<!-- end of popular PIs -->

<rfc category="std" 
     docName="draft-joung-detnet-stateless-fair-queuing-02" 
     ipr="trust200902">

<front>
 <title abbrev="C-SCORE">
       Latency Guarantee with Stateless Fair Queuing
 </title>

 <author fullname="Jinoo Joung" initials="J." surname="Joung">
  <organization>Sangmyung University</organization>
  <address>
   <!-- <postal> </postal> --> 
   <!-- <phone></phone>  -->
   <!-- <facsimile/> -->
   <email>jjoung@smu.ac.kr</email>
   <!-- <uri/> -->
  </address>
 </author>

 <author fullname="Jeong-dong Ryoo" initials="J" surname="Ryoo">
  <organization>ETRI</organization>
  <address>
    <email>ryoo@etri.re.kr</email>
  </address>
 </author>

 <author fullname="Taesik Cheung" initials="T" surname="Cheung">
   <organization>ETRI</organization>
   <address>
    <email>cts@etri.re.kr</email>
    </address>
 </author>

<author fullname="Yizhou Li" initials="Y" surname="Li">
   <organization>Huawei</organization>
   <address>
    <email>liyizhou@huawei.com</email>
    </address>
 </author>

 <author fullname="Peng Liu" initials="P" surname="Liu">
   <organization>China Mobile</organization>
   <address>
    <email>liupengyjy@chinamobile.com</email>
    </address>
 </author>



 <date />
<!--
 <date day="22" month="May" year="2019" />
-->

 <area>Routing Area</area>
 <workgroup>DetNet Working Group</workgroup>

 <keyword>DetNet</keyword> 
 <keyword>Asynchronous DetNet</keyword> 
 <keyword>Fair Queuing</keyword> 

 <abstract>
   <t>
   This document specifies the framework and the operational procedure for deterministic networking 
   with work conserving packet schedulers that guarantee end-to-end latency bounds to flows.
   Schedulers in core nodes of the network do not need to maintain flow states. 
   Instead, the entrance node of a flow marks an ideal service completion time, called Finish Time (FT), of a packet in the packet header.
   The subsequent core nodes update FT by adding a delay factor, which is a function of the flow and upstream nodes.
   The packets in the queue are served in the ascending order of the FT. This technique is called Fair Queuing (FQ).
   The result is that flows are isolated from each other almost perfectly. 
   The latency bound of a flow depends only on the flow's intrinsic parameters, 
   except the link capacities and the maximum packet lengths among other flows sharing each output link with the flow.
   </t>
 </abstract>
</front>

<middle>
 <section title="Introduction">
   <t>
   There are emerging applications that require both latency and jitter bounds in large-scale networks. 
   One of the keys to the latency and jitter performance of a network is the packet scheduling technique. 
   Our objective is to devise a scheduler that can completely isolate a flow from other flows sharing a link. 
   An ideal flow isolation would be achieved, if an imaginary link is dedicated solely to the flow, 
   with the capacity equal to the allocated service rate to the flow. 
   In this case the latency upper bound is a function of the parameters, which depend only on the flow.
   </t>
   <t>
   In large-scale networks, end-nodes join and leave, 
   and a large number of flows are dynamically generated and terminated. 
   Achieving satisfactory deterministic performance in such environments 
   would be challenging. 
   The current Internet, which has adopted the DiffServ architecture, 
   has the problem of the burst accumulation and the cyclic dependency, 
   which is mainly due to FIFO queuing and strict priority scheduling. 
   Cyclic dependency is defined as a situation wherein 
   the graph of interference between flow paths has cycles 
   <xref target="THOMAS"/>.
   The existence of such cyclic dependencies makes the proof of determinism
   a much more challenging issue and can lead to system instability,
   that is, unbounded delays 
   <xref target="ANDREWS"/><xref target="BOUILLARD"/>. 
   </t>
   <t>
   A class of schedulers called Fair Queuing (FQ) limits interference between flows to the degree of maximum packet size. 
   Packetized generalized processor sharing (PGPS) and weighted fair queuing (WFQ) are representative examples of FQ <xref target="PAREKH"/>. 
   In FQ, the ideal service completion time, called Finish Time (FT), of a packet is obtained from an imaginary system 
   which can provide the ideal flow isolation. 
   <!-- The FT is recorded in the packet.--> 
   Packets in the buffer are served in an increasing order of the FT. 
   <!-- Then the packets are served approximately in the order of the FT. -->
   When this technique is applied, the end-to-end (E2E) latency bound of a flow is similar to that in the ideally isolated system. 
   However, the FT of the previous packet within a flow has to be remembered 
   for the calculation of the current packet's FT. This information can be seen as the flow state. 
   The complexity of managing such information for a large number of flows can be a burden, 
   so the FQ has not been usually adopted in practice.
   </t>
   <t>
   This document specifies a framework for approximating the FQ scheduler in core nodes. 
   It also specifies the operational procedure based on this framework.
   The entrance node in a network generates FT for a packet and records it in the packet. 
   A core node, based on these records, updates FT by adding a delay factor that is a function of parameters of nodes and the flow. 
   The proposed framework is called work conserving stateless core fair queuing (C-SCORE) <xref target="C-SCORE"/>. 
   C-SCORE is work conserving and has the property that, for a certain choice of the delay factor, 
   the expression for E2E latency bound can be found. 
   This E2E latency bound function is the same as that of a network with stateful FQ schedulers in all the nodes. 
   </t>
   <t>
   The key component of the C-SCORE is the packet state that is carried as metadata. 
   The C-SCORE does not need to maintain flow states at core nodes, 
   yet it works as one of the FQ schedulers, which is known to provide the best flow isolation performance. 
   The metadata to be carried in the packet header is simple and can be updated 
   during the stay in the queue or before joining the queue.
   </t>
   <t>
   In this document, strict time-synchronization among network nodes and slot scheduling are avoided.
   These are not easily achievable in large networks, especially 
   across multiple Deterministic Networking (DetNet) domains. 
   The asynchronous solution suggested in this document can provide satisfactory 
   latency bounds without complex computation and 
   configuration for network planning, and without hardware support usually necessary for 
   time synchronization.
   </t>
 </section>

 <section title="Terminology">
  <section title="Terms Used in This Document">
   <t>
   </t>
  </section>
  <section title="Abbreviations">
   <t>
   </t>
  </section>
 </section>

 <section title="Conventions Used in This Document">
   <t>
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
   NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
   "MAY", and "OPTIONAL" in this document are to be interpreted as
   described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
   when, and only when, they appear in all capitals, as shown here.
   </t>
 </section>

 <section anchor="FQ" title="Fair Queuing Schedulers">
   <t>
   Generalized processor sharing (GPS) suggested a paradigm for a fair service for flows as fluid. 
   Packetized GPS (PGPS), which implemented GPS in the realistic packet-based environment, 
   played a pioneering role in this type of packet-based schedulers <xref target="PAREKH"/>. 
   PGPS determines the service order of packets in ascending order of the FT derived by the following equation.  
   </t>
   <figure>
     <artwork align="center"><![CDATA[
F(p) = max{F(p-1), V(A(p))}+L(p)/r,           (1)
      ]]></artwork>
   </figure>
   <t>
   where p and p-1 are the pth and (p-1)th packets of a flow, 
   F(p) is the FT, A(p) is the arrival time, L(p) is the length of the packet p, 
   and r is the service rate allocated to the flow. 
   Note that the index for the flow i is omitted. 
   V(t) is called the virtual time function <xref target="PAREKH"/> or the system potential <xref target="STILIADIS-RPS"/> 
   and is a value representing the current system progress at time t. 
   If the backlogged flows almost fill the link capacity, 
   then the system slowly progresses in terms of a flow's view, and the virtual time increases slowly.  
   If there is only a handful of backlogged flows, then the virtual time increases with a higher rate.
   This behavior of the virtual time function prevents an unfair situation in which flows that entered late have relatively small FTs 
   thus receive services earlier for a considerable period of time, compared to existing flows.
   </t>
   <t>
   F(p) represents the time that an ideal fluid system would complete 
   its service of packet p. 
   In a real packetized FQ system, the packets are served in the increasing order of the FT. 
   The FT can be calculated at the moment the packet arrives in the node, 
   and the value of FT is attached to the packet before the packet is stored in the buffer.
   In general, there is a queue for each flow, 
   the queues are managed by FIFO manner, and the scheduler serves the queue having the HoQ packet with 
   the smallest FT. Alternatively, it is possible to put all packets in one queue 
   and sort them, as packets are enqueued or dequeued, according to the value of the FT. 
   This implementation requires a priority queue. 
   The point of (1) is that, in the worst case, 
   when all flows are active and the link is fully used, 
   a flow is served at an interval of L(p)/r. 
   At the same time, by using the work conserving scheduler, 
   any excessive link resources are shared among the flows. 
   How fairly it is shared is the main difference between various FQ schedulers.
   </t>
   <t>
   In order to obtain F(p) in (1), the FT of the previous packet of the flow, F(p-1), must be remembered. 
   When a packet is received, it is necessary to find out which flow it belongs to 
   and find out the FT of the latest packet of the corresponding flow. 
   F(p-1) of this latest packet is a value representative of the 'flow state'. 
   The fact that such state information must be memorized and read means a considerable complexity 
   at a core node managing millions of flows. 
   This is the main reason why such FQ schedulers are not actually used on the Internet. 
   In this document, we pay attention to the fact that the fair service time interval information 
   between packets is already included in the FTs of the entrance node of a flow. 
   Instead of deriving a new FT at each core node, we will specify a method of deriving the FT 
   at downstream nodes by using the initial FT calculated at the entrance node.
   </t>
   <t>
   On the other hand, calculating V(t) also involves the complexity of calculating 
   the sum of r by tracking the flows currently being serviced in real time. 
   It is a complex calculation. Therefore, instead of calculating V(t) accurately, methods for estimating it in a simple way have been suggested. 
   Among them, Virtual clock (VC) <xref target="ZHANG"/> uses the current time t instead of V(t) to determine the FT. 
   Self-clocked fair queuing <xref target="GOLESTANI"/> uses the FT of the recently serviced packet of another flow instead of V(t).
   </t>
   <t>
   Stiliadis showed that this series of FQ schedulers can belong to the Packetized Rate Proportional Servers (PRPS) <xref target="STILIADIS-RPS"/>. 
   For example, PGPS and VC are PRPS, while self-clocked fair queuing is not. 
   It was proved that a network with all the nodes having one of these PRPSs guarantee the E2E latency for flow. 
   Moreover, any PRPS scheduler yields the same E2E latency bound <xref target="STILIADIS-RPS"/>.
   </t>
 </section>
   
 <section anchor="Assumptions" title="Assumptions">
   <t>
   In this document, we assume there are only two classes of traffic.
   The high priority traffic requires guarantee on latency upper bounds.
   All the other traffic is considered to be the low priority traffic, 
   and be completely preempted by the high priority traffic. 
   High priority traffic is our only concern.
   </t>
   <t>
   All the flows conform to their traffic specification (TSpec) parameters. In other words, with the maximum burst size Bi and the arrival rate ai, 
   the accumulated arrival from flow i in any arbitrary time interval [t1, t2], t1 &lt; t2, does not exceed Bi+(t2-t1)ai.
   An actual allocated service rate to a flow, ri, can be larger than or equal to the arrival rate of the flow.
   As it will be shown in (5) that, by adjusting the service rate to a flow, the E2E latency bound of the flow can be adjusted. 
   Note that ri is used interchangeably with the symbol r to denote the service rate of a flow. 
   Total allocated service rate to all the flows in a node does not exceed the link capacity of the node.
   These assumptions make the resource reservation and the admission control 
   mandatory. 
   </t>
   <t>
   A node, or equivalently a server, means an output port module of a switching device.
   </t>
   <t>
   The entrance node for a flow is the node located at the edge of a network, from which the flow enters into the network. 
   A core node for a flow is a node in the network, which is traversed by the flow and is not the entrance node.
   Note that a single node can be both an entrance node to a flow and a core node for another flow.
   </t>
   <t>
   A packet is considered arrived or serviced; when its last bit has arrived or left the node, respectively.
   </t>
   <t>
   Propagation delays are neglected for the simplicity of representation. 
   However, it can be easily incorporated into the equations presented in this document, if necessary.
   This issue will be covered in <xref target="td"/>.
   </t>
 </section>
 
 <section title="Work Conserving Stateless Core Fair Queuing (C-SCORE)">
    <section title="Framework">
   <t>
   FQ schedulers utilize the concept of FT 
   that is used as the service order assigned to a packet.  
   The packet with the minimum FT in a buffer is served first.  
   </t>
   <t>
   As an example, the VC scheduler <xref target="ZHANG"/> defines 
   the FT to be
     <figure>
     <artwork align="center"><![CDATA[
F(p) = max{F(p-1), A(p)} + L(p)/r,          (2)
      ]]></artwork>
   </figure>
   where (p-1) and p are consecutive packets of the flow under observation, 
   A(p) is the arrival time of p, L(p) is the length of p, and 
   r is the flow service rate. The flow index is omitted.
   </t>
   <t>
   The key idea of the FQ is to calculate the service completion times of packets 
   in an imaginary ideal fluid service model and use them as the service 
   order in the real packet-based scheduler.
   </t>
   <t>
   While having the excellent flow isolation property, 
   the FQ needs to maintain the flow state, F(p-1). 
   For every arriving packet, the flow it belongs to has to be identified 
   and its previous packet's FT should be extracted.  
   As the packet departs, the flow state, F(p), has to be updated as well.
   </t>
   <t>
   We consider a framework for constructing FTs for packets at core nodes without flow states.  
   In a core node, the following conditions on FTs SHOULD be met.
   </t>
   <t>
   <list style="hanging" hangIndent="5">
   <t hangText="C1)">The 'fair distance' of consecutive 
                     packets of a flow generated at the entrance node has to be kept in the core nodes.  
					 That is; Fh(p) >= Fh(p-1) + L(p)/r, 
                     where Fh(p) is the F(p) at core node h.  </t>
   <t hangText="C2)">The order of FTs and the actual service order, 
                     within a flow, have to be kept.  
                     That is; Fh(p) > Fh(p-1) and Ch(p) > Ch(p-1), 
                     where Ch(p) is the actual service completion time of 
                     packet p at node h. </t>
   <t hangText="C3)">The time lapse at each hop has to be reflected.  
                     That is; Fh(p) >= F(h-1)(p), where F(h-1)(p) is 
                     the FT of p at the node h-1, the upstream node of h. </t>
   </list>
   </t>
   <t>
   In essence, (2) has to be approximated in core nodes.  
   There can be many possible solutions to meet these conditions.  
   We describe a generic framework with requirements for constructing FTs 
   in core nodes, which are necessary to meet the conditions, without flow state, in the following.
   </t>
   <t>
   Definition: An active period for a flow is a maximal interval of time during a node busy period, 
   over which the FT of the most recently arrived packet of the flow is greater than the virtual time 
   (equivalently the system potential). Any other period is an inactive period for the flow.
   </t>
  <!-- <t>
   Definition 2: A node busy period is a maximal interval between consecutive node idle periods. 
   During a node idle period, the node has no packet to send.
   </t> -->
   <t>
   Requirement 1: In the entrance node, it is REQUIRED to obtain the FTs with the following equation.  
   0 denotes the entrance node of the flow under observation. 
   </t>
   <t>
   <figure>
     <artwork align="center"><![CDATA[
F0(p) = max{F0(p-1), A0(p)}+L(p)/r.                 
      ]]></artwork>
   </figure>
   </t>
   <t>
   Note that if the FTs are constructed according to the above equation, the fair distance of consecutive packets is maintained.
   </t>
   <t>
   Requirement 2: In a core node h, it is REQUIRED to increase the FT of a packet 
   by an amount, d(h-1)(p), that depends on the previous node and the packet.  
   </t>
   <t>
   <figure>
     <artwork align="center"><![CDATA[
Fh(p) = F(h-1)(p) + d(h-1)(p).                          
      ]]></artwork>
   </figure>
   </t>
   <t>
   Requirement 3: It is REQUIRED that dh(p) is a non-decreasing function of p, 
   within a flow active period. 
   </t>

   <t>
   Requirements 1, 2, and 3 specify how to construct the FT in a network. 
   By these requirements, Conditions C1), C2), and C3) are met. 
   The following requirements 4 and 5 specify how the FT is used for scheduling.
   </t>
   <t>
   Requirement 4: It is REQUIRED that a node provides service whenever there is a packet.
   </t>
   <t>
   Requirement 5: It is REQUIRED that all packets waiting for service in a node are served in the ascending order of their FTs. 
   </t>
   <t>
  We call this framework the work conserving stateless core fair queuing (C-SCORE) <xref target="C-SCORE"/>, 
  which can be compared to the existing non-work conserving scheme 
   <xref target="STOICA"/>.
   </t>
  </section>
   <section title="E2E Latency Bound">
   <t>
   For C-SCORE to guarantee E2E latency bound, the dh(p) is RECOMMENDED to be defined as in the following. 
   </t>
   <figure>
     <artwork align="center"><![CDATA[
dh(p) = SLh.        (3)                         
      ]]></artwork>
   </figure>
   <t>
   The service latency of the flow at node h, denoted by SLh, is given as follows.
      <figure>
     <artwork align="center"><![CDATA[
SLh = Lh/Rh + L/r,       (4)                 
      ]]></artwork>
   </figure>
   where Lh is the max packet length in the node h over all the flows that are transmitted from the output port under observation, 
   Rh is the link capacity of the node h, and L is the max packet length in the flow.  
   The service latency was first introduced in the concept of Latency-rate server model <xref target="STILIADIS-LRS"/>, 
   which can be interpreted as the worst delay from the arrival of the first packet of a new flow until its service completion.
   </t>
   <t>
   Consider the worst case: Right before a new flow's first packet arrives at a node, 
   the transmission of another packet with length Lh has just started. This packet takes the transmission delay of Lh/Rh.
   After the transmission of the packet with Lh, the flow under observation could take only the allocated share of the link,
   and the service of the packet under observation would be completed after L/r.
   Therefore, the packet has to wait, in the worst case, Lh/Rh + L/r.
   </t>
   <t>
   The reason to add the service latency to F(h-1)(p) to get Fh(p) is 
   to meet Condition C3) in a most conservative way without being too excessive.
   Intuitively, when every packet's FT is updated with the flow's own worst delay,
   then a packet that experienced the worst delay gets a favor.
   Thus its worst delay will not get any worse,
   while the delay differences among flows are reflected.
   </t>
   <t>
   When dh(p) is decided by (3), then it can be proved that
   <figure>
   <artwork align="center"><![CDATA[
   Dh(p) <= (B-L)/r + SL0 + SL1 + ... + SLh,     (5)
      ]]></artwork>
   </figure>
   where Dh(p) is the latency experienced by p from the arrival at the node 0 
   to the departure from node h; B, L, and r are the max burst of, max packet length of, 
   and allocated rate to the flow under observation that p belongs to, respectively <xref target="KAUR"/>. 
   </t>
   <t>
   Note that the latency bound in (5) is the same to the network where every node has a stateful FQ scheduler, 
   including VC. The parameters in the latency bound are all intrinsic to the flow, except Lh/Rh.
   </t>
   </section>
  <section title="Operational Procedure">
   <section title="Metadata">
   <t>
   As a packet arrives at a core node, it carries metadata F(h-1)(p), d(h-1)(p), and L/r. 
   </t>
   <t>
   L/r should be kept in a packet in order to calculate dh(p) according to (3) and (4).
   </t>
   <t>
   Fh(p) and dh(p) are dynamic and thus need to be updated at every hop. 
   </t>
   <t>
   Fh(p) can be obtained by a summation of the metadata F(h-1)(p) and d(h-1)(p). 
   </t>
   <t>
   dh(p) can be obtained by a summation of the metadata L/r and the node specific parameter Lh/Rh. 
   </t>
   <t>
   They can be updated during the time interval between the packet arrival 
   to the switch (or router) and putting it into the queue in the output port. 
   </t>
   <!-- <t>
   Note that the node specific parameters, Lh and Rh, 
   can be signaled out-of-band between the neighboring nodes, rather than carried by every packet. 
   </t> -->
   <t>
   Alternatively, Fh(p) can be pre-calculated at node h-1 with d(h-1)(p), which is the function of node h-1. 
   In this case Fh(p) and L/r are the only metadata necessary. 
   In <xref target="PEN"/> and <xref target="PCN"/>, we follow this alternative approach.
   </t>
   <t>
   The clear definition and format of metadata will be described in a later version.
   </t>
  </section>
  <section title="Network Configuration">
   <t>
  A source requests E2E latency bound for a flow, specifying its arrival rate, maximum packet length, and maximum burst size.
  If the E2E latency bound can be met, the network admits the flow. 
  In the process of admission decision, the service rate allocated to a flow can be decided according to (5) and (4).
  The network reserves the links in the path such that the sum of service rates to the flows does not exceed the link capacity.  
 </t>
   <t>
   The detailed operational procedure for such admission and reservation is out of scope of this document.
   </t>
<!-- 
   <section title="Total service rate estimation">
   <t>
	The metadata carried for C-SCORE in packets can be used for estimating the total reserved service rate in a core node, as in the following.
	</t>
	<t>
	Similarly to (2), we can define a quantity L'(p), such that 
	   <figure>
     <artwork align="center"><![CDATA[
F(p) = F(p-1) + L'(p)/r,      (6)      
      ]]></artwork>
   </figure>
	where L'(p)/r is L(p)/r if A(p) &lt; F(p-1), or A(p)-F(p-1)+L(p)/r otherwise. 
	</t>
	<t>
	It can be extended to multiple contiguous packets in a flow as follows.
   <figure>
     <artwork align="center"><![CDATA[
F(n) = F(m) + sum_(k=m+1 to n) {L'(k)/r},          
      ]]></artwork>
   </figure>
   for any packets m, n, m &lt; n.
   </t>
   <t>
   It can be rewritten as
      </t>
   
      <figure>
     <artwork align="center"><![CDATA[
r = sum_(k=m+1 to n) {L'(k)}/(F(n) - F(m)).         
      ]]></artwork>
   </figure>
   
   <t>
   The above equation can be summed up over multiple flows, because (6) holds for every flow in every node.
   	</t>
	
   <figure>
     <artwork align="center"><![CDATA[
TR <= sum_(k in M) {L'(k)}/(F(y) - F(x)),         (7)  
      ]]></artwork>
   </figure>
   
   <t>
   for any packets x, y, x &lt; y, where
   TR is the total service rate, and 
   M is the set of packets whose fraction of L'(p)/r or entire L'(p)/r is within [F(x), F(y)]. 
   </t>
   
   <t>
      A fraction of L'(p)/r is defined to be within [F(x), F(y)] if either F(x) or F(y) is within [(F(p)-L'(p)/r), F(p)], or both.
   The inequality is from the fact that fractions of L'(p)/r outside of [F(x), F(y)] are included in the numerator.
   </t>
   <t>
	(7) provides an upper bound of the current total reserved service rate. 
	A lower bound can also be obtained by including only the packets whose entire L'(p)/r is within [F(x), F(y)].
	An exact estimation is also possible by including only the fractions of L'(p)/r that are within [F(x), F(y)].
   </t>
   <t>
	This enables the admission control without per-flow state management in core nodes.
	However, the flows that newly enters during the estimation process should be additionally taken into account.
	The L'(p) and r should be included as packet metadata as well.
   </t>	

  </section>
  -->
  <!--
  <section title="Consideration for flows with large packet interarrival times">
  <t>
   There are flows emitting a small number of packets with large interarrival times to the network, possibly periodically.
   Moreover, these flows may request tight E2E latency bounds. 
   The service rate that should be allocated can be much larger than the arrival rate of a flow.
   </t>	
   <t>
   These flows can be treated with a concept of nominal service rate.
   In order to guarantee small E2E latency bounds for a flow, the service rate should be large.
   If the minimum interarrival time of packets from the flow can be specified, 
   then the nominal service rate is set to the maximum packet length divided by the minimum interarrival time .
   The nominal service rate then can be used for the admission control. 
   That is, as long as the sum of nominal service rates over all the flows are less than the link capacity, 
   then the flows can be admitted.
   </t>	
   <t>
   This is possible because we can construct a virtual system that is not distinguishable with the actual system,
   as the following. Let's say in the actual system, a packet is emitted by the source at time A(p). 
   The FT value of A(p) + L(p)/r is assigned. 
   In the virtual system, the packet arrives at A(p) + L(p)/r - L(p)/r_n, where r_n is the nominal service rate, 
   but the FT value assigned is the same as A(p) + L(p)/r. Note that L(p)/r &lt; L(p)/r_n.
   It can be assured that the virtual arrival time A(p) + L(p)/r - L(p)/r_n is larger than the previous packets arrival,
   since the interarrival time A(p) - A(p-1) is always larger than L(p)/r_n, thus A(p) - L(p)/r_n >= A(p-1).
   </t>
   
  </section>
  -->
  
  </section>
  <section anchor="PEN" title="Operational Procedure in Entrance Node">
  <t>
  We assume that the packet length of p, L(p), is written in the packet header.
  An entrance node maintains the flow state, i.e. F0(p-1), L, and r.
  It also maintains a clock to identify A0(p).
  It also maintains the link information L0/R0 to calculate d0(p).
  Upon receiving or generating packet p, it obtains F0(p) = max{F0(p-1), A0(p)} + L(p)/r, 
  and uses it as the FT in the entrance node. If the queue is not empty then it puts p in a priority queue.
  It also obtains F1(p) = F0(p) + L0/R0 + L/r before or during p is in the queue.
  It records F1(p) and L/r in the packet as metadata for use in the next node 1.
  Finally it updates the flow state information F0(p-1) to F0(p).
  </t>
  </section>
  <section anchor="PCN" title="Operational Procedure in Code Node">
  <t>
  A core node h maintains the link information Lh/Rh.
  As in an entrance node, Lh is a rather static value, but still can be changed over time.
  Upon receiving packet p, it retrieves metadata Fh(p) and L/r, and uses Fh(p) as the FT. 
  It puts p in a priority queue. It obtains F(h+1)(p) = Fh(p) + Lh/Rh + L/r 
  and updates the packet metadata Fh(p) with F(h+1)(p) before or during p is in the queue. 
  </t>
  </section>
  <section title="Considerations for Entrance Node">
  <t>
   Flow states still have to be maintained in entrance nodes. 
   The notion of an entrance node, however, can be mitigated into various edge devices, 
   including a source itself. 
   FT of a packet is decided based on the maximum of F0(p-1) and A0(p); and L(p)/r. 
   These parameters are flow-specific. There is no need to know any other external parameters. 
   The arrival time of p to the network, A0(p), can be approximated by the generation time of p at the source. 
   Then F0(p) is determined at the packet generation time and can be recorded in the packet. 
   Therefore, we can simplify the proposed solution to a great degree, and can apply to any network with robustness and scalability. 
   </t>
  </section>
  <section anchor="td" title="Considerations for Time Difference Between Nodes">
  <t>
   As it has been stated in <xref target="Assumptions"/>, we have assumed zero propagation delays between nodes.
   In reality, there are time differences between nodes, including the differences due to the propagation delays.
   This time difference can be defined as the difference between the service completion time of a packet measured at the upstream node
   and the arrival time of the packet measured at the current node. In other words,
   <figure>
   <artwork align="center"><![CDATA[
   td(h-1, h)(p) = Ah(p) - C(h-1)(p),          
   ]]></artwork>
   </figure>
   where td(h-1, h)(p) is the time difference between node h-1 and h, 
   and C(h-1)(p) is the service completion time measured at node h-1, for packet p respectively. 
   </t>
   <t>
   FT does not need to be precise. It is used just to indicate the packet service order.
   Therefore, if we can assume that the propagation delay is constant and the clocks do not drift, 
   then td(h-1, h)(p) can be simplified to a constant value, td(h-1, h).
   In this case the delay factor in (3) can be modified to be
   <figure>
   <artwork align="center"><![CDATA[
dh(p) = SLh + td(h, h+1).                                 
      ]]></artwork>
   </figure>
   The E2E latency bound in (5) increases as much as the sum of propagation delays from node 0 to h.
   </t>
   <t>
   The time difference td(h-1, h) may be updated only once in a while.
   </t>
   <t>
   By the time difference compensation, the nodes become aware of the global clock discrepancies using a periodic quantification 
of the local clock discrepancies between adjacent nodes. 
Link by link, this ends up producing awareness of the discrepancies between the clocks of the ingress nodes, 
which is then included in the computation of the finish times in core nodes. It is not synchronization in a strict sense 
because it does not involve the re-alignment of the clocks, only the quantification of their differences.
   </t>
   <t>
   Even with the clock discrepancies and propagation delays, C-SCORE does not need global time synchronization.
   </t>
  </section>
 </section>
 <section title="Characteristics">
 <t>
 C-SCORE is a flow level, rate based, work conserving, asynchronous, non-periodic, and in-time solution, 
 according to the taxonomy suggested by <xref target="I-D.joung-detnet-taxonomy-dataplane"/>.
 </t>
  <t>
  Its per hop latency dominant factor is maximum packet length divided by service rate, independent of other flows' parameters. 
  As such, its most distinguishable strength is the flow isolation capability. 
  It can assign a fine tuned E2E latency bound to a flow, by controlling the flow's own parameters such as the service rate. 
  Once the latency bound is assigned to the flow, then it remains almost the same in spite of the network situation changes, such as other flows' join and leave.
 </t>
 <t>
  It is work conserving, thus enjoys the statistical multiplexing gain without wasting bandwidth, which is the key to the Internet's success. 
  The consequence is a smaller average latency. The observable maximum latency is also much smaller than the theoretical latency bound.
  Note that, with a work conserving solution, observing the theoretical latency bound is extremely difficult. 
  It is because the worst latency is an outcome of a combination of multiple rare events, 
  e.g. a maximum burst from a flow collides with the maximum bursts from all other flows at every node.
  In contrast, non-work conserving solutions make it common to observe their latency bounds.  
  </t>
   <t>
  It is rate based, thus the admission condition check process is simple, which is dependent only on the service rates of flows. 
  This process aligns well with existing protocols.  
  </t>
     <t>
  Overall, C-SCORE suits large scale networks, at any utilization level, with various types of flows join and leave dynamically.  
  </t>
 </section>
 </section>


 <section anchor="secIANA" title="IANA Considerations">
   <t>
   <!-- There are no IANA actions required by this document. -->
   There might be matters that require IANA considerations associated with metadata. If necessary, relevant text will be added in a later version.
   </t>
 </section>

 <section anchor="secSec" title="Security Considerations">
   <t>
   This section will be described later. 
   </t>
 </section>

 <section anchor="Acknowledgements" title="Acknowledgements">
   <t>
   </t>
 </section>

 <section anchor="secCon" title="Contributor">
   <t>
   </t>
 </section>

</middle>

<back>
 <references title="Normative References">
   &RFC2119;
   &RFC8174;
<!--
   &RFC8655;
   &RFC8938;
   &I-D.liu-detnet-large-scale-requirements;
   &I-D.ietf-detnet-bounded-latency;

-->

 </references>

 <references title="Informative References">
<!--   &RFC2212;
   &RFC3393;
   &I-D.yizhou-detnet-ipv6-options-for-cqf-variant;  
   <reference anchor="IEEE802.1Qch"> 
     <front>
       <title>IEEE Standard for Local and metropolitan area networks - 
       Bridges and Bridged Networks - Amendment 29: 
       Cyclic Queuing and Forwarding
       </title>
       <author>
         <organization>IEEE</organization> 
       </author>
      <date year="2017" month="June" day="28"/>
    </front>
    <seriesInfo name="IEEE" value="802.1Qch-2017"/>
    <seriesInfo name="DOI" value="10.1109/IEEESTD.2017.7961303"/>
  </reference>

   <reference anchor="IEEE802.1Qcr"> 
     <front>
       <title>IEEE Standard for Local and metropolitan area networks -
       Bridges and Bridged Networks - Amendment 34: 
       Asynchronous Traffic Shaping
       </title>
       <author>
         <organization>IEEE</organization> 
       </author>
      <date year="2020" month="November" day="6"/>
    </front>
    <seriesInfo name="IEEE" value="802.1Qcr-2020"/>
    <seriesInfo name="DOI" value="10.1109/IEEESTD.2020.9253013"/>
  </reference>

   <reference anchor="Y.3113"> 
     <front>
       <title>Framework for Latency Guarantee in Large Scale Networks 
              Including IMT-2020 Network
       </title>
       <author>
         <organization>International Telecommunication Union</organization> 
       </author>
      <date year="2021" month="February"/>
    </front>
    <seriesInfo name="ITU-T" value="Recommendation Y.3113"/>
  </reference>

-->
   &I-D.joung-detnet-taxonomy-dataplane;
   <reference anchor="ADN"> 
     <front>
       <title>Asynchronous deterministic network based on the DiffServ 
              architecture
       </title>
       <author initials="J" surname="Joung"> </author>
       <author initials="J" surname="Kwon"> </author>
       <author initials="J" surname="Ryoo"> </author>
       <author initials="T" surname="Cheung"> </author>
      <date year="2022"/>
    </front>
    <seriesInfo name="IEEE Access, " 
                value="vol. 10, pp. 15068-15083,
                       doi:10.1109/ACCESS.2022.3146398"/>
  </reference>
<!--
   <reference anchor="BN"> 
     <front>
       <title>Zero jitter for deterministic networks 
              without time-synchronization
       </title>
       <author initials="J" surname="Joung"> </author>
       <author initials="J" surname="Kwon"> </author>
      <date year="2021"/>
    </front>
    <seriesInfo name="IEEE Access," 
                value="vol. 9, pp. 49398-49414, 
                       doi:10.1109/ACCESS.2021.3068515"/>
  </reference>
-->
   <reference anchor="ANDREWS"> 
     <front>
       <title>Instability of FIFO in the permanent sessions model 
              at arbitrarily small network loads
       </title>
       <author initials="M" surname="Andrews"> </author>
      <date year="2009" month="July"/>
    </front>
    <seriesInfo name="ACM Trans. Algorithms," 
                value="vol. 5, no. 3, pp. 1-29,
                       doi: 10.1145/1541885.1541894"/>
  </reference>

   <reference anchor="BOUILLARD"> 
     <front>
       <title>Deterministic network calculus: 
              From theory to practical implementation
       </title>
       <author initials="A" surname="Bouillard"> </author>
       <author initials="M" surname="Boyer"> </author>
       <author initials="E" surname="Le Corronc"> </author>
      <date year="2018"/>
    </front>
    <seriesInfo name="in Networks and Telecommunications. Hoboken, NJ, USA:" 
                value="Wiley,
                       doi: 10.1002/9781119440284"/>
  </reference>
   <reference anchor="C-SCORE"> 
     <front>
       <title>Scalable flow isolation with work conserving stateless core fair queuing for deterministic networking
       </title>
       <author initials="J" surname="Joung"> </author>
       <author initials="J" surname="Kwon"> </author>
       <author initials="J" surname="Ryoo"> </author>
       <author initials="T" surname="Cheung"> </author>
      <date year="2023"/>
    </front>
    <seriesInfo name="IEEE Access, " 
                value="vol. 11, pp. 105225 - 105247,
                       doi:10.1109/ACCESS.2023.3318479"/>
  </reference>
  
   <reference anchor="GOLESTANI"> 
     <front>
       <title>A self-clocked fair queueing scheme for broadband applications
       </title>
       <author initials="S. J." surname="Golestani"> </author>
       <date year="1994"/>
    </front>
    <seriesInfo name="in Proc. INFOCOM, " 
                value="vol. 1, pp. 636-646,
                       doi: 10.1109/INFCOM.1994.337677"/>
  </reference>
    
<!--
  <reference anchor="FAIR"> 
     <front>
       <title>Framework for delay guarantee in multi-domain networks 
              based on interleaved regulators
       </title>
       <author initials="J" surname="Joung"> </author>
      <date year="2020" month="March"/>
    </front>
    <seriesInfo name="Electronics," 
                value="vol. 9, no. 3, p. 436,
                       doi:10.3390/electronics9030436"/>
  </reference>
-->  

  <reference anchor="KAUR"> 
     <front>
       <title>Core-stateless guaranteed rate scheduling algorithms
       </title>
       <author initials="J" surname="Kaur"> </author>
       <author initials="H.M" surname="Vin"> </author>
       <date year="2001" />
    </front>
    <seriesInfo name="in Proc. INFOCOM," 
                value="vol.3, pp. 1484-1492"/>
  </reference>
<!--  
  <reference anchor="LBF"> 
     <front>
       <title>High-precision latency forwarding over packet-programmable 
              networks
       </title>
       <author initials="A" surname="Clenm"> </author>
       <author initials="T" surname="Eckert"> </author>
      <date year="2020" month="April"/>
    </front>
    <seriesInfo name="NOMS 2020 - " 
                value="IEEE/IFIP Network Operations and Management Symposium"/>
  </reference>

  <reference anchor="LEBOUDEC"> 
     <front>
       <title>A theory of traffic regulators for deterministic networks 
              with application to interleaved regulators
       </title>
       <author initials="J" surname="Le Boudec"> </author>
      <date year="2019" month="December"/>
    </front>
    <seriesInfo name="IEEE/ACM Trans. Networking," 
                value="vol. 26, no. 6, pp. 2721-2733, 
                       doi:10.1109/TNET.2018.2875191"/>
  </reference>
-->
  <reference anchor="THOMAS"> 
     <front>
       <title>On cyclic dependencies and regulators in time-sensitive networks
       </title>
       <author initials="L" surname="Thomas"> </author>
       <author initials="J" surname="Le Boudec"> </author>
       <author initials="A" surname="Mifdaoui"> </author>
      <date year="2019" month="December"/>
    </front>
    <seriesInfo name="in Proc. IEEE Real-Time Syst. Symp. (RTSS)," 
                value="York, U.K., pp. 299-311"/>
  </reference>

  <reference anchor="PAREKH"> 
     <front>
       <title>A generalized processor sharing approach to flow control 
              in integrated services networks: the single-node case
       </title>
       <author initials="A" surname="Parekh"> </author>
       <author initials="R" surname="Gallager"> </author>
      <date year="1993" month="June"/>
    </front>
    <seriesInfo name="IEEE/ACM Trans. Networking," 
                value="vol. 1, no. 3, pp. 344-357"/>
  </reference>

  <reference anchor="STILIADIS-RPS"> 
     <front>
       <title>Rate-proportional servers: A design methodology for 
              fair queueing algorithms
       </title>
       <author initials="D" surname="Stiliadis"> </author>
       <author initials="A" surname="Anujan"> </author>
      <date year="1998"/>
    </front>
    <seriesInfo name="IEEE/ACM Trans. Networking," 
                value="vol. 6, no. 2, pp. 164-174"/>
  </reference>
  
    <reference anchor="STILIADIS-LRS"> 
     <front>
       <title>Latency-rate servers: A general model for analysis of traffic scheduling algorithms
       </title>
       <author initials="D" surname="Stiliadis"> </author>
       <author initials="A" surname="Anujan"> </author>
      <date year="1998"/>
    </front>
    <seriesInfo name="IEEE/ACM Trans. Networking," 
                value="vol. 6, no. 5, pp. 611-624"/>
  </reference>

  <reference anchor="STOICA"> 
     <front>
       <title>Providing guaranteed services without per flow management
       </title>
       <author initials="I" surname="Stoica"> </author>
       <author initials="H" surname="Zhang"> </author>
      <date year="1999"/>
    </front>
    <seriesInfo name="ACM SIGCOMM Computer Communication Review," 
                value="vol. 29, no. 4, pp. 81-94"/>
  </reference>

  <reference anchor="ZHANG"> 
     <front>
       <title>Virtual clock: A new traffic control algorithm for 
              packet switching networks
       </title>
       <author initials="L" surname="Zhang"> </author>
      <date year="1990" />
    </front>
    <seriesInfo name="in Proc. ACM symposium on Communications architectures 
                      &amp; protocols," 
                value="pp. 19-29"/>
  </reference>

 </references>
</back>

</rfc>

