Since there was no answer to my question in this forum, I wrote to the freebsd-net mailing group with a similar question and received recommendations to use two tools IMUNES http://imunes.tel.fer.hr/ and TEACUP http://caia.swin.edu.au/tools/teacup/
I have been testing IMUNES for some days now, but I still have not tested TEACUP, so I will provide a short description about it.
IMUNES allows you to create a virtual network, where you can configure everything from node interfaces to routing protocols in routers as well as link settings as speed, bit-error-ratio, delays and duplicate packet percentage. When the experiment is started, the virtualized nodes each have their own file system which is created from files under /var/imunes/vroot/
which allows you to change settings to all of the devices at once.
There are some things that are not as obvious (at least for me) at first:
- Not supported on FreeBSD-10.1-RELEASE, but works on FreeBSD-9.3-RELEASE
- When experiment is started, double-click a node to get the nodes terminal access. You can open as many windows as you like;
- System settings that are not set globally, need to be set individually on each node;
- When the experiment is terminated, all files and settings created/edited in the virtual node are destroyed, however the files can be accessed while the experiment is running, under
/var/imunes/[i*****]
where folder for each virtual node is created. You can, of course, use the command find
to find the file you are looking for;
- If you need to add a program to the virtual nodes, you must use
pkg_add_imunes [settings] [name]
;
- Although you can set the BER on a link, this is not the same as packet loss ratio. To set a packet loss ratio, load the dummynet Kernel module with command
kldload dummynet
and use ipfw
to set up the link settings between the nodes.
I will update the list, if there's something more to add to this.