IEEE 802.1 Qch 协议的详细总结(循环排队和转发CQF)

CQF(Cycling Queuing and Forwarding):循环排队和转发。

GCL(Gate control list):门控制列表。

PSFP(Per stream filter and policing):流过滤和流监控(802.1 Qci)。

hop(跳数):报文要通过的路由器输出端口的个数。

IPV(Internal priority value):内部优先级值。

Relay Network(中继网络):中继网络是一种计算机网络,用于在距离太远而无法直接发送信息的两个设备(如服务器和计算机)之间发送信息。因此,网络必须将信息发送或“中继”到不同的设备(称为节点),将信息传递到目的地的过程。中继网络的一个著名例子是因特网。用户可以通过一系列连接的节点发送和接收信息,从世界各地的服务器上查看网页。用户可以通过发送和接收从世界各地的服务器上查看网页信息通过一系列相连的节点传递。

Alice、Bob、Charlie为对Bridge的代号,防止搞混。

1 CQF概述(Overview of CQF)

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

Alice 在区间 i 中传输的帧由 Bob 在区间 i+1 中传输。给定帧所经历的最大可能延迟是从 i 的开始到 i+1 的结束,即2倍d。类似地,所经历的最小可能延迟是从 i 的结束到 i+1 的开始,这是零。更一般地说,给定帧所经历的最大延迟为 (h+1)*d, 最小延迟为 (h-1)*d ,其中 h 为跳数。

这说明了CQF作为一种处理时间敏感的通信的技术的吸引力。当一个帧通过网络时引入的延迟完全由周期时间和跳数描述,不受任何其他拓扑考虑因素的影响,包括来自其他非时间敏感流量的干扰。 然而,这只有在帧保持其分配的周期时才成立。例如,如果 Bob 预期在周期 i 中接收的一些帧直到周期 i+1 开始才出现,那么关于最大延迟计算的假设就不再成立。为了确保达到预期的延迟边界,需要仔细选择周期时间网络中网桥之间的周期时间对齐以及一个周期内第一次和最后一次传输的时间

只要 Bob 的性能不影响正确分配帧到时间间隔,任何通过特定中间中继(例如Bob)的延迟都不会影响端到端延迟。

由于处理时间敏感流的目标之一是零帧丢失(假设没有不可识别的不符合要求的流量存在),因此谨慎地假定接收是连续的——下游系统(downstream system)接收到的帧将始终分配到一个或另一个间隔(interval)。这就把正确的间隔分配的大部分负担放在了传输系统上。 如果接收时可能存在不正确的间隔分配,则帧不应被传输。 因此,有必要定义关于间隔时间点 t 的接收分配中的预期(和适应的)误差,区间 i–1 变为区间 i 即为 t 。relay中继(比如Bob)当然可以选择什么时候开始向 i 分配与 t 相关的接收任务。假设Bob的意图是——分配给 i 的最早帧是在 t 处最后一个八位字节仍在传输介质上的第一个帧,从而将Bob内部已知的依赖于实现的延迟置于Bob的控制之下。

当Bob试图开始接收 i 的帧与来自 i 的介质帧,并可能考虑到已知的和可重复的内部延迟到他的方式,他的实际开始时间取决于:

a) Bob的时间同步错误(即,他对 t 实际发生时间的判断错误)。
b) Bob使用该时间的最大偏差(抖动jitter)。
c) Bob没有考虑到的其他延迟,例如在选择用于 i 的输出队列时的延迟。

Alice必须在 t 之前停止传输 i - 1 帧,这个时间是Bob可能从 a) 到 c) 的 i 的早期开始的总和,如下:

d) Alice时间同步的误差(即她确定 t 何时发生的误差)。
e) Alice使用该时间的最大偏差(抖动)。
f) 从Alice决定提交传输帧到爱丽丝端“在媒体上”出现最后一个八位元/符号的时间。
g) 传输时间中“介质”的长度,即最后一个八字节/符号离开Alice到达Bob的时间,包括干扰帧或片段的任何影响。

CQF的连续间隔的数量描述(与“奇数/偶数”队列的支持相反,如 2后面所讨论的)给出了当所选传输间隔已过期时如何处理仍在排队的流量的简单答案——丢弃它,或将其标记下来(丢弃合格项或优先级更改)并生成警报。在适当分配流带宽的环境中(即,每个时间间隔分配的带宽小于所选择的间隔持续时间内可以接收/发送的带宽),这种情况将很少发生,随后的流量将是一致的,整体系统性能将是可恢复的

* 到目前为止的讨论都假设所有的链接速度都是相同的。然而,当考虑到不同速度的链接时,情况就变得更加复杂了。一种典型的安排可能包括在路径的开始和结束处的低速链接(网络外围到外围),另一种是通向一端的高速链接(外围到核心或相反)。取其中的第一个,把Alice放在从慢到快的第一个过渡点,Bob作为她的快邻居,Charlie作为他的快邻居,Donald在从快到慢的过渡点,重要的是(把网络的快核心当作一个CQF黑盒子),Alice在区间 i(假设)中收到的所有符合要求的流量都是由Donald在之后的区间 i+n 中传输的。为了实现这一点,可以在Alice、Bob、Charlie和Donald之间进行许多内部安排,并且从外部CQF的角度来看是有效的。也可以考虑分数n,其中n仍然是> 1,因为Alice可能需要收集任何慢循环的全部,然后以更压缩的突发将其传输到快速网络的其余部分。更复杂的可能性相当于重新定义慢周期时间。使用不同速度的链接的一些不太详细的可能性将在T.5中讨论。

2 CQF的实现方法(An approach to CQF implementation)

本质上,这种方法涉及到使用两个传输队列和一个周期计时器。在偶数周期(间隔)中,队列1积累从Bridge
接收端口接收到的帧(但不传输这些帧),而队列2传输来自前一个奇数周期的队列帧(并且不接收任何帧)。在奇数周期中,队列2积累从Bridge接收端口接收到的帧(但不传输它们),而队列1发送来自前一个偶数周期的任何排队帧(并且不接收任何帧)。通过适当选择接收和发送周期时间(见T.5),使得对于任何给定流,周期至少足够长,以容纳在流的类测量间隔(见34.6.1,也称为IEEE Std 802.1BA™[B51]中的观测间隔)期间需要在桥接端口上传输的所有时间敏感的流量,再加上一个最大尺寸的干扰帧(或帧片段,如果支持抢占),然后,所有流的流量将在周期时间内在处于接收模式的队列中积累,并将在队列切换到发送模式的周期时间内全部传输。

CQF是通过配置流门控制机制(PSFP, IEEE Std 802.1Qci)IEEE Std 802.1Qbv 8.6.8.4和8.6.9定义的流量调度机制的组合来实现的。逐流过滤(PSFP)用于在定时的基础上将接收到的帧定向到一对出站队列中的一个,这由逐流过滤器(PSF)的周期时间决定,并且流量调度用于确保使用相同的周期时间从适当的队列传输帧,在本文其余部分所述。

3 对CQF使用逐流过滤和监视(Qci)(Use of per-stream filtering and policing for CQF)

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

3.1 流过滤配置(Stream filter configuration)

最简单的流过滤器配置是对所有时间敏感的帧使用相同的优先级(并且这个优先级不用于任何其他帧)。例如,可以使用分配给SR-class-A的默认优先级(see Clause 34),在这种情况下,与时敏帧相关的优先级将是3。定义时间敏感帧的流过滤器的参数如下:

  1. (stream_identifier)流标识符规范将接受通配符值。
  2. 优先级规格的优先级值为3
  3. 流门实例标识符将采用流门实例标识符的值(T.3.2)。
  4. 在最简单的情况下,没有过滤器规格。但是,可以适当地添加这些参数,例如,如果对时间敏感的流量的最大SDU-size限制在小于介质的最大SDU-size的值。

此流过滤器规范导致所有优先级值为3的帧被提交到流门(stream-gate)。由于PSFP的操作是这样的,接收到的帧如果不匹配流过滤器将被处理掉(handled),就像PSFP没有实现一样,因此不需要进一步的流过滤器规范来处理优先级不为3的帧,除非需要对这类帧采取其他过滤或门控决策。

3.2 流门配置(Stream gate configuration)

流门实例(8.6.5.1.1)需要支持T.3.1中描述的流过滤器,它有一个流门控制列表,包含两个条目(item),每个条目包含一个SetGateStates操作,参数如下:

IPV(Internal priority value):内部优先级值。

  1. StreamGateState = open, IPV = 7, TimeInterval = T
  2. StreamGateState = open, IPV = 6, TimeInterval = T

该控制列表具有将任何通过T.3.1中指定的流过滤器的流量导向两个不同的出站队列之一的效果(假设出站端口支持8个队列,并且默认的流量类优先级分配遵循表34-1所示的建议)。在第一个时间间隔T中,流量被引导到队列7,在第二个时间间隔T中,流量被引导到队列6,在第三个时间间隔T中,流量被引导到队列7,在第四个时间间隔T中,流量被引导到队列6,依此类推(时间区间T的选择在T.5中讨论)。流门状态机的周期时间(OperCycleTime,参见8.6.9.4.20)需要设置为2T,以便容纳两个门操作的时间间隔的总和。如图T-1所示

在这里插入图片描述

4 对CQF使用流量调度(Qbv)(Use of traffic scheduling for CQF)

为了支持 T.3 中描述的 PSFP 配置,每个出站端口上需要的流量调度支持是执行一个GCL,该列表将设置GateState为队列6打开,队列7关闭,时间间隔为T,然后设置GateState为队列7打开,队列6关闭,时间间隔为T,无限重复。如果没有其他的流量调度考虑,这可以通过一个门控制列表来实现,它只包含两个SetGateStates门操作。

参数如下:

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

这个门操作序列的效果是:在初始时间段T中,队列7的GateState在队列7被填充时关闭,队列6被打开以允许任何排队的帧被传输。在第二个时间段T中,队列6被填充时,队列6的GateState被关闭,队列7被打开以允许传输任何排队的帧。所有其他队列的门都开着。时间区间T的选择在T.5中讨论。流量调度的状态机周期时间(OperCycleTime;见8.6.9.4.20)将被设置为2T,以适应两个闸门操作的时间间隔之和。

如果有任何其他队列的流量调度需求,则可以扩展门控列表(GCL)以适应这些需求。但是,队列6和队列7的门的状态变化之间的时间间隔必须是T,因此,为了满足CQF要求,OperCycleTime必须是2T的倍数。图T-2给出了在流量调度仅支持CQF的情况下最简单的流量调度配置。
在这里插入图片描述

5 时间的考虑(Timing considerations)

5.1 T的选择

T的选择应使其足够大,以容纳在有关流的类测量间隔期间可以接收的流数据,加上至少一个最大干扰帧或帧片段。确保与类测量间隔相关的关键性能方面是很重要的。换句话说,如果一个流或一组流在一段时间内被观察到,那么该流或一组流的保留数据速率将不会在任何观察到的时间周期内被超过,该时间周期等于与这些流相关的类测量间隔。这有效地为T的选择设置了一个下界,即它不应该小于所测量的类的间隔(interval),还对较大的T值设置了一个限制,即它们应该是所测量的类的间隔的整数倍。

如果正在处理与两个不同观测间隔相关的流,例如,如果使用SR Class A(优先级3)和SR Class B(优先级2)的流通过桥,那么用于传输流量调度的OperCycleTime必须是正在使用的两个类测量间隔的公倍数,以便使传输周期能够正确匹配所选的两个T值。

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

流量调度基于两个类测量间隔中较小的125 μs,但现在在门控制列表中有4个条目(与图T-2中的2个条目相反),给出了500 μs的整体周期时间。门控制列表每125 μs切换一次流量分类7和6的门状态,每250 μs切换一次流量class 5 和class 4 的门状态。

在这里插入图片描述
在这里插入图片描述

5.2 循环交错(Cycle interleaving)

在某些情况下,特别是在接收和传输端口之间的数据速率不同的情况下,可以希望在较快的端口上交错循环,以便最好地利用可用的较高带宽,并减少当流通过较快部分的传输路径时增加的延迟。由于一对队列之间的接收和传输的循环切换对接收帧的传输造成了延迟,当一个队列被允许传输时,它的所有接收帧都将进入队列,因此所有的帧都将以突发的方式传输,假设优先级允许,并且传输队列使用严格的优先级传输选择算法(8.6.8.1)。因此,如果从给定端口接收到的流量在时间间隔T内被分散,并且全部发送到同一个队列,则发送的流量将被压缩为突发流量。如果传输数据速率是接收数据速率的10倍,那么该突发的最大长度是T/ 10,因此在该传输端口的可用带宽中有可能再容纳9个这样的突发。通过在接收端口和传输端口上设置适当的时间,接收和传输周期可以交错,这样就可以发生额外的传输突发。在图T-5的例子中,我们假设:

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

b)流数据传输在一个端口Tx1上。

c) Rx1和Rx2以Tx1的一半(或更低)的数据速率运行。

d)所有流流量都是SR类A,接收优先级为3。

在这里插入图片描述
在接收端,Rx1接收到的优先级为3的流量在奇数周期被发送到流量分类队列7,在偶数周期被发送到流量分类队列6。同样,Rx2上收到的优先级为3的流量在奇数周期被发送到流量类队列5,在偶数周期被发送到流量类队列4。然而,相对于Rx1的循环,这些循环被抵消了T/2。

在传输端,每个队列在T/2时处于打开(发送)状态,在3T/2时处于关闭(接收)状态。门打开/门关闭事件的时间安排使得在任何时间只有一个队列在传输。

应该注意的是,对于这样的方案,尽管发射侧似乎是基于T值(其为Rx侧使用的值的一半)进行操作,但从源于给定接收端口的流的角度来看,效果是Rx和Tx定时相同,因为在该端口上接收的帧在每个时间段T中发射一次,如前一点c)所假设的,发射速率是接收速率的两倍(或更多),因此可用的发射带宽等于或大于接收带宽。因此,交织满足T.5.1中规定的要求Tx1下游的桥梁可以使用T/2运行,如果有可能传输端口,通过此网桥的流对延迟的贡献将是T/2,而不是第一个桥贡献的T。

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

Note:虽然本标准中描述的流量分类数量限制为8个,但IPV的值没有这样的限制。如果一个系统支持8个以上的流类,那么就可以定义大于4的交错因子。

5.3 相邻端口之间的循环对齐(Cycle alignment between adjacent Ports)

到目前为止的例子都假设了一个完美的世界,其中从发送端口到接收端口的传输是瞬时的,并且发送和接收系统的内部时间是完全同步的。在现实中,传输需要时间,同步并不完美。因此,有可能在下游接收端口切换了接收和传输队列后,传输端口启动了一个传输突发的最后一帧,这意味着最后一帧被放在了错误的队列中。类似地,如果计时不对中以另一种方式工作,则传输端口有可能提前完成其脉冲的传输,并在下游端口改变状态之前切换到传输下一个脉冲。
为了避免这个问题,必须对时序进行调整,以便当接收端口更改流过滤器的状态,将传入帧定向到不同的出站队列时,仍然没有帧需要从上游传输端口传输或正在传输。这可以通过“略微”推迟传输窗口的开始和“略微”提前传输窗口的结束来实现。略微提前或延迟的值取决于许多因素,包括以下几点:

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

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

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

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

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

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

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: qwt-6.1.2.pdf是关于Qwt(Qt Widgets for Technical Applications)版本6.1.2的文档手册。Qwt是一个基于Qt库的C++绘图和数据可视化解决方案,被广泛用于科学和工程应用。该文档手册提供了Qwt库的详细说明和使用方法,包括类、函数、模块和示例等。它可以帮助开发者快速了解和掌握Qwt的特性和使用技巧,以便正确和高效地使用该库进行数据可视化开发。 qwt-6.1.2.qch是关于Qwt库版本6.1.2的Qt帮助文档。该文档以帮助文档的形式呈现,结合Qt帮助系统的特点,方便开发者快速访问和查阅。它包含了关于Qwt库的全面的信息,包括类、函数、枚举、信号和宏等,开发者可以通过关键字搜索、目录导航和索引查找所需的文档内容。 对于使用Qwt库进行数据可视化的开发者来说,qwt-6.1.2.pdf和qwt-6.1.2.qch是非常重要的参考资料。使用qwt-6.1.2.pdf可以深入了解Qwt库的特性和使用方法,通过示例和说明可以更好地理解和应用Qwt的功能。而使用qwt-6.1.2.qch可以更方便地随时查询和查阅有关Qwt库的文档信息,在开发过程中遇到问题时能够快速定位并解决。 总之,qwt-6.1.2.pdf和qwt-6.1.2.qch提供了关于Qwt库的详尽文档信息,对于使用Qwt进行数据可视化开发的开发者来说,它们是必不可少的参考工具。通过学习和掌握这些文档,开发者可以更好地使用Qwt库进行科学和工程应用的开发工作。 ### 回答2: qwt-6.1.2.pdf和qwt-6.1.2.qch是与Qwt库相关的文件。 Qwt是一个基于Qt框架的绘图库,用于创建各种类型的绘图和数据可视化应用程序。qwt-6.1.2.pdf是Qwt库的文档文件,提供了关于Qwt库的详细说明和使用指南,包括库的安装、配置和使用方法。它包含了各种示例和代码片段,帮助用户更好地理解和应用Qwt库。 而qwt-6.1.2.qch则是Qwt库的帮助文档文件,它是Qt助手应用程序的文件格式,可以通过Qt助手来打开和浏览。qch文件包含了Qwt库的类和函数的详细信息,可以通过关键字搜索和导航,方便用户了解和使用Qwt库的各种功能。 这两个文件对于使用Qwt库开发应用程序的开发者来说非常重要。通过阅读qwt-6.1.2.pdf,开发者可以了解Qwt库的整体架构和使用方法,快速掌握Qwt库的主要功能。而qwt-6.1.2.qch文件则提供了方便的API文档和代码示例,可以帮助开发者更快地查找和理解Qwt库的各种类和函数,提高开发效率。 总之,qwt-6.1.2.pdf和qwt-6.1.2.qch是与Qwt库相关的文档文件,包含了Qwt库的详细说明和API文档,对于使用Qwt库开发应用程序的开发者来说是非常有用的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度不睡觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值