应使用ethtool查看网卡实际协商速率和双工模式,speed显示当前链路速率(如1000mb/s),duplex应为full,link detected为yes表示连通,auto-negotiation须为on以确保正确协商。

直接用 ethtool 查看网卡实际协商速率和双工模式,是定位物理层链路瓶颈最快速有效的方式。关键不是看配置,而是看“真实协商结果”——它反映网卡与对端设备(交换机、路由器或另一台服务器)实际达成的链路能力。
确认网卡名称并查看基础协商状态
先查出你要排查的物理网卡名(如 eth0、enp3s0f0、ens1f0 等):
ip -br link | grep -E "UP|LOWER_UP"
然后运行:
ethtool (例如 ethtool ens1f0)
重点关注以下几行输出:
-
Speed: 当前协商速率(如
1000Mb/s、10000Mb/s),不是网卡标称最大值 -
Duplex: 应为
Full;若显示Half,说明存在严重双工不匹配,极易引发丢包和性能骤降 -
Port: 通常为
Twisted Pair(电口)或Fiber(光口),可辅助判断介质类型 -
Auto-negotiation: 必须为
on;若为off,则速率/双工由手动设置,易与对端不一致 -
Link detected: 显示
yes才表示物理链路连通
对比两端协商结果是否一致
单看本机不够,必须同时检查对端设备(如接入交换机)的对应端口协商状态:
- 在交换机上执行类似命令:
show interface gigabitethernet 1/0/1(华为/华三)或show interfaces gi1/0/1 status(Cisco) - 核对双方的
Speed和Duplex是否完全一致 - 常见不一致场景:
• 一端强制设为1000Mb/s Full,另一端开启自协商 → 可能协商成100Mb/s Half
• 光模块型号不兼容或光纤收发异常 → 本机显示Link detected: no或速率反复跳变
检查自协商失败或降速的线索
如果协商结果明显低于预期(比如万兆卡只协商到 1G),需进一步排查:
- 运行
ethtool -S | grep -i "error\|drop\|fail",关注:
•rx_errors、tx_errors显著增长 → 物理链路干扰或硬件故障
•link_failures或negotiation_failures非零 → 自协商过程反复失败 - 检查日志:
dmesg | grep -i "eth\|link\|phy",留意是否有 “link down”、“autoneg failed”、“PHY reset” 等提示 - 临时关闭再启用自协商测试:
•sudo ethtool -s autoneg off speed 1000 duplex full
• 观察是否稳定;若稳定但性能仍差,问题可能在上层(驱动、队列、中断绑定等)
常见误判与避坑提醒
避免把表象当根因:
- 别只看“Supported link modes”:那是网卡支持的能力列表,不代表当前生效值
- “Speed: Unknown!” 表示链路未通或 PHY 无响应,优先查线缆、模块、供电、对端端口是否 shutdown
- 虚拟网卡(如 veth、bond、bridge)不适用:ethtool 对它们返回的是模拟值,需查底层物理口
-
某些老网卡或定制驱动可能不报告 Duplex:可用
cat /sys/class/net//device/duplex辅助验证
链路瓶颈常藏在物理协商细节里。只要 ethtool 输出中的 Speed 和 Duplex 符合预期且两端一致,基本可排除物理层问题;否则,从线缆、模块、交换机配置逐级向上验证即可。











