我正在为一位客户排除故障,他需要能够通过卫星链路从路由器向他们的远程站点发送 5000 个 ping 操作且零超时,但他们每次测试都会丢失一到五个数据包。
在一般情况下,我愿意将如此低的丢失率归结为卫星链路的成本,但丢失仅有的从路由器 ping 到远程站点时显示。为说明起见,以下是所涉及的网络设备:
出站流量
- 192.1.1.51 路由器 中心
- 192.1.1.52 TX 交换机中心
- 192.1.1.50 封装器中心
- 172.1.1.1 远程站点偏僻的
返回流量
- 172.1.1.1 远程站点偏僻的
- 192.1.1.28 通道单元中心
- 192.1.1.53 RX 开关中心
- 192.1.1.51 路由器中心
从路由器向远程站点执行 ping 操作时,会显示丢失情况。从连接到 TX 交换机的 Sun 服务器执行 ping 操作(绕过路由器)时,5000 次 ping 操作完成,没有一次丢失。这验证了整个卫星路径以及路由器以外的所有设备。
然后我尝试从路由器向远程站点之外的所有其他设备发送 5000 个 ping......并且我几乎立即收到了所有 5000 个 ping,没有任何丢失,因此从路由器到路径中其他所有设备的连接都已验证良好。
有问题的路由器是 Cisco 7206VXR,CPU 利用率似乎从未超过 50%。最高进程只有 20%,所以我不确定这是否只是路由器由于优先级较低而丢弃 ICMP 数据包的问题,特别是考虑到路由器会毫无问题地向本地设备发送 5000 个数据包。
我也研究了空路由的可能性,但根据客户的说法,唯一可能的罪魁祸首是远程访问的基本路由,我无法在这里发布他们的运行配置来获得第二意见。
任何建议都将不胜感激。我的网络经验很少,我正在绞尽脑汁解决这些看似矛盾的症状。
答案1
数据报是一种尽力而为的服务。如果您要求数据可靠地传送,则不能使用数据报。其实就是这么简单。整个系统的设计,从端到端,都不是为满足这一要求而设计的。您不能像在圣代冰淇淋上放一颗樱桃一样,在最后把它强加给整个系统。
答案2
事实证明,问题在于,CEF 在中心路由器上全局启用,但在连接到中心 LAN 的接口上明确禁用(“no ip route-cache cef”)。一旦删除显式禁用语句,数据包丢失就会消失。
我不明白为什么这样做会有效,因为集线器设备和集线器路由器之间没有数据包丢失,但我对结果没有异议。
希望这可以帮助那些在尝试隔离非常小的数据包丢失时遇到困难的人。
再次感谢所有在这个问题上提供建议的人。