2013年1月8日火曜日

「OpenFlow 実践入門」を読んで Trema で面白いスイッチを作ろう

InternetWeek 2012にてOpenFlow チュートリアル&ハンズオンでOpenFlowのプログラミングフレームラーク、Tremaについてのハンズオンに参加し、調子に乗って開発が止まっているバージョンのTremaにpull requestしてしまったりなどしつつ、講師の高宮さん、鈴木さんと名刺交換をさせていただきましたところ、OpenFlow実践入門の献本をいただきました!

非常に恐縮です・・・

さて、いただいたOpenFlow実践入門ですが、それについてお話する前に OpenFlow について簡単に説明しますね。




OpenFlowとは

L2スイッチ(ハブとか呼ばれる)とかL3スイッチ(ルータとか呼ばれる)は大きく構成する要素をふたつに分けることができます。

ひとつはデータプレーン。こいつはパケットの転送を扱う部分です。目に見える部分でわかりやすく言うと足の部分ですね。ケーブルが生えててピコピコしてたりする部分らへんとかです。

もうひとつはコントローラプレーン。こいつはデータプレーンの制御を行なっている部分です。イメージが沸かないと思いますし、ぼくもよくは知らないんで、適当に想像すると、よく箱を開けるとワラワラとでてくる黒いムカデみたいなやつなんだと思います。

OpenFlowというのは、このうち、コントローラプレーンをソフトウェアによって擬似的に作成するために用意されたデータプレーンとのインターフェイスです。
要するにOpenFlowに対応したスイッチを買ったり、作ったりするとTremaなどで書いたコントローラプレーンを使うことができるよ、というわけです。

これは革新的なことで、いままでは細かいルールを設定してネットワークの実験がしたいな、というときにはハードウェアのスイッチが依存している制御ソフトウェアにそのルールを記述する設定がなければいけない、という状況でした。逆に表現すると、実験に利用したいアルゴリズムを実現するために、どのハードウェアの制御ソフトウェアが実験に必要な処理に対応しているか調べて購入する必要があったんですよね。

OpenFlowとその対応スイッチを使えばOpenFlowの枠組みの中での処理は自由に記述して動かすことができます。つまり、ハードウェアに付属するソフトウェアの仕様をひとつひとつ調べなくても、自分で処理を記述することで、ハードウェアのコントロールができるのです。画期的!!!

今回はそのOpenFlowの、たぶん、日本初な書籍であるOpenFlow実践入門という書籍をいただきました、という話なんです。ありがたや〜!

OpenFlow実践入門

実はおおよその内容はすでに知っていました。というのも、この本はGitHubで本文内容のおおよそが公開されているのです。と思ったら、オープンな場所からは消えてるような気がするので、買え!!!

Tue Jan  8 23:02:38 JST 2013 追記。著者の高宮さんからコメントでご指摘頂いたとおり、高宮さんのレポジトリにて、発刊以前よりずっと公開されていました。勘違いしてしまって申し訳ないです。

以下、特に良いと思ったことについて箇条書きっぽくあげてみます。


Rubyで記述することができる

これは書籍ではなく、この書籍で紹介されているOpenFlowフレームワークTremaそのものの特徴なのですが、Tremaではコントローラプレーンの内容をRubyで記述することができます。
あらかじめ必要なクラスなどの定義をロードすることでDSLな記述でパケットのコントロールを記述できます!これはとても分かりやすくて心地良い!!!

解説が分かりやすい!

解説がとても分かりやすいです。特に、ネットワークとソフトウェアの両方についてそれなりに素養のある技術者というのは限られてきますから、読者層を広げるためにはさまざまな試みが必要だったのだと思います。
ソフトウェア技術者向けにはサポートセンターをメタファにしたスイッチの内部でのやりとりについての解説があったり、ネットワーク技術者向けにはRubyのワンポイント講座のような解説が設けてあります。
日頃、よく中身を知らずに使っている機器でもTremaによる記述例があるので「MACアドレス学習型スイッチってこんなアルゴリズムで記述できるのか〜」とか勉強になりそうです。

上級者にも対応!

この本、完全におかしいです。市販品のスイッチを買ってきてメーカー保証外のファームを焼きこみ、OpenFlowスイッチを作成する方法まで掲載されています!知らなかった!これはうれしい!!!
なんといっても、自分で書いたOpenFlowの制御をシミュレーションするだけではなく、物理的なOpenFlow対応のデータプレーンを作成し、動かすことができるのですから。
ほかにも、ケーススタディとしてOpenFlowがどのように応用されているかが記されていますので、OpenFlowがもつ可能性の一部をみることができます。


まとめ

OpenFlow実践入門(原稿)を読んで、マニアックな挙動をするスイッチをTremaで作ろう!

4 件のコメント:

TAKANO Mitsuhiro さんのコメント...

「コントローラプレーン」って書いてあるの、間違いで、正確には「コントロールプレーン」だったくさい。

yasuhito さんのコメント...

高宮です。ブログ記事にまでしていただいてありがとうございます!
原稿データのほうは、ずっと GitHub に置いてますので自分でビルドできる方はこちらからもどうぞ〜。
http://yasuhito.github.com/trema-book/

TAKANO Mitsuhiro さんのコメント...

いえ、こちこらこそご献本ありがとうございます!

原稿について勘違いしてしまったので、記事の記述を訂正しました。

trema-edge にも興味津々かつコントリビュートできればしていきたいと思っています!ので、どうぞこれからもよろしくお願いします。

# すでに英訳の準備をされているのを拝見し、ビビっている高野でした。

湛正緯 さんのコメント...

熟女人妻快播成人影院
午夜成人色圖
咪咪愛成人圖片快播
免費成人色情電影網站
色中色成人色情電影
成人色情電影在線觀看
全國最大成人色情電影
成人色情電影網址大全
成人色情網址大全
成人色情影片網址
騎妹網電影
騎妹妹網站
俺去也咪咪成人視頻
俺去也成人視頻免費在線播放
FC2成人視頻絲襪
FC2成人頻道
FC2免費共享視頻
桃花色綜合網
桃花色影院色情網
5555成人導航
日本激情片直播
操操逼逼吧成人網
成人色系漫畫
第一色亂理電影
愛愛網片快播
東亞愛愛網
校園春色愛愛網
愛愛網真人愛愛姿式
愛愛網圖片
色熱熱男人電影快播
caoporn超碰在線視頻
MCC色老六導航
依依色MCC論壇
MCC色址導航
色依依網址導航
三級片在線免費觀看
成人快播經典三級片電影網站
小色網成人綜合色站快播
伊人成人綜合網
校園春色小說色情
校園春色幹老師小說
夜夜擼小說校園春色
小說校園春色古典武俠校
妹妹愛上聚色網
聚色網電影
聚色情色網
聚色網成人網
色系軍團
愛色第四軍團
愛色軍團免費