📡 第一章 网络硬件通用基础知识
📄 一句话概括

100BASE-TX 用 4B/5B 加 MLT-3,在 Cat5 上把速率提到 100 M,距离仍是 100 米。 它是「编码换速率」的教科书案例:线没换,换的是怎么把比特摆上去。

📝 本节和前面几节的关系

上一节是 10M 的曼彻斯特,这一节是它十倍的版本。 这一节要讲清一个反直觉的结论:速率涨十倍, 线上的符号率只涨了 6 倍多——因为编码效率从 50% 提到了 80%。

一、4B/5B:多花一位,换回时钟

把 4 个数据比特映射成 5 个线路比特,多出的那一位用来保证「不出现连续三个 0」。 接收端靠这些跳变同步时钟,这就是它替代曼彻斯特的原因: 曼彻斯特每比特都要跳,浪费一半带宽;4B/5B 只浪费两成。

效率对比:曼彻斯特 50%,4B/5B 80%。 所以 100 Mbit/s 只需要 125 Mbaud,而 10 Mbit/s 的曼彻斯特要 20 Mbaud。 十倍速率,符号率只涨 6.25 倍——省下来的就是那 30 个百分点。

二、MLT-3:把频率再压一半

4B/5B 之后是 125 Mbaud,如果直接上线路,基频在 62.5 MHz,Cat5 勉强。 MLT-3 用三个电平(+、0、-)循环跳变:遇到 1 就按 +→0→-→0 的顺序换,遇到 0 就保持。

结果是能量集中在符号率的四分之一处,也就是 31.25 MHz。Cat5 的 100 MHz 带宽绰绰有余。

这套「先扩频再压频」的组合,是百兆时代的核心技巧,后来千兆换成了更狠的 PAM-5 与回波消除。

三、自动协商:百兆时代最有用的一项发明

两端怎么知道对方是 10M 还是 100M、半双工还是全双工? 靠 FLP(快速链路脉冲):在链路空闲时发一串带编码的脉冲,把自己的能力列表播出去,双方取交集, 按优先级选最高的一档。

优先级顺序: 1000T 全双工 > 1000T 半双工 > 100TX 全双工 > 100TX 半双工 > 10T 全双工 > 10T 半双工。

现场最常见的坑是「一端固定、一端自协商」:固定端不发 FLP,自协商端只能猜,猜成半双工, 于是出现「能通但很慢、冲突计数猛涨」。 所以要么两端都自协商,要么两端都手工固定,绝不能一半一半。

四、为什么距离还是 100 米

速率涨了,距离没涨,原因有两层:

物理层:Cat5 在 31.25 MHz 的衰减与 Cat3 在 10 MHz 的衰减接近,所以 100 米这个预算刚好够用。 协议层:帧格式没变,最小帧仍是 64 字节,冲突检测的窗口还是 512 bit, 但时间缩到了 5.12 微秒——直径理论上只剩 512 米,靠把中继器级数限制为 2 级来保证可用。

这就是「标准」的做事方式:不是把物理推到极限,而是留足余量,保证各家设备互通。

五、动手 Demo:4B/5B 的效率、MLT-3 的频率,与 148.8 kpps 这个规格数

这段把三个数算出来:编码效率、需要的线路速率、最小帧下的包转发率。

eff = 4.0 / 5.0
T([u"编码效率", u"4/5 = 80%"], [0, 0])
T([u"需要的线路速率", u"%.0f Mbaud" % (100 / eff)], [0, 0])
pps = 100e6 / 672
print(pps, pps / 1000)

实跑输出:

--------------------------------------------------------------------
100BASE-TX 的 4B/5B 编码,把效率算清楚
--------------------------------------------------------------------
**4B/5B:每 4 个数据比特编成 5 个线路比特。**多出来的那一位用来保证
「不出现连续三个 0」,好让接收端一直有时钟可以同步。

  项                 值
  ---------------------------------------------------
  数据率             100 Mbit/s
  编码效率           4/5 = 80%
  需要的线路速率     125 Mbaud
  再经 MLT-3         每符号 1 bit,仍是 125 Mbaud
  线路上的基频       约 31.25 MHz

**MLT-3 把频率又压下来了。**它用三个电平(+、0、-)循环跳,
同样的符号率下,能量集中在 1/4 符号率附近,于是 Cat5 的 100 MHz 带宽够用。

**小包转发率:**100 Mbit/s 除以每帧 672 bit,得 148810 帧/秒=148.8 kpps。
这个数在所有交换机规格书里都写成 148.8 kpps,一个字节都不差。

125 Mbaud 这个数是 100 除以 0.8 得来的,不是查表。任何编码都能这样反推线路速率。

下面那个 148.8 kpps 与上一节的 14.88 kpps 正好差十倍,因为每帧的比特数没变(672), 速率翻了十倍。规格书上的数都是这么来的。

顺带说一句:交换机标称的 pps 与 Mbps 必须成对看。只标 Mbps 不标 pps 的, 多半是芯片跑不到线速小包。

30 秒实验

  1. 在交换机上看某个端口的「冲突计数」,非零说明有半双工或双工不匹配。
  2. 把两端中的一端手工固定成 100M 全双工,另一端保持自协商,观察现象。
  3. 算一下 4B/5B 编码下 1000 Mbit/s 需要多少 Mbaud(提示:千兆不用 4B/5B)。

常见误区

  1. 以为 4B/5B 是纠错编码。它只为同步,不纠错。
  2. 一端固定一端自协商。最常见的「能通但慢」的原因。
  3. 以为百兆只用两对线所以线无所谓。线序错、绞距不够照样掉包。
自测三问(点开对答案) 1. 4B/5B 的效率是多少,换来什么? —— 80%,换来足够的电平跳变用于时钟同步。 2. MLT-3 为什么能把基频压到 31.25 MHz? —— 三个电平循环跳变,能量集中在符号率的四分之一处。 3. 双工不匹配会有什么现象? —— 能通但吞吐很低,冲突计数与 CRC 错误上涨。

下一节:千兆怎么在同样的双绞线上做到十倍速率——四对线一起上。

相关笔记