Floodlight is an open-source, Java-based OpenFlow controller. It was originally forked from the Beacon controller project. Floodlight uses a simple architecture with modules for routing, device tracking, and REST APIs. Developers can easily build and run Floodlight with Ant and extend its functionality through Java listeners and REST extensions.
2. Floodlight Overview
Floodlight is a completely open, free, Apache-
licensed Java-based OpenFlow controller.
The Floodlight projected emerged from
Beacon, a project created by David Erickson of
Stanford.
3. Why Floodlight?
• Java-based (forked from Beacon)
• Apache Licensed
– A solid foundation for *any* purpose
• Pure java (no OSGI know how required)
– Eclipse supported but not required
• Dead simple to build and run.
– “ant” + “java –jar floodlight.jar”
• Tested and hardened in real environments
– Physical OpenFlow switches and real networks
– Code included in a commercial product from Big Switch Networks
5. Floodlight Architecture REST APIs
Topology - Tracks links between hosts and
switches Java Listeners
Device Manager - Tracks devices in the network Learning Static
(MACs, IPs, etc.) Hub
Switch FlowPusher
Storage - Abstraction layer for storing controller
storage. Memory is used today
Counter Store – Openflow + Floodlight stats
Routing / Forwarding – Core engine for Counter Routing /
Web
storing, calculating paths and installing flows. Store Forward
Web - Rest APIs
Device
Learning Switch - Example learning switch Topology Storage
Manager
application. Can replace Routing / Forwarding
Hub - Example hub application. Can replace Floodlight
routing / forwarding
6. Example: A Simple Hub (pseudo-code)
public class Hub {
public void startup() {
Add Listener(PACKET_IN);
}
public void shutdown() {
Remove Listener(PACKET_IN);
}
public Command receive (…) [
Setup OFPP_FLOOD action;
Write action to switch socket;
return Command.CONTINUE;
}
public boolean isCallbackOrdering Preqreq(…) {
// does anything need to be called before me?
return False;
}
}
7. Building and Running Floodlight
• Build
– $ cd openflowj; ant;
– $ cd ../floodlight; ant;
• Run
– java –jar floodlight.jar
• That’s all there is to it…
8. Floodlight Roadmap
• Persistent storage
• Multi language support
• Static Flow Addition / Removal
• Richer API layer (both REST and Java event-
based)
9. Interested in Learning More?
• Check out the website:
– http://floodlight.openflowhub.org
• Join the mailing list:
– http://groups.google.com/a/openflowhub.org/group/f
loodlight-dev/topics
– Or just email floodlight-dev@openflowhub.org
• Get the code:
– http://floodlight.openflowhub.org/display/Floodlight/
Floodlight+Downloads