编程实践:如何选择UDP数据报的分组大小?

4
免责声明: 这不是一个"如何"的问题。我更想知道的是,作为背景信息,实际上使用了哪些不同的做法。
我们知道UDP没有像TCP那样的PMTU发现机制。因此,我看到有几种方法可以避免IP分段和UDP:
  • 发送最多512字节的数据包(UDP方法)
  • 重新实现一些PMTU(使用ICMP "需要分段"消息)。
  • 依赖本地MTU(但它到底有多可靠,因为UDP不是一个连接的协议,它怎么知道它的数据包将通过哪个接口传输?)
  • 其他...?
因此,我希望能够获得有关当前UDP程序/协议使用哪些方法的“背景”理念,特别是关于流媒体/ VoIP常见应用程序方面的情况?
提前感谢您的帮助,
Jocelyn
1个回答

4
限制在576字节内非常普遍。大多数互联网协议(如DNS)都这样做。大多数实时流媒体协议也使用较小的数据包,因为这样可以提供更低的序列化延迟,并且如果单个数据包丢失,则影响较小。
一些协议有办法协商更大的数据包大小,但通常不像PMTU发现那样强大(例如,DHCP允许最大消息大小协商)。
还有一些默认为1500左右的东西,如果需要,用户可以将其降低。 SNMP的大多数实现似乎都会做类似的事情。
总之,DF位通常没有设置,因此过于乐观的后果是分段而不是损坏。

有趣的回答,谢谢!如果有人对SIP和Skype有具体的信息,我也很感兴趣。 - Jocelyn delalande

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接