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.
is a short presentation on OFNet.
We have Mininet, Do we need one more network emulator?
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 (~3 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 : ubuntu
Password : ofnet123
Following shell commands (colored in pink) will get you started.
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 the Openvswitch and an SDN controller
We have couple of SDN contollers bundled in this VM (Floodlight and Beacon).
to start Floodlight controller
to start the Beacon controller.
OFNet has been tested with Floodlight/Beacon/Opendaylight/OVS 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 -
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!!
- As VM
- On bare metal
OFNet Detailed Features
- Constructing a custom topology
- Starting the SDN network!
- Doing the first ping!
- Gettting into a host
- 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
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!
I have not had time to set up the Git repository yet. However, if you want to play with code or tweak it for your own special needs you are welcome to do so. Please download this PDF
file in which I tried
give some brief information about source code organization. Please contact ofnet at sdninsights dot org
for any help.