Using kernel virtualization offered by rump it is possible to start a virtually unlimited amount of TCP/IP stacks on one host and interlink the networking stacks in an arbitrary fashion. The goal of this project is to create a visual GUI tool for creating and managing the networks of rump kernel instances. The main goal is to support testing and development activities.
The implementation should be split into a GUI frontend and a command-line network-control backend. The former can be used to design and edit the network setup, while the latter can be used to start and monitor the virtual network from e.g. automated tests.
The GUI frontend can be implemented in any language that is convenient. The backend should be implemented in a language and fashion which makes it acceptable to import into the NetBSD base system.
The suggested milestones for the project are:
- get familiar and comfortable with starting and stopping rump kernels and configuring virtual network topologies
- come up with an initial backend command language. It can be something as simple as bourne shell functions.
- come with an initial specification and implementation of the GUI tool.
- make the GUI tool be able to save and load network specifications.
- create a number of automated tests to evaluate the usefulness of the tool in test creation.
In case of a capable student, the project goals can be set on a more demanding level. Examples of additional features include:
- defining network characteristics such as jitter and packet loss for links
- real-time monitoring of network parameters during a test run
- UI gimmicks such as zooming and node grouping