OpenFlowの仕組み
では、OpenFlowは、従来型のネットワークと何が異なっているのだろうか。最大の違いは、経路制御を行う「コントロールプレーン」とパケットを転送する「データプレーン」を分離したことだ。
図表2 従来型ネットワークとOpenFlowによるSDNの違い |
(出典:NEC) |
従来のネットワークは、この両方の機能を1台のスイッチやルーターの中に持たせた「自律分散制御型」である。このためネットワークの拡張・変更の際には、1台ずつコンフィギュレーションを行わなければならない。大規模なネットワークでは、膨大な手間がかかることになる。
一方、OpenFlowは、コントロールプレーンとデータプレーンが分離した「集中制御型」だ。経路制御機能はOpenFlowコントローラーに外出しされ、スイッチはパケット転送に専念する。これにより、コントローラから一元的にネットワークを制御できるようになるのである。
また、経路制御の仕組み自体にも大きな特徴がある。従来のネットワークでは、L2(MAC)やL3(IP)の各レイヤの宛先アドレスに従って転送制御を行っている。これに対してOpenFlowでは、レイヤや宛先アドレスという枠に縛られることなく、「フロー」という単位で転送を制御する。
図表3 OpenFlowの仕組み |
(出典:ブロケード コミュニケーションズ システムズ) |
L1(物理ポート等)、L2(MAC)、L3(IP)、L4(ポート番号)の各レイヤのヘッダ内容の組み合わせにより、通信トラフィックを識別・特定するルールを設定。Aというルールにマッチした通信トラフィックには、Bというアクションを実行するといった形で転送制御を行うのがフローという仕組みだ。指定できるアクションとしては、転送、ヘッダの書き換え、ドロップ(廃棄)などがある。さらに、経路を制御する際のパラメータとして、ネットワークの混雑状況などの統計情報を利用することも可能で、従来のネットワークと比べると、非常に高度な経路制御を実現できるのである。
こうしたルールやアクションの定義は「フローエントリー」と呼ばれ、複数のフローエントリーをまとめたものを「フローテーブル」という。フローテーブルは、コントローラーから各スイッチに配信され、それぞれのスイッチが受け取ったフローテーブルにしたがってパケットを転送することになる。
図表4 OpenFlowのフローエントリーとアクション |
(出典:ブロケード コミュニケーションズ システムズ) |
なお、スイッチがフローテーブルにない通信を受信した場合には、そのスイッチがコントローラーに対し、問い合わせを実施する。すると、コントローラーは宛先までの最適な経路を計算し、その計算結果に基づいたフローテーブルを経路上の各スイッチに登録する。