FreeNS - The Free Network Simulator
Welcome to the FreeNS - The Free Network Simulator web site.
What is FreeNS?
FreeNS is an application that simulates networks. This network can contain any or all of the following:
Computers - which have names (hostnames) and IP addresses
HUBS
Bridges
Routers (or gateways)
Using FreeNS, a network having the above entities can be "virtually" constructed, and tested before actually constructing the network.
What does FreeNS support?
At present, FreeNS should support:
Reading of a configuration file that describes the network to be constructed
Reading of a configuration file that describes the properties of the entities that are present in the network. For. eg. properties of a host are "hostname" and "IP address", apart from many other properties yet to be decided.
Read a protocol graph that is used in all / any particular host in the network. This protocol graph describes the protocol hierarchy that the host(s) use(s).
A method to insert new protocol into any particular host / all hosts in the network, and test it's working.
A method to provide routing tables to gateways / hosts.
Provide methods of using various types of network interfaces - like CSMA/CD, Token ring, Token bus, wireless, etc. A configuration file to be present that describes the properties of these network interfaces, like their MAC address, etc.
A socket library (or a similar network services interface) should be provided so that applications can use this library to test their functionality before actually deploying them. The actual deployment of those application should simply mean that the library with which they are linked should be replaced by the actual socket library.
Limitations as of now
FreeNS will be initially developed to support hosts/devices using the TCP/IP protocol suite. Later on, improvements can be done to support other protocol suite like IPX/SPX, etc.
Development efforts envisaged
Development of FreeNS would include:
Development of TCP/IP protocol suite. This can be either borrowed from other GPLed sources, or, custom developed by the FreeNS team.
Development of methods that implement functionality mentioned above. Eg. what is the method to include a new protocol, what configuration files are needed, information in the configuration files, etc.
Skills needed
C/C++ Language command
OOPS concepts
Thorough knowledge of TCP/IP suite
Some knowledge in the data link layer as well
Creation, updation of libraries
Porting capabilities - or writing "porting friendly" code