APP下载

时间触发以太网确定性调度设计与研究

2019-03-19,,,

计算机测量与控制 2019年3期
关键词:字节以太网交换机

,,,

(清华大学 计算机科学与技术系,北京 100084)

0 引言

现在航空电子实时关键系统的架构核心是综合模块化航空电子系统,未来航空电子系统将向分布式综合模块化航空电子系统发展[1],需要大量实时关键数据需要传输。在分布式实时关键系统中有大量的节点,且通过网络通信,实时数据传输的可靠性和延时直接影响系统的性能。由于分布式的规模放大了网络通信的不确定性[2],所以使网络保持一个高效稳定的状态是提高系统性能的有效途径。针对这个问题,国外现在提出了AS6802[3]时间触发以太网(Time triggered Ethernet,TTE)标准以保证网络的高通信速率、高实时性、高可靠性。时间触发以太网是在以太网的基础上进行实时适应性改造,在同一网络上无缝连接原有的不同类型的应用业务。同时,时间触发以太网是介质访问控制(Media Access Control,MAC)层服务质量的增强,对于使用异步标准以太网的应用是透明的,在分布式应用间提供确定的,同步的,无拥塞的通信并且不被任何异步的标准以太网流量负载影响,是现在国际上最新的一项新型总线技术。国外的TTTech公司已经有相应的开发产品[4],已有成功的应用案例[5]如美国的Orion 载人飞船采用基于1000BASE-CX 物理层和双冗余配置的TTE网络综合互连方案。国内现主要是预研和开发阶段。

TTE系统主要包括时间同步算法,TTE交换机和TTE网络控制器等关键部分。针对嵌入式环境中单交换机网络,设计了一种采用FPGA来实现混合流量实时交换的方案并进行了物理实验测试。文章主要分为五个部分。第一部分介绍TTE系统整体概况;第二部分介绍TTE交换机设计的整体结构;第三部分介绍实现同步的方法;第四部分进行试验测量验证;第五部分进行总结和问题分析。

1 TTE系统的基本组成

整个时间触发以太网系统如图1所示。

图1 时间触发以太网示意图

整个网络中时间触发以太网交换机是核心关键部件,TTE交换机与TTE交换机之间可以单链路或双链路冗余互联;同时还包括了TTE网络控制器、标准以太网控制器和终端,终端可以接入交换机上不同端口做备份。针对单交换机与各终端星型互联的情况下,设计的TTE交换机简易结构框图如图2所示。

图2 交换机基础结构示意图

一个时间触发交换机主要分为三层,分别是时间同步层、时间触发(Time-Triggered,TT)交换层、事件触发(Event-Triggered,ET)交换层[6]。应具有以下功能[7]:

1)支持时间同步协议。

2)区分TT数据帧和ET数据帧,并实现TT数据帧对ET数据帧的抢占。

3)TT数据帧的无存储转发以及对ET数据帧按着标准以太网要求的转发。

4)实现对被抢占的ET数据帧的重传。

时间同步层所发送的时间同步协议帧采用标准的以太网帧格式,在类型字段中定义一个特定的值(在研发实验中定义的测试值为16位16进制数0x0 889)供TTE网络控制器解析。与定义时间同步协议帧一样,在标准以太网帧中类型字段定义另一个特定值(在研发实验中定义的测试值为16位16进制数0x0 888)表示此数据帧是TT数据,这样一来通过对接收到的数据帧的类型字段进行判断就能区别出这是时间同步帧,还是TT数据帧,亦或是ET数据帧。

2 交换机硬件设计方案

交换机各功能模块如图3所示。

图3 交换机功能模块划分

此设计主要由4个端口和中央的调度模块组成。其中每个端口完成解析数据包、查询目的MAC以及收发功能,每接收到一个ET数据帧,就用一个32位接收描述符与其相匹配,对于接收到的TT数据帧,不占用描述符。同时将时间同步协议帧的发送功能集成到了端口中,并未集成到调度模块,降低调度模块设计的复杂度。

2.1 接收模块

状态机如图4所示。

图4 接收模块状态机

其中主要分为5个接收状态。初始复位之后先进入不接收状态,没有接收使能时自然过渡到空闲状态。

1)空闲状态:当没有接收使能时或者接收使能信号消失时要回到空闲状态,或者在此阶段接收到了接收使能信号但是帧间距不符合要求就要进入不接收状态;

2)等待前导码状态:当收到了接收使能信号,但是到来的数据不是前导码8位16进制数0x55时,停留在此状态,若是收到了前导码8位16进制数0x55则进入等待定界符状态;

3)等待定界状态:在收到了前导码8位16进制数0x55后,等待定界符8位16进制数0xd5的到来,当定界符到来时,且满足帧间距要求,就进入接收数据状态;

4)接收数据状态:在这个阶段要进行数据的接收,数据接收完后回到空闲状态,若是在接收阶段出现了问题就进入不接收状态。

5)不接收状态:当有接收使能时,出现了错误的情况就一直保持在不接收状态,直到接收使能消失时才回到空闲状态。

2.2 调度模块中状态机

调度模块中状态机如图5所示。

图5 调度模块状态机

2.2.1 对于ET数据流量

调度模块和发送模块协调工作,根据各端口存储的接收描述符的数量,对ET数据帧按着轮询方式[8]进行调度转发,对于被抢占的ET的调度待TT数据帧转发完后进行重新调度。ET数据帧输出时采用随机存取存储器(Random access memory,RAM)缓存,当需要对ET数据帧进行重传时,将地址指针重新指到ET数据帧在RAM中起始存储地址处重新开始发送即可。

2.2.2 对于时间同步数据帧

在定时发送时间同步协议帧时,若当前发送端口上有ET数据帧正在发送,直接进行抢占;若当前发送端口正在发送TT数据帧,则等待此TT数据帧传送完后,紧接着传送时间同步帧。

2.2.3 对于TT数据流量

交换机对TT数据帧的转发,不管是周期性的TT数据,还是突发性的TT数据,都是基于以太网数据帧类型字段值是否为16位16进制数0x0 888,并且会记录各端口的TT数据输出缓存是否被占用。

识别出是TT数据帧后,若此时该TT数据帧去往的目的端口正有ET数据输出则立即停止,并等待标准帧间距间隔后,传输TT数据帧;若此时该TT数据帧去往的目的端口有时间同步数据帧输出,待时间同步数据帧传输完后将TT数据帧立即输出;若此时端口没有数据传输,则直接对TT数据帧立即进行转发,这样就可以做到无存储转发。

对于周期性的TT数据,可以离线生成调度表,下载到交换机所连接到的终端上,在基于抢占的方式下并不需要将离线调度表下载到交换机上,只需各个终端根据调度表发送TT数据帧,交换机对TT数据进行转发时就不会有冲突。对于突发性的TT数据,在某个终端进行发送TT数据前,先查询此TT数据流量的目的端口的TT数据帧输出缓存是否被占用,若被占用,则此终端此时不能发送TT数据帧,若没有被占用,则此终端此时可以发送TT数据。

2.3 发送模块中状态机

发送模块中状态机如图6所示。

图6 发送模块状态机

发送进程只关心发送缓存中是否有数据需要发送,只要发送缓存不空,就进行数据发送。主要有7个状态,整体是一个顺序执行的过程,初始化后进入空闲状态。

1)空闲状态:当没有发送请求或者帧间距不符合要求时停留在空闲状态,当有发送请求且此时帧间距符合要求时进入发送前导码状态。

2)发送前导码状态:发送7个字节的前导码8位16进制数0x55,然后进入发送定界符状态。

3)发送定界符状态:发送1个字节定界符8位16进制数0xd5,然后进入发送数据状态。

4)发送数据状态:发送以太网帧数据,当发送到还剩最后一个字节需要发送时,进入发送最后1个字节状态。

5)发送最后1个字节状态:将最后一个字节发出后直接进入结束状态。

6)结束状态:在此状态中判断是否数据帧已经完全发出,是否需要重传,若发送完成进入结束初始化阶段。

7)结束初始化阶段:将一些发送进程用到的变量进行初始化后回到空闲状态。

2.4 交换机中单向通道数据交换过程

交换机中的数据从接收端口【N】到输出端口【M】整体过程如图7所示。

图7 3种类型数据转发流程图

当交换机端口【N】接收到数据时(假设此数据帧去往【M】端口),先判断数据类型字段:

1)如果是ET数据帧,将此数据帧写入接收缓存中并分配给此数据帧一个接收描述符。接收完成后,若此数据帧CRC校验正确,就将此ET数据帧存储在缓存中的地址,数据帧长度,以及将要去往的目的端口号等信息写入描述符当中;若此数据帧循环冗余校验(Cyclic Redundancy Check,CRC)校验不正确,则此描述符留给下一个数据帧使用。同时下一数据帧到来时接着从此校验错误的数据帧起始地址开始存储,直接将原来错误的数据帧覆盖。调度程序每次查询各接收端口的接收描述符是否为空。若不空就读取接收描述符的信息,调度程序根据接收描述符的信息将N口的接收到的ET数据帧从接收缓冲中读出写入到到【M】端口的ET发送缓存ET_fifo。

2)如果此数据帧是TT数据帧,由调度程序直接将此TT数据帧调度到【M】端口的TT_fifo,并不写入接收缓存,也不分配接收描述符。

3)当定时时间到时,发送时间同步帧程序会将时间同步数据帧写入到各个端口的TTtime_fifo,其中也包括【M】端口。

4)最终由【M】端口根据自己端口中3种发送缓存中是否有数据需要发送,进行按优先级的处理,然后再将数据输出。

3 时间同步方法

在分布式系统中,各个物理分散、彼此相对独立的节点各自维护其本地的时钟,各时钟晶振的频率稳定性、运行环境不一样,导致即使某一时刻所有的时钟是一致的,一段时间后这些时钟仍然是不一致。若没有一个统一的全局时钟,就无法保证系统中任意多个事件间的先后关系,更无法做到在同一时刻同步解决相同的问题,因此需要时间同步。

时间同步方法按同步作用路径上可分为主从同步和互同步两大类。主从同步不存在由从节点到主节点的同步作用路径,如:泛洪时间同步协议(The flooding time synchronization protocol ,FTSP[9])、网络时间协议(Network Time Protocol,NTP[10])、IEEE1588[11]等,优点是算法稳定性好;缺点是对主节点精度可靠性要求高、需要维护网络拓扑,如建立同步树等。互同步任何两个节点间都可能存在同步作用路径,如:参考广播时间同步(Reference Broadcast Time Synchronization,RBS[12])、成对广播同步(Pairwise broadcast synchronization,PBS[13])、共识时钟同步(Consensus clock synchronization,CCS[14])等,其优点是容错性较好、可参考信息较多;缺点是系统收敛情况较复杂,通信、计算开销较高。

图8 两步式同步过程

在TTE AS6802[2]中采用的是互同步策略,指定了两步式同步方法,如图8所示:在第一步中,同步主机向压缩主机发送同步协议控制帧,压缩主机由这些协议控制帧的相对到达时间计算出平均值,然后发送包含时间校正信息的新的协议控制帧作为响应,反馈给同步主机和同步客户端。同时采用了透明时钟的机制,容忍了同步协议控制帧在收发过程中的交换延迟,使得其适用于多交换机网络。

而针对本实验中所采用的单交换机网络的情况,设计采用主从式一步同步方法,如图9所示。由星型结构中的交换机每隔固定时间向各终端节点发送含有同步时间戳的时间同步数据帧,各终端节点解析出时间戳来修正自己的本地时钟,此方式的时间同步数据帧传输延迟的不确定性更小,时延更短。

图9 一步式同步过程

设计的时间同步协议帧的格式如图10所示。协议帧采用网络互连协议(Internet Protocol,IP)帧头,用户数据报协议(User Datagram Protocol,UDP)帧头,共72字节长(含8字节前导码)。在UDP数据字段开头的2个字节没有用,而是从第3个字节起,开始存储8个字节的时间戳。

图10 时间同步数据帧格式

设计的时间戳格式如图11所示。

图11 时间戳格式

时间戳共64位,最后4位保留。时间戳以系统时钟周期为一次计数周期,每隔一个计数周期,时间戳中对应系统周期的计数值加1。此系统中sysclk为200 Mhz,也就是5 ns记1次数,时间戳中对应纳秒的计数值加1,当计数到199时,对应微秒的计数值加1,纳秒计数值归0,以此类推。当需要进位时向上进位加1,当每个字段计数到最大值时归0。年字段只设置了6位,是一个偏移值,最大计数到63,实际应用时另设置一个初始值,初始值加上年字段的偏移值就代表当前的年份。

如图12所示,时间戳记录的是Txc时钟域的时间同步数据帧有效信号Txdv第一次出现在物理链路上,经sysclk打两拍后同步到sysclk时钟域的时刻Ttimestamp:

Ttimestamp=Tsend+t1+Ts+Ts

(1)

式中,Ttimestamp指时间戳时间,Tsend指物理线路发出时刻,t1指的是使能信号出现到sysclk第一次采集到使能信号之间的时间差,Ts指sysclk的时钟周期。在图中可以看到同步协议帧中所存储的时间戳是随时间同步数据帧的发出随打入,所以从发送时间同步数据帧的定时时刻起,到物理链路上发出同步帧之间的等待时间也会记录到时间戳中,不用再另外进行时间补偿。

图12 时间戳打入时刻仿真图

在接收端采用同样的策略,接收端完全接收完8个字节时间戳时(也就是接收数据字节计数从0到59时,此时共60个字节)产生Rxc时钟域的change信号,由sysclk打两拍同步到sysclk时钟域上,然后接收端再根据时间戳的内容修正本地时间,如图13所示。

图13 接收端解析时间戳

接收端修正本地时间时,不能直接使用时间戳修正。因为从时间同步数据帧出现在物理链路上,到change信号同步到sysclk时钟域上之间的时间差为T_delay:

T_delay=T_trans+T60+t2+Ts+Ts

(2)

式中,T_trans指数据帧在链路上传播时间,T60指接收端接收60个字节数据的时间,t2指change信号出现到sysclk第一次采集到change信号之间时间差,Ts指sysclk的时钟周期。由于发送端和接收端的sysclk都是采用200 MHz,所以时间戳接收端相对于时间戳发出端,本地时间修正为Time_correct:

Time_correct=Timestamp+(t2-t1)+T60+T_trans

(3)

式中,(t2-t1)在(-5 ns,+5 ns)之间,T_trans很小暂时忽略。而接收端网口phy时钟是125 MHz,8 ns一周期,而接收端以200 MHz主时钟计数,所以将T60折算成需要补偿的时间戳计数值正好是60*8/5=96,是个整数值可以整除,便于程序设计。这也是为什么要将时间戳存储在数据帧的第53字节到第60字节之间。所以最终本地时间的计数值修正为:

Time_correct=timestamp+96±1

(4)

取平均值:

Time_correct≈timestamp+96

(5)

4 试验测量和分析

实验测量是基于ALINX7101实验板。该板使用的FPGA型号为XC7A100T-2FGG484I,属Xilinx 公司 Artix-7 系列的产品,速度等级为 2,温度等级为工业级。有4个千兆以太网接口。

4.1 事件触发流量速率、抖动、丢包率测量

先取1个节点个当交换机,将写好的verilog[15]程序烧入,将4个端口分别连上4台测试电脑PC1至PC4,设置IP地址分别为192.168.1.1至192.168.1.4,掩码为255.255.255.0。因为是局域网内测试,暂时不需要设置网关。在每台PC上开起Iperf3测试软件,每台PC既当服务端又当客户端,服务端测试端口为12345,测试时间是10s,测试软件的发包速率是1 Gbit/s,发送UDP格式的数据包。经测试可查看网络速率,抖动,丢包率等情况。如图14所示。

图14 测试网络传输速度、抖动、丢包率

测试结果显示网络速率平均值为940 Mbit/s左右,抖动平均值为0.04 ms左右,丢包率为0.15%左右。

但由于是软件测试,测试结果只作为大概一个性能的估计,其中的测试数据包的丢包率测试并不是十分准确。采取用硬件测试的方法,将4号端口连接的IP地址为192.168.1.4的台式PC机换成一个发固定数量测试数据帧的FPGA开发板,测试数据目的MAC为1号台式机网卡MAC,帧间距在1Gbit/s的速率下为标准的96 ns。在1号台式机上打开wireshark抓包软件,在其中端口的interface details中的statistics标签下,可以看到该机网卡上收到包的统计信息,测试开发板每次固定发430 000个数据包。在未开始发送测试数据前,如图6中右侧两列所示,只有1号台式向外发送数据,并未有接收数据统计;当开始发送测试数据时,此时其他端口无数据流量不引入对1号口统计接收数据包个数的影响,所统计的数据包个数完全来自于4号端口,如图15中所示,并未发生丢包。

图15 FPGA测试板测试丢包情况

4.2 时间触发流量延迟测试

在modelsim中编写testbench,指定1端口一直在发送广播包,2端口先发送2个目的地址为3端口的标准以太网数据帧,后发送2个目的地址为4端口的时间触发数据帧,指定抓取交换机调度模块的相关信号,可以观察到2端口的时间触发流量抢占了4端口对标准流量的输出;时间触发流量从进入到输出之间有抢占的情况延迟值大概是366.5ns,如图16所示。无抢占直接转发时延迟大概是262.5ns,如图17所示。

图16 仿真TT帧有抢占时延迟

图17 仿真TT帧无抢占时延迟

使用FPGA的内嵌式逻辑分析仪,抓取物理信号,有抢占时结果如图18所示,看到当收到类型格式为TT数据帧的时候,抢占对类型格式为ET数据帧的传输,ET数据帧有效信号中断,等待标准帧间距后发送TT数据帧。有抢占时TT数据帧在交换机上从接收到发出的延迟大概是(1808-1761)*8=376 ns。无抢占时如图19所示,当收到类型格式为TT数据帧的时候,输出链路上无数据发送时,TT数据帧在交换机上的传输延迟大概是(1762-1729)*8ns=264 ns。

图18 ILA抓取TT帧有抢占时延迟

图19 ILA抓取TT帧无抢占时延迟

4.3 时间同步效果实验测量

为了观测同步效果,将PC换成7101FPGA板卡,向板卡中烧入可以解析时间同步帧的程序,同时在程序中设定每1 ms通过一个I/O口输出一个持续时间200 us高电平,将2个板卡上的I/O口连接到一台示波器上,观察上下2个高电平之间的时间差。如图20所示。通过对时间差的计算就可以算出同步精度是多少。

图20 定时输出高电平方波

4.3.1 1 s同步一次

以1 s为周期进行同步时,1 s钟内会有1 000次高电平出现,系统刚上电测试时,脉冲之间最小相差7 ns左右,如图21所示;最大相差582 ns左右,如图22所示。但随着系统运行时间增加,脉冲之间最大相差会增长到600 ns左右。

图21 1 s同步一次时最小同步时间差

图22 1 s同步一次时最大同步时间差

4.3.2 10 ms同步一次

若是以10 ms为周期进行同步时,系统刚上电测试时,脉冲之间同步的时间差最小相差200 ps左右, 如图23所示。最大相差24 ns左右,不会超过25 ns,如图24所示;。但随着系统运行时间增加,芯片温度升高,最大相差会增长到40 ns左右。

图23 10 ms同步一次时最小同步时间差

图24 10 ms同步一次时最大同步时间差

4.3.3 20 ms同步一次

若是以20 ms为周期进行同步时,系统刚上电测试时,脉冲之间时间差最小相差200 ps左右,如图25所示;最大相差28 ns左右,不会超过30 ns,如图26所示。但随着系统运行时间增加,最大相差会增长到45 ns左右。

图25 20 ms同步一次时最小同步时间差

图26 20 ms同步一次时最大同步时间差

5 总结和问题分析

此交换机设计实验性的融合了TT数据和ET数据的无缝连接转发,并实现了TT数据转发的固定延时的保证,同步时间精度也达到了μs级、ns级。针对于TT周期性数据的转发并没有采用将离线调度表存储到交换机上的策略,而是采用的直接基于抢占的方式,需要判断出类型域后才能进行抢占,这样做相对于基于离线调度提前预置好输入与输出端口之间的连接线路而言,造成了一定延时的增加,但降低了交换机设计的复杂度,同时增加了对于转发突发性TT数据帧的灵活性。也带了一些挑战,比如是否能提前预知将要到来的是TT数据帧以及TT帧将要去往的目的端口,那么就可以像基于离线调度表一样,真正做到几乎是无延迟的转发;针对于突发性TT数据帧的转发,现在采用的避免冲突的策略是在发突发性TT数据流量前向交换机查询输出端口的TT发送缓存是否可用,如何更好的解决避免两个来自不同端口的TT流量同时突发性的发往同一个端口,又是一个问题。

猜你喜欢

字节以太网交换机
面向未来网络的白盒交换机体系综述
No.8 字节跳动将推出独立出口电商APP
局域网交换机管理IP的规划与配置方案的探讨
更换汇聚交换机遇到的问题
No.10 “字节跳动手机”要来了?
基于地铁交换机电源设计思考
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代
基于以太网的计算机与数控系统通信技术研究
人类进入“泽它时代”