[[labs.beatcraft.com]] [[OpenFlow]] #contents * OpenFlow/mininet [#pa467e1a] mininet~ http://mininet.github.com/~ ~ minninet は一つの Linux 環境上に~ OpenFlow スイッチ、OpenFlow コントローラー、スイッチに接続するホスト、~ から成る仮想ネットワークを構築して OpenFlow の開発やテストを行うことができる環境です。~ VM 上の Linux にも構築できるので、mininet を使うのが OpenFlow がどのような動作をするものなのかを~ 実際に動かして試すのに最も手軽な方法です。~ * mininet setup [#qbe8ee99] mininet のサイトでは設定済みの VM を配布しており、この VM を使用することを推奨していますが、~ インストールされる個々のアプリケーションを把握し VM を自分の思ったような構成に設定するため~ ここでは自分で mininet をインストールして設定します。~ ~ http://mininet.github.com/download/~ のページにある Option2 : Native Installation を VMware 仮想マシン上の Ubuntu 12.04 LTS に対して行います。~ ~ Ubuntu 12.04 Desktop amd64 を VMware Player で作成した仮想マシンにインストールした状態が前提です。~ Network を利用することが主目的の環境なので Server 版を使用すればいいのですが、~ Wireshark を利用した解析を同一マシン上で行えるので今回は Desktop 版を使用します。~ ~ まず mininet ソース一式を取得します。~ $ sudo apt-get install git-core $ git clone git://github.com/mininet/mininet mininetのインストール手順は mininet/util/install.sh -aの手順に沿って行います。~ 詳細についてはmininet/util/install.shスクリプトを参照してください。~ ~ install.sh -a オプションは以下の項目が実行されます。~ - kernel インストール ~ - mininet のビルドと設定に必要なパッケージのインストール~ - sysctl の設定~ - OpenFlow リファレンス実装のインストール~ - avahi-daemon の削除~ - IPv6 の無効化~ - Wireshark の OpenFlow 解析機能インストール~ - Open vSwitch のインストール~ - pox のインストール~ - oftest のインストール~ - cbench のインストール~ - OpenFlow の動作には直接関係のないその他の細かい環境設定~ install.sh をそのまま使用してしまうと途中の過程が分からないので~ ここではinstall.sh -a で行われる手順を個別に自分で行ってみます。~ ** kernel インストール [#z886e033] Ubuntu 12.04 の default kernel は mininet に必要なプロセスベースネットワーク仮想化機能対応の~ 3.2 なのでそのままで OK です。~ kernel に関して追加のビルドやインストールは必要ありません。~ ** mininetの設定 [#ea1b6e65] mininet のビルドと動作に必要なパッケージをインストールします。~ $ sudo apt-get install gcc make screen psmisc xterm ssh iperf iproute telnet \ python-setuptools python-networkx cgroup-bin ethtool help2man \ pyflakes pylint pep8 ** sysctl の設定 [#n3b742ea] ネットワークの環境設定を追加します。(ネットワークバッファの増加など)~ $ sudo -s # cat ~/mininet/util/sysctl_addon >> /etc/sysctl.conf mininet をビルドしてインストールします。~ $ cd ~/mininet $ sudo make install ** OpenFlow リファレンス実装のインストール [#wecf41da] OpenFlow リファレンス実装のビルドと動作に必要なパッケージをインストールします。~ $ cd ~ $ sudo apt-get install autoconf automake autotools-dev pkg-config \ libtool libc6-dev OpenFlow リファレンス実装をビルドしてインストールします。 $ git clone git://openflowswitch.org/openflow.git $ cd ~/openflow $ patch -p1 < ~/mininet/util/openflow-patches/controller.patch $ ./boot.sh $ ./configure $ make $ sudo make install ** avahi-daemon の削除 [#p12cd372] 意図しない通信を抑止するため、avahi-daemon を削除します。 $ sudo apt-get remove avahi-daemon ** IPv6 の無効化 [#ofd8359d] IPv6 は openflow 1.2 以降でないとサポートしないため停止します。~ $ sudo -s # echo 'blacklist net-pf-10\nblacklist ipv6' >> /etc/modprobe.d/blacklist.conf ** Wireshark のインストール [#i264eace] Wireshark と、Wireshark の OpenFlow 解析プラグインをインストールします。~ $ cd ~ $ sudo apt-get install wireshark libgtk2.0-dev scons mercurial libglib2.0-dev \ libwiretap-dev libwireshark-dev $ hg clone https://bitbucket.org/barnstorm/of-dissector $ cd of-dissector/src $ export WIRESHARK=/usr/include/wireshark $ scons $ sudo cp openflow.so /usr/lib/wireshark/libwireshark1/plugins/ $ mkdir -p ~/.wireshark $ cp ~/mininet/util/colorfilters ~/.wireshark ** Open vSwitch のインストール [#c46aa5e0] Ubuntu 12.04 には Open vSwitch のパッケージがあるので、ソースからでなくパッケージでインストールします。~ $ sudo apt-get install openvswitch-datapath-dkms openvswitch-switch openvswitch-controller インストール後 Open vSwitch が mininet から起動されるようマシン起動時のデーモン設定を停止します。~ $ sudo service openvswitch-controller stop $ sudo update-rc.d openvswitch-controller disable ** POX のインストール [#o0a63c07] OpenFlow コントローラーとして POX をインストールします。~ POX は Python スクリプトなので取得して配置するだけです。 $ cd ~ $ git clone https://github.com/noxrepo/pox.git ** OFTestのインストール [#a158663d] OpenFlow スイッチの Test ツール~ OFTest~ http://www.projectfloodlight.org/oftest/~ をインストールします。~ $ cd ~ $ sudo apt-get install tcpdump python-scapy $ git clone git://github.com/floodlight/oftest $ cd oftest $ git checkout -b oft-1.1 remotes/origin/oft-1.1 $ cd tools/munger $ sudo make install ** Cbench のインストール[#ba8a30c9] OpenFlowコントローラーのベンチマークソフト~ Cbench~ http://docs.projectfloodlight.org/display/floodlightcontroller/Cbench~ をインストールします。~ $ sudo apt-get install libsnmp-dev libpcap-dev libconfig-dev $ git clone git://openflow.org/oflops.git $ cd oflops $ sh boot.sh $ sh boot.sh ← autoreconf のエラー対策で boot.sh は2回実行する。 $ ./configure --with-openflow-src-dir=/home/beat/openflow $ make $ sudo make install ~ その他環境設定については、特に行いません。~ ~ 以上でmininet 環境の構築は完了です。~ インストール完了後 home ディレクトリには以下のようなディレクトリが出来ています。 $ ls mininet oflops openflow of-dissector oftest pox network への設定変更を反映するため再起動したら使用準備完了です。~ ~ 実際の動作確認は openfrow.org にある~ OpenFlow Tutorialを参照しながら行います。~ http://www.openflow.org/wk/index.php/OpenFlow_Tutorial~ [[OpenFlow/OpenFlow Tutorial 1]] ~