Skip to content
This repository has been archived by the owner on Sep 27, 2022. It is now read-only.
/ floodlight-RTT Public archive

Floodlight SDN controller implementation which updates switches routing tables in response to REST API trigger.

License

Notifications You must be signed in to change notification settings

soreana/floodlight-RTT

Repository files navigation

Floodlight OpenFlow Controller (RTT)

In this version of Floodlight controller I modified LearningSwitch module to update switches routing table in response to REST API call. To do so you should take below steps:

  1. Build project with: mvn install -DskipTests
  2. Modify topo.json file in src/main/resources/topology/
    1. switches shows each switche's up ports.
    2. rounds shows each step. For example in sample topo.json, in first round, port two of switch s1 will be down and port three will be up.
  3. Run Floodlight controller with java -jar target/floodlight.jar
  4. Connect swithes.
  5. Call http://<FLOODLIGHT_IP>:8080//wm/learningswitch/start/{switchUpdateTime}/{betweenRoundTime}
    1. switchUpdateTime represent delay to modify each switch routing table.
    2. betweenRoundTime represent delay between each round.

Floodlight Wiki

Please visit us at our new site hosted by Atlassian:

https://floodlight.atlassian.net/wiki/display/floodlightcontroller/Floodlight+Documentation

What is Floodlight?

Floodlight is the leading open source SDN controller. It is supported by a community of developers including a number of engineers from Big Switch Networks (http://www.bigswitch.com/).

OpenFlow is a open standard managed by Open Networking Foundation. It specifies a protocol through switch a remote controller can modify the behavior of networking devices through a well-defined “forwarding instruction set”. Floodlight is designed to work with the growing number of switches, routers, virtual switches, and access points that support the OpenFlow standard.

The v1.2 Floodlight release builds upon the improvements made in v1.1, with emphasis on more robust and feature-rich core modules, including completely rewritten Device, Topology, and Forwarding modules. A new Statistics module provides port bandwidth statistics and also serves a multithreading and statistics collection example. IPv6, Link latency, OF-DPA, message listeners, and many more exciting features have also been introduced. Many thanks to everyone who has contributed to and supported Floodlight! The full release notes of Floodlight v1.2 can be found here:

https://floodlight.atlassian.net/wiki/display/floodlightcontroller/Floodlight+v1.2

Floodlight v1.2 has full support for OpenFlow 1.0 and 1.3 along with experimental support for OpenFlow 1.1, 1.2, and 1.4. Here are the highlights of what Floodlight v1.2 has to offer and how you can get your hands on it:

At it's core is the OpenFlowJ-Loxigen (or OpenFlowJ-Loxi for short) generated Java library, which among many powerful things abstracts the OpenFlow version behind a common API. Loxigen works by parsing OpenFlow concepts defined as structures in a set of input files. It then generates a set of Java, Python, and C libraries for use in OpenFlow applications. The Loxigen-generated libraries abstract away low-level details and provide a far more pleasant and high-level programming experience for developers. It is straightforward to define each OpenFlow version in Loxigen's input files, and each OpenFlow version is exposed through a common API, which results in few if not zero application code changes when adding OpenFlow versions. In other words, Loxigen provides a fairly future-proof API for the many OpenFlow versions to come. The Loxigen project is open source and can be found on GitHub here (http://github.com/floodlight/loxigen/wiki/OpenFlowJ-Loxi).

Floodlight of course uses the Java library generated by Loxigen, also known as OpenFlowJ-Loxi. Although OpenFlowJ-Loxi is the new heart of the new Floodlight controller, there have been many higher-level changes necessary to accommodate the new library as well as to fix some known bugs and improve the overall performance and capabilities of the Floodlight controller. Many will go unnoticed; however, some will have immediate impact on how your modules interact with the controller core.

For instance, the Floodlight v0.90 and v0.91 (old master) Controller class was, among many things, responsible for managing switches. This responsibility has been relocated from the Controller class to a new class called the OFSwitchManager. It is exposed to modules as a service, the IOFSwitchService. Instead of accessing switches using the IFloodlightProviderService, developers should instead depend on and obtain a reference to the IOFSwitchService.

Furthermore, the Static Flow Pusher and REST API in general has undergone an extensive renovation to enable full OpenFlow 1.3 support. More information on the Static Flow Pusher and its REST API syntax can be found here (http://www.openflowhub.org/display/floodlightcontroller/Floodlight+REST+API). Please note any syntax changes from prior Floodlight versions, which have been done to be more consistent with ovs-ofctl style keys.

One of the key features of Floodlight v1.2 is its full support for OpenFlow 1.0 and 1.3, complete with an easy-to-use, version-agnostic API. Each OpenFlow version has a factory that can build all types and messages as they are defined for that version of OpenFlow. This allows for a very much improved way to create OpenFlow Messages, Matches, Actions, FlowMods, etc. The creation of many OpenFlow objects has been greatly simplified using builders, all accessible from a common OpenFlow factory interface. All objects produced from builders are immutable, which allows for safer code and makes your applications easier to debug.

For more information about floodlight refer to Floodlight wiki provided above.

About

Floodlight SDN controller implementation which updates switches routing tables in response to REST API trigger.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages