2.2.3 AFDX特殊机制

为了适合在航空电子系统中应用,AFDX网络在全双工交换式以太网的基础上,增加了虚链路、带宽管理、抖动控制、冗余管理等特殊机制,以增强数据传输的实时性、确定性和可靠性。

1.虚链路

为了减少点对点的连接数,AFDX网络采用了虚链路(Virtual Link,VL)机制。虚链路是一种逻辑上的链路,是指能够连接两个不同端系统的单向路径,通过端系统上的时分复用机制实现共享一条物理链路,虚链路示意图如图2-4所示。

图2-4 虚链路示意图

由图2-4可以看出,每条虚链路使用一个唯一的虚链路号来标识,每条虚链路仅有一个发送端,但是可以有一个或多个接收端,图2-4中的虚链路号(VL ID)为100的虚链路是从端系统1到端系统2和3的。

在每个端系统中,每条虚链路又可以分成1条或多条子虚链路,在AFDX协议中没有做明确的规定,具体由用户来定义。子虚链路可用来传输对带宽要求不高的非关键性数据,对于不同的子虚链路,采用轮询机制从子虚链路的消息队列中提取数据来发送。

对于每个端系统,首要任务是管理和维护所有的虚链路,每个端系统最多可以管理128条具有不同参数配置的虚链路,需要为每条虚链路维护一个先进先出(FIFO)队列。在发送时,其任务主要有读取每个消息队列中的数据、递增虚链路中的帧序号、控制帧发送来保证对带宽和抖动的要求、将帧发送到A和B两个网络等。在接收时,其任务主要是去除冗余帧,将数据帧存入虚链路所对应的消息接收队列中。

传统的以太网交换机是根据以太网数据帧头中的目的MAC地址来转发数据帧的,而在AFDX网络中,AFDX交换机是根据数据帧头中的虚链路号来转发数据帧的,每个AFDX交换机都要维护一个虚链路号与交换机端口的配置表,相当于静态路由表,通过查找配置表来确定转发该数据帧的交换机端口,然后将数据帧转发给该端口对应的端系统。

2.带宽管理

在AFDX网络中,为了实现带宽管理,每一条虚链路都要设置两个属性值:>Lmax和BAG。

(1)>Lmax值:定义了每条虚链路上所能传送的数据帧的最大帧长度,主要为了保证每条虚链路能拥有的最大带宽以及在最差情况下的网络延迟。

(2)BAG(Bandwidth Allocation Gap)值:定义了在同一条链路上连续发送数据帧的最小时间间隔,在发送端发送完一个数据帧后,如果在BAG时间内又接收到一个数据帧,则需要等待BAG时间后方可发送下一个数据帧。BAG=2kms(毫秒),>k={0,1,2,3,4,5,6,7},即BAG=1~128ms。

当一条虚链路的>Lmax和BAG参数值确定后,该虚链路的最大带宽也就确定了。在设置这两个参数值时,用户应当根据该虚链路上消息传送的频率和数量来设置合适的BAG和>Lmax值,不能过大或过小,过大则带宽占用过多,过小则无法满足传输要求,应当根据实际需要来设置。

在普通的以太网中,由于没有>Lmax和BAG的限制,端系统发送的网络流量随机性比较大,容易产生浪涌流量,造成交换机的拥挤甚至拥塞,增加了数据帧的排队时间和延迟,并且具有很大的不确定性。

在AFDX中,增加了虚链路机制以及>Lmax和BAG限制,每条虚链路通过设置BAG值来限制连续向网络中发送数据帧的最小时间间隔,即限制每条虚链路上数据帧的发送速率,保证每条虚链路的最大传输延迟;通过设置>Lmax值来限制数据帧的最大帧长,使每条虚链路在发送过程中不会发送超出最大帧长的数据帧,保证了每条虚链路的带宽。端系统和交换机通过相互协作,利用不同虚链路下的带宽管理和队列调度机制(如令牌桶算法等)以及相应的>Lmax和BAG参数,能够有效地保证数据传输的实时性和确定性。

3.抖动控制

一个端系统中可以建立若干虚链路,这些虚链路以时分复用方式使用实际的物理链路。不同虚链路的数据帧要经过端系统中的调度器调度后才能发送到物理链路上,调度器将通过适当的调度算法对不同虚链路进行调度。由于不同调度算法存在性能差异,可能对数据帧的延迟产生不同的影响。在实际调度的过程中,调度器要尽量保证每条虚链路所设置的BAG和>Lmax值保持不变,由于调度器及调度算法的引入,将会产生数据帧等待调度的延迟时间,因此引入了抖动(Jitter)的概念。

在AFDX网络中,抖动是指在BAG值范围内从一个数据帧启动发送到实际发送之间的时间间隔。不同的调度算法可能产生不同的时间间隔,图2-5给出了三种不同的抖动情况:

图2-5 三种抖动情况

0<Jitter<Maxjitter(最大抖动)、Jitter=0、Jitter=Maxjitter。

每个端系统的抖动应满足如下公式:

式中,>L为数据帧的最大帧长,>N为物理链路的带宽。AFDX协议规定,最大抖动值不应超过500微秒(μs)。

通过设置最大抖动值,规定了虚链路的传输等待延迟上限,使虚链路的传输延迟得到保证。如果某条虚链路的抖动超过最大值,则说明该端系统对虚链路的参数设置和调度算法出现问题,需要重新调整。

4.容错管理

为了增强AFDX网络数据传输的可靠性,AFDX网络采用一种比较简单的容错管理机制,整个AFDX网络由两个相同的网络A和B组成,每个端系统都包含有两个以太网接口A和B,分别连接到A和B网络中的交换机端口上,构成一个由网络A和B组成的双冗余网络。端系统在单一虚链路上发送数据帧时,将一个数据帧复制成两份同时发送给网络A和B,数据帧在网络A和B中独立地传输,互相不受影响。接收端会在该虚链路上接收到来自网络A和B的同一数据帧,双冗余网络结构如图2-6所示。

图2-6 双冗余网络结构

接收端在接收到来自网络A和B的数据帧时,一方面需要检查数据帧的完整性,判别是否存在丢帧现象,另一方面需要去除重复的冗余帧,保持数据帧的唯一性。这些都是通过帧序号来实现的。首先接收端的链路层接收模块分别接收来自网络A和B的数据帧,对于每个网络的数据帧,通过检查帧序号的连续性来判别数据帧是否完整,并按帧序号顺序将数据帧提交给冗余管理模块。冗余管理模块检查由网络A和B分别提交的数据帧,采用先来先接收的原则,通过比较帧序号去除重复的冗余帧,保持帧序号的唯一性,从而实现容错管理。

在一个网络发生丢失数据帧的情况下,可以利用另一个网络的数据帧来纠正,大大增强了数据传输的可靠性。