文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.04.002
中文引用格式: 田泽,姜丽云,陈伟,等. AFDX网络关键协议分析与研究[J].电子技术应用,2016,42(4):7-10,14.
英文引用格式: Tian Ze,Jiang Liyun,Chen Wei,et al. The analysis and research of AFDX network key protocol[J].Application of Electronic Technique,2016,42(4):7-10,14.
0 引言
AFDX网络是在商用以太网IEEE802.3协议的基础上,增加确定性、可靠性需求,制定了航空电子全双工交换式网络标准ARINC664。
ARINC664协议规范定义了航空电子全双工交换式网络标准,主要由8个部分组成[1]:(1)系统的概念和概况;(2)以太网物理层和数据链路层;(3)基于因特网的协议与服务;(4)基于因特网的地址结构和分配编号;(5)网络互连服务和功能元件;(6)保留;(7)航空全双工交换式以太网(AFDX)网络;(8)上层服务。
从上述内容可以看出,ARINC664协议定义了航空全双工交换式网络标准,该协议体系模型如图1所示,左边是标准OSI[2](Open System Interconnection,开放式系统互联模型)网络结构,右边对照的是AFDX网络协议栈结构及协议间的关系。如图1所示,AFDX协议与商用以太网的主要区别是在MAC(Media Access Control,介质访问控制)层,增加了虚链路技术,满足了航空电子系统对可靠性和实时性[3]的要求。
协议栈分为五层,从下到上依次为物理层、链路层、网络层、传输层和应用层。物理层采用以太网物理层协议;链路层实现物理链路的虚拟通道管理和MAC层的余度管理;网络层采用改进的IP(Internet Protocol,因特网协议);传输层采用改进的UDP(User Datagram Protocol,用户数据报协议),TCP(Transmission Control Protocol,传输控制协议)可选,使用队列、采样和SAP(Service Access Point,服务访问点)3种端口与应用层进行通信[4];应用层采用ARINC 615A加卸载协议和SNMP(Simple Network Management Protocol,简单网络管理协议)向航空子系统提供文件传输、数据加载和网络管理等服务。
1 AFDX网络端系统关键协议分析
AFDX网络为了满足航空电子系统对可靠性、实时性、高带宽的要求,在商用以太网的基础上增加了虚链路、带宽隔离、流量整形、完整性检查以及余度管理。
1.1 通信端口
航空电子系统通信过程中,采用通信端口完成数据的发送与接收。AFDX网络提供了3种通信端口,即采样端口、队列端口和SAP端口。其中采样端口和队列端口统称为通信端口,SAP端口为上层服务端口。
1.1.1 采样和队列端口
如图2和图3所示,采样端口和队列端口的主要区别在于缓冲区个数,采样端口只有一个缓冲区,因此只能存储一条消息,当有新消息时,将会覆盖缓冲区已有的消息,因此采样端口每次读取的都是新消息,且读取完成消息后不会将此消息删除,可重复读取。而队列端口可以设置多个缓冲区,将接收的消息依次存入缓冲区的队列中,从队列端口读取消息时,采用先进先出的机制,读取完成后,将该消息从队列中删除。
为了读取缓冲区中的数据,设置了头尾指针,用于判断该缓冲区是否有数据,也有效防止了缓冲区溢出。当头尾指针不相等时,表明该缓冲区有数据,可以进行读取,每读取一帧数据,将缓冲区的头指针加1;当头尾指针相等时,表明缓冲区的数据已经读取完成。
1.1.2 SAP端口
AFDX网络提供了SAP服务端口,主要用于实现端系统与上层服务之间的通信,包括文件传输、网络管理等功能。
SAP端口具有以下特征:可以用于AFDX网络通信接口;作为终端系统的应用通信接口;提供与应用通讯的UDP服务;SAP端口的UDP服务应提供小于8 KB数据缓冲;通过对SAP端口设置,TCP可以访问IP层。
1.2 余度容错
AFDX网络的拓扑结构为星型余度拓扑,每个端系统都有两条相互独立的传输路径,发送过程中,将消息分别通过这两条传输路径发送至目标设备,在接收端通过这两条独立的路径接收消息。因此,在端系统的通信过程中,采用余度处理和完整性校验的机制,可以确保接收到有效的AFDX数据帧。
发送过程中,当数据帧完成封装后,存放至虚链路缓冲区,由硬件单元负责将数据复制成完全相同的两份,然后通过物理层,将互为余度的数据发送至网络。
接收过程中,采用“先到先有效”的原则,接收网络中的数据包。当接收到第一帧数据后,记录该数据的SN(Serial Number,序列号)号。当接收到第二帧数据时,首先比较该条数据的SN号是否和上条消息的SN号相同,如果相同,则直接丢弃该条消息,否则接收该条消息。余度容错如图4所示[5]。
1.2.1 完整性检查
AFDX帧被提交到余度控制单元时,首先将CRC(Cyclic Redundancy Code,循环冗余校验码)前的一个字节作为帧序号SN的单元(0~255),并根据SN号对帧进行处理,经处理的帧再进行发送网络选择,判断发送端口是A端口、B端口或者是A、B两个端口同时发送。接收到帧的两个网络接口分别将帧存储到对应的接收缓存器中,并分别对帧进行完整性检查。在没有任何故障的情况下,完整性检查仅将接收到的帧传递给余度管理过程,对于每个余度网络是独立的。如果发现故障,完整性检查将去除无效帧,并且执行此操作时通知网络管理机构。在每个余度网络,完整性检查功能对顺序号在如下区间中的帧进行检查,该区间是:
[PSN”+”1, PSN”+”2]
其中,PSN(前序列号)是这个VL(Virtual Link,虚链路)接收到的前一个帧的顺序号。在某些特殊的情况下,完整性检查也应将该帧作为有效帧,如接收顺序号为0的帧、在端系统复位后第一次被接收到的帧等。没有满足这些规则的帧被丢弃[6-7],完整性检查的具体流程如图5所示。
1.2.2 余度管理
端系统在接收数据时,从链路层传入的数据帧首先进行完整性和序列号检查,只有符合完整性和序列号检查的帧才能进行余度管理。余度管理是对两个通过完整性检查的帧进行序列号比较,按照“先到先有效”的策略对两个帧进行取舍,然后将有效的数据帧发送到UDP/IP协议栈进行处理。
余度管理的配置一般基于SkewMax(最大偏移时间)参数,即:在收到两个互为余度的帧之间的最大时间,这个值依赖于网络拓扑(帧跨越交换机数目),并由系统集成者提供。
对于每个VL,余度管理功能应该保证帧以递增的SN次序转发,复位和偶然丢帧的情况,如果在收到一个帧后超过SkewMax,则下一帧将被无条件接收。
1.3 虚链路VL
传统以太网交换中采用动态路由的寻址方式,传输路径是不确定的,而AFDX网络是一种确定性网络,传输路径在网络初始化时预先设定,采用虚链路来实现路由的选择。虚链路是一个概念化的通信对象,主要具有两个属性:(1)逻辑上的单向连接(从一个源端系统到一个或多个目的端系统);(2)指定最大带宽(带宽由系统集成者分配)。
1.3.1 带宽隔离
为了使不同虚链路之间在同一物理连接上不会产生干扰,采用一种类似航空子系统之间的应用通道分区进行隔离的机制实现虚链路带宽的分配。AFDX网络每个终端系统上的多个虚链路共享100 Mb/s带宽物理连接。
在AFDX网络中,虚链路之间的隔离是通过限制虚链路的带宽分配间隙BAG(Bandwidth Allocation Gap,帧与帧之间发送的最小时间间隔)和虚链路上传输AFDX帧的最大长度Lmax(最大帧长度)实现的,由端系统保证,虚链路的带宽计算公式为:
1.3.2 流量整形和调度
AFDX消息被封装成AFDX帧,由绑定唯一一条虚拟链路的通信端口调用,并由终端系统中的虚链路调度模块进行调度。虚链路调度包括数据包调度和多路转换分发两部分。虚链路调度完成虚链路队列信息帧的获取,并创建无抖动的数据流输出。虚链路调度还完成复制到余度管理单元信息的切换调度。
虚链路调度保证了每个虚链路带宽不超过所分配的限制,不仅是要保证每条虚链路对BAG和Lmax的限制,而且还要保证因虚链路的切换而产生的抖动在可以接收的范围之内[8-9]。
发送到AFDX通信端口消息所用的时间受到航空电子子系统和连接到系统的各种设备的影响。例如:传感器以10 Hz的速率发送数据,当消息传输到非空的虚链路队列时就会发生抖动。另外,余度管理中对在虚链路队列进行转换和在物理连接上顺序的传输都会产生的抖动。在ARINC664Part7协议规范中,数据发送时,端系统输出端口的每个VL的最大允许抖动应该服从下列公式:
其中,max_jitter(最大抖动时间)以微秒为单位(μs),Nbw是介质带宽,Lmax以字节为单位(B),40 μs是典型的最小固定技术时延抖动。
根据式(2),端系统若具有较少的VL并且其中待处理的帧是短帧,则最大允许的抖动将会降低。为了整个网络确定性,在所有的情况下抖动都被限制在500 μs内。
2 AFDX网络交换机关键协议分析
根据ARINC664 Part7规范,交换机由配置表、端系统、监视模块、交换模块和过滤与管制模块组成。其中交换模块的交换调度功能、警管与过滤功能保证了AFDX网络传输的确定性和可靠性。
2.1 警管和过滤
帧过滤使得交换机可以分发有效帧到指定的目的端。帧数据一旦到达交换机,交换机就会监控帧的构成及帧头各个域的内容。过滤功能对帧进行检查是否符合以下条件:目的地址有效、帧校验序列有效、以太网帧长度是8 Bit的整数倍、以太网长度在[64,1 518]字节的范围内、以太网帧长度小于或等于Lmax等。
流量警管功能描述了一种基于目的地址执行流量警管算法的模型。交换机必须具有流量警管机制,以确保网络对于错误的隔离。为了使异常的数据帧不会扰乱网络,任何与网络配置不符合的帧会被丢弃。
流量警管的原理采用漏桶算法,如图6所示。
每当VLi中的一个帧到达交换机时,都要检查ACi(流量警管值)。对于ACi存在两种类型被管理的帐户:Byte ACi(基于字节的警管)和Frame ACi(基于帧的警管)。
(1)针对基于字节的警管:
如果Byte ACi大于S,则此帧被接收并且从账户ACi的值中减去S;
如果Byte ACi小于S,则此帧被丢弃,MIB(管理信息库)实体刷新,Byte ACi不变。
(2)针对基于帧的警管:
如果Frame ACi 大于Smax.i则帧被接收并且从帐户ACi的值中减去Smax.i;
如果 Frame ACi 小于 Smax.i,则该帧被丢弃,MIB(管理信息库)实体被刷新,Frame ACi不变[1]。
该流量警管规则被称为Token Bucket (令牌桶)算法。流量警管机制应该在交换机上实现,以保证网络的故障抑制功能。为了不让某个失效的端系统干扰网络,流量中的任何不适合网络配置的帧必须被丢弃。
2.2 交换调度
交换调度主要是将数据帧从交换机的输入端口转发至输出端口,交换调度分为接收调度和发送调度[10]。
输入端口接收调度包括交换端口交换帧的接收、捕获端口捕获配置帧的接收和主机发送缓冲数据帧的接收(包括端系统配置、捕获帧配置)。每个输入端口收到一帧数据后,向接收发出调度请求,接收调度采样接收控制字及实时时钟输入时间戳,并等待接收调度仲裁,接收调度根据公平的服务原则,选择某个申请调度的端口进行服务。
输出端口发送调度包括交换输出端口交换帧的发送,其又包括普通交换帧的发送和主机接收缓冲数据帧的发送,其中主机接收缓冲数据帧优先权最高,其次是普通交换帧。输出端口发送调度首先必须分别确认各自的输出端口缓冲是否能够存储当前要发送的帧,只有输出端口缓冲有空闲空间时,输出端口空闲的帧才会允许申请发送调度,否则必须等待条件具备后才能申请调度。
3 结束语
AFDX网络协议中虚链路、双余度网络、带宽隔离、流量整形等关键技术有效地提高了系统的实时性、可靠性,对提高航空机载数据高可靠、高确定性的通信具有重要意义。通过深入解读、分析AFDX网络协议,对交换机和端系统的关键技术进行研究,突破AFDX网络端系统及交换机关键技术,为AFDX网络的芯片及后续产品设计提供技术支撑。
参考文献
[1] 赵永库,李贞,唐来胜.AFDX网络协议研究[J].计算机测量与控制,2011,19(12):3137-3139,3142.
[2] 谢希仁.计算机网络[M].第5版.北京:国防工业出版社,2009.
[3] 施太平,娄莉,田泽.AFDX协议及关键技术研究[J].测试控制,2010,31(10):81-84.
[4] ARINC specification 664P7,aircraft data network(part7):Avionics Full Duplex switched Ethernet (AFDX) network[S].2005.
[5] 钟杰,何民,王怀胜,等.AFDX构架及协议研究[J].电讯技术,2010,50(1):65-70.
[6] 陈长春,王红春.一种余度管理电路及其管理方法:中国,200810098899[P].2010-07-07.
[7] 杜宏伟,马捷中.航空电子全双共交换式以太网及其关键技术研究[J].测控技术,2008,27(12):65-67.
[8] 陈昕,周拥军,万剑雄.AFDX端系统关键技术的设计与实现[J].计算机工程,2009,35(5):1-3.
[9] 刘晓胜,刘建平,刘博.基于FPGA的AFDX虚拟链路层实现方法[J].计算机工程,2010,10(19):233-237.
[10] 王红春,何峰.民用飞机高速航电系统AFDX网络设计与分析[J].计算机工程与设计,2011,31(12):3633-3637.