我很难推导出一个数学模型/方程来估计使用TCP/IP通信的两个节点之间的往返延迟。节点基于HTTP协议进行数据交换。在该模型中,最重要的研究因素是网络中两个节点之间的物理距离、中间跳数、带宽、每个跳的处理延迟。我搜索了网络,但没有发现任何这种意义上的东西,而是找到了一些关于电路交换网络和UDP协议的东西。我可以自定义它们以适应TCP吗?
发布于 2013-05-20 13:08:12
这是一个非常复杂的过程,因此,要建立一个能够准确预测RTTs的方程是非常困难的。充其量,我会说,你可以创建一个模型,在每个阶段使用一组平均值,如果你碰巧“更好地了解”某一特定情况,你就可以调整它,因为这是你所能得到的。这是我目前正在学习的东西,所以我可以告诉你们我目前所知道的(从底层开始,从物理层开始):
我很想帮助你回答你的问题,遗憾的是,这是我现在的全部时间。我会更新这个答案,也许今晚晚些时候或者明天,我想张贴我到目前为止。
同时,大多数人倾向于在物理铜/纤维层约0.6*c (C =光速)时使用延迟值。此外,您还需要考虑TCP的每个X数据包的SACK交换,例如,如果您使用的是SACK,如果您使用的是大型帧和/或更大的MSS大小(现在也需要考虑MTU!),如果您在SACK之间发送更多的SACK(如果传输的数据量对您感兴趣的话)。您还需要考虑到臭名昭著的带宽延迟积,不要对页面的我做到了做出愚蠢的误解。我开始制作各种简单(而且非常丑陋)的数据计算器这里。再次,一项正在进行的工作,我将尝试和更新他们很快。我计划添加一个计算器,类似于你想要做的事情。我也做了一些光和纤维计算器,如果你有兴趣,但再次,没有时间!,我还没有抽出时间上传他们。在接下来的几天里,我会尽快更新这个答案。
我忘了提QoS了!如果QoS在路上的任何地方发挥,它将变得非常困难的计算RTT!
发布于 2013-05-20 13:12:42
(我想指出的是,其他人已经发布了关于延迟等原因的极好答案,以及是什么原因造成的。但是OP询问了关于建模的问题;一个基本的模型很简单,您只需插入示例数。如果你想知道延迟是什么原因,那就看看其他人的答案:^)
网络延迟只是从一个端点到另一个端点的传输时间,跨越N个跳。
所以你有N个片段(啤酒花)与N-1中间节点。每个节点都有一个延迟(多个事物对该节点的累积影响,如队列延迟、处理延迟等),每个段都有一个传输延迟。总的来说,这是2N-1自变量。所以是seg1 +node1 +seg2 .+节点(N-1) +segN单跳,is =seg1,两个希望是seg1 +node1 +seg2,等等。
接下来,您必须定义所有这些部分是什么。所以你可以用CATV网络、卫星链路、光纤链路、以太网等来构建一个模型网络。对于每一种技术,你都需要查找示例信息。
传输延迟大约是数据大小除以段的传输速度。如果你需要一个更精确的模型,你可以加上飞行时差--大约是段的长度,除以数据流的速度(近似光速)。如果你有一个卫星连接,这是很重要的;与地球同步卫星的上下移动是非常重要的。
每个节点上的延迟,您必须根据您要放置到模型中的设备来估计。
如果您想要应用程序延迟(例如,直到FTP传输的数据流开始时的延迟),那么您可以通过计算网络延迟的次数来构建。例如,3路TCP握手会增加三倍的网络延迟,等等,从而增加应用程序所看到的内容。
发布于 2013-05-20 12:22:07
您可以通过在任何一方获取数据包捕获来估计往返延迟,然后测量从受监视机器发出的请求和返回的响应之间的延迟。例如,如果您标记了SYN到远程计算机的时间,然后标记SYN+ACK响应进入的时间,那么这种差异将给您提供往返TCP延迟的相当好的估计。
请记住,这将比真正的网络延迟更大,而更大的程度取决于这两台机器的负载有多重。
https://networkengineering.stackexchange.com/questions/643
复制相似问题