Part1で解説した通り、SDNは「コントロールプレーン」と「データプレーン」を別々の機器で動かし、コントロールプレーンがネットワーク越しにデータプレーンを制御する。これが、企業がSDNを導入するメリット「ネットワーク機器を集中管理する」につながる。
コントロールプレーンを備えた機器を「SDNコントローラー」、SDNコントローラーから制御を受けるデータプレーンの機器を「SDNスイッチ」と呼ぶ。SDNの構成機器はこれだけだ。
SDNコントローラーとSDNスイッチの通信に標準的に使われるプロトコルが、「OpenFlow」である。OpenFlow対応のSDNコントローラーとSDNスイッチをそれぞれ、「OpenFlowコントローラー」「OpenFlowスイッチ」と呼ぶ。
Part2では、OpenFlowの仕組みを理解し、SDNの特徴である「簡単に制御できる」様子を誌上で体感してみよう。今回のテストでは、数千円で購入できる小型コンピュータの「Raspberry Pi」(以下、ラズパイ)を小型のOpenFlowスイッチとして使った。その利用方法も紹介する。
OpenFlowの仕組み フローテーブルで機器制御
まずは、OpenFlowスイッチがパケットをどのように処理するかを見ていこう。
OpenFlowスイッチでは、「インターネットへのアクセス」「VLAN IDが100の通信」といった通信の流れ(フロー)に対して、指定した処理を行う。これらの設定に使うのが「フローテーブル」だ(図2-1)。
フローテーブルは、「マッチフィールド」「インストラクション」「優先度」「カウンター」「タイムアウト」といった要素で構成される▼。このうち、重要なのが処理対象のパケットを指定するマッチフィールドと処理内容を指定するインストラクションだ。
マッチフィールドの条件には、パケットのヘッダーに記述される「宛先ポート番号」「送信元ポート番号」「宛先IPアドレス」「送信元IPアドレス」「VLAN ID」「スイッチのポートの番号」などが使える。例えば、「インターネットへのアクセス」のフローを指定するなら「宛先ポート番号80番の通信」とする。
インストラクションの処理内容では、「転送する」「破棄する」「ヘッダーを書き換える」といった動作を指定する。さらに「転送する」場合は転送するポートを、「ヘッダーを書き換える」場合はその対象を指定する。例えば「送信元IPアドレスを書き換える」や「VLANタグを外す」といった設定が可能だ。
フローテーブルには、条件と処理内容の組み合わせを1行ずつ格納する。この1行分の設定内容を「フローエントリー」と呼ぶ。
OpenFlowは現在、シンプルな仕様のバージョン1.0と高機能なバージョン1.3が主に利用されている。本稿では、特に明記していなければ、バージョン1.3を前提に解説する。