(57)【要約】【課題】スイッチ装置が使用するエントリ数を低減させる。【解決手段】送受信装置３０と複数のスイッチ１０とネットワーク制御装置２０とを有するネットワークシステムであって、前記スイッチ１０は、第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、当該ネットワークシステム１は、前記第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、前記第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含み、前記複数のスイッチ１０のうち、前記第１のパケット伝送制御領域に含まれるスイッチ１０は、前記ネットワーク制御装置２０から通知される複数の第１のルール情報を記憶する第１の記憶部を備え、入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なう。【選択図】図１
2015039144.tif 000002
【特許請求の範囲】
【請求項１】
送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムであって、
前記スイッチは、
第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、
当該ネットワークシステムは、
前記第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、
前記第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含み、
前記複数のスイッチのうち、前記第１のパケット伝送制御領域に含まれるスイッチは、
前記ネットワーク制御装置から通知される複数の第１のルール情報を記憶する第１の記憶部を前記第１のパケット伝送制御部に備え、
入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、ネットワークシステム。
【請求項２】
前記複数のスイッチのうち、前記第２のパケット伝送制御領域に含まれるスイッチは、
前記ネットワーク制御装置から通知される複数の第２のルール情報を記憶する第２の記憶部を前記第２のパケット伝送制御部に備え、
入力パケットの宛先情報と、前記複数の第２のルール情報のうちいずれかとが、対応するかの検索を行ない、対応する第２のルール情報に従って前記入力パケットの伝送を行なう、
ことを特徴とする、請求項１に記載のネットワークシステム。
【請求項３】
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されている場合には、前記第２のパケット伝送制御部は、前記第２のルール情報に従って前記入力パケットの伝送を制御し、
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されていない場合には、前記第１のパケット伝送制御部は、前記入力パケットに対応する第１のルール情報に従って前記入力パケットの伝送を制御することを特徴とする、請求項２に記載のネットワークシステム。
【請求項４】
送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムの制御方法であって、
当該ネットワークシステムは、
第１のパケット伝送制御手法に従う第１のパケット伝送制御領域と、
第２のパケット伝送制御手法に従う第２のパケット伝送制御領域とを含み、
前記スイッチは、
第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、
前記第１のパケット伝送制御領域においては、
前記第１のパケット伝送制御部に備えられる第１の記憶部に、前記ネットワーク制御装置から通知される複数の第１のルール情報を記憶させ、
入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、ネットワークシステムの制御方法。
【請求項５】
送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムにおいて、前記複数のスイッチを制御するネットワーク制御装置であって、
前記スイッチは、
第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、
前記ネットワークシステムは、
前記第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、
前記第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含み、
当該ネットワーク制御装置は、前記第１のパケット伝送制御領域においては、
前記第１のパケット伝送制御部に対して、複数の第１のルール情報を通知し、
前記第１のパケット伝送制御部に備えられる第１の記憶部に、前記複数の第１のルール情報を記憶させ、
前記第１のパケット伝送制御部に対して、入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用させ、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なわせる、
ことを特徴とする、ネットワーク制御装置。
【請求項６】
送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムにおいて、前記複数のスイッチを制御するネットワーク制御装置の制御プログラムであって、
前記スイッチは、
第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、
前記ネットワークシステムは、
前記第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、
前記第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含み、
当該ネットワーク制御装置に備えられるコンピュータに、
前記第１のパケット伝送制御領域においては、
前記第１のパケット伝送制御部に対して、複数の第１のルール情報を通知し、
前記第１のパケット伝送制御部に備えられる第１の記憶部に、前記複数の第１のルール情報を記憶させ、
前記第１のパケット伝送制御部に対して、入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用させ、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なわせる、
処理を実行させることを特徴とする、ネットワーク制御装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステム，その制御方法，ネットワーク制御装置及びその制御プログラムに関する。
【背景技術】
【０００２】
集中管理コントローラにより、マルチレイヤフロー制御を行なう統一的な管理機構としてOpenFlowがある。OpenFlowでは、パケット・フィールドとフローを定義したルールとをワイルドカードで参照し、フローを識別することにより、フローレベルの制御が可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開２０１０／１０３９０９号パンフレット
【特許文献２】特開２０１２−０９００５８号公報
【特許文献３】特開２０１１−１８８４３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したフロー制御においては、フローの識別に用いるAccess Control List（ＡＣＬ）のエントリ数が不足するという課題がある。
図２９は、従来例としてのネットワークシステムの構成を模式的に示す図である。
図２９に例示するネットワークシステム５は、１２個のスイッチ５０及び８つのサーバ装置６０を備える。
【０００５】
各サーバ装置６０は１又は複数のスイッチ５０を介して他のサーバ装置６０と互いに通信可能に接続されており、ネットワークシステム５はFat Tree構成を形成している。また、各サーバ装置６０は、仮想環境６０ａを構成する。そして、各サーバ装置６０が備える図示しないメモリ上には８つのVirtual Machine（ＶＭ；仮想マシン）６１が展開され、展開されたＶＭ６１は各サーバ装置６０が備える図示しないCentral Processing Unit（ＣＰＵ）上で実行される。
【０００６】
ここで、ネットワーク内のホスト（サーバ装置６０）の数をhとし、各ホスト内のＶＭ６１の数をvとすると、ネットワーク内のＶＭ６１の数はh*v=64で求められる。更に、ネットワーク上で発生するフローの数は、
t=(v*((h-1)*v))*h=h*(h-1)*v*v
で求められる。
【０００７】
そして、図２９に示すようなh=8，v=8のネットワークシステム５においてはＶＭ６１の数はh*v=64であり、フローの数は上記式によりt=3584と求められる。
すなわち、高々64個のＶＭ６１同士の通信で3584のフローが必要となる。一般的に運用されるネットワークシステムは、図２９に示すサーバ装置６０（ＶＭ６１）より多くのサーバ装置（ＶＭ）を備えるものがあり、フローの数は更に多くなる。
【０００８】
図３０は、従来例としてのスイッチの仕様を示す図である。
OpenFlowにおけるフロー定義のルールは、スイッチが備えるTernary Content Addressable Memory（ＴＣＡＭ）に実装される。
しかしながら、ＴＣＡＭは、実装面積や消費電力が大きいため、ＡＣＬのエントリ数（フロー登録数）が少ない。
【０００９】
図３０に例示するように、従来のスイッチ（機器１〜機器４）は、1k〜3k程度しかＡＣＬのエントリを備えていない。
図２９を用いて上述したように、高々64個のＶＭ６１を備えるネットワークシステム５においては、3584のフローが必要となり、従来のコモディティスイッチではＡＣＬのエントリ数が不足する。そのため、OpenFlowで管理できるネットワークの規模が制限されるという課題がある。
【００１０】
１つの側面では、本発明は、スイッチが使用するエントリ数を低減させることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１１】
このため、このネットワークシステムは、送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムであって、前記スイッチは、第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、当該ネットワークシステムは、前記第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、前記第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含み、前記複数のスイッチのうち、前記第１のパケット伝送制御領域に含まれるスイッチは、前記ネットワーク制御装置から通知される複数の第１のルール情報を記憶する第１の記憶部を前記第１のパケット伝送制御部に備え、入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なう。
【発明の効果】
【００１２】
開示のネットワークシステムによれば、スイッチが使用するエントリ数を低減させることができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態の一例としてのネットワークシステムの機能構成を模式的に示す図である。
【図２】実施形態の一例としてのネットワークシステムが備えるスイッチの機能構成を模式的に示す図である。
【図３】実施形態の一例としてのネットワークシステムが用いるOpenFlowを説明する図である。
【図４】実施形態の一例としてのネットワークシステムが用いるOpenFlowのフロー定義を示す図である。
【図５】実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。
【図６】実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。
【図７】（ａ）は実施形態の一例としてのネットワークシステムが用いるＡＣＬベースのフロー定義のRuleフィールドを示す図であり、（ｂ）はそのActionフィールドを示す図である。
【図８】（ａ）は実施形態の一例としてのネットワークシステムが用いるＦＤＢベースのフロー定義のRuleフィールドを示す図であり、（ｂ）はそのActionフィールドを示す図である。
【図９】（ａ）〜（ｄ）は、実施形態の一例としてのネットワークシステムにおけるＡＣＬベースのフロー制御のマッチングを例示する図である。
【図１０】実施形態の一例としてのネットワークシステムが用いるＶＸＬＡＮを説明する図である。
【図１１】（ａ）は実施形態の一例としてのネットワークシステムが用いるＶＸＬＡＮパケットの概略を示す図であり、（ｂ）はその詳細を示す図である。
【図１２】従来例としてのネットワークシステムが用いるＶＸＬＡＮのトラフィック特性を説明する図である。
【図１３】実施形態の一例としてのネットワークシステムにおけるマルチパスの分散を説明する図である。
【図１４】実施形態の一例としてのネットワークシステムのBack to Back構成におけるフロー制御を説明する図である。
【図１５】実施形態の一例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
【図１６】（ａ）〜（ｃ）は、実施形態の一例としてのネットワークシステムにおけるハッシュ計算を説明する図である。
【図１７】実施形態の一例としてのネットワークシステムが備えるコントローラにおけるフローリストの設定処理を示すフローチャートである。
【図１８】実施形態の一例としてのネットワークシステムにおけるフローリストの作成処理に用いるアルゴリズムを例示する図である。
【図１９】実施形態の一例としてのネットワークシステムが備えるスイッチにおけるフローリストの設定処理を示すフローチャートである。
【図２０】実施形態の一例としてのネットワークシステムが備えるスイッチにおけるＡＣＬテーブルの設定処理を示すフローチャートである。
【図２１】実施形態の一例としてのネットワークシステムが備えるスイッチにおけるＦＤＢテーブルの設定処理を示すフローチャートである。
【図２２】（ａ）は実施形態の一例としてのネットワークシステムが用いるOpenFlowテーブルを模式的に示す図であり、（ｂ）はそのコモディティスイッチを模式的に示す図である。
【図２３】実施形態の一例としてのネットワークシステムのBack to Back構成を例示する図である。
【図２４】実施形態の一例としてのネットワークシステムのFat Tree構成を例示する図である。
【図２５】従来のネットワークシステムと本実施形態の一例におけるネットワークシステムとにおける使用エントリ数を示す図である。
【図２６】実施形態の第１変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
【図２７】実施形態の第２変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
【図２８】従来のネットワークシステムと本実施形態の第１変形例及び第２変形例におけるネットワークシステムとにおける使用エントリ数を示す図である。
【図２９】従来例としてのネットワークシステムの構成を模式的に示す図である
【図３０】従来例としてのスイッチの仕様を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照してネットワークシステム，その制御方法，ネットワーク制御装置及びその制御プログラムに係る一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００１５】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔Ａ〕実施形態の一例
〔Ａ−１〕システム構成
図１は、実施形態の一例としてのネットワークシステムの機能構成を模式的に示す図である。
【００１６】
本実施形態の一例としてのネットワークシステム１は、図１に示すようにスイッチ１０−１，１０−２、コントローラ（ネットワーク制御装置）２０及びサーバ装置（送受信装置）３０−１〜３０−４を備える。各サーバ装置３０−１〜３０−４は、１つ又は２つのスイッチ１０−１，１０−２を介して、他のサーバ装置３０−１〜３０−４と互いに通信可能に接続されている。例えば、サーバ装置３０−１は、スイッチ１０−１を介してサーバ装置３０−２と互いに通信可能に接続されている。また、サーバ装置３０−１は、スイッチ１０−１，１０−２を介してサーバ装置３０−３と互いに通信可能に接続されている。
【００１７】
以下、スイッチを示す符号としては、複数のスイッチのうち１つを特定する必要があるときには符号１０−１，１０−２を用いるが、任意のスイッチを指すときには符号１０を用いる。また、以下、サーバ装置を示す符号としては、複数のサーバ装置のうち１つを特定する必要があるときには符号３０−１〜３０−４を用いるが、任意のサーバ装置を指すときには符号３０を用いる。
【００１８】
サーバ装置３０は、例えば、サーバ機能を備えたコンピュータである。図１に示す例では、ネットワークシステム１が４つのサーバ装置３０−１〜３０−４を備えているが、３つ以下又は５つ以上のサーバ装置３０を備えることとしても良い。
コントローラ２０は、複数のスイッチ１０を制御し、各スイッチ１０に対してフロー制御を行なうための設定を行なう。コントローラ２０は、図１に示すようにＣＰＵ２１，メモリ２２及び記憶装置２３を備える。
【００１９】
記憶装置２３は、データを読み書き可能に格納する既知の装置であり、例えば、Hard Disk Drive（ＨＤＤ）やSolid State Drive（ＳＳＤ）である。本実施形態の一例においては、記憶装置２３は、例えば、フローリスト１００（設定データ；図３等を用いて後述）を格納する。
メモリ２２は、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。メモリ２２のＲＯＭには、Basic Input/Output System（ＢＩＯＳ）等のプログラムが書き込まれている。メモリ２２上のソフトウェアプログラムは、ＣＰＵ２１に適宜読み込まれて実行される。また、メモリ２２のＲＡＭは、一次記録メモリあるいはワーキングメモリとして利用される。
【００２０】
ＣＰＵ２１は、種々の制御や演算を行なう処理装置であり、メモリ２２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ２１は、図１に示すように、送信部２１１として機能する。
なお、この送信部２１１としての機能を実現するためのプログラム（制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【００２１】
送信部２１１としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ２２）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ２１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
送信部２１１は、複数のスイッチ１０に対して、複数のパケット伝送制御手法に従った、パケット伝送のためのルール情報を送信する。具体的には、送信部２１１は、記憶装置２３に格納されているフローリスト１００を読み出し、読み出したフローリスト１００に含まれるルール情報を対象のスイッチ１０へ送信する。
【００２２】
図２は、実施形態の一例としてのネットワークシステムが備えるスイッチの機能構成を模式的に示す図である。
スイッチ１０は、各サーバ装置３０間で送受信されるパケットを伝送する。スイッチ１０は、図２に示すようにＣＰＵ１１，スイッチングモジュール１２，受信ポート１４−１〜１４−Ｎ（以下、Ｎは１以上の整数），送信ポート１５−１〜１５−Ｎ及び管理用ポート１６を備える。
【００２３】
以下、受信ポートを示す符号としては、複数の受信ポートのうち１つを特定する必要があるときには符号１４−１〜１４−Ｎを用いるが、任意の受信ポートを指すときには符号１４を用いる。また、以下、送信ポートを示す符号としては、複数の送信ポートのうち１つを特定する必要があるときには符号１５−１〜１５−Ｎを用いるが、任意の送信ポートを指すときには符号１５を用いる。
【００２４】
受信ポート１４は、他の装置から送信されたパケットを受信するためのインタフェースである。具体的には、受信ポート１４は、他のスイッチ１０又はサーバ装置３０と通信可能に接続され、他のスイッチ１０又はサーバ装置３０から送信されたパケットを受信する。例えば、図１に示したスイッチ１０−１が備える受信ポート１４は、スイッチ１０−２及びサーバ装置３０−１，３０−２と通信可能に接続されている。
【００２５】
送信ポート１５は、他の装置へパケットを送信するためのインタフェースである。具体的には、送信ポート１５は、他のスイッチ１０又はサーバ装置３０と通信可能に接続され、他のスイッチ１０又はサーバ装置３０へパケットを送信する。例えば、図１に示したスイッチ１０−１が備える送信ポート１４は、スイッチ１０−２及びサーバ装置３０−１，３０−２と通信可能に接続されている。
【００２６】
管理用ポート１６は、コントローラ２０と通信可能に接続され、コントローラ２０から送信されたデータを受信し、又、コントローラ２０へのデータを送信するインタフェースである。本実施形態の一例においては、管理用ポート１６は、コントローラ２０の送信部２１１から送信されたフローリスト１００を受信する。また、管理用ポート１６は、受信したフローリスト１００に基づいて行なったスイッチ１０の設定結果をコントローラ２０へ送信する。
【００２７】
ＣＰＵ１１は、種々の制御や演算を行なう処理装置であり、図示しないメモリ又はスイッチングモジュール１２が備える後述するメモリ１３０に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ１１は、図２に示すように、設定部１１０（ＡＣＬ設定部１１１及びＦＤＢ設定部１１２）として機能する。
なお、この設定部１１０（ＡＣＬ設定部１１１及びＦＤＢ設定部１１２）としての機能を実現するためのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【００２８】
設定部１１０（ＡＣＬ設定部１１１及びＦＤＢ設定部１１２）としての機能を実現する際には、内部記憶装置（本実施形態では図示しないメモリ又はスイッチングモジュール１３０が備える後述するメモリ１３０）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００２９】
設定部１１０は、図２に示すようにＡＣＬ設定部１１１及びＦＤＢ設定部１１２として機能する。
ＡＣＬ設定部１１１は、ＡＣＬに従ったフロー制御に関するフローテーブルの設定を行なう。具体的には、ＡＣＬ設定部１１１は、コントローラ２０の送信部２１１から受信したフローリスト１００に基づき、複数のパケット伝送制御手法のうち、ＡＣＬに従ったパケットの伝送を制御するＡＣＬテーブル（第１のルール情報；図１４等を用いて後述）２００を登録する。
【００３０】
ＦＤＢ設定部１１２は、Forwarding Database（ＦＤＢ）に従ったフロー制御に関するフローテーブルの設定を行なう。具体的には、ＦＤＢ設定部１１２は、コントローラ２０の送信部２１１から受信したフローリスト１００に基づき、複数のパケット伝送制御手法のうち、ＡＣＬとは異なるＦＤＢに従ったパケットの伝送を制御するためのＦＤＢテーブル（第２のルール情報；図１４等を用いて後述）３００を登録する。
【００３１】
スイッチングモジュール１２は、図示しないスイッチング回路（例えば、クロスバースイッチ）を有し、入力されたパケット毎にその経路を自在に変更するものである。スイッチングモジュール１２は、図２に示すようにＴＣＡＭ１２０及びメモリ１３０を備え、又、ＡＣＬ制御部１２２及びＦＤＢ制御部１３２として機能する。
ＴＣＡＭ１２０は、キーで検索しデータにアクセスする通常のＣＡＭ（連想メモリ）に、マスク値を記憶する領域を付加した記憶装置である。ＴＣＡＭ１２０は、図２に示すようにＡＣＬ記憶部（第１の記憶部）１２１として機能する。
【００３２】
ＡＣＬ記憶部１２１は、ＡＣＬテーブル２００を格納する。すなわち、ＣＰＵ１１のＡＣＬ設定部１１１は、ＡＣＬテーブル２００をＡＣＬ記憶部１２１に格納する。
ＡＣＬ制御部１２２は、ＡＣＬに従ったフロー制御を行なう。具体的には、ＡＣＬ制御部１２２は、ＡＣＬ記憶部１２１に格納されているＡＣＬテーブル２００に従ってパケット伝送の制御を行なう。
【００３３】
メモリ１３０は、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。メモリ１３０は、図２に示すようにＦＤＢ記憶部（第２の記憶部）１３１として機能する。
ＦＤＢ記憶部１３１は、ＦＤＢテーブル３００を格納する。すなわち、ＣＰＵ１１のＦＤＢ設定部１１２は、ＦＤＢテーブル３００をＦＤＢ記憶部１３１に格納する。
【００３４】
ＦＤＢ制御部１３２は、ＦＤＢに従ったフロー制御を行なう。具体的には、ＦＤＢ制御部１３２は、ＦＤＢ記憶部１３１に格納されているＦＤＢテーブル３００に従ってパケット伝送の制御を行なう。
本実施形態の一例におけるスイッチ１０においては、ＡＣＬ設定部１１１，ＴＣＡＭ１２０及びＡＣＬ制御部１２２が第１のパケット伝送制御部として機能し、ＦＤＢ設定部１１２，メモリ１３０及びＦＤＢ制御部１３２が第２のパケット伝送制御部として機能する。
【００３５】
図３は、実施形態の一例としてのネットワークシステムが用いるOpenFlowを説明する図である。
本実施形態の一例におけるネットワークシステム１は、OpenFlowを用いてネットワーク制御を行なう。図３に例示するネットワークシステム１は、３つのスイッチ１０，コントローラ２０及び２つのサーバ装置３０を備える。
【００３６】
各サーバ装置３０は、３つのスイッチ１０を介して他のサーバ装置３０にパケットを伝送する（図３中の実線両矢印参照）。
コントローラ２０は、各スイッチ１０の管理を行なう。例えば、コントローラ２０は、各スイッチ１０間のパケット伝送に先立って、各スイッチ１０に対してRule，Action及びStatisticsの各フィールドが互いに関連付けられたフローリスト１００を設定する。
【００３７】
本ネットワークシステム１は、コントローラ２０によるフローリスト１００の設定により、マルチレイヤフロー（例えば、レイヤ２(L2)，レイヤ３(L3)及びレイヤ４(L4)）の制御を行なうことができ、統一的なフロー管理を実現できる。
図４は、実施形態の一例としてのネットワークシステムが用いるOpenFlowのフロー定義を示す図である。
【００３８】
本ネットワークシステム１が用いるOpenFlowのフロー定義は、Ruleフィールドに図示するような１２Tuple（タプル）のフィールドを含む。スイッチ１０は、Ruleフィールドに含まれる各フィールドの情報によって受信したパケットを識別する。
Actionフィールドには図示するようにForward packet to port(s)の情報が含まれる。スイッチ１０は、Actionフィールドに基づいて、Ruleフィールドにマッチしたパケットの処理（送信ポート１５の番号指定）を行なう。
【００３９】
Statisticsフィールドには図示するようにPacket及びbyte countersの情報が含まれる。
図５は、実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。
本実施形態の一例におけるネットワークシステム１は、図５に示すように、パケットの伝送経路を領域〔１〕（第１のパケット伝送制御領域）及び領域〔２〕（第２のパケット伝送制御領域）の２つの領域に分けてパケットの伝送を行なう。具体的には、本ネットワークシステム１は、領域〔１〕においてＡＣＬに従ったフロー制御を行ない、又、領域〔２〕においてＦＤＢに従ったフロー制御を行なう。言い換えれば、本ネットワークシステム１は、第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含む。また、領域〔１〕と領域〔２〕とは、図５に示すように折り返し点Ａで区切られている。
【００４０】
領域〔１〕は、スイッチ１０のサーバ装置３０側ポートに宛先が存在せず、サーバ装置３０から折り返し点Ａに向けたパケット伝送において、上流に向けて複数の経路が存在する領域である。言い換えれば、領域〔１〕は、送信元のサーバ装置３０から送信先のサーバ装置３０までのパケット伝送経路のうち、送信先のサーバ装置３０への経路が一意に決まる折り返し点Ａまでの領域である。
【００４１】
領域〔２〕は、スイッチ１０のサーバ装置３０側ポートに宛先が存在し、折り返し点Ａからサーバ装置３０へ向けたパケット伝送において、一意に経路が決定される領域である。言い換えれば、領域〔２〕は、送信元のサーバ装置３０から送信先のサーバ装置３０までのパケット伝送経路のうち、折り返し点Ａ以降の領域である。
図６は、実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。
【００４２】
図６に例示するネットワークシステム１は、４つのスイッチ１０（ＳＷ＃１〜＃４），４つのサーバ装置３０（Ｓｖｒ＃１〜＃４）及び図示しないコントローラ２０を備える。
以下、図６を参照しながら説明する際には、特定のスイッチ１０を指す場合には「ＳＷ＃１」，「ＳＷ＃２」，「ＳＷ＃３」又は「ＳＷ＃４」と表記する。また、以下、図６を参照しながら説明する際には、特定のサーバ装置３０を指す場合には「Ｓｖｒ＃１」，「Ｓｖｒ＃２」，「Ｓｖｒ＃３」又は「Ｓｖｒ＃４」と表記する。
【００４３】
図６に示す例おいては、Ｓｖｒ＃１がパケットを送信する送信元装置であり、Ｓｖｒ＃４がパケットを受信する送信先装置である。また、図６に示す例おいては、Ｓｖｒ＃１が送信したパケットは、ＳＷ＃１，ＳＷ＃３及びＳＷ＃２を介してＳｖｒ＃４へ送信されている（図６中の破線矢印参照）。
図６に示す例においては、Ｓｖｒ＃１からＳｖｒ＃４へパケットを送信する経路は２つ存在する。すなわち、Ｓｖｒ＃１からＳｖｒ＃４へ伝送されるパケットの経路は、図中の破線矢印で示すＳＷ＃３を経由する経路の他に、ＳＷ＃４を経由する経路が存在する。また、ＳＷ＃３からＳｖｒ＃４への経路は一意に決まり、ＳＷ＃４からＳｖｒ＃４への経路も一意に決まる。
【００４４】
このように、送信元装置からの伝送経路において、送信先装置への経路が一意に決定可能となる最初のスイッチ１０が、本実施形態の一例における折り返し点Ａとして定義される（図６に示す例においてはＳＷ＃３）。
そして、各スイッチ１０は、送信元装置から折り返し点Ａまでの領域〔１〕においてはＡＣＬに従ったフロー制御を行ない、折り返し点Ａから送信先装置までの領域〔２〕においてはＦＤＢに従ったフロー制御を行なう。図６に示す例においては、ＳＷ＃１のＡＣＬ制御部１２２はＡＣＬに従ったフロー制御を行ない、ＳＷ＃３及びＳＷ＃２のＦＤＢ制御部１３２はＦＤＢに従ったフロー制御を行なう。
【００４５】
言い換えれば、ＡＣＬ制御部１２２は、送信元装置から送信先装置までのパケット伝送経路のうち、送信先装置への経路が一意に決まらない折り返し点Ａまでの領域〔１〕においては、ＡＣＬに従ってパケットを伝送する。また、ＦＤＢ制御部１３２は、送信元装置から送信先装置までのパケット伝送経路のうち、折り返し点Ａ以降の領域〔２〕においては、ＦＤＢに従ってパケットを伝送する。
【００４６】
図６に図示されないコントローラ２０は、送信元装置から送信先装置までのパケット伝送経路のうち、折り返し点ＡまでをＡＣＬに従って経路選択的に、折り返し点Ａから送信先装置までをＦＤＢに従って経路決定的に、パケットを伝送できるよう各スイッチ１０のフローテーブルを構成する。
図７（ａ）は実施形態の一例としてのネットワークシステムが用いるＡＣＬベースのフロー定義のRuleフィールドを示す図であり、図７（ｂ）はそのActionフィールドを示す図である。
【００４７】
本実施形態の一例におけるネットワークシステム１は、領域〔１〕におけるＡＣＬベースのフロー制御を、ワイルドカードのマッチングによるWildcard Matching Table（ＷＭＴ）主導で行なう（詳細は図９を用いて後述）。
ＷＭＴの構築は、コントローラ２０がスイッチ１０に対して原則Proactiveに行なう（事前設定）。例えば、コントローラ２０の送信部２１１は、ネットワークシステム１の起動時やトポロジ情報が変更された際に事前設定を行なう。また、トポロジ情報の変更は、動的に検出しても良く、又、オペレータの操作によって検出しても良い。
【００４８】
フローの識別方法はネットワークの使用形態に依存する。例えば、Virtual eXtensible Local Area Network（ＶＸＬＡＮ）やStateless Transport Tunneling（ＳＴＴ）等のオーバーレイネットワークでは、図７（ａ）に示すRuleフィールドのL4 sportに注目してフローを識別する。また、テナント分離（マルチテナント）ではInternet Protocol（ＩＰ）アドレス、End-Host Mode（ＥＨＭ）ではVirtual Local Area Network（ＶＬＡＮ）、 Multi-Protocol Label Switching（ＭＰＬＳ）ではＭＰＬＳラベル等にそれぞれ注目してフローを識別する。
【００４９】
本実施形態の一例におけるネットワークシステム１は、注目するフィールドをネットワーク使用形態毎に選択し、注目するフィールドの値に基づいて折り返し点Ａに向けた経路を決定する。例えば、オーバーレイネットワークにおいては、図７（ｂ）のActionフィールドに示すように、L4 TCP/UDP src portに基づいてパケットを伝送するポート（パス）を選択する。
【００５０】
また、本実施形態の一例におけるネットワークシステム１は、図９を用いて後述するように、パスの数に応じたマスク値を注目するフィールドに適用することによって、ＡＣＬの消費エントリ数を削減することができる。
図８（ａ）は実施形態の一例としてのネットワークシステムが用いるＦＤＢベースのフロー定義のRuleフィールドを示す図であり、図８（ｂ）はそのActionフィールドを示す図である。
【００５１】
本実施形態の一例におけるネットワークシステム１は、領域〔２〕におけるＦＤＢベースのフロー制御を、Exactマッチング（宛先特定）によるExact Matching Table（ＥＭＴ）主導で行なう。
ＥＭＴの構築は、コントローラ２０がスイッチ１０に対して原則Proactiveに行なう（事前設定）。コントローラ２０による事前設定のタイミングは、ＷＭＴの構築と同じタイミングに加え、サーバ装置３０やサーバ装置３０が展開するＶＭの起動／停止／移動時等でも良い。このように、コントローラ２０の設定によってＥＭＴを構築する方式は、ネットワークシステム１におけるUnicast，Multicast及びBroadcastの全ての動作が対象になる。
【００５２】
なお、ＥＭＴの構築は、上述したコントローラ２０の設定によってＥＭＴを構築する方式に限定されるものではない。例えば、スイッチ１０がハード学習する方式でも良く、又、コントローラ２０の設定によってＥＭＴを構築する方式とスイッチ１０がハード学習する方式とを組み合わせたハイブリッド方式でも良い。なお、ハード学習する方式では、ループ回避、および、ＷＭＴ主導のフォワーディングとの競合を避けるため、サーバ側から折り返し点Ａに向かうパケット（折り返し点Ａからサーバへ向かう経路）のみを学習するようスイッチを構成するとともに、学習パケットがサーバから送出されるよう制御する必要がある。また、ハイブリッド方式はサーバに直接接続されるスイッチのみコントローラ２０から設定し、上流のスイッチを自動学習させることで、コントローラ２０のＥＭＴ構築のためのアルゴリズムを簡略化できるとともに、ハード学習で必要なサーバ制御を排除することができる。
【００５３】
本実施形態の一例におけるネットワークシステム１は、図８（ａ），（ｂ）に示すように、MAC dstやIP dstを用いて、ＦＤＢ（Memory Access Control（ＭＡＣ）テーブル，静的ＩＰルーティングテーブル）により、出力先を一意に決定する。すなわち、複数のスイッチのうち、第２のパケット伝送制御領域に含まれるスイッチは、入力パケットの宛先情報と、複数の第２のルール情報３００のうちいずれかとが、対応するかの検索を行ない、対応する第２のルール情報３００に従って入力パケットの伝送を行なう。図８（ｂ）に示す例においては、MAC dstに基づいてExactマッチングを行なっているが、これに限定されるものではない。例えば、MAC dstとVLAN IDとの組み合わせや、IP dstとVLAN IDとの組合せに基づいてマッチングを行なっても良い。なお、Exactマッチングにおいては、MAC dst，IP dst及びVLAN IDに対してビットマスクは適用しない。
【００５４】
本実施形態の一例におけるネットワークシステム１は、入力されたパケットの宛先を決定するためのフローテーブルの検索は、ＷＭＴよりＥＭＴの検索結果が優先されるよう構成される。つまり、ＥＭＴの検索で宛先が存在しない（ＤＬＦ：Destination Lookup Failure）場合のみ、ＷＭＴの検索結果が実行される。言い換えれば、入力パケットの宛先に対応する第２のルール情報３００が第２の記憶部１３１に格納されている場合には、第２のパケット伝送制御部は、第２のルール情報３００に従って入力パケットの伝送を制御する。また、入力パケットの宛先に対応する第２のルール情報３００が第２の記憶部１３１に格納されていない場合には、第１のパケット伝送制御部は、入力パケットに対応する第１のルール情報２００に従って入力パケットの伝送を制御する。
【００５５】
前述の通り、ＥＭＴ、および、ＷＭＴの設定は原則Proactiveに行なう（事前設定）が、ＥＭＴとＷＭＴの両方の検索に失敗した場合に、スイッチ１０がコントローラ２０に問い合わせることによりReactiveに設定してもよい（事後設定）。
図９（ａ）〜（ｄ）は、実施形態の一例としてのネットワークシステムにおけるＡＣＬベースのフロー制御のマッチングを例示する図である。
【００５６】
図９において、入力データDataのうち、Ingress Portのフィールドはスイッチ１０での受信時に付加される受信ポート情報である。また、ＡＣＬ制御部１２２における入力データとルールとのマッチングでは、Ingress Portのフィールドは、例えばポートベクタの形で指定され複数の入力ポートに対してマッチさせることができる。ポートベクタ形式のデータは、ビット番号がポート番号に対応しており、あるビットの値が０か１かで対応するポートが指定されているかを識別するものである。ポートベクタのビット幅は、スイッチ１０の持つポート数に依存するため、スイッチ装置毎に異なるためここでは明示しない。
【００５７】
ＡＣＬ制御部１２２は、入力パケットのヘッダ情報の所定のフィールドにマスクを適用し、マスク適用後のパケットデータに基づきテーブル検索を行い、検索結果に応じてパケットに対して出力ポートの決定・伝送など、所定の動作を実行する。
ＡＣＬ制御部１２２は、図９（ａ）に示す各フィールドのデータ（data）と、図９（ｂ）に示すビットマスク値（Bit Mask Value）とのビット論理積をとり（矢印Ｂ１参照）、図９（ｃ）に示すマスク後データ（Data after masking）を得る（矢印Ｂ２参照）。更に、ＡＣＬ制御部１２２は、L4 sportのマスク後データを図９（ｄ）に示すルールとマッチングする（矢印Ｂ３参照）。
【００５８】
なお、図９（ｄ）中の“＊”は、Wildcardを意味する。また、Wildcardは検索時のDon’t Careを表わすものであり、ＴＣＡＭ１２０のWildcardが指定されたフィールドには適当な比較値が設定される。本実施形態の一例においては、Wildcard指定のフィールドも使用することにより、より細かいフローの識別や制御が可能となる。
ＡＣＬ制御部１２２は、L4sportを0x0001でマスクすることにより、L4sportを0又は1にマップし、２つのルールのどちらにマッチするかを判定する。図９（ａ）〜（ｄ）に示す例においては、L4sportのマスク後データが1であるため、ＡＣＬ制御部１２２は、ルール２(Rule2)にマッチすると判定する（矢印Ｂ４参照）。
【００５９】
この時、ＡＣＬに登録されるルールの数はマスク値に応じて決定されるが、マスク値は折り返し点Ａへ向けた上流スイッチへの経路数に応じて決定する。言い換えると、スイッチ１０から折り返し点Ａへ向けた経路数に応じて必要なルール数が決定する。図９では、経路が２つ存在する場合の例を示しており、マスク値が0x0001であり、ルール数が２となっている。経路数が４の場合は、マスク値が0x0003となり、ルール数が４となる。
【００６０】
ＡＣＬ制御部１２２は、Ingress Portについてはマスク後データとルールとのビット論理積の結果が0以外の場合にマッチと判定する。又、Ingress Port以外のフィールドは完全一致した場合（たとえば排他的論理和の結果が０の場合）にマッチと判定する。更に、ＡＣＬ制御部１２２は、Don’t Care以外の全てのフィールドがマッチした場合には、データとルールとがマッチしたと判定する。
【００６１】
そして、ＡＣＬ制御部１２２は、ＡＣＬ記憶部１２１のマッチしたルールに対応するエントリに格納されたアクションに従い、図示しないハードワイヤ回路により、入力パケットに対する所定の制御（指定された送信ポート１５への出力や廃棄等）を行なう。
すなわち、複数のスイッチのうち、第１のパケット伝送制御領域に含まれるスイッチは、入力パケットのヘッダ情報の所定の位置に複数の第１のルール情報２００の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて第１の記憶部１２１から選択した第１のルール情報２００に従って入力パケットの制御を行なう。
【００６２】
図９は、ＡＣＬ制御部１２２におけるマスク適用、および、マッチング動作の一例であり、マスク適用とマッチング検査の操作（演算）順序は、結果が同じになる限りにおいて、図示した方法に限定するものではない。
図１０は、実施形態の一例としてのネットワークシステムが用いるＶＸＬＡＮを説明する図である。
【００６３】
図１０に例示するネットワークシステム１は、２つのスイッチ１０，２つのサーバ装置３０及び図示しないコントローラ２０を備える。また、ネットワークシステム１は、物理的にL2/L3 network (Routed IP network)２を形成し、又、論理的にVXLAN network３を形成する。
サーバ装置３０は、図１０に示すように、例えば図示しないＣＰＵ上にApplication/Operating System（ＡＰＰ／ＯＳ）３１及びVXLAN Terminal End-Point（ＶＴＥＰ）３２を展開する。
【００６４】
ＶＸＬＡＮは、フレームをUser Data Protocol（ＵＤＰ）でカプセル化することにより、レイヤ３ネットワーク上に論理的なレイヤ２ネットワークを構築するプロトコルである。
ＶＸＬＡＮにおいては、VXLAN Network Identifier（ＶＮＩ）という２４ビットの識別子をＶＸＬＡＮヘッダに持つことにより、最大で１６００万のオーバーレイネットワークを定義できる。
【００６５】
また、ＶＸＬＡＮにおいては、エッジのエンドポイントであるＶＴＥＰ３２でパケット変換を行なう。具体的には、ＶＴＥＰ３２は、物理サーバ上（で動作するHypervisor上）で動作し、ＶＸＬＡＮと図示しないＶＭとの間のパケット変換を実施する。
図１０に示す例においては、ＡＰＰ／ＯＳ３１は、ＶＴＥＰ３２に対してオリジナルフレームを送信する（矢印Ｃ１参照）。ＶＴＥＰ３２は、ＶＭが送信したフレームからＶＮＩを特定し、ＶＸＬＡＮヘッダでカプセル化し、L2/L3 network２へ送信する（矢印Ｃ２参照）。送信先装置のＶＴＥＰ３２は、ＶＮＩ及びオリジナルデータの宛先から宛先ＶＭを特定し、ＶＸＬＡＮヘッダを削除して図示しないＶＭへ渡す（矢印Ｃ３参照）。
【００６６】
このように、ＶＸＬＡＮにおいては、ＶＭ間の通信をカプセル化によって、ＶＴＥＰ３２間の通信に集約する。
図１１（ａ）は実施形態の一例としてのネットワークシステムが用いるＶＸＬＡＮパケットの概略を示す図であり、図１１（ｂ）はその詳細を示す図である。
図１１（ａ）に示すように、ＶＸＬＡＮパケットのフォーマットは、ＶＴＥＰ３２間のＵＤＰ通信として転送するOuter Header及びOriginal Frameを含む。
【００６７】
また、図１１（ｂ）に示すように、Outer HeaderはOuter Ethernet（登録商標） Header，Outer IP Header，Outer UDP Header及びVXLAN Headerを含み、Original FlameはInner Ethernet（登録商標） Frameを含む。
図１２は、従来例としてのネットワークシステムが用いるＶＸＬＡＮのトラフィック特性を説明する図である。
【００６８】
図１２に示す従来例においては、サーバ装置６０とスイッチ５０とがLink-Aggregation Group（ＬＡＧ）４０を介して互いに通信可能に接続されている。また、サーバ装置６０は、ＶＴＥＰ６２及び５つのＶＭ６１を展開し、又、Network Interface Card（ＮＩＣ）６３を備える。
ＮＩＣ６３は、サーバ装置６０を、例えば、ＬＡＮ等の外部ネットワークに接続する通信アダプタであり、例えばＬＡＮカードである。
【００６９】
ＩＰ／ＭＡＣハッシュに基づく分散アルゴリズムを用いる従来例としてのネットワークシステムにおいては、図１２に示すように、複数（図示する例では５つ）のＶＭ６１がＶＴＥＰ間通信に集約される。そのため、ネットワーク上で識別できるフロー数が減少し、トラフィックの偏りが発生する可能性が高い。また、MultiPath Transmission Control Protocol（ＭＰＴＣＰ）においては、L4 src portを変えてマルチパスを構成するが、VXLANのカプセル化によりオリジナルデータのL4 src portが隠蔽されるため、マルチパスを期待通り構成することができない。
【００７０】
そこで、本実施形態の一例におけるネットワークシステム１が用いるＶＸＬＡＮ仕様では、L4 src portにペイロードのハッシュ値を入れる。
図１３は、実施形態の一例としてのネットワークシステムにおけるマルチパスの分散を説明する図である。
図１３では、図１１（ｂ）に示した実施形態の一例としてのネットワークシステムが用いるＶＸＬＡＮパケットのうち、Outer Headerの詳細を示している。
【００７１】
VMware ESXiのＶＴＥＰ３２では、カプセル化をする際に、ペイロードを参照してハッシュ値を計算し、計算したハッシュ値をL4 src portに格納する。すなわち、フレームの内容からハッシュ値を生成し、Outer HeaderのUDP Source Portに使用する。なお、ペイロードの参照する箇所は、IP src，IP dst，IP proto，L4 src及びdst portsの５タプルである。
【００７２】
図１４は、実施形態の一例としてのネットワークシステムのBack to Back構成におけるフロー制御を説明する図である。
図１４に例示するネットワークシステム１は、Back to Back構成になっており、２つのスイッチ１０（ＳＷ１，ＳＷ２），コントローラ２０及び４つのサーバ装置３０（Ｓ１〜Ｓ４）を備える。
【００７３】
以下、図１４を参照しながら説明する際に、特定のスイッチ１０を指す場合には、単に「ＳＷ１」又は「ＳＷ２」と表記する。また、以下、図１４を参照しながら説明する際に、特定のサーバ装置３０を指す場合には、単に「Ｓ１」，「Ｓ２」，「Ｓ３」又は「Ｓ４」と表記する。また、図１４では簡単のため省略しているが、ＡＣＬを検索する際のL4sportの値はマスク値0x0001でマスクされているものとする。
【００７４】
まず、コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリ（ＦＤＢテーブル３００及びＡＣＬテーブル２００）を各スイッチ１０に対して設定（送信）する。具体的には、送信部２１１は、メモリ１３０のＦＤＢ記憶部１３１にＦＤＢテーブル３００を格納させ、又、ＴＣＡＭ１２０のＡＣＬ記憶部１２１にＡＣＬテーブル２００を格納させる。なお、送信部２１１は、ＳＷ２に対してもＡＣＬテーブル２００を設定するが、図１４では簡単のため省略している。
【００７５】
図１４においては、Ｓ１がＳ４に対してパケットを伝送する例について説明する。
符号Ｅに示すように、パケット（Packet）のDestination Address（DA；送信先アドレス），Source Address（SA；送信元アドレス）及びL4sportには、S4，S1及び1がそれぞれ設定されている。
ＳＷ１のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S4の場合のアクションが格納されているかを確認する。ここでは、ＳＷ１のＦＤＢフローテーブル３００にS4が格納されていないため、ＳＷ１のＡＣＬ制御部１２２は、ＡＣＬテーブル２００を参照し、L4sport=1の場合のアクションを確認する。ここでは、ＳＷ１のＡＣＬテーブル２００にL4sport=1に対してPort=P4が格納されているため、ＳＷ１のＡＣＬ制御部１２２は、符号Ｅに示すようにアクション（Action）としてＰ４ポートを選択する。すなわち、ＡＣＬ制御部１２２は、ＳＷ１のＰ４ポートを介してＳＷ２に対してパケットを伝送させる。
【００７６】
ＳＷ２のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S4の場合のアクションが格納されているかを確認する。ここでは、ＳＷ２のＦＤＢテーブル３００にServer=S4に対してPort=P2が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ２ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ２のＰ２ポートを介してＳ４に対してパケットを伝送させる。
【００７７】
図１４に示す例においては、最初にＦＤＢベースのフロー制御を行なうＳＷ２が折り返し点Ａとなる。
図１５は、実施形態の一例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
図１５に例示するネットワークシステム１は、Fat Tree構成になっており、４つのスイッチ１０（ＳＷ１〜ＳＷ４），コントローラ２０及び４つのサーバ装置３０（Ｓ１〜Ｓ４）を備える。また、図１５では簡単のため省略しているが、ＡＣＬを検索する際のL4sportの値はマスク値0x0001でマスクされているものとする。
【００７８】
以下、図１５を参照しながら説明する際に、特定のスイッチ１０を指す場合には、単に「ＳＷ１」，「ＳＷ２」，「ＳＷ３」又は「ＳＷ４」と表記する。また、以下、図１５を参照しながら説明する際に、特定のサーバ装置３０を指す場合には、単に「Ｓ１」，「Ｓ２」，「Ｓ３」又は「Ｓ４」と表記する。
まず、コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリ（ＦＤＢテーブル３００及びＡＣＬテーブル２００）を各スイッチ１０に対して設定（送信）する。具体的には、送信部２１１は、メモリ１３０のＦＤＢ記憶部１３１にＦＤＢテーブル３００を格納させ、又、ＴＣＡＭ１２０のＡＣＬ記憶部１２１にＡＣＬテーブル２００を格納させる。なお、図１５においては、ＳＷ３及びＳＷ４のＡＣＬテーブル２００の図示を省略したが、設定部１１２は、ＳＷ３及びＳＷ４に対してもＡＣＬテーブル２００を設定しても良い。
【００７９】
図１５においては、始めにＳ１がＳ２に対してパケット＃１を伝送する例について説明し、次にＳ１がＳ３に対してパケット＃２を伝送する例について説明する。
符号Ｆ１に示すように、パケット＃１のDA，SA及びL4sportには、S2，S1及び0がそれぞれ設定されている。
ＳＷ１のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S2の場合のアクションが格納されているかを確認する。ここでは、ＳＷ１のＦＤＢテーブル３００にServer=S2に対してPort=P2が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ２ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ１のＰ２ポートを介してＳ２に対してパケットを伝送させる。
【００８０】
図１５に示すパケット＃１を伝送する例においては、最初にＦＤＢベースのフロー制御を行なうＳＷ１が折り返し点Ａとなる。
次に、Ｓ１がＳ３に対してパケット＃２を伝送する例について説明する。
符号Ｆ２に示すように、パケット＃２のDA，SA及びL4sportには、S3，S1及び0がそれぞれ設定されている。
【００８１】
ＳＷ１のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ１のＦＤＢフローテーブル３００にS3が格納されていないため、ＳＷ１のＡＣＬ制御部１２２は、ＡＣＬテーブル２００を参照し、L4sport=0の場合のアクションを確認する。ここでは、ＳＷ１のＡＣＬテーブル２００にL4sport=0に対してPort=P3が格納されているため、ＳＷ１のＡＣＬ制御部１２２は、符号Ｆ２に示すようにアクションとしてＰ３ポートを選択する。すなわち、ＡＣＬ制御部１２２は、ＳＷ１のＰ３ポートを介してＳＷ３に対してパケットを伝送させる。
【００８２】
ＳＷ３のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ３のＦＤＢテーブル３００にServer=S3に対してPort=P2が格納されているため、ＦＤＢ制御部１３２は、符号Ｆ３に示すようにアクションとしてＰ２ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ３のＰ２ポートを介してＳＷ２に対してパケットを伝送させる。
【００８３】
図１５に示すパケット＃２を伝送する例においては、最初にＦＤＢベースのフロー制御を行なうＳＷ３が折り返し点Ａとなる。
ＳＷ２のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ３のＦＤＢテーブル３００にServer=S3に対してPort=P1が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ１ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ２のＰ１ポートを介してＳ３に対してパケットを伝送させる。
【００８４】
図１６（ａ）に示すハッシュ計算の方式においては、ペイロードのInner 5-tupleから第１のハッシュ値を計算し、カプセル化後に第１のハッシュ値を設定されたOuter L4 src portを含めたOuter 5-tuple（IP src, IP dst, IP proto, L4 src及びdst ports）から経路選択用の第２のハッシュ値を計算する。第２のハッシュ値に基づくパス選択は、第２のハッシュ値の計算およびパス選択がスイッチ１０で行なわれるため、OpenFlowによるコントローラ２０からの詳細な制御が困難である。
【００８５】
図１６（ｂ）に示すハッシュ計算方式においては、ペイロードのInner 5-tupleから第１のハッシュ値を計算し、カプセル化時にOuter L4 src portに第一のハッシュ値を設定する。スイッチ１０でのパス選択は、マスク適用後の第１のハッシュ値に基づいて行なう。
図１６（ｃ）に示すハッシュ計算方式は、図１６（ｂ）とほぼ同様であるが、第１のハッシュ値の計算にInner 5-tupleのみでなく、VXLAN Network Identifier（VNI）を含めてハッシュ計算を行なうことで、より詳細なフロー識別を可能とする。
【００８６】
図１６（ｂ）及び（ｃ）のハッシュ計算方式では、マスク適用後の第１のハッシュ値に基づいてパス選択が行われるようOpenFlowによりコントローラ２０からスイッチ１０に設定が行われるが、この際、符号Ｇに示すようにOpenFlowのベンダー拡張が必要となる。
〔Ａ−２〕動作
上述の如く構成された実施形態の一例としてのネットワークシステム１が備えるコントローラ２０におけるフローリスト１００の設定処理を図１７に示すフローチャート（ステップＳ１０〜Ｓ６０）に従って説明する。
【００８７】
始めに、図１８を用いて後述するようにして作成したフローリスト１００を、例えばコントローラ２０の記憶装置２３に入力（格納）する（符号Ｈ１参照）。入力されるフローリスト１００には、例えば、設定対象のスイッチ１０を示す対象ＳＷ，フローの追加／削除／変更を指定する操作，フローを識別するマッチングルールであるルール及びマッチした場合の動作を示すアクションが互いに関連付けられている。
【００８８】
コントローラ２０の送信部２１１は、フローリスト１００が空であるか否かを判定する（ステップＳ１０）。言い換えれば、送信部２１１は、図１７に示すフローテーブル１００の１〜Ｎの内容が全て対象スイッチ１０に設定済みであるか否かを判定する。
フローリスト１００が空である場合には（ステップＳ１０のＹＥＳルート参照）、コントローラ２０におけるフローテーブル１００の設定処理が完了する。
【００８９】
フローリスト１００が空でない場合には（ステップＳ１０のＮＯルート参照）、送信部２１１は、フローリスト１００から１行取り出す（ステップＳ２０）。フローリスト１００から取り出した情報には、例えば、対象スイッチのＩＤ，操作（追加／変更／削除），ルール及びアクションが含まれる（符号Ｈ２参照）。
送信部２１１は、対象スイッチ１０と通信し、フローリスト１００を設定する（ステップＳ３０）。
【００９０】
送信部２１１は、スイッチ１０からの返信を受信する（ステップＳ４０）。
送信部２１１は、スイッチ１０からの返信に基づき、設定が成功したか否かを判定する（ステップＳ５０）。
設定が成功した場合には（ステップＳ５０のＹＥＳルート参照）、フローリスト１００の次の行に移り、ステップＳ１０に戻る。
【００９１】
設定が成功しなかった場合には（ステップＳ５０のＮＯルート参照）、送信部２１１は、例えばコントローラ２０の図示しない表示装置にエラーを出力し（ステップＳ６０）、コントローラ２０におけるフローテーブル１００の設定処理が完了する。
図１８は、実施形態の一例としてのネットワークシステムにおけるフローテーブルの作成処理に用いるアルゴリズムを例示する図である。
【００９２】
図１８に示すアルゴリズムは、トポロジ情報Tを入力とし、事前設定用フローリストLを出力する。入力するトポロジ情報Tは、コントローラ２０が静的に保持しても良いし、動的検出によって与えられても良い。
function Search Tree (n)は、入力としてノード情報nを受け、ノード情報n配下のサーバリストSを返す。また、フローリストLに対して、ノード情報nに設定されるべきエントリ群を追加する。
【００９３】
Search Tree (n)は、ノード情報nがServer（サーバ装置３０）の場合には、ノード情報nのnode-idを返すため、ルートノードrから再帰的にサブツリーに対してSearch Tree (v)を実行することで、各スイッチ１０のフロー設定情報を事前設定用フローリストLに追加できる。
次に、実施形態の一例としてのネットワークシステム１が備えるスイッチ１０におけるフローリスト１００の設定処理を図１９に示すフローチャート（ステップＳ１１０〜Ｓ１５０）に従って説明する。
【００９４】
スイッチ１０の設定部１１０は、コントローラ２０からフロー設定情報を受信する（ステップＳ１１０）。
設定部１１０は、フロー設定情報のルールを検査し、マスク無∧MAC dst／IP dst(+ VLAN ID)であるか否かを判定する（ステップＳ１２０）。なお、ステップＳ１２０における判定条件の“∧”及び“／”は“且つ”及び“又は”をそれぞれ示しており、MAC dst又はIP dst以外にVLAN IDを含んでいても判定結果がＹＥＳであることを示している。
【００９５】
マスク無∧MAC dst／IP dst(+ VLAN ID)である場合には（ステップＳ１２０のＹＥＳルート参照）、ＦＤＢ設定部１１２は、図２１を用いて後述するＦＤＢ操作を実行し（ステップＳ１３０）、ステップＳ１５０に移行する。
マスク無∧MAC dst／IP dst(+ VLAN ID)でない場合には（ステップＳ１２０のＮＯルート参照）、ＡＣＬ設定部１１１は、図２０を用いて後述するＡＣＬ操作を実行し（ステップＳ１４０）、ステップＳ１５０に移行する。
【００９６】
そして、設定部１１０は、設定結果をコントローラ２０に返信し（ステップＳ１５０）、スイッチ１０におけるフローリスト１００の設定処理が完了する。
次に、図１９のステップＳ１４０に示したＡＣＬ操作の詳細を図２０に示すフローチャート（ステップＳ１４１〜Ｓ１４７）に従って説明する。
ＡＣＬ設定部１１１は、操作が追加であるか否かを判定する（ステップＳ１４１）。
【００９７】
操作が追加である場合には（ステップＳ１４１のＹＥＳルート参照）、ＡＣＬ設定部１１１は、対象フローがデータベース（ＤＢ）に未登録、且つ、エントリに空きが有るか否かを判定する（ステップＳ１４２）。
対象フローがデータベースに未登録、且つ、エントリに空きが有る場合には（ステップＳ１４２のＹＥＳルート参照）、ＡＣＬ設定部１１１は、データベースにフローを追加し、又、ＡＣＬにエントリを追加し（ステップＳ１４３）、ＡＣＬ操作が成功する。
【００９８】
一方、対象フローがデータベースに登録済み、又は、エントリに空きが無い場合には（ステップＳ１４２のＮＯルート参照）、ＡＣＬ操作はエラーとなる。
また、操作が追加でない場合には（ステップＳ１４１のＮＯルート参照）、ＡＣＬ設定部１１１は、対象フローがデータベースに登録済みであるか否かを判定する（ステップＳ１４４）。
【００９９】
対象フローがデータベースに登録済みである場合には（ステップＳ１４４のＹＥＳルート参照）、ＡＣＬ設定部１１１は、操作が削除又は変更のどちらであるかを判定する（ステップＳ１４５）。
操作が削除である場合には（ステップＳ１４５の削除ルート参照）、ＡＣＬ設定部１１１は、データベース及びＡＣＬから該当フローのエントリを削除し（ステップＳ１４６）、ＡＣＬ操作が成功する。
【０１００】
一方、操作が変更である場合には（ステップＳ１４５の変更ルート参照）、ＡＣＬ設定部１１１は、データベース及びＡＣＬから該当フローの差し替えを行ない（ステップＳ１４７）、ＡＣＬ操作が成功する。
また、対象フローがデータベースに未登録の場合には（ステップＳ１４４のＮＯルート参照）、ＡＣＬ操作はエラーとなる。
【０１０１】
次に、図１９のステップＳ１３０に示したＦＤＢ操作の詳細を図２１に示すフローチャート（ステップＳ１３１〜Ｓ１３８）に従って説明する。
ＦＤＢ設定部１１２は、操作が追加であるか否かを判定する（ステップＳ１３１）。
操作が追加である場合には（ステップＳ１３１のＹＥＳルート参照）、ＦＤＢ設定部１１２は、対象フローがデータベースに未登録であるか否かを判定する（ステップＳ１３２）。
【０１０２】
対象フローがデータベースに未登録である場合には（ステップＳ１３２のＹＥＳルート参照）、ＦＤＢ設定部１１２は、対象フローがＦＤＢに登録可能であるか否かを判定する（ステップＳ１３３）。
対象フローがデータベースに登録可能である場合には（ステップＳ１３３のＹＥＳルート参照）、ＦＤＢ設定部１１２は、データベースにフローを追加し、又、ＦＤＢに静的エントリを登録し（ステップＳ１３４）、ＦＤＢ操作が成功する。
【０１０３】
一方、対象フローがＦＤＢに登録可能でない場合には（ステップＳ１３３のＮＯルート参照）、ＡＣＬ操作に移行し、図２０のステップＳ１４０に示した処理を行なう。
また、対象フローがデータベースに登録済みである場合には（ステップＳ１３２のＮＯルート参照）、ＦＤＢ操作はエラーとなる。
更に、操作が追加でない場合には（ステップＳ１３１のＮＯルート参照）、ＦＤＢ設定部１１２は、対象フローがデータベースに登録済みであるか否かを判定する（ステップＳ１３５）。
【０１０４】
対象フローがデータベースに登録済みである場合には（ステップＳ１３５のＹＥＳルート参照）、ＦＤＢ設定部１１２は、操作が削除又は変更のどちらであるかを判定する（ステップＳ１３６）。
操作が削除である場合には（ステップＳ１３６の削除ルート参照）、ＦＤＢ設定部１１２は、データベース及びＦＤＢから該当フローのエントリを削除し（ステップＳ１３７）、ＦＤＢ操作が成功する。
【０１０５】
一方、操作が変更である場合には（ステップＳ１３６の変更ルート参照）、ＦＤＢ設定部１１２は、データベース及びＦＤＢから該当フローのエントリを差し替え（ステップＳ１３８）、ＦＤＢ操作が成功する。
また、対象フローがデータベースに未登録の場合には（ステップＳ１３５のＮＯルート参照）、ＦＤＢ操作がエラーとなる。
【０１０６】
〔Ａ−３〕効果
以下、図２２〜図２５を参照しながら、本実施形態の一例としてのネットワークシステム１により奏することができる効果を説明する。
図２２（ａ）は実施形態の一例としてのネットワークシステムが用いるOpenFlowテーブルを模式的に示す図であり、図２２（ｂ）はそのコモディティスイッチを模式的に示す図である。
【０１０７】
図２２（ａ），（ｂ）に示すように、ＦＤＢ制御部１３２が優先度の高い領域〔２〕においてＦＤＢに従ったフロー制御を行ない、ＡＣＬ制御部１２２が優先度の低い領域〔１〕においてIngress Portで修飾されたＡＣＬに従ったフロー制御を行なう。
これにより、OpenFlow 1.0 capable switchのセマンティクスにおいて、コモディティスイッチに大容量に存在するＦＤＢを活用したハードウェアへのマッピングが可能となり、ＡＣＬの使用量を削減できる。
【０１０８】
図２３は実施形態の一例としてのネットワークシステムのBack to Back構成を例示する図であり、図２４はそのFat Tree構成を例示する図である。また、図２５は、従来のネットワークシステムと本実施形態の一例におけるネットワークシステムとにおける使用エントリ数を示す図である。
図２３に示すネットワークシステム１は、Back to Back構成になっており、２つのスイッチ（ＳＷ）１０，２つのサーバ装置３０及び図示しないコントローラ２０を備える。
【０１０９】
サーバ装置３０は、仮想環境３０ａを構成しており、ＶＴＥＰ３２及び８つのＶＭ３３を展開する。
図２５に示すように、図２３に例示するBack to Back構成においては、従来のネットワークシステムは、Total #Flow table entries per switchとして１つのスイッチにつき128エントリ消費する。一方、本実施形態の一例におけるネットワークシステム１は、Total #Flow table entries per switchとして１つのスイッチ１０につき3エントリ消費する。
【０１１０】
図２４に示すネットワークシステム１は、Fat Tree構成になっており、１２個のスイッチ（ＳＷ）１０，８つのサーバ装置３０及び図示しないコントローラ２０を備える。
サーバ装置３０は、図２３に示したサーバ装置３０と同様の仮想環境３０ａを構成しており、ＶＴＥＰ３２及び８つのＶＭ３３を展開する。
図２５に示すように、図２４に例示するFat Tree構成においては、従来のネットワークシステムは、Total #Flow table entries per switchとして１つのスイッチにつき3584エントリ消費する。一方、本実施形態の一例におけるネットワークシステム１は、Total #Flow table entries per switchとして１つのスイッチ１０につき12エントリ消費する。
【０１１１】
このように、本実施形態の一例におけるネットワークシステム１によれば、各スイッチ１０における消費エントリ数を削減することができる。
また、スイッチ１０は、入力パケットのヘッダ情報の所定の位置に複数の第１のルール情報２００の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて第１の記憶部１２１から選択した第１のルール情報２００に従って入力パケットの制御を行なう。すなわち、各スイッチ１０と上流の別のスイッチ１０との間の接続数に応じてマスク値を決定することで、ＶＭ数やサーバ数に依らず接続数に応じて消費エントリ数が決まる。これにより、各スイッチ１０で使用するエントリ数を削減することができる。
【０１１２】
更に、入力パケットの宛先に対応する第２のルール情報３００が第２の記憶部１３１に格納されている場合には、第２のパケット伝送制御部は、第２のルール情報３００に従って入力パケットの伝送を制御する。また、入力パケットの宛先に対応する第２のルール情報３００が第２の記憶部１３１に格納されていない場合には、第１のパケット伝送制御部は、入力パケットに対応する第１のルール情報２００に従って入力パケットの伝送を制御する。これにより、折り返し点Ａから送信先装置まではＦＤＢを使用するため、ＡＣＬの使用エントリ数を削減することができる。
【０１１３】
〔Ｂ〕変形例
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
〔Ｂ−１〕第１変形例
図２６は、実施形態の第１変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
【０１１４】
上述した実施形態の一例においてはＶＸＬＡＮのオーバーレイ環境におけるネットワークシステム１について説明したが、本実施形態の第１変形例においてはパケットのカプセル化を行なわずＦＤＢにＭＡＣテーブルを使用する場合について説明する。
図２６に例示するネットワークシステム１−１は、Fat Tree構成になっており、４つのスイッチ１０（ＳＷ１〜ＳＷ４），コントローラ２０及び４つのサーバ装置３０（Ｓ１〜Ｓ４）を備える。
【０１１５】
以下、図２６を参照しながら説明する際に、特定のスイッチ１０を指す場合には、単に「ＳＷ１」，「ＳＷ２」，「ＳＷ３」又は「ＳＷ４」と表記する。また、以下、図２６を参照しながら説明する際に、特定のサーバ装置３０を指す場合には、単に「Ｓ１」，「Ｓ２」，「Ｓ３」又は「Ｓ４」と表記する。また、図２６では簡単のため省略しているが、DIP(LSB)の値はDIPに対してマスク値0x000000000001でマスクした結果であり、ＡＣＬ検索の際には前記マスク値によりDIPをマスクしているものとする。
【０１１６】
図２６に示すようにＳ１〜Ｓ４は、ＶＭ３３（ＶＭ１〜ＶＭ４）をそれぞれ展開する。なお、図示する例においては各サーバ装置３０が１つのＶＭ３３を展開するようになっているが、これに限定されるものではなく、２つ以上のＶＭ３３を展開しても良い。
以下、図２６を参照しながら説明する際に、特定のＶＭ３３を指す場合には、単に「ＶＭ１」，「ＶＭ２」，「ＶＭ３」又は「ＶＭ４」と表記する。
【０１１７】
まず、コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリ（ＦＤＢテーブル３１０及びＡＣＬテーブル２１０）を各スイッチ１０に対して設定（送信）する。具体的には、送信部２１１は、メモリ１３０のＦＤＢ記憶部１３１にＦＤＢテーブル３１０を格納させ、又、ＴＣＡＭ１２０のＡＣＬ記憶部１２１にＡＣＬテーブル２１０を格納させる。なお、図２６においては、ＳＷ３及びＳＷ４のＡＣＬテーブル２１０の図示を省略したが、設定部１１２は、ＳＷ３及びＳＷ４に対してもＡＣＬテーブル２１０を設定しても良い。
【０１１８】
図２６においては、始めにＶＭ１（Ｓ１）がＶＭ２（Ｓ２）に対してパケット＃１を伝送する例について説明し、次にＶＭ１（Ｓ１）がＶＭ３（Ｓ３）に対してパケット＃２を伝送する例について説明する。
符号Ｉ１に示すように、パケット＃１のDA，SA，DIP(LSB)には、VM2，VM1及び0がそれぞれ設定されている。なお、DIP及びLSBはDestination IP address及びLeast Small Bitをそれぞれ示しており、DIP(LSB)はDIPの最下位ビットを示している。
【０１１９】
ＳＷ１のＦＤＢ制御部１３２は、ＦＤＢテーブル３１０を参照し、DA=VM2の場合のアクションが格納されているかを確認する。ここでは、ＳＷ１のＦＤＢテーブル３１０にVM MAC=VM2に対してPort=P2が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ２ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ１のＰ２ポートを介してＶＭ２（Ｓ２）に対してパケットを伝送させる。
【０１２０】
図２６に示すパケット＃１を伝送する例においては、最初にＦＤＢベースのフロー制御を行なうＳＷ１が折り返し点Ａとなる。
次に、ＶＭ１（Ｓ１）がＶＭ３（Ｓ３）に対してパケット＃２を伝送する例について説明する。
符号Ｉ２に示すように、パケット＃２のDA，SA，DIP(LSB)には、VM3，VM1及び0がそれぞれ設定されている。
【０１２１】
ＳＷ１のＦＤＢ制御部１３２は、ＦＤＢテーブル３１０を参照し、DA=VM3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ１のＦＤＢフローテーブル３１０にVM3が格納されていないため、ＳＷ１のＡＣＬ制御部１２２は、ＡＣＬテーブル２１０を参照し、DIP(LSM)=0の場合のアクションを確認する。ここでは、ＳＷ１のＡＣＬテーブル２１０にDIP(LSB)=0に対してPort=P3が格納されているため、ＳＷ１のＡＣＬ制御部１２２は、符号Ｉ２に示すようにアクションとしてＰ３ポートを選択する。すなわち、ＡＣＬ制御部１２２は、ＳＷ１のＰ３ポートを介してＳＷ３に対してパケットを伝送させる。
【０１２２】
ＳＷ３のＦＤＢ制御部１３２は、ＦＤＢテーブル３１０を参照し、DA=VM3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ３のＦＤＢテーブル３１０にVM MAC=VM3に対してPort=P2が格納されているため、ＦＤＢ制御部１３２は、符号Ｉ３に示すようにアクションとしてＰ２ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ３のＰ２ポートを介してＳＷ２に対してパケットを伝送させる。
【０１２３】
図２６に示すパケット＃２を伝送する例においては、最初にＦＤＢベースのフロー制御を行なうＳＷ３が折り返し点Ａとなる。
ＳＷ２のＦＤＢ制御部１３２は、ＦＤＢテーブル３１０を参照し、DA=VM3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ３のＦＤＢテーブル３１０にVM MAC=VM3に対してPort=P1が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ１ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ２のＰ１ポートを介してＳ３に対してパケットを伝送させる。
【０１２４】
〔Ｂ−２〕第２変形例
図２７は、実施形態の第２変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
上述した実施形態の一例においてはＶＸＬＡＮのオーバーレイ環境におけるネットワークシステム１について説明したが、本実施形態の第２変形例においてはパケットのカプセル化を行なわずＦＤＢに静的ＩＰルーティングテーブルを使用する場合について説明する。
【０１２５】
図２７に例示するネットワークシステム１−２は、Fat Tree構成になっており、４つのスイッチ１０（ＳＷ１〜ＳＷ４），コントローラ２０及び４つのサーバ装置３０（Ｓ１〜Ｓ４）を備える。
以下、図２７を参照しながら説明する際に、特定のスイッチ１０を指す場合には、単に「ＳＷ１」，「ＳＷ２」，「ＳＷ３」又は「ＳＷ４」と表記する。また、以下、図２７を参照しながら説明する際に、特定のサーバ装置３０を指す場合には、単に「Ｓ１」，「Ｓ２」，「Ｓ３」又は「Ｓ４」と表記する。また、図２７では簡単のため省略しているが、DIP(LSB)の値はDIPに対してマスク値0x000000000001でマスクした結果であり、ＡＣＬ検索の際には前記マスク値によりDIPをマスクしているものとする。
【０１２６】
図２７に示すようにＳ１〜Ｓ４は、ＶＭ３３（ＶＭ１〜ＶＭ４）をそれぞれ展開する。なお、図示する例においては各サーバ装置３０が１つのＶＭ３３を展開するようになっているが、これに限定されるものではなく、２つ以上のＶＭ３３を展開しても良い。
以下、図２７を参照しながら説明する際に、特定のＶＭ３３を指す場合には、単に「ＶＭ１」，「ＶＭ２」，「ＶＭ３」又は「ＶＭ４」と表記する。
【０１２７】
まず、コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリ（ＦＤＢテーブル３２０及びＡＣＬテーブル２１０）を各スイッチ１０に対して設定（送信）する。具体的には、送信部２１１は、メモリ１３０のＦＤＢ記憶部１３１にＦＤＢテーブル３２０を格納させ、又、ＴＣＡＭ１２０のＡＣＬ記憶部１２１にＡＣＬテーブル２１０を格納させる。なお、図２７においては、ＳＷ３及びＳＷ４のＡＣＬテーブル２１０の図示を省略したが、設定部１１２は、ＳＷ３及びＳＷ４に対してもＡＣＬテーブル２１０を設定しても良い。
【０１２８】
図２７においては、始めにＶＭ１（Ｓ１）がＶＭ２（Ｓ２）に対してパケット＃１を伝送する例について説明し、次にＶＭ１（Ｓ１）がＶＭ３（Ｓ３）に対してパケット＃２を伝送する例について説明する。
符号Ｊ１に示すように、パケット＃１のDIP，SIP，DIP(LSB)には、VM2IP，VM1IP及び0がそれぞれ設定されている。なお、SIPは、Source IP addressを示している。
【０１２９】
ＳＷ１のＦＤＢ制御部１３２は、ＦＤＢテーブル３２０を参照し、DIP=VM2IPの場合のアクションが格納されているかを確認する。ここでは、ＳＷ１のＦＤＢテーブル３２０にVM IP=VM2IPに対してPort=P2が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ２ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ１のＰ２ポートを介してＶＭ２（Ｓ２）に対してパケットを伝送させる。
【０１３０】
図２７に示すパケット＃１を伝送する例においては、最初にＦＤＢベースのフロー制御を行なうＳＷ１が折り返し点Ａとなる。
次に、ＶＭ１（Ｓ１）がＶＭ３（Ｓ３）に対してパケット＃２を伝送する例について説明する。
符号Ｊ２に示すように、パケット＃２のDIP，SIP，DIP(LSB)には、VM3IP，VM1IP及び0がそれぞれ設定されている。
【０１３１】
ＳＷ１のＦＤＢ制御部１３２は、ＦＤＢテーブル３２０を参照し、DIP=VM3IPの場合のアクションが格納されているかを確認する。ここでは、ＳＷ１のＦＤＢフローテーブル３２０にVM3IPが格納されていないため、ＳＷ１のＡＣＬ制御部１２２は、ＡＣＬテーブル２１０を参照し、DIP(LSM)=0の場合のアクションを確認する。ここでは、ＳＷ１のＡＣＬテーブル２１０にDIP(LSB)=0に対してPort=P3が格納されているため、ＳＷ１のＡＣＬ制御部１２２は、符号Ｊ２に示すようにアクションとしてＰ３ポートを選択する。すなわち、ＡＣＬ制御部１２２は、ＳＷ１のＰ３ポートを介してＳＷ３対してパケットを伝送させる。
【０１３２】
ＳＷ３のＦＤＢ制御部１３２は、ＦＤＢテーブル３２０を参照し、DIP=VM3IPの場合のアクションが格納されているかを確認する。ここでは、ＳＷ３のＦＤＢテーブル３２０にVM IP=VM3IPに対してPort=P2が格納されているため、ＦＤＢ制御部１３２は、符号Ｊ３に示すようにアクションとしてＰ２ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ３のＰ２ポートを介してＳＷ２に対してパケットを伝送させる。
【０１３３】
図２７に示すパケット＃２を伝送する例においては、最初にＦＤＢベースのフロー制御を行なうＳＷ３が折り返し点Ａとなる。
ＳＷ２のＦＤＢ制御部１３２は、ＦＤＢテーブル３２０を参照し、DIP=VM3IPの場合のアクションが格納されているかを確認する。ここでは、ＳＷ３のＦＤＢテーブル３２０にVM IP=VM3IPに対してPort=P1が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ１ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ２のＰ１ポートを介してＳ３に対してパケットを伝送させる。
【０１３４】
〔Ｂ−３〕効果
以下、図２８を参照しながら、本実施形態の第１変形例及び第２変形例としてのネットワークシステム１−１，１−２により奏することができる効果を説明する。
図２８は、従来のネットワークシステムと本実施形態の第１変形例及び第２変形例におけるネットワークシステムとにおける使用エントリ数を示す図である。
【０１３５】
図２８に示すように、図２３に例示したBack to Back構成において、従来のネットワークシステムは、Total #Flow table entries per switchとして１つのスイッチにつき128エントリ消費する。一方、本実施形態の第１変形例及び第２変形例におけるネットワークシステム１−１，１−２は、Total #Flow table entries per switchとして１つのスイッチ１０につき18エントリ消費する。
【０１３６】
図２８に示すように、図２４に例示したFat Tree構成において、従来のネットワークシステムは、Total #Flow table entries per switchとして１つのスイッチにつき3584エントリ消費する。一方、本実施形態の第１変形例及び第２変形例におけるネットワークシステム１−１，１−２は、Total #Flow table entries per switchとして１つのスイッチ１０につき68エントリ消費する。
【０１３７】
このように、本実施形態の第１変形例及び第２変形例におけるネットワークシステム１−１，１−２によっても、上述した実施形態の一例におけるネットワークシステム１と同様に、各スイッチ１０における消費エントリ数を削減することができる。
〔Ｃ〕付記
（付記１）
送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムであって、
前記スイッチは、
第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、
当該ネットワークシステムは、
前記第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、
前記第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含み、
前記複数のスイッチのうち、前記第１のパケット伝送制御領域に含まれるスイッチは、
前記ネットワーク制御装置から通知される複数の第１のルール情報を記憶する第１の記憶部を前記第１のパケット伝送制御部に備え、
入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、ネットワークシステム。
【０１３８】
（付記２）
前記複数のスイッチのうち、前記第２のパケット伝送制御領域に含まれるスイッチは、
前記ネットワーク制御装置から通知される複数の第２のルール情報を記憶する第２の記憶部を前記第２のパケット伝送制御部に備え、
入力パケットの宛先情報と、前記複数の第２のルール情報のうちいずれかとが、対応するかの検索を行ない、対応する第２のルール情報に従って前記入力パケットの伝送を行なう、
ことを特徴とする、付記１に記載のネットワークシステム。
【０１３９】
（付記３）
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されている場合には、前記第２のパケット伝送制御部は、前記第２のルール情報に従って前記入力パケットの伝送を制御し、
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されていない場合には、前記第１のパケット伝送制御部は、前記入力パケットに対応する第１のルール情報に従って前記入力パケットの伝送を制御することを特徴とする、付記２に記載のネットワークシステム。
【０１４０】
（付記４）
送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムの制御方法であって、
当該ネットワークシステムは、
第１のパケット伝送制御手法に従う第１のパケット伝送制御領域と、
第２のパケット伝送制御手法に従う第２のパケット伝送制御領域とを含み、
前記スイッチは、
第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、
前記第１のパケット伝送制御領域においては、
前記第１のパケット伝送制御部に備えられる第１の記憶部に、前記ネットワーク制御装置から通知される複数の第１のルール情報を記憶させ、
入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、ネットワークシステムの制御方法。
【０１４１】
（付記５）
前記スイッチは、前記第２のパケット伝送制御領域においては、
前記第２のパケット伝送制御部に備えられる第２の記憶部に、前記ネットワーク制御装置から通知される複数の第２のルール情報を記憶させ、
入力パケットの宛先情報と、前記複数の第２のルール情報のうちいずれかとが、対応するかの検索を行ない、対応する第２のルール情報に従って前記入力パケットの伝送を行なう、
ことを特徴とする、付記４に記載のネットワークシステムの制御方法。
【０１４２】
（付記６）
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されている場合には、前記第２のパケット伝送制御部は、前記第２のルール情報に従って前記入力パケットの伝送を制御し、
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されていない場合には、前記第１のパケット伝送制御部は、前記入力パケットに対応する第１のルール情報に従って前記入力パケットの伝送を制御することを特徴とする、付記５に記載のネットワークシステムの制御方法。
【０１４３】
（付記７）
送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムにおいて、前記複数のスイッチを制御するネットワーク制御装置であって、
前記スイッチは、
第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、
前記ネットワークシステムは、
前記第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、
前記第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含み、
当該ネットワーク制御装置は、前記第１のパケット伝送制御領域においては、
前記第１のパケット伝送制御部に対して、複数の第１のルール情報を通知し、
前記第１のパケット伝送制御部に備えられる第１の記憶部に、前記複数の第１のルール情報を記憶させ、
前記第１のパケット伝送制御部に対して、入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用させ、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なわせる、
ことを特徴とする、ネットワーク制御装置。
【０１４４】
（付記８）
前記第２のパケット伝送制御領域においては、
前記第２のパケット伝送制御部に対して、複数の第２のルール情報を通知し、
前記第２のパケット伝送制御部に備えられる第２の記憶部に、前記複数の第２のルール情報を記憶させ、
前記第２のパケット伝送制御部に対して、入力パケットの宛先情報と、前記複数の第２のルール情報のうちいずれかとが、対応するかの検索を行ない、対応する第２のルール情報に従って前記入力パケットの伝送を行なわせる、
ことを特徴とする、付記７に記載のネットワーク制御装置。
【０１４５】
（付記９）
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されている場合には、前記第２のパケット伝送制御部に、前記第２のルール情報に従って前記入力パケットの伝送を制御させ、
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されていない場合には、前記第１のパケット伝送制御部に、前記入力パケットに対応する第１のルール情報に従って前記入力パケットの伝送を制御させることを特徴とする、付記８に記載のネットワーク制御装置。
【０１４６】
（付記１０）
送受信装置と複数のスイッチとネットワーク制御装置とを有するネットワークシステムにおいて、前記複数のスイッチを制御するネットワーク制御装置の制御プログラムであって、
前記スイッチは、
第１のパケット伝送制御部と第２のパケット伝送制御部とを備え、
前記ネットワークシステムは、
前記第１のパケット伝送制御部に従う第１のパケット伝送制御領域と、
前記第２のパケット伝送制御部に従う第２のパケット伝送制御領域とを含み、
当該ネットワーク制御装置に備えられるコンピュータに、
前記第１のパケット伝送制御領域においては、
前記第１のパケット伝送制御部に対して、複数の第１のルール情報を通知し、
前記第１のパケット伝送制御部に備えられる第１の記憶部に、前記複数の第１のルール情報を記憶させ、
前記第１のパケット伝送制御部に対して、入力パケットのヘッダ情報の所定の位置に前記複数の第１のルール情報の数に応じたマスクを適用させ、マスク適用後のヘッダ情報に基づいて前記第１の記憶部から選択した第１のルール情報に従って前記入力パケットの制御を行なわせる、
処理を実行させることを特徴とする、ネットワーク制御装置の制御プログラム。
【０１４７】
（付記１１）
前記第２のパケット伝送制御領域においては、
前記第２のパケット伝送制御部に対して、複数の第２のルール情報を通知し、
前記第２のパケット伝送制御部に備えられる第２の記憶部に、前記複数の第２のルール情報を記憶させ、
前記第２のパケット伝送制御部に対して、入力パケットの宛先情報と、前記複数の第２のルール情報のうちいずれかとが、対応するかの検索を行ない、対応する第２のルール情報に従って前記入力パケットの伝送を行なわせる、
処理を前記コンピュータに実行させることを特徴とする、付記１０に記載のネットワーク制御装置の制御プログラム。
【０１４８】
（付記１２）
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されている場合には、前記第２のパケット伝送制御部に、前記第２のルール情報に従って前記入力パケットの伝送を制御させ、
入力パケットの宛先に対応する第２のルール情報が前記第２の記憶部に格納されていない場合には、前記第１のパケット伝送制御部に、前記入力パケットに対応する第１のルール情報に従って前記入力パケットの伝送を制御させる、
処理を前記コンピュータに実行させることを特徴とする、付記１１に記載のネットワーク制御装置の制御プログラム。
【符号の説明】
【０１４９】
１        ネットワークシステム
１００    フローリスト
１０      スイッチ
１１      ＣＰＵ（コンピュータ）
１１０    設定部
１１１    ＡＣＬ設定部（第１のパケット伝送制御部）
１１２    ＦＤＢ設定部（第２のパケット伝送制御部）
１２      スイッチングモジュール
１２０    ＴＣＡＭ（第１のパケット伝送制御部）
１２１    ＡＣＬ記憶部（第１の記憶部）
１２２    ＡＣＬ制御部（第１のパケット伝送制御部）
１３０    メモリ（第２のパケット伝送制御部）
１３１    ＦＤＢ記憶部（第２の記憶部）
１３２    ＦＤＢ制御部（第２のパケット伝送制御部）
１４      受信ポート
１５      送信ポート
１６      管理用ポート
２        L2/L3 network
２００    ＡＣＬテーブル（第１のルール情報）
２１０    ＡＣＬテーブル（第１のルール情報）
２０      コントローラ（ネットワーク制御装置）
２１      ＣＰＵ（コンピュータ）
２１１    送信部
２２      メモリ
２３      記憶装置
３        VXLAN network
３００    ＦＤＢテーブル（第２のルール情報）
３１０    ＦＤＢテーブル（第２のルール情報）
３２０    ＦＤＢテーブル（第２のルール情報）
３０      サーバ装置（送受信装置）
３０ａ    仮想環境
３１      ＡＰＰ／ＯＳ
３２      ＶＴＥＰ
３３      ＶＭ
３４      ＮＩＣ
４０      ＬＡＧ
５        ネットワークシステム
５０      スイッチ
６０      サーバ装置
６０ａ    仮想環境
６１      ＶＭ
Ａ        折り返し点
【図１】
2015039144.tif 000003
【図２】
2015039144.tif 000004
【図３】
2015039144.tif 000005
【図４】
2015039144.tif 000006
【図５】
2015039144.tif 000007
【図６】
2015039144.tif 000008
【図７】
2015039144.tif 000009
【図８】
2015039144.tif 000010
【図９】
2015039144.tif 000011
【図１０】
2015039144.tif 000012
【図１１】
2015039144.tif 000013
【図１２】
2015039144.tif 000014
【図１３】
2015039144.tif 000015
【図１４】
2015039144.tif 000016
【図１５】
2015039144.tif 000017
【図１６】
2015039144.tif 000018
【図１７】
2015039144.tif 000019
【図１８】
2015039144.tif 000020
【図１９】
2015039144.tif 000021
【図２０】
2015039144.tif 000022
【図２１】
2015039144.tif 000023
【図２２】
2015039144.tif 000024
【図２３】
2015039144.tif 000025
【図２４】
2015039144.tif 000026
【図２５】
2015039144.tif 000027
【図２６】
2015039144.tif 000028
【図２７】
2015039144.tif 000029
【図２８】
2015039144.tif 000030
【図２９】
2015039144.tif 000031
【図３０】
2015039144.tif 000032