Building a virtual topology atop wireless devices
Nathaniel Waisbrot · Journal of computing sciences in colleges · 2002
In recent years, networks have become an important topic in the field of computer science. Teaching about networks can be difficult, because it is not usually feasible to configure and reconfigure a mid-sized or even small network as a teaching tool. The eventual goal of my advisor's grant is to develop classroom teaching tools which use small, cheap, wireless hand-held computers to simulate a variety of networking topics for both wireless and wired networks.A large part of this project requires simulating networks which are not fully connected, primarily to demonstrate routing. My project was to determine the best method to build a virtual topology and simulate various network routing protocols on wireless devices. I wanted to allow the network topology to be changed on the fly, and to simulate nodes dropping off the network and reconnecting. Furthermore, I wanted to make the virtual topology interface general and as abstracted from the Cybiko operating system as possible, so that users could potentially write their own routing protocols.Because the project was designed as a teaching tool, I designed a client-server system, with the clients as the actual nodes, and the server acting as an administrator. The clients contact the server to receive initial information about both the topology to use and the other clients in the system. The server can announce topology changes to clients, or order clients to go offline, simulating machine or network failures. While the system is running, the protocol code handles user requests to send and receive data.To reduce traffic over the wireless network, I gave each of the client hand-helds a full copy of the topology. This allows them to consult a local table to determine the distance and status of their neighbors, rather than requesting the information from the server or other nodes. The local routing table can also be used to determine whether a node is a neighbor, so that attempts to send data to nodes that aren't adjacent can be blocked.Professor Richards has already done some preliminary teaching using the hand-helds and my system in his networking class at Vassar College. The system worked quite well with the topologies we used. The server was able to disconnect and reconnect nodes, and the clients were able to use a variety of routing protocols to communicate.Although the project now satisfies all of its intended requirements, I am interested in extending it in some areas. Currently, protocol code must be compiled into the simulation application; using dynamic libraries would not only be more elegant, it would allow the clients to switch protocols while routing (e.g. to demonstrate the difference between a broken implementation of a protocol, and a working one).