何向栋,张志平,贾世伟
(中国航空计算技术研究所,陕西 西安 710065)
摘要:新一代航电网络——航空电子全双工交换以太网(AFDX),是为航电信息系统之间进行数据通信而专门制定的协议标准,具有时间确定性、双余度和高可靠性等优点。在分析ARINC 664 Part7规范、通信结构和SN等关键技术的基础上,结合SAE AS6802[2]协议算法,提出一种保持多节点发送时序一致的AFDX帧结构。采用OPNET网络拓扑仿真实现,结果满足帧数据时序一致性要求。
0引言
随着机载飞行条件的复杂化和对安全飞行、舒适旅行等要求的提高,新一代航空电子系统数据传输已由传统的音频通信扩大为图像、多媒体、确定性控制信号等多种数据流业务。航空电子全双工交换以太网(AFDX)[1]基于IEEE 802.3标准,结合航空电子系统特殊需求对该协议的部分MAC和数据链路层进行适应性修改,使其成为具备有确定性和安全性的交换网络技术,形成航空以太网数据网络标准:ARINC 664,其中第7部分重点对AFDX网络通信协议、交换机和端系统等各项内容进行详述,已成功应用到波音787、空客A380和A400M等大型飞机的航电系统中,并将应用于未来国产大飞机C919上。
相比ARINC429和MILSTD1553而言,AFDX网络保留了传统以太网高速、通用以及低成本等特点,同时增加了虚拟链路、带宽分配、完整性监测、警管[2]和冗余管理等特殊机制,兼容ARINC应用协议SNMP和ARINC615A加卸载等协议优点,确保数据传输满足延迟确定、传输可靠、容错能力强等机载网络特点,已成为新一代航电系统总线接口关键技术之一。
1AFDX帧序列号作用与意义
AFDX发送节点在每一条虚拟链路(Virtual Link,VL)传送帧数据时都要加入一个序列号(Sequence Number,SN)。帧SN的长度为1 B,取值范围为0~255。SN的初始值为0,节点复位之后也为0。在同一条虚拟链路上传输的前后相继的帧,后一帧的SN为SN+1。当帧的SN达到255之后,下一帧的SN回卷至1。
1.1冗余管理[3]
AFDX网络包括两个独立的物理链路通道:A网络和B网络,如图1所示。
A、B冗余网络的延时抖动不同,因此冗余帧与有效帧到达接收节点的时间也不同。每条物理链路传输相同的帧数据,在接收节点针对每条虚拟链路按照SN依据“先到先有效者胜出”的原则采用先到达的数据帧,并将此虚拟链路SN保存为PSN(Previous Sequence Number)作为下一次接收帧的判断标准,后到达的同一SN的帧数据被当作无效帧而丢弃。另一方面,为了避免因为延迟而错误滤除有效数据帧,引入参数Skewmax[4]。Skewmax表示冗余帧与有效帧的到达接收节点的时间差。冗余管理保证接收的帧序号不断增大(包括复位和帧丢失),当Skewmax内没有数据帧时,冗余管理会无条件接收下一帧数据。
1.2完整性检查
在没有故障的AFDX网络通信中,完整性检查根据SN检测接收帧数据SN是否满足如下规则:
[PSN“+”1,PSN“+”2];
其中PSN表示前一帧数据的SN。如果基于SN的网络出现故障(如发送节点出现不一致故障),则完整性检查具有去除无效帧的任务,并将故障信息传递给上层网络管理。
完整性检查将以下特殊情况下的帧数据作为有效帧接收:(1)接收的SN等于0;(2)在接收节点复位之后,第一次被接收到的帧数据。
1.3安全关键缺失
在机载航电网络中,对于需高安全可靠地进行传输的数据,有严格的序列收发关系,传统的以太网帧数据无法对单链路帧数据的先后提供保证,而SN不仅可以在网络冗余管理和完整性检查起到重要作用,而且可以在OSI层次中的数据链路层对单条虚拟链路上的帧提供数据序列的安全性保证。
可见,SN在单条虚拟链路的帧通信中,可以保证数据的确定性和可靠性,然而系统要求多节点VL帧通信中的时序一致时,当飞机在高空巡航过程中,一旦发生机翼多点故障,其故障发生时间与控制单元收到错误次序控制将导致紧急处理情况的不同,那么飞控将给出错误的飞行控制,导致机毁人亡的事故。
然而,SN并不能满足节点间帧通信的时序一致性。为了保证节点间事件时序发生的一致性,下面将改进AFDX帧结构,并对授时和时序一致性算法进行详述。
2帧改进
为了保持多个节点间事件发生时序与事实的一致性,通过在帧数据内容中增加透明时钟域[5-7],记录传输过程中的发送延迟、传输延迟和接收延迟,实现传输透明化。在接收端通过对各个节点到达的帧数据通过最大传输延时与透明传输延时的排序算法计算,对同一时间段内的帧数据进行重新排序整合,达到多节点间帧数据传输时序一致性要求。
AFDX改进帧结构其特征在于,通过在帧的数据字段尾部预留8 B的透明时钟字段,如图2所示,字段明确定义时间单位2-16ns,记录帧在传输过程中的发送延时、传输延迟和接收延迟。在目标节点,通过时序保持算法保证各个发送节点在目标节点上发送时间上帧序列的一致性。
透明时钟域(用transparent_clock表示)计算帧数据从发送节点经过转发设备最后到接收节点的时延,具体计算方法如下。
节点按帧数据流过的次序标号为从0(发送节点)到n(接收节点)。
发送节点0:
transparent_clock0=dynamic_send_delay0+static_send_delay0(1)
转发节点i,0<i<n:
transparent_clocki=transparent_clocki-1+dynamic_relay_delayi+static_relay_delayi+wire_delayi(2)
接收节点n:
transparent_clockn=transparent_clockn-1+dynamic_receive_delayn+static_receive_delayn+wire_delayn(3)
公式(1)、(2)和(3)中:dynamic_send_delay代表动态发送延时,如节点排队等原因造成;static_send_delay代表静态发送延时,如收发器等固有特性造成;dynamic_relay_delay代表动态传输延迟,如排队等候等原因造成;static_relay_delay代表静态传输延迟,如转发拷贝等原因造成;wire_delay代表线缆传输延迟,其计算方式参阅IEEE 1588精确时间协议(Precision Time Protocol)标准[78]的对等延迟算法;dynamic_receive_delay代表动态接收延迟,如接收排队等原因造成;static_receive_delay代表静态接收延迟,如收发器等固有特性造成。
2.1精确授时
AFDX网络端系统的帧数据输出与一条确定虚拟链路相关联的流量控制参数描述:带宽分配间隔(Bandwidth Allocation Gap,BAG)和抖动(Jitter),其中BAG流量整形满足BAG=2kms(k=0,1,2,…,7),Jitter最大不超过500 μs。为了满足AFDX网络收发节点在流量整形的BAG和Jitter范围之内,网络需要时间同步。
AFDX网络通过RTC(Real Time Counter)帧(帧有效载荷主要包括:64 bit表示的时间同步信息,精度为40 ns),采用主时钟授权方式以达到全网同步目的,如图3所示。
发送节点ES8发出RTC帧时,携带其本地时间进入AFDX网络,处于网络中不同位置的接收节点ESx因网络收发延时、传输延时、线延时等原因导致接收RTC帧的时刻不一致,需采用延时补偿来完成授时修正。
在AFDX改进帧的格式中,通过transparent_clock参数域可完整记录传输过程中的延时,在接收节点,将RTC中的时刻信息与transparent_clock参数域相加即可得到精确的时刻,完成时间同步,如ES1的从时钟Trs1时间同步计算方法如下(其中TD表示时间延时):
Tr1=Tm+transparent_clockRTC=Tm+TDdynamic_send_delayES8+TDstatic_send_delayES8+TDwire_delayES8-SW1+TDdynamic_relay_delaySW1+TDstatic_relay_delaySW1+TDwire_delaySW1-ES1+TDdynamic_receive_delayES1+TDstatic_receive_delayES1(4)
其他被授时节点计算结果如式(4)所示,只是transparent_clockRTC参数域内容是在RTC帧传输过程中动态记录的。
AFDX帧改进后的RTC授时可精确至μm级时间同步,大大提高了AFDX的BAG流量规整确定性,进一步降低因节点时钟差异而导致的Jitter抖动问题。
2.2时序一致性
带有透明时钟域的AFDX帧数据在BAG相同并且Jitter=0时,同一时刻从不同发送节点发出,经不同的拓扑路径到达同一个接收节点。同样,帧数据中的transparent_clock参数域实时将发送、传输及接收过程中的各个延时进行累计。在接收节点,通过配置一个事先计算得出的全网最大传输延迟参数(用max_transimssion_delay表示),由网络中的最大透明传输延迟决定,具体计算方法如式(5)所示。
max_transimssion_delay=max(transparent_clockn)(5)
时序一致性算法为了重新建立发送节点间的派发时序,在接收节点上计算时序保持时间点,具体做法为:在帧数据被接收节点接收之后,再延时一段等同于时序保持延时的时间(用permanence_delay表示,见式(6))之后的时刻,即为对应帧数据的时序保持时间点(用permanence_
pit表示),具体计算方法如下:
permanence_delay=max_transmission_delay-transparent_clockn(6)
继而
permanence_pit=receive_pit+hold_delay(7)
公式(6)中的receive_pit代表帧数据在接收节点的实际接收时间点。依据公式(7)中的时序保持时间点permanence_pit依次排列,即为AFDX帧数据的实际发送次序。
针对该算法结合图4进行示例描述。图4左侧为某网络拓扑架构,包括6块端系统和3台交换机。图中描述了AFDX帧601和602的派发次序与交换机203上的接收次序不同,但通过时序保持功能计算,展示了如何在接收端重建时间次序。图中从左到右描述了实时的过程。
t=0:端系统ES101派发帧601(transparent_clock帧601=0);
t=7:帧601发送进入物理链路(transparent_clock帧601=7);
t=10:帧601进入交换机SW201(transparent_clock帧601=10);
t=20:端系统ES104派发帧602(transparent_clock帧602=0);
t=32:帧602发送进入物理链路(transparent_clock帧602=12);
t=40:帧602进入交换机SW203(transparent_clock帧602=20);
t=50:交换机SW201转发出帧601进入物理链路(transparent_clock帧601=50);
t=53:帧601进入交换机SW202(transparent_clock帧601=53);
t=75:交换机SW202转发出帧601进入物理链路(transparent_clock帧601=75);
t=78:帧601进入交换机SW203(transparent_clock帧601=78);
t=100:帧601在交换机SW203内部经过permanence_delay帧601=max_transmission_delay-transparent_clock帧601=100-78=22时延之后,到达时序保持点;
t=120:帧602在交换机SW203内部经过permanence_delay帧602=max_transmission_delay-transparent_clock帧602=100-20=80时延之后,到达时序保持点。
图4的时序显示,在交换机SW203上AFDX帧602的接收比帧601要早很多。为了重建交换机203上AFDX帧601和602的时间派发次序,在它们被接收且延时一段等同于时序保持延时的时间permanence_delay之后,保证了重建的发送次序的精确性。
3OPNET实现与仿真
针对图4左侧网络拓扑,在OPNET Modeler 14.5上建立OPNET模型,对应表1进行数据仿真与测试。图5为OPNET仿真结果,其中图5(a)显示了优化帧结构后的时间同步仿真结果,图5(b)为帧结构优化前后的次序情况。测试结果证明,帧改进合理,时序算法计算正确。表1仿真测试项目序号测试目的测试结果1RTC帧同步各个节点同步精度在μs级2时序算法透明时钟延时和时序保持计算正确3帧次序一致性在多个端系统发送时序不一致情况下,
均可正确仿真出准确次序4数据通信添加透明时钟域的AFDX帧在大数据传输时,
增加组包和拆包数量
4结论
通过在AFDX帧中增加透明时钟域,实现记录传输过程延时的方式,不仅保证了整个AFDX网络的高精度时间授时(μs级),而且拓展了其在高安全关键领域的控制应用。算法实现过程均在数据链路层,对上层透明化,兼容现有软件协议应用程序,方便升级,提高了性能。
参考文献
[1] ARINC 664,aircraft data network[S].2002.
[2] 沈磊,杨绍辉,邱智亮.AFDX网络中基于虚拟计时的警管算法[J].计算机应用,2008,28(12):3029-3031.
[3] 刘晓胜,刘建平,刘博.基于FPGA的AFDX虚拟链路层实现方法[J].计算机工程,2012,38(19):233-237.
[4] 李大鹏,赵明莉,田园.AFDX端系统中冗余管理的研究和实现[J].电子技术,2012,39(12):10-13.
[5] MOHL D S.IEEE 1588-Precise time synchronization as the basis for real time applications in automation[J].Industrial Networking Solutions,2003.
[6] IEEE Std 1588-2002,IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S]. 2002.
[7] IEEE Std 1588-2008,IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S]. 2008.