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
SYNOPSIS
isonet [-hVews] [-b ip] -- utility
DESCRIPTION
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. node0.foo.bar.emulab.net), which resolves to the control network address. 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- diately. -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.
RETURN VALUES
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) library. 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.
EXAMPLES
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 155.98.36.139 to hidden IP (155.98.36.131). (5970)isonet|panic with exit code 77. [vic@mxc2 ~] isonet -- ttcp -t -s mxc2.foo.bar.emulab.net (6837)isonet|Connection through hidden IP (155.98.36.139) to 155.98.36.131. (6837)isonet|panic with exit code 77. To explicitly bind to an experimental interface: [vic@mxc1 ~] isonet -b 10.1.1.3 -- ttcp -r -s
BUGS
This utility will not work with setuid or statically linked binaries because it uses an LD_PRELOAD library, libmultihome, to detect prob- lems.
NOTES
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.
SEE ALSO
libmultihome(7), tcpdump(1), bind(2), gethostname(3), getifaddrs(3)
AUTHOR
The Emulab project at the University of Utah.
NOTES
Emulab can found on the web at http://www.emulab.net libmultihome 0.1.0 Feb 24, 2006 ISONET(1)