Skip to Content

From the Virtyx Blog

TCP Optimization

By Jim Maniscalco • May 10, 2017

Packet loss in IP based networks is a fact that one just has to accept – physical networks always have errors of some form or another. Noise on a communications channel (link) is what limits the bandwidth over the channel. (See Shannon Channel Capacity).

There are many techniques to limit and control the loss of packets over a specific link such as error connection protocols (FEC) or local link retransmission of packets/frames. (Link Access Protocol LAPD).

The problem with these local link techniques is that they really require that every single link have them and work correctly, which, in reality, can add significantly to latency and cost of the link. Moreover, they also still can’t correct for problems which occur inside a router or switch and not on the links themselves. There still needs to be some mechanism to detect and correct packet loss from end to end. (Saltzer, J. H., D. P. Reed, and D. D. Clark (1981) “End-to-End Arguments in System Design”)

So how does the Internet deal with these issues?

Different links in the path will have different local link error correction and retransmission methods depending on the physical properties of the link. Most physical links today do not implement local retransmission protocols and these are left to the high-level protocols which are carried on the link.

In the Internet Protocol (IP) ecosystem suite there are two major end-to-end protocols. User Datagram Protocol, which does not guarantee packet order or packet delivery but rather it exposes the underlying IP datagram service to higher level applications. It does, however, provide a port based packet multiplexing mechanism.

The second major end to end protocol in the IP suite is Transmission Control Protocol (TCP). The TCP protocol provides applications with an end to end guarantee of order delivery of a stream of bytes. It does not guarantee any time of latency or delay or a constant rate of delivery of bytes. This is one of the reasons that applications which need lower or controlled latency will use UDP or direct IP and not TCP.

The details of TCP are well known. And for this blog, it is enough to know that as a TCP end station receives a set of bytes from the other end, it sends an acknowledgement that they have been received. When the sending end does not see an acknowledgement for packets it will resend a smaller set of unacknowledged bytes – and again await a reply. The fact that the number of bytes send without acknowledgement is smaller is an important TCP optimization for the network.

Come join our team - we're hiring!

Get Started for Free
Read More

By Ben Burwell • October 22, 2018

By Ben Burwell • October 19, 2018

By Jim Maniscalco • September 27, 2018

By Ethan Mick • September 20, 2018

By Jim Maniscalco • September 14, 2018

Start using Virtyx today.

If you manage computers or servers, Virtyx can make your life easier.