zoukankan      html  css  js  c++  java
  • wireshark抓取OpenFlow数据包

    在写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.0.tar.bz2
    cd wireshark-2.0.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:59:60: error: 'dissector_add' was not declared in this scope
    scons: *** [openflow-common.os] Error 1
    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", 43984, openflow_handle);

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

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

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

     f:id:alexei-karamazov:20131208175738p:plain

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

  • 相关阅读:
    转: jsp之c标签
    win10下乌龟git安装和使用
    使用Node.js+Socket.IO搭建WebSocket实时应用
    前端优化
    pyqt5环境搭建
    pandas分页读取excel
    PySpark之RDD操作
    PySpark环境搭建
    Django与Celery最佳实践
    Elasticsearch的安装与简单使用
  • 原文地址:https://www.cnblogs.com/cotyb/p/5023383.html
Copyright © 2011-2022 走看看