AFDX/ARINC664协议

航空电子全双工交换式以太网(AFDX,Avionic Full-Duplex Switched Ethernet),是ARINC664(part7)的一个特定实现,是一种用于航空电子领域的数据网络协议。该网络基于IEEE 802.3标准。

1、航空数据总线的历史

航空控制系统一般由一系列传感器组成,这些传感器读取环境或者内部的数据,一个航空系统需要执行某一确定的飞行相关的控制功能并且产生输出,例如控制执行机构执行方向舵或者襟翼的运动。这些部件之间总是需要相互连接,传统上,一组传感器和执行器连接到一个航空电子设备功能。航空数据总线如:ARINC-429MIL-STD 1553就是用来达到这个目的的。

1.1、ARINC-429

ARINC-429是一种专用与商用或运输飞行器的双线式数据总线,采用双绞线的形式,数据字长32bit并且绝大多数数据由单一的字组成。429的TX和RX由分开的ports指定,信息传送速率12.5Kbit/s或100Kbit/s,一根总线最多只可拥有20个recivers。

1.2 、MIL-STD 1553

略。

2、IMA需要新的通信能力

随着飞行器的发展,越来越多电子组件加入到航空控制系统中,例如飞行控制和导航系统提供飞行判断功能,其他的组件提供辅助服务对维持适航性不重要,但是减少了工作组的负担。大量的能力在增加,同样的增加了大量需要处理和展示出来的信息。

因此一种新的标准化的主平台出现了,IMA(Integrated Modular Avionic)出现了,同时它还非常简单:

  • 使用一个通用计算平台提供计算能力;
  • 使用标准化的传感器和执行器接口,并在单独的I/O板子上提供;
  • 计算平台为航空电子应用提供一个实时操作系统(RTOS)和标准的接口(API)。

IMA相较传统方式带来了许多优点。同时也需要一种新的网络基础设施。

3、AFDX,新一代的航空电子数据网络

AFDX基于标准的IEEE 802.3 10/100 Mbit以太网硬件,数据包用IP和UDP封装,但有两个问题没有解决:

  • 可靠的数据包转发;
  • 可界定的转发延迟;

3.1、灵活的网络拓扑

正常的网络采用拓扑结构,拓扑结构上的每一个节点都是平等的,如果一个节点想要发送一个数据包给网络,但是媒体被占用了,发生了冲突,那么这个节点需要备份数据,并且再次尝试,直到发送成功或者超时。这种特性导致了无法预料的延迟,这在一个安全关键应用中是无法容忍的。为了解决这种冲突,一种可交换的全双工拓扑结构出现了:

传统的交换机根据一个路由表转发数据,这个路由表在交换机运行的时候创建,并且自动更新,它能够学习或者遗忘连接在其上的节点。当然,这种技术对于一个经常临时挂载卸载节点的网络来说是非常合适的。但是这个学习进程导致了可变的延迟在航空电子网络中必须要消除。因此,一个AFDX交换机根据一个静态的路由表来转发数据。事实上,一个通常的策略是静态地定义所有节点以及它们各自的网络地址。因此也不需要使用ARP从IP地址上解析MAC地址

为了提高网络的可靠性,在物理层上设计了冗余。每个数据包都会通过两个网络控制器从独立的两个线缆独立的物理交换机发送到目标系统。

在目标系统上,两个独立的网络控制器接收到了这个数据帧,协议层的冗余管理算法将俩个相同数据包中的一个适当地转发到上层。

物理冗余可以在每个连接的基础上配置,从而允许使用较少的数据链路,对可用性的要求也较少,还能够利用第二条数据链路提供的额外带宽。

3.2、子系统、AFDX端系统和交换机

一个AFDX网络由端系统(End Systems)和交换机(switches)。端系统是一个连接到AFDX网络的组件,能够处理所有AFDX相关的协议操作(这意味着端系统上能够处理协议)。通常,端系统是航空电子系统中的一部分,通过AFDX网络收发数据。

4、主机通信API

在第一节中已经提到了,AFDX技术是在IMA技术的环境中使用的。行业同样为IMA系统API指定了一个名为ARINC-653 APEX的标准。这个API将所谓的端口(Ports)定义为应用程序与自身上下文之外的实体交换数据的唯一方式。这些实体也许是本地硬件上的设备驱动,或者是连接远程计算机的数据通道。它的优势如下:

  • 应用使用统一的API来进行数据交换;
  • 通道配置独立于端口,因此通道配置的改变对使用这个端口的应用来说是透明的。

ARINC-653定义了两种Ports,Queuing Ports和Sampling Ports:

4.1、Queuing Ports

Queuing Ports是以信息为导向的;一个已预设深度的队列(queue)接收信息直到所有空间被占用。进一步尝试将消息放入队列将导致应用等待,直到有空间释放出来,如果Ports运行在阻塞模式下。单个源队列只能连接到一个目标端口(一对一关系)。

4.2、Sampling Ports

从原理上来说,Sampling Ports是深度为一条message的Queuing Posts。因此,新的信息将覆盖未被读取的旧信息。该配置允许指定一个刷新率。消息的年龄将用来与刷新率相比较,根据读取服务调用的结果返回数据的有效性。它可以将一个源端口与多个目标端口连接(一对多关系)。Port API提供一系列方法读写源端口和目标端口。在Samplling Ports上运行的服务调用不会阻塞。

4.3、Service Access Point(SAP)Ports

ARINC-653定义了两种不同的Port类型,但是AFDX出现了第三种类型,即:SAP Port。大体上,这个端口类型是一个能够让API使用额外参数的Queuing Ports类型。对SAP port的要求是能够与基于TCP/IP的传统网络(兼容网络)进行通信。这种通信用于将文件传输到文件服务器,或者用新的软件更新航空电子系统。为了能够与兼容网络通信,发送端End System需要有能力指定目标地址:即IP地址和端口号。为了达到这个目的,当End System从兼容网络接收请求时,这些地址被设置成可用。

对SAP port的准确API没有在标准中指定;然而使用一个著名的伯克利UNIX Socket API的子集是可行的。

5、Virtual Link概念

ARINC-429最让人合意的特性是它在发送者和接收者之间使用了私有的连接。这个连接的物理带宽是永远可用的,也不会有同时发送导致冲突的情况。当内部连接航空系统与不同等级的临界情况时,这种程度的分离式强制性的。AFDX技术通过采用虚拟连接(VL)的概念来实现这种分离。每个逻辑连接都用VL来代表,以此提供与传统ARINC-429连接相同的属性:一个具有有限延迟和保证带宽的单行私有线路。给定VL的识别是通过使用48位MAC地址中的16位作为VL id来完成的。由于IEEE 802.3标准允许在以太网上进行多播包传输,因此可以使用标准机制将包路由到多个目标节点。然而,AFDX的一个特性是VL可以有且只有一个终端系统向它发送数据。

对带宽的控制是通过约束每个VL的时间来实现的。将VL映射到全球交换机网络,实现了拓扑的划分。每个VL都有一个称之为BAG(Bandwidth Allocation Gap)的时间分片以及一个最大帧大小。每个VL的BAG包是End System发送的两个连续IP帧之间的精确时间单位。一个VL可能使用不到所有的带宽,例如:两个连续的包之间的时间大于一个BAG,但是它不能比BAG还小,End System有责任对此进行限制。ARINC-664规范允许BAG的值在1~128ms范围内取值为2n(BAG=2n, n={0…7})。

6、发送调度

终端系统的职责是根据每个虚拟链路分配的时间预算来调节所有的出站流量。因此,直到BAG消失之前,一个VL传输会被一直阻塞。下图说明了单个VL的流量规则的效果,当一个VL符合条件但是没有数据传输的时候,不会传输帧。

当来自多个VLs的出站包流被合并以进行传输时,有可能有一个以上的VL已准备好数据包,并符合传输条件

7、实现AFDX

AFDX技术已经成功在A380项目上部署。通常来说,有两种方式实现一个AFDX End System。

7.1、ASIC技术

专用集成电路(英语:Application Specific Integrated Circuit,缩写:ASIC)。在A380上所有端系统(End System)都是用ASIC技术构建,这意味着,AFDX协议通过可编程逻辑设备使用硬件来实现。本质上来说这种方式具有更高的性能,同时也很好验证。但是另一方面,两大技术集成商——空客和波音——已经与arinc664标准产生了明显的偏差,需要一定的灵活性来适应这些差异。

7.2、固件

另一种实现方式是使用一个嵌入式CPU以及需要的硬件。例如:内存、两个以太网控制器、航电系统通信接口。在这种情况下,完整的AFDX协议栈作为固件运行在嵌入式CPU上。通常,有必要在单独的硬件上实现AFDX协议,以将主CPU从AFDX协议的时间和性能要求中解脱出来。主机CPU有实时的需求,因此网络流量的影响必须与它解耦。但是对于只有LRU设计(只有很少的AFDX性能需求)需求的情况下,在一个CPU上实现软件栈和应用软件也是可行的。

这种设计自由已经显示了AFDX协议的软件实现的主要优势:与硬件实现相比,设计的灵活性非常突出。前面已经提到,标准已经面临来自真实世界实现的偏差,进一步的性能需求和/或技术变化肯定会导致协议的变化(或增强)。例如,希望使用千兆以太网就是一个很好的例子。对软件进行更改本来就比更改硬件设计容易。