如何使用tshark捕获openflow数据包

how to capture openflow packets using tshark

我有一个带有 arch linux 运行 OVS 的系统。我在同一个盒子里还有一个控制器 运行。我有以下设置:-

ovs-vsctl set-controller br-int tcp:192.168.1.201:6633

我希望使用 tshark(tshark 2.2.8)使用以下命令捕获 openflow:-

 sudo tshark -i br-int -d tcp.port==6633,openflow -O openflow_v4

它转储所有在系统中流动的所有流,但没有 packetIn openflow 消息。我确实确认控制器收到了 packetIn 消息。 (粘贴最后几行:-)

EVENT ofp_event->EventOFPPacketIn
packet in 1237689849893337 b8:27:xx:xx:yy:yy:zz ff:ff:ff:ff:ff:ff:3

我也从tshark文档中了解到,默认情况下它使用端口6653进行openflow。

  tshark -G decodes | grep -i openflow
  tcp.port        6653    openflow

然而,我的印象是我仍然可以使用以下捕获命令查找开放流流量:-

https://wiki.wireshark.org/OpenFlow

 tshark tcp port 6633

这也不起作用,因为没有捕获任何事件,尽管我可以看到控制器接收到很多事件..

非常感谢任何帮助。

我猜你没有在正确的界面上收听。尝试以下操作:

sudo tshark -i any -d tcp.port==6633,openflow -O openflow_v4

如果这不起作用,可能是您的控制器和交换机未使用 OpenFlow 1.3 进行通信。为确保您看到所有内容,请尝试:

sudo tshark -i any -d tcp.port==6633

详细信息。 除非您的设置有特殊要求,否则从 Open vSwitch 到控制器并返回的数据包不会通过网桥。由于通信的两端在同一台主机上,因此数据包可能正在通过环回接口:

sudo tshark -i lo -d tcp.port==6633

我能够重现您的设置和问题,以通过 Open vSwitch 2.5.2 和 Floodlight(master 分支)确认我的回答。我可以看到数据包在环回接口上通过 tcpdumptshark