This site is being built. Sharing some minimal information below. Please stay tuned..

OFNet

An Opensource Openflow network emulation, visual debugging,
performance monitoring and traffic generation environment

(Better viewed on Chrome, IE seem to hide some pictures)

Introduction

OFNet is an easy to use toolset which provides an environment for an Openflow network emulation just like Mininet and comes with friendly Apache v2 license. It provides far more interesting features like visual debugging of control plane transactions, traffic generation on emulated network and helps in characterizing performance of an SDN controller.

Here is a short presentation on OFNet.



We have Mininet, Do we need one more network emulator?

Mininet is a great tool using which we can quickly build a large Openflow network on our laptops/desktops. We can wireup a soft openlow network in seconds and generate flows between connected hosts. However, an emulation environment can go beyond just providing a virtual network.

In an SDN controller or application development work following capabilities are very desirable from development/testing perspective.

- Debugging SDN networks is hard. For example, If the controller to which the emulated network is connected can't set up a flow how do we debug the issue? We will need to resort to painfully analysis of wireshark capture across various links. A visual debugger can be very handy here.

- We need more realistic traffic generator to test an SDN controller beyond ping :)

- Every controller looks similar when we ping between two hosts. What are the performance characteristic of different choices controllers? Does it serve your application needs? For example, if your SDN application is of reactive nature how efficiently controller uses TCAM entries on your hardware switches (if you use h/w Openflow switch)? How many CPU cycles will be consumed on your OF switch? How to debug a flow failure when we have thousands of active flows in the network?

- Stress testing controller

OFNet has been designed from ground up to help with these requirements. Needless to say it can be used as a very effective tool to enjoy learning concepts of SDN and an Openflow network. Mininet has been serving that purpose so far. Now you have one more choice, which provides you beautiful visual insights into what the controller cluster is doing.

OFNet in 5 minutes

Please download the OFNet (Virtual Box) VM from here
This will take time (~1.9 GB file named OFNet.ova). Please wait! Download VirtualBox if you don't have it on your system. Then import the OFNet.ova into VirtualBox. Allocate atleast 2 GB of memory and couple of cores to it. Don't starve this VM :)

Assuming you have downloaded the OFNet VM, here is a five minute high level tutorial to get started with OFNet!!

Login to the system

Login id : ofnet
Password : ofnet

You can now take a tour of the OFNet features. On the desktop you will see a demo laucher shortcut. Either you can click on the launcher or manually run the following commands yourself.

1. cd ~/ofnet/demo

2. Compile an existing custom topology available in the demo directory with 7 switches and 40 hosts (switches gs0 through gs6 and hosts gh1 to gh40). If you have both Mininet and OFNet running on the same system, to avoid name collisions, in OFNet hosts have names gh1 to ghN while switches are named gs0 to gsN.

Now run the following

topoc h40.topo h40.net

This will display the topology of the network as shown below that will get built when we instantiate the network (which is named as h40.net).



3. Start an SDN controller. OFNet has been tested with Floodlight, Beacon, Opendaylight and ONOS. In the VM we have Floodlight bundled. You may run Floodlight.

start_floodlight_controller.sh to start Floodlight controller

4. Bring up the network.

ctopo netup h40.net

That's it! If everything worked well you will see a successful ping! You now have a running Openflow network.

5. Do your first ping, say from host gh5 to host gh35 -

hsh gh5 ping -c1 10.0.0.35

The IP addresses of gh1 starts as 10.0.0.1 and MAC address will be 00:00:00:00:00:01 Similarly the IP addresses of gh2 will be as 10.0.0.2 and MAC address will be 00:00:00:00:00:02

6. If you want to see visually how the controller has set up a flow, then run fstate command -

hsh gh1 ping -c1 10.0.0.35; fstate

You will see how the the controller has programmed the forwarding tables. Roll the mouse over head of the directed edges between switches in this picture below to see the flow details.



7. Now, more interesting stuffs! You can see exactly what happens between the controller and switches in your network when a flow gets established. To do this run the command as an event. The syntax is ofevent a_command. For example in the command below we the host gh1 pings (once, note -c1) host 10.0.0.35 (gh35). During this event all the transactions between switches and controller nodes will be captured and plotted as graphs.

ofevent hsh gh1 ping -c1 10.0.0.35

This shows the forwarding state before the event, control plane transactions during the event and the forwarding state after the event. Roll the mouse over the tip of the edges to see more about the messages that got exchanged. You will also see sequence diagram of message exchanges between switches and controller node. At the end of the page is a legend to interpret what those different type of edges mean. For example you see pictures like these for the event you have generated.



Like in previous case roll the mouse our arrow head of those different colored edges, you will see more details about that Openflow message or a flow inserted by the controller!!



8. We humans can't feel the numbers. At times an animated picture makes far more sense. Now, If you want to see the animated view of the last event then run command -

event_animate

That shows time scaled visual account of the message transactions between all the switches and the controller! Here is an example of what you will see !



Isn't that cool?!

OFNet comes with an inbuilt traffic generator that can generate various kinds of network traffic and provides very useful insights into performance characteristics of the controller. The below picture shows the real time graphs of various useful metrics that OFNet provides with traffic generator running.



That gives a brief account of some of the features of OFNet !

We have not covered details about features like traffic generator, performance monitoring, controller testing and several other cool features of OFNet. Detailed user guide which covers following content is being worked on, please stay tuned!!

      Installing OFNet 
          - As VM 
          - On bare metal
      OFNet Detailed Features
	      - Constructing a custom topology
	      - Starting the SDN network!
	      - Doing the first ping!
		      - Gettting into a host
		      - Ping!
		      - Running a command on host
		      - Running command on host from outside
		      - Run it on any shell
		      - Forwarding state
	      - Generating Events
		      - Visual Debugging
			      - Graphical Views
			      - Auto Generated Sequence Diagrams   
			      - Setting visual filters
			      - Generating Animated Forwarding State changes  
	      		      - Setting Filters on forwarding state views
	       - OFNet Traffic Generator
		       - Types of traffic
		       - Controlling Traffic Generation 
		       - Controller Testing
			       - CHO Testing
			       - Failure Analysis
		       - Notes on plugging your own generator
	       - Controller Performance Characteristics
		       - Network Under the Control of a controller 
		       - Performance Dashboard
			       - Explaining various graphs

       Current Limitations

       References

      

Help on OFNet



OFNet is designed and implemented by Ganesh H. Shankar. Now an open source, contribution by everyone to improve this further will be welcome! Github repository will be setup here in the near future. Please contact ofnet at sdninsights dot org for any help.