Tinygrams Explained


On the L4 Details page you will find a metric called Tinygrams:

Tinygrams are packets that contain a relatively small payload compared to the overhead associated with the headers required to transfer the data.

A classic example of this would be a character-based telnet application that transmits one byte of data for each character typed. This creates an overhead of 40 bytes (20 byte TCP header + 20 byte IP header) to transmit one byte of data, totaling 41 bytes. This does not include other things such as minimum packet size padding, the overhead of L2 framing and inter-frame gaps, as well as TCP acknowledgments; but that is a whole other conversation.

Clearly, this results in inefficient use of the network. However, these tinygrams are normally not a problem for LANs since most are not congested. For Wide Area Networks (WANs), this can be another story. To address this problem, Nagle’s algorithm was introduced to optimize the transfer by stuffing multiple small request bytes into a single TCP segment.


This is all well and good, but one should be aware of the bad interaction between Nagle’s algorithm and Delayed Acknowledgements (another well-intentioned TCP optimization algorithm introduced around the same time as Nagle’s) which results in “Nagle Delays”; also another metric found in the L4 Details page.

For further information on Nagle Delays, see the solution post titled “Nagle Delays Explained” which details Nagle’s algorithm, Delayed ACKs, and the bad interaction between the two well-intended algorithms. Additionally, a nice video on the subject can be found here.


There’s also a great post (with fun pictures :slight_smile: ) on the ExtraHop blog about Tinygrams (and what to do about them): https://www.extrahop.com/community/blog/2015/what-is-a-tinygram/