OpenFlowのユースケースを考えてみた

2011/9/16-1

6月に開催されたInterop Tokyo 2011でNECブースのOpenFlowの取材に行ってから、何となくOpenFlowが気になっていたのですが、自分の中で色々まとまりつつあるので、文章にしてみました。

最終的に文章を読み返してみると怪しいOpenFlow教の布教をしているようにも読めますが、OpenFlowな関連企業から報酬を頂いて書いているわけではありません(とはいえ、実験用にOpenFlow機材をご提供頂けるのであれば喜んで頂きます(笑))。

色々考えてみての、今のところの純粋な感想がこんな感じというだけです。 まあ、ちょっと夢を見過ぎかも知れないとは自分でも思います。

OpenFlowそのものは単なる真っ白な箱でしかない

6月の取材のときには「OpenFlowって何か新しいことできるのですか?」とか、「フロールータってそんなに流行ってないですよね」とか、「画期的なユースケースがないと普及しないのではないでしょうか?」といった質問をしまくって、かなりNECの方々をウンウンと悩ませてしまったのですが、その後、数ヶ月考えてみて、そのときの自分の視点が甘かったのかなぁと思い始めました。

OpenFlow(というか、むしろ「プログラマブルスイッチ」である部分)は、既存のシステムに対して価格破壊を起こすかも知れない存在であって、「新しいユースケースがなければならない」というものでは必ずしもないのかも知れません。 その「新しさ」というのは、柔軟性であって、ユースケースではないと思い始めました。

ある意味、「OpenFlowのユースケースって何?」という質問は、ほとんど「C言語って何に使えるの?」という質問に近い気がしています。 多くの製品は、ユースケースがあって初めて意味を持つのですが、OpenFlowスイッチはコントローラに言われた通りの事をやるだけのdumbな装置であって、色々なことをOpenFlowスイッチに書き込めることが「ユースケース」であって、そこから派生するユースケースとはある程度わけて考える必要があるかも知れないというのが、今のところの私の中での結論です。

何故、そのような考えに至ったかですが、ここ最近ずっとOpenFlowのユースケースを考えていて、「そのユースケースって○○で出来るじゃん。新しくないよね?」という自問自答を繰り返していました。 あるとき、「○○で出来る」の「○○」の部分がやたらといっぱいあることそのものが、実はOpenFlow(というかプログラマブルスイッチ)の凄いところだと気がつきました。 だって、それって1台で何でも出来ちゃうということになります。

まあ、もちろん、OpenFlowを利用して今までにない新しいユースケースが登場する可能性もおおいにあります。 もしかしたら、ユースケースを持っている人が自社製品が発表出来るまで内緒にしているだけかも知れないとも思います。

OpenFlowの柔軟性を産み出しているもの

OpenFlowは、「Flow」という単語が入っているので、フロー単位の制御が可能であることが最大の特徴であるように語られることが多いのですが、私が最も注目しているのは、その部分ではありません。

私が注目している特徴の一つは、「任意のフィールドを書き換えられること」です。 これ、かなり色々できます。

たとえば、イーサネットヘッダの宛先マックアドレスなどのフィールドを必要に応じて書き換えたり、IPヘッダの任意のフィールドを書き換えたり、TCPヘッダのポート番号を書き換えたりできます。 それとともにフロー単位でのスイッチングを組み合わせれば、同一IPアドレスを持つ機器が同一サブネット上に複数存在することも可能になります。

仮想化環境におけるVM移動の補助的な役割での利用に関するユースケースがInterop Tokyo 2011でも発表されていましたが、フロー単位での制御と任意のフィールドをプログラマブルに書き換えられることは、仮想化環境以外でも色々と使えそうです。

流行れば低価格化する

もう一つは、「現在の価格を見て判断してはいけないかも知れない」という点です。

OpenFlowそのものの構造は非常に単純であり、OpenFlowスイッチそのものはコントローラに言われるがままのdumbなスイッチという見方もできるので、生産台数が上昇すれば大きく値段が下がる可能性があると予想しています。 一度ハードウェアがある程度で来てしまえば、通常のスイッチと比較してフローテーブルのためにRAMを多めに乗せなければならない以外に大きな違いがないかも知れないと予想しています。 そのため、バリバリの業務用転送性能を求めないモデルという設計思想であれば、5年10年後ぐらいには結構安めに登場する可能性もありそうだと考えています(流行る前に廃れなければですけど。逆に言うと低価格路線以外だと、一部の高級スイッチの付加機能だけで終わりそう。)。

さらに、「何にでも使える」というのは、同一ハードウェアで複数のマーケットに投入可能である事を意味しているため、大規模生産も可能になりやすい土壌がありそうです。

数ポートの100Mbpsイーサネットスイッチが100万円を越えてたり、Fast Ethernetのポート単価が毎月のようにニュースになっていた時代に、家電量販店で5ポートスイッチが1000円を切る価格で投げ売りされている状況を想像出来る人がいたか?という問題に近い気もします。

OpenFlow全体構造の中では、コントローラ部分が複雑な処理を行いますが、用途によってはコントローラはPCソフトウェアで実現できます。 たとえば、オープンソースフリーソフトのTrema(NEC研究所の方々によるプロジェクトのようです)をダウンロードして使えますし、各種ドキュメンテーションを参考にコントローラを自作することもできます。

OpenFlowが起こすかも知れない価格破壊

このように「ユースケースが他のソリューションと被りまくるのがOpenFlowの凄さ」と「OpenFlowスイッチが低価格化する可能性がある」という2点を考えると、今度は「このユースケースはOpenFlowで価格破壊可能か?」という思考回路になれます。

ということで、「低価格化したOpenFlow機器」を前提にしつつ以下に色々と思いつきのユースケースをあげていきたいと思います。 基本的に今まで技術的にできなかったことではないユースケースばかりです。 というより、家庭用ルータだけを使いつつ、LAN内でルーティングしたくないというような、割と特殊なユースケースばかりです。

1. 家庭用ゲームをするときに複数ISPに接続

まず最初に思ったのが、家庭用ゲームをするときに複数ISPを自動的に切り替えられたり、ゲーム用通信以外を特定のISPに対して流すようにすることです。

オンラインゲームにはレスポンスタイムが勝敗を左右するようなゲームもあります。 そのようなゲームに本気で取り組むゲーマの方々には、複数ISPと契約しつつ状況に応じて利用するISPを変えながらゲームを行うという方もいます。

OpenFlowスイッチを使えば「全ての通信を切り替える」のではなく、ゲーム用の通信を特定のISPで行いつつ、その他の通信を他のISPで行うような事も可能です。 また、特定のISPでの通信状況が急に悪化した場合には、既存の通信を維持しつつ、新規の通信はそれまでとは別のISPを経由して行うといった、リアルタイムかつ現存セッションを残すといった対応も可能になります。

2. 簡易なVRRPの代わり

VRRPほどキッチリはできませんが、数千円レベルの家庭用ルータを利用しつつもVRRPっぽい構成も作れそうです。

家庭用ルータのLAN側インターフェースについているマックアドレスと、ユーザPCのARPテーブルに含まれるアドレスが一致しないので、それを書き換えたうえで転送先も変更するという作業をOpenFlowで行えます。

故障してしまったルータ内にあるNAT変換テーブルの共有が家庭用ルータではできなかったり、家庭用ルータのグローバルIPアドレスが異なるので、既存のTCPセッションが切断されてしまうなどの問題や、コントローラがルータの故障をどのように検知するかという課題はありますが、こういうこともできるんじゃないかという案です。

3. SOHO環境で廉価なポートセキュリティ設定

ある程度のレベル以上の既存L2スイッチは、特定のポートから通信できる上流ポートを制限できるポートセキュリティ設定があったりします。 OpenFlowを利用することで、同様のことが可能です。

さらに、OpenFlowで「許可されたMACアドレス」と同様のこともできますし、上流ポートだけではないLAN内の特定機器の特定TCPポートとだけ通信を許可するなど、非常に細かい粒度で設定が可能です。

たとえば、廉価版のOpenFlowスイッチが1万円を切るような価格になった場合、このようなことを家庭内LANや数人のオフィスLANで気軽にできるようになります。

4. ウィルス対策連携

家庭内にあるPCがコントローラとなりつつ、ウィル対策ソフトと連携して特定の宛先への通信をブロックしたり、特定の「怪しい通信が多いポート番号」だけをPCへと一度流れるようにOpenFlowで設定して、簡易にLAN全体のウィルス対策が行えそうです。

「有名ウィルス対策ソフトベンダがOpenFlowコントローラを提供」とかなると面白そうだなぁと妄想しました。

バリバリDPIを実現するには、それなりの処理速度が必要なのできっと専用ハードウェアが必要だろうとは思うので、LANセキュリティの補助にOpenFlowを利用するには限界がありそうですが、安価にセキュリティを整えるためのツールとして使う余地はありそうな気がしています。

5. 自作ロードバランサ

ロードバランサに近いようなものを自作で作って楽しめそうです。

今までもPCソフトで行うことは可能でしたら、OpenFlowに設定を流し込む方式の方がスイッチング速度が早いので、自作で行える規模が大きくなりそうです。

6. IPv6マルチプレフィックス問題対策

IPv6は、一つのネットワークインターフェースに対して複数のIPv6アドレスを設定することが可能なので、ネットワークインターフェースが1つしかないPCであっても、マルチホーム環境だと複数のIPv6アドレスがつけられます。

複数のIPv6アドレスがついたPCの出すパケットは、そのパケットのソースIPv6アドレスとして選ばれたIPv6アドレスに応じた経路を通りします。 この部分をOpenFlowで制御すれば、環境によっては無理矢理IPv6マルチプレフィックス問題の対応ができそうな気もします。

OpenFlowによるセキュリティリスクの増大

もう一つの側面としては、OpenFlowが流行ったら、OpenFlowコントローラはセキュリティに対する大きな標的になりそうな気がしています。 コントローラを乗っ取られたり、OpenFlowコントローラが乗っ取られないまでも、OpenFlowコントローラへの成り済ましに成功されても結構痛そうです。

たとえば、Man-in-the-Middle Attackが非常に容易になります。 OpenFlowが導入された大規模なデータセンター内で特定の宛先パケットだけを攻撃者が受け取るようなこともできそうです。 この前の偽SSL証明書のような攻撃と合わせ技でピンポイントなスピア型フィッシング詐欺攻撃に使うという方法もありそうです。

もう一つ思いついた「できること」としては、すぐ隣で成り済ましがあげられます。 成り済ましをしたい機器が送信するマックアドレスをOpenFlowスイッチに偽造させることで、アクセスログ上は他の人が通信を行っているようになります。

セキュリティへの脅威に成り得るのも、OpenFlowに無限の可能性が潜んでいることのあらわれかも知れません。 クラック系のユースケースでも、色々有用ということだろうと思います。

最近のエントリ

過去記事

過去記事一覧

IPv6基礎検定

YouTubeチャンネルやってます!