12/16 10:09 Extensible Matchについて訂正
この記事はOUCC Advent Calendar の11日目です。
昨日は@spring_raining さんのPCパーツを組み合わせてキミだけの最強録画鯖を作ろうでした。
皆様、おはようございます。くるた(@klta6154)と申します。
流れでAdvent Calendarねじ込んだはいいものの書くことがなかったので、今回は研究の絡みで読んだ本の雑感を書こうと思います。
ちなみに書評どころかブログ書くのも実は初めてなので拙筆はご容赦願います。
1章 OpenFlow概要
OpenFlowってなんやねん、どこで使うねんって話が書いてあります。
OpenFlowとは(ものすごく雑にまとめて書くと)いわゆるSoftware Defined Networkと呼ばれるソフトウェアによるネットワーク管理を実現するための規格です。
スイッチと、それに引っ付けたProgrammableなコントローラでネットワークフロー全体を管理するのが狙いです。最新のバージョンは1.4となっています。
フロー設定したり、スイッチの情報を取得して流量を確かめたり、パケットのペイロードをチェックしたりといった様々な操作をセキュアチャネルを介したメッセージングによって行うことができます。
コントローラの実装は複数のモダン言語(Python/Ryu,NOXとかRuby/TremaとかJava/Floodlightとか)によるものが公開されているので、自分の好きな言語で遊べます。
また仕様も公開されているため、好きな言語での実装がない場合には自分で作ることも可能です。
2章 OpenFlow1.0の仕組み
OpenFlowが動作するにあたり、実際にどのような手順、流れで動いているか詳しく書いてあります。
特に2.4節に記載されている、メッセージ一覧は実際にコントローラを書くにあたって参照する頻度が高くなる部分であり、個人的にはこの本で一番お世話になっています。
ここまで本を読んできたけど結局何がしたいのかよく分からんかったという人も、実際にどんなメッセージをやり取りするのか分かればすぐに全体像が理解できると思うので、立ち読み等で購入を検討する際には是非ここを見てみてください。
3~6章 OpenFlowユースケース
OpenFlowを用いて実際に既存の機器と同等の機能を持ったスイッチ-コントローラ組の実装例が書いてあります。
LLDPの扱いやL2スイッチといった基礎的なところから、VLANタグを用いた仮想ネットワーク管理、ロードバランサ、L3スイッチ(ルータ)の実装まで幅広く扱っています。
ものすごく具体的に「このフローのMatchテーブルではeth_srcをこの値にして…」とか「packet_inしたら受信したパケットのここの値をこう書き換えて…」とか書いてあるので、OpenFlow開発に慣れるためのドリル的な活用法も期待できそうです。
7~9章 バージョンアップに伴う変更点について
OpenFlowは現在もバージョンが更新されていますが、この3章ではバージョンアップごとの変更点が纏められています。
個人的には1.3で追加されたマルチパートフレームワークについてもうちょっと記載が欲しかった気がします。
マルチパートフレームワークは、メッセージのサイズ上限である64kBに収まらない情報を分割して送信するためのもので、主にスイッチが持っている各種情報を取得するために使われます。詳しくは仕様書を読んでください。
10章 OpenFlowの留意事項
この手の本には珍しく、OpenFlowでできないことや問題が起きそうな点について列挙されています。
研究や仕事などで使う側からすると非常にありがたみを感じられる章ではないでしょうか。
個人的には特にOpenFlowはデフォルトだとなぜかTCPフラグによるマッチングが実装されないという話が気になりました。Extensible Match(OpenFlow1.2以降)で対応しないといけないようです(12/16訂正:普通にどのバージョンでも対応してませんでした。Extensible Matchはマッチフィールドを可変長で扱えるようにするもので、マッチ条件自体を任意に拡張できるわけではありません)。つらい。
11章 OpenFlowのこれから
OpenFlowの今後のロードマップとか、なんかそういう感じの話が書いてあります。
Northbound APIについても触れています。そういえば去年にNECがこういうのを作ってはったそうですが、こういうのもNorthbound APIに入るんでしょうか。
まとめ
以上、駆け足で本の内容を紹介したり感想をしゃべっていきました。
拙筆という言葉ではカバーしきれないレベルの雑さだったようにもみえますが、そこはまあ…ご寛恕くださいってことで。
本自体は素晴らしいものだと思いますので、皆さんもお近くの研究室とか図書館とかサークルで蔵書を探してみてはいかがでしょうか。
また、OpenFlowをもっと使ってみたい!って方は余ったPCで仮想スイッチを作ってもいいですし、結構安価に物理スイッチを制作することも可能な様子なのでいろいろ試してみるとよいと思います。
ただし、パブリックな場所に導入するときにはちゃんと気を付けましょう。不具合が出ても心中お察しすることしかできませんので。
最後に
OUCCでは部員を募集しています。
たとえまともな文章が書けなくても、単位がやばくても、ゼミで一時間炎上しても大丈夫です。
お待ちしております。
作業BGMはキャンプファイヤーでおなじみ「燃えろよ燃えろ」でお送りしました。
明日はすしす(@susisu2413)さんです。