如何制定TCP / IP中的通信延迟?


12

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


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


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

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

@generalnetworkerror,我需要HTTP get和post请求和响应的往返延迟。
Espanta

Answers:


8

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

  • 在电子SE上查看我的问题;以太网的编码延迟以及与电缆频率额定值通过铜缆的电速度(信号传播?)的关系,以进行通信延迟。由于您将使用标准化速度(100Mbps,1Gbps,10Gbps等),因此请不要区别对待光纤或铜缆。两者之间的“延迟”几乎一样,但铜显然不能传送信号。我在Physics SE网站上有这个问题,我现在知道答案。我只需要找到时间来解决问题,所以请关注一下(如果您有兴趣的话)(我将发布更多与电信使用光纤相关的问题,现在有机会我就知道答案了) )。

  • 链路末端的设备将增加更多的延迟。没有标准的说法:“哦,沿着一条路径的2台交换机是Xms延迟,4台交换机是2 * Xms,2台路由器是Yms ...等等”。假设您使用的是1Gpbs,而路径中的设备以线速转发,则我们知道该速度为1000000000bps,因此物理接口以固定的编码速率运行(从每比特1纳秒到最大使用的符号编码方案为10b

  • 您需要注意并考虑三种主要延迟(在物理层);序列化延迟,编码延迟,传播延迟(以及处理延迟,排队延迟,编码和解码延迟,但这些都在物理层之上,但需要提及!)。这些在Internet和VoIP:深度分析上有相当详尽的文档,请点击此处的幻灯片13 ,在Google Scholar中加载,等等。

  • 当我们向上移动协议栈时,我将假设目标MAC位于每个交换机cam表中,而在IP层则是ARP表中的目标MAC。这些发现过程引起的额外延迟仅发生在流中的第一个数据包中,因此可以通过增加超时并发送免费的ARP等来规避它们。

  • 当您到达应用程序层时,这将变得非常困难,因为这取决于服务器(例如)处理请求的过程,这将受到中断延迟的影响。由于负载导致处理请求和上下文切换所需的中断数是不可预测的。

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

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

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


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

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

5

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

网络等待时间只是从一个端点到另一端点传输时间,跨度为N个跃点

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

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

传输延迟约为数据大小除以段的传输速度。如果需要更精确的模型,则可以添加飞行时间延迟-大约为航段的长度,再除以数据流的速度(近似于光速)。地球同步卫星的上下移动意义重大。

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

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


3

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

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


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

3

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

  • 传播延迟
  • 序列化延迟
  • 排队/缓冲延迟

传播延迟是指数据包在两个位置之间实际经过多长时间。光纤中的光速约为200000 km / s。我居住的瑞典大约1570公里,所以应该是7.85毫秒,但实际上更多的是因为这是鸟瞰鸟瞰的距离。

串行化延迟是通过物理介质(即网络设备上的接口)对数据包进行串行化所花费的时间。如果您具有2 Mbit的连接,并且您正在发送一个1500字节的数据包,则需要6毫秒来序列化该数据包(12000/2000000)。

排队/缓冲延迟是数据包在接口上发送之前必须保留在队列/缓冲区中的时间。根据接口的速度和使用的缓冲区大小,接下来可能什么都不做,或者延迟很长。

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


跳数呢?并在每一跳上都有延迟?
Espanta

很难制定一个通用的公式,因为一些因素在变化,例如序列化和排队。这是有人写的。ccieflyer.com/pdf/2009-Mar-Oleg-Berzin.pdf-尽管数学超出了我的数学技能:)
Daniel Dib
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.