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

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

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

OpenFlowSwitchの起動方法

続いてOpenFlowSwitchを起動します。先ほどまで利用していたコンソールはNOXが起動している状態になっているため,別ウィンドウで新規にコンソールを作成してください。

OpenFlowSwitchを動かすためには,2つのコマンド「ofdatapath」「ofprotocol」を利用します。それぞれのコマンドを実行するとofdatapathプロセスとofprotocolプロセスが生成されます図2⁠。ofdatapathコマンドは,OpenFlowネットワークで利用するNICを明示的に指定するコマンドで,ofprotocolコマンドはOpenFlowスイッチとOpenFlowコントローラをOpenFlowプロトコルで接続するコマンドになります。

図2 OpenFlow関連のプロセス一覧

図2 OpenFlow関連のプロセス一覧

なお,OpenFlowSwitchのコマンドにはインストール時にパスが通るように設定されるため,以後の作業ではとくにカレントディレクトリを意識する必要はありません。

OpenFlowネットワークで利用するNICの指定

ここでは,どのNICをOpenFlowネットワークに参加させるかを指定します。次のコマンドでeth0とeth1をOpenFlowネットワークに参加させます。

$ sudo ofdatapath punix:/var/run/dp0.sock -i eth0,eth1 -D

punixで指定しているdp0.sockの部分はofdatapathプロセスとofprotocolプロセスがプロセス間通信を行うために必要なファイル名です。-Dはデーモンとして実行することを示します。

NOXへの接続

それでは次にOpenFlowSwitchからNOXへの接続を行いましょう。NOXとの接続は次のコマンドで行います。

$ sudo ofprotocol unix:/var/run/dp0.sock tcp:127.0.0.1

unixの部分はofprotocolプロセスとofdatapathプロセスがプロセス間通信を行うために利用するファイル名になります。tcpはOpenFlowSwitchの接続先を示します。今回はOpenFlowSwitchとNOXが同一筺体にインストールされているため「127.0.0.1」と指定します。このコマンドを実行後,コンソール上に次のように表示されれば正常に接続完了です。

|INFO|tcp:127.0.0.1: connected

OpenFlowSwitchやNOXを停止する

念のためOpenFlowSwitchやNOXの停止方法も説明しておきます。

①NOXの停止

NOXが動作しているコンソール上で[Ctrl][c]を行い,プロセスを停止します。

②ofprotocolプロセスの停止

ofprotocol が動作しているコンソール上で[Ctrl][c]を行い,プロセスを停止します。

③ofdatapathプロセスの停止

プロセスIDを確認して該当プロセスをkillします図3⁠。

停止させる順番は,①NOX,②ofprotocolプロセス,③ofdatapathプロセスの順をお勧めします。

図3 ofdatapathプロセスの停止

図3 ofdatapathプロセスの停止

OpenFlowネットワーク上で通信する

それでは実際に,OpenFlowネットワーク上で通信を行ってみましょう。ここでは図1のサーバ1からサーバ2へpingを飛ばす単純な通信を行います。NOXはpyswitchコンポーネントを読み込んで起動しているため,OpenFlowスイッチはL2スイッチとして動作します。よってpingパケットは問題なくサーバ1からサーバ2に届くはずです。それでは,サーバ1で次のコマンドを実行してみてください。

$ ping 192.168.0.2

pingに対してサーバ2から応答があれば成功です。

まとめ

今回はOSSを用いて実際にOpenFlowが動作する環境を構築しました。pingを飛ばすだけの単純な通信でしたが,OpenFlowコントローラがロードするモジュールによりOpenFlow スイッチの動作が決定されることを実感できたのではないでしょうか。

次回はOpenFlowコントローラがロードするモジュールの作成方法を説明する予定です。

著者プロフィール

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

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