Richard HJ's Web Site

TCPmon Home Page

Tool to Measure Transaction Latency over TCP Links

tcpmon uses a TCP/IP stream to send Request-Response messages between two hosts. It makes the following measurements of the round trip times between those end hosts:

Installation of tcpmon

The distribution of tcpmon is split into two tarballs: the tcpmon tool and the supporting library libhj. The tcpmon-a.b.c tarball creates directory tcpmon-a.b.c and libhj-l.m.n creates directory libhj-l.m.n. For installation and compilation in your home directory having downloaded the corresponding tcpmon and library files, start by cd to the library directory then:

./configure --prefix=$HOME
make install

$HOME/include and $HOME/lib are created. Then cd to the directory containing tcpmon and do:

./configure --prefix=$HOME --with-hj-location=$HOME
make install

$HOME/sbin is created with the tcpmon programs.

Versions of tcpmon



libhj library


Excel plots example



tar file -1.0.3





can use AMD64


tar file -1.0.2 libhj-4.0.2      

Brief help

Usage: tcpmon_req -option<parameter> [...]
-G = <number of req-resp on which to return information>
-H = Print histograms
-N = enable delay ack + Nagle
-P = <precidence bits set - in hex - will be shifted left by 9>
-Q = <DSCP QoS bits set - in hex >
-S = <size of send and receive socket buffers in bytes>
-T = <tos bits set - in hex - will be shifted left by 1>
-V = print version number
-b = <bin width of histo in us>
-d = <the destination IP name or IP address a.b.c.d>
-e = <end value of message length in bytes>
-i = <increment for message length in bytes>
-l = <no. of frames to send>
-m = <min (low limit) of histo in us>
-p = <length in bytes of mock data packet>
-q = quiet - only print results
-r = <start size of response message in bytes>
-v = turn on debug printout
-u = <raw/udp port no - default 0x3799 ie 14233 decimal>
-w = <time to wait between request-response in us>


sbin/tcpmon_req -d192.168.111.222 -p64 -r1000 -w50000 -H -b100 -l2000

Will send 2000 requests 64 bytes long to the remote node asking for 1000 byte responses. It will wait 50ms between requests and histogram the round trip times with a bin size of 100 us.

Adding -G1000 to the above line would produce a time series of the first 1000 requests.

Enjoy, but the usual disclaimers apply!

Feedback and bug-reports are welcome and I will do my best to fix things!

© 2006, 2007, 2008, 2009, 2010, 2011 Richard Hughes-Jones (
22 Jan 2011.

Copyright notice | Disclaimer | Privacy Policy |