KHopMetric is a Floodlight module to speed up the network convergence time after a fault. The Floodlight controller implements the Openflow protocol, which specifications can be found here: Openflow spec
This project depends on Floodlight, which can be found here: Floodlight project on GitHub.
It has been tested with Mininet, which can be found here: Mininet project on GitHub.
The module has been developed using the Yen-KShortestPath algorithm, which can be found here: Yen-k-shortest-path project on Google code.
This sofware is licensed under the Apache License, Version 2.0.
Information can be found here: Apache License 2.0.
The K-Hop-Metric module is a modified version of the default Floodlight 0.90 Topology module. The dijkstra method in the TopologyInstance class has been replaced with a new one, using the Yen-K-Shortest-Path algorithm to speed up the convergence after a fault. By default, after a fault, the Topology module recalculates all paths and broadcast trees from and to each node. The new module uses a cache and precalculates K paths (where K is a number choosen by the network admin) per each couple of nodes.
At setup time the module pre-calculates at most K-paths (if they exists) per each couple of nodes. After a disruptive change of the network (a link goes down or a switch turns off) the module choose the the best active alternative path. When paths end the module starts to recalculate other K paths for that couplse of nodes. After a costructive change of the network (adding a new OpenFlow device or making a new link between switches) the module recalculate all paths per each couple of nodes.
This project has been developed and tested on Floodlight v0.90.
The module developed consists of the following components:
-
edu.asu.emit.qyan.alg.control package
-
edu.asu.emit.qyan.alg.model package
-
edu.asu.emit.qyan.alg.model.abstracts package
-
TopologyInstanceKHopMetric.java
-
TopologyManagerKHopMetric.java
Using Eclipse, after the import of the Floodlight project:
- Copy all edu.asu.emit.qyan.alg.* packages in the project folder (outside net.floodlightcontroller)
- Copy TopologyInstanceKHopMetric.java and TopologyManagerKHopMetric.java in net.floodlightcontroller.topology
- Modify the file src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule removing net.floodlightcontroller.topology.TopologyManager and adding net.floodlightcontroller.topology.TopologyManagerKHopMetric
- Modify the file src/main/resources/floodlight.properties removing net.floodlightcontroller.topology.TopologyManager and adding net.floodlightcontroller.topology.TopologyManagerKHopMetric
For production environment, a jar version of the module is downloadable as well from the root directory of this GitHub repository.
Alternatively, it is possible to create your own khopmetric.jar
with the compiled files from this project.
According to Floodlight command sintax, you can integrate the jar file to your Floodlight installation running the command:
java -cp floodlight.jar:khopmetric.jar net.floodlightcontroller.core.Main -cf floodlight.properties
The parameters specified have the following meaning:
floodlight.properties
is the file specifying the properties for the running instance of Floodlight, it is configred to start the KHopMetric module provided with this project.