(57)【要約】【課題】障害発生時における通信経路の切り替えを効率的に行なう。【解決手段】スイッチ装置１０は、スイッチ装置１０の根ノード側に接続された通信経路上で障害を検知した場合に、障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、スイッチ装置１０の葉ノード側に接続された通信経路上で障害を検知した場合に、スイッチ装置１０に接続されている他のスイッチ装置１０に障害を通知する通知部と、を備える。【選択図】図１
2015091035.tif 000002
【特許請求の範囲】
【請求項１】
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムにおいて、
前記スイッチ装置は、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、
を備えることを特徴とする、情報処理システム。
【請求項２】
前記制御部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、前記フローテーブルを書き換えることで、複数の通信経路の切り替えを行なう、
ことを特徴とする、請求項１に記載の情報処理システム。
【請求項３】
前記通知部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、当該スイッチ装置の根ノード側に使用可能な通信経路が無い場合に、当該スイッチ装置に接続されている他のスイッチ装置に前記通知を転送する、
ことを特徴とする、請求項１又は２に記載の情報処理システム。
【請求項４】
当該スイッチ装置は、前記フローテーブルに前記識別情報が登録されている場合には、当該識別情報に対応する出力先ポートに前記パケットを出力する、
ことを特徴とする、請求項１〜３のいずれか１項に記載の情報処理システム。
【請求項５】
前記フローテーブルは、前記識別情報と前記出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に前記出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納し、
当該スイッチ装置は、前記マスク適用後のヘッダ情報に基づいて選択したルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、請求項１〜４のいずれか１項に記載の情報処理システム。
【請求項６】
前記通知部は、前記制御部が前記複数の通信経路の切り替えを行なった場合に、前記複数のスイッチ装置と通信可能に接続されたネットワーク制御装置に、前記切り替えを行なった旨を通知する、
ことを特徴とする、請求項１〜５のいずれか１項に記載の情報処理システム。
【請求項７】
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムが備えるスイッチ装置において、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、
を備えることを特徴とする、スイッチ装置。
【請求項８】
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムの制御方法であって、
前記スイッチ装置は、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行ない、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する、
ことを特徴とする、情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム，スイッチ装置及び情報処理システムの制御方法に関する。
【背景技術】
【０００２】
集中管理コントローラにより、マルチレイヤフロー制御を行なう統一的な管理機構としてOpenFlowがある。OpenFlowでは、パケット・フィールドとフローを定義したルールとをワイルドカードで参照し、フローを識別することにより、フローレベルの制御が可能となる。
このようなOpenFlowを用いた情報処理システムの運用においては、リンク障害発生時にパケットの伝送経路を高速に切り替えることにより、システムを冗長化させることが求められる。
【０００３】
そこで、リンク障害の発生を検知したスイッチがコントローラにそのリンク障害を通知し、他のスイッチが、コントローラに問い合わせることによって、発生したリンク障害に関する情報を受信する技術が知られている。
また、例えば、リンク障害発生時の対応として、以下の技術も知られている。
障害が発生したリンクの上位ノードのスイッチ及び下位ノードのスイッチは、その障害を検知する。上位ノードのスイッチ及び下位ノードのスイッチは、正常ポート数情報を更新する。上位のノードのスイッチは、隣接する他の下位ノードのスイッチに更新した正常ポート数情報を送信する。障害を検知した下位ノードのスイッチは、更新した正常ポート数に基づいて、パケット転送テーブルを更新する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００４−５２２３８３号公報
【特許文献２】特開２００６−３１３９４９号公報
【特許文献３】特開２００７−２０８３６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した技術においては、障害発生時における高速なパス切り替えができないという課題がある。また、リンクの状態を考慮してパスの切り替えを行なうことができないという課題もある。
１つの側面では、本発明は、障害発生時における通信経路の切り替えを効率的に行なうことを目的とする。
【０００６】
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【０００７】
このため、この情報処理システムは、根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムにおいて、前記スイッチ装置は、当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、を備える。
【発明の効果】
【０００８】
開示の情報処理システムによれば、障害発生時における通信経路の切り替えを効率的に行なうことができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態の一例としてのネットワークシステムの機能構成を模式的に示す図である。
【図２】実施形態の一例としてのネットワークシステムが備えるスイッチの機能構成を模式的に示す図である。
【図３】実施形態の一例としてのネットワークシステムが用いるOpenFlowを説明する図である。
【図４】実施形態の一例としてのネットワークシステムが用いるOpenFlowのフロー定義を示す図である。
【図５】実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。
【図６】実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。
【図７】（ａ）は実施形態の一例としてのネットワークシステムが用いるＡＣＬベースのフロー定義のRuleフィールドを示す図であり、（ｂ）はそのActionフィールドを示す図である。
【図８】（ａ）は実施形態の一例としてのネットワークシステムが用いるＦＤＢベースのフロー定義のRuleフィールドを示す図であり、（ｂ）はそのActionフィールドを示す図である。
【図９】（ａ）〜（ｄ）は、実施形態の一例としてのネットワークシステムにおけるＡＣＬベースのフロー制御のマッチングを例示する図である。
【図１０】実施形態の一例としてのネットワークシステムが用いるＶＸＬＡＮを説明する図である。
【図１１】（ａ）は実施形態の一例としてのネットワークシステムが用いるＶＸＬＡＮパケットの概略を示す図であり、（ｂ）はその詳細を示す図である。
【図１２】従来例としてのネットワークシステムが用いるＶＸＬＡＮのトラフィック特性を説明する図である。
【図１３】実施形態の一例としてのネットワークシステムにおけるマルチパスの分散を説明する図である。
【図１４】実施形態の一例としてのネットワークシステムのBack to Back構成におけるフロー制御を説明する図である。
【図１５】実施形態の一例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
【図１６】（ａ）〜（ｃ）は、実施形態の一例としてのネットワークシステムにおけるハッシュ計算を説明する図である。
【図１７】実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の第１の例を説明する図である。
【図１８】実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の第２の例を説明する図である。
【図１９】実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の詳細を例示する図である。
【図２０】実施形態の一例としてのネットワークシステムにおける障害ＩＤテーブルを例示する図である。
【図２１】（ａ）は実施形態の一例としてのネットワークシステムにおける制御メッセージを示す図であり、（ｂ）はそのＲＰＣパラメタの詳細を例示する図である。
【図２２】実施形態の一例としてのネットワークシステムが備えるコントローラにおけるフローリストの設定処理を示すフローチャートである。
【図２３】実施形態の一例としてのネットワークシステムにおけるフローリストの作成処理に用いるアルゴリズムを例示する図である。
【図２４】実施形態の一例としてのネットワークシステムが備えるスイッチにおけるフローリストの設定処理を示すフローチャートである。
【図２５】実施形態の一例としてのネットワークシステムが備えるスイッチにおけるＡＣＬテーブルの設定処理を示すフローチャートである。
【図２６】実施形態の一例としてのネットワークシステムが備えるスイッチにおけるＦＤＢテーブルの設定処理を示すフローチャートである。
【図２７】実施形態の一例としてのスイッチにおけるダウンリンク障害発生時のリンク障害発生通知の送信処理を示すフローチャートである。
【図２８】実施形態の一例としてのスイッチにおけるダウンリンク障害発生時のパス切り替え情報記録処理を示すフローチャートである。
【図２９】実施形態の一例としてのスイッチにおけるリンク障害通知受信時のパス切り替え処理を示すフローチャートである。
【図３０】実施形態の一例としてのスイッチにおけるアップリンク障害発生時のパス切り替え処理を示すフローチャートである。
【図３１】実施形態の一例としてのスイッチにおけるダウンリンク障害復旧時のリンク障害復旧通知の送信処理を示すフローチャートである。
【図３２】実施形態の一例としてのスイッチにおけるリンク障害復旧通知受信時のパスを切り替え前の状態に戻す処理を示すフローチャートである。
【図３３】実施形態の一例としてのスイッチにおけるアップリンク障害復旧時のパスを切り替え前の状態に戻す処理を示すフローチャートである。
【図３４】（ａ）は実施形態の一例としてのネットワークシステムが用いるOpenFlowテーブルを模式的に示す図であり、（ｂ）はそのコモディティスイッチを模式的に示す図である。
【図３５】実施形態の一例としてのネットワークシステムのBack to Back構成を例示する図である。
【図３６】実施形態の一例としてのネットワークシステムのFat Tree構成を例示する図である。
【図３７】従来のネットワークシステムと本実施形態の一例におけるネットワークシステムとにおける使用エントリ数を示す図である。
【図３８】実施形態の第１変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
【図３９】実施形態の第２変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
【図４０】従来のネットワークシステムと本実施形態の第１変形例及び第２変形例におけるネットワークシステムとにおける使用エントリ数を示す図である。
【図４１】（ａ）は実施形態の第３変形例としてのスイッチにおけるＡＣＬテーブルの書き換え前の状態を例示する図であり、（ｂ）はその書き換え後の状態を例示する図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して情報処理システム，スイッチ装置及び情報処理システムの制御方法に係る一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１１】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔Ａ〕実施形態の一例
〔Ａ−１〕システム構成
図１は、実施形態の一例としてのネットワークシステムの機能構成を模式的に示す図である。
【００１２】
本実施形態の一例としてのネットワークシステム（情報処理システム）１は、図１に示すようにスイッチ（スイッチ装置）１０−１，１０−２、コントローラ（ネットワーク制御装置）２０及びサーバ装置（送受信装置，情報処理装置）３０−１〜３０−４を備える。各サーバ装置３０−１〜３０−４は、１つ又は２つのスイッチ１０−１，１０−２を介して、他のサーバ装置３０−１〜３０−４と互いに通信可能に接続されている。例えば、サーバ装置３０−１は、スイッチ１０−１を介してサーバ装置３０−２と互いに通信可能に接続されている。また、サーバ装置３０−１は、スイッチ１０−１，１０−２を介してサーバ装置３０−３と互いに通信可能に接続されている。
【００１３】
以下、スイッチを示す符号としては、複数のスイッチのうち１つを特定する必要があるときには符号１０−１，１０−２を用いるが、任意のスイッチを指すときには符号１０を用いる。また、以下、サーバ装置を示す符号としては、複数のサーバ装置のうち１つを特定する必要があるときには符号３０−１〜３０−４を用いるが、任意のサーバ装置を指すときには符号３０を用いる。
【００１４】
サーバ装置３０は、例えば、サーバ機能を備えたコンピュータである。図１に示す例では、ネットワークシステム１が４つのサーバ装置３０−１〜３０−４を備えているが、３つ以下又は５つ以上のサーバ装置３０を備えることとしても良い。
コントローラ２０は、複数のスイッチ１０を制御し、各スイッチ１０に対してフロー制御を行なうための設定を行なう。コントローラ２０は、図１に示すようにCentral Processing Unit（ＣＰＵ）２１，メモリ２２及び記憶装置２３を備える。
【００１５】
記憶装置２３は、データを読み書き可能に格納する既知の装置であり、例えば、Hard Disk Drive（ＨＤＤ）やSolid State Drive（ＳＳＤ）である。本実施形態の一例においては、記憶装置２３は、例えば、フローリスト１００（設定データ；図３等を用いて後述）を格納する。
メモリ２２は、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。メモリ２２のＲＯＭには、Basic Input/Output System（ＢＩＯＳ）等のプログラムが書き込まれている。メモリ２２上のソフトウェアプログラムは、ＣＰＵ２１に適宜読み込まれて実行される。また、メモリ２２のＲＡＭは、一次記録メモリあるいはワーキングメモリとして利用される。
【００１６】
ＣＰＵ２１は、種々の制御や演算を行なう処理装置であり、メモリ２２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ２１は、図１に示すように、送信部２１１として機能する。
なお、この送信部２１１としての機能を実現するためのプログラム（制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【００１７】
送信部２１１としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ２２）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ２１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
送信部２１１は、複数のスイッチ１０に対して、複数のパケット伝送制御手法に従った、パケット伝送のためのルール情報を送信する。具体的には、送信部２１１は、記憶装置２３に格納されているフローリスト１００を読み出し、読み出したフローリスト１００に含まれるルール情報を対象のスイッチ１０へ送信する。また、送信部２１１は、各スイッチ１０に対して、自律的にリンクの障害状態を考慮してパス切り替えを行なうようにＡＣＬテーブル２２０（図１９を用いて後述）を設定する。
【００１８】
図２は、実施形態の一例としてのネットワークシステムが備えるスイッチの機能構成を模式的に示す図である。
スイッチ１０は、各サーバ装置３０間で送受信されるパケットを伝送する。スイッチ１０は、図２に示すようにＣＰＵ１１，スイッチングモジュール１２，受信ポート１４−１〜１４−Ｎ（以下、Ｎは１以上の整数），送信ポート１５−１〜１５−Ｎ及び管理用ポート１６を備える。
【００１９】
以下、受信ポートを示す符号としては、複数の受信ポートのうち１つを特定する必要があるときには符号１４−１〜１４−Ｎを用いるが、任意の受信ポートを指すときには符号１４を用いる。また、以下、送信ポートを示す符号としては、複数の送信ポートのうち１つを特定する必要があるときには符号１５−１〜１５−Ｎを用いるが、任意の送信ポートを指すときには符号１５を用いる。
【００２０】
受信ポート１４は、他の装置から送信されたパケットを受信するためのインタフェースである。具体的には、受信ポート１４は、他のスイッチ１０又はサーバ装置３０と通信可能に接続され、他のスイッチ１０又はサーバ装置３０から送信されたパケットを受信する。例えば、図１に示したスイッチ１０−１が備える受信ポート１４は、スイッチ１０−２及びサーバ装置３０−１，３０−２と通信可能に接続されている。
【００２１】
送信ポート１５は、他の装置へパケットを送信するためのインタフェースである。具体的には、送信ポート１５は、他のスイッチ１０又はサーバ装置３０と通信可能に接続され、他のスイッチ１０又はサーバ装置３０へパケットを送信する。例えば、図１に示したスイッチ１０−１が備える送信ポート１４は、スイッチ１０−２及びサーバ装置３０−１，３０−２と通信可能に接続されている。
【００２２】
管理用ポート１６は、コントローラ２０と通信可能に接続され、コントローラ２０から送信されたデータを受信し、又、コントローラ２０へのデータを送信するインタフェースである。本実施形態の一例においては、管理用ポート１６は、コントローラ２０の送信部２１１から送信されたフローリスト１００を受信する。また、管理用ポート１６は、受信したフローリスト１００に基づいて行なったスイッチ１０の設定結果をコントローラ２０へ送信する。
【００２３】
ＣＰＵ１１は、種々の制御や演算を行なう処理装置であり、図示しないメモリ又はスイッチングモジュール１２が備える後述するメモリ１３０に格納されたOperating System（ＯＳ）やプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ１１は、図２に示すように、設定部１１０（ＡＣＬ設定部１１１及びＦＤＢ設定部１１２）及び切り替え制御部１１５（リンク状態監視制御部１１６及びスイッチ連携部１１７）として機能する。
【００２４】
なお、この設定部１１０（ＡＣＬ設定部１１１及びＦＤＢ設定部１１２）及び切り替え制御部１１５（リンク状態監視制御部１１６及びスイッチ連携部１１７）としての機能を実現するためのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【００２５】
設定部１１０（ＡＣＬ設定部１１１及びＦＤＢ設定部１１２）及び切り替え制御部１１５（リンク状態監視制御部１１６及びスイッチ連携部１１７）としての機能を実現する際には、内部記憶装置（本実施形態では図示しないメモリ又はスイッチングモジュール１２が備える後述するメモリ１３０）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００２６】
設定部１１０は、図２に示すようにＡＣＬ設定部１１１及びＦＤＢ設定部１１２として機能する。
ＡＣＬ設定部１１１は、Access Control List（ＡＣＬ）に従ったフロー制御に関するフローテーブルの設定を行なう。具体的には、ＡＣＬ設定部１１１は、コントローラ２０の送信部２１１から受信したフローリスト１００に基づき、複数のパケット伝送制御手法のうち、ＡＣＬに従ったパケットの伝送を制御するＡＣＬテーブル（第１のルール情報；図１４及び図１９等を用いて後述）２００，２２０を登録する。
【００２７】
ＦＤＢ設定部１１２は、Forwarding Database（ＦＤＢ）に従ったフロー制御に関するフローテーブルの設定を行なう。具体的には、ＦＤＢ設定部１１２は、コントローラ２０の送信部２１１から受信したフローリスト１００に基づき、複数のパケット伝送制御手法のうち、ＡＣＬとは異なるＦＤＢに従ったパケットの伝送を制御するためのＦＤＢテーブル（第２のルール情報；図１４等を用いて後述）３００を登録する。
【００２８】
切り替え制御部１１５は、図２に示すようにリンク障害監視制御部（制御部）１１６及びスイッチ連携部（通知部）１１７として機能する。
リンク状態監視制御部１１６は、当該スイッチ１０に接続されたリンクで発生した障害を検知する。リンク状態監視制御部１１６は、当該スイッチ１０のアップリンク（根ノード）側の通信経路上で障害を検知した場合にＡＣＬテーブル２２０（図１９を用いて後述）を書き換えることで、複数の通信経路の切り替えを行なう。リンク状態監視制御部１１６は、当該スイッチ１０に接続されている他のスイッチ１０からのリンク障害発生通知に基づき、ＡＣＬテーブル２２０を書き換えることで、複数の通信経路の切り替えを行なう。
【００２９】
また、リンク状態監視制御部１１６は、通信経路（パス）の切り替えを行なった旨をコントローラ２０に通知する。
更に、リンク状態監視制御部１１６は、当該スイッチ１０に接続されたリンクで発生した障害の復旧を検知する。リンク状態監視制御部１１６は、当該スイッチ１０のアップリンク（根ノード）側で障害復旧を検知した場合にＡＣＬテーブル２２０（図１９を用いて後述）を書き換えることで、通信経路を切り替え前の状態に戻す。リンク状態監視制御部１１６は、当該スイッチ１０に接続されている他のスイッチ１０からのリンク障害復旧通知に基づき、ＡＣＬテーブル２２０を書き換えることで、通信経路を切り替え前の状態に戻す。
【００３０】
スイッチ連携部１１７は、リンク状態監視制御部１１６が検知したリンク障害に基づき、他のスイッチ１０にリンク障害発生を通知する。具体的には、スイッチ連携部１１７は、当該スイッチ１０のダウンリンク（葉ノード）側の通信経路上で障害を検知した場合に、当該スイッチ１０に接続されている他のスイッチ１０に、リンク障害発生通知（リンク障害ＩＤ；図１９を用いて後述）を送信する。また、スイッチ連携部１１７は、当該スイッチ１０に接続されている他のスイッチ１０からのリンク障害発生通知（リンク障害ＩＤ）を受信する。そして、スイッチ連携部１１７は、当該スイッチ１０のアップリンク（根ノード）側に使用可能な通信経路が無い場合に、当該スイッチ１０に接続されている他のスイッチ１０にリンク障害発生通知（リンク障害ＩＤ）を転送する。なお、使用可能な通信経路が無い場合とは、物理的に通信経路が接続されていても、パケットの伝送ができない状態である。
【００３１】
また、リンク障害発生通知を受信したスイッチ１０のスイッチ連携部１１７は、リンク障害発生通知を送信したスイッチ１０に対して、パス切り替えに関する情報をパス切り替え応答として送信する。リンク障害発生通知を送信したスイッチ１０のスイッチ連携部１１７は、リンク障害発生通知を受信したスイッチ１０から、パス切り替えに関する情報をパス切り替え応答として受信する。そして、パス切り替え応答を受信したスイッチ連携部１１７は、パス切り替え応答に含まれる情報をパス切り替え情報として、例えばメモリ１３０に格納する。
【００３２】
更に、スイッチ連携部１１７は、リンク状態監視制御部１１６が検知したリンク障害復旧に基づき、他のスイッチ１０にリンク障害復旧を通知する。具体的には、スイッチ連携部１１７は、当該スイッチ１０のダウンリンク（葉ノード）側で障害復旧を検知した場合に、パス切り替え情報に基づいて特定したスイッチ１０に、リンク障害復旧通知（リンク障害ＩＤ＝０；図１９を用いて後述）を送信する。また、スイッチ連携部１１７は、他のスイッチ１０からのリンク障害復旧通知（リンク障害ＩＤ＝０）を受信する。
【００３３】
スイッチングモジュール１２は、図示しないスイッチング回路（例えば、クロスバースイッチ）を有し、入力されたパケット毎にその経路を自在に変更するものである。スイッチングモジュール１２は、図２に示すようにTernary Content Addressable 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に行なう（事前設定）。コントローラ２０による事前設定のタイミングは、ＷＭＴの構築と同じタイミングに加え、サーバ装置３０やサーバ装置３０が展開するVirtual Machine（ＶＭ）の起動／停止／移動時等でも良い。このように、コントローラ２０の設定によってＥＭＴを構築する方式は、ネットワークシステム１における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２へ送信する（矢印Ｃ２参照）。送信先装置のＶＴＥＰ３２は、ＶＮＩ及びオリジナルデータの宛先から宛先ＶＭを特定し、ＶＸＬＡＮヘッダを削除して図示しないＶＭへ渡す（矢印Ｃ３参照）。一方、論理的には、ＶＭ間の通信は、VXLAN 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のベンダー拡張が必要となる。
図１７は、実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の第１の例を説明する図である。
【００９０】
図１７に例示するネットワークシステム１は、Fat Tree構成になっており、１２個のスイッチ１０（ＳＷ１１〜ＳＷ１４，ＳＷ２１〜ＳＷ２４及びＳＷ３１〜ＳＷ３４），コントローラ２０及び８つのサーバ装置３０を備える。
以下、図１７を参照しながら説明する際に、特定のスイッチ１０を指す場合には、単に「ＳＷ１１」〜「ＳＷ１４」，「ＳＷ２１」〜「ＳＷ２４」又は「ＳＷ３１」〜「ＳＷ３４」と表記する。また、以下、図１７を参照しながら説明する際に、「ＳＷ３１」〜「ＳＷ３４」を「根ノードのスイッチ１０」といい、「ＳＷ１１」〜「ＳＷ１４」を「葉ノードのスイッチ１０という場合がある。更に、以下、「根ノードのスイッチ１０側」を「アップリンク側」といい、「葉ノードのスイッチ１０側」を「ダウンリンク側」という場合がある。
【００９１】
まず、コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリを各スイッチ１０に対して設定（送信）する（符号Ｋ１参照）。具体的には、送信部２１１は、リンクの状態を考慮してパス切り替えを行なうようにＡＣＬのエントリを各スイッチ１０に対して設定する。
図１７に示す例においては、ＳＷ２１とＳＷ３１との間でリンク障害が発生する（符号Ｋ２参照）。
【００９２】
ＳＷ２１のリンク状態監視制御部１１６は、アップリンク（根ノード）側で発生したリンク障害を検知し、ＳＷ３１への経路を予め設定されている使用可能な他のアップリンクのスイッチ１０、すなわち、ＳＷ３２に切り替える（符号Ｋ３参照）。
ＳＷ３１のリンク状態監視制御部１１６は、ダウンリンク（葉ノード）側で発生したリンク障害を検知する。そして、スイッチ連携部１１７は、接続されている全てのスイッチ１０、すなわち、ＳＷ２３にリンク障害ＩＤを送信する（符号Ｋ４参照）。
【００９３】
ＳＷ２３のスイッチ連携部１１７は、ＳＷ３１からのリンク障害ＩＤを受信する。そして、リンク状態監視制御部１１６は、ＳＷ３１への経路を予め設定されている使用可能な他のアップリンクのスイッチ１０、すなわち、ＳＷ３２に切り替える（符号Ｋ５参照）。
図１８は、実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の第２の例を説明する図である。
【００９４】
図１８に例示するネットワークシステム１は、図１７に示したネットワークシステム１と同様のFat Tree構成になっている。
まず、コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリを各スイッチ１０に対して設定（送信）する（符号Ｌ１参照）。具体的には、送信部２１１は、リンクの状態を考慮してパス切り替えを行なうようにＡＣＬのエントリを各スイッチ１０に対して設定する。
【００９５】
図１８に示す例においては、ＳＷ１１とＳＷ２１との間でリンク障害が発生する（符号Ｌ２参照）。
ＳＷ１１のリンク状態監視制御部１１６は、アップリンク（根ノード）側で発生したリンク障害を検知し、ＳＷ２１への経路を予め設定されている使用可能な他のアップリンクのスイッチ１０、すなわち、ＳＷ２２に切り替える（符号Ｌ３参照）。
【００９６】
ＳＷ２１のリンク状態監視制御部１１６は、ダウンリンク（葉ノード）側で発生したリンク障害を検知する。そして、スイッチ連携部１１７は、接続されている全てのスイッチ１０、すなわち、ＳＷ１２，ＳＷ３１及びＳＷ３２にリンク障害ＩＤを送信する（符号Ｌ４参照）。
ＳＷ１２のスイッチ連携部１１７は、ＳＷ２１からのリンク障害ＩＤを受信する。そして、リンク状態監視制御部１１６は、ＳＷ２１への経路を予め設定されている使用可能な他のアップリンクのスイッチ１０、すなわち、ＳＷ２２に切り替える（符号Ｌ５参照）。
【００９７】
ＳＷ３１及びＳＷ３２のスイッチ連携部１１７は、ＳＷ２１からのリンク障害ＩＤを受信する。ＳＷ３１及びＳＷ３２はともに根ノードのスイッチ１０でありアップリンク側のスイッチ１０がないため、ＳＷ３１及びＳＷ３２のスイッチ連携部１１７は、受信したリンク障害ＩＤを接続されている全てのスイッチ１０、すなわち、ＳＷ２３に転送（中継）する（符号Ｌ６参照）。
【００９８】
ＳＷ２３のスイッチ連携部１１７は、ＳＷ３１及びＳＷ３２からのリンク障害ＩＤを受信する。ＳＷ２３のアップリンク（根ノード）側には使用可能な通信経路がないため、ＳＷ２３のスイッチ連携部１１７は、受信したリンク障害ＩＤを接続されている全てのスイッチ１０、すなわち、ＳＷ１３及びＳＷ１４に転送（中継）する（符号Ｌ７参照）。
ＳＷ１３及びＳＷ１４のスイッチ連携部１１７は、ＳＷ２３からのリンク障害ＩＤを受信する。そして、ＳＷ１３及びＳＷ１４のリンク状態監視制御部１１６は、ＳＷ２３への経路を予め設定されている使用可能な他のアップリンクのスイッチ１０、すなわち、ＳＷ２４に切り替える（符号Ｌ８参照）。
【００９９】
図１９は、実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の詳細を例示する図である。
図１９に例示するネットワークシステム１は、Fat Tree構成になっており、４つのスイッチ１０（ＳＷ１１，ＳＷ１２，ＳＷ２１及びＳＷ２２），コントローラ２０及び４つのサーバ装置３０（Ｓ１〜Ｓ４）を備える。また、図１９では簡単のため省略しているが、ＡＣＬを検索する際のL4sportの値はマスク値0x0001でマスクされているものとする。
【０１００】
以下、図１９を参照しながら説明する際に、特定のスイッチ１０を指す場合には、単に「ＳＷ１１」，「ＳＷ１２」，「ＳＷ２１」又は「ＳＷ２２」と表記する。また、以下、図１９を参照しながら説明する際に、特定のサーバ装置３０を指す場合には、単に「Ｓ１」，「Ｓ２」，「Ｓ３」又は「Ｓ４」と表記する。
まず、コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリ（ＦＤＢテーブル３００及びＡＣＬテーブル２２０）を各スイッチ１０に対して設定（送信）する（符号Ｍ１参照）。具体的には、送信部２１１は、メモリ１３０のＦＤＢ記憶部１３１にＦＤＢテーブル３００を格納させ、又、ＴＣＡＭ１２０のＡＣＬ記憶部１２１にＡＣＬテーブル２２０を格納させる。つまり、送信部２１１は、リンクの状態を考慮してパス切り替えを行なうようにＡＣＬテーブル２２０を各スイッチ１０に対して設定する。なお、図１９においては、ＳＷ２１及びＳＷ２２のＡＣＬテーブル２２０の図示を省略したが、設定部１１２は、ＳＷ２１及びＳＷ２２に対してもＡＣＬテーブル２２０を設定しても良い。
【０１０１】
図１９に示すＡＣＬテーブル２２０は、図１４及び図１５に示したＡＣＬテーブル２００が格納するL4sport及びPortに加えて、Failure Id（リンク障害ＩＤ）を格納する。つまり、ＡＣＬテーブル２２０は、L4sportとFailure IdとPortとを互いに対応づけて格納する。リンク障害ＩＤは、障害が検知されたリンク（通信経路）を示す識別情報である。例えば、ＳＷ１１のＡＣＬテーブル２２０は、L4sport＝0に対して、Failure Id=0の場合及びFailure Id=10の場合について、出力先ポートとしてPort=P3及びPort=P4をそれぞれ対応づけて格納する。なお、Failure Id=0, 10は、障害なし（no failure）及びＳＷ１１のＰ３ポートでリンク障害発生（SW11-P3 down）をそれぞれ示す。更に、ＳＷ１１のＡＣＬテーブル２２０は、L4sport＝1に対して、Failure Id=0の場合及びFailure Id=11の場合について、出力先ポートとしてPort=P4及びPort=P3をそれぞれ対応づけて格納する。なお、Failure Id=11は、ＳＷ２２のＰ２ポートでリンク障害発生（SW22-P2 down）を示す。また、ＳＷ１２のＡＣＬテーブル２２０は、L4sport＝0に対して、Failure Id=0の場合及びFailure Id=20の場合について、出力先ポートとしてPort=P3及びPort=P4をそれぞれ対応づけて格納する。なお、Failure Id=20は、ＳＷ２１のＰ１ポートでリンク障害発生（SW21-P1 down）をそれぞれ示す。更に、ＳＷ２１のＡＣＬテーブル２２０は、L4sport＝1に対して、Failure Id=0の場合及びFailure Id=21の場合について、出力先ポートとしてPort=P4及びPort=P3をそれぞれ対応づけて格納する。なお、Failure Id=21は、ＳＷ１２のＰ４ポートでリンク障害発生（SW12-P4 down）を示す。
【０１０２】
ここで、図１９を参照しながら、ネットワークシステム１のいずれにおいてもリンク障害が発生していない場合において、図１５の符号Ｆ２及びＦ３に示したパケット＃２を伝送する例について説明する。
図１５の符号Ｆ２に示したように、パケット＃２の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が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ１ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ１２のＰ１ポートを介してＳ３に対してパケットを伝送させる。
【０１０６】
次に、図１９を参照しながらリンク障害発生時のパス切り替え処理の詳細を説明する。
上述したように、コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリ（ＦＤＢテーブル３００及びＡＣＬテーブル２２０）を各スイッチ１０に対して設定（送信）する（符号Ｍ１参照）。
ここで、ＳＷ１１のＰ３ポートとＳＷ２１のＰ１ポートとの間でリンク障害が発生する（符号Ｍ２参照）。
【０１０７】
ＳＷ１１のリンク状態監視制御部１１６は、Ｐ３ポートで発生したリンク障害を検知し、Ｐ３ポートを経由するＳＷ２１への経路を、Ｐ４ポートを経由するＳＷ２２に切り替える。具体的には、リンク状態監視制御部１１６は、後述する障害ＩＤテーブルに基づき、ＳＷ１１のＰ３ポートでリンク障害発生を示すFailure Id=10をＡＣＬテーブル２２０に入力する。これにより、リンク状態監視制御部１１６は、L4sport=0のパケットについての出力先ポートをＰ３ポートからＰ４ポートに切り替える。
【０１０８】
ＳＷ２１のリンク状態監視制御部１１６は、Ｐ１ポートで発生したリンク障害を検知する。そして、スイッチ連携部１１７は、図２０を用いて後述する障害ＩＤテーブルに基づき、ＳＷ２１のＰ１ポートでリンク障害が発生したことを示すFailure Id=20をリンク障害発生通知としてＳＷ１２に送信する（符号Ｍ３参照）。
ＳＷ１２のスイッチ連携部１１７は、ＳＷ２１からのリンク障害発生通知（Failure Id=20）を受信する。そして、リンク状態監視制御部１１６は、Ｐ３ポートを経由するＳＷ２１への経路を、Ｐ４ポートを経由するＳＷ２２に切り替える。具体的には、リンク状態監視制御部１１６は、図２０を用いて後述する障害ＩＤテーブルに基づき、ＳＷ２１から受信したFailure Id=20をＡＣＬテーブル２２０に入力する。これにより、リンク状態監視制御部１１６は、L4sport=0のパケットについての出力先ポートをＰ３ポートからＰ４ポートに切り替える。
【０１０９】
すなわち、ＡＣＬテーブル２２０は、障害が検知された通信経路を示すリンク障害ＩＤと、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納する。そして、リンク状態監視制御部１１６は、リンク障害ＩＤをＡＣＬテーブル２２０に書き込むことにより、複数の通信経路の切り替えを行なう。
次に、図１９を参照しながら、ＳＷ１１のＰ３ポートとＳＷ２１のＰ１ポートとの間でリンク障害が発生した場合（符号Ｍ２参照）において、図１５の符号Ｆ２及びＦ３に示したパケット＃２を伝送する例について説明する。
【０１１０】
図１５の符号Ｆ２に示したように、パケット＃２のDA，SA及びL4sportには、S3，S1及び0がそれぞれ設定されている。
ＳＷ１１のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ１のＦＤＢフローテーブル３００にS3が格納されていないため、ＳＷ１１のＡＣＬ制御部１２２は、ＡＣＬテーブル２００を参照し、L4sport=0の場合のアクションを確認する。ここでは、ＳＷ１１のＡＣＬテーブル２２０には、L4sport=0に対して、Port=P3が格納されているとともに、Failure Id=10が書き込まれている。そこで、ＳＷ１１のＡＣＬ制御部１２２は、Failure Id=0の場合のアクションに優先して、Failure Id=10の場合のアクションを実行することにより、Ｐ４ポートを選択する。すなわち、ＡＣＬ制御部１２２は、ＳＷ１１のＰ４ポートを介してＳＷ２２に対してパケットを伝送させる。
【０１１１】
ＳＷ２２のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ２２のＦＤＢテーブル３００にServer=S3に対してPort=P2が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ２ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ２２のＰ２ポートを介してＳＷ１２に対してパケットを伝送させる。
【０１１２】
ＳＷ１２のＦＤＢ制御部１３２は、ＦＤＢテーブル３００を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、ＳＷ１２のＦＤＢテーブル３００にServer=S3に対してPort=P1が格納されているため、ＦＤＢ制御部１３２は、アクションとしてＰ１ポートからパケットを出力する。すなわち、ＦＤＢ制御部１３２は、ＳＷ１２のＰ１ポートを介してＳ３に対してパケットを伝送させる。
【０１１３】
このようにＳＷ１１のＰ３ポートとＳＷ２１のＰ１ポートとの間でリンク障害が発生した場合（符号Ｍ２参照）においては、例えばDA，SA及びL4sportに、S1，S3及び0がそれぞれ設定されたパケットについても、上述したパケット＃２と同様に送信することができる。ＳＷ１２のＡＣＬテーブル２２０には、L4sport=0に対して、Port=P3が格納されているとともに、Failure Id=20が書き込まれている。そこで、ＳＷ１１のＡＣＬ制御部１２２は、Failure Id=0の場合のアクションに優先して、Failure Id=20の場合のアクションを実行することにより、Ｐ４ポートを選択する。これにより、ＳＷ１２は、パケットを、リンク障害が発生したＳＷ２１ではなく、使用可能な通信経路のあるＳＷ２２に伝送することができる。
【０１１４】
すなわち、ＡＣＬテーブル２２０は、リンク障害ＩＤと出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納する。そして、スイッチ１０は、マスク適用後のヘッダ情報に基づいて選択したルール情報に従って入力パケットの制御を行なう。言い換えれば、スイッチ１０は、ＡＣＬテーブル２２０にリンク障害ＩＤが入力されている場合には、当該リンク障害ＩＤに関連付けられたポートに入力パケットを出力する。
【０１１５】
図２０は、実施形態の一例としてのネットワークシステムにおける障害ＩＤテーブルを例示する図である。
コントローラ２０の送信部２１１は、ＦＤＢテーブル３００及びＡＣＬテーブル２２０とともに、Proactive（事前）に図２０に示すような障害ＩＤテーブルを各スイッチ１０に対して設定（送信）する。
【０１１６】
図２０には、一例として、図１９に示したＳＷ１２に対して設定される障害ＩＤテーブルを示す。
障害ＩＤテーブルには、障害内容と、その障害が発生した場合にリンク状態監視制御部１１６がＡＣＬテーブル２２０に設定すべきリンク障害ＩＤとが互いに対応づけて格納される。例えば、図２０に示すように、ＳＷ１２のＰ３ポートでリンクダウンが発生した場合には、ＳＷ１２のリンク状態監視制御部１１６は、障害ＩＤテーブルを参照して、ＡＣＬテーブル２２０にFailure Id=20を書き込む。また、ＳＷ１２のＰ４ポートでリンクダウンが発生した場合には、ＳＷ１２のリンク状態監視制御部１１６は、障害ＩＤテーブルを参照して、ＡＣＬテーブル２２０にFailure Id=21を書き込む。
【０１１７】
図２１（ａ）は実施形態の一例としてのネットワークシステムにおける制御メッセージを示す図であり、図２１（ｂ）はそのＲＰＣパラメタの詳細を例示する図である。
スイッチ連携部１１７は、リンク障害発生通知，リンク障害復旧通知及びパス切り替え応答（リンク障害発生通知及びリンク障害復旧通知に対する応答）を、図２１（ａ），（ｂ）に示す制御メッセージを用いて行なう。
【０１１８】
図２１（ａ）に示すように、制御メッセージは、ＩＰヘッダ，User Datagram Protocol/Transmission Control Protocol（ＵＤＰ／ＴＣＰ）ヘッダ，Remote Procedure Call（ＲＰＣ）ヘッダ及びＲＰＣパラメタを含む。
図２１（ｂ）に例示するように、ＲＰＣパラメタは、パラメタ数，メッセージ種別，ポート番号，障害ＩＤ及びパス切り替え情報を含む。
【０１１９】
メッセージ種別は、リンク障害発生通知，リンク障害復旧通知及びパス切り替え応答の別を示す。例えば、スイッチ連携部１１７は、リンク障害発生通知，リンク障害復旧通知及びパス切り替え応答に対して、１０，１１及び１２をそれぞれ設定する。
ポート番号は、障害が発生し又は復旧したスイッチのＩＤ及びポート番号を示す。例えば、スイッチ連携部１１７は、ポート番号に対して、ＳＷ２１のＰ１で障害が発生し又は復旧した場合には２１／０１を設定する。
【０１２０】
障害ＩＤは、障害の内容を示す。例えば、スイッチ連携部１１７は、障害ＩＤに対して、障害なしの場合には０を設定し、ＳＷ２１のＰ１ポートがリンクダウンした場合には２０を設定する。
パス切り替え情報は、切り替え後のパスを示す。例えば、スイッチ連携部１１７は、ＳＷ１２のパスをＰ３ポートに切り替えた場合には、パス切り替え情報に対して、１２／０３を設定する。
【０１２１】
〔Ａ−２〕動作
上述の如く構成された実施形態の一例としてのネットワークシステム１が備えるコントローラ２０におけるフローリスト１００の設定処理を図２２に示すフローチャート（ステップＳ１０〜Ｓ６０）に従って説明する。
始めに、図２３を用いて後述するようにして作成したフローリスト１００を、例えばコントローラ２０の記憶装置２３に入力（格納）する（符号Ｈ１参照）。入力されるフローリスト１００には、例えば、設定対象のスイッチ１０を示す対象ＳＷ，フローの追加／削除／変更を指定する操作，フローを識別するマッチングルールであるルール及びマッチした場合の動作を示すアクションが互いに関連付けられている。
【０１２２】
コントローラ２０の送信部２１１は、フローリスト１００が空であるか否かを判定する（ステップＳ１０）。言い換えれば、送信部２１１は、図２２に示すフローテーブル１００の１〜Ｎの内容が全て対象スイッチ１０に設定済みであるか否かを判定する。
フローリスト１００が空である場合には（ステップＳ１０のＹＥＳルート参照）、コントローラ２０におけるフローテーブル１００の設定処理が完了する。
【０１２３】
フローリスト１００が空でない場合には（ステップＳ１０のＮＯルート参照）、送信部２１１は、フローリスト１００から１行取り出す（ステップＳ２０）。フローリスト１００から取り出した情報には、例えば、対象スイッチのＩＤ，操作（追加／変更／削除），ルール及びアクションが含まれる（符号Ｈ２参照）。
送信部２１１は、対象スイッチ１０と通信し、フローリスト１００を設定する（ステップＳ３０）。
【０１２４】
送信部２１１は、スイッチ１０からの返信を受信する（ステップＳ４０）。
送信部２１１は、スイッチ１０からの返信に基づき、設定が成功したか否かを判定する（ステップＳ５０）。
設定が成功した場合には（ステップＳ５０のＹＥＳルート参照）、フローリスト１００の次の行に移り、ステップＳ１０に戻る。
【０１２５】
設定が成功しなかった場合には（ステップＳ５０のＮＯルート参照）、送信部２１１は、例えばコントローラ２０の図示しない表示装置にエラーを出力し（ステップＳ６０）、コントローラ２０におけるフローテーブル１００の設定処理が完了する。
図２３は、実施形態の一例としてのネットワークシステムにおけるフローテーブルの作成処理に用いるアルゴリズムを例示する図である。
【０１２６】
図２３に示すアルゴリズムは、トポロジ情報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エントリ消費する。
【０１９１】
このように、本実施形態の第１変形例及び第２変形例におけるネットワークシステム１−１，１−２によっても、上述した実施形態の一例におけるネットワークシステム１と同様に、各スイッチ１０における消費エントリ数を削減することができる。
〔Ｂ−４〕第３変形例
図４１（ａ）は実施形態の第３変形例としてのスイッチにおけるＡＣＬテーブルの書き換え前の状態を例示する図であり、図４１（ｂ）はその書き換え後の状態を例示する図である。
【０１９２】
本実施形態の第３変形例におけるＡＣＬテーブル２３０は、図４１（ａ），（ｂ）に示すように、図１４及び図１５に示したＡＣＬテーブル２００と同様にL4sport及びPortを格納する。
コントローラ２０の送信部２１１は、Proactive（事前）にＦＤＢ及びＡＣＬのエントリ（図１９に示したＦＤＢテーブル３００及び図４１（ａ）に示すＡＣＬテーブル２３０）を各スイッチ１０に対して設定（送信）する。
【０１９３】
例えば、図１９に示したＳＷ１１のＰ３ポートとＳＷ２１のＰ１ポートとの間でリンク障害が発生した場合には（図１９の符号Ｍ２参照）、ＳＷ１１のリンク状態監視制御部１１６は、図４１（ｂ）に示すように、L4 sport=0についての出力先ポートをPort=P4に書き換える。また、図１９の符号Ｍ２で示したリンク障害を検知したＳＷ２１からリンク障害発生通知を受信したＳＷ１２も、図４１（ｂ）に示すように、L4 sport=0についての出力先ポートをPort=P4に書き換える。
【０１９４】
すなわち、リンク状態監視制御部１１６は、ＡＣＬテーブル２３０におけるパケットの出力先の通信経路を書き換えることにより、複数の通信経路の切り替えを行なう。
このように、本実施形態の第３変形例におけるネットワークシステム１によっても、上述した実施形態の一例におけるネットワークシステム１と同様に、障害発生時における通信経路の切り替えを効率的に行なえる。
【０１９５】
〔Ｃ〕付記
（付記１）
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムにおいて、
前記スイッチ装置は、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、
を備えることを特徴とする、情報処理システム。
【０１９６】
（付記２）
前記制御部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、前記フローテーブルを書き換えることで、複数の通信経路の切り替えを行なう、
ことを特徴とする、付記１に記載の情報処理システム。
（付記３）
前記通知部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、当該スイッチ装置の根ノード側に使用可能な通信経路が無い場合に、当該スイッチ装置に接続されている他のスイッチ装置に前記通知を転送する、
ことを特徴とする、付記１又は２に記載の情報処理システム。
【０１９７】
（付記４）
当該スイッチ装置は、前記フローテーブルに前記識別情報が登録されている場合には、当該識別情報に対応する出力先ポートに前記パケットを出力する、
ことを特徴とする、付記１〜３のいずれか１項に記載の情報処理システム。
（付記５）
前記フローテーブルは、前記識別情報と前記出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に前記出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納し、
当該スイッチ装置は、前記マスク適用後のヘッダ情報に基づいて選択したルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、付記１〜４のいずれか１項に記載の情報処理システム。
【０１９８】
（付記６）
前記制御部は、前記複数の通信経路の切り替えを行なった場合に、前記複数のスイッチ装置と通信可能に接続されたネットワーク制御装置に、前記切り替えを行なった旨を通知する、
ことを特徴とする、付記１〜５のいずれか１項に記載の情報処理システム。
【０１９９】
（付記７）
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムが備えるスイッチ装置において、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、
を備えることを特徴とする、スイッチ装置。
【０２００】
（付記８）
前記制御部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、前記フローテーブルを書き換えることで、複数の通信経路の切り替えを行なう、
ことを特徴とする、付記７に記載のスイッチ装置。
（付記９）
前記通知部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、当該スイッチ装置の根ノード側に使用可能な通信経路が無い場合に、当該スイッチ装置に接続されている他のスイッチ装置に前記通知を転送する、
ことを特徴とする、付記７又は８に記載のスイッチ装置。
【０２０１】
（付記１０）
前記フローテーブルは、前記識別情報と前記出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に前記出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納し、
当該スイッチ装置は、前記マスク適用後のヘッダ情報に基づいて選択したルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、付記７〜９のいずれか１項に記載のスイッチ装置。
【０２０２】
（付記１１）
前記制御部は、前記複数の通信経路の切り替えを行なった場合に、前記複数のスイッチ装置と通信可能に接続されたネットワーク制御装置に、前記切り替えを行なった旨を通知する、
ことを特徴とする、付記７〜１０のいずれか１項に記載のスイッチ装置。
【０２０３】
（付記１２）
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムの制御方法であって、
前記スイッチ装置は、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行ない、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する、
ことを特徴とする、情報処理システムの制御方法。
【０２０４】
（付記１３）
当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、前記フローテーブルを書き換えることで、複数の通信経路の切り替えを行なう、
ことを特徴とする、付記１２に記載の情報処理システムの制御方法。
（付記１４）
当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、当該スイッチ装置の根ノード側に使用可能な通信経路が無い場合に、当該スイッチ装置に接続されている他のスイッチ装置に前記通知を転送する、
ことを特徴とする、付記１２又は１３に記載の情報処理システムの制御方法。
【０２０５】
（付記１５）
前記フローテーブルは、前記識別情報と前記出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に前記出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納し、
当該スイッチ装置は、前記マスク適用後のヘッダ情報に基づいて選択したルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、付記１２〜１４のいずれか１項に記載の情報処理システムの制御方法。
【符号の説明】
【０２０６】
１        ネットワークシステム（情報処理システム）
１００    フローリスト
１０      スイッチ（スイッチ装置）
１１      ＣＰＵ（コンピュータ）
１１０    設定部
１１１    ＡＣＬ設定部（第１のパケット伝送制御部）
１１２    ＦＤＢ設定部（第２のパケット伝送制御部）
１１５    切り替え制御部
１１６    リンク状態監視制御部（制御部）
１１７    スイッチ連携部（通知部）
１２      スイッチングモジュール
１２０    ＴＣＡＭ（第１のパケット伝送制御部）
１２１    ＡＣＬ記憶部（第１の記憶部）
１２２    ＡＣＬ制御部（第１のパケット伝送制御部）
１３０    メモリ（第２のパケット伝送制御部）
１３１    ＦＤＢ記憶部（第２の記憶部）
１３２    ＦＤＢ制御部（第２のパケット伝送制御部）
１４      受信ポート
１５      送信ポート
１６      管理用ポート
２        L2/L3 network
２００    ＡＣＬテーブル（第１のルール情報）
２１０    ＡＣＬテーブル（第１のルール情報）
２２０    ＡＣＬテーブル（ルール情報）
２３０    ＡＣＬテーブル（ルール情報）
２０      コントローラ（ネットワーク制御装置）
２１      ＣＰＵ（コンピュータ）
２１１    送信部
２２      メモリ
２３      記憶装置
３        VXLAN network
３００    ＦＤＢテーブル（第２のルール情報）
３１０    ＦＤＢテーブル（第２のルール情報）
３２０    ＦＤＢテーブル（第２のルール情報）
３０      サーバ装置（送受信装置，情報処理装置）
３０ａ    仮想環境
３１      ＡＰＰ／ＯＳ
３２      ＶＴＥＰ
３３      ＶＭ
４０      ＬＡＧ
５０      スイッチ
６０      サーバ装置
６１      ＶＭ
６２      ＶＴＥＰ
６３      ＮＩＣ
Ａ        折り返し点
【図１】
2015091035.tif 000003
【図２】
2015091035.tif 000004
【図３】
2015091035.tif 000005
【図４】
2015091035.tif 000006
【図５】
2015091035.tif 000007
【図６】
2015091035.tif 000008
【図７】
2015091035.tif 000009
【図８】
2015091035.tif 000010
【図９】
2015091035.tif 000011
【図１０】
2015091035.tif 000012
【図１１】
2015091035.tif 000013
【図１２】
2015091035.tif 000014
【図１３】
2015091035.tif 000015
【図１４】
2015091035.tif 000016
【図１５】
2015091035.tif 000017
【図１６】
2015091035.tif 000018
【図１７】
2015091035.tif 000019
【図１８】
2015091035.tif 000020
【図１９】
2015091035.tif 000021
【図２０】
2015091035.tif 000022
【図２１】
2015091035.tif 000023
【図２２】
2015091035.tif 000024
【図２３】
2015091035.tif 000025
【図２４】
2015091035.tif 000026
【図２５】
2015091035.tif 000027
【図２６】
2015091035.tif 000028
【図２７】
2015091035.tif 000029
【図２８】
2015091035.tif 000030
【図２９】
2015091035.tif 000031
【図３０】
2015091035.tif 000032
【図３１】
2015091035.tif 000033
【図３２】
2015091035.tif 000034
【図３３】
2015091035.tif 000035
【図３４】
2015091035.tif 000036
【図３５】
2015091035.tif 000037
【図３６】
2015091035.tif 000038
【図３７】
2015091035.tif 000039
【図３８】
2015091035.tif 000040
【図３９】
2015091035.tif 000041
【図４０】
2015091035.tif 000042
【図４１】
2015091035.tif 000043