OpenFlow Tutorial Theophilus Benson
Outline Components in an OpenFlow testbed Setting up a testbed Writing a new component – C++ components version – Python components version
OpenFlow Components Controller Openflow switches Traffic generators End host1 End host2 End host3 OpenFlow Controller OpenFlow Enabled Switches
Virtual Testbed Directions available online – up-a-noxnetwork up-a-noxnetwork Requirements – Linux system – Qemu – Python – Nox code – Other linux libraries
Testbed Setup Compile Nox code Set up virtual machines Connect topology Start controller – Use appropriate components Connect switches to controller
Writing Components Two languages; c++ and python – More information found: Components are stored in src/nox/apps – Separate each component into a distinct directory Component Structure – You must inherit from class Component – You must include a call to the REGISTER_COMPONENT macro – You must include the following methods Void configure(const Configuration *) Void install()
Component Paradigm Register for events and specify handlers – register_handler (boost::bind(handling_metho d, this, _1)); – register_handler (boost::bind(&Hub::ha ndler, this, _1)); All work done in handler – Return either CONTINUE or END – NOTE: you can start the controller with a list of components, event get passed from one to the other – Returning CONTINUE means the next component handles the packet – Returning END means no other components handle the packets
Demo Run component in openflow controller Ping from endhost A Should observe printouts in controller’s console
Resources Nox website – OpenFlow Site –
Questions