labs.beatcraft.com
OpenFlow

OpenFlow/mininet

mininet
http://mininet.github.com/

minninet は一つの Linux 環境上に
OpenFlow スイッチ、OpenFlow コントローラー、スイッチに接続するホスト、
から成る仮想ネットワークを構築して OpenFlow の開発やテストを行うことができる環境です。
VM 上の Linux にも構築できるので、mininet を使うのが OpenFlow がどのような動作をするものなのかを
実際に動かして試すのに最も手軽な方法です。

mininet setup

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 で行われる手順を個別に自分で行ってみます。

kernel インストール

Ubuntu 12.04 の default kernel は mininet に必要なプロセスベースネットワーク仮想化機能対応の
3.2 なのでそのままで OK です。
kernel に関して追加のビルドやインストールは必要ありません。

mininetの設定

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 の設定

ネットワークの環境設定を追加します。(ネットワークバッファの増加など)

$ sudo -s
# cat ~/mininet/util/sysctl_addon >> /etc/sysctl.conf

mininet をビルドしてインストールします。

$ cd ~/mininet
$ sudo make install

OpenFlow リファレンス実装のインストール

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 の削除

意図しない通信を抑止するため、avahi-daemon を削除します。

$ sudo apt-get remove avahi-daemon

IPv6 の無効化

IPv6 は openflow 1.2 以降でないとサポートしないため停止します。

$ sudo -s
# echo  'blacklist net-pf-10\nblacklist ipv6' >> /etc/modprobe.d/blacklist.conf

Wireshark のインストール

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 のインストール

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 のインストール

OpenFlow コントローラーとして POX をインストールします。
POX は Python スクリプトなので取得して配置するだけです。

$ cd ~
$ git clone https://github.com/noxrepo/pox.git

OFTestのインストール

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 のインストール

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


BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   新規 一覧 単語検索 最終更新   最終更新のRSS