こんな夜中にOpenFlowでネットワークをプログラミング!

第2回 ネットワークアーキテクチャを一変させるOpenFlowのパケット制御技術

この記事を読むのに必要な時間:およそ 4.5 分

はじめに

前回は,昨今注目されているネットワーク制御技術「OpenFlow」の動向や基本動作,仮想化が抱える課題について説明しました。今回は,より進んだOpenFlowの活用方法について説明します。

OpenFlowによるパケット制御方式

OpenFlowはネットワークの動作をプログラムで制御できます。具体的に言えば,OpenFlowを利用すると,パケット注1の任意の部分を書き換えて,パケットを任意のノードに転送注2できます。

パケットのどこを書き換え,どこに転送するか(以後「パケットの制御方法」と表記します)は,すべてOpenFlowコントローラが決定します。OpenFlowスイッチはOpenFlowコントローラから指示を受けて動作します。OpenFlowスイッチが独自の判断で動作することは基本的にありません。未知のパケットを受信した場合,OpenFlowスイッチはOpenFlowコントローラにパケットの制御方法について問い合わせをします。

OpenFlowには3種類のパケット制御方法があります。まずは,その3種類の制御方式についてそれぞれ説明します。

注1)
本稿ではパケットという言葉をレイヤ3通信で定義される意味ではなく,単にデータを送る単位の意味で使用します。
注2)
パケットを破棄することも可能です。

制御方式1

制御方式1図1は,OpenFlowの最も基本的な制御パターンです。この制御方式は次のように動作します。

  • (1)サーバ1はサーバ2に対してパケットを送信する
  • (2)OpenFlowスイッチはサーバ1からパケットを受け取り,受信したパケットに対応する制御ルール注3を自身が保持していないか確認する
  • (3)受信したパケットに対応する制御ルールを保持している場合,OpenFlowスイッチは制御ルールに従ってパケットを書き換え,転送を行う
  • (4)OpenFlowスイッチから転送されたパケットがサーバ2に届く

制御方式1では,パケットの任意の個所を書き換えることはできません。書き換え可能な個所は,OpenFlowバージョン1.0の場合はヘッダフィールドに設定可能な12種類になります(詳細は前回を参照ください)⁠

図1 パケット制御方式1(OpenFlowの基本的なパターン)

図1 パケット制御方式1(OpenFlowの基本的なパターン)

注3)
正式には「フローエントリ」と呼びます。

制御方式2

制御方式2図2は,OpenFlowを用いてネットワークを構築した直後によく発生するパターンです。この制御方式は以下のように動作します。

  • (1)サーバ1はサーバ2に対してパケットを送信する
  • (2)OpenFlowスイッチはサーバ1からパケットを受け取り,受信したパケットに対応する制御ルールを自身が保持していないか確認する
  • (3)受信したパケットに対応する制御ルールを保持していない場合,OpenFlowスイッチは受信したパケットをバッファに一時保存し,OpenFlowコントローラにパケットの制御方法を問い合わせる
  • (4)OpenFlowコントローラは,OpenFlowスイッチが受信したパケットに関する情報を受け注4)⁠パケットの制御方法を決定する
  • (5)OpenFlowコントローラは,OpenFlowスイッチにパケットの制御方法を指示する。同時に,OpenFlowスイッチに制御ルールを書き込む
  • (6)OpenFlowスイッチはOpenFlowコントローラの指示に従い,OpenFlowスイッチのバッファに一時保存されているパケットを書き換え,サーバ2にパケットを転送する

上記の処理を行うと,OpenFlowスイッチに制御ルールが書き込まれます。その状態で再びサーバ1から同様のパケットを受信すると,今度はOpenFlowスイッチに制御ルールが書き込まれているため,OpenFlowスイッチはOpenFlowコントローラに問い合わせることなく,制御方式1と同じ要領でパケットを転送します。制御方式2ではOpenFlowスイッチでパケットを書き換えるため,パケットを書き換えることができる個所は制御方式1と同様に12種類になります。

図2 パケット制御方式2(OpenFlowを用いたネットワーク構築後に発生するパターン)

図2 パケット制御方式2(OpenFlowを用いたネットワーク構築後に発生するパターン)

注4)
OpenFlowスイッチは,受信したパケットにOpenFlowヘッダを付加し,OpenFlowコントローラに送信します。

制御方式3

制御方式3図3は制御方式2の応用になります。この制御方式は次のように動作します(⁠1)(4)は制御方式2と同様です)⁠

  • (5)OpenFlowコントローラは必要に応じてOpenFlowスイッチから受信したパケットを書き換え,書き換えたパケットを転送するようOpenFlowスイッチに指示する(書き換えられたパケットにOpenFlowヘッダを付加したパケットがOpenFlow コントローラからOpenFlowスイッチに送信される)
  • (6)OpenFlowスイッチはOpenFlowコントローラの指示に従い,OpenFlowコントローラから受信したパケットをサーバ2(厳密には,転送先はOpenFlowコントローラが指示する)へ転送する

図3 パケット制御方式3(パケット制御方式2(図2)の応用パターン)

図3 パケット制御方式3(パケット制御方式2(図2)の応用パターン)

制御方式3はOpenFlow スイッチに制御ルールを書き込みません。よって,サーバ1から同様のパケットを受信した場合,OpenFlowスイッチはパケットの制御方法がわからないため,前回と同様にOpenFlowコントローラにパケットの制御方法を問い合わせます。

また,制御方式3はサーバ側でパケットの書き換えを行います。よって,この制御方式ではパケットのあらゆる場所を書き換え可能です。さらに,場合によってはパケットを新規に生成し,サーバ1から送信されたパケットとはまったく異なるパケットをサーバ2に届けることも可能です。

著者プロフィール

樋口晋也(ひぐちしんや)

(株)NTTデータ 技術開発本部

コメント

コメントの記入