Get Instant Help From 5000+ Experts For

Writing: Get your essay and assignment written from scratch by PhD expert

Rewriting: Paraphrase or rewrite your friend's essay with similar meaning at reduced cost

Editing:Proofread your work by experts and improve grade at Lowest cost

And Improve Your Grades
Phone no. Missing!

Enter phone no. to receive critical updates and urgent messages !

Attach file

Error goes here

Files Missing!

Please upload all relevant files for quick & complete assistance.

Guaranteed Higher Grade!
Free Quote
Practice Layer 3 Routing in SDN Environment using Dijkstra's Algorithm



The goal of this project is to practice Layer 3 routing in a Software-Defined Networking (SDN) environment, and develop the skills to read and modify open-source software. You will implement Dijkstra’s algorithm in an open-source SDN environment consisting of: 1) Mininet, a virtual machine (VM) based network simulator; 2) FloodLight, an SDN controller in Java. 



Software-Defined Networking (SDN) is an emerging architecture that uses a softwarebased, centralized approach to control network traffic. SDN decouples the network control and forwarding functions enabling the network control to become directly programmable via the OpenFlow [1] protocol. Floodlight [2] is a Java-based implementation of the SDN controller.


Mininet [3] is a virtual testbed enabling the development and testing of network tools and protocols. Mininet works by creating a virtual network on your desktop or laptop. By incorporating the Open vSwitch, a software virtual SDN switch, Mininet supports the OpenFlow protocol and can talk to an SDN controller such as Floodlight. 




Step 1: Set up Mininet. 


a. Download Virtualbox

b. Download the Mininet 2.3.0 VM image (Ubuntu 18.04.5 version)

c. In VirtualBox, click “File > Import Appliance…” to import the Mininet VM.
d. The Mininet VM runs as a guest system with a NAT based private IP address in the hypervisor, port forwarding must be enabled to access Mininet from the host system. To enable port forwarding in Virtualbox, select the Mininet VM, click “Settings -> Network -> Adapter 1 Tab -> Advanced -> Port Forwarding”, and add a rule as follows:

e. Start the Mininet VM in Virtualbox.
f. Use SSH to connect to the Mininet VM at mininet@localhost:2222, and login with the password “mininet”.


Step 2: Set up Floodlight. 


a. Download Eclipse, a Java IDE. Note that you will need the Java JRE to run Eclipse. If Java is not currently installed, download and install it first.

b. Download the zipped Floodlight repo from Canvas.
c. Import the pre-compiled Floodlight project into Eclipse as follows:
• Click “File -> Import -> General -> Existing Projects into Workspace”, then click “Next”.
• From “Select root directory” click “Browse…”, and select the Floodlight directory.
• Check the box for “floodlight”. No other Projects should be present and none should be selected.
• Click “Finish”.

d. In Eclipse, create the FloodlightLaunch target and run it as follows:
• Click “Run -> Run Configurations”.
• Right-click “Java Application” and select “New Configuration”.
• For Name, use “FloodlightLaunch”.
• For Project, use “floodlight”.
• For Main, use “net.floodlightcontroller.core.Main”

• Click “Apply”.
• Click “Run”.
• Ignore the following Python error in Floodlight if you see one

Exception in thread "debugserver" Traceback (most recent call last):

File "", line 1, in

ImportError: No module named debugserver

e. Optional: The pre-compiled Floodlight should work out of the box. If it does not, compile it using Apache Ant as follows.
• Download the Ant binary

• Enter the Floodlight root directory, and type “/bin/ant eclipse”.


Step 3: Implement Dijkstra’s algorithm in Floodlight. 


a. When a switch receives a new packet that does not match any existing rule, it will forward the packet to Floodlight using the OpenFlow protocol, and Floodlight will tell the switch how to process the packet also using OpenFlow. Your routing module will process only IP packets, and leave other packets such as ARP to the existing Floodlight modules. When a new IP packet is received, the receive() method of your module will be called, in which you should use Dijkstra’s algorithm to calculate the path, and install the routing rules on the switches of the calculated path.
b. In Eclipse Package Explorer, navigate to “Floodlight -> src/main/java -> net.floodlightconroller.myrouting ->”, where a module skeleton has been provided.
c. Use vi or nano to copy the “” script from the Floodlight root directory to the Mininet VM. Type “sudo python” in Mininet to run the script. It will create the following topology.

d. As the first step of Dijkstra’s algorithm, collect the network topology in your module. Print all the switches and links. A sample output is attached.

e. When an IP packet is received, print the source and destination IP addresses. A sample output is attached.

f. Calculate the path from the source to the destination, and print the switch IDs on the path. A sample output is attached.
g. Install the path from the source to the destination to the corresponding switches. Since the iperf testing tool uses TCP to measure bandwidth, you will need to install another path from the destination back to the source to deliver the acknowledgements.
h. Press enter in the Mininet console to clean up and exit the Python testing script.

sales chat
sales chat