100 likes | 655 Views
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. OpenFlow Enabled Switches. End host1.
E N D
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 OpenFlow Enabled Switches End host1 End host3 End host2 OpenFlow Controller
Virtual Testbed • Directions available online • http://noxrepo.org/manual/using.html#setting-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: http://noxrepo.org/manual/app.html • 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<eventtype>(boost::bind(handling_method, this, _1)); • register_handler<Packet_in_event>(boost::bind(&Hub::handler, 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 • http://noxrepo.org • OpenFlow Site • http://www.openflowswitch.org/wp/documents