当前位置:  开发笔记 > 编程语言 > 正文

为最大吞吐量,UDP数据包的最佳大小是多少?

如何解决《为最大吞吐量,UDP数据包的最佳大小是多少?》经验,为你挑选了2个好方法。

我需要通过可能有损的网络将数据包从一个主机发送到另一个主机.为了最小化数据包延迟,我不考虑TCP/IP.但是,我希望最大化吞吐量uisng UDP.应该使用的UDP数据包的最佳大小是多少?

以下是我的一些注意事项:

网络中交换机的MTU大小为1500.如果我使用大数据包,例如8192,则会导致碎片.丢失一个片段会导致丢失整个数据包,对吧?

如果我使用较小的数据包,我将产生UDP和IP头的开销

如果我使用一个非常大的数据包,我可以使用的最大数据包是多少?我读到最大的数据报大小是65507.我应该使用什么缓冲区大小来发送这样的大小?这有助于提高我的吞吐量吗?

常见操作系统(例如Windows,Linux等)支持的典型最大数据报大小是多少?

更新:

数据的一些接收器是未实现TCP/IP堆栈的嵌入式系统.

我知道这个地方到处都是那些非常喜欢使用可用内容的人.但我希望能得到更好的答案,而不仅仅关注MTU.



1> CesarB..:

替代答案:小心不要重新发明轮子.

TCP是数十年网络经验的产物.每一件事或几乎每件事都有共鸣.它有几种大多数人不经常考虑的算法(拥塞控制,重传,缓冲管理,处理重新排序的数据包等).

如果你开始重新实现所有的TCP算法,那么你最终可能会遇到一个(paraphasing Greenspun的第十条规则)"临时的,非正式指定的,错误的,慢速的TCP实现".

如果你还没有这样做,那么最好先看看一些最新的TCP/UDP替代方案,比如SCTP或DCCP.它们是为TCP和UDP都不是很好的匹配而设计的,正是为了让人们使用已经"调试"的协议而不是为每个新应用重新发明轮子.


这是对问题的评论,而不是对问题的回答.有时,您只需要执行此操作,例如出于历史原因:应用程序已使用UDP数十年,并且使用范围正在发生变化,您需要使UDP通信适应新的需求.你不想失去你的团队在应用程序协议中花费数十年的经验,所以它可能看起来像是重新实现了对外界的轮子,而它只是让已经存在的轮子变得更聪明.
不是答案."我怎么做A?" - "做B." 我鄙视这种行为.

2> CesarB..:

找到理想数据报大小的最佳方法是完成TCP本身的工作,以找到理想的数据包大小:路径MTU发现.

TCP还有一个广泛使用的选项,双方都告诉对方他们的MSS(基本上是MTU减去标题)是什么.


PMTUD的下行是过度热心和不明信息的系统管理员通过禁用其防火墙上的所有ICMP来打破它.
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有