第3章 常见协商失败的场景分析
做网络这行,最怕的就是设备明明连着线,数据就是不通。我这些年排查过的自协商问题,十有八九都逃不出下面这四种坑:不匹配、超时、降级和链路抖动。今天咱们把这四种场景掰开揉碎了讲,每个场景我都会说说我实际踩过的坑。
核心观点:自协商失败不是单一原因,90%的故障都出在物理层配置或线缆质量上。优先检查双工模式、MDI/MDIX和时钟同步。
3.1 不匹配——最经典的「一边千兆一边百兆」
不匹配的场景,说白了就是两端协商出来的参数不一样。最常见的是双工不匹配,比如一端是全双工,另一端是半双工。因为自协商是用FLP脉冲交换能力信息,如果其中一端被人为强制了速度和双工模式,那另一边就可能误判。
- 现象:链路能通,但丢包率奇高,延迟抖动大,TCP重传频繁。
- 原因:人为强制配置(如switchport nonegotiate)、老旧设备不支持自协商、介质转换器(如光转电)未透传FLP。
- 排查方法:
- 两边同时看
show interfaces status或ethtool eth0 - 对比 Negotiated 双工模式是否一致
- 检查是否有
Auto-negotiation: off或Speed/Duplex: 1000/Full但实际线缆只支持百兆
- 两边同时看
我在项目中遇到过一回,客户端强制百兆全双工,交换机侧开了自协商。结果链路显示up,但传大文件时速度只有几百KB。我抓包一看,大量CRC错误和碰撞。
避坑指南:我曾经帮客户排查数据中心链路,发现所有服务器都开了自协商,但唯独一台思科交换机的端口打了speed 1000和duplex full。结果这台交换机跟其他厂商的设备死活协商不起来。我的建议是:要么两边都强制,要么两边都自协商,千万别混用。
3.2 超时——设备「想太多」导致链路起不来
自协商有个时间窗口,叫协商超时。正常情况下一对设备交换几次FLP脉冲就能确定能力,一般1~2秒。但如果物理层信号不稳定、光模块接收灵敏度不够,或者线缆长度超90米,就会反复尝试,最终超时失败。
- 现象:链路指示灯频繁闪烁后熄灭,接口状态显示
down/down,日志里出现autoneg failed或link flap。 - 常见触发点:
- 劣质网线或网线接头氧化
- STP(生成树)和自协商同时进行,RSTP收敛时间与协商超时冲突
- 光模块接收功率在临界值(比如-23dBm)附近
| 场景 | 典型日志 | 排查重点 |
|---|---|---|
| 线缆质量差 | MDI_X / MDI_C 冲突 | 更换网线、测线仪检查 |
| 光模块性能不足 | rx loss of signal | 检查光功率、清洁光纤接口 |
| 交换机负载高 | CPU 100%导致LLDP协商被延迟 | 检查设备CPU,必要时关闭LLDP |
| 电缆过长 | retry limit exceeded | 测线缆长度,超过100米需加中继 |
我记得有一次排查园区网故障,用户有线网络每隔半小时断一次。我上去一看,交换机端口日志里全是 autoneg timeout – link is down。后来发现是那根网线在弱电井里被老鼠咬过,线芯接触不良,FLP脉冲偶尔传不过去。
3.3 降级——明明能跑千兆,却只协商出百兆
降级是最容易被忽略的故障。设备之间明明支持千兆甚至万兆,但最后只协商出百兆甚至十兆。原因往往是线缆或距离不达标。
举个例子:六类线跑千兆,如果中间有一段是五类线,或者水晶头只打了4根芯,自协商就会自动降低一个档次。这是向下兼容机制——设备感知到物理层异常,主动退回到更稳定的低速模式。
排查时我习惯用 ethtool eth0 看两行:
# 左边是设备支持能力,右边是当前协商结果
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Current link mode: 100baseT/Full ← 明显降级了
如果看到Current link mode比Supported中的最高档低,就说明降级发生了。这时候别急着怀疑设备,先检查物理介质:
- 线缆是否为屏蔽线?非屏蔽线在强干扰环境下容易降级
- 网线长度是否超过100米?超了的话会回退到100M
- RJ45接口是否氧化?用酒精擦拭水晶头触点
注意:有些交换机会在降级后依然保持 Link Up 状态,但实际带宽只有100M。我曾经因为忽略这一点,让客户白白采购了一套千兆设备,最后发现是楼内线缆只有四对芯中的两对通。嗯,遇到降级第一件事就是拿测线仪测线。
3.4 链路抖动——时好时坏最折磨人
链路抖动,就是端口状态在up和down之间反复跳变。自协商层面的抖动一般源于电气噪声或阻抗不匹配。
我总结过三个最容易引发抖动的场景:
- 网线两端水晶头接法不一致:一端A类一端B类,但距离短时还能通,信号反射会导致FLP识别失败。
- 电源干扰:网线跟强电电缆走同一个线槽,电磁干扰破坏脉冲时序。
- 交换机散热不良:温度过高导致PHY芯片工作不稳定,协商脉冲相位偏移。
排查链路抖动时我有个习惯——先看接口计数器:
# 用思科命令举例
Switch#show interfaces gigabitEthernet 0/1
Hardware is Gigabit Ethernet, address is 00e0.fc12.3456
5 minute input rate 1000 bits/sec, 0 packets/sec
5 minute output rate 2000 bits/sec, 1 packets/sec
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
30 second input rate 1000 bits/sec, 0 packets/sec
30 second output rate 2000 bits/sec, 1 packets/sec
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 output errors, 0 collisions, 1 interface resets
0 unknown protocol drops
Output queue: 0/40 (size/max)
Last input never, output never, output hang never
Last clearing of "show interface" counters never
如果看到 interface resets 数量持续增长,基本就是链路在抖动。这时候可以临时关闭自协商,强制固定速率,看是否还抖动——如果还抖,说明问题出在物理层硬件或线缆上。
个人经验:我曾在机房遇到过一整排端口都在抖动,排查了三天发现是机柜接地不良,导致网线屏蔽层累积了静电,放电瞬间干扰了PHY。后来把所有设备重新接地,抖动立刻消失。
总结一下我的经验:碰到自协商故障,别一头扎进配置里。先看物理层——线缆、光模块、接地、距离。这四个场景里,不匹配和降级占了七成以上,超时和抖动往往和线缆质量强相关。记住一句话:自协商本质上是对物理层能力的对话,对话失败要么是语言不通(不匹配),要么是对方听不见(超时),要么是说了谎(降级),要么是环境太吵(抖动)。
实战关联:建议你在做自协商诊断时,手里常备一根已知正常的六类跳线和一台具有ethtool或者show interfaces命令的终端。绕开所有中间跳线,直连测试——这招帮我排除了至少一半的物理层误报。