It’s time to learn new things. I want to use an OpenFlow controller with my OVS switches. Openvswitch already provides “a simple OpenFlow controller reference implementation” (ovs-controller) but I’d like to start with Floodlight. I’m using the official documentation but, as always, I like to share my notes with you:
Floodlight works with Java so we’ll install some packages:
aptitude -y install default-jdk ant git
Let’s download the latest Floodlight stable version and compile the jar:
cd /opt
git clone git://github.com/floodlight/floodlight.git
cd floodlight/
ant
...
dist:
[jar] Building jar: /opt/floodlight/target/floodlight.jar
[jar] Building jar: /opt/floodlight/target/floodlight-test.jar
BUILD SUCCESSFUL
Total time: 25 seconds
We’re going to start Floodlight. The controller by default will listen in the 6633 port.
java -jar target/floodlight.jar 19:53:53.434 INFO [n.f.c.m.FloodlightModuleLoader:main] Loading default modules 19:53:53.827 INFO [n.f.c.i.Controller:main] Controller role set to MASTER 19:53:53.834 INFO [n.f.c.i.Controller:main] Flush switches on reconnect -- Disabled 19:54:03.558 INFO [n.f.l.i.LinkDiscoveryManager:main] Setting autoportfast feature to OFF 19:54:03.779 INFO [o.s.s.i.c.FallbackCCProvider:main] Cluster not yet configured; using fallback local configuration 19:54:03.779 INFO [o.s.s.i.SyncManager:main] [32767] Updating sync configuration ClusterConfig [allNodes={32767=Node [hostname=localhost, port=6642, nodeId=32767, domainId=32767]}, authScheme=CHALLENGE_RESPONSE, keyStorePath=/etc/floodlight/auth_credentials.jceks, keyStorePassword is unset] 19:54:03.853 INFO [o.s.s.i.r.RPCService:main] Listening for internal floodlight RPC on localhost/127.0.0.1:6642 19:54:04.066 INFO [n.f.c.i.Controller:main] Listening for switch connections on 0.0.0.0/0.0.0.0:6633 19:54:09.047 INFO [n.f.j.JythonServer:debugserver-main] Starting DebugServer on :6655
OK, the controller is waiting for connections. Now we’re going to add a new OVS bridge and set the controller for that bridge:
ovs-vsctl add-br br0
ovs-vsctl set-controller br0 tcp:127.0.0.1:6633
Floodlight is being contacted by Openvswitch! 🙂
20:18:24.725 INFO [n.f.c.i.OFChannelHandler:New I/O server worker #2-1] New switch connection from /127.0.0.1:43418 20:18:24.749 INFO [n.f.c.i.OFChannelHandler:New I/O server worker #2-1] Disconnected switch [/127.0.0.1:43418 DPID[?]] 20:18:25.703 INFO [n.f.c.i.OFChannelHandler:New I/O server worker #2-2] New switch connection from /127.0.0.1:43419 20:18:25.728 INFO [n.f.c.i.OFChannelHandler:New I/O server worker #2-2] Switch OFSwitchBase [/127.0.0.1:43419 DPID[00:00:b6:19:eb:08:04:4d]] bound to class class net.floodlightcontroller.core.internal.OFSwitchImpl, writeThrottle=false, description Switch Desc - Vendor: Nicira, Inc. Model: Open vSwitch Make: None Version: 1.9.3 S/N: None 20:18:25.731 INFO [n.f.c.OFSwitchBase:New I/O server worker #2-2] Clearing all flows on switch OFSwitchBase [/127.0.0.1:43419 DPID[00:00:b6:19:eb:08:04:4d]] 20:18:25.734 WARN [n.f.c.i.C.s.notification:main] Switch 00:00:b6:19:eb:08:04:4d connected.
Now thanks to Marist College (SDN Lab) and IBM I’ll use Avior as a Floodlight GUI, visit the webpage to download the 32bit or 64bit version
cd /opt wget http://openflow.marist.edu/static/download/avior-1.3_linux_x64.jar java -jar avior-1.3_linux_x64.jar
And here is a screenshot, the OpenVswitch is shown. Great.
This is just the beginning! More in a few days… I’ll update this post including how to add a daemon to start the controller.