Wednesday, 13 March 2013

unsupported version 0x1. If possible, set the switch to use one of the versions [3]

This error is thrown by ryu-manager when your controller application is using current OpenFlow specification version, but the bridge doesn't. To demonstrate this, let assume you're using mininet switch on current version of Open vSwitch. You then assume this should be enough to assign flow targeted for current OpenFlow versions, but to your surprise Ryu complains.

The solution to this is pretty simple:
While mininet is still running open a new terminal and type:
ovs-vsctl show
This should show result synonymous to that shown below;
root@sdn-0l:~# ovs-vsctl show
e7fd4eea-afe3-4f9f-977c-86330374e7a5
    Bridge "s1"
        Controller "ptcp:6634"
        Controller "tcp:10.100.1.61:6633"
            is_connected: true
        fail_mode: secure
        Port "s1-eth1"
            Interface "s1-eth1"
        Port "s1"
            Interface "s1"
                type: internal
        Port "s1-eth2"
            Interface "s1-eth2"
As you can see the bridge value is "s1" in my case. Now run below to instruct the bridge to support current version protocols.
ovs-vsctl set bridge s1 protocols=OpenFlow10,OpenFlow12,OpenFlow13