来源:TSNLAB 微信公众号
前言:TSN不等同于时间门控调度,TSN有很多种调度机制。笔者的目标,是把这篇文章写得既足够简约,又包含足够硬核的信息。希望为读者带来切实的收获。
TSN的核心目标是提供有界时延(bounded latency),即报文在网络中的传输时间不会超过一个确定的值,这个值就是时延的“界”,或者说是时延上界。那么,TSN具体有哪些和有界时延相关的技术呢?(文末会有各个技术的总结。)
首先,与保障时延相关的调度方法,或者说传输选择(transmission selection)机制,位于网络设备(网桥、交换机、路由器等)中、出端口前排队的位置。多个队列基于一定的规则,也就是这个传输选择机制,来判断下一次调度哪个队列中的报文。TSN最新的标准、IEEE Std 802.1Q-2018的8.6.8节中,一共定义了五种传输选择机制。其中,绝对优先级(SP,Strict Priority)是最基础的、也是默认使用的机制。绝对优先级很容易理解:对于优先级为X的队列,当且仅当所有优先级大于X的队列均没有可调度报文时,才允许调度优先级为X的队列。

增强传输选择(ETS,Enhanced Transmission Selection),允许在多个队列之间分配带宽。TSN没有具体指定ETS所使用的算法。例如经典的加权轮询(WRR,Weighted Round-robin)、亏空轮询(DRR,Deficit Round-robin),都符合ETS的描述。

基于信用的整形(CBS,Credit-based Shaping),是AVB时代定义的经典调度方法。它和单速令牌桶(Single-rate token-bucket)机制有点像,但又不完全一样。以下四句话描述的CBS的运作机制:受到CBS整形的队列,如果想调度报文,则需取出相当于报文长度的信用量(credit);当且仅当credit非负时,报文可以通过CBS整形器;当credit为负,或队列中报文积压时,credit以恒定速率IdleSlope增长;当队列为空时,credit清零。CBS的效果,是在为特定队列提供等同于IdleSlope的带宽的同时,尽可能的“打散”报文,使得低优先级的队列也能获得一定的传输机会。

异步流量调度(ATS,Asynchronous Traffic Shaping),也和单速令牌桶机制有点像,甚至ATS调度器的关键配置参数就是cir(CommittedInformationRate)和cbs(CommittedBurstSize)。简单来讲,cir控制整形器允许通过的整体速率,cbs控制整形器能容忍的突发程度。TSN标准中,ATS核心算法部分写了一大堆伪代码,看得人云里雾里,但实际上这段伪代码本质上就是在描述单速令牌桶的整形机制。不过,ATS的优点在于,通过在报文入队时运行算法,给报文分配一个允许调度时间(EligibilityTime)。这样,在传输选择机制进行判断的时候,不需要再重新执行令牌桶的计算。另外,ATS还有一个调度器组的概念,即多个ATS调度器可属于一个ATS调度器组。ATS的伪代码还描述了当ATS调度器组对应一个物理上先入先出(FIFO)队列时的情况。反过来,ATS调度器不依赖于和硬件调度队列进行绑定,因此,ATS调度器可以进行灵活的整形,逐流、或逐汇聚流整形,均可。通过使用ATS进行逐跳整形,网络中不产生大突发和突发汇聚,整体的网络性能会得到改善。

时间感知整形(TAS,Time-Aware Shaping),或者用中文更顺口更常用的说法是就“时间门控”,可谓TSN技术集中的“网红”了。两三年前,国内一些场合在讨论TSN的时候,甚至潜意识中会把TSN和TAS划等号。随着大家对TSN的深入了解,渐渐也能正确认识到TAS只是TSN技术集中的一个。而且,在标准中,TAS仅仅提供了一种基于时间开关门的机制:对于一个队列,当它的门(Gate)状态为开(open)时,可以传输报文;反之,门关(close)时,不可传输报文;通过门控列表(GCL,Gate Control List),来对各队列门的开关状态进行配置。具体如何使用TAS构筑方案,TSN标准是完全不限制的。

有时人们会把TAS当成一种方案,即上下游的网络设备基于时间同步,控制门控开关在上下游之间进行良好的配合,为关键流量构筑一条“特快通道”。这么说没错,但希望各位读者能够识别,TSN中定义的TAS机制,和基于TAS构筑方案,是两件事情。

现实场景中,关键流量的数目很大,为所有人构建“特快通道”不现实,也没必要。TSN标准的附录中,提供了周期排队转发(CQF,Cyclic Queuing and Forwarding)作为一种基于TAS构筑的方案。在网络设备的出端口上划分周期,一个周期相当于一节火车车厢,里面可以装载来自不同流量的报文;这节车厢里的所有报文在下一个网络设备中全部映射到另一节车厢中。由于车厢的映射关系是确定的,端到端的时延就由每跳上的周期所决定了。CQF方案大大简化了门控编排的难度,但代价是一定程度上牺牲了时延(毕竟TSN的首要目标是保障有界时延,而非低时延)——即车厢到早了,也要等到下一个周期才能发车。

帧抢占(Frame Preemption)属于“降低时延”的技术。尤其对于低速率链路,一个低优先级正在发送的长报文,就能阻挡高优先级大几百微秒。帧抢占使得高优先级能够打断正在传输的低优先级报文,大大降低了高优先级的时延上界(假设一个高优先级倒霉蛋,每一跳都刚好被一个低优先级长报文挡住......帧抢占技术就是这个倒霉蛋的小确幸)。当然,帧抢占还可以配合TAS机制,降低保护带(Guard Band)对于带宽的消耗。

下图是上面提到的五种传输选择机制和一种应用方案的总结。细心的读者可能会看出,这些机制是存在组合使用的情况的。其实是这样!TSN并不限制多种机制在组合使用时的顺序关系,更好的理解方式是,每个机制都是报文调度的一个条件,如果多个机制同时存在,则需同时满足条件,才能调度出队。

任何调度方法,不论设计的再精美,也不能独立完成有界时延的保障。举个最简单的例子,网络中所有终端用户一起“耍流氓”,发送大量的流量,总体都超出了网络的带宽容量了,那肯定有人会被丢包。所以,TSN设计了资源管理的机制,来配合调度方方法,形成方案。感兴趣的读者可以阅读下一篇关于TSN资源管理技术的文章。