Elephants – Long Fat Networks


Two weeks ago, I wrote about hot potato and cold potato routing because I was studying to recertify my CCNP certification and this was a new concept that I didn't know. Today, I can say I passed the exam and I have learnt more concepts that I would like to highlight in this blog. This time, I'm going to write about how to receive large amount of data, till 1 GB, in high delay and high bandwidth networks.
Everyone who has studied networking knows about TCP Windowing what means servers and endpoints or clients negotiate the amount of data they can transmit without overwhelming each other. We can see 16 bits for Window Size in the TCP header what give us till 2^16 = 65536 bytes or 64 KB that it can be received without sending an ACK message.

TCP Header
What happen in high delay and high bandwidth networks such as satellite links? First, we can transmit a lot of amount of bytes in a single burst but it is going to delay too much time to be received for the receiver. Therefore, we can transmit till 64 KB and after that, we have to wait for an ACK message, what it is inefficient although we have a high bandwidth link. It's like to want to carry a lot of things with an elephant (large amount of data in high delay networks), it will never be fast. This is also called Long Fat Networks or LFN.
However, TCP Extensions for High Performance networks or RFC 1323 (obsolete and replaced by RFC 7323) solves this issue. Window Scaling extends the 16-bit window field to 32 bits in length using a TCP option to specify a count by which the TCP header field bitwise shifts the window size. For instance, we can see in the next image a left shift by 7. First, we had a window size of 5840 bytes and after shifting by 7 we have 747520 bytes of window size.

Left shift by 7

This TCP option is negotiated in SYN packets so it can't be changed once the session is established. Next, we can see a window scale by 7, what means we can receive till 128 x 65536 bytes = 8 MB without sending an acknowledge (ACK) message.

Window Scaling - SYN
 
Next, we can see a window size of 1505 bytes, what it is actually 1505 x 128 = 192640 bytes or nearly 188 KB, what it is much more than 64 KB that we have had without Window Scaling.

Window Scaling
 
Once we know about Window Scaling we should look for these RFCs when we purchase a new appliance. For example, F5 load balancer supports this kind of extensions for high performance in their TCP profiles.

F5 TCP Profile
 
Regards my friends and remember, drop a line with the first thing you're thinking.

More information:

Commentaires