我很难推导数学模型/方程式来估计使用TCP / IP进行通信的两个节点之间的往返延迟。节点正在基于HTTP协议交换数据。在此模型中,要研究的最重要因素是网络中两个节点之间的物理距离,中间跃点数,带宽,每个跃点的处理延迟。我在网上搜索,但在这种意义上找不到任何东西,而是找到了有关电路交换网络和UDP协议的信息。我可以自定义它们以适合TCP吗?

评论

这是一个移动的目标,有太多的依赖关系会改变模型的常数。例如,如果要包括每跳转发延迟,则作为基准,您需要知道每台设备的品牌和型号。如果您不控制或不知道路径中的每个设备(例如通过Internet或其他网络),那么实际上就不可能考虑这一点。如果假设您知道路径中每个跳的全部知识,则可以应用基线转发延迟,例如对于交换机模型“ A”为1.2微秒,对于交换机模型“ B”为5.0微秒,依此类推。

这里也+1 !,您应该在SO上进行标记,以立即删除您的问题,其重复项

httping的源代码,使用注释httping -Gbg www.google.com -c 5

@Espanta,您的目标是估计延迟还是吞吐量?吞吐量高度依赖于TCP功能,例如SACK,RWIN,应用协议的聊天状态以及延迟。

@generalnetworkerror,我需要往返延迟才能获得http get和post请求和响应。

#1 楼

这是一个非常复杂的过程,因此制定一个对准确预测RTT有用的方程式非常困难。充其量,我想说的是,您可以创建一个模型,该模型在每个阶段使用一堆平均值,如果碰巧针对特定情况“更好地了解”,则可以进行调整。这是我目前正在研究的内容,所以我可以告诉您到目前为止我所知道的(从底层开始,从物理层开始):


在电子SE上查看我的问题;以太网的编码延迟以及与电缆频率额定值和通过铜缆的电速度(信号传播?)之间的关系,以进行通信延迟。由于您将使用标准化速度(100Mbps,1Gbps,10Gbps等),因此请不要区别对待光纤或铜缆。两者之间的“延迟”几乎相同,但铜显然不能传送信号。我在Physics SE网站上有这个问题,我现在知道答案。我只需要找到时间来解决问题,所以请关注一下(如果您有兴趣的话)(我将发布更多与电信使用光纤相关的问题,现在有机会我就知道答案了) )。
链接末尾的设备将增加更多的延迟。没有标准的说法“沿路径的2台交换机是Xms延迟,4台交换机是2 * Xms,2台路由器是Yms ...等等”。假设您使用的是1Gpbs,而路径中的设备以线速转发,则我们知道该速度为1000000000bps,因此物理接口以固定的编码速率运行(范围从每比特1纳秒到最大传输速率)。使用的符号编码方案为,例如10b)
您需要了解并考虑三种主要延迟(在物理层);序列化延迟,编码延迟,传播延迟(以及处理延迟,排队延迟,编码和解码延迟,但这些都在物理层之上,但需要提及!)。这些在互联网,VoIP:深入分析,此处的幻灯片13,加载到Google Scholar等上都有相当好的记录。
当我们向上移动协议栈时,我会假设目标MAC位于每个交换机的cam表中,而在IP层则位于ARP表中。这些发现过程引起的额外延迟仅发生在流中的第一个数据包,因此可以通过增加超时并发送免费的ARP等来避免它们。困难,因为这取决于服务器(例如)处理请求的过程,这将受到中断延迟的影响。由于负载,处理请求和上下文切换所需的中断数量是无法预测的。

我非常想帮助您解决您的问题,遗憾的是,这就是我现在有时间。我将在今晚或明天晚些时候更新此答案,我想发布到目前为止的内容。

同时,大多数人倾向于使用该数字来计算物理铜/光纤层在大约0.6 * c(C =光速)时的延迟。另外,您还需要考虑每个X数据包的TCP ACK交换,例如,如果您使用的是SACK,并且使用的是巨型帧和/或更大的MSS大小(现在也需要考虑MTU!),则这是不同的。 ,如果您要发送更多的中间ACK(如果您感兴趣的是所传输的数据量)。您还需要考虑臭名昭著的“带宽延迟乘积”,不要做出我对该页面所做的愚蠢误解。我从这里开始制作各种简单(非常难看)的数据计算器。再次进行中的工作,我将尽快尝试对其进行更新。我计划添加一个与您尝试执行的操作类似的计算器。如果您有兴趣,我还制作了一些光纤和光纤计算器,但是再一次,没有时间!,我还没有回过头来上传它们。在接下来的几天里,我将尽快尝试更新此答案。

P.S.我忘了提到QoS!如果QoS在路径中的任何地方都起作用,那么计算RTT将变得非常困难!

评论


谢谢。详细而言,这很好。我需要强调的是,两个节点之间的跳数对有线网络中两个节点之间的物理距离有很大的影响。 (至少因为我的实际基准测试表明了这一点。)因此,我将把所有这些放在一起,并尽快提供模型。感谢所有阅读,评价,回答并会回答的人。

– Espanta
13年5月20日在13:39

光纤的电信用途(假设OP不能仅在数据中心内处理延迟,或者可以完全控制物理基础架构的某些设置)会变得很有趣,并且几乎无法进行建模。强调这个问题的轶事。我曾经让T-1的肯塔基州路易斯维尔<->肯塔基州列克星敦和肯塔基州路易斯维尔<->俄亥俄州辛辛那提失败。打电话给电信公司,他们告诉我,伊利诺伊州西部的光纤切割是罪魁祸首。看地图,看看为什么这很疯狂。但是,带宽较高的链路不太可能成为这种电信疯狂的牺牲品。

–杰夫·麦克亚当斯
13年5月20日在13:58

#2 楼

(我想指出,其他人对延迟等如何工作以及导致延迟的原因发表了出色的答案。但是OP询问了建模问题;基本模型很简单,您只需插入示例数字即可。如果您想知道为什么延迟就是他们所需要的,然后查看其他所有人的答案:^)

网络延迟只是从一个端点到另一个端点的传输时间,跨越之间的N个跃点。 >
所以您有N个分段(跃点)和N-1个中间节点。每个节点都有一个延迟(该节点上若干事物的累积影响,例如队列延迟,处理延迟等),每个段都有一个传输延迟。总体来说,这是2N-1个独立变量。所以它是seg1 + node1 + seg2 ... + node(N-1)+ segN一跳就是= seg1,两个希望是seg1 + node1 + seg2,依此类推。

接下来,您必须定义所有这些部分是什么。因此,您可以使用CATV网络,卫星链路,光纤链路,以太网等来构建模型网络。对于每种技术,都必须查找示例信息。

传输延迟大约是数据大小除以段的传输速度。如果您需要一个更准确的模型,则可以添加飞行时间延迟-大约为航段的长度,再除以数据流的速度(近似于光速)。地球同步卫星的起伏很大。

您必须根据要放入模型中的设备来估计每个节点上的延迟。

如果您希望应用程序延迟(例如,直到FTP传输数据流开始之前的延迟),则可以通过计算网络延迟发生多少次来建立。例如,三向TCP握手会增加三倍的网络延迟,依此类推,可以增强应用程序的外观。

#3 楼

您可以通过在任一侧进行数据包捕获来估计往返延迟,然后测量从受监视计算机发出的请求和返回的响应之间的延迟。例如,如果您标记了SYN发送到远程计算机的时间,然后标记了SYN + ACK响应进入的时间,则该差异将为您提供往返TCP延迟的良好平衡。

请记住,这将大于实际的网络延迟,而延迟的大小取决于每台计算机的负载量。

评论


感谢您的回答,但我不想使用任何编码或机器解释来衡量它,我需要使用数学模型来表述它。例如,总延迟=总传播+总传输+总存储转发+总处理。对于这些时间,我可以有另一个公式。因此可以用数学方法进行测量。

– Espanta
13年5月20日在12:25



#4 楼

两个主机之间的延迟取决于几个因素:


传播延迟是指数据包在两个位置之间实际经过多长时间。光纤中的光速约为200000 km / s。我所居住的瑞典大约是1570公里,所以应该是7.85毫秒,但实际上更多是因为这是从鸟瞰角度来看的距离。物理介质,即网络设备上的接口。如果您具有2 Mbit的连接,并且要发送一个1500字节的数据包,则需要6毫秒来序列化该数据包(12000/2000000)。留在队列/缓冲区中,然后在接口上发送出去。取决于接口的速度和使用的缓冲区大小,接下来可能什么都不做,或者没有明显的延迟。

然后主机在生成数据包和应用程序进行延迟时会有所延迟处理他们。有一些用于测量HTTP延迟的应用程序。人们在放弃网站之前不会接受太多的网站延迟,因此这是一个重要因素。

评论


跳数怎么样?并在每一跳上都有延迟?

– Espanta
13年5月20日在12:42

很难制定一个通用的公式,因为一些因素在变化,例如序列化和排队。这是有人写的。 ccieflyer.com/pdf/2009-Mar-Oleg-Berzin.pdf-尽管数学超出了我的数学技能:)

–丹尼尔·迪布(Daniel Dib)
13年5月20日13:00