第二章 AFDX 协议基础:端系统、虚拟链路、帧格式、冗余管理

好,咱们接着聊。上一章我们把 ARINC 429 和 AFDX 的宏观对比讲完了。这一章,我带你深入 AFDX 的核心。说白了,AFDX 就是给航空数据加了个「高速公路」的规矩。你想想看,飞机上那么多系统,数据满天飞,没个规矩怎么行?

我个人习惯,学一个新协议,先抓住它的四个关键点:谁在发(端系统)、怎么发(虚拟链路)、发什么(帧格式)、发丢了怎么办(冗余管理)。把这四个搞明白,AFDX 你就懂了一半。

2.1 端系统(End System, ES)

端系统,你可以把它理解成每个航空电子设备上的「通信管家」。每个设备要接入 AFDX 网络,都得配一个端系统。我在项目中遇到过,有人把端系统和普通的网卡混为一谈,其实差远了。

端系统的主要职责有三:

  • 打包与解包:把应用层的数据,按照 AFDX 的规矩封装成帧,或者反过来拆帧。
  • 流量整形:确保数据发送的速率不超过约定好的带宽。这就像高速公路上的限速,不能乱来。
  • 冗余管理:AFDX 有 A、B 两条物理链路,端系统负责决定用哪条,或者怎么合并两条链路的数据。

关键点:端系统是 AFDX 网络的「守门员」。所有进出的数据,都得经过它检查。我曾经调试过一个故障,发现是端系统的配置表写错了,导致虚拟链路的带宽超限,整个网络都受影响。嗯,这里要注意,端系统的配置表是重中之重。

2.2 虚拟链路(Virtual Link, VL)

虚拟链路是 AFDX 最巧妙的设计之一。它不是一个物理连接,而是一个逻辑上的数据通道。每个虚拟链路有固定的带宽和固定的路径。

为什么叫「虚拟」?因为多个虚拟链路可以共享同一根物理网线。这就像一条高速公路上,有多个车道,每个车道(虚拟链路)只跑特定类型的车(数据)。

每个虚拟链路有两个关键参数:

  • BAG(带宽分配间隔):这个虚拟链路每隔多少毫秒才能发一帧。比如 BAG=4ms,那就是每 4ms 最多发一帧。
  • Lmax(最大帧长):每一帧最多能装多少字节的数据。

这两个参数决定了虚拟链路的带宽上限。公式很简单:带宽 = Lmax / BAG。举个例子:

假设 BAG = 4ms,Lmax = 512 字节
那么最大带宽 = 512 * 8 / 0.004 = 1,024,000 bps ≈ 1 Mbps

我的经验:配置虚拟链路时,BAG 和 Lmax 一定要留有余量。我曾经见过一个项目,把带宽算得死死的,结果实际运行中因为帧头开销,数据稍微多一点就超了。建议留 20% 的余量。

2.3 帧格式

AFDX 的帧格式,说白了就是在标准以太网帧的基础上,加了一些航空专用的字段。咱们直接看结构:

字段 长度(字节) 说明
前导码 7 同步用,和标准以太网一样
帧起始定界符 1 标识帧的开始
目的MAC地址 6 AFDX 有专门的 MAC 地址分配规则
源MAC地址 6 发送端系统的 MAC 地址
VLAN标签 4 用于区分不同的虚拟链路
以太类型 2 固定为 0x0800(IPv4)
IP头 20 标准的 IPv4 头部
UDP头 8 标准的 UDP 头部
AFDX 载荷 1-1471 实际的数据内容
帧校验序列 4 CRC 校验

你可能会问,为什么用 UDP 而不是 TCP?说白了,航空数据对实时性要求极高,TCP 的重传机制太慢了。丢了就丢了,靠冗余链路来保证可靠性。

避坑指南:我曾经在调试时发现,有人把 AFDX 的 VLAN 标签配错了。结果数据虽然能发出去,但交换机不认识这个虚拟链路,直接给丢了。记住,VLAN 标签必须和交换机上的配置完全一致。

2.4 冗余管理(Redundancy Management)

AFDX 的冗余管理,是它最可靠的地方。每个虚拟链路的数据,会同时在 A、B 两条物理链路上发送。接收端的端系统会收到两份一模一样的数据。

那问题来了:收到两份怎么办?

  • 先到先用:哪份先到,就用哪份。另一份直接丢弃。
  • 完整性检查:每帧都有一个序列号,如果发现序列号不连续,说明丢帧了。
  • 抖动控制:两条链路的延迟可能不一样,端系统会等待一个「抖动时间」,确保不会因为一条链路慢而误判。

我举个例子你就明白了。假设你给朋友寄了两份同样的快递,走不同的快递公司。朋友收到第一份后,第二份就直接拒收了。AFDX 的冗余管理就是这个道理。

核心要点:冗余管理不是简单的「双倍发送」,而是通过序列号和抖动时间,确保数据的高可靠性。我在项目中测试过,即使一条链路完全断开,另一条链路也能无缝接管,数据零丢失。

好了,这一章的内容就到这里。AFDX 的端系统、虚拟链路、帧格式和冗余管理,这四个概念是后续所有内容的基础。你想想看,没有虚拟链路,数据怎么区分优先级?没有冗余管理,飞机怎么敢把关键数据交给网络?

下一章,我们开始讲 ARINC 429 到 AFDX 的转换策略。那才是真正的硬核内容。