在写SDN控制器应用或者改写控制器源码的时候,经常需要抓包,验证网络功能,以及流表的执行结果等等,wireshark是个很好的抓包分析包的网络工具,下面简介如何用wireshark软件抓取OpenFlow数据包

一. wireshark2.0.0

wireshark2.0.0直接内置了OpenFlow协议,只需要安装wireshark2.0.0即可。

在安装wireshark之前需要安装一些依赖包:

sudo apt-get install bison flex libpcap-dev gcc

然后通过wget或者自己上官网下载wireshark2.0.0源码,不过现在发现wireshark的官网很容易上不去,所以提供一个百度云链接:wireshark2.0.0源码,下载之后对源文件解压缩,并跳转至文件目录中

tar -vxjf wireshark-2.0..tar.bz2
cd wireshark-2.0.

配置,并进行安装

./configure
make
make install

在配置过程中遇到了如下两个问题:

  1. error: qt is not avaiable
    reason: qt在两年前将用户界面库由GTK+切换到Qt进行了重写,所以需要安装qt
    solution:

    • 原来的libmgl-qt5已经不存在了,取而代之的是libmgl-qt7.0.0,所以可以apt-get install libmgl-qt7.0.0
    • apt-get install qttools5-dev(我选择的方法)
    • apt-get install qt-sdk,所需要的磁盘空间偏大
  2. error:GTK+ 3 is not available
    solution:apt-get install libgtk-3-dev

在安装完成,启动过程中遇到一个问题:

  error:error while loading shared libraries: libwiretap.so.5: cannot open shared object file: no such file or directory
  sulution:ldconfig (ldconfig是一个动态链接库管理命令,通常在系统启动时运行,而当用户安装了一个新的动态链接库时,需要手动更新这个命令,他在默认搜索目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件,缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。

再次启动wireshark,可以添加过滤规则查看(比如OpenFlow1.3协议过滤规则为openflow_v4)

二. 其他版本的wireshark(以wireshark1.10.3,OpenFlow1.3为例)

加入你已经安装了wireshark,不想重新卸载安装,那么可以安装wireshark的插件,其中第四行等号后面需要的是你的wireshark的目录

apt-get install scons
git clone https://github.com/CPqD/ofdissector
cd ofdissector/src
export WIRESHARK="your wireshark source code location"
scons install

如果遇到如下问题:

openflow-common.cpp: In function 'void proto_reg_handoff_openflow()':
openflow-common.cpp::: error: 'dissector_add' was not declared in this scope
scons: *** [openflow-common.os] Error
scons: building terminated because of errors.

将openflow-commom.cpp中的59行和60行改成如下代码:

  dissector_add_uint("tcp.port", OFP_TCP_PORT, openflow_handle);
dissector_add_uint("tcp.port", , openflow_handle);

插件安装好之后,需要将其拷贝到wireshark的安装目录下:

# sudo cp ~/.wireshark/plugins/openflow.so /usr/local/lib/wireshark/plugins/1.10./

之后打开wireshark,如下图,在help-About Wireshark-plugins中如果看到openflow.so,则表示安装成功。

wireshark对于网络数据包、网络功能的分析十分有用,支持OpenFlow的wireshark可以帮助我们调试代码,熟悉OpenFlow协议等等

wireshark抓取OpenFlow数据包的更多相关文章

  1. Android利用tcpdump和wireshark抓取网络数据包

    Android利用tcpdump和wireshark抓取网络数据包 主要介绍如何利用tcpdump抓取andorid手机上网络数据请求,利用Wireshark可以清晰的查看到网络请求的各个过程包括三次 ...

  2. wireshark抓取本地数据包

    windows系统中,本地向自身发送数据包没有经过真实的网络接口,而是通过环路(loopback interface)接口发送,所以使用基于只能从真实网络接口中抓数据的winpcap是无法抓取本地数据 ...

  3. wireshark抓取mysql数据包

    最近在学习搭建数据库服务,因为跟产品相关所以需要从流量中拿到mysql的数据包.然后就想着在本机搭建mysql数据库,然后连接,用wireshark抓就行了. MySQL搭建用的是XAMPP,想说XA ...

  4. wireshark抓取qq数据包

    抓包接口设置成本地连接 点击start,登录qq,输入oicq进行过滤qq包 找到第一个OICQ,点击后,点击oicq-IM software 可以看到自己登录的QQ号码为765343409 本机IP ...

  5. wireshark在windows下无法抓取localhost数据包

    在调试SSL时要抓包,通过tcpview和minisniffer等工具明明看到tcp连接已经建立并开始收发数据了,但wireshark却总是无法抓到相应的数据包. 今天早上,HQ的高工告诉我“wire ...

  6. Wireshark学习笔记——怎样高速抓取HTTP数据包

    0.前言     在火狐浏览器和谷歌浏览器中能够很方便的调试network(抓取HTTP数据包),可是在360系列浏览器(兼容模式或IE标准模式)中抓取HTTP数据包就不那么那么方便了.尽管也可使用H ...

  7. Fiddler抓取https数据包

    Wireshark和Fiddler的优缺点: ①Wireshark是一种在网络层上工作的抓包工具,不仅自带大量的协议分析器,而且可以通过编写Wireshark插件来识别自定义的协议.虽然Wiresha ...

  8. Charles 如何抓取https数据包

    Charles可以正常抓取http数据包,但是如果没有经过进一步设置的话,无法正常抓取https的数据包,通常会出现乱码.举个例子,如果没有做更多设置,Charles抓取https://www.bai ...

  9. Fiddler:在PC和移动设备上抓取HTTPS数据包

    Fiddler是一个免费的Web调试代理,支持任何浏览器.系统以及平台.这个工具是进行Web和App网络开发的必备工具,戳此处下载. 根据Fiddler官网的描述,具有以下六大特点: Web调试 性能 ...

随机推荐

  1. LaTeX 中使用三级标题

    需要在导言区加入命令:\setcounter{secnumdepth}{4} 而后: \section{一级标题} \subsection{二级标题} \subsubsection{三级标题}

  2. Centos 6.4 python 2.6 升级到 2.7一起的MySQLdb不能使用的解决问题

    查看python的版本#python -V Python 2.6.6 1.下载Python-2.7.3#wget http://python.org/ftp/python/2.7.3/Python-2 ...

  3. Linux命令-网络命令:netstat

    netstat -tlun 查看本机监听tcp.udp显示IP地址和端口号 netstat -an 可以查看本机正在连接的所有信息 netstat -rn 可以查看本机网关 windows里面的net ...

  4. res与res-auto的区别

    Solution: Upgrade to latest SDK & ADT version (fixed was released since r17) and usehttp://schem ...

  5. css - 当文本内容长度超出屏幕宽度时,以省略号代替

    <style> .ellipsis{ text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } </styl ...

  6. PHP中获取当前页面的完整URL & php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别

    #测试网址:     http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<b ...

  7. 点滴积累【JS】---JS小功能(JS实现隐藏显示侧边栏,也就是分享栏的隐藏显示)

    效果: 思路: 首先,利用计时器setInterval实现DIV的隐藏显示功能,然后在进行一个判断,之后在把要移动的相应距离进行一个参数传递,再根据参数判断出移动的方向也就是offsetLeft移动的 ...

  8. 手动安装minGW

    minGW是C语言编译包,将GCC编译器在Windows平台上编译软件提供支持. 手工安装minGW是一件很繁琐的事情,但是搞懂它很有用,因为C语言本身是一个很小的语法系统,全靠 各种库在支持,安装m ...

  9. OpenGL数据类型及相应C数据类型

  10. Java创建多线程的三种方法

    Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...