张 旭,马 可
(1 中国铁道科学研究院 研究生部,北京 100081;2 中国铁道科学研究院集团有限公司 机车车辆研究所,北京 100081;3 北京纵横机电科技有限公司,北京 100094)
在列车以太网通信技术中,数据通信的实时性保障有3 种,一是修改CSMA/CD 协议,如RTCSMA/CD 协 议、CSMA/DCR 协议等[1],但这样会在数据量过大的时候带来不确定性和时延;二是保留完整的以太网链路层,修改以太网的传输层,能够从软件层面提升网络的实时性,但是没有解决以太网由硬件带来的时延和不确定性[2];三是在MAC 层增加一套控制协议,这种做法尽管牺牲了以太网的通用性,但是能够实现精确到亚微秒的硬实时数据传输[3]。
在已上线的动车组列车中,通信协议保留了以太网的数据链路层,在传输层以上增加了TRDP协议,该协议由IEC 61375-2-3 定义,利用软实时的方法提升了网络的实时性和确定性,但是冲突检测和故障重传等机制带来的时延和不确定性依旧没有解决[4]。
时间敏感网络(Time-Sensitive Networking,TSN)是一套可用于硬实时场合的协议簇,其前身是2005 年问世的音视频桥接技术(Audio Video Bridging,AVB)[5],擅长传输音视频等大数据实时流量。TSN 对以太网进行了扩展,利用优先级调度机制、冗余机制、帧抢占机制等,将实时消息的延迟和抖动控制在最低限度。文中针对基于时间敏感网络的列车以太网通信技术进行了研究。
TSN 协议主要工作在MAC 层,按照其功能可以分为时钟同步、低时延、可靠性保证、资源预留4种[6]。每种功能相关协议如图1 所示。
图1 时间敏感网络协议簇
TSN 通过高精度的时钟同步、带宽预留、流量整形、流量过滤与管理、帧抢占、时间感知调度、无缝冗余等技术,使传统以太网发展为高确定性、低抖动、低延迟的实时数据通信网络[7]。
下面将对部分协议的具体功能做简单介绍。
TSN 是 一 项VLAN 技 术,工 作 在MAC 层,采用的帧格式是IEEE 802.1Q 的帧格式,包含VLAN Tag 标签[8],如图2 所示。进入TSN 网络的帧都会被交换机打上VLAN 标签,利用TSN 的机制在网络中传播。帧的Priority 域为3 位,可以分为8 个优先级,不同类型的业务流量会按照不同的优先级缓存进不同的队列中,依据调度策略进行调度。
图2 时间敏感网络的帧格式
IEEE 802.1 AS 协议衍生自IEEE 1588 定义的精准时钟同步协议(Precision Time Protocol,PTP)[9],该协议规定,1 个网络中只能有1 个主节点(master),其余的终端(endpoint)全部作为从节点(slave),而交换机不能作为时钟节点,只能作为透明时钟。
时间同步需要MAC 层的硬件支持,硬件中包含1 个计数器,当一帧发出的时候,计数器会记录此时的时间戳,利用Peer to Peer Delay 计算出传输过程的时延,计算过程如图3 所示。
图3 gPTP 频率同步与传输时延测量
首先要对二者的时钟频率进行同步。主机(master)会周期性地在T1发送Sync 报文,在接下来的某个时刻发送Follow_up 报文,其中记载了T1。从机(slave)能够按照本地时钟测量出收到Sync 报文的时间为T2。下一个周期,主机在T3发送Sync报文并在下一个Follow_up 报文将T3带给从机,从机在T4时刻收到,此时就能计算出主机的时钟频率的比值R为式(1):
接下来,从机发送PDelay_Req 报文,请求测量与主机延迟时间。该报文离开从机的物理层时,从机得到本地时钟T5。PDelay_Req 报文到达主机物理层时,主机得到本地时钟T6。主机随后生成一 个PDelay_Resp 报 文,在T7时 刻,将T6发 送 给 从机,从机于T8时刻收到该报文。随后,主机又在某一时刻生成PDelay_Resp_Follow_Up 报文,将T7发送给从机。这样一来,从机就知道了T5-T8的4 个时间戳,然后利用式(2)计算延迟时间TDelay:
从机获取了与主机的频率比值R和到主机的延迟时间TDelay后,就能够调节时间的频率与相位,完成与主机的时间同步。
在IEEE 802.1 Qbv 协议中,对时延要求很高的数据流称为定时流量(Scheduled Traffic,ST),这类数据流被延迟后可能导致比较严重的系统故障;其余数据流被称为“尽力而为”流量(Best Effort,BE),这类数据对实时性要求很低,但流量较大,且发生的时刻不可预测[10]。因此,IEEE 802.1 Qbv引入了门控调度机制,每个发送端口配置门控列表,根据门控列表从缓存队列中选择帧进行传输,如图4 所示。
图4 门控调度示意图
流量可按照以太网帧中的Priority 域分为8 个优先级不同的队列,所有队列都与一个时间敏感的Gate 相关联,当Gate 的状态为“O(Open)”时,可以从此队列中选择帧进行传输;当Gate 的状态为“C(Close)”时,不能从此队列中选择帧进行传输。队列状态的变化由端口控制器维护的门控列表决定,门控列表可以按照一定周期、执行队列状态的不同变化组合。其中,BE 流量的优先级为最低。该机制可以为周期性的ST 流量创建一条独享的无冲突通道,在大量BE 数据流的背景下,ST 数据流的传输时延仍旧可以确定。
TRDP 协议栈是为了保证在列车通信网络中传输的数据具有实时性、可靠性和安全性而设计的,以标准以太网协议栈为基础,采用标准的以太网硬件以及标准的TCP/IP 协议,在传输层和应用层之间添加了TRDP 层[11],如图5 所示。
图5 TRDP 协议栈
IEC 61375 中规定,在TRDP 协议中,列车的实时数据主要有2 种,一种为过程数据(Process Data);一种为消息数据(Message Data)。过程数据的数据长度小,采用周期性发送方式;消息数据长度大,带宽占用大,采用非周期发送方式,实时性要求低。因此,TRDP 协议将过程数据和消息数据分别进行调度传输。
TRDP 应用层由TRDP 层提供过程数据与消息数据的通信服务,应用层与TRDP 层之间利用服务原语进行交互,应用层只需要提供需要发送的数据并设置发送参数,TRDP 层就会完成通信,并将收到的数据汇报给应用层。
TRDP 层会使用通信标识符(Communication Identifier,ComID)作为协议数据单元(Protocol Data Unit,PDU)的标识符,包含在TRDP 报文头部中。该标识符和源地址(或者目标地址)共同作用,表明了这个数据流的唯一身份。
TRDP 层需要传输层和网络层提供Socket 服务。TRDP 使用的Socket 分为TCP 和UDP 这2 种,实时性要求高的过程数据采用UDP 通信,实时性要求低的消息数据采用TCP/UDP 通信。TRDP 的Socket 通信与传统TCP/UDP 基本一致。
TRDP 协议仅在上层采用实时性措施,依靠软实时来提升网络实时性,没有办法保证数据传输的确定性、降低网络时延抖动。
为了兼容标准以太网协议栈,TRDP 层提供了数据传输服务接口。该协议栈的每一层都通过对下层的调用来实现功能,上层对下层完全透明。因此可以采用专门的以太网硬件,包括以太网卡和交换机,并且在软件上修改链路层协议,增加时间敏感网络的相关协议,保证兼容性的同时,又能实现很强的实时性和确定性。
形成的新协议栈如图6 所示。
图6 融合了TSN 协议之后的协议栈
实现方案的程序框图如图7 所示。
图7 实现方案的程序框图
TSN 协议工作在数据链路层中,在协议栈中的主要目的有2 个,一是保证在确定的时间收发数据流;二是对过程数据进行流量预留和调度,保证其有很低的时延。这2 个工作的基础来自于IEEE 802.1 AS 时间同步协议,时间同步能够使网络中的设备拥有相同的时间,这能够保证各个节点对数据流的操作行为都是时间可控的,保证队列的开闭、流量的控制与整形能够按照同一周期和时刻进行操作。
网络上的各个节点时间同步完成之后,IEEE 802.1 Qbv 协议支持依靠门控列表,按照不同的时间周期将不同类别的流量缓存进特定的队列,再执行发送或者接收。此时,可以依据ComID 和源地址(或目标地址)的不同,将过程数据的以太网帧标识为ST 流量,缓存进ST 队列,该队列拥有最高优先级;将消息数据的以太网帧标识为最低优先级的BE 流量,缓存进BE 队列,依靠门控列表来决定传输的时机,如图8 所示。
图8 ST 流量和BE 流量的门控调度
当硬件时钟提供的时钟信号到达静态调度表周期的开始时刻,各个节点的发送端和接收端的门控列表开始工作,提取这一时间段要开放的队列,该队列中的过程数据从发送端的缓存中读取出来,立刻发送到接收端。若此时有消息数据发送至交换机中,该交换机中的门控列表中尚未到达消息数据的发送时间,则该流量会被缓存在交换机中,等待下次发送,如图9 所示。
图9 过程数据在网络中的传送
交换机1 和交换机2 同时开启ST 队列的门,因此终端1 可以将过程数据畅通地发送至终端2,而终端3 的消息数据则会被缓存在交换机1 的缓存中,等待下次发送。
静态调度表会在下一条门控指令执行之前,关闭所有队列,防止未传输完毕的数据流影响即将要传输的数据流而发生阻塞。下一条门控指令执行时,将会有其他队列开始传送,因此,每个周期的时间中,在传输过程数据时,总能保证传输路径上没有冲突且时延能被确定。
同理,在每个周期中,终端和交换机都会有一部分时间提供给消息数据传输,传输方式跟传统的以太网没有任何区别,如图10 所示。
图1 0 消息数据在网络中的传送
这样一来,TRDP 中消息数据和不同周期的过程数据就能在确定性、低时延、低抖动的条件下完成传输。
采用一块ARM 架构的开发板、搭载Ubuntu 18.04 系统的PC 机和2 台具有TSN 功能的交换机,使用RJ45 线连接成星型网络,并在其中1 台交换机上连接网络分析仪,如图11 所示。
在开发板和PC 机上运行C 语言编写的gPTP时钟同步脚本,可以利用PC 机看到时间同步的结果,如图12 所示。
图12 中,“master offset”是从机时钟落后主机时钟的时间,单位是ns;“freq”是频率的差值;“path delay”是传输时延,单位是ns。可以看出,运行一段时间达到稳态后,从机与主机的时间偏差大约控制在±1 μs 以内,传输时延也是稳定的。
图1 2 开发板与PC 机时间同步结果
图1 1 TSN 功能试验设备
将开发板用网线到PC 机上,在开发板上生成周期性传输的128 种过程数据,ComID 分别为10 000~10 127。其中,ComID 为10 000~10 031 的过程数据发送周期为15 ms,10 032~10 063 的过程数据发送周期为60 ms,10 064~10 095 的过程数据发送周期为100 ms,10 096~10 127 的过程数据发送周期为250 ms。
使用网络分析仪向其中一个交换机中注入90% 带宽的负载,视为消息数据。 执行IEEE 802.3 Qbv 脚本,将门控队列的周期设置20 ms,在这20 ms 内,有15 ms 传输过程数据,有5 ms 传输消息数据。
在网络分析仪上运行WireShark 进行抓包分析,4 种过程数据到达终端的时间周期如图13所示。
图1 3 4 种过程数据的发送周期测试
可以看出,在大量消息数据负载的情况下,过程数据的接收周期与预设的发送周期的误差在±10 μs 以内。在高速列车上,根据数据传输的经验,周期最短的牵引、制动等数据的传送周期在20~32 ms 左右,空调、照明等数据的传送周期可达512 ms,因此对于不同周期的过程数据,TSN 技术可以保证其拥有确定的时延和符合要求的实时性。
对时间敏感网络在列车网络中的应用进行了研究,简述了时间敏感网络的部分关键技术,并分析了TRDP 协议与时间敏感网络的可融合性。提出了时间敏感网络与TRDP 协议的融合方案与工作机制,并进行了评估与测试,验证了时间敏感网络应用于列车以太网通信的可行性。试验表明,TSN 协议的使用,能够在大量非TRDP 流量的背景下,将TRDP 流量的时延抖动控制在±10 ms 以内,使列车以太网通信技术的实时性和确定性将会得到更好的保障。