首页/网络/网络排障速查/双工不匹配识别与修复
连通性与链路检测54 条

双工不匹配识别与修复

一端强制全双工、一端自动协商到半双工,会出现『小流量正常、大流量极慢+丢包』;半双工侧的碰撞计数与两端速率信息是实锤。

网络排障速查网络更新于 2026-10-13

双工不匹配的症状

一端固定为全双工、另一端处于自动协商时,协商可能失败并退化为半双工。半双工侧发送前要检测冲突,于是出现「小流量正常、大流量极慢且丢包」的典型表现:延迟上升、吞吐上不去、偶尔丢包,但链路状态始终显示为 up。判据在两端都能找到——半双工侧的碰撞相关计数会持续增长。

基本信息

适用平台Linux(ethtool 查看与设置协商模式)
关键字段ethtool 输出中的 Speed 与 Duplex;Duplex 为 Half 即需警觉
错误计数ethtool -S 中的 collision、late collisions、carrier、deferred
标准依据IEEE 802.3 自协商(Clause 28/37)
推荐做法两端都保持自协商;必须固定时两端固定为完全相同的速率与双工

典型使用场景

  • 服务器吞吐远低于网卡规格:先查双工与协商速率是否正常
  • 小文件传输正常、大文件极慢:典型的半双工碰撞特征
  • 更换网线或交换机端口后性能下降:确认协商结果是否发生变化
  • 老旧设备或工业设备对接:老设备固定半双工时需要评估影响
  • 光纤转电口模块场景:确认模块与对端协商是否一致

两端取证

两端取证
ethtool eth0                                        # 看 Speed 与 Duplex,出现 Half 就要警觉
ethtool -S eth0 | grep -iE 'collision|late|carrier|deferred'   # 碰撞类计数是否增长
ethtool eth0 | grep -E 'Speed|Duplex|Auto-negotiation|Link detected'
# 连续两次读计数,比较增量才能判断是否正在发生碰撞
ethtool -S eth0 | grep -i collision; sleep 30; ethtool -S eth0 | grep -i collision
# 查看网卡实际支持的速率与模式
ethtool eth0 | grep -A6 'Supported link modes'

修复原则

修复原则
推荐:两端都使用自协商(默认行为)
次选:两端都强制为相同的速率 + 全双工(必须两端一起改)
错误做法:一端强制 1000M/Full,另一端保持 auto
错误做法:只在一台设备上强制,另一端仍在自协商
# 千兆及以上链路强制半双工基本必然故障,不存在可用场景

协商组合与结果

A 端设置B 端设置结果
自协商自协商正常,双方协商到最高共同能力
强制全双工自协商常见故障:B 端退化半双工,碰撞增多
强制全双工强制全双工(同速率)可用,但失去线缆质量自检能力
强制全双工强制半双工必然故障,双向通信严重异常
强制速率不同自协商协商失败或降速,性能受限
千兆以太网下强制一端为半双工基本必然故障;两端都强制为相同值虽然可用,但会失去线缆质量自检能力,能不强制就不强制。

易错点

  • 「都强制成 1000M 全双工」却只改一端:另一端仍处于自协商,协商结果依旧异常,问题原样存在
  • 只看链路是否 up 就认为物理层正常:双工与协商错误不会让链路 down,性能问题容易被漏掉
  • 只看速率不看双工:速率协商到 1000M 而双工退化为 Half,吞吐照样上不去
  • 老设备强制模式下把降速与丢包一并归因于线缆:应先确认协商配置,再评估线缆类别是否达标

数据来源与参考

  • IEEE 802.3:自协商(Clause 28/37)
  • ethtool 手册

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌