第二章:自动协商的流程与状态机

自动协商,说白了就是两台设备在物理层用“暗号”互相摸底的过程。我刚入行那会儿,以为插上网线就能通,直到被一个“速度协商失败”的故障折腾了两天,才发现这背后还有个精细的状态机。

2.1 握手过程:从无到有

当你把网线插进去,物理层其实已经忙得不可开交了。整个过程分三步:

  1. 检测连接——收到对方的脉冲信号,确认链路能用。
  2. 发送能力——告诉对方我能跑多快、全双工还是半双工。
  3. 匹配最佳模式——双方取一个都支持的最高共同模式。

嗯,这里要注意:如果一端强制设成了100M全双工,另一端是自协商,握手就会失败。我曾经碰过一个机房,全是强制设置的,结果换了台交换机忘了改,整排机器都降到了10M半双工。

2.2 FLP Burst:协商的“摩斯电码”

FLP Burst是快速链路脉冲(Fast Link Pulse)的简称。每16毫秒发一次脉冲串,里面编码了本端的能力信息。对方收到后,用“优先级算法”挑出共同的最高配置。

FLP Burst 参数 典型值 说明
脉冲串间隔 16 ms ± 8 ms 允许一定抖动
脉冲宽度 100 ns 标准规定
能力编码位 16位 Base Page + Next Page

排查经验:用示波器抓FLP脉冲时,我经常看到不规则的间隔——说明对端物理层不稳定,或者线缆有问题。如果看不到脉冲,基本就是线断了或者一端强制了。

2.3 状态机:一张图看懂

下面是我根据IEEE 802.3标准总结的状态机。咱不看那些复杂的FSM文本,直接看流转图:

自动协商状态机流程图 链路断开 能力检测 发送FLP Burst 接收FLP Burst 协商完成 检测到连接 发送脉冲 接收脉冲 注意:状态机可能在“能力检测”和“发送FLP Burst”之间循环多次,直到双方达成一致或超时。

个人习惯:我每次看交换机日志,如果看到“autoneg restart”反复出现,百分之百是状态机卡在“发送FLP Burst”和“能力检测”之间了。原因通常是线缆质量差或者对端设备有bug。

2.4 Next Page:进阶协商

Next Page机制很多人忽略了。它允许在Base Page(基础能力)之后传额外的信息,比如802.3az能效以太网、远程故障指示、自动MDI/MDIX等。

  • Base Page——必发,包含速度、双工、流控等基础能力。
  • Next Page——可选,可以传多页,每页也有16位。
  • Message Code——比如“1000BASE-T”这种扩展编码。

我曾经踩过的坑:有一台千兆交换机和百兆路由器对接,协商出来全是10M半双工。查了半天,发现路由器不支持Next Page里的1000BASE-T消息码——它把Next Page当成了无效信息,直接fallback到了最低配置。后来我强制路由器设为100M全双工才解决。

2.5 常见故障模式对照表

现象 可能原因 排查方向
链路一直亮不起来 FLP Burst丢失 查线缆、查对端是否强制
协商速度比预期低 能力位不匹配或Next Page干扰 抓FLP分析、查双方能力表
链路频繁跳变 状态机反复重置 测噪声、换线、查电源
协商成功但丢包 双工协商错误(例如一端全双工一端半双工) 查双方双工状态

好了,这一章的核心其实就三个东西:握手流程、FLP Burst的编码方式、状态机的几个关键状态。你想想看,大多数自动协商故障都能在这张图里找到对应节点。下一回你碰到协商问题,别急着换线,先拿状态机过一遍——多半能准确定位。