【问题标题】:how to capture openflow packets using tshark如何使用 tshark 捕获 openflow 数据包
【发布时间】:2018-01-27 13:14:09
【问题描述】:

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

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

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

https://wiki.wireshark.org/OpenFlow

 tshark tcp port 6633

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

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

【问题讨论】:

    标签: tshark openvswitch


    【解决方案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 的数据包。

    【讨论】:

    • 让我试一试,然后回来。我不知道这件事。但是,我确实确认我使用的是 openflow 1.3,因为当我尝试将其连接到不同服务器上的控制器时,上述命令有效。感谢你的帮助。一旦我试一试,我会关闭它。
    • 界面任何工作,但我没有。但谢谢你——至少我在前进。我有一个相关的问题,我将作为一个单独的问题提出。
    • 很奇怪,对我来说它正在经历。你在Linux下吗?你能识别它离开的接口吗?
    • 它是 Arch Linux - 不确定这是否会有所不同。此外,上述 tshark 命令捕获所有流,而不仅仅是 openflow。这是为什么 ?。我以为我们给了一个捕获过滤器“-d tcp.port==6633,openflow -O openflow_v4”?。它不应该只寻找openflow吗?
    • 它将捕获所有进出端口 6633 的流量。据我所知,其中一些可能显示为纯 TCP 数据包。
    猜你喜欢
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多