第4章 带宽计算基础:以太网帧结构、前导码、IFG、帧间隙对实际带宽的影响
做车载TSN网络规划,第一关就是算带宽。
很多人上来就拿着100Mbps、1000Mbps这些数字去算,结果发现实际能传的数据远没那么多。我当年第一次做车载以太网项目时就吃过这个亏——算得好好的带宽,一跑起来就卡顿。后来才明白,问题出在帧结构上。
4.1 以太网帧结构:你看到的不是全部
先看一个标准以太网帧长什么样。我习惯把它分成三块:
- 前导码(Preamble):7字节,用于同步时钟
- 帧起始定界符(SFD):1字节,标记帧开始
- MAC帧本体:46-1500字节(不含VLAN标签时为64-1518字节)
- 帧间隙(IFG):12字节,帧与帧之间的间隔
注意了,前导码和IFG在数据链路层是真实存在的,但它们不算是“用户数据”。
关键点:物理层传输时,前导码+SFD+IFG是必须的开销。你买的100Mbps带宽,有一部分被这些“隐形字节”吃掉了。
4.2 前导码和SFD:为什么它们不算数据?
前导码的作用说白了就是让接收端知道“我要发数据了,准备好”。7个字节的10101010...模式,用来同步时钟。SFD是最后一个字节,变成10101011,告诉接收端“后面就是正经数据了”。
我在调试一个ADAS摄像头数据流时,发现带宽利用率只有80%出头。一开始以为是驱动问题,后来用抓包工具一看,前导码和IFG占了将近20%的开销。嗯,这就是物理层的“税”。
4.3 IFG(帧间隙):帧与帧之间的喘息空间
IFG是12字节的空闲时间。为什么需要它?
- 给接收端处理上一帧的时间
- 防止总线被连续占用
- CSMA/CD机制需要这个间隙
你想想看,如果帧与帧之间没有间隔,接收端根本来不及处理。我见过一个案例,有人把IFG强行缩短到8字节,结果丢包率直接飙升到5%。车载网络对可靠性要求极高,千万别动IFG。
4.4 实际带宽计算:公式与案例
好了,我们来算一笔账。
公式:
实际有效带宽 = 链路速率 × (MAC帧大小) / (前导码+SFD+MAC帧大小+IFG)
举个例子:
| 参数 | 值 |
|---|---|
| 链路速率 | 100 Mbps |
| MAC帧大小(最小) | 64 字节 |
| 前导码+SFD | 8 字节 |
| IFG | 12 字节 |
| 总开销 | 8 + 12 = 20 字节 |
| 实际有效带宽 | 100 × 64 / (64 + 20) ≈ 76.19 Mbps |
看到没?100Mbps的链路,传最小帧时只能用到76Mbps。帧越小,开销占比越大。
我的经验:车载网络中,控制类报文通常很小(比如60-80字节),带宽利用率很低。而视频流帧很大(1500字节左右),利用率能到98%以上。所以规划时,一定要区分流量类型。
4.5 帧间隙对实时性的影响
TSN对延迟有严格要求。IFG虽然只有12字节,但在高优先级流量中,它会影响调度。
我曾经在测试中遇到一个问题:两个摄像头同时发送数据,中间只隔了一个IFG。结果第二个摄像头的帧被延迟了12字节的传输时间。在100Mbps下,12字节大约是0.96微秒。看起来很小,但如果你有10个摄像头排队,延迟就接近10微秒了。
所以,在TSN网络中,我们通常用帧抢占(Frame Preemption)来打断长帧,减少IFG带来的累积延迟。
4.6 避坑指南:带宽计算中的常见错误
我曾经犯过的错:
- 把前导码和IFG当成“可忽略”的开销——结果带宽利用率算高了15%
- 用平均帧大小算带宽——实际上车载网络中帧大小分布极不均匀
- 忽略VLAN标签(4字节)对帧大小的影响——VLAN标签会改变有效载荷
我的建议是:
- 先统计所有流量类型的帧大小分布
- 按最坏情况(最小帧)计算带宽上限
- 留出20%的余量给突发流量
- 用抓包工具验证实际带宽利用率
4.7 小结
带宽计算不是简单的“链路速率除以帧大小”。前导码、SFD、IFG这些“隐形字节”会吃掉一部分带宽。帧越小,开销占比越大。车载网络中,控制报文和视频流的帧大小差异很大,必须分开计算。
下一章,我会讲TSN中的时间同步机制,以及它如何影响带宽规划。到时候你会看到,时间同步本身也会占用带宽——嗯,又是一个容易被忽略的点。