猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

WiresharkにOpenFlowプラグインのインストール

 以下にUbuntuWireshark上にOpenFlowのプロトコルを解析するためのプラグインのインストール方法をまとめました。

 ただしOpenFlowのバージョン1.0だとうまく表示がされませんでした。バージョン1.2および1.3では正しく表示がされていました。

Wiresharkのインストール

ソースコードからインストールする必要があります。

ダウンロード先は http://wiresharkdownloads.riverbed.com/wireshark/srcから選択してください。ここでは1.10.3ですが今はより新しいバージョンのものが使用可能になっています。

# apt-get install bison flex libgtk2.0-dev libpcap-dev gcc libmgl-qt5
# wget http://wiresharkdownloads.riverbed.com/wireshark/src/wireshark-1.10.3.tar.bz2
# tar xvf wireshark-1.10.3.tar.bz2
# cd wireshark-1.10.3
# ./configure
# make
# make install

OpenFlow用のPluginのインストール

下のexportコマンドを参照にして、環境変数にダウンロードしたWiresharkのディレクトリへのパスを指定してください。

ソースコードの取得とインストール
# apt-get install git scons
# git clone https://github.com/CPqD/ofdissector
# cd ofdissector/src
# export WIRESHARK=/home/pide/wireshark-1.10.3
# 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-common.cppの59行目と60行目のaddをadd_uintに書き換えます。
「unit」ではなくて、「uint」であることに気を付けてください。

    dissector_add_uint("tcp.port", OFP_TCP_PORT, openflow_handle);
    dissector_add_uint("tcp.port", 43984, openflow_handle);
プラグインへのコピー

インストールに成功したら、openflow.soというファイルができています。
それを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

参考ページ

http://momijiame.tumblr.com/post/59851475180/cpqd-ofdissector-openflow-1-3のサイトを参考にさせていただきました。ありがとうございます。