NS3

How easy it is to connect the simulator to a Web front end?

NS3 is highly modular and can be configured on the basis of the features that are required. Network simulations on NS3 are created by writing code in C++ using the NS3 API. These files are supposed to have extension cc and are compiled and executed. The result can be generated as an XML file using the NetAnim module. This makes it easier to send results back to the client.

We will have certain code associated with each functionality provided on the front end. We maintain a file for each user on the server. As the user designs the network on the front end we keep adding code to this file. When the simulation is run or some action needs to be performed the file on the back end is compiled and executed to generate the xml file which is then send back to the client and rendered to show the output. This gives us the freedom of using any scripting language or framework for the back end, however the mapping between the functionality and the code that needs to be added will have to be defined. The code might become long for large networks and since debugging might involve compiling and executing the code multiple times it might slow down the system.

Pros Cons
Modular design allows the software to be extended Recompiling large pieces code multiple times might slow down the system.
User designed network is represented as a file and results are generated in xml  Still in development and certain features are not yet supported.

Making granular network configuration

It provides flexibility in terms of link parameters and the modular approach allows the incorporation of more open source networking software and reduce the need to rewrite models for simulation. However the project is still under active development and a lot more features need to be added. Router configurations are not very flexible and vlan tags are not supported. As the software project is still developing not all network protocols and features are supported.

Usage rights

The NS3 project is an open source project licensed under GNU GPLv2, which enables us to use the code and modify and publish it according to our needs.

Analyzing Mininet

How easy it is to connect the simulator to a Web front end?

Mininet provides a python API so if we are running a python server we can easily connect the mininet simulator to the front end. Each change on the front end will trigger a call to the python API of the mininet and the result will be sent back to the front end. If we are running other scripting languages we will need to spawn a child process and interact with the child process as we cannot directly use mininet using other scripting languages, thus adding overheads.

The second option is to have a mininet virtual server running, and making ssh calls from the server to interact with it. In this approach we have a proxy server between mininet and the web interface. We can have any scripting language running on the proxy server. This proxy server will have an ssh connection established with the mininet server. Thus changes to the front end are handled by the proxy server and the actual network simulation will exists on the mininet virtual machine.

Pros Cons
Will work well when we have python as a server side script If not a python server will add overheads
Using a proxy server and using ssh to access a separate mininet vm server will work well with other scripts

Making granular network configuration

Mininet allows a lot of flexibility as all the network elements except the hosts have to be implemented by the user using the controller. Mininet does not support actual routers. It is build for SDN and we can make switches act as routers by adding the required functionalities using the controller. Code has to be written to simulate each and every feature of the router. Protocols like ARP, ICMP and RIP will have to be implemented. One advantage of mininet is that it allows configuring low level configuration such as link parameters. All the hosts will be running the same linux system so if a system parameter is changed in one it get reflected in all, i.e., we cannot have hosts with different OS parameters. For example different hosts cannot have different default dns as the linux subsystem is shared.

Usage rights

Mininet is an open source software that allows us without limitation the rights to use, copy, modify, merge, publish, distribute, sub-license, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.