第二章:自动协商的流程与状态机
自动协商,说白了就是两台设备在物理层用“暗号”互相摸底的过程。我刚入行那会儿,以为插上网线就能通,直到被一个“速度协商失败”的故障折腾了两天,才发现这背后还有个精细的状态机。
2.1 握手过程:从无到有
当你把网线插进去,物理层其实已经忙得不可开交了。整个过程分三步:
- 检测连接——收到对方的脉冲信号,确认链路能用。
- 发送能力——告诉对方我能跑多快、全双工还是半双工。
- 匹配最佳模式——双方取一个都支持的最高共同模式。
嗯,这里要注意:如果一端强制设成了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文本,直接看流转图:
个人习惯:我每次看交换机日志,如果看到“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的编码方式、状态机的几个关键状态。你想想看,大多数自动协商故障都能在这张图里找到对应节点。下一回你碰到协商问题,别急着换线,先拿状态机过一遍——多半能准确定位。