Richard HJ's Web Site

ethmon Home Page

Tool to Measure Hardware and Network Performace using raw Ethernet frames

ethmon uses raw Ethernet frames to test the network performace between two end systems. The end host MAC addresses are used and hosts must be on the same LAN as no IP routing can be used. The programs eth_send and eth_recv just attempt to send a stream of frames between the hosts. eth_req, eth_bw_mon and eth_resp send and receive Request-Response messages between the two hosts. These programs are used in pairs to make the following measurements:

Installation of ethmon

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

Versions of ethmon

Version

Download
ethmon

Download
libhj library

Write-up

Excel plots example

Notes

 

         

ethmon-1.0.3

tar file -1.0.3 libhj-4.1.3      

Brief help

 

ethmon_bw_mon

Usage: ethmon_bw_mon -option<parameter> [...]
options:
-B = <bin width of remote histo in us>
-G = <number of packets on which to return information>
-H = get remote histograms
-I = <interface name. e.g. eth1 default eth0>
-M = <min (low limit) of remote histo in us>
-S = <size of send and receive socket buffers in bytes>
-T = <Ethernet packet type (protocol) in hex >
-V = print version number
-d = <the destination MAC address aa:bb:cc:dd:ee:ff >
-e = <end value of wait time in us>
-g = <gap time to wait between bursts in us>
-h = print this help
-i = <increment for wait time in us>
-l = <no. of frames to send>
-n = <no. of bursts to send in Burst Mode>
-p = <length in bytes of mock data packet>
-t = <no. of seconds to run the test - calculates no. of frames to send >
-q = quiet - only print results
-v = turn on debug printout
-w = <wait time in us>


ethmon_resp

Usage: ethmon_resp -option<parameter> [...]
options:
-I = <interface name. e.g. eth1 default eth0 >
-S = <size of send and receive socket buffers in bytes>
-T = <Ethernet packet type (protocol) in hex >
-V = print version number
-h = print this help
-q = quiet - only print results
-v = turn on debug printout

ethmon_send

Usage: ethmon_send -option<parameter> [...]
options:
-I = <interface name. e.g. eth1 default eth0>
-S = <size of send and receive socket buffers in bytes>
-T = <Ethernet packet type (protocol) in hex >
-V = print version number
-d = <the destination mac address aa:bb:cc:dd:ee:ff>
-h = print this help
-l = <no. of frames to send>
-p = <length in bytes of mock data packet>
-t = <no. of seconds to run the test - calculates no. of frames to send >
-q = quiet - only print results
-v = turn on debug printout
-w = <wait time in us>

ethmon_recv

Usage: ethmon_recv -option<parameter> [...]
options:
-I = <interface name. e.g. eth1 default eth0 >
-S = <size of send and receive socket buffers in bytes>
-T = <Ethernet packet type (protocol) in hex >
-V = print version number
-h = print this help
-q = quiet - only print results
-v = turn on debug printout

ethmon_ping

Usage: ethmon_ping -option<parameter> [...]
options:
-H = Print histograms
-I = <interface name. e.g. eth1>
-S = <size of send and receive socket buffers in bytes>
-T = <Ethernet packet type (protocol) in hex >
-V = print version number
-b = <bin width of histo in us>
-d = <the destination MAC address aa:bb:cc:dd:ee:ff>
-e = <end value of message length in bytes>
-h = print this help
-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
-w = <wait time in us>

Example

sbin/ethmon_req -d 00:30:48:20:E0:EF -Ieth0 -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 (R.Hughes-Jones@manchester.ac.uk)
22 Jan 2011.

Copyright notice | Disclaimer | Privacy Policy |