特許第5773020号(P5773020)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許5773020スイッチシステム、スイッチ制御方法、及び記憶媒体
<>
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000002
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000003
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000004
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000005
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000006
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000007
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000008
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000009
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000010
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000011
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000012
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000013
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000014
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000015
  • 特許5773020-スイッチシステム、スイッチ制御方法、及び記憶媒体 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5773020
(24)【登録日】2015年7月10日
(45)【発行日】2015年9月2日
(54)【発明の名称】スイッチシステム、スイッチ制御方法、及び記憶媒体
(51)【国際特許分類】
   H04L 12/717 20130101AFI20150813BHJP
   H04L 12/721 20130101ALI20150813BHJP
【FI】
   H04L12/717
   H04L12/721 Z
【請求項の数】4
【全頁数】28
(21)【出願番号】特願2014-84534(P2014-84534)
(22)【出願日】2014年4月16日
(62)【分割の表示】特願2012-532901(P2012-532901)の分割
【原出願日】2011年7月21日
(65)【公開番号】特開2014-161083(P2014-161083A)
(43)【公開日】2014年9月4日
【審査請求日】2014年4月16日
(31)【優先権主張番号】特願2010-200690(P2010-200690)
(32)【優先日】2010年9月8日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100102864
【弁理士】
【氏名又は名称】工藤 実
(72)【発明者】
【氏名】鈴木 洋司
(72)【発明者】
【氏名】高島 正徳
(72)【発明者】
【氏名】久保田 一志
(72)【発明者】
【氏名】伊澤 徹
(72)【発明者】
【氏名】林 将志
【審査官】 浦口 幸宏
(56)【参考文献】
【文献】 特開2002−185513(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00−12/26
12/50−12/955
(57)【特許請求の範囲】
【請求項1】
パケットを転送する通信装置であって、
パケットの転送に用いられる第一の転送ルールを複数の前記通信装置に送信可能な制御装置と、所定の制御プロトコルに基づいて通信する第一の手段と、
前記パケットの入力ポートに基づいて、前記第一の転送ルールを格納する第一の領域を参照して前記パケットを処理するか、前記通信装置により設定される第二の転送ルールを格納する第二の領域を参照して前記パケットを処理するかを判定する第二の手段と
を含むことを特徴とする通信装置。
【請求項2】
前記第一の手段は、前記パケットに含まれる複数種類の情報に基づいて前記パケットを識別する識別ルールと、当該識別ルールに対応するパケットの処理ルールとを含む前記第一の転送ルールを、前記制御装置から受信する
ことを特徴とする請求項の通信装置。
【請求項3】
前記第二の手段は、前記パケットの入力ポートが、前記制御プロトコルに対応するポートか否かに基づいて、前記第一の転送ルールを格納する第一の領域を参照して前記パケットを処理するか、前記通信装置による経路制御に基づいて設定される第二の転送ルールを格納する第二の領域を参照して前記パケットを処理するかを判定する
ことを特徴とする請求項またはの通信装置。
【請求項4】
パケットの転送に用いられる第一の転送ルールを複数の前記通信装置に送信可能な制御装置と、所定の制御プロトコルに基づいて通信し、
前記パケットの入力ポートに基づいて、前記第一の転送ルールを格納する第一の領域を参照して前記パケットを処理するか、前記通信装置により設定される第二の転送ルールを格納する第二の領域を参照して前記パケットを処理するかを判定する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スイッチシステムに関し、特に個々のスイッチが複数のテーブルを有するスイッチシステムに関する。
【背景技術】
【0002】
ネットワークシステムにおける通信経路の制御については、近年、通信機器の制御プロトコルであるオープンフロー(OpenFlow)技術を使用した経路制御方式が研究されている。オープンフロー技術による経路制御が行われるネットワークを、オープンフローネットワークと呼ぶ。
【0003】
オープンフローネットワークでは、OFC(OpenFlow Controller)等のコントローラが、OFS(OpenFlow Switch)等のスイッチのオープンフローテーブル(OpenFlow Table)を操作することによりスイッチの挙動を制御する。コントローラとスイッチの間は、コントローラがオープンフロープロトコルに準拠した制御メッセージを用いてスイッチを制御するためのセキュアチャネル(Secure Channel)により接続されている。
【0004】
オープンフローネットワークにおけるスイッチとは、オープンフローネットワークを形成し、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチでのパケットの受信から出力側エッジスイッチでの送信までのパケットの一連の流れをフロー(Flow)と呼ぶ。
【0005】
オープンフローテーブルとは、所定のマッチ条件(ルール)に適合するパケット(通信データ)に対して行うべき所定の処理内容(アクション)を定義したフローエントリ(Flow entry)が登録されたテーブルである。
【0006】
フローエントリのルールは、パケットの各プロトコル階層のヘッダー領域に含まれる宛先アドレス(Destination Address)、送信元アドレス(Source Address)、宛先ポート(Destination Port)、送信元ポート(Source Port)のいずれか又は全てを用いた様々な組合せにより定義され、区別可能である。なお、上記のアドレスには、MACアドレス(Media Access Control Address)やIPアドレス(Internet Protocol Address)を含むものとする。また、上記に加えて、入口ポート(Ingress Port)の情報も、フローエントリのルールとして使用可能である。
【0007】
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダーを書き換える」といった動作を示す。例えば、スイッチは、フローエントリのアクションに出力ポートの識別情報(出力ポート番号等)が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチは、フローエントリのアクションにヘッダー情報が示されていれば、当該ヘッダー情報に基づいてパケットのヘッダを書き換える。
【0008】
オープンフローネットワークにおけるスイッチは、フローエントリのルールに適合するパケット群(パケット系列)に対して、フローエントリのアクションを実行する。
【0009】
オープンフロースイッチの詳細については、非特許文献1、2に記載されている。
【0010】
ネットワーク上の大量のフローを制御するには、大容量のオープンフローテーブルを有する必要がある。現状では、オープンフローテーブルに用いられるTCAM(Ternary Content Addressable Memory)はあまり大容量ではないため、必要十分な容量が確保できているとは言えない。また、オープンフローテーブルに使用されているスイッチのテーブル(主にTCAM)の容量自体を増やすことは難しい。
【0011】
上記の課題の解決方法の1つとして、外部TCAMを使用するという方法があるが、これにはコストがかかる。また、10G多ポート(データ伝送速度10Gビット/秒に対応した複数のポートを有するネットワーク機器)のような高速転送の機器では、外部TCAMの使用自体が不可という状況がある。少なくとも現状では、10Gベースのスイッチで動作可能な外部TCAMは存在しない。
【先行技術文献】
【非特許文献】
【0012】
【非特許文献1】“The OpenFlow Switch Consortium” <http://www.openflowswitch.org/>
【非特許文献2】“OpenFlow Switch Specification Version 0.9.0(Wire Protocol 0x98) July 20, 2009 Current Maintainer: Brandon Heller(brandonh@stanford.edu)” <http://www.openflowswitch.org/documents/openflow−spec−v0.9.0.pdf>
【発明の概要】
【0013】
本発明の目的は、既存のリソースであるスイッチの各テーブルを用いてオープンフローテーブルのエントリ数拡張を実現することにある。
【0014】
本発明に係るスイッチシステムは、所定のパケットに対する処理を定義した複数のテーブルを、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブルを構築し、オープンフローテーブルを参照して、受信パケットに対する処理内容を決定するオープンフロー機能部と、決定された処理内容に従って、受信パケットに対する処理を実行するアクション機能部とを具備する。
【0015】
本発明に係るスイッチ制御方法は、オープンフロースイッチにおいて実施されるスイッチ制御方法であって、所定のパケットに対する処理を定義した複数のテーブルを、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブルを構築し、オープンフローテーブルを参照して、受信パケットに対する処理内容を決定することと、決定された処理内容に従って、受信パケットに対する処理を実行することとを含む。
【0016】
本発明に係るプログラムは、上記のスイッチ制御方法における処理を、スイッチとして使用される計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【0017】
これにより、コントローラからスイッチ内部の複数のテーブルを、1つの大容量のオープンフローテーブルとして用いることを可能とする。
【図面の簡単な説明】
【0018】
図1】本発明に係るスイッチシステムの構成例を示す概念図である。
図2】本発明の第1実施形態に係るオープンフロー機能部の詳細を示す概念図である。
図3】本発明の第1実施形態に係るオープンフロー処理解決部の詳細を示す概念図である。
図4】オープンフローテーブル制御の概要を示す図である。
図5】オープンフローテーブル制御の第1方式の例の詳細を示す図である。
図6】オープンフローテーブル制御の第2方式の例の詳細を示す図である。
図7A】パケット流入時のスイッチシステムの第1の動作例を示す図である。
図7B】パケット流入時のスイッチシステムの第1の動作例を示す図である。
図8A】パケット流入時のスイッチシステムの第2の動作例を示す図である。
図8B】パケット流入時のスイッチシステムの第2の動作例を示す図である。
図9】オープンフローテーブル制御の第1方式の具体例を説明するための図である。
図10】オープンフローテーブル制御の第2方式の具体例を説明するための図である。
図11】本発明の第2実施形態に係るスイッチシステムの実施例1の詳細を示す概念図である。
図12】本発明の第2実施形態に係るスイッチシステムの実施例2の詳細を示す概念図である。
図13】本発明の第2実施形態に係るスイッチシステムの実施例3の詳細を示す概念図である。
【発明を実施するための形態】
【0019】
<第1実施形態>
以下に、本発明の第1実施形態について添付図面を参照して説明する。
【0020】
[システム構成]
図1に示すように、本発明に係るスイッチシステムは、コントローラ101と、スイッチ102を含む。
【0021】
コントローラ101は、オープンフロープロトコルに準拠した処理でスイッチ102を制御する。
【0022】
[スイッチの構成]
スイッチ102は、プロトコル制御部103と、入力ポート104と、オープンフロー機能部105と、レガシー(Legacy)機能部108と、アクション(Action)機能部111と、出力ポート112を備える。
【0023】
プロトコル制御部103は、コントローラ101がオープンフロープロトコルに準拠した処理でスイッチ102を制御するための通信を行う際に、コントローラ101とスイッチ102の間でプロトコル制御を行う。プロトコル制御部103は、スイッチ102の内部に限らず、スイッチ102の前段でも良い。
【0024】
入力ポート104は、パケット入力用インタフェースである。入力ポート104は、オープンフロー有効ポートと、オープンフロー無効ポートを有する。オープンフロー有効ポートとは、オープンフロープロトコルに対応した入力ポートであり、オープンフロー無効ポートとは、オープンフロープロトコルに未対応の入力ポートである。
【0025】
オープンフロー機能部105は、オープンフロー有効ポートから入力したパケットを処理する。
【0026】
オープンフロー機能部105は、オープンフローテーブル管理部106と、オープンフロー処理解決部(OpenFlow Action Resolver)107を備える。
【0027】
オープンフローテーブル管理部106は、スイッチ102が使用するオープンフローテーブルを保持する。オープンフローテーブルには、オープンフロープロトコルに準拠したパケットに対するアクション(オープンフロー処理のアクション)が定義されている。
【0028】
オープンフロー処理解決部107は、オープンフローテーブル管理部106の検索(Lookup)結果を基に、オープンフロー処理のアクションを決定する。
【0029】
レガシー機能部108は、オープンフロー無効ポートから入力したパケットを処理する。
【0030】
レガシー機能部108は、レガシーテーブル(Legacy Table)管理部109と、レガシー処理解決部(Legacy Action Resolver)110を備える。
【0031】
レガシーテーブル管理部109は、スイッチ102が使用するレガシーテーブルである。レガシーテーブル管理部109は、オープンフロープロトコルに準拠していないパケット(通常のパケット等)に対するアクション(レガシー処理のアクション)を定義している。
【0032】
レガシー処理解決部110は、レガシーテーブル管理部109の検索結果を基に、該当するレガシー処理のアクションを決定する。レガシー処理については、通常のスイッチ機能を用いる。
【0033】
アクション機能部111では、オープンフロー機能部105、もしくはレガシー機能部108で決定されたアクションを実行する。
【0034】
出力ポート112は、パケット出力用インタフェースである。
【0035】
[オープンフロー処理とレガシー処理の違い]
オープンフロー処理では、パケットの経路制御を外部のコントローラ経由で行う。コントローラは、ネットワーク全体を見て最適な経路を選択する。一方、レガシー処理では、通常のスイッチやルータで行われているように、自律分散で経路制御を行う。通常のスイッチやルータは、自身の近傍に関する情報からネットワーク状況を判断して最適経路を選択する。
【0036】
オープンフロー処理では、最大12種類の情報の組合せでパケット識別を行うことができる。一方、レガシー処理では、L2ネットワークであれば宛先MACアドレス、L3ネットワークであれば宛先IPアドレスというように、パケット識別に使用できる情報が少ない。このため、細かなフロー制御を行うことが難しい。例えば、レガシー処理では、同じ宛先IPアドレスでも、送信元TCPポート番号が異なれば、別のフローと判断して別の経路を選択する。
【0037】
[スイッチシステムの全体動作]
以下に、図1のスイッチシステムの全体動作について説明する。
【0038】
[パケット入力]
スイッチ102に新規パケットが流入した際、スイッチ102は、入力ポート104で、このパケットを受け取る。
【0039】
スイッチ102は、パケットを受け取った入力ポート104がオープンフロー有効ポートか否か確認する。例えば、スイッチ102は、スイッチ102自体又は入力ポート104の設定情報(config)等を参照して、入力ポート104がオープンフロー有効ポートか否か確認する。
【0040】
[パケット入力からオープンフロー処理への移行]
スイッチ102は、入力ポートがオープンフロー有効ポートであった場合、パケットを、入力ポート104からオープンフロー機能部105に渡す。
【0041】
[オープンフロー処理]
オープンフロー機能部105は、渡されたパケットについて、スイッチ102の複数のテーブルを保持するオープンフローテーブル管理部106において検索処理を行う。
【0042】
次に、オープンフロー機能部105は、オープンフロー処理解決部107において、検索結果、及び各テーブルの優先順位(Priority)からパケットのアクションを決定する。なお、優先順位は、優先度と読み替えても良い。
【0043】
[オープンフロー処理からアクション実行への移行]
オープンフロー機能部105は、決定されたアクションが「Packet−IN」(コントローラに対する該当パケットのアクション問い合わせ)であった場合(例えば、該当するフローエントリが存在せずアクションが決定できなかった場合)は、プロトコル制御部103を通じてコントローラ101に問い合わせ(該当パケットの転送等)を行う。最初は、レガシー処理の対象となるパケット以外の全てのパケットのアクションを、無条件で「Packet−IN」としておいても良い。オープンフロー機能部105は、問い合わせに対する応答として、「Packet−OUT」(コントローラからのアクション問い合わせ結果)を受け取り、その内容を該当パケットのアクションとして決定し、オープンフローテーブル管理部106が保持するテーブルに登録する。以降、オープンフロー機能部105は、オープンフロー処理解決部107において、このパケットと同じルールに該当するパケットに対して、このアクションを決定することになる。
【0044】
オープンフロー機能部105は、決定されたアクションに基づいて、該当パケットをアクション機能部111に渡す。すなわち、該当パケットの処理の主体が、オープンフロー機能部105からアクション機能部111に移行する。
【0045】
[オープンフロー処理からレガシー処理への移行]
オープンフロー機能部105は、決定されたアクションが「NORMAL」(レガシー機能部108を用いたパケット処理)であった場合は、該当パケットをレガシー機能部108に渡す。すなわち、該当パケットの処理の主体が、オープンフロー機能部105からレガシー機能部108に移行する。
【0046】
[パケット入力からレガシー処理への移行]
また、スイッチ102は、入力ポート104がオープンフロー無効ポートであった場合、もしくは当該パケットに対して先に(以前に)オープンフロー機能部105で決定されたアクションが「NORMAL」であった場合、パケットを、入力ポート104からレガシー機能部108に渡す。すなわち、該当パケットの処理の主体が、入力ポート104からレガシー機能部108に移行する。
【0047】
[レガシー処理]
レガシー機能部108は、渡されたパケットについて、スイッチ102の複数のテーブルから構成されるレガシーテーブル管理部109において検索処理を行う。
【0048】
[レガシー処理からアクション実行への移行]
次に、レガシー機能部108は、レガシー処理解決部110において、検索結果、及び各テーブルの優先順位(Priority)からパケットのアクションを決定する。すなわち、該当パケットの処理の主体が、レガシー機能部108からアクション機能部111に移行する。
【0049】
なお、レガシー機能部108〜レガシー処理解決部110でのレガシー処理については、通常のスイッチ機能を用いるため、本発明では詳細に触れない。
【0050】
[アクション実行]
アクション機能部111は、該当パケットに対して、オープンフロー機能部105、もしくはレガシー機能部108で決定されたアクションを実行する。
【0051】
オープンフロー機能部105で決定されたアクションの例として、ヘッダー(Header)情報の書き換え、指定された出力ポートからのパケット出力、パケット破棄等が考えられる。レガシー機能部108で決定されたアクションの例として、ルーティング(routing)等によるパケット転送等が考えられる。但し、実際には、これらの例に限定されない。
【0052】
最後に、アクション機能部111は、実行されるアクションに「パケット出力」が含まれている場合は、その内容に従って、適切な出力ポート112から該当パケットを出力する。
【0053】
[コントローラによるオープンフローテーブルの制御]
なお、コントローラ101は、プロトコル制御部103を通じて、スイッチ102のオープンフローテーブル管理部106の制御を行うことが可能である。ここで、「オープンフローテーブル管理部106の制御」とは、オープンフローテーブルに対するフローエントリの登録/変更/削除/一括削除等である。
【0054】
オープンフローテーブル管理部106がオープンフローテーブルとして保持するスイッチ102の各テーブルは、必ずしもオープンフロー仕様(OpenFlow Spec)で規定されている全ての操作に対応している訳ではない。
【0055】
このため、コントローラ101は、オープンフローテーブル管理部106がオープンフローテーブルとして保持する各テーブルで実現可能な機能(設定可能なアクション)を踏まえて制御を行う必要がある。
【0056】
[オープンフロー機能部の詳細]
図2は、本発明のオープンフロー機能部105の詳細について説明するための図である。
【0057】
オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、アクション機能部111は、図1に表されている機構・機能と同一のものである。
【0058】
オープンフロー機能部105は、オープンフローテーブル管理部106と、オープンフロー処理解決部107を備える。
【0059】
オープンフローテーブル管理部106は、テーブル群113と、検索(Lookup)機能部114を備える。
【0060】
テーブル群113は、オープンフローテーブルを構成するテーブル群である。
【0061】
検索機能部114は、テーブル群113を用いて入力パケットの検索を行う。
【0062】
検索機能部114は、L2/L3/その他テーブル(OF)検索機能部115と、TCAM(OF)検索機能部116を備える。
【0063】
なお、「OF」とは、「OpenFlow」の略語である。
【0064】
L2/L3/その他テーブル(OF)検索機能部115は、入力パケットについて、L2テーブル(OF)、L3テーブル(OF)、及びその他テーブル(OF)を参照し、該当するエントリがないか検索する。その他テーブル(OF)の一例として、マルチキャストルーティングテーブル等が挙げられる。すなわち、L2/L3/その他テーブル(OF)検索機能部115は、入力パケットについて、プロトコル単位でテーブルの検索を実行する。
【0065】
TCAM(OF)検索機能部116は、入力パケットについて、TCAM(OF)を参照し、該当するエントリがないか検索する。すなわち、TCAM(OF)検索機能部116は、入力パケットについて、TCAMの検索を実行する。
【0066】
[オープンフロー機能部の動作]
以下に、図2のオープンフロー機能部105の動作について説明する。
【0067】
入力ポート104は、オープンフロー有効ポートから入力されたパケットを、オープンフロー機能部105に渡す。
【0068】
オープンフロー機能部105は、渡されたパケットについて、スイッチ102の複数のテーブルから構成されるオープンフローテーブル管理部106において検索処理を行う。
【0069】
このとき、オープンフローテーブル管理部106の検索機能部114は、オープンフローテーブルを構成するテーブル群113に登録されたエントリ情報に基づいて検索を行う。
【0070】
具体的には、検索機能部114において、まず、L2/L3/その他テーブル(OF)検索機能部115が検索を行い、次いで、TCAM(OF)検索機能部116が検索を行う。
【0071】
検索機能部114は、この検索結果を、オープンフロー処理解決部107に渡す。
【0072】
オープンフロー処理解決部107は、検索結果、及び各テーブルの優先順位(Priority)からパケットのアクションを決定する。
【0073】
[ハードウェアの例示]
以下に、本発明に係るスイッチシステムを実現するための具体的なハードウェアの例について説明する。
【0074】
コントローラ101の例として、PC(パソコン)、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、コントローラ101は、計算機に搭載される拡張ボードや、物理マシン上に構築された仮想マシン(VM:Virtual Machine)でも良い。
【0075】
スイッチ102の例として、L3スイッチ(layer 3 switch)、L4ス
イッチ(layer 4 switch)、L7スイッチ/アプリケーションスイッチ(
layer 7 switch)、或いは、マルチレイヤスイッチ(multi−lay
er switch)等のネットワークスイッチ(network switch)を想定している。他にも、スイッチ102の例として、ルータ(router)、プロキシ(proxy)、ゲートウェイ(gateway)、ファイアウォール(firewall)、ロードバランサ(load balancer:負荷分散装置)、帯域制御装置/セキュリティ監視制御装置(gatekeeper)、基地局(base station)、アクセスポイント(AP:Access Point)、通信衛星(CS:Communication Satellite)、或いは、複数の通信ポートを有する計算機等が考えられる。
【0076】
プロトコル制御部103、オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、レガシー機能部108、レガシーテーブル管理部109、レガシー処理解決部110、及びアクション機能部111は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリとによって実現される。
【0077】
上記のプロセッサの例として、CPU(Central Processing Unit)、ネットワークプロセッサ(NP:Network Processor)、マイクロプロセッサ(microprocessor)、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路(IC:Integrated Circuit)等が考えられる。
【0078】
上記のメモリの例として、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリ等の半導体記憶装置、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の補助記憶装置、又は、DVD(Digital Versatile Disk)等のリムーバブルディスクや、SDメモリカード(Secure Digital memory card)等の記憶媒体(メディア)等が考えられる。また、バッファ(buffer)やレジスタ(register)でも良い。或いは、DAS(Direct Attached Storage)、FC−SAN(Fibre Channel − Storage Area Network)、NAS(Network Attached Storage)、IP−SAN(IP − Storage Area Network)等を用いたストレージ装置でも良い。
【0079】
また、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の1チップ化が進んでいる。従って、電子機器等に搭載される1チップマイコンが、プロセッサ及びメモリを備えている事例が考えられる。
【0080】
或いは、プロトコル制御部103、オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、レガシー機能部108、レガシーテーブル管理部109、レガシー処理解決部110、及びアクション機能部111は、計算機に搭載される拡張ボードや、物理マシン上に構築された仮想マシン(VM)でも良い。
【0081】
入力ポート104及び出力ポート112の例として、ネットワーク通信に対応した基板(マザーボードやI/Oボード)等の半導体集積回路、NIC(Network Interface Card)等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口(コネクタ)等の通信ポート等が考えられる。
【0082】
また、入力ポート104及び出力ポート112が利用するネットワークの例として、インターネット、LAN(Local Area Network)、無線LAN(Wireless LAN)、WAN(Wide Area Network)、バックボーン(Backbone)、ケーブルテレビ(CATV)回線、固定電話網、携帯電話網、WiMAX(IEEE 802.16a)、3G(3rd Generation)、専用線(lease line)、IrDA(Infrared Data Association)、Bluetooth(登録商標)、シリアル通信回線、データバス等が考えられる。
【0083】
なお、プロトコル制御部103、オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、レガシー機能部108、レガシーテーブル管理部109、レガシー処理解決部110、及びアクション機能部111の各々は、モジュール(module)、コンポーネント(component)、或いは専用デバイス、又はこれらの起動(呼出)プログラムでも良い。
【0084】
但し、実際には、これらの例に限定されない。
【0085】
[オープンフロー処理解決部の詳細]
図3は、本発明のオープンフロー処理解決部107の詳細について説明するための図である。
【0086】
オープンフロー処理解決部107、TCAM(OF)検索機能部116は、図2に表されている機構・機能と同一のものである。
【0087】
オープンフロー処理解決部107は、TCAM(OF)のエントリマッピングを調整することにより、TCAM(OF)検索機能部116の一部として実現される。
【0088】
このため、実質的には、オープンフロー処理解決部107と、TCAM(OF)検索機能部116は、1つの機能ブロック(TCAM(OF) Lookup & OpenFlow Action Resolver)となる。この機能ブロックは、テーブル間優先順位117と、TCAM(OF)内部のエントリ118を有する。
【0089】
テーブル間優先順位117は、期待するアクション優先順位(Priority)を示す。TCAM(OF)内部のエントリ118は、優先順位(Priority)に対応するTCAM(OF)内のエントリマッピングを示す。
【0090】
TCAM(OF)内部のエントリ118は、TCAM(OF)検索用エントリ群119と、L2テーブル(OF)検索結果参照用エントリ120と、L3テーブル(OF)検索結果参照用エントリ121と、その他テーブル(OF)検索結果参照用エントリ122と、Miss−hit用エントリ123を含む。
【0091】
TCAM(OF)検索用エントリ群119は、TCAM(OF)検索機能部116におけるTCAM(OF)検索を実現するためのエントリの集合である。L2テーブル(OF)検索結果参照用エントリ120は、L2テーブル(OF)の検索結果を参照するためのエントリである。L3テーブル(OF)検索結果参照用エントリ121は、L3テーブル(OF)の検索結果を参照するためのエントリである。その他テーブル(OF)検索結果参照用エントリ122は、その他テーブル(OF)の検索結果を参照するためのエントリである。Miss−hit用エントリ123は、いずれのエントリにもヒット(hit)しなかったパケットを「Miss−hit(ヒットせず)」として取り扱うためのエントリである。すなわち、これらは上記のそれぞれのアクションを定義したエントリである。
【0092】
[オープンフロー処理解決部の動作]
以下に、図3のオープンフロー処理解決部107の動作について説明する。
【0093】
オープンフローテーブル内の検索順序として、最後に、TCAM(OF)検索機能部116が検索を行う。なお、TCAM(OF)検索機能部116での検索の際に、L2/L3/その他テーブルの検索結果を参照することが可能なスイッチでは、TCAM(OF)のエントリマッピングを調整することにより、オープンフロー処理解決部107を実現することが可能である。
【0094】
例えば、テーブル間優先順位117のような期待するテーブルごとのアクション優先順位(Priority)を、TCAM(OF)内部のエントリ118のようにマッピングすることにより対応することができる。
【0095】
図3の例の場合は、アクション優先順位(Priority)117は、優先順位(Priority)の高い順から、「全部対応(TCAM(OF)相当)」→「L2対応(L2テーブル(OF)相当)」→「L3対応(L3テーブル(OF)相当)」→「その他対応(その他テーブル相当)」となっている。
【0096】
オープンフロー処理解決部107は、これをTCAM(OF)内のエントリマッピングとして、TCAM(OF)の検索優先順位(Priority)の高い順から、「TCAM(OF)検索機能実現用エントリ群119」→「L2テーブル(OF)検索結果参照用エントリ120」→「L3テーブル(OF)検索結果参照用エントリ121」→「その他テーブル(OF)検索結果参照用エントリ122」→「Miss−hit用エントリ123」の順に並べれば良い。
【0097】
[TCAM(OF)検索機能実現用エントリ群]
TCAM(OF)検索機能実現用エントリ群119は、検索機能のTCAM(OF)検索機能部116を実現するためのエントリ群である。オープンフロー処理解決部107は、入力パケットがTCAM(OF)検索機能実現用エントリ群119のいずれかにヒットした場合、そのエントリのアクションを、当該パケットに対するアクションとして選択する。
【0098】
[L2テーブル(OF)検索結果参照用エントリ]
L2テーブル(OF)検索結果参照用エントリ120は、事前に行われたL2テーブル(OF)の検索の結果を踏まえ、入力パケットに対応するエントリがL2テーブル(OF)上に存在した場合にヒットするエントリである。
【0099】
例えば、L2テーブル(OF)検索時に入力パケットに対応するエントリがあった場合は、あるフラグ「X=1」となり、TCAM(OF)上のL2テーブル(OF)検索結果参照用エントリ120では、このフラグ「X=1」の場合に同エントリがヒットする。
【0100】
オープンフロー処理解決部107は、L2テーブル(OF)検索結果参照用エントリ120がヒットした場合、L2テーブル(OF)の該当エントリのアクションを、当該パケットに対するアクションとして選択する。
【0101】
[L3テーブル(OF)検索結果参照用エントリ]
L3テーブル(OF)検索結果参照用エントリ121は、事前に行われたL3テーブル(OF)の検索の結果を踏まえ、入力パケットに対応するエントリがL3テーブル(OF)上に存在した場合にヒットするエントリである。
【0102】
例えば、L3テーブル(OF)検索時に入力パケットに対応するエントリがあった場合は、あるフラグ「Y=1」となり、TCAM(OF)上のL3テーブル(OF)検索結果参照用エントリ121では、このフラグ「Y=1」の場合に同エントリがヒットする。
【0103】
オープンフロー処理解決部107は、L3テーブル(OF)検索結果参照用エントリ121がヒットした場合、L3テーブル(OF)の該当エントリのアクションを、当該パケットに対するアクションとして選択する。
【0104】
[その他テーブル(OF)検索結果参照用エントリ]
その他テーブル(OF)検索結果参照用エントリ122は、事前に行われたその他テーブル(OF)の検索の結果を踏まえ、入力パケットに対応するエントリがその他テーブル(OF)上に存在した場合にヒットするエントリである。
【0105】
例えば、その他テーブル(OF)検索時に入力パケットに対応するエントリがあった場合は、あるフラグ「Z=1」となり、TCAM(OF)上のその他テーブル(OF)検索結果参照用エントリ122では、このフラグ「Z=1」の場合に同エントリがヒットする。
【0106】
オープンフロー処理解決部107は、その他テーブル(OF)検索結果参照用エントリ122がヒットした場合、その他テーブル(OF)の該当エントリのアクションを、当該パケットに対するアクションとして選択する。
【0107】
[Miss−hit用エントリ]
Miss−hit用エントリ123は、TCAM(OF)のいずれのエントリにも入力パケットがヒットしなかった場合にヒットするエントリである。
【0108】
ここでは、Miss−hit用エントリ123は、全てのパターンのパケットがヒットするエントリである。オープンフロー処理解決部107は、入力パケットがTCAM(OF)のいずれのエントリにもヒットせず、Miss−hit用エントリ123にのみヒットした場合、オープンフローの設定に応じて、「Packet−IN」(コントローラに対する該当パケットのアクション問い合わせ)、もしくは「NORMAL」(レガシー機能部を用いたパケット処理)を、当該パケットに対するアクションとして選択する。
【0109】
なお、各テーブルのアクション優先順位(Priority)を変えたい場合は、TCAM(OF)内の該当エントリの順番を入れ替えれば良い。
【0110】
[オープンフローテーブル制御の概要]
図4は、本発明におけるコントローラからのオープンフローテーブル制御の概要図である。コントローラ101、スイッチ102、プロトコル制御部103、テーブル群113は、図1図2に表されている機構・機能と同一のものである。
【0111】
スイッチ102は、TCAM124と、L2テーブル125と、L3テーブル126と、その他テーブル127を含む。
【0112】
TCAM124は、TCAM(OF)と、TCAM(Legacy)を含む。L2テーブル125は、L2テーブル(OF)と、L2テーブル(Legacy)を含む。L3テーブル126は、L3テーブル(OF)と、L3テーブル(Legacy)を含む。その他テーブル127は、その他テーブル(OF)と、その他テーブル(Legacy)を含む。
【0113】
TCAM(OF)、L2テーブル(OF)、L3テーブル(OF)、その他テーブル(OF)は、オープンフローテーブルを構成する。
【0114】
TCAM(Legacy)、L2テーブル(Legacy)、L3テーブル(Legacy)、その他テーブル(Legacy)は、レガシーテーブルを構成する。
【0115】
スイッチ102上のTCAM124、L2テーブル125、L3テーブル126、及びその他テーブル127は、通常の場合、物理的には1つのテーブルである。
【0116】
本発明におけるスイッチ102では、この物理的に1つのテーブル(TCAM124、L2テーブル125、L3テーブル126、及びその他テーブル127)を、オープンフローテーブルを構成するテーブル群113と、レガシーテーブルを構成するテーブル群128に論理的に分ける機能を有する。すなわち、スイッチ102は、物理的に1つのテーブル(TCAM124、L2テーブル125、L3テーブル126、及びその他テーブル127)を、各テーブルに定義された条件及び処理内容に応じて論理的に統合してオープンフローテーブル(テーブル群113)とレガシーテーブル(テーブル群128)を構築する。
【0117】
オープンフローテーブルを構成するテーブル群113は、TCAM(OF)、L2テーブル(OF)、L3テーブル(OF)、その他テーブル(OF)を含む。
【0118】
レガシーテーブルを構成するテーブル群128は、TCAM(Legacy)、L2テーブル(Legacy)、L3テーブル(Legacy)、その他テーブル(Legacy)を含む。
【0119】
[オープンフローテーブル制御の概要]
以下に、図4のコントローラからのオープンフローテーブル制御の概要について説明する。
【0120】
コントローラ101は、プロトコル制御部103を通じて、スイッチ102のオープンフローテーブルの制御を行うことが可能である。
【0121】
スイッチ上のTCAM124、L2テーブル125、L3テーブル126、その他テーブル127は、通常の場合、物理的には各々1つのテーブルである。
【0122】
本発明におけるスイッチでは、これらのテーブルのリソースの一部をオープンフロー用に切り出して使用し、オープンフローテーブルを構成するテーブル群113とレガシーテーブルを構成するテーブル群128を論理的に構築する機能を有する。すなわち、スイッチ102は、TCAM124、L2テーブル125、L3テーブル126、及びその他テーブル127を基に、論理的なオープンフローテーブル(テーブル群113)とレガシーテーブル(テーブル群128)を構築する。
【0123】
オープンフローテーブルを構成する各テーブルは、それぞれ実現できるオープンフロー機能が異なる。
【0124】
このため、コントローラ101は、「1:各テーブルで実現可能なオープンフロー機能はどのようなものか」、「2:制御するエントリはオープンフローテーブルを構成するどのテーブルのものか」を踏まえた上でオープンフローテーブル制御を行う必要がある。
【0125】
「1」については、「コントローラ側:予め各テーブルで実現可能な機能を入力(Input)しておいて、それ以外の制御を行おうとした場合にエラーを返す機構を持たせる」、「スイッチ側:コントローラからの制御命令について、対象となるテーブルが制御に対応する機能を有していない場合にエラーを返す機構を持たせる」といった対応がある。
【0126】
「2」については、「オープンフローテーブルにおける優先順位(Priority)(0−64k)の一定範囲ずつを各テーブルに割り当て、コントローラから制御を行う際はこの優先順位(Priority)の範囲を基に、使用するテーブルを判別する」、「オープンフローテーブルを構成する各テーブルにIDを持たせ、コントローラから制御を行う際はこのIDを基に、使用するテーブルを判別する」といった対応がある。
【0127】
[オープンフローテーブル制御の詳細(1)]
図5は、本発明におけるコントローラからのオープンフローテーブル制御の第1方式の例の詳細について説明するための図である。ここでは、優先順位(Priority)範囲でテーブル指定する場合について説明する。
【0128】
コントローラ101、スイッチ102、オープンフローテーブル管理部106、テーブル群113は、図1図2に表されている機構・機能と同一のものである。
【0129】
オープンフロー機能部105のオープンフローテーブル管理部106は、オープンフローテーブルを構成するテーブル群113の各々のテーブルに、優先順位(Priority)範囲を割り当てる。
【0130】
優先順位(Priority)範囲でテーブル指定する場合、各々のテーブルの優先順位(Priority)範囲は重複してはならない。また、優先順位(Priority)範囲の合計は、オープンフローで規定されている優先順位(Priority)範囲を越えてはならない。
【0131】
コントローラ101は、各テーブルに割り当てられた優先順位(Priority)範囲内の値でテーブルを指定する。
【0132】
オープンフロー機能部105のオープンフローテーブル管理部106は、コントローラ101から指定された優先順位(Priority)範囲内の値を基に、使用するテーブルを判別する。
【0133】
[オープンフローテーブル制御の詳細(2)]
図6は、本発明におけるコントローラからのオープンフローテーブル制御の第2方式の例の詳細について説明するための図である。ここでは、テーブルIDでテーブル指定する場合について説明する。
【0134】
コントローラ101、スイッチ102、オープンフローテーブル管理部106、テーブル群113は、図1図2に表されている機構・機能と同一のものである。
【0135】
オープンフロー機能部105のオープンフローテーブル管理部106は、オープンフローテーブルを構成するテーブル群113に、各々テーブルID129を割り当てる。
【0136】
テーブルIDでテーブル指定する場合、各々のテーブルIDは重複してはならない。一方、各テーブルで規定される優先順位(Priority)範囲は、重複しても問題ない。各テーブルはテーブルID129により別のテーブルとして識別され、各々のテーブルの優先順位(Priority)はオープンフロー処理解決部107により決定されるためである。
【0137】
コントローラ101は、各テーブルに割り当てられたテーブルID129でテーブルを指定する。
【0138】
オープンフロー機能部105のオープンフローテーブル管理部106は、コントローラ101から指定されたテーブルID129を基に、使用するテーブルを判別する。
【0139】
[パケット流入時の処理の動作例(1)]
図7A図7Bは、本発明におけるパケット流入時のスイッチシステムの第1の動作例である。である。簡単のため、動作に関連する機能ブロックのみ記載している。ステップS101〜ステップS107は、パケット流入からの一連の動作の流れを示す。
【0140】
(1)ステップS101
コントローラ101は、予めスイッチ102に対して、{Match条件:宛先IP=AA、Action:Drop}というTCAM(OF)エントリー(1)の登録を行う。スイッチ102は、テーブル群113のTCAM(OF)に、TCAM(OF)エントリー(1)の登録を行う。
【0141】
なお、「Match条件」は、L1〜L4までの任意のヘッダー情報の組合せにより定義される。また、「Action」は、Match条件に適合したパケットに対する中継/破棄、ヘッダー情報の書き換え等のアクションを定義したものである。
【0142】
(2)ステップS102
コントローラ101は、予めスイッチ102に対して、{Match条件:宛先IP=AA、Action:Port1から出力}というL3テーブル(OF)エントリー(1)と、{Match条件:宛先IP=BB、Action:Port2から出力}というL3テーブル(OF)エントリー(2)の登録を行う。スイッチ102は、テーブル群113のL3テーブル(OF)に、L3テーブル(OF)エントリ(1)及びL3テーブル(OF)エントリー(2)を登録する。
【0143】
(3)ステップS103
入力ポート104は、パケット流入時に、オープンフロー有効ポートに対して宛先IP=AAのパケットが流入した場合、オープンフロー機能部105に送信する。
【0144】
(4)ステップS104
オープンフロー機能部105は、オープンフロー有効ポートに対して宛先IP=AAのパケットが流入した場合、当該パケットを処理する。
【0145】
(5)ステップS105
まず、オープンフロー機能部105において、L2/L3/その他テーブル(OF)検索機能部115は、流入したパケットについて、L2/L3/その他テーブル(OF)での検索を行う。この検索において、当該パケットは、L3テーブル(OF)エントリー(1)にヒットする。
【0146】
(6)ステップS106
L2/L3/その他テーブル(OF)検索機能部115は、この検索結果を、オープンフロー処理解決部107に通知する。図7Bでは、オープンフロー処理解決部107と、TCAM(OF)検索機能部116は、1つの機能ブロック(TCAM(OF) Lookup & OpenFlow Action Resolver)として示す。
【0147】
(7)ステップS107
TCAM(OF)検索機能部116は、流入したパケットについて、TCAM(OF)での検索を行う。この検索において、当該パケットは、TCAM(OF)エントリー(1)が最初にヒットする。この時点でTCAM(OF)の検索処置は終了する。TCAM(OF)検索機能部116は、この検索結果を、オープンフロー処理解決部107に通知する。
【0148】
(8)ステップS108
オープンフロー処理解決部107は、L2/L3/その他テーブル(OF)検索機能部115とTCAM(OF)検索機能部116の各々から検索結果を受け取り、テーブル間の優先順位に従って、流入したパケットに対するアクションを決定する。ここでは、TCAM(OF)の優先順位が一番高い。そのため、オープンフロー処理解決部107は、TCAM(OF)エントリー(1)のアクション(Drop)を、流入したパケットに対するアクションとして決定し、決定したアクション(Drop)を、アクション機能部111に通知する。
【0149】
(9)ステップS109
アクション機能部111は、オープンフロー処理解決部107で決定されたアクション(Drop)を実行する。ここでは、アクション機能部111は、アクションが「Drop」であるため、パケットの出力を行わない。アクション機能部111は、流入したパケット及びこれと同一フローに属する以降のパケットを破棄する。
【0150】
[パケット流入時の処理の動作例(2)]
図8A図8Bは、本発明におけるパケット流入時のスイッチシステムの第2の動作例である。簡単のため、動作に関連する機能ブロックのみ記載している。ステップS201〜ステップS210は、パケット流入からの一連の動作の流れを示す。
【0151】
(1)ステップS201
コントローラ101は、予めスイッチ102に対して、{Match条件:宛先IP=AA、Action:Drop}というTCAM(OF)エントリー(1)の登録を行う。スイッチ102は、テーブル群113のTCAM(OF)に、TCAM(OF)エントリー(1)の登録を行う。
【0152】
(2)ステップS202
コントローラ101は、予めスイッチ102に対して、{Match条件:宛先IP=AA、Action:Port1から出力}というL3テーブル(OF)エントリー(1)と、{Match条件:宛先IP=BB、Action:Port2から出力}というL3テーブル(OF)エントリー(2)の登録を行う。スイッチ102は、テーブル群113のL3テーブル(OF)に、L3テーブル(OF)エントリ(1)及びL3テーブル(OF)エントリー(2)を登録する。
【0153】
(3)ステップS203
入力ポート104は、パケット流入時に、オープンフロー有効ポートに対して宛先IP=BBのパケットが流入した場合、オープンフロー機能部105に送信する。
【0154】
(4)ステップS204
オープンフロー機能部105は、オープンフロー有効ポートに対して宛先IP=BBのパケットが流入した場合、当該パケットを処理する。
【0155】
(5)ステップS205
まず、オープンフロー機能部105において、L2/L3/その他テーブル(OF)検索機能部115は、当該パケットについて、L2/L3/その他テーブル(OF)での検索を行う。この検索において、当該パケットは、L3テーブル(OF)エントリー(2)にヒットする。
【0156】
(6)ステップS206
L2/L3/その他テーブル(OF)検索機能部115は、この検索結果を、オープンフロー処理解決部107に通知する。図8Bでは、オープンフロー処理解決部107と、TCAM(OF)検索機能部116は、1つの機能ブロック(TCAM(OF) Lookup & OpenFlow Action Resolver)として示す。
【0157】
(7)ステップS207
TCAM(OF)検索機能部116は、流入したパケットについて、TCAM(OF)での検索を行う。しかし、流入したパケットは、宛先IP=BBのパケットであるため、TCAM(OF)にはヒットするエントリがない。この時点でTCAM(OF)の検索処置は終了する。TCAM(OF)検索機能部116は、この検索結果を、オープンフロー処理解決部107に通知する。この時点でTCAM(OF)の検索処置は終了する。TCAM(OF)検索機能部116は、この検索結果を、オープンフロー処理解決部107に通知する。
【0158】
(8)ステップS208
オープンフロー処理解決部107は、L2/L3/その他テーブル(OF)検索機能部115とTCAM(OF)検索機能部116の各々から検索結果を受け取り、テーブル間の優先順位に従って、流入したパケットに対するアクションを決定する。ここでは、対象となるエントリがL3テーブル(OF)エントリー(2)しか存在しない。そのため、オープンフロー処理解決部107は、L3テーブル(OF)エントリー(2)のアクション(Port2から出力)を、流入したパケットに対するアクションとして決定し、決定したアクション(Port2から出力)を、アクション機能部111に通知する。
【0159】
(9)ステップS209
アクション機能部111は、オープンフロー処理解決部107で決定されたアクション(Port2から出力)を実行する。
【0160】
(10)ステップS210
アクション機能部111は、アクション機能部111は、流入したパケット及びこれと同一フローに属する以降のパケットを、Port2を持つ出力ポート112に出力する。
【0161】
(11)ステップS211
出力ポート112は、アクション機能部111から出力されたパケットを、Port2から出力する。
【0162】
(12)ステップS212
Port2から出力されたパケットは、ネットワーク上に流出し、宛先IP=BBに向けて伝送される。
【0163】
なお、図8A図8Bにおいて、L2/L3/その他テーブル(OF)検索機能部115は、流入したパケットについて、複数のテーブルにヒットするエントリがある場合は、ヒットした全てのエントリを検索結果としてオープンフロー処理解決部107に通知する。オープンフロー処理解決部107は、優先順位が一番高いTCAM(OF)にヒットするエントリが存在しない場合、L2/L3/その他テーブル(OF)検索機能部115の検索結果の中で優先順位が一番高いテーブルにヒットするエントリを採用する。
【0164】
また、図8A図8Bにおいて、L2/L3/その他テーブル(OF)検索機能部115は、流入したパケットについて、複数のテーブルにヒットするエントリがある場合は、テーブル間優先順位117に従い、これらのテーブルのうち優先順位が一番高いテーブルにヒットするエントリを検索結果としてオープンフロー処理解決部107に通知するようにしても良い。
【0165】
[オープンフローテーブル制御例(1)]
図9は、優先順位(Priority)範囲でテーブル指定する場合におけるコントローラからのオープンフローテーブル制御の第1方式の例である。
【0166】
登録情報132は、コントローラ101からスイッチ102のオープンフローテーブル管理部106への登録情報である。登録結果133は、オープンフローテーブルを構成するテーブル群113への登録結果である。
【0167】
オープンフローテーブルを構成するテーブル群113を1つのテーブルに見立てた場合、スイッチ102は、優先順位(Priority)により期待するテーブルへの制御を行う。
【0168】
(1)ステップS301
コントローラ101は、スイッチ102に対して、{優先順位(Priority):50001、Match条件:XXXX、Action:YYYY}というエントリの登録を行う。
【0169】
(2)ステップS302
スイッチ102は、コントローラ101からエントリが登録された場合、このエントリの優先順位(Priority)に該当するテーブルであるL2テーブル(OF)を選択し、このL2テーブル(OF)に該当エントリを登録する。
【0170】
[オープンフローテーブル制御例(2)]
図10は、テーブルIDでテーブル指定する場合におけるコントローラからのオープンフローテーブル制御の第2方式の例である。
【0171】
登録情報134は、コントローラからのオープンフローテーブルへの登録情報である。登録結果135は、オープンフローテーブルを構成するテーブル群への登録結果である。
【0172】
オープンフローテーブルを構成するテーブル群の各テーブルを、それぞれ別のオープンフローテーブルに見立てた場合、スイッチ102は、テーブルIDにより期待するテーブルへの制御を行う。
【0173】
(1)ステップS401
コントローラ101は、スイッチ102に対して、{テーブルID:#2、優先順位(Priority):1、Match条件:XXXX、Action:YYYY}というエントリの登録を行う。
【0174】
(2)ステップS402
スイッチ102は、コントローラ101からエントリが登録された場合、このエントリのテーブルIDに該当するテーブルであるL2テーブル(OF)を選択し、このL2テーブル(OF)に該当エントリを登録する。
【0175】
[第1実施形態の特徴]
本実施形態によれば、オープンフロー処理解決部により複数のテーブル間のリソースを統合し、かつ、各テーブルの優先順位(Priority)を比較してアクション(Action)解決を行うことができる。
【0176】
従って、スイッチの複数のテーブルのリソースを用いて大容量のオープンフローテーブルを構築することができる。これにより、スイッチにより大量のフローを制御することが可能となる。
【0177】
また、本実施形態によれば、オープンフローテーブルを1つの大容量のオープンフローテーブルとして使用する場合における「優先順位(Priority)範囲」や、オープンフローテーブルを構成するテーブル群の各テーブルを複数の異なるオープンフローテーブルとして使用する場合における「テーブルID」を用いて、オープンフローテーブルを構成する各テーブルを識別することができる。
【0178】
従って、スイッチの複数のテーブルから構成されるオープンフローテーブルを1つの大容量のオープンフローテーブル、もしくは複数の異なるオープンフローテーブルとして使用することができる。これにより、複数のテーブルから構成されるオープンフローテーブルを柔軟に制御することが可能となる。
【0179】
<第2実施形態>
以下に、本発明の第2実施形態について添付図面を参照して説明する。
第2実施形態は、TCAM(OF)検索機能部にオープンフロー処理解決部を含めない場合の、オープンフロー処理解決部の実施例である。
【0180】
[実施例1]
図11は、「TCAM(OF)検索機能部116」→「L2/L3その他テーブル(OF)検索機能部115」の順に検索が実施される場合のオープンフロー機能部105の詳細について説明するための図である。
【0181】
オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、アクション機能部111、テーブル群113、検索機能部114、L2/L3/その他テーブル(OF)検索機能部115、TCAM(OF)検索機能部116は、図2に表されている機構・機能と同一のものである。
【0182】
図11を参照して、「TCAM(OF)検索機能部116」→「L2/L3その他テーブル(OF)検索機能部115」の順に検索が実施される場合のオープンフロー機能部105の動作について説明する。
【0183】
図11は、オープンフローテーブル管理部106の検索機能部114において、TCAM(OF)検索機能部116が最後に検索を行わない事例である。
【0184】
図11では、「TCAM(OF)検索機能部116」→「L2/L3その他テーブル(OF)検索機能部115」の順に検索が実施されるため、TCAM(OF)検索機能部116にオープンフロー処理解決部107を含めることができない。
【0185】
[実施例2]
図12は、L2/L3その他テーブル(OF)検索機能部115とTCAM(OF)検索機能部116の検索が同時に実施される場合のオープンフロー機能部105の詳細について説明するための図である。
【0186】
オープンフロー機能部105、オープンフローテーブル管理部106、オープンフロー処理解決部107、アクション機能部111、テーブル群113、検索機能部114、L2/L3/その他テーブル(OF)検索機能部115、TCAM(OF)検索機能部116は、図2に表されている機構・機能と同一のものである。
【0187】
図12を参照して、L2/L3その他テーブル(OF)検索機能部115とTCAM(OF)検索機能部116の検索が同時に実施される場合のオープンフロー機能部105の動作について説明する。
【0188】
図12は、オープンフローテーブル管理部106の検索機能部114において、TCAM(OF)検索機能部116が最後に行われない事例である。
【0189】
L2/L3その他テーブル(OF)検索機能部115とTCAM(OF)検索機能部116の検索が同時に実施されるため、TCAM(OF)検索機能部116にオープンフロー処理解決部107を含めることができない。
【0190】
[実施例3]
図13は、TCAM(OF)検索機能部116にオープンフロー処理解決部107を含められない場合におけるオープンフロー処理解決部107の実施例である。
【0191】
オープンフロー処理解決部107、アクション機能部111は、図2に表されている機構・機能と同一のものである。
【0192】
オープンフロー処理解決部107は、検索受信部(Lookup Receiver)130と、処理解決部(Action Resolver)131を備える。
【0193】
検索受信部(Lookup Receiver)130は、各テーブルの検索結果を受け取る。処理解決部(Action Resolver)131は、各テーブルの検索結果を基に、オープンフロー処理を決定する。
【0194】
図13を参照して、TCAM(OF)検索機能部116にオープンフロー処理解決部107を含められない場合におけるオープンフロー処理解決部107の動作について説明する。
【0195】
TCAM(OF)検索機能部116にオープンフロー処理解決部107を含めることができない場合、スイッチ102に、図13で示されるようなオープンフロー処理解決部107を搭載する。
【0196】
オープンフロー処理解決部107において、検索受信部(Lookup Receiver)130は、各テーブルの検索結果を受け取る。処理解決部(Action Resolver)131は、各テーブルの検索結果、及び予め設定されたテーブル優先順位(Priority)によりオープンフローのアクションを決定し、決定されたアクションをアクション機能部111に通知する。
【0197】
[他の実施例]
なお、上記の各実施形態において、スイッチ102はオープンフロースイッチであるものとして説明しているが、オープンフロースイッチは例示に過ぎない。実際には、オープンフロースイッチに限定されるものではなく、オープンフロースイッチと同様の機構・機能を有するスイッチに対しても、本発明を適用することは可能である。
【0198】
<本発明の特徴>
本発明は、複数のテーブルの集約によるオープンフローテーブルの拡張方法に関する。
【0199】
本発明は、スイッチの単一テーブル(主にTCAM)で実現されるオープンフローテーブルについて、スイッチの複数のテーブルを用いてオープンフローテーブルを構築することによりオープンフローテーブルフローエントリ数の拡張を実現するものである。
【0200】
なお、オープンフローでは、これまで同一のNW機器(ルータ/スイッチ等)に実装されていた転送機能、制御機能を分離し、転送機能はNW機器に残し、制御機能は外出しのコントローラに任せる。コントローラは、遠隔からオープンフロープロトコルを用いてNW機器のオープンフローテーブルを操作することによりNW装置の挙動を制御する。オープンフローテーブルは、{Match条件、Action、統計情報}の3種の情報からなるフローエントリ群から構成される。オープンフローでは、この適合(Match)条件から制御対象とするフローを定義し、このフローを単位としてアクション(Action)や統計情報の取得を行うことができる。
【0201】
オープンフローの{Match条件、Action、統計情報}の概要は、以下の通りである。
【0202】
[Match条件]
「Ingress port(入力ポート)」/「Src MAC(送信元MACアドレス)」/「Dst MAC(宛先MACアドレス)」/「Ether type(タイプ・フィールド)」/「VLAN ID(仮想LAN識別情報)」/「VLAN Priority(仮想LAN優先順位)」/「Src IP(送信元IPアドレス)」/「Dst IP(宛先IPアドレス)」/「IP protocol(IPプロトコル番号)」/「IP ToS(upper 6bit)」/「Src Port(送信元ポート番号)」/「Dst Port(宛先ポート番号)」
【0203】
[Action]
「Forward(ある物理ポートから出力)」/「All(入力ポート以外全てから出力)」/「Controller(コントローラ向けに出力)」/「Local(自装置のローカルスタック宛に出力)」/「テーブル(オープンフローテーブルの内容に従って出力)」/「In_port(入力ポートから出力)」/「Normal(レガシーテーブルの内容を用いて出力)」/「Flood(入力ポート、及びSpanning Treeのブロックポート以外全てから出力)」/「Drop(パケットを破棄)」/「Modify−Field(パケットのヘッダー情報を書き換え)」
【0204】
例えば、「Modify−Field」の場合は、「VLAN ID」、「Vlan 優先順位(Priority)」、「Src MAC」、「Dst MAC」、「Src IP」、「Dst IP」、「IP ToS」、「Src Port」、「Dst Port」を書き換え可能である。
【0205】
[統計情報]
「テーブル単位」、「フロー単位」、「物理ポート単位」、「キュー(Queue)単位」での各種統計情報。
【0206】
本発明は、スイッチのテーブル(主にTCAM)の容量自体を増やすことなく、スイッチの複数のテーブルを用いてオープンフローテーブルを構築することにより、装置としてのオープンフローテーブル合計フローエントリ数の拡張を実現するものである。すなわち、スイッチ内部で複数のテーブルを使用して、コントローラからこれを大容量オープンフローテーブルとして用いることを可能とした。
【0207】
具体的には、各テーブルの機能(Match条件/Action)差分を吸収してオープンフローテーブルとしての統合を実現した。なお、スイッチの複数のテーブルは、それぞれ本来の用途(例えば、L2テーブルであればL2中継、L3テーブルであればL3中継)があるため、全てのリソースを使用するのではなく、その一部を切り出す形で使用する。
【0208】
以上のように、本発明の特徴は、「複数のテーブルのMatch条件/Action差分を吸収して、オープンフローテーブルとして統合すること」と、「その際の具体的なアクション決定方法を提供すること」である。
【0209】
本発明では、スイッチの複数のテーブルリソースの一部をオープンフローテーブルとして使用する。
【0210】
また、本発明では、スイッチの各テーブルを、実現可能な機能(Match条件/Action)に応じて「機能制限付きのオープンフローテーブルリソース」として取り扱っている。
【0211】
また、本発明では、オープンフロー処理解決部により、各テーブルリソースの機能差分(Match条件/Action)を吸収して、オープンフローテーブルリソースとして統合している。
【0212】
また、本発明では、オープンフロー処理解決部において、TCAMを含むテーブル間の優先順位(Priority)によりアクション決定を実現している。
【0213】
なお、TCAM(OF)検索が最後に行われるスイッチにおいては、オープンフロー処理解決部をTCAM(OF)検索機能部に含める形で実現している。
【0214】
更に、本発明では、複数のテーブルから構成されるオープンフローテーブルを、コントローラから柔軟に制御する。
【0215】
また、本発明では、複数のテーブルを1つのオープンフローテーブルとして使用する場合、優先順位(Priority)の範囲でのテーブル識別を実現している。
【0216】
また、本発明では、複数テーブルを個別のオープンフローテーブルとして使用する場合、テーブルIDでのテーブル識別を実現している。
【0217】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【0218】
なお、本出願は、日本出願番号2010−200690に基づく優先権を主張するものであり、日本出願番号2010−200690における開示内容は引用により本出願に組み込まれる。
図1
図2
図3
図4
図5
図6
図7A
図7B
図8A
図8B
図9
図10
図11
図12
図13