在像 VxWorks 这样的实时嵌入式系统中,可靠且可预测的以太网通信至关重要。为了同时提高可靠性和实时性能,我们可以对网络行为进行数学建模,并应用 queueing theory(排队论) 来确定最佳缓冲区大小,从而同时最小化丢包率和延迟。
本文探讨了建模方法、优化过程以及用于 VxWorks 网络性能调优的工程建议。
为什么网络建模在 VxWorks 中很重要 #
当 VxWorks 系统发送以太网帧时,延迟可能来自以下两个方面:
- 传输延迟(Transmission delay) – 由物理介质引起。
- 排队延迟(Queueing delay) – 当帧在发送缓冲区中等待传输时产生。
如果某个帧在当前周期内未能发送,它必须等到下一个周期才能发送,这会导致显著延迟。另一方面,如果队列过短,会导致链路利用率不足。目标是:找到缓冲区大小的最佳平衡点。
构建以太网队列模型 #
VxWorks 中的帧发送过程可以用 Poisson arrivals(泊松到达过程) 建模(独立帧到达,数量不限)。设:
- λ – 平均帧到达率(帧/时间单位)
- μ – 平均传输速率(帧/时间单位,μ > λ)
- ρ = λ / μ – 业务强度
- L – 缓冲区长度
- L₀ – 最优缓冲区长度
如果 L
过大 → 帧积压,有些由于延迟被丢弃
如果 L
过小 → 链路空闲,造成容量浪费
基于损失成本的优化方法 #
我们引入损失成本的概念:
- c₁ – 当
L > L₀
丢弃帧的成本 - c₂ – 当
L < L₀
链路空闲的成本(通常 c₁ ≥ c₂)
通过 birth-death process(生灭过程) 和 geometric distribution(几何分布) 推导稳态概率,我们可以计算:
-
N_d – 在繁忙状态下平均丢弃的帧数
-
N_p – 在利用不足时平均空闲的帧数
-
F(L) – 总通信损失成本:
F(L) = c₁ * N_d + c₂ * N_p
最优队列长度 L₀
是使 F(L)
最小的整数。
可视化:最优队列长度 #
下图为损失成本曲线与队列长度的关系,并标出了最优点 L₀。
可视化:成本组成 #
为了更好地理解权衡关系,下图将丢帧成本、空闲容量成本以及总损失成本分开表示。这些成本曲线的交点即为最优队列长度。
关键工程建议 #
通过仿真与分析,我们发现调优缓冲区大小能显著减少排队延迟并提升性能。除了数学分析外,以下是针对 VxWorks 网络设计的实用建议:
- 设计合理的拓扑结构 – 对关键节点采用带冗余的网状结构。
- 发送与接收缓冲区分离 – 在应用层实现零通信空闲时间。
- 增加资源避免拥塞 – 提升带宽、使用多路由器、增加备份链路。
- 优化超时与重传机制 – 将超时设置为一次完整往返时间(发送、处理与 ACK)。
- 数据与控制通道分离 – 使用两个 socket:一个用于数据,一个用于监控/确认。
- 快速重连机制 – 链路故障时,快速重建 socket 以恢复正常通信。
结论 #
通过对 VxWorks 以太网排队行为建模并找到最佳缓冲区大小,我们可以减少丢包、提升利用率并增强实时性能。结合合理的拓扑设计、超时优化及冗余机制,这些策略能显著提高 VxWorks 网络的可靠性。
该方法在需要确定性网络性能的嵌入式系统中具有很强的工程实用性。
参考文献
- 王光, 岳松, 李岩 等. 网络化指挥控制系统软件体系结构研究, 现代防御技术, 2013(2).
- 邱安, 张涛, 谷宇. 航天器实时以太网技术研究, 空间科学学报, 2015(3).
- 缪晓. 11 种工业实时以太网标准架构, 仪器仪表标准化与计量, 2009(3).
- 卢成. 排队论, 北京邮电大学出版社, 2000.