mininet
http://mininet.github.com/
minninet は一つの Linux 環境上に
OpenFlow スイッチ、OpenFlow コントローラー、スイッチに接続するホスト、
から成る仮想ネットワークを構築して OpenFlow の開発やテストを行うことができる環境です。
VM 上の Linux にも構築できるので、mininet を使うのが OpenFlow がどのような動作をするものなのかを
実際に動かして試すのに最も手軽な方法です。
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 オプションは以下の項目が実行されます。
install.sh をそのまま使用してしまうと途中の過程が分からないので
ここではinstall.sh -a で行われる手順を個別に自分で行ってみます。
Ubuntu 12.04 の default kernel は mininet に必要なプロセスベースネットワーク仮想化機能対応の
3.2 なのでそのままで OK です。
kernel に関して追加のビルドやインストールは必要ありません。
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
ネットワークの環境設定を追加します。(ネットワークバッファの増加など)
$ sudo -s # cat ~/mininet/util/sysctl_addon >> /etc/sysctl.conf
mininet をビルドしてインストールします。
$ cd ~/mininet $ sudo make install
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 を削除します。
$ sudo apt-get remove avahi-daemon
IPv6 は openflow 1.2 以降でないとサポートしないため停止します。
$ sudo -s # echo 'blacklist net-pf-10\nblacklist ipv6' >> /etc/modprobe.d/blacklist.conf
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
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
OpenFlow コントローラーとして POX をインストールします。
POX は Python スクリプトなので取得して配置するだけです。
$ cd ~ $ git clone https://github.com/noxrepo/pox.git
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
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