Richard HJ's Web Site

mcastmon Home Page

Tool to Measure Transaction Latency over TCP Links

mcastmon can be used to measure end-to-end performance of a 10Mbit, 100 Mbit or Gigabit network and its components for multicast traffic flows.

 

mcastmon_send and mcastmon_recv

mcastmon_send generates multicast UDP packets and places them on the network; mcastmon_recv joins the multicast group and then records the number and sequence of the multicast UDP packets received, it can also provide histograms of the inter-packet arrival times at the receiver and lists of the packet arrival times. mcastmon_send & mcastmon_recv operate independently and are aimed at checking basic multicast connectivity.

mcastmon_bw_mon and mcastmon_resp

These programs aim to provide detailed information on the performance of multicast flows over a network. Multiple mcastmon_resp programs may be run at different locations in the network and each gives an estimate of the throughput found on the route between the multicast source and the receiving end node. It also measures the packet loss, the packet re-ordering, the inter-packet arrival times at the receiver, the times the packet are sent and received, the CPU load, the number of interrupts, and the number of packets processed by the interfaces and the protocol stack. At the end of each test, mcastmon_bw_mon collects all the information available from each receiving node and records it.

The programs are used in pairs on the end hosts to make the following measurements:

Installation of mcastmon

The distribution of mcastmon is split into two tarballs: the mcastmon tool and the supporting library libhj. The mcastmon-a.b.c tarball creates directory mcastmon-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 mcastmon 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 mcastmon programs.

Versions of mcastmon

Version

Download
mcastmon

Download
libhj library

Write-up

Excel plots example

Notes

mcastmon-1.2.7

tar file-1.2.7

libhj-4.2.6

.doc

.pdf

 

 

           

Brief help

 

mcastmon_send

Usage: mcastmon_send -option<parameter> [...]
options:
-B = <bin width of remote histo in us>
-H = get remote histograms
-I = <interface name. e.g. eth1>
-M = <min (low limit) of remote histo in us>
-Q = <DSCP QoS bits set - in hex >
-S = <size of send and receive socket buffers in bytes>
-T = <multicast TTL 0=host 1=subnet 32=site 64=region 128=continent 255=unrestricted>
-V = print version number
-g = <gap time to wait between bursts tt.t in us>
-h = print this message
-l = <no. of frames to send>
-m = <the multicast IP group address a.b.c.d>
-n = <no. of bursts to send in Burst Mode>
-p = <length in bytes of mock data packet>
-q = quiet - only print results
-t = <no. of seconds to run the test - calculates no. of frames to send >
-u = <multicast udp port no - default 0x3799 ie 14233 decimal>
-v = turn on debug printout
-w = <wait time tt.t in us>

 

mcastmon_recv

Usage: mcastmon_recv -option<parameter> [...]
options:
-B = <bin width of histo in us>
-G = <[number of packets to skip:]number of packets on which to return information>
-H = get remote histograms
-L = <[number of packets to skip:]number of LOST packets on which to return information>
-I = <interface name. e.g. eth1>
-M = <min (low limit) of histo in us>
-Q = <DSCP QoS bits set - in hex >
-S = <size of send and receive socket buffers in bytes>
-T = time in sec between printing statistic snapshots [0=never]
-V = print version number
-X = dont check sequence numbers
-h = print this message
-m = <the multicast IP group address a.b.c.d>
-q = quiet - only print results
-t = time in sec before program ends [0=never]
-u = <multicast udp port no - default 0x3799 ie 14233 decimal>
-v = turn on debug printout

 

mcastmon_bw_mon

Usage: mcastmon_bw_mon -option<parameter> [...]
options:
-B = <bin width of remote histo in us>
-G = <[number of packets to skip:]number of packets on which to return information>
-H = get remote histograms
-I = <interface name. e.g. eth1>
-K = Keep the multicast tree, do NOT send a IGMP IP_DROP_MEMBERSHIP at the end of the test
-L = <[number of packets to skip:]number of LOST packets on which to return information>
-M = <min (low limit) of remote histo in us>
-Q = <DSCP QoS bits set - in hex >
-S = <size of send and receive socket buffers in bytes>
-T = <multicast TTL 0=host 1=subnet 32=site 64=region 128=continent 255=unrestricted>
-V = print version number
-c = config file name
-f = stats output file name
-g = <gap time to wait between bursts tt.t in us>
-h = print this message
-l = <no. of frames to send>
-m = <the multicast IP group address a.b.c.d>
-n = <no. of bursts to send in Burst Mode>
-p = <length in bytes of mock data packet>
-q = quiet - only print results
-t = <no. of seconds to run the test - calculates no. of frames to send >
-u = <multicast udp port no - default 0x3799 ie 14233 decimal>
-v = turn on debug printout
-w = <wait time tt.t in us>

 

mcastmon_resp

Usage: mcastmon_resp -option<parameter> [...]
options:
-D = run as daemon, all standard streams are redirected to /dev/null
-I = <interface name. e.g. eth1>
-Q = <DSCP QoS bits set - in hex >
-S = <size of send and receive socket buffers in bytes>
-V = print version number
-h = print this message
-m = <the multicast IP group address a.b.c.d>
-t = <tcp port no - default 0x3799 ie 14233 decimal>
-u = <multicast udp port no - default 0x3799 ie 14233 decimal>
-v = turn on debug printout

Example

To measure the multicast characteristics between two systems using the multicast group 225.8.9.10 start mcastmon_recv on the receiving system with:

./mcastmon_recv -m 225.8.9.10

and then run mcastmon_send on the sending system with something like:

./mcastmon_send -m225.8.9.10 -p1472 -T128 l50000 -w123

This will send 50000 1472 byte multicast data packets, waiting 123 us between sending each packet. Adding -G1000 to the mcastmon_recv 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!

©2009, 2010, 2011 Richard Hughes-Jones (R.Hughes-Jones@manchester.ac.uk)
22 Jan 2011.

Copyright notice | Disclaimer | Privacy Policy |