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的时延上界,确保关键控制流满足实时性要求。
VL配置案例
下面给出一个简化的VL配置表样例,用于说明端系统和交换机需要维护哪些字段。该表为教学示例,参数为合理假设值,并非来自真实机型。
| VL ID | 源 ES | 目的 ES | BAG (ms) | Lmax (B) | 方向 | 用途 |
|---|---|---|---|---|---|---|
| 0x1001 | ES1 | ES2 | 8 | 256 | 单播 | 飞行参数 |
| 0x1002 | ES1 | ES2 | 16 | 128 | 单播 | 发动机状态 |
| 0x1003 | ES1 | ES2,ES3 | 32 | 64 | 多播 | 告警信息 |
| 0x2001 | ES2 | ES1 | 4 | 512 | 单播 | 控制指令 |
配置时,端系统ES1需要知道0x1001、0x1002、0x1003三条VL的BAG和Lmax,以便整形发送;交换机需要知道每条VL从哪个端口进、从哪些端口出;接收端ES2需要知道从哪些VL接收数据。任何一处配置不一致,都会导致通信失败或帧被丢弃。
从图中可以看出,VL的带宽分配是一个“端到端”的约束链:发送端按BAG整形,交换机按VL ID转发并调度,接收端按VL接收。任何一条VL的BAG或Lmax配置错误,都会影响整条链路的确定性。因此在实际工程中,VL规划表通常由网络设计工具统一生成,并经过一致性校验后才能加载到各端系统和交换机中。
总结来说,虚拟链路是AFDX确定性的基本单元,BAG和Lmax是它的两个核心参数。BAG决定发送节拍,Lmax决定单帧占用链路的时间,二者共同决定VL的带宽上限。VL规划的本质,就是在满足各应用实时性要求的前提下,为每条数据流分配合适的BAG和Lmax,并确保全网带宽和时延都在可接受范围内。掌握这套机制,是后续进行AFDX网络配置、测试和排障的基础。