一会儿能ping通一会ping不通解决方案
解决:网关网口模式指定成100Mbps 全双工
1. 背景知识:以太网速率与双工模式
以太网网口一般有三种常见速率:
10 Mbps
100 Mbps
1000 Mbps(千兆)
同时还有两种工作模式:
全双工(Full Duplex):同时收发,不冲突。
半双工(Half Duplex):收发不能同时进行,需要轮流。
一般情况下,网卡和设备之间会开启 自动协商(Auto-Negotiation),通过协议互相探测,确定最佳的:
工作速率(10/100/1000 Mbps)
双工模式(全双工 / 半双工)
2. 问题的根本原因
原来使用的是 自动协商,但摄像头、交换机或网关之间协商不一致,会导致以下现象:
情况 | 网口状态 | 现象 |
---|---|---|
协商一致(正常) | 100M / 全双工 | 网络稳定,RTSP 流畅 |
协商失败 | 一方是 100M 全双工,另一方是 100M 半双工 | 大量冲突,丢包 |
协商反复切换 | 时而 100M,时而 10M,时断时续 | 一会儿能 ping 通,一会儿断 |
协商成功但链路质量差 | 实际速率过高,丢包多 | 视频绿屏、花屏 |
这就是一会儿能 ping 通,一会儿 ping 不通的原因。
3. 为什么固定 100Mbps 全双工就好了
把网关网口模式强制指定为 100Mbps 全双工,这样:
关闭自动协商 → 不再反复切换速率,链路保持稳定。
如果摄像头网口是百兆(很多 RTSP 摄像头就是百兆口),两边都固定 100Mbps → 完全兼容。
全双工避免了冲突,UDP 丢包率显著降低 → RTSP 视频稳定。
换句话说,是跳过了不兼容的自动协商,强制让两边保持在一个稳定的速率和模式下工作。
4. 为什么会发生协商不一致
这类问题在以下场景特别常见:
老旧摄像头
一些老设备只支持 100Mbps 半双工,自动协商时和千兆网卡不兼容。不同厂家的设备混接
比如你的网关是千兆,摄像头是百兆,交换机中间再混一个三层设备,容易谈不拢。差的网线或接头
千兆模式需要 8 芯线,如果网线只接了 4 芯,协商可能失败。PoE 摄像头
某些 PoE 模块在千兆下电力不足,自动降速失败。
5. 如何判断是不是这个问题
可以做几个验证:
方法 1:用 ethtool 查看协商状态
sudo ethtool eth0
重点看:
Speed(速率):是否稳定在 100Mb/s
Duplex(双工):是否一致(Full)
Link detected:是否掉线
如果显示是 Half 或速率反复变化,就是协商失败。
方法 2:在交换机或网关上看日志
如果是企业级交换机(H3C、华为、思科),可以看到日志:
Interface eth0 link up 100Mbps half duplex
Interface eth0 link down
Interface eth0 link up 1000Mbps full duple
如果出现这种不断 up/down 的记录,就是协商不稳定。
方法 3:抓包看 UDP 丢包
sudo tcpdump -i eth0 host 192.168.1.88 and port 554
如果协商失败,UDP 丢包率会非常高,导致绿屏。
6. 解决方案
方案 | 适用场景 | 效果 |
---|---|---|
A. 两边都强制 100M 全双工 ✅ 推荐 | 摄像头是百兆 | 最稳定 |
B. 升级到千兆交换机 + 千兆摄像头 | 新设备支持千兆 | 自动协商稳定 |
C. 换优质网线 | 超五类/六类线 | 降低物理层问题 |
D. 固定一方,另一方仍自动 | 临时方案 | 可能仍会冲突,不推荐 |
7. 总结
为什么强制 100Mbps 全双工就好了?
因为 自动协商失败 导致 速率和双工模式不一致,引起丢包、断流、黑屏。
手动固定两端速率和模式,避免反复切换,就能保持链路稳定。