What is tcpcsm?
tcpcsm is a tool that was developed to identify the causes of retransmissions within a TCP flow (i.e. RTO, fast retransmit or SACK) and to determine when the resulting loss recovery phases have been completed. Essentially, it identifies and classifies events in the TCP packet stream that may be important to TCP congestion control algorithms.
For those that are interested, CSM stands for Congestion State Machine.
One of the principal benefits of tcpcsm over the previous work in this area (Rewaskar et al is the most notable) is that it only implements a single state machine rather than one for each different TCP implementation. It also supports TCP features that were uncommon or did not exist when previous tools were developed, such as DSACK and F-RTO. Finally, all events that can affect the congestion window are reported by tcpcsm, rather than just out-of-order segments.
tcpcsm is available as part of libtcpcsm, which can be downloaded from here.
Due to the single state machine approach, it is especially important that we carefully validate tcpcsm against a variety of operating systems to ensure that it can correctly detect and classify the varying OS behaviour.
A complete description of the validation tests we ran and their results can be found here.