【发布时间】:2018-06-22 22:52:11
【问题描述】:
我们有一个应用程序进行 udp 广播。 数据包大小大多高于 mtu,因此它们将被分片。
tcpdump 表示所有数据包都已收到,但应用程序并未全部收到。
如果将 mtu 设置得更大,那么整个事情都不会发生,因此不会出现碎片。 (这是我们目前的解决方法 - 但德国人不喜欢解决方法)
所以看起来碎片化是问题所在。
但我无法理解数据包丢失的原因和位置。
应用程序开发人员表示,他们可以在接收数据包的套接字上看到数据包的丢失情况。所以他们的应用程序不会丢失数据包。
我的问题是:
tcpdump在linux上监控的设备在哪里?
那里的数据包是否已经重新组装或稍后完成?
如何进一步调试此问题?
【问题讨论】:
-
如果网络上有更多的 udp 广播流量(以及碎片数据包),那么未接收到的碎片 udp 数据包的百分比会越来越高 - 即使这些广播数据包没有被其他系统接收到数据包丢失。
-
如果您看到所有的部分都到达了 tcpdump,那么您的问题出在其他地方。
-
什么是 tcpdump 报告?只是说内核丢弃了0个数据包吗?我不认为 tcpdump 会重新组装碎片化的 IP 片段(尽管 Wireshark 会)。不过,我对最后一部分可能是错的。
标签: udp tcpdump packet-loss ip-fragmentation