Search code examples
openvswitchryu

ryu-manager's --observe-links option generates 'Unknown version (0x04)' on switches


I am trying to configure a SDN using 1 Ryu controller and 3 OpenvSwitch datapaths. Here is the code I run on my datapaths to let them talk to the controller:

ovs-vsctl set bridge br0 protocols=[OpenFlow13]
ovs-vsctl set-controller br0 tcp:192.168.100.1:6633

Then trying to get the topology of the network via HTTP/REST I run this on the controller:

ryu-manager --observe-links /path-to-apps/rest_topology.py

Running tcpdump on anyone of the switches I read errors like this:

version unknown (0x04), type 0x03, length 8, xid 0x0000000 09:56:34.645491 IP 192.168.100.1.6633 > 192.168.100.2.53550: Flags [P.], seq 1:9, ack 8, win 235, options [nop,nop,TS val 2070367608 ecr 1308752524], lenght 8: OpenFlow

(I get this error for every ryu application I run, even "simple_switch_13.py")

I tried removing the line ovs-vsctl set bridge br0 protocols[OpenFlow13] but it did not work: switches were not connecting to the controller at all.

Any suggestion? Thanks


Solution

  • Version unknown means that the tcpdump tool does not know which protocol "0x04" is. That is a well made packet, not an error! So if you want to know what 0x04 is try using Wireshark or a more complete software. It will turn out it's a OpenFlow protocol packet.