FC2ブログ

ホーム

スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告

OpenFlowを試してみたよ(インストール編)

2012年02月11日 20:15

去年の6月ごろから気になっていたOpenFlowの実験環境を作ることになったので、その時のメモを残しておきます (`・ω・´)

OpenFlowの細かい話は、そこら中に転がっているのでググって見てください。
私はこの辺から始めました :-)
こんな夜中にOpenFlowでネットワークをプログラミング!

で、うちの実験用仮想環境はこんな感じになっています。

OpenFlowKVM

構築手順とかは.... また今度

OpenFlowコントローラ(hayate)と、OpenFlowSwitch(nanoha)を中心に、実験用のパケットを送信したりするクライアントやサーバを立ち上げています。
ゲストOSは、すべてUbuntu11.10にしています。(ちなみに、ホストOSはCentOS 6.2(64bit)です)

OpenFlowコントローラには、Rubyで制御コードが書けるTremaにしました。
Tremaのサイト

Tremaのバージョンは 0.9.5です

OpenFlowSwitchには、本家OpenFlowからリリースされているものを使っています。バージョンは1.0.0。
今はOpenFlowからリリースされているものを使って試していますが、近いうちにopen vSwitchに切り替える予定です。
切り替えが終わったら仮想環境が大きく変わるので(nanohaがなくなって、仮想ネットワークを構成しているブリッジがOpenFlowSwitchになります)、その時にまたブログに書きます :-)

んでは、OpenFlowSwitchとOpenFowコントローラのインストール手順を書きます。
とは言っても、
こんな夜中にOpenFlowでネットワークをプログラミング!
に載っている記事を参考にしているだけなので、自分用メモ程度です。
本当の目的は、OpenFlowで何が出きるのかを実験する、制御コードを書いて動作を確認することですので...

■ OpenFlowSwitchのインストール(nanoha)

んでは、OpenFlowからソースを取得してビルドします。
でもその前に、OpenFlowSwitchのビルドに必要なライブラリなどをインストールとIPv6サービスを止めます。

1)ライブラリのインストール
>sudo apt-get install git-core automake m4 pkg-config libtool


2)IPv6の停止
OpenFlowのVer1.1までは、まだIPv6に対応していません。1.2から対応するそうです。
なので、今はIPv6を止めておきます。

まずは/etc/sysctl.confを編集します。

>sudo vi /etc/sysctl.conf

で、IPv6を無効にする設定をします。

...
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
...

0が設定されているところを1に変更してください。
※そもそも定義がない場合は、上の定義を追加してください。

設定を反映させるため、以下のコマンドを実行します。
>sudo sysctl -p


3)ビルドとインストール
ソースのビルドとインストールは、以下の手順になります。

最初はOpenFlowのGitから取得します。
取得先は、各自の好きなところに :-)

取得
>git clone git://openflow.org/openflow.git

ビルド&インストール
>cd openflow
>./boot.sh
>./configure
>make
>sudo make install

これで終了~
/usr/local/bin/ の下に、ofp***といった実行ファイルがインストールされているはずです。


4)OpenFlowSwitchの起動

OpenFlowSwitchは、実際にパケット転送を行うofdatapathと、OpenFlowコントローラと通信するofprotocolの2つのプロセスで構成されています。OpenFlowコントローラと通信した内容を、ofprotocolがofdatapathに対してプロセス間通信を使って制御します。

なので、まず先にパケット転送を行っているofdatapathをデーモンとして立ち上げます。

ofdatapath起動方法
>sudo ofdatapath punix:/var/run/dp0.sock -i eth1,eth2,eth3 -D
sudo: unable to resolve host nanoha
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory

-D  がデーモン起動、-i 以降がフロー制御対象のパケットを送受信するインタフェースを指定しています。
punix:/var/run/dp0.sock が、ofprotocolとのプロセス通信に用いるファイル名称です。

OpenFlowコントローラと通信するofprotocolは、次のように起動します。
ofprotocol起動方法
> sudo ofprotocol unix:/var/run/dp0.sock tcp:192.168.100.10

unix:/var/run/dp0.sock が、ofdatapathとのプロセス通信に用いるファイル名称です。
tcp:192.168.100.10 が、OpenFlowコントローラのIPアドレスになります。
OpenFlowコントローラがサーバで、OpenFlowSwitchがクライアントの関係になるので、ofprotocolを起動すると、OpenFlowコントローラに接続しにいきます。
この時、指定したOpenFlowコントローラが存在しないと、一定の周期でOpenFlowコントローラに接続を試みます。
この周期は、2秒、4秒、8秒、15秒と伸びていくようです。他のOpenFlowSwitchはどうなんでしょうね?
sudo: unable to resolve host nanoha
...
Feb 11 21:35:55|00011|rconn|INFO|tcp:192.168.100.10: connecting...
Feb 11 21:35:55|00012|rconn|INFO|tcp:192.168.100.10: connection failed (Connection refused)
Feb 11 21:35:55|00013|rconn|WARN|tcp:192.168.100.10: connection dropped (Connection refused)
Feb 11 21:35:55|00014|rconn|INFO|tcp:192.168.100.10: waiting 2 seconds before reconnect
Feb 11 21:35:57|00015|rconn|INFO|tcp:192.168.100.10: connecting...
Feb 11 21:35:57|00016|rconn|INFO|tcp:192.168.100.10: connection failed (Connection refused)
Feb 11 21:35:57|00017|rconn|WARN|tcp:192.168.100.10: connection dropped (Connection refused)
Feb 11 21:35:57|00018|rconn|INFO|tcp:192.168.100.10: waiting 4 seconds before reconnect
Feb 11 21:36:01|00019|rconn|INFO|tcp:192.168.100.10: connecting...
Feb 11 21:36:01|00020|rconn|INFO|tcp:192.168.100.10: connection failed (Connection refused)
Feb 11 21:36:01|00021|rconn|WARN|tcp:192.168.100.10: connection dropped (Connection refused)
Feb 11 21:36:01|00022|rconn|INFO|tcp:192.168.100.10: waiting 8 seconds before reconnect
Feb 11 21:36:09|00023|rconn|INFO|tcp:192.168.100.10: connecting...
Feb 11 21:36:09|00024|rconn|INFO|tcp:192.168.100.10: connection failed (Connection refused)
Feb 11 21:36:09|00025|rconn|WARN|tcp:192.168.100.10: connection dropped (Connection refused)
Feb 11 21:36:09|00026|rconn|INFO|tcp:192.168.100.10: waiting 15 seconds before reconnect
Feb 11 21:36:24|00027|rconn|INFO|tcp:192.168.100.10: connecting...
Feb 11 21:36:24|00028|rconn|INFO|tcp:192.168.100.10: connection failed (Connection refused)
Feb 11 21:36:24|00029|rconn|WARN|tcp:192.168.100.10: connection dropped (Connection refused)
Feb 11 21:36:24|00030|rconn|INFO|tcp:192.168.100.10: waiting 15 seconds before reconnect
.....

■ Tremaのインストール(hayate)

まずはTremaのソースを取得してビルドします。
でもその前に、Tremaのビルドに必要なライブラリなどをインストールとIPv6サービスを止めます。

1)ライブラリのインストール
>sudo apt-get install git gcc make ruby ruby-dev irb libpcap-dev libsqlite3-dev


2)IPv6の停止
OpenFlowSwitchと同様に、OpenFlowのVer1.1までは、まだIPv6に対応していないので止めておきます。
IPv6の止め方は、OpenFlowSwitchで説明した方法と同じです。

3)ビルドとインストール
ソースのビルドとインストールは、以下の手順になります。

最初はGitHUBから取得します。
取得先は、各自の好きなところに :-)

取得
>git clone git://github.com/trema/trema.git

tremaというディレクトリができているので、その中のビルドコマンドを実行します。
ビルド&インストール
>./trema/build.rb

これで終了~
簡単だ....

4)Tremaの起動
Tremaを実行するためにはフロー制御のコードが必要ですが、サンプルがついているので、まずはそのサンプルで操作確認してみます。

サンプルは、/trema/src/examples/traffic_monitor にあります。
このサンプルは、スイッチングHUBのように、パケットを転送します。(実際にはARPから転送テーブルを作成していません)
実行方法は
>cd trema
>./trema run src/examples/traffic_monitor/traffic-monitor.rb

です。
起動した後、OpenFlowSwitch側で、OpenFlowコントローラと接続できたメッセージが出ます。
これで、OpenFlowの実行環境ができました :-)

試しに、同じサブネット内に存在する、Client01(vivio)からClient02(shamal)に対してpingを打ってみると、ちゃんと届きます :-)

tremaを止めたあとにpingを打ってみると、pingが通らなくなっています。

コントローラが止まったぐらいでパケット転送を止めるってのは、かなり貧弱なので、OpenFlowSwitch側の設定の問題か、OpenFlowSwitchに改造が必要なのだと思います....

環境ができたので、フロー制御のコードを書いて、OpenFlowで何ができて、何ができないのかを試して見ようと思います。
もういくつか試しているので、もう少ししたら、その辺のこともブログに書いてみようと思います。

OpenStackについても調べたりすることになりそうなので、いずれQuantumとかも調べてみようと思います。

それでは~ ヽ(=´ω`=)ノ


スポンサーサイト

ネットワーク コメント: 1 トラックバック: 0

< 前の記事 ホーム 次の記事 >

コメント

この記事にコメントする

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

2012年03月23日 19:36 | | | 編集

コメントを書く






    



管理者にだけ公開させる

ホーム

プロフィール

PANTOMAIMU

Author:PANTOMAIMU
本当は仕様を決めたり設計だけじゃなく、プログラミングもしたいのに~というジレンマを抱えながらも、時間があれば家でプログラムを作ったりしている、しがないSE....
趣味はお絵描きに曲作りに自転車 :-)

Twitter @PANTOMAIMU

カレンダー

05 | 2019/06 | 07
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

FC2カウンター

最新トラックバック

検索フォーム

ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。