双工模式不匹配会导致吞吐量骤降但不断网,需确认本端与对端Speed和Duplex完全一致且均为Full;通过ethtool查协商状态、对端设备命令核对、错误计数及dmesg日志定位问题,临时可强制配置但推荐两端启用autoneg。

双工模式不匹配是物理层链路性能骤降的典型原因——它不会直接断网,但会引发大量冲突帧、重传和丢包,导致吞吐量远低于标称速率。排查核心在于确认本端与对端是否都协商出 Full,且速率一致。
一、立即查看本机真实协商结果
运行 sudo ethtool <网卡名>(如 ens1f0),重点关注三行:
-
Speed:当前协商速率(如
1000Mb/s),不是网卡支持的最大值 -
Duplex:必须为
Full;若显示Half,基本可判定已发生双工不匹配 -
Link detected:必须为
yes,否则先查物理连接
注意:Supported link modes 和 Advertised link modes 是能力列表,不能代表当前实际工作状态。
二、同步核对对端设备配置
仅看本机不够。必须登录交换机或对端服务器,检查对应端口的实际协商值:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 华为/华三交换机:
display interface GigabitEthernet 1/0/1 - Cisco 设备:
show interfaces gi1/0/1 status或show controllers ethernet-controller gi1/0/1 phy - 另一台 Linux 服务器:
ethtool <对端网卡名>
关键比对项:两端的 Speed 和 Duplex 必须完全一致。常见错配场景包括:
- 本端
autoneg on,对端autoneg off强制设为1000/full→ 本端可能协商成100/half - 一端为光纤模块,另一端为电口,或光模块型号不兼容 → 可能反复降速或
Link detected: no
三、验证错误计数与日志线索
双工不匹配会直接反映在底层统计中:
- 执行
ethtool -S <网卡名> | grep -i "error\|drop\|coll",重点观察:
•rx_errors、tx_errors持续增长
•collisions(碰撞数)非零(全双工下应为 0)
•negotiation_failures或link_failures不为 0 - 查内核日志:
dmesg | grep -i "<网卡名>\|phy\|link\|autoneg",留意autoneg failed、PHY reset、link down等提示
四、临时干预与验证
若确认是协商问题,可尝试统一两端配置:
- 两端同时关闭自协商并强制设定:
sudo ethtool -s <网卡名> autoneg off speed 1000 duplex full - 设完后立刻运行
ethtool <网卡名>确认Link detected: yes且三项值正确 - 若设完后链路中断(
Link detected: no),说明对端未同步配置,需立即回退并检查对端 - 不建议长期关闭自协商;仅用于快速验证或对接老旧设备
真正稳定的解法是让两端都开启 autoneg on,并确保线缆、模块、交换机端口配置无硬性限制。

















