How to calculate packet time from latency and band

2019-01-22 00:35发布

问题:

I have a link between a host and a switch.

The link has a bandwidth & a latency. How to calculate the time of 2 packets(with size 1KB) to be transferred from Host A to Switch 1?

Here's the diagram(I am talking about the first link)

Note: I just want to calculate it manually for these values, I want to know the principles/laws of calculating these problems.

回答1:

Propagation time = (Frame Serialization Time) 
                  + (Link Media Delay) 
                  + (Queueing Delay) 
                  + (Node Processing Delay - if known)

Formulas:

  • Frame Serialization Time = S/R
  • Link Media Delay = D/p
  • Queueing Delay = Q / R
  • Node processing delay is normally specified or measured

Variable decoder:

  • R: link data rate (bits/second)
  • S: Packet size (bits)
  • D: Link distance (meters)
  • P Processing Delay (seconds)
  • p: medium propagation speed (meters/second)
    • speed in copper is 210*10**6
    • speed in fiber is 300*10**6
  • Q: Queue depth (bits); note: if the link is not congested, there is no Queue depth

Applying to your question:

I will only calculate information for the link between Host A and Switch 1:

Frame Serialization Time =  Packet_size_bits / Link_data_rate_bps
                         = 2*1024*8 / (2*10**6)
                         = 0.00819 [seconds]
Link Media Delay         = 0.04 seconds [from diagram: 40ms]
Queueing Delay           = 0.0 [assume no congestion]
Node Processing Delay    = 0.0 [Host A had nothing specified for delay]
-----------------------------------------------------------------------
               Total     = 0.00819 + 0.04 + 0.0 + 0.0
                         = 0.04819 seconds
                         = 48.2 milliseconds for two 1KB packets to go from 
                                             Host A to Switch 1


回答2:

Quite roughly, the formula is:

LATENCY + SIZE / THROUGHPUT<br>
In your example:<br>
LATENCY = 40ms = 0.04<br>
SIZE = 1000*2<br>
THGOUGHPUT = 2Mbps = 250,000 Bytes/second<br>

Bottom line:

0.04 + 2000 / 250000 = 0.048 = 48ms<br>

Notice that I converted all units to bytes and seconds, so calculations are meaningful.
This is more accurate for large packets. For small packets, real numbers are larger.