Nagle's Algorithm
Nagle's
algorithm is another feature to improve the performance of TCP/IP
networks. There are many protocols, standards and technologies we
should know, as network engineers, to understand the behaviour of our
networks and thus improving the efficiency of our services like
retransmitting only lost segments with SACK,
be careful with hot
potato and cold potato routing,
implements Long
Fat Networks (LFNS) in slow links
or taking advantage of Multipath
TCP.
This is only some of the protocols,
standards and technologies we should take into account to not going
crazy when the behaviour and performance of our networks is not like
it have to be.
Nagle's
algorithm (RFC
896) was
published in 1984 by John Nagle and it remains a standard feature of
TCP today. It was designed to improve the
efficiency of networks, using more bandwidth as possible at the
expense of adding delays. It wants to reduce network congestion
caused by “small packet problems” with TCP applications because
there are applications and services that they send small packets, for
instance 1 byte of useful data, over the network which is inefficient
due to the fact that for sending only one byte we need to send from
20 to 60 bytes of headers as well.
Therefore, many small packets have to be sent if we want to send only
one byte of useful data. How it works with
the Nagle's algorithm? Data are buffered and when there are enough
information to transmit, it is sent it.
Nagle and non-Nagle comparative |
Pros
and Cons of the Nagle's algorithm? We can take advantage of
transmiting the same amount of information with less packets and less
overhead, as a result, we increase bandwidth efficiency which is
useful in slow links with high latency.
However, Nagle's algorithm is not useful in realtime and high
interactive applications
like chats or videoconferences where we
should disable Nagle's algorithm or use the UDP protocol.
67 bytes to send 1 byte of useful data |
To
sum up, this is another standard which is useful to improve network
efficiency in high demanding and business networks but we should know
when it is recommended to be enabled and disabled because it can
improve our network but also deteriorate it
if we don't analyse properly the services,
data and behaviour of our network. Anyway,
if we need this feature we should look for this RFC when we are going
to implement a new service or install a new appliance. For
instance, F5 load
balancer supports the
Nagle's Algorithm in their TCP
profiles.
Nagles Algorithm in F5 Profile |
Regards my
friend and remember, drop a line with the first thing you're
thinking.
Great job!!!
RépondreSupprimer