如何使用tshark捕获openflow数据包

时间:2017-08-18 19:12:44

标签: tshark openvswitch

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

var team = new Team(....);

db.Teams.Add(team);

team.TeamParentId = team.Id;

db.SaveChanges();

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

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

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

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

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

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

但是我的印象是我仍然可以使用以下捕获命令查找openflow流量: -

https://wiki.wireshark.org/OpenFlow

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

虽然我可以看到控制器接收到大量事件,但这也没有捕获事件也没有用。

非常感谢这里的任何帮助。

1 个答案:

答案 0 :(得分:1)

我的猜测是你没有在正确的界面上听。请尝试以下方法:

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的数据包。