こんな夜中にOpenFlowでネットワークをプログラミング!

第4回 いよいよOpenFlowの動作環境を構築!

この記事を読むのに必要な時間:およそ 4 分

NOXのインストール

続いてサーバ3 にNOX をインストールします。次のコマンドを実行しNOXのコンパイルに必要なパッケージをインストールしてください。

$ cd /home/hogehoge/
$ sudo apt-get install autoconf automake g++ libtool swig make git-core libboost-dev libboost-test-dev libboost-filesystem-dev libssl-dev libpcap-dev python-twisted python-simplejson python-dev

パッケージインストール後は,米スタンフォード大学が用意したパッケージ依存性確認のファイル「nox-dependencies」を利用して,インストールに必要なパッケージに漏れがないか確認します。

$ cd /etc/apt/sources.list.d/
$ sudo wget http://openflowswitch.org/downloads/debian/nox.list
$ sudo apt-get update
$ sudo apt-get install nox-dependencies

次に,リポジトリからNOXのソースコードを取得します。

$ cd /home/hogehoge/
$ git clone git://noxrepo.org/nox

先ほどと同様ですが,gitに失敗する場合はプロキシサーバの存在を疑ってください。NOXのコンパイルはOpenFlowSwitchと同様にboot.shを利用することで簡単に行えます。

$ cd nox
$ ./boot.sh
$ mkdir build/
$ cd build/
$ ../configure
$ sudo make -j 5

今回はWebで公開されているNOXのインストールマニュアルに沿って,makeコマンドの引数に「-j 5」を付加して実行していますが,環境によっては単に「sudo make」とするほうが早くコンパイルが終了する場合があります。また,サーバのスペックによってはmakeに10~20分程度必要な場合もあるようです。

以上でNOXのインストールが完了です。

IPアドレスの設定とケーブル接続

各サーバにIPアドレスを設定します。

  • サーバ1:192.168.0.1/24
  • サーバ2:192.168.0.2/24
  • サーバ3:IPアドレスの設定なし

すでに必要なインストールは完了しているので,これ以降,サーバ3からインターネットに接続できる必要はありません。

サーバ3のeth0とeth1は「IPアドレスの設定なし」に設定する必要があります。IPアドレスを設定しないことでeth0やeth1は単にパケットが通過するだけのケーブルのような存在になります。

NICを2つ持つサーバ3のeth0とeth1を両方ともIP アドレスの設定なしにすると,/etc/network/interfaceファイルは次のようになります。

/etc/network/interfaceファイルの内容

auto lo
iface lo inet loopback

もちろん,サーバ3が3つのNICを持つ場合は3つめのNICにIPアドレスを割り当てても問題はありません。最後に図1に示したとおり各サーバをLANケーブルで接続してください。これですべての環境構築作業が完了しました。

OpenFlowを動かしてみる

それでは,実際にOpenFlowを動かしてみましょう。OpenFlowの世界ではOpenFlowスイッチがクライアントで,OpenFlowコントローラがサーバになります。よってOpenFlowSwitchを起動する前にNOXを起動させておく必要があります。

NOXの起動方法

NOXは起動時にロードするモジュールにより動作が変わります。たとえば,OpenFlowスイッチにレイヤ2 スイッチと同じ動作をさせる「pyswitch」モジュールをNOX起動時にロードすれば,OpenFlowスイッチはレイヤ2スイッチになります。同様にOpenFlowスイッチにレイヤ3スイッチと同じ動きをさせるモジュールをロードすれば,OpenFlowスイッチはレイヤ3スイッチになります。

まったく独自のモジュールを用意すれば,OpenFlowスイッチは,どこにも販売されていない独自の動作をするスイッチになります。今回はOpenFlowスイッチにレイヤ2スイッチと同様の動作をさせることにします。

次のコマンドを実行してNOXを起動してください。

$ cd ~/nox/build/src
$ ./nox_core -v -i ptcp:6633 pyswitch

ここではpyswitchを引数にとることで,pyswitchモジュールをロードしています。⁠-v」はコンソールに詳細情報を表示するという意味で,⁠-i ptcp:6633」は6633番ポートでOpenFlowスイッチからの接続を受け付けるという意味になります。

著者プロフィール

樋口晋也(ひぐちしんや)

(株)NTTデータ 技術開発本部