TSN 交换机调度器设计与实现*
2021-08-30袁梦瑶乔庐峰陈庆华王雷淘
袁梦瑶,乔庐峰,陈庆华,王雷淘
(陆军工程大学,江苏 南京 210001)
0 引言
传统以太网遵循“尽力而为”的数据传输方式,并不为网络中的数据提供网络带宽、传输时延、时延抖动等保证。像音频、视频业务,如果不能满足其对传输时延和时延抖动的要求,很可能造成音视频的失真。另外,在工业和汽车控制领域中,用于控制工厂生产和驾驶操作的业务,其传输延迟不确定会导致系统不稳定、控制操作不准确。尽管已经有PROFINET、EtherCAT、CAN 这类网络技术来解决以上问题,但这些网络体系架构封闭,通用性差。基于以上原因,IEEE 802.1 工作组的TSN 任务组制订了时间敏感网络(Time-Sensitive Networking,TSN)标准[1],其高精度时间同步、资源预留及路径控制、流量整形和业务调度等一系列关键技术,能够保证数据传输的实时性和可靠性[2]。
1 TSN 网络
TSN 具有时间同步、流量调度和网络配置3 大关键技术[3]。其中,时间同步是整个TSN 技术实现的前提,流量调度是TSN 技术实现的关键,网络配置是TSN 技术实现的保障。TSN 网络配置模式如图1 所示。集中网络配置控制器(Centralized Network Configuration Controller,CNC)通过集中用户配置控制器(Centralized User Configuration Controller,CUC)得知发送端和接收端对网络带宽和端到端传输时延的需求信息,然后根据需求信息进行运算,并将得到的网络配置参数下发给网络中相关的各网桥[4],由网桥根据配置进行数据转发。
图1 TSN 网络配置模式
为了保证网络服务质量(Quality of Service,QoS),TSN 将网络中的业务流进行区分,并根据传输特性将业务流划分为8 类。每类赋给相应的优先级值,优先级取值范围为0~7。如图2 所示,从数据帧头优先级字段可以获取数据帧的优先级信息。
图2 TSN 网络中数据帧格式
2 TSN 交换机硬件结构设计
本文设计的TSN 交换机硬件结构,如图3 所示。该系统由数据接收MAC 控制器、发送MAC 控制器、数据处理单元、帧分类和双桶哈希查找单元、Crossbar 交换单元、8 优先级共享缓存队列管理器、调度器、处理单元以及时间同步与管理单元组成。
图3 TSN 交换机硬件结构
接收MAC 控制器接收上一网络节点传输过来的数据,并将接收的数据传递给后级数据处理单元。数据处理单元将数据帧头中的关键信息,如源MAC 地址、目的MAC 地址、VLAN ID 等抽取出来,并通过帧分类电路进行分类识别,确定转发关系。与时间同步相关的协议帧,经过Crossbar 被交换到处理单元或时间同步与管理单元;用户数据帧通过双桶哈希查找单元,进行源MAC 地址学习和目的MAC 地址查找,并根据哈希查找电路返回的输出端口映射位图及数据帧长度、转发优先级信息等形成该数据帧的本地头,后由Crossbar 交换单元转发至相应的端口[5]。
在端口处,8 优先级共享缓存队列管理器将数据帧存入共享缓存区,并根据本地头中的优先级信息将数据存储地址压入对应的优先级队列,而后调度器根据流量调度算法选择优先级队列,从队列中取出数据存储地址。数据存储地址指向的数据则由该端口输出。
3 调度器的设计与实现
3.1 设计思路
TSN 中流量调度算法包括严格优先级(Strict Priority,SP)算法、基于信用的整形器(Credit-Based Shaper,CBS)算法、时间感知整形器(Time-Aware Shaper,TAS)算法,又称门控调度算法、循环队列转发(Cyclic Queuing and Forwarding,CQF)算法以及帧抢占(Freemption)等[6]。SP 算法是最常用的一种流量调度算法,依据队列的优先级信息进行传输选择。CBS 算法是一种基于信用的调度算法,可以提前为业务流预留带宽,提供端到端资源管理,保证时间敏感业务流的确定性传输。TAS 算法将不同类型的业务流在时间上隔离,于特定的时间段发送特定类型的数据,实现业务流的传输时延可控。CQF 算法是对TAS 算法的一个改进,在TAS 算法的基础上增加流量入队控制,使流量按照时间计划入队,控制数据进出队列交错进行,确保交换机在上一时隙收到的数据帧下一时隙转发出去,使时间敏感业务流的传输时延易于计算。帧抢占调度算法中,抢占帧可打断当前正在传输的普通数据帧,并对其进行切片,等待抢占帧传输完毕,再继续传输被打断的普通数据帧。此算法可与TAS算法结合使用,减少保护带带宽。
调度器是TSN 交换机的核心单元。如果调度器电路仅涉及严格优先级一种调度算法,交换机就无法满足时间敏感业务流对传输时延可控的要求。本文设计的调度器电路使用SP、CBS、TAS 这3 种调度算法,并可以根据配置灵活使用。具体调度器电路,如图4 所示。图4 中端口支持8 个优先级队列,队列数值越高,优先级越高。所有队列都支持SP 算法和TAS算法,队列7和队列6还支持CBS调度算法。队列后的缓冲fifo 用来暂存队列数据,目的是使电路简便快速地获取队列数据进行流量调度。
图4 TSN 交换机调度器设计
3.2 SP 算法
严格优先级算法的工作原理是选择传输优先级最高的队列。如图5 所示,电路从优先级最高的队列7 开始访问,如果队列非空,则选择该队列中的数据进行传输,否则访问优先级次之的队列6。若队列6 非空,选择该队列数据进行传输,否则依优先级从高到低的顺序访问。
图5 SP 算法工作原理
3.3 CBS 算法
支持CBS 算法的队列有一个信用值Credit。当Credit ≥0 且队列非空时,队列满足传输条件。但是,因为在本文设计的调度器中,CBS 算法是与TAS 算法、SP 算法一起工作的,所以判断队列是否符合传输条件的因素,不仅有队列信用值,还有队列门状态和支持CBS 算法的其他队列的传输状态两个因素。因此,CBS 算法电路中设计门状态监视器电路模块,用来监测队列门状态。当队列门关闭时,队列停止传输,信用值保持不变。设计仲裁器电路模块,从多个支持CBS 调度算法并符合传输条件的队列中选择其中一个队列进行传输。此外,设计队列信用更新电路模块,进行队列信用更新。支持CBS 算法队列的信用更新机制如图6所示。
图6 CBS 算法队列信用更新机制
假如队列正在传输,则队列Credit 以sendSlope速率降低,直至信用下限lowCredit,停止传输;若队列非空并处于等待传输状态,则队列Credit 则以idleSlope 速率增加,直至上限保持不变。sendSlope和idleSlope 两个参数是由处理器配置给支持CBS算法队列的。
3.4 TAS 算法
TAS 算法对流量的调度主要依靠时间同步机制和门控调度机制。在TNS 中各交换机在时间同步的基础上,交换机端口执行处理器单元配置的门控列表,按照时间计划表控制数据输出队列,将调度流量在特定的时间段传输,防止其他流量对调度的流量造成干扰,最终实现调度流量的确定性传输和时延可控。TAS 算法具体电路结构如图7 所示,共分为3 个模块,即列表配置状态机、循环定时状态机和列表执行状态机。状态机与状态机之间相互协助实现门控调度功能,具体工作流程如图8 所示。列表配置状态机接收到来自处理器单元对列表配置更新的信号后,对门控列表和与列表配置相关的参数进行更新,如门控列表长度、循环周期等。当对门控列表重新配置后,则给循环定时状态机一个配置成功等待执行的信号。循环定时状态机收到信号后,根据列表循环周期、执行时间等信息,判断列表是否开始执行。若开始执行,则向列表执行状态机发送一个列表执行信号。列表执行状态机在接收到列表执行信号后,从列表配置状态机处获取门控列表,并依次执行各表项,更改对应的队列门的开关状态。
图7 TAS 算法电路模块
图8 TAS 算法工作流程
4 仿真分析
本文以Xilinx Virtex-6 开发板为硬件平台搭建TSN 交换机电路,其关键调度算法的仿真波形如图9和图10 所示。图9 和图10 展示的是CBS 算法电路的仿真结果图,Credit_A 和Credit_B 信号分别表示队列7 和队列6 的信用值。如图4 所示TSN 调度器设计,队列7 和队列6 都是支持CBS 算法的队列,且队列7 比队列6 优先级高。图9 中1 处显示系统初始化后,队列A 和队列B 都处于非传输状态,信用值都为0;图9 中2 处显示A 队列tansmitting 信号拉高,信用值增加,验证了在A、B 两队列非空且门被打开的情况下,CBS 算法电路可通过仲裁器将传输的优先权赋给优先级较高的A 队列;图9 中3 处显示A 队列信用保持不变,transmitting 信号拉低,验证了CBS 算法电路的门状态监视器模块检测到A 队列门状态变为关闭,并停止该队列的数据传输和信用更新。图10 中4 处显示即使A 队列门打开,其优先级比B 队列高,但B 队列正在传输,A 队列不能打断B 队列的传输,只能等待;图10 中5 处显示A、B 两队列都变空,不满足队列传输条件,调度器停止两个队列的数据传输。
图9 CBS 算法仿真结果1
图10 CBS 算法仿真结果2
5 结语
本文给出了一种TSN 交换机系统设计方案,由数据收发单元、数据处理单元、交换单元、队列管理器和调度器组成。为了满足混合业务流的转发需求,设计的TSN 交换机调度器支持SP、CBS、TAS这3 种调度算法。CBS 算法可预留带宽,保证时间敏感业务流的确定性传输。TAS 算法可保证时间敏感业务流传输时延可控。3 种调度器可根据配置,灵活使用。TSN 交换机关键电路在Xilinx Virtex-6开发板上进行了设计与仿真分析,结果表明,调度器可以满足时间敏感业务流确定性传输的需求。