はじめに
前回はNTTデータのR&D部門で検討している次世代クラウドの概要を説明しました。OpenFlowによりサーバとネットワークが密に融合する世界を体感していただけたのではと思います。
今後の連載では少し趣向を変えて、
OpenFlowの動作環境を構築する
では、

本来はOpenFlow コントローラとOpenFlowスイッチは別筺体にインストールするのが基本ですが、
OpenFlowコントローラは
今回動作させるOpenFlowプロトコルのバージョンは1.
事前準備
今回はマシンを3台利用してOpenFlowの動作環境を構築します。サーバ3にはNICが2つ搭載されている前提で話を進めます。また、
ソースコードのダウンロードにgitコマンドを用いるため、
マシンを3台用意するのが難しい方はVMwarePlayerを用いて同様の構成を1台のマシン上に構築することも可能です。VMware Playerを利用する方は、
OSのインストール
サーバ1、
ユーザアカウントの設定
まずは作業用のユーザアカウントを1つ作成します。Ubuntuでは特別な設定をしないかぎりrootでログインできないため、
次のコマンドを実行して
$ sudo adduser hogehoge $ sudo usermod -G admin hogehoge
本稿ではとくに明記しないかぎり、
IPv6の無効化
OpenFlowバージョン1.
$ sudo nano /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1
最後にsysctl.
$ sudo sysctl -p
インターネット接続の設定
ソースコードやパッケージのインストールを行うため、
プロキシサーバが存在するような特殊な環境の場合は、
OpenFlowSwitchのインストール
サーバ3にOpenFlowSwitch をインストールします。まずは次のコマンドを実行しコンパイルに必要なパッケージをインストールしてください。
$ cd /home/hogehoge/ $ sudo apt-get install git-core automake m4 pkg-config libtool
次に、
$ git clone git://openflow.org/openflow.git
gitに失敗する場合はプロキシサーバの存在を疑うとよいでしょう。続いてコンパイルを行います。コンパイルは先ほどリポジトリからダウンロードしたファイルに含まれるboot.
次の手順に沿ってコンパイルとインストールを行ってください。
$ cd openflow $ ./boot.sh $ ./configure $ make $ sudo make install
以上でOpenFlowSwitchのインストールは完了です。
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
パッケージインストール後は、
$ 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
次に、
$ cd /home/hogehoge/ $ git clone git://noxrepo.org/nox
先ほどと同様ですが、
$ cd nox $ ./boot.sh $ mkdir build/ $ cd build/ $ ../configure $ sudo make -j 5
今回はWebで公開されているNOXのインストールマニュアルに沿って、
以上でNOXのインストールが完了です。
IPアドレスの設定とケーブル接続
各サーバにIPアドレスを設定します。
- サーバ1:192.
168. 0.1/ 24 - サーバ2:192.
168. 0.2/ 24 - サーバ3:IPアドレスの設定なし
すでに必要なインストールは完了しているので、
サーバ3のeth0とeth1は
NICを2つ持つサーバ3のeth0とeth1を両方ともIP アドレスの設定なしにすると、
auto lo iface lo inet loopback
もちろん、
OpenFlowを動かしてみる
それでは、
NOXの起動方法
NOXは起動時にロードするモジュールにより動作が変わります。たとえば、
まったく独自のモジュールを用意すれば、
次のコマンドを実行してNOXを起動してください。
$ cd ~/nox/build/src $ ./nox_core -v -i ptcp:6633 pyswitch
ここではpyswitchを引数にとることで、
OpenFlowSwitchの起動方法
続いてOpenFlowSwitchを起動します。先ほどまで利用していたコンソールはNOXが起動している状態になっているため、
OpenFlowSwitchを動かすためには、

なお、
OpenFlowネットワークで利用するNICの指定
ここでは、
$ sudo ofdatapath punix:/var/run/dp0.sock -i eth0,eth1 -D
punixで指定しているdp0.
NOXへの接続
それでは次にOpenFlowSwitchからNOXへの接続を行いましょう。NOXとの接続は次のコマンドで行います。
$ sudo ofprotocol unix:/var/run/dp0.sock tcp:127.0.0.1
unixの部分はofprotocolプロセスとofdatapathプロセスがプロセス間通信を行うために利用するファイル名になります。tcpはOpenFlowSwitchの接続先を示します。今回はOpenFlowSwitchとNOXが同一筺体にインストールされているため
|INFO|tcp:127.0.0.1: connected
OpenFlowSwitchやNOXを停止する
念のためOpenFlowSwitchやNOXの停止方法も説明しておきます。
- ①NOXの停止
NOXが動作しているコンソール上で
[Ctrl] + [c] を行い、 プロセスを停止します。 - ②ofprotocolプロセスの停止
ofprotocol が動作しているコンソール上で
[Ctrl] + [c] を行い、 プロセスを停止します。 - ③ofdatapathプロセスの停止
プロセスIDを確認して該当プロセスをkillします
(図3)。
停止させる順番は、

OpenFlowネットワーク上で通信する
それでは実際に、
$ ping 192.168.0.2
pingに対してサーバ2から応答があれば成功です。
まとめ
今回はOSSを用いて実際にOpenFlowが動作する環境を構築しました。pingを飛ばすだけの単純な通信でしたが、
次回はOpenFlowコントローラがロードするモジュールの作成方法を説明する予定です。