【问题标题】:how to calculate end-to-end delay in this scenario在这种情况下如何计算端到端延迟
【发布时间】:2016-11-18 02:20:04
【问题描述】:

这是我的问题: 我们希望通过网络发送大小为 150,000 字节的消息。有四个跃点,每个跃点长度为 20 公里,运行速度为 100 Mb/s。但是,在发送之前,我们将消息拆分为 1500 字节的数据包。消息的端到端延迟是多少?使用铜中的光速 = c = 2 * 10^8 m/s,并将答案四舍五入到最接近的整数毫秒。

到目前为止,我所拥有的是 48 毫秒,我按以下方式计算得出: 1500 字节 = 12,000 位 12,000 位/(100x10^6)[100Mb/s] = 0.00012s 20km/(2*10^8)[此方程中的光速] = 1e-7 将它们相加,您得到每跳 0.0001201s x 4 跳 = 0.0004804s -> 48ms 四舍五入到最接近的整数。

显然这是不正确的,我无法弄清楚我的错误。我的在线课程没有可用的帮助,所以我转向 SO。如果有人能直接指出我的正确方向,我将不胜感激。

【问题讨论】:

  • 缺少一些信息。什么是序列化延迟?路由器的延迟是多少?这是需要数据包间间隙的以太网吗?是否使用 TCP(带有窗口和 ACK)。等等。有了这些信息,您可以计算出源将完整的消息传输到线路上需要多长时间,然后加上最后一位到达那里所需的时间。
  • 感谢您的评论,@RonMaupin。提出的问题准确地提供了上述信息,仅此而已。抱歉,这不是一个真实的场景,而是一个学术计算问题。
  • 计算出最后一位在线上需要多长时间,加上端到端延迟,然后计算出如何正确计算毫秒。有数百个网站可以满足网络学习的需求,但这并不是其中之一。这个站点是用于应用程序开发的,我不知道有任何 SE 站点可以解决这个问题..

标签: networking packet end-to-end


【解决方案1】:

关键是,路由器需要等到收到一个完整的数据包,然后才开始将数据包转发到下一个路由器。第一种情况,当150,000字节的报文没有被分成100个1500字节的包时,每个路由器需要等待(150,000 * 8) / (100 * 10^6)秒才能开始转发该报文。即,路由器被卡住了很长时间。但是在第二种情况下,如果报文被分割,那么每个路由器只需要等待(1500 * 8) / (100 * 10^6)秒就可以开始转发数据包,是前一个的1/100案子。因为在这种情况下,它是一种流水线,路由器能够在接收其余消息的同时转发到达的部分消息。在第四个路由器,或者只是目的地,当整个消息到达时计算消息的总传输时间。在第一种情况下,最后一个路由器正在等待并且什么也不做,所以等待时间仅为 (150,000 * 8) / (100 * 10^6) 秒。在第二种情况下,最后一个路由器首先等待(1500 * 8)/(100 * 10^6)秒,然后,由于它是最后一个路由器,目的地,它不需要转发到达的消息,唯一的工作因为它是等到所有消息到达。因此,它等待另外 99 个数据包到达,即 ((150,000 - 1500) * 8) / (100 * 10^6) 秒。最后,第一种情况的总延迟为 4 * (150,000 * 8) / (100 * 10^6) + 4 * (20 * 10^3)​​ / (2 * 10^8) = 48 ms,总共第二种情况的延迟是 3 * (1500 * 8) / (100 * 10^6) + (150,000 * 8) / (100 * 10^6) + 4 * (20 * 10^3)​​ / (2 * 10 ^8) = 12.76 毫秒。请注意,在两种情况下,它们的传播延迟没有区别,区别在于每个路由器的卡顿时间。

【讨论】:

    【解决方案2】:

    计算一个数据包的时间(p/r + l/c):

    单个数据包大小:1500 byte * 8 = 12000 bit
    网速:100 Megabit * 1 000 000 = 100 000 000 bit / sec

    12 000 bit / 100 000 000 bit/sec = 0.00012 sec (0.12 ms)

    传播延迟:20 000 / (2 * 10 ^ 8) = 0.0001 sec (0.1 ms)

    一跳的总延迟:0.12 ms + 0.1 ms = 0.22 ms

    4 跳所以total time in ms = 4 * 0.22 ms = 0.88 ms

    第二部分只需要计算将其余部分放入链接需要多长时间(请记住,在将第二个数据包放入链接之前,您不会等待第一个数据包到达目的地)

    剩下的放上链接= 150 000 byte - 1 500 byte = 148 500byte
    这是(148500 * 8 =) 1 188 000 bit

    所以1 188 000 bit / 100 000 000 bit/sec = 0.01188 sec (**11.88ms**)

    然后总计 11.88 ms + 0.88 ms = 12.76(13 由于四舍五入到最接近的整数毫秒)

    【讨论】:

    • 这个解决方案是不是错了 4*0.12ms = 0.48ms 而不是 0.88ms
    【解决方案3】:

    端到端延迟可以通过将链接数乘以网络中的总延迟来计算。 您可以使用此在线End to End Delay 工具。

    【讨论】:

      【解决方案4】:

      我的解释:

      第一个问题是说明如果我们不分解数据包需要多长时间

      第二个问题是为了说明分解成更小尺寸的优势

      如视频中所述,如果我们不对其进行分解,则传输将需要等待每一跳的数据传输完成。但是如果我们分解它,第一个将等待更短(较小的大小),然后后面的数据包可以加载到网络以简化传输。

      【讨论】:

        【解决方案5】:

        4 跳意味着

        S->r1->r2->r3->D
        
        No. of packets is =15*10^4 / 1500 = 100 packets
        T.D=> 15*10^2*8 / 100* 10^6 (this is for 1 packet) = 0.12ms
        P.D=> 20*10^3 / 2* 10^8 = 0.1ms
        Total is =>0.1+0.12 = 0.22ms
        4 hops takes => 0.22*4=0.88ms
        0.88ms is for 1st packet only
        

        第一个数据包需要 0.88 毫秒才能到达 D。 当第一个数据包到达 D 时,其他数据包必须并行处理。所以 D 将每 0.12 毫秒从 R2 接收剩余的数据包 1 个数据包。

        所以其他99个数据包耗时0.12*99 ms。//只有传输延迟乘以(N-1)个数据包

        答案是 => 0.88 + 0.12*99=12.76ms

        计算任何此类问题的公式->

        总延迟=否。跳数(第一个数据包总延迟)+ 传输N -(传输延迟 + 处理 + 排队)

        (IF 处理延迟和排队延迟 = 0 then)

        总延迟=否。跳数*(第一个数据包总延迟)+ 传输延迟*(N - 1)

        PPT HIGHLY RECOMMENDED EXAMPLES

        Another Example

        【讨论】:

        • 我认为这个假设是错误的:其他 99 个数据包在第一个数据包到达目的地时到达 r3
        • 顺便说一句,按照您的推理,它应该是 0.88 + 0.12*99 = 12.76
        • @Kluyg 你是对的,当第一个数据包到达 D,第二个数据包到达 R3,第三个数据包到达 R2,第四个数据包到达 R1 时,我以错误的方式解释了。当第 2 个数据包从 R3 传输到 D 时,第 3 个数据包从 R2 到达 R3。这样,只有时间 b/w R3 到 D 乘以(传输 + 传播延迟)。
        • 我认为这个解决方案有两个错误: 1. 传播延迟是 0.1ms 而不是 10 ms 所以它是 12 ms + 0.1ms = 12.1 ms 和 2. 我们不需要等待数据包在我们开始在网络上放置一个新的之前传播到目的地。
        • 传播延迟公式是距离/速度 => 20*10^3/ 2*10^8=> 10^(-4)=> 0.1ms 这就是上面写的。传输延迟为 0.12ms,因此总延迟为 0.1+0.12 =>0.22ms
        【解决方案6】:

        对于单个比特,路由器工作在存储转发模式,即它等待整个数据包到达,然后再移动到下一跳。

        当您发送数据包时,您无需等待所有数据包都到达路由器,然后再发送单个数据包。

        友合对数据包本身的“打包延迟”,它只取决于最慢的链路、数据包的大小和数据包的数量。

        【讨论】:

          【解决方案7】:

          编辑:

          我想我终于明白了。网络拓扑如下所示:

          source - link#1 - router#1 - link#2 - router#2 - link#3 - router#3 - link#4 - dest
          

          我们先从源头的角度来考虑。我们正在逐包发送消息包。一旦我们将第一个数据包放在网络上,我们就会发送第二个,然后是第三个,等等。将所有 100 个数据包放在网络上需要多长时间?

          100 * 1500B * 8(b/B) / 100 Mb/s = 12 ms
          

          端到端延迟是将整个消息从源传输到目标所需的时间。所以现在源只是将包#100 放在链路#1 上,让我们跟踪最后一个包的生命周期。最后一个数据包需要

          20km/(2 * 10^8 m/s) = 0.1 ms - to get to the router#1
          1500B * 8(b/B) / 100 Mb/s = 0.12 ms - to put it on the link#2
          20km/(2 * 10^8 m/s) = 0.1 ms - to get to the router#2
          1500B * 8(b/B) / 100 Mb/s = 0.12 ms - to put it on the link#3
          20km/(2 * 10^8 m/s) = 0.1 ms - to get to the router#3
          1500B * 8(b/B) / 100 Mb/s = 0.12 ms - to put it on the link#4
          20km/(2 * 10^8 m/s) = 0.1 ms - to get to the dest
          

          因此,在源将其放在链路#1 上之后,最后一个数据包总共需要 0.76 毫秒才能到达最终目的地。这给了我们最终的答案:

          12 ms + 0.76 ms = 12.76 ms ~= 13 ms
          

          原答案:

          下面显然是一个正确的答案,但我不明白为什么我们不将总和的第二部分乘以 4,毕竟有 4 个箍。如果有人能解释一下,我将不胜感激。

          解释

          13 毫秒。我们计算端到端延迟如下:

          4 * (1500B * 8(b/B) / 100 Mb/s + 20km/2 * 10^8 m/s)
          + (150,000/1500 - 1) * (1500 * 8 (b/B) / 100Mb/s) = 12.76 ms
          

          【讨论】:

          • 我仍然相信它是正确的。也符合课程中的解释。您认为错误在哪里?
          猜你喜欢
          • 2023-03-26
          • 1970-01-01
          • 2019-06-13
          • 2016-01-13
          • 2019-10-31
          • 2018-12-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多