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協議等等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM