あさのひとりごとスマートフォン用の表示で見るあさのひとりごと3日坊主にならないように、全力を尽くします。記事は個人のひとりごとです。所属する組織の意見を代表するほど、仕事熱心じゃないです。HOMEBooksProfileこの広告は、90日以上更新していないブログに表示しています。Hatebu由緒正しき物理ネットワークの世界では、スイッチやルータなどの通信機器が独立したOSや制御ソフト、ルーティング機能やデータ転送機能もっていて、設定や構成などの作業も手作業で行っていました。ネットワークの構成は物理に依存し、人間によってケーブルを抜き差しするという温かみのある運用を行っていました。私の青春時代は、まさにこれにすべてを費やしていたといっても過言はありません。Networking)は、物理的な変更を行わず、ソフトウエアの設定変更のみでネットワーク構成を変更できる、素晴らしいものです。SDNは通信機器の制御機能とデータ転送機能を分離し、制御機能をソフトウェアで一元管理することで、どの通信機器にどのような動作をさせるかをソフトウエアで設定できるようになります。Tremaをやってみました。Pi(ラズベリーパイ)は、教育用に開発されたシングルボードコンピュータです。ARMプロセッサを搭載し、microUSBで電源を供給し、OSをSDカードにインストールすることで動作します。一言でいってしまえば、約6000円で買うことができる、タバコの箱サイズの小さなパソコンです。秋葉原の秋月電子に行けば買えますし、Amazonでポチッとしてもよいでしょう。BCM43438が搭載されています。公式サイトは、以下になります。Piで利用できるOSは、公式サイトからダウンロードできます。ARMアーキテクチャシステム向けに設計されたOSです。RaspberryPi3のセットアップは簡単です。公式サイトからダウンロードしたイメージをMicroSDカードに入れて初期セットアップをしてしまえば、すぐに使えます。詳細な手順については、このあたりを読んでいただければと思います。http://codezine.jp/article/detail/9027RaspberryPiのセットアップが完了し、同一セグメント内の他のPCのターミナルコンソールからアクセスできれば準備は完了です。OpenvSwitchのインストールOpenFlowとは、ネットワークをソフトウエアで制御する技術です。ネットワークスイッチの動作を制御する標準プロトコルで、ネットワークの動作をソースコードで記述できます。OpenvSwitchはOpenFlowに対応したソフトウエアスイッチです。今回は、これをRaspberryPiで動かしたい!まずはここまで頑張ります。OpenvSwitchの公式サイトは以下の通りです。いうDebianベースのOSが動いています。そこでソースコードからインストールしていきます。OpenvSwitchのダウンロード以下のサイトにソースコードが公開されていますので、ダウンロードします。最新版は、2.5.0です。ビルドの依存関係チェックOpenvSwitchをビルドするにあたり、必要なパッケージをチェックします。python-zopeinterfaceいろいろ必要なようですので、apt-getコマンドでインストールしていきます。python-zopeinterfaceまた、uuid-runtimeとdkmsも必要になるので、ここでインストールしておきます。dkmsこれで準備が完了しました。OpenvSwitchのビルドソースコードを展開すると、以下のような構成になっています。RaspberryPiのOSはDebian系なので、INSTALL.Debian.mdを読みながらビルド/インストールします。manpages.mkINSTALL.Debian.mdには、次のような記述があります。急いでるようだったら、テスト無しでもできますよ。binary-------------というわけで、次のコマンドを実行してビルドします。binaryものすごく、時間がかかります。コーヒーでも飲みながら待ちましょう。ビルドには、build-essentialとfakerootが必要になるので最新版が入っていない時はいれておきます。2016-05-27-raspbian-jessieは、最新版がすでに入っていたので不要でした。OpenvSwitchのインストールビルドが完了したら、親ディレクトリにdebファイルが生成されています。lsopenvswitch-2.5.0openvswitch-2.5.0.tar.gzopenvswitch-common_2.5.0-1_armhf.debopenvswitch-datapath-dkms_2.5.0-1_all.debopenvswitch-datapath-source_2.5.0-1_all.debopenvswitch-dbg_2.5.0-1_armhf.debopenvswitch-ipsec_2.5.0-1_armhf.debopenvswitch-pki_2.5.0-1_all.debopenvswitch-switch_2.5.0-1_armhf.debopenvswitch-test_2.5.0-1_all.debopenvswitch-testcontroller_2.5.0-1_armhf.debopenvswitch-vtep_2.5.0-1_armhf.debpython-openvswitch_2.5.0-1_all.debいよいよインストールをしていきます。openvswitch-switch_2.5.0-1_armhf.debエラーが出なければ、これでインストール完了です。OpenvSwitchの起動インストールしたOpenvSwitchを次のコマンドで起動します。startTremaのインストールSDNはソフトウエアでネットワーク全体を制御するものですが、ソフトウエアである以上開発していくときにフレームワークがあったほうが楽です。Trema(とれま)とは、OpenFlowコントローラを開発するためのオープンソースソフトウエアです。公式サイトは以下の通りです。http://trema.github.io/trema/OpenFlowに関しては、以下を読むことをお勧めします。私はセレブな主婦なので、書籍を購入しました。Tremaをインストールは次のコマンドを実行します。tremaこれで準備はすべて完了です。Tremaを動かしてみます。考えても分からないところは手に教えてもらう、という勉強法で今まで生きてきたのでそのスタイルを貫きます。以下からプロジェクトリポジトリをcloneします。https://github.com/trema/hello_trema.git普通のRubyのフォルダ構成なので、少し安心です。スイッチ設定ファイル作成trema.confというファイルがスイッチの設定ファイルになります。仮想スイッチを一意に識別するためのIDです。MACアドレス的なものらしいので、重複しないように設定する必要があります。OpenFlowの仕様では、この値には64ビットの一意な整数値を割り振ることになっています。仮想スイッチを1台定義しているという意味になります。制御部分は、Rubyで実装していきます。サンプルプロジェクトのlib/hello_trema.rbを使います。Trema::Controllerクラスを継承して作ります。endendこのクラスには2つのハンドラがあります。スイッチのdatapath_id!」が表示されるぞ!と。ほかにもたくさんハンドラがあるので、すこしずつ勉強していきたいと思います。Tremaの実行tremaコマンドを使って実行します。仮想スイッチの設定ファイルは-cオプションで指定します。0xabc!う、動いた!仮想スイッチを複数にしたらどうなんだろう、trema.confで5台ほど設定してみます。0xa02!ありえないほど、地味ですね。言葉では表現できないほど楽しい。まとめRaspberryPi3をつかって、Trema+OpenvSwitchが動く環境ができあがりました。ビルドでは、いろいろなエラーが出て苦戦しましたが、Tremaのおきて「最後まで絶対に諦めずやりぬく心」があればできるな!ということが分かりました。実は、RasbperryPiではなく、Ubuntuの普通のサーバで「OpenFlow実践入門」を読みながら一通り動かしているのですが、スイッチ監視ツール、インテリジェント・パッチパネル、ラーニングスイッチなど動きはしたものの理解ができているか、と言われれば理解は出来ていない部分も多々です。ネットワーク技術とRubyの実装がどっちも分かってないと、果てしなくアレなので、時間をかけて勉強していきたいと思います。ASA.はてなブログをはじめよう!dr_asaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。