Skip to content. | Skip to navigation

Personal tools


You are here: Home / Wiki / Kb99


Emulab FAQ: Using the Testbed: Isonet man page

Emulab FAQ: Using the Testbed: Isonet man page

The isonet wrapper script is part of the libmultihome package which is available in the following RPMs:

  • RHL9 - /share/redhat/9.0/emulab-RPMS/libmultihome-0.1.1-1.i386.rpm
  • Fedora Core 2 (PlanetLab Images) - /share/fedora/FC2/emulab-RPMS/libmultihome-0.1.1-1.i386.rpm


       isonet [-hVews] [-b ip] -- utility


       The isonet utility is used to isolate programs to the experimental net-
       work  of  an  Emulab experiment.  Because Emulab nodes are connected to
       multiple networks at the same time, the control network and one or more
       experimental  networks, you may unwittingly have traffic traveling over
       the wrong interface.  For example, instead of traveling through routers
       and shaped links on the experimental network, packets may take the sin-
       gle hop from one node to  the  destination  over  the  control  network
       interfaces.   To help address this situation, isonet uses the libmulti-
       home(7) library to intercept many of the standard networking  calls  to
       "hide"  IP addresses from the program.  The result is that any attempts
       to communicate over hidden networks generates a message and  halts  the
       program.   Hopefully,  this should aid you in identifying misconfigura-
       tions or adapting your programs to work on multi-homed hosts.

       In addition to checking for accidental connections being made over  the
       control	network,  isonet can change the arguments and results for some
       functions.  This functionality is particularly useful  for  third-party
       programs  that do not deal well with mult-homed hosts.  For example, if
       a program is hard coded to bind(2) to the INADDR_ANY address,  you  can
       force  it  to  use  an experimental address through the -b option.  The
       library also changes the result of gethostname(3) to return the	node's
       experimental  name  (e.g.  node0),  instead of the fully qualified name
       (e.g., which resolves to the control  network

       Available options:

       -h     Print out a usage message.

       -V     Print out version information and exit.

       -b ip  Force  any  bind(INADDR_ANY)  calls  to  bind  to the given IPv4
	      address instead.

       -e     Log a message and return an error to the	program  (through  the
	      function that was called), instead of stopping the program imme-

       -w     Log a message instead of stopping the program.

       -s     Start a shell that has the  environment  variable  configuration
	      needed to isolate any executed commands.


       The child's exit code.
	      If  the child did not attempt to make an illegal connection, its
              exit code will be returned.

       EX_SOFTWARE (70)
              There was an internal  software  error  in  the  libmultihome(7)

       EX_NOPERM (77)
              The child tried to make an illegal connection.

       EX_CONFIG (78)
              The isonet script created an invalid configuration for the lib-
               multihome(7) library.  Should not happen  in  normal  operation,
              send a bug report if you encounter it though.


       To isolate a ttcp sender and receiver:

	      [vic@mxc1 ~] isonet -- ttcp -r -s

	      [vic@mxc2 ~] isonet -- ttcp -t -s mxc2

       An illegal connection with a ttcp sender and receiver:

	      [vic@mxc1 ~] isonet -- ttcp -r -s
	      (5970)isonet|Accepted connection from to hidden IP
	      (5970)isonet|panic with exit code 77.

	      [vic@mxc2 ~] isonet -- ttcp -t -s
	      (6837)isonet|Connection through  hidden  IP  (  to
	      (6837)isonet|panic with exit code 77.

       To explicitly bind to an experimental interface:

	      [vic@mxc1 ~] isonet -b -- ttcp -r -s


       This  utility  will  not work with setuid or statically linked binaries
       because it uses an LD_PRELOAD library, libmultihome,  to  detect  prob-


       While  this utility can detect many problems it does not guarantee that
       no experimental traffic is flowing over the control network.  The  only
       way  to	be  sure  is  to  monitor traffic with tcpdump(1) or a similar 
       packet capture tool.


       libmultihome(7), tcpdump(1), bind(2), gethostname(3), getifaddrs(3)


       The Emulab project at the University of Utah.


       Emulab can found on the web at

libmultihome 0.1.0		    Feb 24, 2006