![UDP 数据包大小.. 最大,ping 3G 失败.. 顽固的软件供应商](https://linux22.com/image/599585/UDP%20%E6%95%B0%E6%8D%AE%E5%8C%85%E5%A4%A7%E5%B0%8F..%20%E6%9C%80%E5%A4%A7%EF%BC%8Cping%203G%20%E5%A4%B1%E8%B4%A5..%20%E9%A1%BD%E5%9B%BA%E7%9A%84%E8%BD%AF%E4%BB%B6%E4%BE%9B%E5%BA%94%E5%95%86.png)
我们拥有一个由 330 个客户端(服务车)组成的网络,这些客户端通过 3G 连接到我们的中央办公室。目前,这些客户端通过一个小型加固型 3G 路由器建立 3G 连接,然后建立 IPSec VPN 隧道(OpenSwan 堆栈)
一台 Windows 7 PC(移动数据终端)插入该路由器,并运行一小段商业软件,该软件使用 UDP 来传达服务车必须处理的工作的详细信息。
在对该产品进行用户验收测试期间,我们确实注意到当 NIC 设置为 10MB/s 或在通信路径中放置额外的交换机时,有线客户端上会出现一些通信故障。我们从未彻底解决此问题。幸运的是,该软件确实在我们的 3G 连接上工作正常。尽管存在一些小问题,但自实施以来,该软件一直运行良好。
最近,我们启动了一个项目,淘汰 3G 路由器(存在可靠性问题),使用安装在服务技术人员使用的移动数据终端中的内置 3G 调制解调器。我们的测试设备运行良好,我们可以使用内置调制解调器和 VPN 客户端建立 3G 连接,然后建立 VPN 隧道。
然而,现在使用的商业软件出现故障...所有其他网络流量均不受影响,例如,我们可以通过链接成功使用远程桌面、复制文件、来回 ping 等。
供应商并不热衷于深入调查这个问题,但我觉得这几乎肯定与他们使用 UDP 的方式有关。我们在使用大数据包时看到了一些有趣的 PING 结果。
当 ping 我们的 3G 路由器时,我们可以在故障开始发生之前成功 ping 大约 51Kb 的缓冲区大小。
当我们在移动数据终端内 ping 新 3G 调制解调器时,我们开始发现缓冲区大小约为 5Kb 时出现故障,缓冲区大小约为 12Kb 时故障率至少为 50%。缓冲区大小为 51Kb 时,故障率完全消失。
很明显,3G 路由器能够更好地处理大数据包大小。我只是不知道为什么。
我还认为,如果我们能解决这个问题,供应商的软件将重新开始工作。我更希望供应商有一个更宽容的协议,但我担心软件“就是这样”……而且它不会改变。
此应用程序的后端服务器位于 32 位 Windows Server 2003 计算机上。VPN 网关是 Fortigate 310b。
我真的超出了我的能力范围,如果有人能告诉我如何解决这个问题,我将非常感激。
编辑:有更多信息可用..
我编写了一个小实用程序来发送/接收 UDP 数据报..现有的 3G 路由器很乐意接受最大大小约为 50KB 的数据报..内部调制解调器最大可接收约 11KB 的数据报...
答案1
您要执行哪种类型的 ping,普通的 ICMP ping 还是使用某些特定的 UDP PING 工具来模拟 UDP 流量?所有设备上的 MTU 类型是什么?我们在两个站点之间的 IPSec VPN(PFsense)上遇到了一些问题(RDP 文件传输停止、MSSQL Management Studio 出现错误等),这是由 VPN 上的 MTU 引起的。