4. 虚拟链路与带宽分配机制

在AFDX网络中,端系统之间并不是像普通交换式以太网那样“谁想发就发”,而是通过一种预先定义好的逻辑通道来通信,这个逻辑通道就是虚拟链路(Virtual Link,VL)。可以把VL理解为一条单向的、具有确定带宽和时延上限的“数据管道”:发送端系统只能把帧注入到属于它的VL中,交换机则依据VL的标识和配置进行转发,接收端系统从对应VL中取出数据。AFDX的确定性,正是建立在“每条VL的带宽和最大帧长都被事先约束”这一基础之上。

VL由三元组唯一标识:VL ID(通常为16位或24位整数)、源端系统和目的端系统(可以是单播,也可以是多播的一组端系统)。在ARINC 664 Part 7中,VL ID被编码进以太网帧的目的MAC地址字段,交换机据此查表转发。每条VL是单向的,若两个端系统需要双向通信,必须配置两条方向相反的VL。VL的关键参数包括:BAG(Bandwidth Allocation Gap,带宽分配间隔)、Lmax(最大帧长)以及该VL允许承载的最大帧数。这三个参数共同决定了这条VL的带宽上限。

BAG:带宽分配间隔

BAG是AFDX中最具特色的参数。它定义为同一条VL上两个连续帧的起始时刻之间的最小时间间隔,单位是毫秒。标准规定的BAG取值为2的幂次:1、2、4、8、16、32、64、128 ms。BAG越小,VL被允许发送的频率越高,带宽越大;BAG越大,发送越稀疏,带宽越小。例如BAG=1 ms表示该VL每秒最多可以发送1000个帧的“节拍”,而BAG=128 ms则每秒最多约7.8个帧节拍。

需要特别强调的是,BAG约束的是帧与帧之间的最小间隔,而不是平均速率。发送端系统的AFDX流量整形器(Traffic Shaper)会按照BAG对每条VL进行整形:如果应用层在很短时间内产生大量数据,整形器会把它们按BAG间隔“摊开”发送,从而避免突发流量冲击网络。这正是AFDX能够提供确定性时延保证的核心机制。

Lmax:最大帧长

Lmax是这条VL上允许传输的最大以太网帧长度(含帧头、数据和FCS,不含前导码和帧间隙),单位为字节。标准以太网帧长范围为64~1518字节,AFDX通常允许配置到最大1518字节。Lmax的作用是限定单帧的传输时间:在100 Mbps链路上,一个Lmax=1518字节的帧占用链路的时间约为(1518+20)×8/100M ≈ 123 μs(20字节为前导码+帧间隙的开销)。Lmax越大,单帧占用链路时间越长,对后续帧的时延影响越大。

Lmax与BAG共同决定了一条VL的带宽上限。其计算公式为:

VL带宽上限 (Mbps) = (Lmax + 帧开销) × 8 / BAG
其中帧开销 = 前导码7B + SFD 1B + 帧间隙12B = 20B
若Lmax=1518B,BAG=8ms:
带宽 = (1518+20)×8 / 0.008 = 1538×8/0.008 ≈ 1.538 Mbps

这个结果说明:即使Lmax取到最大,只要BAG足够大,单条VL占用的带宽仍然很小。AFDX网络设计的关键,就是在满足各应用实时性要求的前提下,合理分配BAG和Lmax,使所有VL的带宽总和不超过链路容量,并留出余量。

带宽计算与VL规划

实际工程中,VL规划通常遵循以下流程:首先梳理每个端系统上运行的应用及其数据流,确定每条数据流的源、目的、周期、单次数据量和实时性要求;然后为每条数据流分配一条VL,并确定BAG和Lmax;接着计算每条VL的带宽,汇总到各物理链路上,检查是否超载;最后把VL配置写入端系统和交换机的配置表中。

以一个教学示例说明:某航电系统有3条数据流,均从端系统ES1发往ES2。流A为飞行参数,周期10 ms,数据量200字节;流B为发动机状态,周期20 ms,数据量100字节;流C为告警信息,周期50 ms,数据量50字节。假设三条流各分配一条VL,Lmax分别取256、128、64字节,BAG分别取8 ms、16 ms、32 ms。则各VL带宽为:

VL-A: (256+20)×8/0.008 = 276 kbps
VL-B: (128+20)×8/0.016 = 74 kbps
VL-C: (64+20)×8/0.032  = 21 kbps
合计 ≈ 371 kbps,远小于100 Mbps链路容量

这个示例说明,只要BAG选择得当,航电数据流的带宽需求通常远低于链路容量,AFDX的瓶颈往往不在带宽总量,而在于时延抖动和交换机队列调度。因此VL规划时,除了带宽,还要关注每条VL的时延上界,确保关键控制流满足实时性要求。

BAG和Lmax一旦确定,就应作为VL配置的一部分固化下来。端系统发送时若违反BAG约束,交换机可能丢弃帧;若帧长超过Lmax,也会被丢弃。因此应用层的数据打包必须与VL参数匹配。

VL配置案例

下面给出一个简化的VL配置表样例,用于说明端系统和交换机需要维护哪些字段。该表为教学示例,参数为合理假设值,并非来自真实机型。

VL ID源 ES目的 ESBAG (ms)Lmax (B)方向用途
0x1001ES1ES28256单播飞行参数
0x1002ES1ES216128单播发动机状态
0x1003ES1ES2,ES33264多播告警信息
0x2001ES2ES14512单播控制指令

配置时,端系统ES1需要知道0x1001、0x1002、0x1003三条VL的BAG和Lmax,以便整形发送;交换机需要知道每条VL从哪个端口进、从哪些端口出;接收端ES2需要知道从哪些VL接收数据。任何一处配置不一致,都会导致通信失败或帧被丢弃。

AFDX虚拟链路带宽分配关系示意 端系统 ES1 发送端 VL 0x1001 BAG=8ms Lmax=256 VL 0x1002 BAG=16ms Lmax=128 VL 0x1003 BAG=32ms Lmax=64 VL 0x2001 BAG=4ms Lmax=512 AFDX 交换机 VL转发表 / 整形与调度 按VL ID查表转发 BAG整形 / 队列调度 Lmax超限丢弃 端系统 ES2 接收端 接收 0x1001/0x1002 接收 0x1003(多播) 端系统 ES3 接收端 接收 0x1003(多播) 带宽计算:VL带宽上限 = (Lmax + 20B) × 8 / BAG 示例:0x1001 → (256+20)×8/0.008 = 276 kbps;0x2001 → (512+20)×8/0.004 = 1064 kbps 所有VL带宽之和须小于物理链路容量,并预留余量以应对时延抖动

从图中可以看出,VL的带宽分配是一个“端到端”的约束链:发送端按BAG整形,交换机按VL ID转发并调度,接收端按VL接收。任何一条VL的BAG或Lmax配置错误,都会影响整条链路的确定性。因此在实际工程中,VL规划表通常由网络设计工具统一生成,并经过一致性校验后才能加载到各端系统和交换机中。

VL ID、BAG、Lmax等参数在端系统和交换机两侧必须严格一致。若发送端按BAG=8ms整形,而交换机配置为BAG=16ms,交换机可能因“超速”而丢弃帧;若Lmax配置偏小,长帧会被直接丢弃。配置完成后应通过流量测试验证每条VL的实际发送间隔和帧长是否符合预期。

总结来说,虚拟链路是AFDX确定性的基本单元,BAG和Lmax是它的两个核心参数。BAG决定发送节拍,Lmax决定单帧占用链路的时间,二者共同决定VL的带宽上限。VL规划的本质,就是在满足各应用实时性要求的前提下,为每条数据流分配合适的BAG和Lmax,并确保全网带宽和时延都在可接受范围内。掌握这套机制,是后续进行AFDX网络配置、测试和排障的基础。