NOTE updated February 26, 2013: This post contains old information. I created a page that lists all the open-source network simulators listed in the post below. I will keep the page up-to-date. Please see the List of Open-Source Network Simulators page.
I am impressed with the number of network simulation tools available as open-source software. Here are some more tools that allow a user to build a virtual network and simulate network functions. The tools are: Marionnet, Virtualbricks, and libvirt.
Marrionet
http://www.marionnet.org/site/index.php/en/
Marionnet is called a “virtual network laboratory” on its website. It allows users to define, configure and run complex computer networks on a host computer. It can simulate an Ethernet network complete with computers, routers, hubs, switchs, cables, and more. Marionnet seems designed to be used as an education tool and has good documentation, a graphical user interface, and some practice lab configurations.
Virtualbricks
http://virtualbricks.eu
https://launchpad.net/virtualbrick
Virtualbricks is a virtualization manager with a graphical user interface that supports management of Virtual Machines, and the connection of Virtual Machines together in a complex network. It has almost no documentation.
libvirt
http://libvirt.org
Libvirt provides an application programming interface for functions that can create and configure virtual machines and virtual networks on a host computer. It is used for managing data centers but some of its functions are useful for creating virtual networks, assuming the user provides virtual machines configures to act like routers. I think this tool has more functionality than we need but I will look at the elements that support networking. This tool is not designed to support self-learning of network concepts but it could be used to build a tool that services that goal.