Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Synchronization 测量单向数据包延迟:需要同步吗?_Synchronization_Delay_Packet - Fatal编程技术网

Synchronization 测量单向数据包延迟:需要同步吗?

Synchronization 测量单向数据包延迟:需要同步吗?,synchronization,delay,packet,Synchronization,Delay,Packet,我让一台机器以固定速率(每x毫秒一台)向另一台机器发送数据包。我需要测量每个数据包的单向延迟。一个想法是第一台机器记录发送第一个数据包的瞬间,一旦所有传输完成,让第二台机器知道,这样它就可以从该值开始计算每个数据包的延迟 我需要任何特定的同步吗?我不知道这是否会给我的测量带来相当大的误差 向目的地发送10k单向数据包 向目的地发送“完成”消息 目标回复为“全部收到” 一旦收到回复,你就知道花了多长时间 由于需要确认消息,测量中会有一个很小的系统误差,但这个误差很小。对于真实世界的延迟,它完全可以

我让一台机器以固定速率(每x毫秒一台)向另一台机器发送数据包。我需要测量每个数据包的单向延迟。一个想法是第一台机器记录发送第一个数据包的瞬间,一旦所有传输完成,让第二台机器知道,这样它就可以从该值开始计算每个数据包的延迟

我需要任何特定的同步吗?我不知道这是否会给我的测量带来相当大的误差

  • 向目的地发送10k单向数据包
  • 向目的地发送“完成”消息
  • 目标回复为“全部收到”
  • 一旦收到回复,你就知道花了多长时间
  • 由于需要确认消息,测量中会有一个很小的系统误差,但这个误差很小。对于真实世界的延迟,它完全可以工作。计算的延迟为:
    (a*10000+a+b)/(10000+1+1)
    。对于
    a
    ~
    b
    来说,这个术语变成了
    a


    或者,紧密同步时钟(困难)并发送时间戳。

    这是一个想法,是的。但是我需要能够调整每个数据包之间的时间间隔,这样我就可以使链路饱和,使其保持不饱和,等等。如果您只是想使链路饱和,为什么不在测量数据包丢失时增加负载呢?你可以通过这种方式找到最佳点。单向延迟不是往返时间的一半。。。如果没有同步,则无法估计单向延迟。即使您在10天内从A向B发送数百万条消息,您也无法知道消息的传播方向是快还是慢。如果A->B速度慢,并且您的所有邮件在第10天到达B,B将只发送回“全部收到”,但A不知道此回复何时发送。A可能认为所有消息都是第一天到达B的,而回复需要9天才能返回A。如果没有外部同步,您根本无法计算单向方向。@Timmos true,但在实际延迟情况下,它完全可以工作。计算的延迟为:(a*10000+a+b)/(10000+1+1)。对于a~b,这个项变成了a。我从我的答案中删除了不完整的备选方案(2)。不知道我当时在想什么。即使这样,你的公式也不能成立,因为你正在从A->B发送10000个数据包,但当你发送完上一条消息后,你就开始发送消息了。发送消息并不意味着它已经到达B。所以,实际上,你要计算的是发送消息的速度,而不是消息从a->B传播所需的时间。