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)。

図2-1●OpenFlowは「条件に合致したパケットに対する処理内容」で設定する
OpenFlowスイッチは「フローテーブル」という表の記述に従って動作する。条件に当てはまるパケットに対する処理内容を指定して、パケットを制御する。ここに示したのはOpenFlow 1.3のフローテーブル。
[画像のクリックで拡大表示]

 フローテーブルは、「マッチフィールド」「インストラクション」「優先度」「カウンター」「タイムアウト」といった要素で構成される。このうち、重要なのが処理対象のパケットを指定するマッチフィールドと処理内容を指定するインストラクションだ。

 マッチフィールドの条件には、パケットのヘッダーに記述される「宛先ポート番号」「送信元ポート番号」「宛先IPアドレス」「送信元IPアドレス」「VLAN ID」「スイッチのポートの番号」などが使える。例えば、「インターネットへのアクセス」のフローを指定するなら「宛先ポート番号80番の通信」とする。

 インストラクションの処理内容では、「転送する」「破棄する」「ヘッダーを書き換える」といった動作を指定する。さらに「転送する」場合は転送するポートを、「ヘッダーを書き換える」場合はその対象を指定する。例えば「送信元IPアドレスを書き換える」や「VLANタグを外す」といった設定が可能だ。

 フローテーブルには、条件と処理内容の組み合わせを1行ずつ格納する。この1行分の設定内容を「フローエントリー」と呼ぶ。

▼要素で構成される
OpenFlowは現在、シンプルな仕様のバージョン1.0と高機能なバージョン1.3が主に利用されている。本稿では、特に明記していなければ、バージョン1.3を前提に解説する。

次ページ以降は日経 xTECH Active会員(無料)の方のみお読みいただけます。