我很难推导数学模型/方程式来估计使用TCP / IP进行通信的两个节点之间的往返延迟。节点正在基于HTTP协议交换数据。在此模型中,要研究的最重要因素是网络中两个节点之间的物理距离,中间跃点数,带宽,每个跃点处的处理延迟。我在网上搜索,但在这种意义上找不到任何东西,而是找到了有关电路交换网络和UDP协议的信息。我可以自定义它们以适合TCP吗?
httping
,请使用注释httping -Gbg www.google.com -c 5
我很难推导数学模型/方程式来估计使用TCP / IP进行通信的两个节点之间的往返延迟。节点正在基于HTTP协议交换数据。在此模型中,要研究的最重要因素是网络中两个节点之间的物理距离,中间跃点数,带宽,每个跃点处的处理延迟。我在网上搜索,但在这种意义上找不到任何东西,而是找到了有关电路交换网络和UDP协议的信息。我可以自定义它们以适合TCP吗?
httping
,请使用注释httping -Gbg www.google.com -c 5
Answers:
这是一个非常复杂的过程,因此制定一个对准确预测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将变得非常困难!
(我想指出,其他人对延迟等如何工作以及导致延迟的原因发表了出色的答案。但是OP询问了建模问题;基本模型很简单,您只需插入示例数字即可。如果您想知道为什么延迟就是他们的实际情况,然后查看其他所有人的答案:^)
网络等待时间只是从一个端点到另一端点的传输时间,跨度为N个跃点。
因此,您具有N-1个中间节点的N个段(跳跃)。每个节点都有一个延迟(该节点上若干事物的累积影响,例如队列延迟,处理延迟等),每个段都有一个传输延迟。总体来说,这是2N-1个独立变量。所以它是seg1 + node1 + seg2 ... + node(N-1)+ segN 一跳,就是= seg1,两个希望是seg1 + node1 + seg2,依此类推。
接下来,您必须定义所有这些部分。因此,您可以使用CATV网络,卫星链路,光纤链路,以太网等构建模型网络。对于每种技术,您都必须查找示例信息。
传输延迟约为数据大小除以段的传输速度。如果需要更精确的模型,则可以添加飞行时间延迟-大约为航段的长度,再除以数据流的速度(近似于光速)。地球同步卫星的上下移动意义重大。
您将必须根据要放入模型中的设备来估计每个节点上的延迟。
如果您希望应用程序延迟(例如,直到FTP传输数据流开始之前的延迟),则可以通过计算网络延迟发生多少次来建立。例如,三向TCP握手会增加三倍的网络延迟,依此类推,可以增强应用程序的可视性。
两个主机之间的延迟将取决于几个因素:
传播延迟是指数据包在两个位置之间实际经过多长时间。光纤中的光速约为200000 km / s。我居住的瑞典大约1570公里,所以应该是7.85毫秒,但实际上更多的是因为这是鸟瞰鸟瞰的距离。
串行化延迟是通过物理介质(即网络设备上的接口)对数据包进行串行化所花费的时间。如果您具有2 Mbit的连接,并且您正在发送一个1500字节的数据包,则需要6毫秒来序列化该数据包(12000/2000000)。
排队/缓冲延迟是数据包在接口上发送之前必须保留在队列/缓冲区中的时间。根据接口的速度和使用的缓冲区大小,接下来可能什么都不做,或者延迟很长。
然后,主机生成数据包以及应用程序处理它们的时间将有所延迟。有一些用于测量HTTP延迟的应用程序。人们在放弃网站之前不会接受太多的网站延迟,因此这是一个重要因素。