【译+理解】Cyclic queuing and forwarding

参考文献:

  多种流量整形方法参考如下:
   https://blog.csdn.net/jiangganwu/article/details/83422953
   https://kzcd.chuandong.com/article.aspx?id=4644
  本文主要参考:
   《IEEE Std 802.1Q-2018 Annex T》
   《Insight into the IEEE 802.1 Qcr Asynchronous Traffic Shaping》
  相关博文与标准下载:

   https://blog.csdn.net/zz_Caleb/article/details/104478255

Cyclic queuing and forwarding

简述:Cyclic queuing and forwarding简称CQF,是一种流量整形方法,我们常用的流量整形方法还有Credit-based shaper algorithm(又称令牌桶算法),Leaky Bucket algorithm(漏斗筒算法)等等。流量整形(traffic shaping)典型作用是限制流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度向外发送。他在TSN中的作用,就是尽量使Time-sensitive流量的时延和抖动降低。

Session.1 Overview of CQF

  循环排队和转发(CQF)是一种流量整形方法,可以为时间敏感的流量提供确定的,易于计算的延迟。 顾名思义,CQF的基本原理是流业务以循环的方式沿着网络路径传输和排队等待传输。 时间分为编号的时间间隔i,i + 1,i + 2,… i + N,每个时间间隔为d。 在时间间隔i内由网桥Alice传输的帧在时间间隔i内由下游网桥Bob接收,并在时间间隔i + 1内由Bob继续向网桥Charlie传输,依此类推。 一个开始的假设是,对于给定的通信量类别,所有网桥和连接到给定网桥的所有终端站都对周期i的开始时间和周期持续时间d有一个共同的理解(以已知的精度)。

【译+理解】Cyclic queuing and forwarding_第1张图片

  Alice在间隔i中传输的帧由Bob在间隔i + 1中传输; 给定帧经历的最大可能延迟是从i的开始到i + 1的结束,或者是d的两倍。 同样,经历的最小可能延迟是从i的结尾到i + 1的开头,即零。 更一般而言,给定帧经历的最大延迟为

( h + 1 ) x d

给定帧经历的最小延迟是

( h + 1) x d

其中h是跳数。
  这说明了CQF作为处理时间敏感流量的技术的吸引力。 帧经过网络时引入的等待时间完全由周期时间和跳数描述,不受任何其他拓扑考虑因素的影响,包括来自其他非时间敏感流量的干扰。 但是,只有在帧保持分配的周期的情况下,这才成立。 例如,如果在周期i + 1开始之前没有出现Bob预计在周期i中收到的某些帧,则关于最大等待时间计算的假设不再成立。 为了确保实现所需的等待时间界限,需要仔细选择周期时间,网络中网桥之间的周期时间对齐以及一个周期内第一次和最后一次传输的时间。

  由于处理对时间敏感的流的目标之一是零帧丢失(假设不存在无法识别的不合格流量),因此谨慎地假设接收是连续的,下游系统将会不断接收到帧,同时也会不断分配时间间隔用于接受和转发。

  这就给传输系统分配了正确的间隔分配的大部分负担。 如果在接收时可能分配不正确的间隔,则不应发送帧。 因此,有必要针对间隔时间t中的时间点定义接收分配中的预期错误,比如说间隔i-1成为间隔i。

  一个中继设备(例如Bob)当然可以选择何时开始相对于t的i接收分配; 中继设备可以尝试通过补偿,修正等方法,确定接收的间隔,以及对应的转发间隔。

  虽然Bob尝试以第i时间间隔去接收,第i周期离开Alice的帧,并且可能将已知的和可重复的内部延迟因素考虑进去,但他的实际开始时间取决于:

    a)Bob的时间同步错误( 也就是说,他在确定t实际何时发生时的错误)。

    b)Bob在这段时间内的最大偏差(抖动)。

    c)Bob未能解决的其他延迟,例如选择要用于i的输出队列的延迟。

Alice必须停止传输t之前i-1的帧,该时间是Bob可能由于a)到c)以及以下情况而提前开始i的总和:

    d)Alice时间同步中的错误( 也就是她确定t何时发生的错误)。

    e)Alice使用该时间的最大偏差(抖动)。

    f)从Alice决定提交一个帧到在爱Alice末端出现“媒体上的最后一个八位位组/符号”之间的时间。

    g)传输时间中“媒体”的长度,即最后一个八位位组/符号离开Alice并到达Bob的时间,其中包括对干扰帧或片段的影响的任何考虑。

  根据多个连续间隔(与Session.2及以后讨论的“奇/偶”队列对它们的支持相反)来描述CQF,当选定的传输间隔到期时,仍然可以轻松解决仍在队列中的流量,其处理方法为,丢弃或标记下来(丢弃合格或优先级更改)并生成警报。 在适当分配流带宽的环境中(即,每个时间间隔分配的带宽小于在选定间隔持续时间内可以接收/发送的带宽),这种情况很少发生。

  到目前为止的讨论都假定所有链接速度都相同。 但是,当考虑不同速度的链接时,情况变得更加复杂。 一种典型的布置可能包括路径起点和终点(网络外围到外围)的低速链接,另一种则朝向一端(外围到核心,反之亦然)高速。 首先,将Alice置于从慢到快的第一个过渡中,鲍勃(Bob)作为她的快邻,查理(Charlie)作为他的快邻,而唐纳德(Donald)从快到慢的过渡,重要的是 网络作为CQF黑盒)是由爱丽丝在间隔i(例如)中接收到的所有一致流量都由唐纳德在稍后的间隔i + n中传输。 爱丽丝(Alice),鲍勃(Bob),查理(Charlie)和唐纳德(Donald)之间可能会做出许多内部安排,以实现这一目标,并且从外部CQF角度来看是有效的。 也可以考虑分数n,其中n仍大于1,因为Alice可能需要收集任何慢周期的整体,然后再将其以更压缩的脉冲串传输到快速网络的其余部分。 更复杂的可能性等同于重新定义慢速循环时间。 Session.5中讨论了使用不同速度的链路的一些不太复杂的可能性。

  到目前为止我们都假设链路速率是相同的,然而当链路速率不同的时候,情况就变得复杂了。一种典型的网络结构,是在网络边缘为速率较低的网络设备,而在网络内部,其设备速率较高。举例说明,Alice为第一个转换设备,他将高速转换为较低速度,Bob和Charlie是他在高速侧的邻居设备,Donald同样是一个,跨高速于低速区域的设备。如果仍要满足Alice在第i个间隔发送的帧,会被Donald在第i + n个间隔转发出去,这一要求

  四台交换设备会通过内部的某种方法,完成这样的转发要求。并且从外部CQF的角度来看,这些安排是有效的。在这种情况下,可以考虑n为大于1的非整数的情况,因为爱丽丝可能需要收集所有慢周期的全部内容,然后再以更压缩的突发形式将其传输到快速网络的其余部分。 更复杂的可能性等同于重新定义慢速循环时间。 Session.5中讨论了使用不同速度的链路的一些不太复杂的可能性。

Session.2 An approach to CQF implementation

  实质上,该方法涉及使用两个传输队列和一个循环计时器。 在偶数周期(间隔)内,队列1累积从网桥的接收端口接收到的帧(不发送),而队列2传输前一个奇数周期的任何排队的帧(不接收任何帧)。

  在奇数周期内,队列2累积从网桥的接收端口接收的帧(不发送),而队列1则传输前一个偶数周期内的所有排队的帧(并且不接收任何帧)。

  通过适当选择接收和发送周期时间(参见Session.5),对于任何给定的流,该周期至少足够长,足以容纳所有需要在网桥端口上传输的时间敏感型业务 在该流的类测量间隔(请参见34.6.1,在IEEE Std 802.1BA™[B51]中也称为观察间隔),加上最大大小的干扰帧(或帧片段,如果支持抢占),则流的所有流量都将在循环时间内在处于接收模式的队列中累积,并且当队列切换到传输模式时,将全部在循环时间内进行传输。

  通过配置为每个流过滤和策略定义的流门控制机制(PSFP,IEEE Std 802.1Qci)和在IEEE Std 802.1Qbv的8.6.8.4和8.6.9中定义的流量调度机制的组合来实现CQF。 每流过滤用于按时间将接收到的帧定向到一对出站队列中的一个,该时间由每流过滤器的周期确定,流量调度用于确保从适当的队列发送帧 使用相同的循环时间,如本附件其余部分所述。

Session.3 Use of per-stream filtering and policing for CQF

  建立CQF所需的过滤和排队结构的第一步是设置一个或多个将接收传入时间敏感帧的流过滤器(8.6.5.1.1 近期会更新)和一个流门实例。配置流过滤器,以便将在给定端口上接收的所有对时间敏感的帧定向到相同的流门实例; 依次配置流门实例,以使与时间敏感帧关联的内部优先级值(IPV)将在一定时间上将它们定向到两个出站队列之一。 IPV的使用使帧到出站队列的方向独立于所接收的优先级,并且也不会影响与传输时的帧关联的优先级。

Session 3.1 Stream filter configuration

  最简单的流过滤器配置将在所有对时间敏感的帧使用相同的优先级的情况下实现(并且该优先级不用于其他任何帧); 例如,可以使用分配给SR类A的默认优先级(请参阅第34条),在这种情况下,与时间敏感的帧相关联的优先级将为3。这些参数将为时间敏感的帧定义流过滤器帧将如下所示:

    a)stream_identifier规范将采用通配符值。

    b)优先级规范将采用优先级值3。

    c)流门实例标识符将采用流门实例标识符的值(Session.3.2)。

    d)在最简单的情况下,将没有过滤器规格;

  但是,例如,如果对时间敏感的流量的最大SDU大小限制在一个小于介质的最大SDU大小的值上,则可以适当添加这些值。

  此流过滤器规范会导致将优先级值为3的所有帧提交给流门。 由于PSFP的操作使得可以像未实现PSFP一样处理与流过滤器不匹配的接收帧,因此无需进一步的流过滤器规范来处理携带3以外优先级的帧,除非存在其他过滤或对于此类帧需要进行的选通决策。

###Session 3.2 Stream gate configuration###

  支持Session.3.1中描述的流过滤器所需的流门实例具有一个流门控制列表,其中包含两个条目,每个条目包含一个SetGateAndIPS操作,其参数如下:

1)StreamGateState = open, IPV = 7,TimeInterval = T

2)StreamGateState = open, IPV = 6,TimeInterval = T

  此控制列表的作用是将通过Session 3.1中指定的流过滤器的所有流量定向到两个不同的出站队列之一(假设出站端口支持8个队列,并且对流量类别的优先级的默认分配遵循建议);

  在第一个时间间隔T中,流量将被引导到队列7,在第二个时间间隔T中将被引导到队列6,在第三个时间间隔中将被引导到队列7,在第四个时间间隔中被引导到队列6,依此类推。 时间间隔T的选择在Session.5中讨论。 流闸状态机的周期时间需要设置为2T,以适应两个闸门操作的时间间隔之和。 见图T-1

【译+理解】Cyclic queuing and forwarding_第2张图片

Session.4 Use of traffic scheduling for CQF

  为了支持Session.3中描述的PSFP配置,每个出站端口上需要的流量调度支持是执行一个门控制列表,该列表将把GateState设置为对队列6打开,对队列7关闭,时间间隔为T,并且 然后将GateState设置为对队列7打开,对队列6关闭,时间间隔为T,重复无穷大。 如果没有其他流量调度方面的考虑,则可以通过仅包含两个SetGateStates门操作的门控制列表来实现,其参数如下:

1)GateState:0,1,2,3,4,5,6open,7closed,TimeInterval = T

2)GateState:0,1,2,3,4,5,7open,6 closed,TimeInterval = T

   这一系列的门操作具有以下效果:在初始时间段T内,在填充队列7的同时关闭队列7的GateState,并打开队列6允许传输任何已排队的帧。 在第二时间段T中,队列6的GateState在填充队列6的同时关闭,队列7打开以允许任何排队的帧被传输。 所有其他队列的门均打开。 时间间隔T的选择在Session.5中讨论。 计划的交通状态机的周期时间(OperCycleTime;将设置为2T,以适应两个闸门操作的时间间隔之和。

  如果对其他任何队列都有流量调度要求,则可以扩展门控制列表以适应这些要求; 但是,队列6和7的门的状态改变之间的时间间隔必须为T,因此,OperCycleTime必须为2T的倍数,才能满足CQF要求。 图T-2说明了仅需要流量调度来支持CQF的情况下最简单的流量调度配置。

【译+理解】Cyclic queuing and forwarding_第3张图片

Session.5 Timing considerations

Session 5.1 Choice of T

  应该选择T,使其足够大以容纳在相关测量流的类测量间隔期间可以接收的流数据,以及至少一个最大干扰帧或帧片段。

  如果随时间观察到一个流或一组流,则在等于与这些流相关联的类别测量间隔的任何观察时间段内,将不会超过该流或一组流的保留数据速率。 这有效地为T的选择设置了下限,即不应小于类别测量间隔,并且还对较大的T值施加了限制,即它们应为类别测量间隔的整数倍。

  如果正在处理与两个不同观察间隔相关的流,例如,如果使用SR类A和B的流通过网桥,则用于传输流量调度的OperCycleTime必须是两个类测量间隔的公倍数。

  图T-3和图T-4说明了在SR类A和B有效的情况下如何配置PSFP和流量调度。 在图T-3中,使用门1处理携带SR类A(优先级3)的传入帧,流门控制列表的循环时间是SR类A的类测量间隔的两倍,即2 * 125μs 。 Gate 1交替标记这些帧的IPV为7或6。携带SR Class B(优先级2)的传入帧是使用Gate 2处理的,流门控制列表的循环时间是SR Class的类测量间隔的两倍。 B,即2 * 250μs。 门2交替标记这些帧的IPV为5或4。

  流量调度基于两个类别的测量间隔中较小的一个,即125μs,但现在在门控制列表中有四个条目(与图T-2中的两个条目相对),因此总循环时间为500μs。门控制列表每125μs切换一次流量等级7和6的门状态,每250μs切换一次流量等级5和4的门状态。

【译+理解】Cyclic queuing and forwarding_第4张图片
【译+理解】Cyclic queuing and forwarding_第5张图片

Session 5.2 Cycle interleaving(循环交织)

  在某些情况下,尤其是在接收端口和发送端口之间数据速率不同的情况下,可能希望在较快的端口上交织周期,以便最好地利用可用的更高带宽,并减少由于以下原因而增加的延迟:

  流通过传输路径的较快部分。 由于一对队列之间接收和传输的循环切换会导致接收帧的传输出现延迟,因此,当允许发送队列时,所有接收到的帧都将排入队列,并且所有队列 因此,假设优先级允许,并且假设传输队列使用严格的优先级传输选择算法(8.6.8.1),则将以突发方式传输。

  因此,如果从给定端口接收的通信量在时间间隔T内分散开,并且全部都发送到同一队列,则传输的通信量将被压缩为突发。 如果传输数据速率是接收数据速率的十倍,则该脉冲串的最大长度为T / 10,因此有可能将另外9个这样的脉冲串放入该传输端口上可用的带宽中。

  通过在接收端口和发送端口上适当的定时,可以交错接收和发送周期,从而可以发生那些额外的发送突发。 在图T-5所示的示例中,假定:

    a)有两个端口在其上接收流数据,Rx1和Rx2。

    b)有一个要在其上传输流数据的端口Tx1。

    c)Rx1和Rx2的工作速率为Tx1数据速率的一半(或更小)。

    d)所有流业务均为SR Class A,并以优先级3接收。

【译+理解】Cyclic queuing and forwarding_第6张图片

  在接收侧,在优先级3的Rx1上接收的业务在奇数周期内发送到业务类别队列7,在偶数周期内发送到业务类别队列6。 同样,在优先级3的Rx2上接收的流量在奇数周期内发送到流量类别队列5,在偶数周期内发送到流量类别队列4。 但是,这些周期相对于Rx1的周期偏移了T / 2。

  在发送方,每个队列对于T / 2处于打开(发送)状态,对于3T / 2处于关闭(接收)状态。 闸门打开/闸门关闭事件的时间安排成使得在任何一次仅发送一个队列。

  应该注意的是,尽管采用这样的方案,尽管发送方似乎是根据T的值进行操作的,而T的值是Rx端所用值的一半,但从流的角度来看,其效果却源于给定的接收端口Rx和Tx时序是相同的,因为在每个时间间隔T中在该端口上接收的帧都发送一次。

  并且如前一点c所述,发送速率是接收速率的两倍(或更大)。 ),因此可用的传输带宽等于或大于接收带宽。 因此,交织符合Session 5.1中规定的要求。 Tx1下游的网桥的接收端口可以使用T / 2进行操作,如果也可以将其传送到传输端口,则对通过该网桥的流的延迟的贡献将为T / 2,而不是 比第一个网桥贡献的T。

  可以设想更复杂的方案; 例如,使用两个以上的Rx端口,只要可以在所使用的流量类别对之间平均共享接收的带宽,就可以使它们工作。 也可以为较大的交织因子定义这种交织。 唯一的限制是可用出站队列的数量。 也可以定义交织方案,其中在分配给一对业务量类的接收带宽之间不能平均分配,只要分配给给定一对业务量类的带宽不超过这些流量类的时间间隔内可用的带宽即可。

注—尽管在本标准中描述的流量类别的数量限制为8,但是IPV的值没有受到这样的限制。 如果系统支持8个以上的业务量类别,则可以定义大于4的交织因子。

Session 5.3 Cycle alignment between adjacent Ports(相邻端口之间的周期对齐)

  到目前为止,这些示例都假设一个完美的世界,其中从发送端口到接收端口的传输是瞬时的,并且发送和接收系统的内部时序是完美同步的。 实际上,传输需要时间,并且同步并不完美。

  因此,有可能在紧接接收端口下游已切换接收和传输队列之后,传输端口会启动一个传输突发的最后一个帧,这将意味着这些最后帧被放在错误的队列中。 类似地,如果定时未对准以另一种方式起作用,则传输端口有可能尽早完成传输其突发,并在下游端口改变状态之前切换到传输下一个突发。

  为了避免此问题,必须调整时序,以使接收端口更改流过滤器的状态以将传入帧定向到不同的出站队列时,存在很高的可能性,仍然没有帧从上游传输端口传输或在飞行中传输。 这可以通过稍微延迟传输窗口的开始并稍微提前传输窗口的结束来实现。 “轻微”的值取决于许多因素,其中包括:

    a)相邻系统之间的时间同步中的任何错误。

    b)从开始离开上游系统中的发送队列到呈现给下游管制功能的一帧传播时间的抖动。

    c)下游监管功能和下游系统中适当的传输队列之间的帧传播时间抖动。

    d)任何潜在的干扰帧或帧片段的大小。

    e)相邻系统维护的时钟分辨率的差异。

  在前面的示例中,此调整因子S对传输端口上显示的时序的影响是,门处于“打开”状态的时隙将缩短2S倍,并开始S 后来。 因此,图T-5中业务类别7的传输阶段将在T + S开始,并在(3T / 2)–S结束。 应该将S设置为前一列表中所有来源的误差或抖动值的总和。

你可能感兴趣的:(Time,sensitive,network)