• 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协议等等

  • 相关阅读:
    Maven安装
    (字符串哈希表)找到字符串中不重复出现字符的最长子串长度
    (动态规划)给定三角形,找到从上到下的最小路径总和
    (链表)删除链表的重复元素
    (树)判断二叉树是否为BST
    (动态规划)机器人走迷宫问题
    (数组)Largest Rectangle in Histogram(栈解问题)
    (树)每一层节点的右指针问题(层次遍历)
    (字符串)count and say
    (贪心)加油站绕圈问题
  • 原文地址:https://www.cnblogs.com/cotyb/p/5023383.html
Copyright © 2020-2023  润新知