第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标签会改变有效载荷

我的建议是:

  1. 先统计所有流量类型的帧大小分布
  2. 按最坏情况(最小帧)计算带宽上限
  3. 留出20%的余量给突发流量
  4. 用抓包工具验证实际带宽利用率

4.7 小结

带宽计算不是简单的“链路速率除以帧大小”。前导码、SFD、IFG这些“隐形字节”会吃掉一部分带宽。帧越小,开销占比越大。车载网络中,控制报文和视频流的帧大小差异很大,必须分开计算。

下一章,我会讲TSN中的时间同步机制,以及它如何影响带宽规划。到时候你会看到,时间同步本身也会占用带宽——嗯,又是一个容易被忽略的点。