Experimental openflow controller
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Dumaislib
appframework
ipstack
management
services
.gitignore
ActionFactory.cpp
ActionFactory.h
ControllerResponseHandler.cpp
ControllerResponseHandler.h
Events.h
FlowModFactory.cpp
FlowModFactory.h
IOpenFlowSwitch.h
Makefile
MatchReader.cpp
MatchReader.h
NetworkUtils.cpp
NetworkUtils.h
OFEchoReq.cpp
OFEchoReq.h
OFError.cpp
OFError.h
OFFeatureRes.cpp
OFFeatureRes.h
OFHello.cpp
OFHello.h
OFMultipartRes.cpp
OFMultipartRes.h
OFPacketIn.cpp
OFPacketIn.h
OFPortStatus.cpp
OFPortStatus.h
OpenFlow.cpp
OpenFlow.h
OpenFlowHandler.cpp
OpenFlowHandler.h
OpenFlowSwitch.cpp
OpenFlowSwitch.h
PacketOutFactory.cpp
PacketOutFactory.h
README.md
ResponseHandler.cpp
ResponseHandler.h
Server.cpp
Server.h
SimpleLearningSwitch.cpp
SimpleLearningSwitch.h
Switch.cpp
Switch.h
SwitchPort.cpp
SwitchPort.h
Topology.cpp
Topology.h
VirtualNetworkSwitch.cpp
VirtualNetworkSwitch.h
api.png
logger.h
main.cpp
switch-test.cpp
testnet-learningswitch.txt
testnet.txt
types.h

README.md

This is a simple openflow controller that I've built. It is built from scratch with no 3rd party openflow framework. I've implemented this by reading the openflow 1.3 spec and with a lot of help of the excellent http://flowgrammable.org website.

The goal was to experiment and uderstand how openflow works.

Implementation:

This controller creates virtual L3 networks that can span over several OVS switches. More details at http://www.dumais.io/index.php?article=ecb1bf742106e1280f51c6a937033bdb

API:

alt text

The controller exposes an API to create the overlay networks.

  • POST /router To define a new virtual router
  • PUT /router To add virtual networks to a virtual router so that traffic can be routed between each other.
  • POST /host To define a new virtual machine
  • POST /network To define a new virtual networks
  • POST /bridge To define a new hypervisor
  • GET /topology To retrieve the virtual topology
  • GET /switch To retrieve information about SDN switches and ports

Files:

The folder "dumaislib" is a precompiled binary output of my dumaislib library that contains JSON, rest and webserver functionalities. That library can be found in my github repos also.

For more details about the SimpleLearningSwitch implementation: http://www.dumais.io/index.php?article=42968ec40e79c2eb3632de0b0f68af87