“The internet seems slow today”
“It’s taking forever for the page to load!”
“This Zoom call sucks!”
The growth of the internet as a central component to our digital lives naturally leads to concern, frustration and even anger when it doesn’t perform as needed or expected. Any delay introduced into the system can cause performance issues like video becoming distorted, websites to partially load or sound clipping. Understanding end-to-end delay can help when identifying system performance issues and it starts with understanding how to calculate end-to-end delay.
First, we should distinguish between end-to-end delay and latency. These terms are used interchangeably and they really mean the same thing – “how long does it take to…”. So in general they mean the same thing and it is how they are used that differentiates the terms. When I talk about latency, I’m referring to the round-trip time it takes to send a request and get a response. Additionally, when I talk about end-to-end delay, I’m typically referring to delay in a single direction. But, others I might disagree or use them in a different context so always ask for clarification.
Calculating End-to-End Delay
At a high level, calculating end-to-end delay requires knowing the packet length, transmission rate of the link (IE the bandwidth, and knowing the propagation delay which typically is in the range of 2*108 meters per second (m/s) to 3*108 m/s.
The internet works as a store-and-forward system where packets must be fully received by a node, a router, before it is forwarded to the next hop towards the destination. This means that each router in the journey from source-to-destination has an impact on the delay. The router can have many router specific delay variables such as queueing or packet processing but all routers have to get the packets onto the telecom transmission link and is this is known as the Transmission Delay, expressed as L⁄R where L is the packet length and R is the transmission rate.
The propagation delay is based on the distance between nodes, routers, endpoints and the natural propagation speed across the link, approaching the speed of light. The type of connection between nodes will impact the propagation speed so you’ll need to know this variable for an accurate measurement of the propagation delay. Let’s assume we have a given propagation speed of 2.5*108 m/s. The propagation delay is D⁄S where D is the distance between nodes and S is the propagation rate.
End-to-End Delay Example
A packet length of 1,500 Bytes is sent over the following path, what is the end-to-end-delay.
The end system, ES1, pushes the 1,500 Byte packet onto the wire.
Once the packet hits the wire, the propagation delay is how long it takes the bit to be sent over the wire to R1.
It’s the same 6 ms since the packet size is still 1,500Bytes and the transmission rate is still 2Mbps
The distance between R1 and R2 is now 4,000 km so we’ll see a decrease in propagation delay to 16 ms.
Again, no change in L or R so it’s still 6 ms.
The distance from R2 to ES2 is 1,000km so again we’ll see a lower propagation delay,
Router Processing Delay
Just for the sake of completion, let’s say the router vendor told us the router processing delay is 5 ms. So any packet going through R1 or R2 will automatically incur a 5 ms delay for packet processing.
Overall End-to-End Delay
- Segment 1 delay = 26 ms
- Segment 2 delay = 22 ms
- Segment 3 delay = 10 ms
- Router Processing = 10 ms
Total End-to-End Delay = 68 ms
Why Do I need to Understand End-to-End Delay
As you get deeper into architecting, designing and implementing cloud architectures with high performance needs, understanding the different components that make up delay will absolutely help you identity areas that you can optimize to improve performance. In our example above, you’ll see that you can’t change the propagation delay but maybe you can fine tune the router to decrease the packet processing time or change your packet size or bandwidth used. You’ll need to know how end-to-end delay is calculated in order to be able to fine tune your system for the best performance possible