使用最新版Wireshark解析OpenFlow协议数据包
wireshark官方最新版已经内置支持OpenFlow协议,不再需要安装插件来支持openflow协议的解析。
详细内容参看:https://wiki.wireshark.org/OpenFlow
到2014-11-04,wireshark v1.12.x支持:
- OpenFlow 1.0 (aprox. 50%)
- OpenFlow 1.1 (不支持)
- OpenFlow 1.2 (不支持)
- OpenFlow 1.3 (100%支持)
- OpenFlow 1.4 (支持将近90%)
1 协议依赖性
OpenFlow 使用 TCP 协议。 TCP 端口号是 6633 和 6653 (the official IANA port since 2013-07-18).
2 参数设定
可以将默认端口号 port(00) 设置端口号为 6633 or 6653.
OpenFlow 的 TCP 端口号也可以在用户的配置文件: (~/.wireshark/preferences)中设定:
#openflow TCP port if other than the default
#A decimal number
openflow.tcp.port: 6633
3 显示过滤器(display filter)
OpenFlow 完整的显示过滤器(display filter)字段可以从这里查看:https://www.wireshark.org/docs/dfref/#section_o 或者使用如下命令查看:
tshark -G fields | grep -i openflow
只显示基于OpenFlow的流量,使用如下:
openflow
只显示基于OpenFlow 1.3的流量,使用如下:
openflow_v4
4 捕获过滤(Capture Filter)
在捕获包时不能直接过滤OpenFlow协议包。但是,可以使用端口号的方式实现此功能。只捕获OpenFlow流量:
tcp port 6633
5 OpenFlow协议规范变化
- OpenFlow 1.4.0 Spec – Section B.14.17 – TCP端口号必须是 6653 (2013-08)
- OpenFlow 1.3.3 Spec – Section B.14.2 – 使用协议版本号替换线路协议(wire protocol) (2013-09-27)
6 扩展阅读
Open Networking Foundation
OpenFlow Specifications
IANA OpenFlow port number
7 相关讨论
1.如何获得Wireshark支持的OpenFlow协议?
$ tshark -G protocols | grep -i openflow
OpenFlow openflow openflow
OpenFlow 1.0 openflow_v1 openflow_v1
OpenFlow 1.3 openflow_v4 openflow_v4
OpenFlow 1.4 openflow_v5 openflow_v5
2.为何不解析OpenFlow 数据包?
检查如下命令的输出:
$ tshark -G decodes | grep -i openflow
tcp.port 6653 openflow
3.Tshark 为何不解析OpenFlow 数据包?
即使不改变Wireshark配置文件中的OpenFlow默认TCP端口号,你仍然可以强制tshark命令在指定的端口上解析OpenFlow包,命令如下:
tshark -d tcp.port==6633,openflow -r file.pcapng