2010-12-03 24 views
3

免责声明:这不是一个“如何”的问题。作为背景资料,我更想知道实际使用的不同实际做法。编程实践:如何为UDP数据报选择一个数据包大小?

我们知道UDP没有像TCP那样的PMTU发现。所以,我看到几个方法来避免与UDP IP碎片:

  • 发送512字节的数据包最大(UDP的做法)
  • 重新实施一些PMTU(使用ICMP“需要碎片化”的消息)。
  • 依赖于本地MTU(但它有多远可靠,因为UDP不是连接的协议,它怎么知道它的数据包将通过哪个接口?)
  • 其他...?

所以我想要有一个“背景”的想法,目前的UDP程序/协议正在使用哪些方法,特别是关于流/ VoIP常见应用程序?

由于通过提前

乔斯林

回答

3

限制为576个字节是很常见的。大多数Internet协议(如DNS)都这样做。大多数实时流协议也使用较小的数据包,因为它具有提供较低串行延迟以及在单个数据包丢失时影响较小的额外好处。

某些协议可以协商较大的数据包大小,但通常不会像PMTU发现那样健壮(例如DHCP允许最大消息大小协商)。

还有一些默认为1500左右的东西,并让用户在必要时降低它。 SNMP的大多数实现似乎都是这样做的。

无论如何,DF位通常不会被设置,所以过度乐观的结果是碎裂,而不是破碎。

+0

有趣的答案,谢谢!如果有人有关于SIP和Skype的具体信息,我也感兴趣。 – 2010-12-14 17:14:57