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:
- Estimation of the "on-the-wire" Bandwidth, packet loss, and out of order packets as a function of packet size and packet spacing using UDP multicast packets.
- Histograms (and analysis) of the inter-packet arrival times (or jitter) between the two nodes.
- Measurement of arrival times of received packets
- Estimation of the relative 1-way delay between the two nodes on a packet by packet basis.
- Measurement of the user mode and kernel mode load on all CPUs for both sending and receiving hosts.
- Measurement of the number of interrupts given by the NICs
- Measurement of the traffic through the NICs
- Measurement of the SNMP counters on the hosts
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.