11

我想就 UDP 数据包丢失(或丢失)问题获得 SO'ers 的经验。

最初我的理解是,考虑到通过交叉电缆连接 NIC 的直接点对点连接,以及 NIC 上的充足缓冲区以及及时处理所述缓冲区,“应该”没有数据包丢失或数据包排序问题。我相信这也是这种情况,因为在两点之间有一个好的/高端的开关。

  1. 排除上述情况,局域网上预期的平均 UDP 丢包率是多少

  2. 哪些情况会导致 UDP 数据包排序问题?

4

3 回答 3

4

不知道平均 LAN 上的 UDP 数据包丢失。我假设在现代交换网络上相当低,否则您的 LAN 或端点负载太高。:)

当路线上下移动时,重新排序可能最容易实现;比如说,您组织中的一台交换机的负载足够大,因此重新组织树是有意义的,并且流量通过不同的交换机发送。更有可能是您的 ISP 的对等方来来往往,或者达到流量限制,并且通过它们的数据包的优先级发生变化——旧数据包在负载较重的网络上传输,新数据包在负载较轻的网络上传输,并且他们乱七八糟地到达。

于 2011-05-16T23:11:56.090 回答
2

在我的基本千兆交换 LAN 上,即使使用 FreeBSD、Solaris 或 Linux,我每秒也能获得 50,000 个数据包的零数据包丢失。

但是 Windows 非常特别,我很容易在完全相同的硬件上以低速(例如每秒 10,000 个)看到数据包丢失。这主要是由于 WinSock 和 NIC 之间的缓冲区溢出,如果您更快地驱动数据包,您会丢失更多,如果您将数据包隔开,您会丢失更少。

没有神奇的数字,我的情况可能更糟,因为博通的 Windows 驱动程序很糟糕。

您可以很容易地看到数据包排序问题,但几乎总是只交换最后两个数据包。这是开关如何工作的人工制品。

有趣的是,您在 Wi-Fi 中没有提到的是,无线电信号极易受到干扰和环境条件的影响。

于 2011-09-01T12:04:10.410 回答
2

我也在寻找一个预期的平均值。我发现从直接链接(PC 到 PC)丢包的情况很少发生,尽管它肯定会发生。在 1 kB 数据包 @ 50 Hz 时,可用性约为 99.9%。

我已经看到仅通过在同一网络接口上发送和接收来重新排序。我得出的结论是,这是因为每个数据包都是异步处理的,因此有可能在收到新收到的数据包之前处理新到达的数据包。

于 2011-09-01T08:13:49.033 回答