(57)【特許請求の範囲】
【請求項１】
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、受信した死活監視用パケットを、前記各スイッチのデータ転送処理を一元的に制御するコントローラへ転送する死活監視用パケット転送手段と、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧＡＲＰ(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記ＧＡＲＰパケットを転送するＧＡＲＰパケット転送手段と、
を備え、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報と、前記物理的に冗長化されているネットワーク機器が接続されているスイッチのうちで、いずれのスイッチに接続されているネットワーク機器が現用系ネットワーク機器かを識別可能な現用系情報と、を対応つけた接続情報を格納する記憶部と、
前記ＧＡＲＰパケット転送手段により転送された前記ＧＡＲＰパケットに含まれる、前記現用系ネットワーク機器の物理ＭＡＣ(Media Access Control)アドレスを取得する取得手段と、
前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる死活監視用パケット転送制御手段と、
前記取得手段により取得された前記現用系ネットワーク機器の物理ＭＡＣアドレスと前記接続情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先ＭＡＣアドレスと一致する前記現用系ネットワーク機器の物理ＭＡＣアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する経路算出手段と、
前記経路算出手段により算出された経路上の各スイッチを制御して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想ＩＰ(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるパケット転送制御手段と、
を備える、
ことを特徴とするオープンフローネットワークシステム。
【請求項２】
前記死活監視用パケット転送制御手段は、前記記憶部に格納されている前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、特定したネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記特定したネットワーク機器へ送信させる、
ことを特徴とする請求項１に記載のオープンフローネットワークシステム。
【請求項３】
前記コントローラが、
前記記憶部に格納されている接続情報を参照して、前記死活監視用パケットを送信したネットワーク機器が現用系ネットワーク機器か否かを判定する送信元判定手段をさらに備え、
死活監視用パケット転送制御手段は、前記送信元判定手段により前記死活監視用パケットを送信したネットワーク機器が現用系ネットワーク機器であると判定された場合のみ、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる、
ことを特徴とする請求項１または２に記載のオープンフローネットワークシステム。
【請求項４】
前記コントローラが、
現用系ネットワーク機器からの死活監視用パケットが所定時間内に受信できなかった場合には、該現用系ネットワーク機器に障害が発生したと判定し、前記接続情報の対応する現用系情報を更新する更新手段をさらに備える、
ことを特徴とする請求項１乃至３のいずれか一に記載のオープンフローネットワークシステム。
【請求項５】
前記物理的に冗長化されているネットワーク機器は、ＶＲＲＰ(Virtual Router Redundancy Protocol)機能を備え、前記死活監視用パケットは、ＶＲＲＰパケットである、
ことを特徴とする請求項１乃至４のいずれか一に記載のオープンフローネットワークシステム。
【請求項６】
前記物理的に冗長化されているネットワーク機器は、ルータである、
ことを特徴とする請求項１乃至５のいずれか一に記載のオープンフローネットワークシステム。
【請求項７】
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローの設定を、自スイッチから前記死活監視用パケットの送信先のネットワーク機器までの経路上の各スイッチに対して実行するよう要求するフロー設定要求を、コントローラへ送信するフロー設定要求送信手段と、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧＡＲＰ(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記ＧＡＲＰパケットを転送するＧＡＲＰパケット転送手段と、
を備え、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報を格納する記憶部と、
前記ＧＡＲＰパケット転送手段により転送された前記ＧＡＲＰパケットに含まれる、前記現用系ネットワーク機器の物理ＭＡＣ(Media Access Control)アドレスを取得する取得手段と、
前記フロー設定要求を受信すると、前記記憶部に格納されている前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、前記フロー設定要求を送信したスイッチから、特定したネットワーク機器までの経路を算出する第１経路算出手段と、
前記第１経路算出手段により算出された経路上の各スイッチに対して、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信させるためのフローをそれぞれ設定する死活監視用パケット転送制御手段と、
前記取得手段により取得された前記現用系ネットワーク機器の物理ＭＡＣアドレスと前記ネットワーク機器スイッチ対応情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先ＭＡＣアドレスと一致する前記現用系ネットワーク機器の物理ＭＡＣアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する第２経路算出手段と、
前記第２経路算出手段により算出された経路上の各スイッチに対して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想ＩＰ(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるためのフローをそれぞれ設定するパケット転送制御手段と、
を備える、
ことを特徴とするオープンフローネットワークシステム。
【請求項８】
前記各スイッチが、
前記ネットワーク機器から前記死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記受信した死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローが既に設定されているか否かを判定する判定手段をさらに備え、
フロー設定要求送信手段は、前記判定手段により、前記物理的に冗長化されているネットワーク機器のうちで、前記受信した死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローがまだ設定されていないと判定された場合のみ、前記フロー設定要求をコントローラへ送信する、
ことを特徴とする請求項７に記載のオープンフローネットワークシステム。
【請求項９】
前記物理的に冗長化されているネットワーク機器は、ＶＲＲＰ(Virtual Router Redundancy Protocol)機能を備え、前記死活監視用パケットは、ＶＲＲＰパケットである、
ことを特徴とする請求項７または８に記載のオープンフローネットワークシステム。
【請求項１０】
前記物理的に冗長化されているネットワーク機器は、ルータである、
ことを特徴とする請求項７乃至９のいずれか一に記載のオープンフローネットワークシステム。
【請求項１１】
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、受信した死活監視用パケットを、前記各スイッチのデータ転送処理を一元的に制御するコントローラへ転送する死活監視用パケット転送ステップと、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧＡＲＰ(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記ＧＡＲＰパケットを転送するＧＡＲＰパケット転送ステップと、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報と、前記物理的に冗長化されているネットワーク機器が接続されているスイッチのうちで、いずれのスイッチに接続されているネットワーク機器が現用系ネットワーク機器かを識別可能な現用系情報と、を対応つけた接続情報を格納する記憶ステップと、
前記ＧＡＲＰパケット転送ステップにより転送された前記ＧＡＲＰパケットに含まれる、前記現用系ネットワーク機器の物理ＭＡＣ(Media Access Control)アドレスを取得する取得ステップと、
前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる死活監視用パケット転送制御ステップと、
前記取得ステップにより取得された前記現用系ネットワーク機器の物理ＭＡＣアドレスと前記接続情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先ＭＡＣアドレスと一致する前記現用系ネットワーク機器の物理ＭＡＣアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する経路算出ステップと、
前記経路算出ステップにより算出された経路上の各スイッチを制御して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想ＩＰ(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるパケット転送制御ステップと、
を備える、
ことを特徴とするデータ通信方法。
【請求項１２】
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローの設定を、自スイッチから前記死活監視用パケットの送信先のネットワーク機器までの経路上の各スイッチに対して実行するよう要求するフロー設定要求を、コントローラへ送信するフロー設定要求送信ステップと、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧＡＲＰ(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記ＧＡＲＰパケットを転送するＧＡＲＰパケット転送ステップと、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報を格納する記憶ステップと、
前記ＧＡＲＰパケット転送ステップにより転送された前記ＧＡＲＰパケットに含まれる、前記現用系ネットワーク機器の物理ＭＡＣ(Media Access Control)アドレスを取得する取得ステップと、
前記フロー設定要求を受信すると、前記記憶ステップで格納された前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、前記フロー設定要求を送信したスイッチから、特定したネットワーク機器までの経路を算出する第１経路算出ステップと、
前記第１経路算出ステップで算出された経路上の各スイッチに対して、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信させるためのフローをそれぞれ設定する死活監視用パケット転送制御ステップと、
前記取得ステップで取得された前記現用系ネットワーク機器の物理ＭＡＣアドレスと前記ネットワーク機器スイッチ対応情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先ＭＡＣアドレスと一致する前記現用系ネットワーク機器の物理ＭＡＣアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する第２経路算出ステップと、
前記第２経路算出ステップで算出された経路上の各スイッチに対して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想ＩＰ(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるためのフローをそれぞれ設定するパケット転送制御ステップと、
前記第１経路算出ステップで算出された経路上の各スイッチが、
前記第１経路算出ステップでそれぞれ設定されたフローに基づいて、前記死活監視用パケットを順次転送することで、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信する死活監視用パケット送信ステップと、
前記第２経路算出ステップで算出された経路上の各スイッチが、
前記パケット転送制御ステップでそれぞれ設定されたフローに基づいて、前記パケットデータを順次転送することで、前記現用系ネットワーク機器へ、前記パケットデータを送信するパケット送信ステップと、
を備える、
ことを特徴とするデータ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オープンフローネットワークシステム、及び、データ通信方法に関し、特に、冗長化構成を維持した状態で、冗長化されたネットワーク機器をオープンフローネットワークに接続することが可能なオープンフローネットワークシステム、及び、データ通信方法に関する。
【背景技術】
【０００２】
ネットワークで使用される機器の信頼性を向上させる技術として、ＶＲＲＰ(Virtual Router Redundancy Protocol)がある（例えば、特許文献１参照）。ＶＲＲＰは、物理的に複数の機器で冗長化し、現用系の機器に障害が発生しても、冗長化構成を形成する他の機器が処理を引き継ぐことで、処理が停止してしまうのを防止することが可能となる。
【０００３】
また、ネットワークを構成する各スイッチにおける転送処理等をコントローラにより一元的に制御するオープンフロー技術が、ＯｐｅｎＦｌｏｗ  Ｃｏｎｓｏｒｔｉｕｍによって提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１６７４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
既存のネットワーク機器は、自律的に動作するため、ＶＲＲＰ機能を備えた機器をオープンフロー技術を利用したネットワークに接続した場合、コントローラは、同じＶＲＲＰグループを形成する機器のうちの、いずれの機器が現用系として機能しているのかについての情報を得ることができない。
【０００６】
そのため、オープンフロー技術を利用したネットワークにＶＲＲＰグループを形成する機器を接続した場合、コントローラは、各スイッチの転送処理等を一元的に制御できなくなる。
【０００７】
本発明は、上記の課題を解決するためになされたものであり、冗長化構成を維持した状態で、冗長化されたネットワーク機器をオープンフローネットワークに接続することが可能なオープンフローネットワークシステム、及び、データ通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の第１の観点に係るオープンフローネットワークシステムは、
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、受信した死活監視用パケットを、前記各スイッチのデータ転送処理を一元的に制御するコントローラへ転送する死活監視用パケット転送手段と、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧＡＲＰ(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記ＧＡＲＰパケットを転送するＧＡＲＰパケット転送手段と、
を備え、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報と、前記物理的に冗長化されているネットワーク機器が接続されているスイッチのうちで、いずれのスイッチに接続されているネットワーク機器が現用系ネットワーク機器かを識別可能な現用系情報と、を対応つけた接続情報を格納する記憶部と、
前記ＧＡＲＰパケット転送手段により転送された前記ＧＡＲＰパケットに含まれる、前記現用系ネットワーク機器の物理ＭＡＣ(Media Access Control)アドレスを取得する取得手段と、
前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる死活監視用パケット転送制御手段と、
前記取得手段により取得された前記現用系ネットワーク機器の物理ＭＡＣアドレスと前記接続情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先ＭＡＣアドレスと一致する前記現用系ネットワーク機器の物理ＭＡＣアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する経路算出手段と、
前記経路算出手段により算出された経路上の各スイッチを制御して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想ＩＰ(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるパケット転送制御手段と、
を備える、
ことを特徴とする。
【０００９】
前記死活監視用パケット転送制御部は、前記記憶部に格納されている前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、特定したネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記特定したネットワーク機器へ送信させる、
ようにしてもよい。
【００１１】
また、前記コントローラが、
前記記憶部に格納されている接続情報を参照して、前記死活監視用パケットを送信したネットワーク機器が現用系ネットワーク機器か否かを判定する送信元判定手段をさらに備え、
死活監視用パケット転送制御手段は、前記送信元判定手段により前記死活監視用パケットを送信したネットワーク機器が現用系ネットワーク機器であると判定された場合のみ、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる、
ようにしてもよい。
【００１２】
また、前記コントローラが、
現用系ネットワーク機器からの死活監視用パケットが所定時間内に受信できなかった場合には、該現用系ネットワーク機器に障害が発生したと判定し、前記接続情報の対応する現用系情報を更新する更新手段をさらに備える、
ようにしてもよい。
【００１３】
また、前記物理的に冗長化されているネットワーク機器は、ＶＲＲＰ(Virtual Router Redundancy Protocol)機能を備え、前記死活監視用パケットは、ＶＲＲＰパケットである、
ようにしてもよい。
【００１４】
また、前記物理的に冗長化されているネットワーク機器は、ルータである、
ようにしてもよい。
【００１５】
上記目的を達成するために、本発明の第２の観点に係るオープンフローネットワークシステムは、
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローの設定を、自スイッチから前記死活監視用パケットの送信先のネットワーク機器までの経路上の各スイッチに対して実行するよう要求するフロー設定要求を、コントローラへ送信するフロー設定要求送信手段と、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧＡＲＰ(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記ＧＡＲＰパケットを転送するＧＡＲＰパケット転送手段と、
を備え、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報を格納する記憶部と、
前記ＧＡＲＰパケット転送手段により転送された前記ＧＡＲＰパケットに含まれる、前記現用系ネットワーク機器の物理ＭＡＣ(Media Access Control)アドレスを取得する取得手段と、
前記フロー設定要求を受信すると、前記記憶部に格納されている前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、前記フロー設定要求を送信したスイッチから、特定したネットワーク機器までの経路を算出する第１経路算出手段と、
前記第１経路算出手段により算出された経路上の各スイッチに対して、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信させるためのフローをそれぞれ設定する死活監視用パケット転送制御手段と、
前記取得手段により取得された前記現用系ネットワーク機器の物理ＭＡＣアドレスと前記ネットワーク機器スイッチ対応情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先ＭＡＣアドレスと一致する前記現用系ネットワーク機器の物理ＭＡＣアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する第２経路算出手段と、
前記第２経路算出手段により算出された経路上の各スイッチに対して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想ＩＰ(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるためのフローをそれぞれ設定するパケット転送制御手段と、
を備える、
ことを特徴とする。
【００１６】
なお、前記各スイッチが、
前記ネットワーク機器から前記死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記受信した死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローが既に設定されているか否かを判定する判定手段をさらに備え、
フロー設定要求送信手段は、前記判定手段により、前記物理的に冗長化されているネットワーク機器のうちで、前記受信した死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローがまだ設定されていないと判定された場合のみ、前記フロー設定要求をコントローラへ送信する、
ようにしてもよい。
【００１８】
また、前記物理的に冗長化されているネットワーク機器は、ＶＲＲＰ(Virtual Router Redundancy Protocol)機能を備え、前記死活監視用パケットは、ＶＲＲＰパケットである、
ようにしてもよい。
【００１９】
また、前記物理的に冗長化されているネットワーク機器は、ルータである、
ようにしてもよい。
【００２０】
上記目的を達成するために、本発明の第３の観点に係るデータ通信方法は、
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、受信した死活監視用パケットを、前記各スイッチのデータ転送処理を一元的に制御するコントローラへ転送する死活監視用パケット転送ステップと、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧＡＲＰ(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記ＧＡＲＰパケットを転送するＧＡＲＰパケット転送ステップと、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報と、前記物理的に冗長化されているネットワーク機器が接続されているスイッチのうちで、いずれのスイッチに接続されているネットワーク機器が現用系ネットワーク機器かを識別可能な現用系情報と、を対応つけた接続情報を格納する記憶ステップと、
前記ＧＡＲＰパケット転送ステップにより転送された前記ＧＡＲＰパケットに含まれる、前記現用系ネットワーク機器の物理ＭＡＣ(Media Access Control)アドレスを取得する取得ステップと、
前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる死活監視用パケット転送制御ステップと、
前記取得ステップにより取得された前記現用系ネットワーク機器の物理ＭＡＣアドレスと前記接続情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先ＭＡＣアドレスと一致する前記現用系ネットワーク機器の物理ＭＡＣアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する経路算出ステップと、
前記経路算出ステップにより算出された経路上の各スイッチを制御して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想ＩＰ(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるパケット転送制御ステップと、
を備える、
ことを特徴とする。
【００２１】
上記目的を達成するために、本発明の第４の観点に係るデータ通信方法は、
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローの設定を、自スイッチから前記死活監視用パケットの送信先のネットワーク機器までの経路上の各スイッチに対して実行するよう要求するフロー設定要求を、コントローラへ送信するフロー設定要求送信ステップと、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧＡＲＰ(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記ＧＡＲＰパケットを転送するＧＡＲＰパケット転送ステップと、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報を格納する記憶ステップと、
前記ＧＡＲＰパケット転送ステップにより転送された前記ＧＡＲＰパケットに含まれる、前記現用系ネットワーク機器の物理ＭＡＣ(Media Access Control)アドレスを取得する取得ステップと、
前記フロー設定要求を受信すると、前記記憶ステップで格納された前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、前記フロー設定要求を送信したスイッチから、特定したネットワーク機器までの経路を算出する第１経路算出ステップと、
前記第１経路算出ステップで算出された経路上の各スイッチに対して、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信させるためのフローをそれぞれ設定する死活監視用パケット転送制御ステップと、
前記取得ステップで取得された前記現用系ネットワーク機器の物理ＭＡＣアドレスと前記ネットワーク機器スイッチ対応情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先ＭＡＣアドレスと一致する前記現用系ネットワーク機器の物理ＭＡＣアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する第２経路算出ステップと、
前記第２経路算出ステップで算出された経路上の各スイッチに対して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想ＩＰ(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるためのフローをそれぞれ設定するパケット転送制御ステップと、
前記第１経路算出ステップで算出された経路上の各スイッチが、
前記第１経路算出ステップでそれぞれ設定されたフローに基づいて、前記死活監視用パケットを順次転送することで、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信する死活監視用パケット送信ステップと、
前記第２経路算出ステップで算出された経路上の各スイッチが、
前記パケット転送制御ステップでそれぞれ設定されたフローに基づいて、前記パケットデータを順次転送することで、前記現用系ネットワーク機器へ、前記パケットデータを送信するパケット送信ステップと、
を備える、
ことを特徴とする。
【発明の効果】
【００２２】
本発明によれば、冗長化構成を維持した状態で、冗長化されたネットワーク機器をオープンフローネットワークに接続することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】実施形態１における、オープンフローネットワークシステムの構成を示すブロック図である。
【図２】実施形態１における、ＶＲＲＰパケットのフォーマットの例を示す図である。
【図３】実施形態１における、各スイッチの構成を示すブロック図である。
【図４】実施形態１における、フローテーブルの例を示す図である。
【図５】実施形態１における、コントローラの構成を示すブロック図である。
【図６】実施形態１における、設定時間テーブルの例を示す図である。
【図７】実施形態１における、接続情報テーブルの例を示す図である。
【図８】実施形態１における、アドレステーブルの例を示すブロック図である。
【図９】実施形態１における、トポロジ情報テーブルの例を示す図である。
【図１０】実施形態１における、ＶＲＲＰパケット転送処理のフローチャートを示す図である。
【図１１】実施形態１における、図１に示すオープンフローネットワークシステムを例にした、平常時のシステム全体の処理のフローを説明するための図である。
【図１２】実施形態１における、図１に示すオープンフローネットワークシステムを例にした、障害発生時のシステム全体の処理のフローを説明するための図である。
【図１３】実施形態２における、コントローラの構成を示すブロック図である。
【図１４】実施形態２における、接続情報テーブルの例を示す図である。
【図１５】実施形態２における、図１に示すオープンフローネットワークシステムを例にした、平常時のシステム全体の処理のフローを説明するための図である。
【図１６】実施形態２における、図１に示すオープンフローネットワークシステムを例にした、障害発生時のシステム全体の処理のフローを説明するための図である。
【発明を実施するための形態】
【００２４】
（実施形態１）
添付図面を参照しながら本実施形態について説明する。
【００２５】
図１を参照して、本実施形態におけるオープンフローネットワークシステム１の構成を説明する。ネットワークシステム１は、図１に示すように、複数のオープンフロースイッチ（以下、スイッチという）ＳＷ１乃至ＳＷｎからなるスイッチ群２と、オープンフローコントローラ（以下、コントローラという）Ｃと、から構成される。なお、ｎは２以上の自然数であり、スイッチＳＷ１乃至ＳＷｎを区別せずに総称する場合はスイッチＳＷということとする。
【００２６】
オープンフローネットワークシステム１のスイッチＳＷ１とＳＷ２には、それぞれ、ルータＲ１とルータＲ２が接続されており、ルータＲ１とＲ２は、ＶＲＲＰ(Virtual Router Redundancy Protocol)機能を備え、冗長化されている。すなわち、現用系のルータに障害が発生しても、待機系のルータで処理を引継ぎ、ルータとしての機能が停止し、通信が遮断されないように構成されている。また、スイッチＳＷｎには、レイヤ３ノードＮ１が接続されている。本実施形態においては、ルータＲ１とＲ２とから構成されるＶＲＲＰグループがオープンフローネットワークシステム１に接続されている構成を例に説明するが、複数のＶＲＲＰグループがオープンフローネットワーク１に接続されている構成であってもよい。また、ＶＲＲＰグループを構成するルータは３以上でもよいし、ＶＲＲＰグループを構成する機器は、ルータではなく、ＶＲＲＰ機能を備えるロードバランサなどであってもよい。
【００２７】
同じＶＲＲＰグループを形成するルータは、図２に例示するＶＲＲＰパケットを同じＶＲＲＰグループを形成する他のルータへ送信する。すなわち、本実施形態においては、ルータＲ１は、ＶＲＲＰパケットをルータＲ２宛てに送信し、ルータＲ２は、ＶＲＲＰパケットをルータＲ１宛に送信する。ただし、ルータ間で現用系ルータが決定されると、現用系ルータのみがＶＲＲＰパケットを待機系ルータ宛に送信する。同じＶＲＲＰグループを形成するルータのうち、いずれのルータが現用系になるかは、詳しくは後述するＶＲＲＰパケットに含まれる優先度に基づいて決定される。現用系ルータが決定されると、上述したように、現用系ルータのみがＶＲＲＰパケットを待機系ルータ宛てに送信し、待機系ルータは、現用系ルータから送信されるＶＲＲＰパケットを一定時間内に受信できなかった場合は、現用系ルータに障害が発生したと判定し、障害が発生した現用系ルータの処理を引き継いで、現用系ルータとしてＶＲＲＰパケットを送信する。
【００２８】
図２は、ＶＲＲＰパケットのフォーマットの例を示す図である。ＶＲＲＰパケットのフォーマットは、図２に示すように、「バージョン」フィールドには、ＶＲＲＰバージョンが格納され、「タイプ」フィールドには、ＶＲＲＰパケットがアドバタイズメント（アナウンスメント）である場合は”１”が格納される。「ＶＲＩＤ」フィールドには、ＶＲＩＤ値が格納され、同じＶＲＲＰグループを形成する各ルータ、本実施形態においては、ルータＲ１とＲ２から送信されるＶＲＲＰパケットの「ＶＲＩＤ」フィールドには、同じＶＲＩＤ値が格納される。「プライオリティ」フィールドには、ＶＲＲＰパケットの送信元ルータの優先度が格納され、この優先度の値が高いＶＲＲＰパケットを送信するルータが現用系ルータとなる。
【００２９】
「カウントＩＰ(Internet Protocol)アドレス」フィールドには、ＶＲＲＰパケットで広告するＩＰアドレスの数を格納し、「認証タイプ」フィールドには、認証タイプを特定するための値が格納される。例えば、認証を行わない場合は、”０”が、テキストパスワードによる認証の場合は、”１”が、格納される。「アドバタイズメントインターバル」フィールドには、ＶＲＲＰパケットをアドバタイズメントパケットとして送信する間隔を特定する値が格納される。ＶＲＲＰパケットを受信した他のルータは、「アドバタイズメントインターバル」フィールドに格納されている値から、ＶＲＲＰパケットの送信間隔を取得し、例えば、現用系ルータからのＶＲＲＰパケットが「アドバタイズメントインターバル」フィールドに規定されている送信間隔に基づいて、次式により定められる時間Ｓ内に受信されなかった場合には、待機系ルータは、現用系ルータに障害が発生したと判定し、待機系ルータが現用系ルータとして、障害が発生した現用系ルータの処理を引継ぐ。
【００３０】
（式１）
時間Ｓ＝（アドバタイズメントインターバル）ｘ３＋（２５６−優先度値）／２５６
【００３１】
「ＩＰアドレス」フィールドには、仮想ＩＰアドレスとして使用可能なＩＰアドレスを格納する。この仮想ＩＰアドレスは、同じＶＲＲＰグループを形成するルータＲ１とＲ２がネットワークで共有するＩＰアドレスである。
【００３２】
また、現用系ルータは、ＡＲＰ(Address Resolution Protocol)テーブルを更新させるためのＧｒａｔｕｉｔｏｕｓ  ＡＲＰパケット（以下、ＧＡＲＰパケットという）を送信する。ＧＡＲＰパケットの「送信元ＩＰアドレス」フィールドには、同じＶＲＲＰグループを形成するルータＲ１とＲ２がネットワークで共有する仮想ＩＰアドレスが格納され、「送信元ハードウェアアドレス」フィールドには、ＧＡＲＰパケットを送信した現用系ルータの物理ＭＡＣアドレスが格納される。ＧＡＲＰパケットを受信した装置は、自身が保持するＡＲＰテーブルを参照し、ＧＡＲＰパケットに含まれるＩＰアドレス（仮想ＩＰアドレス）に該当するエントリが存在する場合には、そのエントリのＭＡＣアドレスをＧＡＲＰパケットの「送信元ハードウェアアドレス」フィールドに格納されているＭＡＣアドレスで更新する。一方、ＧＡＲＰパケットに含まれるＩＰアドレス（仮想ＩＰアドレス）に該当するエントリがＡＲＰテーブルに存在しない場合には、そのＧＡＲＰパケットの送信元ルータの仮想ＩＰアドレスと物理ＭＡＣアドレスとを対応付けたエントリがＡＲＰテーブルに追加される。
【００３３】
例えば、ルータＲ１から送信されたＧＡＲＰパケットをレイヤ３ノードＮ１が受信し、レイヤ３ノードＮ１が保持するＡＲＰテーブルにそのＧＡＲＰパケットに含まれるＩＰアドレス（仮想ＩＰアドレス）に該当するエントリが存在する場合には、そのエントリのＭＡＣアドレスをＧＡＲＰパケットに含まれるルータＲ１の物理ＭＡＣアドレスで更新する。一方、レイヤ３ノードＮ１が保持するＡＲＰテーブルにそのＧＡＲＰパケットに含まれるＩＰアドレス（仮想ＩＰアドレス）に該当するエントリが存在しない場合には、ＧＡＲＰパケットに含まれるルータＲ１の仮想ＩＰアドレスと物理ＭＡＣアドレスとを対応付けたエントリがＡＲＰテーブルに追加される。
【００３４】
スイッチＳＷは、図３に示すように、制御部Ｓ１と、記憶部Ｓ２とから構成される。
【００３５】
制御部Ｓ１は、ＣＰＵ(Central Processing Unit)を備え、記憶部Ｓ２に格納されている動作プログラムを実行することで、ＶＲＲＰパケット処理部Ｓ１Ａと、ＧＡＲＰパケット処理部Ｓ１Ｂと、フロー設定部Ｓ１Ｃと、判定部Ｓ１Ｄと、フロー処理部Ｓ１Ｅとしての機能を実現する。
【００３６】
ＶＲＲＰパケット処理部Ｓ１Ａは、自スイッチに接続されているルータからＶＲＲＰパケットを受信すると、受信したＶＲＲＰパケットをコントローラＣへ転送する。ＶＲＲＰパケット処理部１Ａは、ＶＲＲＰパケットを転送する際に、自身のスイッチ番号ＳＷＮと、受信したＶＲＲＰパケットの送信元のルータが接続されている物理ポートの物理ポート番号ＰＮと、をそれぞれ特定するための情報を付加する。ここで、スイッチ番号ＳＷＮは、各スイッチＳＷを一意に識別可能な番号である。
【００３７】
例えば、スイッチＳＷ１のスイッチ番号ＳＷＮが”１”であり、ルータＲ１が接続されているスイッチＳＷ１の物理ポートの物理ポート番号ＰＮが”１０”の場合には、スイッチＳＷ１がルータＲ１からＶＲＲＰパケットを受信すると、スイッチＳＷ１のＶＲＲＰパケット処理部Ｓ１Ａは、スイッチ番号”１”と物理ポート番号”１０”を特定するための情報を受信したＶＲＲＰパケットに付加して、コントローラＣへ転送する。
【００３８】
また、ＶＲＲＰパケット処理部Ｓ１Ａは、コントローラＣからＶＲＲＰパケットの送信指示を受信すると、その指示に従って、送信指示と共に送信されてきたＶＲＲＰパケットを自スイッチＳＷに接続されている待機系ルータへ送信する。例えば、ＶＲＲＰパケットのコントローラＣによる送信先がスイッチＳＷ２であり、コントローラＣの送信指示が、ルータＲ２への送信指示である場合には、スイッチＳＷ２のＶＲＲＰパケット処理部Ｓ１Ａは、コントローラＣの指示に従って、受信したＶＲＲＰパケットをルータＲ２へ送信する。
【００３９】
ＧＡＲＰパケット処理部Ｓ１Ｂは、自スイッチに接続されている現用系ルータから送信されたＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットをコントローラＣへ転送する。例えば、現用系ルータがルータＲ１であり、スイッチＳＷ１がルータＲ１からのＧＡＲＰパケットを受信した場合には、スイッチＳＷ１のＧＡＲＰパケット処理部Ｓ１Ｂは、受信したＧＡＲＰパケットをコントローラＣへ転送する。
【００４０】
また、ＧＡＲＰパケット処理部Ｓ１Ｂは、コントローラＣから転送されたＧＡＲＰパケットを受信すると、コントローラＣの送信指示に従って、受信したＧＡＲＰパケットを送信する。例えば、ＧＡＲＰパケットのコントローラＣによる転送先がスイッチＳＷｎであり、コントローラＣの送信指示が、レイヤ３ノードＮ１への送信である場合には、スイッチＳＷｎのＧＡＲＰ処理部Ｓ１Ｂは、受信したＧＡＲＰパケットをレイヤ３ノードＮ１へ送信する。
【００４１】
フロー設定部Ｓ１Ｃは、コントローラＣから取得したフローをテーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に設定する。
【００４２】
判定部Ｓ１Ｄは、自スイッチＳＷに接続するノードから送信されたパケットを受信すると、フローテーブルＴ１の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。
【００４３】
フロー処理部Ｓ１Ｅは、判定部Ｓ１Ｄにより、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在すると判定された場合には、そのルールに対応するアクション情報により特定されるアクションを実行する。一方、フロー処理部Ｓ１Ｅは、判定部Ｓ１Ｄにより、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないと判定された場合には、コントローラＣへフロー設定要求を送信する。フロー設定要求には、パケットのヘッダ情報と、自スイッチのスイッチ番号ＳＷＮとパケットの送信元のノードが接続されている物理ポートの物理ポート番号ＰＮとを特定するための情報が含まれる。
【００４４】
例えば、レイヤ３ノードＮ１からＶＲＲＰグループを形成するルータＲ１とルータＲ２が共有する仮想ＩＰアドレス宛のパケットのヘッダ情報と一致するルールが、スイッチＳＷｎが保持するフローテーブルＴ１に存在しない場合には、スイッチＳＷｎのフロー処理部Ｓ１Ｅは、パケットのヘッダ情報と、自スイッチのスイッチ番号ｎとレイヤ３ノードＮ１が接続されている物理ポートの物理ポート番号３０とを特定するための情報とを含むフロー設定要求をコントローラＣへ送信する。フロー設定要求を受信したコントローラＣは、フロー設定要求に基づいて、スイッチＳＷｎから現用系ルータに至る経路を算出し、算出された経路上に設置されている各スイッチＳＷにおけるフローを生成し、経路上に設置されている各スイッチＳＷに対して生成したフローをそれぞれ設定する。そして、算出された経路上に設置されている各スイッチＳＷは設定されたフローに従って、受信したパケットを処理することで、レイヤ３ノードＮ１からＶＲＲＰグループを形成するルータＲ１とルータＲ２が共有する仮想ＩＰアドレス宛のパケットは、現用系ルータへ届けられる。
【００４５】
図４は、各スイッチＳＷが保持するフローテーブルＴ１の例を示す図である。フローテーブルＴ１は、図４に示すように、ルールとアクション情報とが対応付けられている。本実施形態においては、ルールには、送信元ＭＡＣアドレスと、宛先ＩＰアドレスと、宛先ＭＡＣアドレスと、を含む組み合わせが規定される。ルールと対応付けられているアクション情報には、例えば、受信したパケットの送信先が規定される。各スイッチＳＷは、このようなフローテーブルＴ１を保持することで、受信したパケットのヘッダ情報と一致するルールが存在する場合には、そのルールに対応するアクション情報により特定されるアクションを実行することが可能となる。
【００４６】
例えば、レイヤ３ノードＮ１からＶＲＲＰグループを形成するルータＲ１とルータＲ２が共有する仮想ＩＰアドレス宛のパケットのヘッダ情報と一致するルールが、スイッチＳＷｎが保持するフローテーブルＴ１に存在し、そのルールに対応するアクション情報により特定されるアクションがスイッチＳＷ５へ受信したパケットの送信である場合には、スイッチＳＷｎのフロー処理部Ｓ１Ｅは、受信したパケットをスイッチＳＷ５へ送信する。
【００４７】
記憶部Ｓ２は、ＲＯＭ(Read Only Memory)、ＲＡＭ(Random Access Memory)などから構成され、テーブル記憶部Ｓ２Ａとして機能すると共に、制御部Ｓ１が備えるＣＰＵ(Central Processing Unit)のワーキングエリア、ＣＰＵが実行する動作プログラムを格納するプログラムエリア、各種データを格納するデータエリア、などとして機能する。
【００４８】
テーブル記憶部Ｓ２Ａは、フローテーブルＴ１を格納する。このフローテーブルＴ１は、上述したように、フロー設定部Ｓ１Ｃにより設定される。より具体的には、コントローラＣからフローを受信すると、フロー設定部Ｓ１Ｃは、受信したフローをフローテーブルＴ１に設定する。この際、フローに含まれるルールと一致するルールを含むフローがフローテーブルＴ１に存在する場合には、そのフローを受信したフローで上書きし、一致するルールを含むフローがフローテーブルＴ１に存在しない場合には、そのフローをフローテーブルＴ１に追加する。
【００４９】
コントローラＣは、図５に示すように、制御部Ｃ１と記憶部Ｃ２とから構成され、オープンフロー技術により、オープンフローネットワーク１内の各スイッチＳＷを制御し、一元的に経路制御を行う。オープンフロー技術とは、コントローラＣが、ルーティングポリシーに従って、マルチレイヤ及びフロー単位の経路情報（フロー）を各スイッチＳＷに設定することで、コントローラＣが、一元的に経路制御やノード制御を行う技術のことである。
【００５０】
制御部Ｃ１は、ＣＰＵを備え、記憶部Ｃ２に格納されている動作プログラムを実行することで、送信元判定部Ｃ１Ａと、タイマＣ１Ｂと、判定部Ｃ１Ｃと、ＶＲＲＰパケット処理部Ｃ１Ｄと、ＧＡＲＰパケット処理部Ｃ１Ｅと、経路算出部Ｃ１Ｆと、フロー設定部Ｃ１Ｇと、としての機能を実現すると共に、各機能部の制御処理、後述するＶＲＲＰパケット転送処理などの処理を実行する。
【００５１】
また、制御部Ｃ１は、送信元判定部Ｃ１Ａにより受信したＶＲＲＰパケットが現用系ルータから送信されたＶＲＲＰパケットであると判定された場合には、そのＶＲＲＰパケットに付加されている付加情報（スイッチ番号ＳＷＮと物理ポート番号ＰＮ）に基づいて、そのＶＲＲＰパケットの送信元のルータに対応する設定時間Ｓｉを後述するテーブル記憶部Ｃ２Ａに格納されている設定時間テーブルＴ２から取得し、取得した設定時間ＳｉをタイマＣ１Ｂに設定する。そして、タイマＣ１Ｂがタイムアウトするまでに現用系ルータから次のＶＲＲＰパケットを受信できなかった場合には、テーブル記憶部Ｃ２Ａに格納されている接続情報テーブルＴ３の「現用系」欄のフラグを切り替える。例えば、ルータＲ１が現用系、ルータＲ２が待機系であり、設定時間Ｓｉ内にルータＲ１からのＶＲＲＰパケットを受信できなかった場合には、接続情報テーブルＴ３の「現用系」欄のフラグを、ルータＲ１（図７においては、マスタルータ）からルータＲ２（図７においては、スレーブルータ）へ切り替える。
【００５２】
図６は、設定時間テーブルＴ２の例を示す図である。設定時間テーブルＴ２は、図６に示すように、スイッチ番号ＳＷＮと設定時間Ｓｉとが対応付けられている。各設定時間Ｓｉとして、上述した式１により算出した時間が設定される。これにより、制御部Ｃ１は、受信したＶＲＲＰパケットに付加されている付加情報に含まれるスイッチ番号ＳＷＮと一致するスイッチ番号ＳＷＮに対応する設定時間Ｓｉを設定時間テーブルＴ２から取得することが可能となる。そして、取得した設定時間ＳｉをタイマＣ１Ｂに設定することで、コントローラＣは、設定時間Ｓｉ内に現用系ルータから次のＶＲＲＰパケットを受信できなかった場合に、現用系ルータに異常が発生したと判定することが可能となる。さらに、設定時間Ｓｉとして、上述した式１により算出した時間を設定していることから、同じＶＲＲＰグループを形成する待機系ルータが現用系ルータに異常が発生したと判定するタイミングと同じタイミングで、コントローラＣは、現用系ルータに異常が発生したと判定することが可能となり、新たに現用系ルータとなったルータから送信されるＶＲＲＰパケットを適切に待機系ルータへ転送することが可能となる。
【００５３】
図５に戻り、送信元判定部Ｃ１Ａは、コントローラＣがＶＲＲＰパケットを受信すると、受信したＶＲＲＰパケットが現用系ルータから送信されたＶＲＲＰパケットであるか否かを判定する。具体的には、送信元判定部Ｃ１Ａは、後述するテーブル記憶部Ｃ２Ａに格納されている接続情報テーブルＴ３の「スイッチ番号」欄と「ポート番号」欄を検索し、受信したＶＲＲＰパケットに付加されている、そのＶＲＲＰパケットをコントローラＣへ転送したスイッチＳＷのスイッチ番号ＳＷＮと、そのＶＲＲＰパケットの送信元ルータが接続されている物理ポートの物理ポート番号ＰＮと、が一致するルータを特定する。そして、送信元判定部Ｃ１Ａは、特定したルータの「現用系」欄にフラグが存在するか否かで、受信したＶＲＲＰパケットが現用系ルータから送信されたＶＲＲＰパケットであるか否かを判定する。
【００５４】
図７は、テーブル記憶部Ｃ２Ａに格納されている接続情報テーブルＴ３の例を示す図である。接続情報テーブルＴ３は、図７に示すように、ＶＲＲＰグループを形成するマスタルータとスレーブルータと、そのＶＲＲＰグループを形成するルータと通信を行うノードとが対応付けられており、さらに、それぞれが接続するスイッチＳＷのスイッチ番号ＳＷＮとポート番号ＰＮが対応付けられている。また、ＶＲＲＰグループを形成する各ルータには、「現用系」欄が設けられており、「現用系」欄にフラグを立てる（１を格納する）ことで、どのルータが現用系ルータであるか否かを判定することが可能となっている。初期状態では、マスタルータの「現用系」欄に１が格納されており、設定時間内Ｓｉ内に現用系ルータからの次のＶＲＲＰパケットを受信できなかった場合には、制御部Ｃ１は、スレーブルータの「現用系」欄に１を格納し、マスタルータの「現用系」欄の１を削除する。
【００５５】
なお、マスタルータとして、ＶＲＲＰグループを形成するルータのうちで、最も優先度の設定値の値が高いルータが、選択される。本実施形態においては、ルータＲ１がマスタルータであり、ルータＲ２がスレーブルータであると仮定する。
【００５６】
図５に戻り、タイマＣ１Ｂは、現用系ルータに異常が発生したか否かを判定するためのタイマであり、上述したように、送信元判定部Ｃ１Ａにより受信したＶＲＲＰパケットが現用系ルータから送信されたＶＲＲＰパケットであると判定された場合に、制御部Ｃ１により設定時間テーブルＴ２から取得された設定時間Ｓｉが設定され、スタートされる。
【００５７】
判定部Ｃ１Ｃは、ＶＲＲＰパケットを受信したか否かを判定すると共に、タイマＣ１Ｂがタイムアウトしたか否かを判定する。現用系ルータからの次のＶＲＲＰパケットが受信される前にタイマＣ１Ｂがタイムアウトしたと判定部Ｃ１Ｃにより判定された場合には、制御部Ｃ１は、上述したように、現用系ルータに異常が発生したと判定し、接続情報テーブルＴ３の「現用系」欄のフラグを切り替える。
【００５８】
ＶＲＲＰパケット処理部Ｃ１Ｄは、送信元判定部Ｃ１Ａにより現用系ルータから送信されたＶＲＲＰパケットであると判定されたＶＲＲＰパケットを、同じＶＲＲＰグループを形成する待機系ルータへ転送する。具体的には、ＶＲＲＰパケット処理部Ｃ１Ｄは、テーブル記憶部Ｃ２Ａに格納されている接続情報テーブルＴ３を参照して、同じＶＲＲＰグループの待機系ルータが接続されているスイッチＳＷのスイッチ番号ＳＷＮを取得する。そして、ＶＲＲＰパケット処理部Ｃ１Ｄは、取得したスイッチ番号ＳＷＮのスイッチＳＷに対して、受信したＶＲＲＰパケットと共にそのスイッチＳＷに接続されている待機系ルータへＶＲＲＰパケットを送信するように指示するコマンドを送信する。
【００５９】
また、ＶＲＲＰパケット処理部Ｃ１Ｄは、送信元判定部Ｃ１Ａにより現用系ルータから送信されたＶＲＲＰパケットではないと判定されたＶＲＲＰパケットを破棄する。
【００６０】
ＧＡＲＰパケット処理部Ｃ１Ｅは、受信したＧＡＲＰパケットに含まれる送信元ＭＡＣアドレスを取得する。そして、ＧＡＲＰパケット処理部Ｃ１Ｅは、接続情報テーブルＴ３から、ＧＡＲＰパケットの送信元の現用系ルータが接続されているスイッチＳＷのスイッチ番号ＳＷＮを取得し、取得した送信元ＭＡＣアドレスとスイッチ番号ＳＷＮとを対応付けて、アドレステーブルＴ４に格納する。この際、例えば、同じＶＲＲＰグループを形成する他のルータのＭＡＣアドレスが格納されている場合には、上書きを行う。
【００６１】
また、ＧＡＲＰパケット処理部Ｃ１Ｅは、受信したＧＡＲＰパケットを、そのＧＡＲＰパケットの送信元ルータと通信を行う各ノードへ転送する。具体的には、接続情報テーブルＴ３を参照して、転送対象のノードが接続されているスイッチＳＷを特定し、特定したスイッチＳＷへＧＡＲＰパケットと共にノードへＧＡＲＰパケットを送信するように指示するコマンドを送信する。
【００６２】
図８は、テーブル記憶部Ｃ２Ａが格納するアドレステーブルＴ４の例を示す図である。アドレステーブルＴ４は、図８に示すように、ＶＲＲＰグループＩＤ（例えば、ＶＲＩＤ）と、現用系ルータが接続されているスイッチＳＷのスイッチ番号ＳＷＮと、現用系ルータの物理ＭＡＣアドレスと、が対応付けられている。例えば、ルータＲ１が現用系ルータで、ルータＲ１の物理ＭＡＣアドレスがＡ１である場合には、ＧＡＲＰパケット処理部Ｃ１Ｅは、現用系ルータであるルータＲ１からのＧＡＲＰパケットに含まれるルータＲ１の物理ＭＡＣアドレスＡ１を取得し、接続情報テーブルＴ３からルータＲ１が接続されているスイッチＳＷ１のスイッチ番号１を取得する。そして、ＧＡＲＰパケット処理部Ｃ１Ｅは、取得したルータＲ１の物理ＭＡＣアドレスＡ１とルータＲ１が接続されているスイッチＳＷ１のスイッチ番号１とを対応付けて、アドレステーブルＴ４のルータＲ１が属するＶＲＲＰグループＩＤに対応するフィールドに格納する。
【００６３】
図５に戻り、経路算出部Ｃ１Ｆは、例えば、スイッチＳＷｎからフロー設定要求を受信すると、アドレステーブルＴ４の「ＭＡＣアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先ＭＡＣアドレスと一致するＭＡＣアドレスに対応するスイッチ番号ＳＷＮを特定する。そして、経路算出部Ｃ１Ｆは、テーブル記憶部Ｃ２Ａに格納されているトポロジ情報テーブルＴ５を参照して、フロー設定要求を送信したスイッチＳＷｎから、特定したスイッチ番号ＳＷＮのスイッチＳＷに接続されているパケットの送信先である現用系ルータまでの経路を算出する。
【００６４】
図９は、テーブル記憶部Ｃ２Ａが格納するトポロジ情報テーブルＴ５の例を示す図である。トポロジ情報テーブルＴ５には、図９に示すように、各スイッチＳＷとそのスイッチＳＷのポート接続先情報とが対応付けられて格納されている。ポート接続先情報には、ポートごとの、接続先の種別（例えば、スイッチ、ノードなど）を特定するための情報と、接続先を特定するための識別情報（例えば、接続先がスイッチＳＷであればそのスイッチＳＷのスイッチ番号ＳＷＮ）などが含まれる。
【００６５】
図５に戻り、フロー設定部Ｃ１Ｇは、経路算出部Ｃ１Ｆにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上の各スイッチＳＷに対するフローをそれぞれ生成し、生成したフローを経路上の各スイッチＳＷへ送信する。そして、コントローラＣから送信されたフローを受信した各スイッチＳＷのフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。
【００６６】
例えば、フロー設定要求に含まれるパケットのヘッダ情報の送信先ＭＡＣアドレスが、ルータＲ１のＭＡＣアドレスであり、フロー設定要求の送信元のスイッチＳＷがスイッチＳＷｎの場合には、経路算出部Ｃ１Ｆにより、スイッチＳＷｎからスイッチＳＷ１に接続されているルータＲ１への経路が算出される。例えば、経路算出部Ｃ１Ｆにより算出された経路が、スイッチＳＷｎ＞スイッチＳＷ５＞スイッチＳＷ３＞スイッチＳＷ１＞ルータＲ１である場合には、フロー設定部Ｃ１Ｇは、スイッチＳＷｎと、スイッチＳＷ５と、スイッチＳＷ３と、スイッチＳＷ１と、に対するフローをそれぞれ生成する。例えば、スイッチＳＷ５に対するフローに含まれるアクション情報には、スイッチＳＷ３へのパケット転送指示が格納され、ルールには、ルータＲ１のＭＡＣアドレスと仮想ＩＰアドレスと、パケットの送信元ノードのＭＡＣアドレスと、を含む組み合わせが格納される。また、例えば、スイッチＳＷ１に対するフローに含まれるアクション情報には、ルータＲ１へのパケット転送指示が格納され、ルールには、スイッチＳＷ５に対するフローのルールと同一のルールが格納される。これにより、同じノードからルータＲ１とルータＲ２が共有する仮想ＩＰアドレス宛にパケットが送信された場合には、スイッチＳＷｎがコントローラＣへフロー設定要求を再度送信することなく、経路上のスイッチＳＷｎと、スイッチＳＷ５と、スイッチＳＷ３と、スイッチＳＷ１は、設定されたフローに従って、パケットを現用系であるルータＲ１へ届けることが可能となる。
【００６７】
記憶部Ｃ２は、ＲＯＭ、ＲＡＭなどから構成され、テーブル記憶部Ｃ２Ａとして機能すると共に、制御部Ｃ１が備えるＣＰＵ(Central Processing Unit)のワーキングエリア、ＣＰＵが実行する動作プログラムを格納するプログラムエリア、各種データを格納するデータエリア、などとして機能する。
【００６８】
テーブル記憶部Ｃ２Ａは、上述したように、設定時間テーブルＴ２と、接続情報テーブルＴ３と、アドレステーブルＴ４と、トポロジ情報テーブルＴ５を格納する。
【００６９】
次に、図１０を参照して、コントローラＣが実行する本実施形態におけるＶＲＲＰパケット転送処理のフローについて説明する。このＶＲＲＰパケット転送処理は、オープンフローネットワークシステム１に接続されているＶＲＲＰグループごとに実行される。各ＶＲＲＰグループにおけるＶＲＲＰパケット転送処理は同じ処理であることから、ルータＲ１とルータＲ２により形成されるＶＲＲＰグループを例にして、ＶＲＲＰパケット転送処理について以下に説明する。
【００７０】
判定部Ｃ１Ｃは、ＶＲＲＰパケットをコントローラＣが受信したか否かを判定する（ステップＳ１０１）。ＶＲＲＰパケットを受信していないと判定された場合には（ステップＳ１０１；ＮＯ）、ＶＲＲＰパケットが受信されるまで、ステップＳ１０１の処理を繰り返す。
【００７１】
一方、ＶＲＲＰパケットを受信したと判定された場合には（ステップＳ１０１；ＹＥＳ）、送信元判定部Ｃ１Ａは、受信したＶＲＲＰパケットが現用系ルータ（本実施形態においては、ルータＲ１）からのＶＲＲＰパケットであるか否かを判定する（ステップＳ１０２）。受信したＶＲＲＰパケットが待機系ルータ（本実施形態においては、ルータＲ２）からのＶＲＲＰパケットであると判定された場合には（ステップＳ１０２；ＮＯ）、ＶＲＲＰパケット処理部Ｃ１Ｄは、受信したＶＲＲＰパケットを破棄し（ステップＳ１０３）、処理はステップＳ１０１の処理に戻り、前述の処理を繰り返す。
【００７２】
一方、受信したＶＲＲＰパケットが現用系ルータ（本実施形態においては、ルータＲ１）からのＶＲＲＰパケットであると判定された場合には（ステップＳ１０２；ＹＥＳ）、制御部Ｃ１は、受信したＶＲＲＰパケットに付加されている付加情報（スイッチ番号ＳＷＮと物理ポート番号ＰＮ）に基づいて、そのＶＲＲＰパケットを送信した現用系ルータに対応する設定時間Ｓｉを設定時間テーブルＴ２から取得し、取得した設定時間ＳｉをタイマＣ１Ｂに設定し、タイマＣ１Ｂをスタートさせる（ステップＳ１０４）。
【００７３】
そして、ＶＲＲＰパケット処理部Ｃ１Ｄは、受信したＶＲＲＰパケットを同じＶＲＲＰグループを形成する待機系ルータ（本実施形態においては、ルータＲ２）へ転送する（ステップＳ１０５）。
【００７４】
そして、判定部Ｃ１Ｃは、再び、ＶＲＲＰパケットをコントローラＣが受信したか否かを判定する（ステップＳ１０６）。ＶＲＲＰパケットを受信していないと判定された場合には（ステップＳ１０６；ＮＯ）、処理はステップＳ１０９の処理へ移行する。
【００７５】
一方、ＶＲＲＰパケットを受信したと判定された場合には（ステップＳ１０６；ＹＥＳ）、送信元判定部Ｃ１Ａは、受信したＶＲＲＰパケットが現用系ルータ（本実施形態においては、ルータＲ１）からのＶＲＲＰパケットであるか否かを判定する（ステップＳ１０７）。受信したＶＲＲＰパケットが現用系ルータ（本実施形態においては、ルータＲ１）からのＶＲＲＰパケットであると判定された場合には（ステップＳ１０７；ＹＥＳ）、処理はステップＳ１０４の処理へ戻り、前述の処理を繰り返す。
【００７６】
一方、受信したＶＲＲＰパケットが待機系ルータ（本実施形態においては、ルータＲ２）からのＶＲＲＰパケットであると判定された場合には（ステップＳ１０７；ＮＯ）、ＶＲＲＰパケット処理部Ｃ１Ｄは、受信したＶＲＲＰパケットを破棄する（ステップＳ１０８）。
【００７７】
そして、判定部Ｃ１Ｃは、タイマＣ１Ｂがタイムアウトしたか否かを判定する（ステップＳ１０９）。タイマＣ１Ｂがタイムアウトしていないと判定された場合には（ステップＳ１０９；ＮＯ）、処理はステップＳ１０６の処理に戻り、前述の処理を繰り返す。
【００７８】
一方、タイマＣ１Ｂがタイムアウトしたと判定された場合には（ステップＳ１０９；ＹＥＳ）、制御部Ｃ１は、テーブル記憶部Ｃ２Ａに格納されている接続情報テーブルＴ３の「現用系」欄のフラグを切り替える（ステップＳ１１０）。そして、処理は、ステップＳ１０１の処理に戻り、前述の処理を繰り返す。
【００７９】
次に、図６乃至図８と図１１を参照して、図１に示すシステムを例して、平常時における、システム全体の処理の流れについて説明する。図１１は、平常時における、図１に示すシステム全体の処理のフローを説明するための図である。なお、図中のスイッチＳＷｋは、経路算出部Ｃ１Ｆにより算出された、スイッチＳＷｎから現用系ルータに至る経路上のスイッチＳＷから、スイッチＳＷｎとスイッチＳＷ１（又は、スイッチＳＷ２）を除いたスイッチＳＷを表す。
【００８０】
同じＶＲＲＰグループを形成するルータＲ１とルータＲ２は、現用系ルータを決定するために、ＶＲＲＰパケットを他のルータ宛てに送信する。ルータＲ２が送信したＶＲＲＰパケットは、ルータＲ２が接続されているスイッチＳＷ２により受信される。ルータＲ２からのＶＲＲＰパケットを受信すると、スイッチＳＷ２のＶＲＲＰパケット処理部Ｓ１Ａは、受信したＶＲＲＰパケットに自身のスイッチ番号２と、ルータＲ２が接続されている物理ポートの物理ポート番号２０と、をそれぞれ特定するための情報を付加してコントローラＣへ転送する。
【００８１】
本実施形態においては、コントローラＣのテーブル記憶部Ｃ２Ａが格納する接続情報テーブルＴ３の初期状態では、上述したように、マスタルータであるルータＲ１に対応する「現用系」欄にフラグが立てられている。すなわち、初期状態では、コントローラＣは、マスタルータであるルータＲ１を現用系ルータとして認識している。そのため、ルータＲ２からのＶＲＲＰパケットをコントローラＣが受信しても、コントローラＣの送信元判定部Ｃ１Ａは、受信したＶＲＲＰパケットは現用系ルータからのＶＲＲＰパケットではないと判定し、ＶＲＲＰパケット処理部Ｃ１Ｄは、受信したＶＲＲＰパケットを破棄する。いずれのルータからのＶＲＲＰパケットであるかの判定は、上述したように、ＶＲＲＰパケットに付加されている付加情報（スイッチ番号ＳＷＮと物理ポート番号ＰＮ）に基づいて、行われる。
【００８２】
一方、ルータＲ１が送信したＶＲＲＰパケットは、ルータＲ１が接続されているスイッチＳＷ１により受信される。ルータＲ１からのＶＲＲＰパケットを受信すると、スイッチＳＷ１のＶＲＲＰパケット処理部Ｓ１Ａは、受信したＶＲＲＰパケットに自身のスイッチ番号１と、ルータＲ１が接続されている物理ポートの物理ポート番号１０と、をそれぞれ特定するための情報を付加してコントローラＣへ転送する。
【００８３】
コントローラＣは、上述したように、初期状態ではルータＲ１を現用系ルータとして認識していることから、ルータＲ１からのＶＲＲＰパケットを受信すると、コントローラＣの送信元判定部Ｃ１Ａは、受信したＶＲＲＰパケットは現用系ルータからのＶＲＲＰパケットであると判定する。そして、コントローラＣの制御部Ｃ１は、ＶＲＲＰパケット設定時間テーブルＴ２から設定時間Ｓｉを取得してタイマＣ１Ｂに設定し、タイマＣ１Ｂをスタートさせる。そして、コントローラＣのＶＲＲＰパケット処理部Ｃ１Ｄは、受信したＶＲＲＰパケットをルータＲ２に届けるために、スイッチＳＷ２へ転送する。
【００８４】
スイッチＳＷ２のＶＲＲＰパケット処理部Ｓ１Ａは、ＶＲＲＰパケットを受信すると、コントローラＣからの指示に従って、受信したＶＲＲＰパケットをルータＲ２へ転送する。ルータＲ１からのＶＲＲＰパケットを受信したルータＲ２は、ＶＲＲＰパケットに含まれる優先度に基づいて、ルータＲ１が現用系ルータであると判定し、その後、ＶＲＲＰパケットの送信を中断する。
【００８５】
ルータＲ１は、ルータＲ２からのＶＲＲＰパケットが届かないことから、自機が現用系であると判定し、定期的にＶＲＲＰパケットを送信すると共に、ＡＲＰテーブルを更新させるためのＧＡＲＰパケットを送信する。スイッチＳＷ１のＧＡＲＰ処理部Ｓ１Ｂは、スイッチＳＷ１がルータＲ１からのＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットをコントローラＣへ転送する。
【００８６】
コントローラＣのＧＡＲＰ処理部Ｃ１Ｅは、コントローラＣがＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットから送信元ＭＡＣアドレスＡ１を取得すると共に、接続情報テーブルＴ３から、ＧＡＲＰパケットの送信元のルータＲ１が接続されているスイッチＳＷ１のスイッチ番号１を取得する。そして、コントローラＣのＧＡＲＰ処理部Ｃ１Ｅは、取得した送信元ＭＡＣアドレスＡ１とスイッチ番号１とを対応付けて、アドレステーブルＴ４に格納すると共に、受信したＧＡＲＰパケットを、レイヤ３ノードＮ１へ転送させるために、スイッチＳＷｎへ転送する。
【００８７】
スイッチＳＷｎのＧＡＲＰパケット処理部Ｓ１Ｂは、コントローラＣから転送されたＧＡＲＰパケットを受信すると、コントローラＣの指示に従って、受信したＧＡＲＰパケットをレイヤ３ノードＮ１へ転送する。
【００８８】
レイヤ３ノードＮ１は、ＧＡＲＰパケットを受信すると、保持しているＡＲＰテーブルの更新又は追加を行う。
【００８９】
レイヤ３ノードＮ１は、ＶＲＲＰグループを形成するルータＲ１とルータＲ２が共有する仮想ＩＰアドレス宛にパケットを送信する際に、ＡＲＰテーブルを参照して、その仮想ＩＰアドレス宛のパケットを生成し、生成したパケットを送信する。
【００９０】
スイッチＳＷｎの判定部Ｓ１Ｄは、レイヤ３ノードＮ１からのパケットを受信すると、フローテーブルＴ１の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。受信したパケットが、レイヤ３ノードＮ１から現用系のルータＲ１宛のいわゆるファーストパケットであると仮定すると、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないため、判定部Ｓ１Ｄは、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないと判定する。
【００９１】
そのため、スイッチＳＷｎのフロー処理部Ｓ１Ｅは、コントローラＣへフロー設定要求を送信する。
【００９２】
コントローラＣの経路算出部Ｃ１Ｆは、コントローラＣがスイッチＳＷｎからのフロー設定要求を受信すると、アドレステーブルＴ４の「ＭＡＣアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先ＭＡＣアドレスＡ１と一致するＭＡＣアドレスに対応するスイッチ番号１を特定する。そして、経路算出部Ｃ１Ｆは、トポロジ情報テーブルＴ５を参照して、スイッチＳＷｎから、特定したスイッチ番号１のスイッチＳＷ１に接続されているパケットの送信先である現用系ルータＲ１までの経路（スイッチＳＷｎ＞スイッチＳＷｋ＞スイッチＳＷ１＞ルータＲ１）を算出する。
【００９３】
そして、コントローラＣのフロー設定部Ｃ１Ｇは、経路算出部Ｃ１Ｆにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上のスイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ１に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ１へ送信する。
【００９４】
コントローラＣから送信されたフローを受信した各スイッチＳＷのフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。
【００９５】
スイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ１は、設定したフローに従って、レイヤ３ノードＮ１からのパケットを順次転送し、現用系ルータＲ１へ届けられる。一度フローが設定されると、その後にレイヤ３ノードＮ１からルータ１とルータ２が共有する仮想ＩＰアドレス宛に送信されたパケットは、設定されたフローに従って、スイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ１により転送処理され、現用系のルータＲ１へ届けられる。
【００９６】
次に、図６と図７と図１２を参照して、図１に示すシステムを例して、障害発生時における、システム全体の処理の流れについて説明する。図１２は、障害発生時における、図１に示すシステム全体の処理のフローを説明するための図である。なお、図中のスイッチＳＷｋは、経路算出部Ｃ１Ｆにより算出された、スイッチＳＷｎから現用系ルータに至る経路上のスイッチＳＷから、スイッチＳＷｎとスイッチＳＷ１（又は、スイッチＳＷ２）を除いたスイッチＳＷを表す。
【００９７】
同じＶＲＲＰグループを形成するルータＲ１とルータＲ２は、現用系ルータを決定するために、ＶＲＲＰパケットを他のルータ宛てに送信する。ルータＲ２が送信したＶＲＲＰパケットは、ルータＲ２が接続されているスイッチＳＷ２により受信される。ルータＲ２からのＶＲＲＰパケットを受信すると、スイッチＳＷ２のＶＲＲＰパケット処理部Ｓ１Ａは、受信したＶＲＲＰパケットに自機のスイッチ番号２と、ルータＲ２が接続されている物理ポートの物理ポート番号２０と、をそれぞれ特定するための情報を付加してコントローラＣへ転送する。
【００９８】
本実施形態においては、コントローラＣのテーブル記憶部Ｃ２Ａが格納する接続情報テーブルＴ３の初期状態では、上述したように、マスタルータであるルータＲ１に対応する「現用系」欄にフラグが立てられている。すなわち、初期状態では、コントローラＣは、マスタルータであるルータＲ１を現用系ルータとして認識している。そのため、ルータＲ２からのＶＲＲＰパケットをコントローラＣが受信しても、コントローラＣの送信元判定部Ｃ１Ａは、受信したＶＲＲＰパケットは現用系ルータからのＶＲＲＰパケットではないと判定し、ＶＲＲＰパケット処理部Ｃ１Ｄは、受信したＶＲＲＰパケットを破棄する。いずれのルータからのＶＲＲＰパケットであるかの判定は、上述したように、ＶＲＲＰパケットに付加されている付加情報（スイッチ番号ＳＷＮと物理ポート番号ＰＮ）に基づいて、行われる。
【００９９】
一方、ルータＲ１が送信したＶＲＲＰパケットは、ルータＲ１が接続されているスイッチＳＷ１により受信される。ルータＲ１からのＶＲＲＰパケットを受信すると、スイッチＳＷ１のＶＲＲＰパケット処理部Ｓ１Ａは、受信したＶＲＲＰパケットに自機のスイッチ番号１と、ルータＲ１が接続されている物理ポートの物理ポート番号１０と、をそれぞれ特定するための情報を付加してコントローラＣへ転送する。
【０１００】
コントローラＣは、上述したように、初期状態ではルータＲ１を現用系ルータとして認識していることから、ルータＲ１からのＶＲＲＰパケットを受信すると、コントローラＣの送信元判定部Ｃ１Ａは、受信したＶＲＲＰパケットは現用系ルータからのＶＲＲＰパケットであると判定する。そして、コントローラＣの制御部Ｃ１は、ＶＲＲＰパケット設定時間テーブルＴ２から設定時間Ｓｉを取得してタイマＣ１Ｂに設定し、タイマＣ１Ｂをスタートさせる。そして、コントローラＣのＶＲＲＰパケット処理部Ｃ１Ｄは、受信したＶＲＲＰパケットをルータＲ２に届けるために、スイッチＳＷ２へ転送する。
【０１０１】
スイッチＳＷ２のＶＲＲＰパケット処理部Ｓ１Ａは、ＶＲＲＰパケットを受信すると、コントローラＣからの指示に従って、受信したＶＲＲＰパケットをルータＲ２へ転送する。ルータＲ１からのＶＲＲＰパケットを受信したルータＲ２は、ＶＲＲＰパケットに含まれる優先度に基づいて、ルータＲ１が現用系ルータであると判定し、その後、ＶＲＲＰパケットの送信を中断する。
【０１０２】
ここで、ルータＲ１に障害が発生すると、ルータＲ２は、現用系ルータＲ１からのＶＲＲＰパケットを設定時間内に受信できないことから、ルータＲ２は、現用系ルータＲ１に障害が発生したと判定し、ルータＲ１の処理を引き継いで、現用系ルータとしてＶＲＲＰパケットを定期的に送信する。
【０１０３】
コントローラＣの制御部Ｃ１は、タイマＣ１Ｂがタイムアウトするまでに現用系ルータＲ１からの次のＶＲＲＰパケットを受信できなかったために、接続情報テーブルＴ３の「現用系」欄のフラグを切り替える。すなわち、接続情報テーブルＴ３の「現用系」欄のフラグを、ルータＲ１からルータＲ２へ切り替える。
【０１０４】
現用系ルータとなったルータＲ２が送信したＶＲＲＰパケットは、ルータＲ２が接続されているスイッチＳＷ２により受信される。ルータＲ２からのＶＲＲＰパケットを受信すると、スイッチＳＷ２のＶＲＲＰパケット処理部Ｓ１Ａは、受信したＶＲＲＰパケットに自機のスイッチ番号２と、ルータＲ２が接続されている物理ポートの物理ポート番号２０と、をそれぞれ特定するための情報を付加してコントローラＣへ転送する。
【０１０５】
コントローラＣの送信元判定部Ｃ１Ａは、受信したルータＲ２からのＶＲＲＰパケットは現用系ルータからのＶＲＲＰパケットであると判定する。そして、コントローラＣの制御部Ｃ１は、設定時間テーブルＴ２から設定時間Ｓｉを取得してタイマＣ１Ｂに設定し、タイマＣ１Ｂをスタートさせる。そして、コントローラＣのＶＲＲＰパケット処理部Ｃ１Ｄは、受信したＶＲＲＰパケットをルータＲ１に届けるために、スイッチＳＷ１へ転送する。
【０１０６】
スイッチＳＷ１のＶＲＲＰパケット処理部Ｓ１Ａは、ＶＲＲＰパケットを受信すると、コントローラＣからの指示に従って、受信したＶＲＲＰパケットをルータＲ１へ転送する。
【０１０７】
ルータＲ１からのＶＲＲＰパケットが届かないことから、自機が現用系であると判定したルータＲ２は、ＡＲＰテーブルを更新させるためのＧＡＲＰパケットを送信する。スイッチＳＷ２のＧＡＲＰ処理部Ｓ１Ｂは、スイッチＳＷ２がルータＲ２からのＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットをコントローラＣへ転送する。
【０１０８】
コントローラＣのＧＡＲＰ処理部Ｃ１Ｅは、コントローラＣがＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットから送信元ＭＡＣアドレス（Ａ２とする）を取得すると共に、接続情報テーブルＴ３から、ＧＡＲＰパケットの送信元のルータＲ２が接続されているスイッチＳＷ２のスイッチ番号２を取得する。そして、コントローラＣのＧＡＲＰ処理部Ｃ１Ｅは、取得した送信元ＭＡＣアドレスＡ２とスイッチ番号２とを対応付けて、アドレステーブルＴ４に格納すると共に、受信したＧＡＲＰパケットを、レイヤ３ノードＮ１へ転送させるために、スイッチＳＷｎへ転送する。
【０１０９】
スイッチＳＷｎのＧＡＲＰパケット処理部Ｓ１Ｂは、コントローラＣから転送されたＧＡＲＰパケットを受信すると、コントローラＣの指示に従って、受信したＧＡＲＰパケットをレイヤ３ノードＮ１へ転送する。
【０１１０】
レイヤ３ノードＮ１は、ＧＡＲＰパケットを受信すると、保持しているＡＲＰテーブルの更新又は追加を行う。
【０１１１】
レイヤ３ノードＮ１は、ルータ１とルータ２が共有する仮想ＩＰアドレス宛にパケットを送信する際に、ＡＲＰテーブルを参照して、その仮想ＩＰアドレス宛のパケットを生成し、生成したパケットを送信する。
【０１１２】
スイッチＳＷｎの判定部Ｓ１Ｄは、レイヤ３ノードＮ１からのパケットを受信すると、フローテーブルＴ１の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。受信したパケットが、レイヤ３ノードＮ１から現用系であるルータＲ２宛のいわゆるファーストパケットであると仮定すると、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないため、判定部Ｓ１Ｄは、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないと判定する。
【０１１３】
そのため、スイッチＳＷｎのフロー処理部Ｓ１Ｅは、コントローラＣへフロー設定要求を送信する。
【０１１４】
コントローラＣの経路算出部Ｃ１Ｆは、コントローラＣがスイッチＳＷｎからのフロー設定要求を受信すると、アドレステーブルＴ４の「ＭＡＣアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先ＭＡＣアドレスＡ２と一致するＭＡＣアドレスに対応するスイッチ番号２を特定する。そして、経路算出部Ｃ１Ｆは、トポロジ情報テーブルＴ５を参照して、スイッチＳＷｎから、特定したスイッチ番号２のスイッチＳＷ２に接続されているパケットの送信先である現用系ルータＲ２までの経路（スイッチＳＷｎ＞スイッチＳＷｋ＞スイッチＳＷ２＞ルータＲ２）を算出する。
【０１１５】
そして、コントローラＣのフロー設定部Ｃ１Ｇは、経路算出部Ｃ１Ｆにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上のスイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ２に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ２へ送信する。
【０１１６】
コントローラＣから送信されたフローを受信した各スイッチＳＷのフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。
【０１１７】
スイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ２は、設定したフローに従って、レイヤ３ノードＮ１からのパケットを順次転送し、現用系ルータＲ２へ届けられる。一度フローが設定されると、その後にレイヤ３ノードＮ１からルータ１とルータ２が共有する仮想ＩＰアドレス宛に送信されたパケットは、設定されたフローに従って、スイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ２により転送処理され、新たに現用系となったルータＲ２へ届けられる。
【０１１８】
本実施形態１によれば、ＶＲＲＰ機能を備えた機器が接続されているスイッチＳＷは、その機器からＶＲＲＰパケットを受信すると、受信したＶＲＲＰパケットにスイッチ番号ＳＷＮとその機器が接続されている物理ポートのポート番号ＰＮを付加してコントローラＣへ転送した。そして、転送されたＶＲＲＰパケットを受信すると、コントローラＣの送信元判定部Ｃ１Ａは、接続情報テーブルＴ３を参照して、そのＶＲＲＰパケットが現用系から送信されたＶＲＲＰパケットであるか否かを判定し、そのＶＲＲＰパケットが現用系から送信されたＶＲＲＰパケットでないと判定された場合には、ＶＲＲＰパケット処理部Ｃ１Ｄは、そのＶＲＲＰパケットを破棄した。一方、そのＶＲＲＰパケットが現用系から送信されたＶＲＲＰパケットであると判定された場合には、そのＶＲＲＰパケットを、同じＶＲＲＰグループを形成する待機系の機器へ転送した。こうすることで、オープンフローネットワーク１に接続されているＶＲＲＰグループを形成する機器間で行われる死活監視を、コントローラＣの制御下で実行させることが可能となる。
【０１１９】
また、設定時間テーブルＴ２の設定時間Ｓｉとして、待機系の機器が現用系の機器に障害が発生したと判定するために用いる設定時間を設定した。そして、送信元判定部Ｃ１ＡによりＶＲＲＰパケットが現用系から送信されたＶＲＲＰパケットであると判定された場合には、制御部Ｃ１は、設定時間テーブルＴ２から取得した設定時間ＳｉをタイマＣ１Ｂに設定し、タイマＣ１Ｂをスタートさせた。そして、タイマＣ１Ｂがタイムアウトするまでに、現用系からの次のＶＲＲＰパケットが受信できなかった場合には、制御部Ｃ１は、接続情報テーブルＴ３の「現用系」欄のフラグを切り替えた。こうすることで、コントローラＣは、ＶＲＲＰグループを形成するいずれの機器が現用系かを的確に把握することが可能となる。
【０１２０】
また、現用系の機器が接続されているスイッチＳＷは、その機器からＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットをコントローラＣへ転送した。そして、転送されたＧＡＲＰパケットを受信すると、コントローラＣのＧＡＲＰパケット処理部Ｃ１Ｅは、受信したＧＡＲＰパケットから送信元ＭＡＣアドレスを取得すると共に、接続情報テーブルＴ３から、ＧＡＲＰパケットの送信元の現用系ルータが接続されているスイッチＳＷのスイッチ番号ＳＷＮを取得した。そして、取得した送信元ＭＡＣアドレスとスイッチ番号ＳＷＮとを対応付けて、アドレステーブルＴ４に格納した。こうすることで、ＶＲＲＰグループを形成する機器が共有する仮想ＩＰアドレス宛に送信されたパケットを、現用系の機器へ届けられるようにフローを設定することが可能となる。
【０１２１】
これにより、冗長化構成を維持した状態で、ＶＲＲＰグループをオープンフローネットワークに接続することが可能となる。すなわち、ＶＲＲＰグループを形成する機器間で行われる死活監視を、コントローラＣの制御下で実行させることが可能となると共に、冗長化された経路を維持した状態で、オープンフローネットワークにＶＲＲＰグループを接続することが可能となる。
【０１２２】
（実施形態２）
実施形態１では、ＶＲＲＰパケットを受信したスイッチＳＷは、受信したＶＲＲＰパケットをコントローラＣへ転送するように構成された。本実施形態では、ＶＲＲＰパケットを受信したスイッチＳＷは、受信したＶＲＲＰパケットをコントローラＣへ転送するかわりに、フロー設定要求をコントローラＣへ送信する。
【０１２３】
本実施形態におけるオープンフローネットワーク１の基本的な構成は、実施形態１の場合と同じである。但し、スイッチＳＷのＶＲＲＰパケット処理部Ｓ１Ａと、判定部Ｓ１Ｄと、フロー処理部Ｓ１Ｅと、が果たす機能が実施形態１とでは若干異なる。また、コントローラＣの制御部Ｃ１が、図１３に示すように、送信元判定部Ｃ１Ａと、タイマＣ１Ｂと、判定部Ｃ１Ｃと、ＶＲＲＰパケット処理部Ｃ１Ｄと、を備えない点と、テーブル記憶部Ｃ２Ａが、設定時間テーブルＴ２を備えない点が、実施形態１とでは異なる。また、コントローラＣの経路算出部Ｃ１Ｆと、フロー設定部Ｃ１Ｇが果たす機能が実施形態１とでは若干異なる。
【０１２４】
スイッチＳＷのＶＲＲＰパケット処理部Ｓ１Ａは、判定部Ｓ１Ｄにより自スイッチに接続されているルータからのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在すると判定された場合には、フローテーブルＴ１を参照して、そのルールに対応するアクション情報により特定されるアクションに従って、自スイッチに接続されているルータからのＶＲＲＰパケットを転送する。その際、自スイッチのスイッチ番号ＳＷＮとＶＲＲＰパケットの送信元ルータが接続されている物理ポートのポート番号ＰＮを特定するための情報を付加する。例えば、スイッチＳＷ１が、ルータＲ１からのＶＲＲＰパケットを受信し、判定部Ｓ１Ｄにより、ルータＲ１からのＶＲＲＰパケットに関するルールが、フローテーブルＴ１に存在すると判定され、そのルールに対応するアクション情報により特定されるアクションが「スイッチＳＷ２へ転送」である場合には、スイッチＳＷ１のＶＲＲＰパケット処理部Ｓ１Ａは、受信したＶＲＲＰパケットにスイッチ番号１とポート番号１０を特定するための情報を付加して、スイッチＳＷ２へ転送する。
【０１２５】
一方、判定部Ｓ１Ｄにより、自スイッチに接続されているルータからのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在しないと判定された場合には、ＶＲＲＰパケット処理部Ｓ１Ａは、フロー設定要求をコントローラＣへ送信する。フロー設定要求には、パケットの種別：ＶＲＲＰパケットと、自スイッチのスイッチ番号ＳＷＮと、受信したＶＲＲＰパケットの送信元のルータが接続されている物理ポートの物理ポート番号ＰＮと、が含まれる。
【０１２６】
例えば、スイッチＳＷ１のスイッチ番号ＳＷＮが”１”、ルータＲ１が接続されているスイッチＳＷ１の物理ポートの物理ポート番号ＰＮが”１０”であり、スイッチＳＷ１がルータＲ１からＶＲＲＰパケットを受信し、判定部Ｓ１Ｄにより、ルータＲ１からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在しないと判定された場合には、スイッチＳＷ１のＶＲＲＰパケット処理部Ｓ１Ａは、パケットの種別：ＶＲＲＰパケットと、スイッチ番号”１”と、物理ポート番号”１０”と、を含むフロー設定要求をコントローラＣへ送信する。
【０１２７】
また、ＶＲＲＰパケット処理部Ｓ１Ａは、他のスイッチＳＷから転送されたＶＲＲＰパケットを受信すると、フローテーブルＴ１の「ルール」欄を検索して、ＶＲＲＰパケットに付加されている、ＶＲＲＰパケットの送信元ルータが接続されているスイッチＳＷのスイッチ番号ＳＷＮと物理ポートのポート番号ＰＮとの組と、パケットの種別：ＶＲＲＰパケットとに基づいて、ルールを特定する。そして、ＶＲＲＰパケット処理部Ｓ１Ａは、特定したルールに対応するアクション情報により特定されるアクションに従って、受信したＶＲＲＰパケットを転送する。
【０１２８】
判定部Ｓ１Ｄは、自スイッチＳＷに接続するノードから送信されたパケットを受信すると、フローテーブルＴ１の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在するか否かを判定する。さらに、判定部Ｓ１Ｄは、自スイッチに接続されているルータからのＶＲＲＰパケットを受信すると、フローテーブルＴ１の「ルール」欄を検索して、自スイッチに接続されているルータからのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在するか否かを判定する。
【０１２９】
フロー処理部Ｓ１Ｅは、自スイッチＳＷに接続するノードから送信されたパケットを受信し、判定部Ｓ１Ｄにより、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在すると判定された場合には、そのルールに対応するアクション情報により特定されるアクションを実行する。一方、フロー処理部Ｓ１Ｅは、判定部Ｓ１Ｄにより、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないと判定された場合には、コントローラＣへフロー設定要求を送信する。フロー設定要求には、パケットの種別と、パケットのヘッダ情報と、自スイッチのスイッチ番号ＳＷＮとパケットの送信元のノードが接続されている物理ポートの物理ポート番号ＰＮとを特定するための情報が含まれる。
【０１３０】
コントローラＣの制御部Ｃ１は、ＣＰＵを備え、記憶部Ｃ２に格納されている動作プログラムを実行することで、図１３に示すように、ＧＡＲＰパケット処理部Ｃ１Ｅと、経路算出部Ｃ１Ｆと、フロー設定部Ｃ１Ｇと、としての機能を実現すると共に、各機能部の制御処理、フロー設定処理などの処理を実行する。
【０１３１】
経路算出部Ｃ１Ｆは、例えば、スイッチＳＷｎからフロー設定要求を受信し、フロー設定要求に含まれるパケットの種別が通常のパケットである場合には、アドレステーブルＴ４の「ＭＡＣアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先ＭＡＣアドレスと一致するＭＡＣアドレスに対応するスイッチ番号ＳＷＮを特定する。そして、経路算出部Ｃ１Ｆは、テーブル記憶部Ｃ２Ａに格納されているトポロジ情報テーブルＴ５を参照して、フロー設定要求を送信したスイッチＳＷｎから、特定したスイッチ番号ＳＷＮのスイッチＳＷに接続されているパケットの送信先である現用系ルータまでの経路を算出する。
【０１３２】
また、例えば、スイッチＳＷ１からのフロー設定要求を受信し、フロー設定要求に含まれるパケットの種別がＶＲＲＰパケットである場合には、経路算出部Ｃ１Ｆは、接続情報テーブルＴ３を参照して、フロー設定要求に含まれるスイッチ番号１とポート番号１０とに基づいて、そのフロー設定要求を送信したスイッチＳＷ１にＶＲＲＰパケットを送信したルータＲ１を特定する。そして、経路算出部Ｃ１Ｆは、特定したルータＲ１と同じＶＲＲＰグループを形成するルータＲ２が接続されているスイッチＳＷ２を特定する。そして、経路算出部Ｃ１Ｆは、テーブル記憶部Ｃ２Ａに格納されているトポロジ情報テーブルＴ５を参照して、フロー設定要求を送信したスイッチＳＷ１から、特定したスイッチＳＷ２に接続されているＶＲＲＰパケットの送信元のルータと同じＶＲＲＰグループを形成するルータＲ２までの経路を算出する。
【０１３３】
図１４は、テーブル記憶部Ｃ２Ａに格納されている接続情報テーブルＴ３の例を示す図である。接続情報テーブルＴ３は、図１４に示すように、ＶＲＲＰグループを形成する各ルータと、そのＶＲＲＰグループを形成するルータと通信を行うノードとが対応付けられており、さらに、それぞれが接続するスイッチＳＷのスイッチ番号ＳＷＮとポート番号ＰＮが対応付けられている。
【０１３４】
図１３に戻り、フロー設定部Ｃ１Ｇは、フロー設定要求に含まれるパケットの種別が通常のパケットである場合には、経路算出部Ｃ１Ｆにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上の各スイッチＳＷに対するフローをそれぞれ生成し、生成したフローを経路上の各スイッチＳＷへそれぞれ送信する。そして、コントローラＣから送信されたフローを受信した各スイッチＳＷのフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。
【０１３５】
また、フロー設定部Ｃ１Ｇは、フロー設定要求に含まれるパケットの種別がＶＲＲＰパケットである場合には、経路算出部Ｃ１Ｆにより算出された経路と、パケットの種別とに基づいて、経路上の各スイッチＳＷに対するフローをそれぞれ生成し、生成したフローを経路上の各スイッチＳＷへ送信する。そして、コントローラＣから送信されたフローを受信した各スイッチＳＷのフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。フロー設定要求に含まれるパケットの種別がＶＲＲＰパケットである場合にフロー設定部Ｃ１Ｇにより生成されるフローに含まれるルールには、例えば、パケットの種別：ＶＲＲＰパケットと、そのＶＲＲＰパケットの送信元ルータを識別する情報（例えば、送信元ルータが接続されるスイッチＳＷのスイッチ番号ＳＷＮと、送信元ルータが接続される物理ポートのポート番号ＰＮとの組）と、が格納される。
【０１３６】
例えば、フロー設定要求に含まれるパケットの種別が、ＶＲＲＰパケットであり、フロー設定要求の送信元のスイッチＳＷがスイッチＳＷ１の場合には、経路算出部Ｃ１Ｆにより、スイッチＳＷ１からスウィッチＳＷ２に接続されているルータＲ２への経路が算出される。この場合、経路算出部Ｃ１Ｆにより算出される経路は、スイッチＳＷ１＞スイッチＳＷ２＞ルータＲ２となる。フロー設定部Ｃ１Ｇは、スイッチＳＷ１と、スイッチＳＷ２と、に対するフローをそれぞれ生成する。例えば、スイッチＳＷ１に対するフローに含まれるアクション情報には、スイッチＳＷ２へのＶＲＲＰパケット転送指示が格納され、ルールには、パケットの種別：ＶＲＲＰパケットと、スイッチＳＷ１のスイッチ番号１とＶＲＲＰパケットの送信元ルータＲ１が接続されている物理ポートのポート番号１０との組と、が格納される。また、例えば、スイッチＳＷ２に対するフローに含まれるアクション情報には、ルータＲ２へのＶＲＲＰパケット転送指示が格納され、ルールには、スイッチＳＷ１に対するフローのルールと同一のルールが格納される。これにより、ルータＲ１から次のＶＲＲＰパケットが送信された場合には、スイッチＳＷ１は、コントローラＣへフロー設定要求を送信することなく、フローテーブルＴ３に設定されたフローに従って、ＶＲＲＰパケットをルータＲ２へ届けることが可能となる。
【０１３７】
テーブル記憶部Ｃ２Ａは、接続情報テーブルＴ３と、アドレステーブルＴ４と、トポロジ情報テーブルＴ５を格納する。
【０１３８】
次に、図８と図１４と図１５を参照して、図１に示すシステムを例して、平常時における、システム全体の処理の流れについて説明する。図１５は、平常時における、図１に示すシステム全体の処理のフローを説明するための図である。なお、図中のスイッチＳＷｋは、経路算出部Ｃ１Ｆにより算出された、スイッチＳＷｎから現用系ルータに至る経路上のスイッチＳＷから、スイッチＳＷｎとスイッチＳＷ１（又は、スイッチＳＷ２）を除いたスイッチＳＷを表す。なお、ルータＲ１の優先度の値は、ルータＲ２の優先度の値より大きいと仮定する。
【０１３９】
同じＶＲＲＰグループを形成するルータＲ１とルータＲ２は、現用系ルータを決定するために、ＶＲＲＰパケットを他のルータ宛てに送信する。ルータＲ２が送信したＶＲＲＰパケットは、ルータＲ２が接続されているスイッチＳＷ２により受信される。ルータＲ２からのＶＲＲＰパケットを受信すると、スイッチＳＷ２の判定部Ｓ１Ｄは、フローテーブルＴ１の「ルール」欄を検索して、ルータＲ２からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在するか否かを判定する。受信したＶＲＲＰパケットがルータＲ２が送信した最初のＶＲＲＰパケットである場合には、スイッチＳＷ２の判定部Ｓ１Ｄにより、フローテーブルＴ１にルータＲ２からのＶＲＲＰパケットに関するルールは存在しないと判定され、スイッチＳＷ２のＶＲＲＰパケット処理部Ｓ１Ａは、フロー設定要求をコントローラＣへ送信する。
【０１４０】
スイッチＳＷ２からのフロー設定要求を受信したコントローラＣの経路算出部Ｃ１Ｆは、接続情報テーブルＴ３を参照して、フロー設定要求に含まれるスイッチ番号２とポート番号２０とに基づいて、そのフロー設定要求を送信したスイッチＳＷ２にＶＲＲＰパケットを送信したルータＲ２を特定する。そして、経路算出部Ｃ１Ｆは、特定したルータＲ２と同じＶＲＲＰグループを形成するルータＲ１が接続されているスイッチＳＷ１特定する。そして、経路算出部Ｃ１Ｆは、テーブル記憶部Ｃ２Ａに格納されているトポロジ情報テーブルＴ５を参照して、フロー設定要求を送信したスイッチＳＷ２から、特定したスイッチＳＷ１に接続されている、ＶＲＲＰパケットの送信元のルータＲ１と同じＶＲＲＰグループを形成するルータＲ１までの経路（スイッチＳＷ２＞スイッチＳＷ１＞ルータＲ１）を算出する。
【０１４１】
そして、コントローラＣのフロー設定部Ｃ１Ｇは、経路算出部Ｃ１Ｆにより算出された経路（スイッチＳＷ２＞スイッチＳＷ１＞ルータＲ１）と、パケットの種別：ＶＲＲＰパケットとに基づいて、経路上のスイッチＳＷ１とスイッチＳＷ２に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチＳＷ１とスイッチＳＷ２へそれぞれ送信する。
【０１４２】
そして、コントローラＣから送信されたフローを受信したスイッチＳＷ１とスイッチＳＷ２のフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。
【０１４３】
これにより、ルータＲ２から送信されたＶＲＲＰパケットは、フローテーブルＴ１に設定されたフローに従って、スイッチＳＷ２から順次転送され、ＶＲＲＰパケットの送信元のルータＲ２と同じＶＲＲＰグループを形成するルータＲ１へ届けられる。ルータＲ２からのＶＲＲＰパケットを受信したルータＲ１は、ＶＲＲＰパケットに含まれる優先度に基づいて、自機が現用系ルータであると判定し、ＶＲＲＰパケットを定期的に送信すると共に、ＡＲＰテーブルを更新させるためのＧＡＲＰパケットを送信する。
【０１４４】
また、ルータＲ１が送信したＶＲＲＰパケットは、ルータＲ１が接続されているスイッチＳＷ１により受信される。ルータＲ１からのＶＲＲＰパケットを受信すると、スイッチＳＷ１の判定部Ｓ１Ｄは、フローテーブルＴ１の「ルール」欄を検索して、ルータＲ１からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在するか否かを判定する。受信したＶＲＲＰパケットがルータＲ１が送信した最初のＶＲＲＰパケットである場合には、スイッチＳＷ１の判定部Ｓ１Ｄにより、フローテーブルＴ１にルータＲ１からのＶＲＲＰパケットに関するルールは存在しないと判定され、スイッチＳＷ１のＶＲＲＰパケット処理部Ｓ１Ａは、フロー設定要求をコントローラＣへ送信する。
【０１４５】
スイッチＳＷ１からのフロー設定要求を受信したコントローラＣの経路算出部Ｃ１Ｆは、経路（スイッチＳＷ１＞スイッチＳＷ２＞ルータＲ２）を算出する。そして、コントローラＣのフロー設定部Ｃ１Ｇは、経路算出部Ｃ１Ｆにより算出された経路（スイッチＳＷ１＞スイッチＳＷ２＞ルータＲ２）と、パケットの種別：ＶＲＲＰパケットとに基づいて、経路上のスイッチＳＷ１とスイッチＳＷ２に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチＳＷ１とスイッチＳＷ２へそれぞれ送信する。
【０１４６】
そして、コントローラＣから送信されたフローを受信したスイッチＳＷ１とスイッチＳＷ２のフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。
【０１４７】
これにより、ルータＲ１から送信されたＶＲＲＰパケットは、フローテーブルＴ１に設定されたフローに従って、スイッチＳＷ１から順次転送され、ＶＲＲＰパケットの送信元のルータＲ１と同じＶＲＲＰグループを形成するルータＲ２へ届けられる。ルータＲ１からのＶＲＲＰパケットを受信したルータＲ２は、ＶＲＲＰパケットに含まれる優先度に基づいて、ルータＲ１が現用系ルータであると判定し、その後、ＶＲＲＰパケットの送信を中断する。
【０１４８】
スイッチＳＷ１のＧＡＲＰ処理部Ｓ１Ｂは、スイッチＳＷ１がルータＲ１からのＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットをコントローラＣへ転送する。。
【０１４９】
コントローラＣのＧＡＲＰ処理部Ｃ１Ｅは、コントローラＣがＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットから送信元ＭＡＣアドレスＡ１を取得すると共に、接続情報テーブルＴ３から、ＧＡＲＰパケットの送信元のルータＲ１が接続されているスイッチＳＷ１のスイッチ番号１を取得する。そして、コントローラＣのＧＡＲＰ処理部Ｃ１Ｅは、取得した送信元ＭＡＣアドレスＡ１とスイッチ番号１とを対応付けて、アドレステーブルＴ４に格納すると共に、受信したＧＡＲＰパケットを、レイヤ３ノードＮ１へ転送させるために、スイッチＳＷｎへ転送する。
【０１５０】
スイッチＳＷｎのＧＡＲＰパケット処理部Ｓ１Ｂは、コントローラＣから転送されたＧＡＲＰパケットを受信すると、コントローラＣの指示に従って、受信したＧＡＲＰパケットをレイヤ３ノードＮ１へ転送する。
【０１５１】
レイヤ３ノードＮ１は、ＧＡＲＰパケットを受信すると、保持しているＡＲＰテーブルの更新又は追加を行う。
【０１５２】
レイヤ３ノードＮ１は、ＶＲＲＰグループを形成するルータＲ１とルータＲ２が共有する仮想ＩＰアドレス宛にパケットを送信する際に、ＡＲＰテーブルを参照して、その仮想ＩＰアドレス宛のパケットを生成し、生成したパケットを送信する。
【０１５３】
スイッチＳＷｎの判定部Ｓ１Ｄは、レイヤ３ノードＮ１からのパケットを受信すると、フローテーブルＴ１の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。受信したパケットが、レイヤ３ノードＮ１から現用系のルータＲ１宛のいわゆるファーストパケットであると仮定すると、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないため、判定部Ｓ１Ｄは、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないと判定する。
【０１５４】
そのため、スイッチＳＷｎのフロー処理部Ｓ１Ｅは、コントローラＣへフロー設定要求を送信する。
【０１５５】
コントローラＣの経路算出部Ｃ１Ｆは、コントローラＣがスイッチＳＷｎからのフロー設定要求を受信すると、アドレステーブルＴ４の「ＭＡＣアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先ＭＡＣアドレスＡ１と一致するＭＡＣアドレスに対応するスイッチ番号１を特定する。そして、経路算出部Ｃ１Ｆは、トポロジ情報テーブルＴ５を参照して、スイッチＳＷｎから、特定したスイッチ番号１のスイッチＳＷ１に接続されているパケットの送信先である現用系ルータＲ１までの経路（スイッチＳＷｎ＞スイッチＳＷｋ＞スイッチＳＷ１＞ルータＲ１）を算出する。
【０１５６】
そして、コントローラＣのフロー設定部Ｃ１Ｇは、経路算出部Ｃ１Ｆにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上のスイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ１に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ１へ送信する。
【０１５７】
コントローラＣから送信されたフローを受信した各スイッチＳＷのフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。
【０１５８】
スイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ１は、設定したフローに従って、レイヤ３ノードＮ１からのパケットを順次転送し、現用系ルータＲ１へ届けられる。一度フローが設定されると、その後にレイヤ３ノードＮ１からルータ１とルータ２が共有する仮想ＩＰアドレス宛に送信されたパケットは、設定されたフローに従って、スイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ１により転送処理され、現用系のルータＲ１へ届けられる。
【０１５９】
次に、図８と図１４と図１６を参照して、図１に示すシステムを例して、障害発生時における、システム全体の処理の流れについて説明する。図１６は、障害発生時における、図１に示すシステム全体の処理のフローを説明するための図である。なお、図中のスイッチＳＷｋは、経路算出部Ｃ１Ｆにより算出された、スイッチＳＷｎから現用系ルータに至る経路上のスイッチＳＷから、スイッチＳＷｎとスイッチＳＷ１（又は、スイッチＳＷ２）を除いたスイッチＳＷを表す。なお、ルータＲ１の優先度の値は、ルータＲ２の優先度の値より大きいと仮定する。また、スイッチＳＷ１とスイッチＳＷ２のフローテーブルＴ１には、既に、ＶＲＲＰパケットに関するフローが設定されているものとし、ルータＲ１が、現用系ルータとして機能しているものとする。
【０１６０】
現用系ルータのルータＲ１は定期的にＶＲＲＰパケットを送信する。ルータＲ１からのＶＲＲＰパケットを受信すると、スイッチＳＷ１の判定部Ｓ１Ｄは、フローテーブルＴ１の「ルール」欄を検索して、ルータＲ１からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在するか否かを判定する。既に、フローテーブルＴ１には、ルータＲ１からのＶＲＲＰパケットに関するフローが設定されていることから、スイッチＳＷ１の判定部Ｓ１Ｄは、ルータＲ１からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在すると判定する。スイッチＳＷ１は、フロー設定要求をコントローラＣへ送信することなく、フローテーブルＴ１に設定されているフローに従って、ＶＲＲＰパケットに自機のスイッチ番号１と、ルータＲ１が接続されている物理ポートの物理ポート番号１０と、をそれぞれ特定するための情報を付加して転送し、ＶＲＲＰパケットは、同じＶＲＲＰグループを形成する待機系ルータＲ２へ届けられる。
【０１６１】
ここで、ルータＲ１に障害が発生すると、ルータＲ２は、現用系ルータＲ１からのＶＲＲＰパケットを設定時間内に受信できないことから、ルータＲ２は、現用系ルータＲ１に障害が発生したと判定し、ルータＲ１の処理を引き継いで、現用系ルータとしてＶＲＲＰパケットを定期的に送信する。
【０１６２】
ルータＲ２からのＶＲＲＰパケットを受信すると、スイッチＳＷ２の判定部Ｓ１Ｄは、フローテーブルＴ１の「ルール」欄を検索して、ルータＲ２からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在するか否かを判定する。既に、フローテーブルＴ１には、ルータＲ２からのＶＲＲＰパケットに関するフローが設定されていることから、スイッチＳＷ２の判定部Ｓ１Ｄは、ルータＲ２からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在すると判定する。スイッチＳＷ２は、フロー設定要求をコントローラＣへ送信することなく、フローテーブルＴ１に設定されているフローに従って、ＶＲＲＰパケットに自機のスイッチ番号２と、ルータＲ２が接続されている物理ポートの物理ポート番号２０と、をそれぞれ特定するための情報を付加して転送し、ＶＲＲＰパケットは、同じＶＲＲＰグループを形成する待機系ルータＲ１へ届けられる。
【０１６３】
現用系となったルータＲ２は、ＡＲＰテーブルを更新させるためのＧＡＲＰパケットを送信する。スイッチＳＷ２のＧＡＲＰ処理部Ｓ１Ｂは、スイッチＳＷ２がルータＲ２からのＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットをコントローラＣへ転送する。
【０１６４】
コントローラＣのＧＡＲＰ処理部Ｃ１Ｅは、コントローラＣがＧＡＲＰパケットを受信すると、受信したＧＡＲＰパケットから送信元ＭＡＣアドレス（Ａ２とする）を取得すると共に、接続情報テーブルＴ３から、ＧＡＲＰパケットの送信元のルータＲ２が接続されているスイッチＳＷ２のスイッチ番号２を取得する。そして、コントローラＣのＧＡＲＰ処理部Ｃ１Ｅは、取得した送信元ＭＡＣアドレスＡ２とスイッチ番号２とを対応付けて、アドレステーブルＴ４に格納すると共に、受信したＧＡＲＰパケットを、レイヤ３ノードＮ１へ転送させるために、スイッチＳＷｎへ転送する。
【０１６５】
スイッチＳＷｎのＧＡＲＰパケット処理部Ｓ１Ｂは、コントローラＣから転送されたＧＡＲＰパケットを受信すると、コントローラＣの指示に従って、受信したＧＡＲＰパケットをレイヤ３ノードＮ１へ転送する。
【０１６６】
レイヤ３ノードＮ１は、ＧＡＲＰパケットを受信すると、保持しているＡＲＰテーブルの更新又は追加を行う。
【０１６７】
レイヤ３ノードＮ１は、ルータ１とルータ２が共有する仮想ＩＰアドレス宛にパケットを送信する際に、ＡＲＰテーブルを参照して、その仮想ＩＰアドレス宛のパケットを生成し、生成したパケットを送信する。
【０１６８】
スイッチＳＷｎの判定部Ｓ１Ｄは、レイヤ３ノードＮ１からのパケットを受信すると、フローテーブルＴ１の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。受信したパケットが、レイヤ３ノードＮ１から現用系であるルータＲ２宛のいわゆるファーストパケットであると仮定すると、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないため、判定部Ｓ１Ｄは、受信したパケットのヘッダ情報と一致するルールがフローテーブルＴ１に存在しないと判定する。
【０１６９】
そのため、スイッチＳＷｎのフロー処理部Ｓ１Ｅは、コントローラＣへフロー設定要求を送信する。
【０１７０】
コントローラＣの経路算出部Ｃ１Ｆは、コントローラＣがスイッチＳＷｎからのフロー設定要求を受信すると、アドレステーブルＴ４の「ＭＡＣアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先ＭＡＣアドレスＡ２と一致するＭＡＣアドレスに対応するスイッチ番号２を特定する。そして、経路算出部Ｃ１Ｆは、トポロジ情報テーブルＴ５を参照して、スイッチＳＷｎから、特定したスイッチ番号２のスイッチＳＷ２に接続されているパケットの送信先である現用系ルータＲ２までの経路（スイッチＳＷｎ＞スイッチＳＷｋ＞スイッチＳＷ２＞ルータＲ２）を算出する。
【０１７１】
そして、コントローラＣのフロー設定部Ｃ１Ｇは、経路算出部Ｃ１Ｆにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上のスイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ２に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ２へ送信する。
【０１７２】
コントローラＣから送信されたフローを受信した各スイッチＳＷのフロー設定部Ｓ１Ｃは、テーブル記憶部Ｓ２Ａが格納するフローテーブルＴ１に、受信したフローを設定する。
【０１７３】
スイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ２は、設定したフローに従って、レイヤ３ノードＮ１からのパケットを順次転送し、現用系ルータＲ２へ届けられる。一度フローが設定されると、その後にレイヤ３ノードＮ１からルータ１とルータ２が共有する仮想ＩＰアドレス宛に送信されたパケットは、設定されたフローに従って、スイッチＳＷｎとスイッチＳＷｋとスイッチＳＷ２により転送処理され、新たに現用系となったルータＲ２へ届けられる。
【０１７４】
本実施形態２によれば、ＶＲＲＰ機能を備える機器が送信したＶＲＲＰパケットを受信した、その機器が接続されているスイッチＳＷの判定部Ｓ１Ｄは、フローテーブルＴ１の「ルール」欄を検索して、自スイッチに接続されているルータからのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在するか否かを判定した。そして、その機器が接続されているスイッチＳＷのＶＲＲＰパケット処理部Ｓ１Ａは、判定部Ｓ１Ｄによりその機器からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在すると判定された場合には、フローテーブルＴ１を参照して、そのルールに対応するアクション情報により特定されるアクションに従って、受信したＶＲＲＰパケットを転送した。一方、判定部Ｓ１Ｄにより、その機器からのＶＲＲＰパケットに関するルールがフローテーブルＴ１に存在しないと判定された場合には、ＶＲＲＰパケット処理部Ｓ１Ａは、フロー設定要求をコントローラＣへ送信した。そして、フロー設定要求を受信したコントローラＣの経路算出部Ｃ１Ｆは、ＶＲＲＰパケットの送信元の機器が接続されているスイッチＳＷから、その機器と同じＶＲＲＰグループを形成する機器までの経路を算出し、コントローラＣのフロー設定部Ｃ１Ｇは、経路上に設置されている各スイッチＳＷに対するフローを生成し、生成したフローを各スイッチＳＷにそれぞれ設定した。こうすることで、スイッチＳＷは、接続されているＶＲＲＰ機能を備える機器からのＶＲＲＰパケットを受信するたびに、コントローラＣとの間でやりとりを行う必要がなくなることから、コントローラＣの負荷を軽減させることが可能となる。また、ＶＲＲＰパケットに関するフローが経路上の各スイッチＳＷに対して設定されることから、仮にコントローラＣに障害が発生したとしても、現用系の機器に障害が発生しない限り、現用系の機器から定期的に送信されるＶＲＲＰパケットは、設定されたフローに従って、待機系の機器へ届けられるため、データ通信を継続することが可能となる。
【０１７５】
なお、上記実施形態において、ＶＲＲＰ機能を備えるルータを例に、本発明について説明したが、本発明は、他の冗長化プロトコルを用いる機器に対しても適用することができる。
【０１７６】
また、上記実施形態１において、コントローラＣのＶＲＲＰパケット処理部Ｃ１Ｄは、待機系ルータからのＶＲＲＰパケットを破棄する構成としたが、破棄せずに現用系ルータへ届けるように構成してもよい。
【０１７７】
また、上記実施形態において、実行されるプログラムは、フレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read-Only Memory)、ＤＶＤ(Digital Versatile Disc)、ＭＯ（Magneto-Optical Disc)等のコンピュータで読み取り可能な記録媒体に格納して配布し、そのプログラムをインストールすることにより、上述の処理を実行することとしてもよい。
また、プログラムをインターネット等の通信ネットワーク上の所定のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、取得等するようにしてもよい。
【０１７８】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。
【符号の説明】
【０１７９】
１              オープンフローネットワークシステム
２              スイッチ群
ＳＷ１〜ＳＷｎ  スイッチ
Ｓ１            制御部
Ｓ１Ａ          ＶＲＲＰパケット処理部
Ｓ１Ｂ          ＧＡＲＰパケット処理部
Ｓ１Ｃ          フロー設定部
Ｓ１Ｄ          判定部
Ｓ１Ｅ          フロー処理部
Ｓ２            記憶部
Ｓ２Ａ          テーブル記憶部
Ｃ              コントローラ
Ｃ１            制御部
Ｃ１Ａ          送信元判定部
Ｃ１Ｂ          タイマ
Ｃ１Ｃ          判定部
Ｃ１Ｄ          ＶＲＲＰパケット処理部
Ｃ１Ｅ          ＧＡＲＰパケット処理部
Ｃ１Ｆ          経路算出部
Ｃ１Ｇ          フロー設定部
Ｃ２            記憶部
Ｃ２Ａ          テーブル記憶部
Ｔ１            フローテーブル
Ｔ２            設定時間テーブル
Ｔ３            接続情報テーブル
Ｔ４            アドレステーブル
Ｔ５            トポロジ情報テーブル
【図１】
0005814849.tif 000002
【図２】
0005814849.tif 000003
【図３】
0005814849.tif 000004
【図４】
0005814849.tif 000005
【図５】
0005814849.tif 000006
【図６】
0005814849.tif 000007
【図７】
0005814849.tif 000008
【図８】
0005814849.tif 000009
【図９】
0005814849.tif 000010
【図１０】
0005814849.tif 000011
【図１１】
0005814849.tif 000012
【図１２】
0005814849.tif 000013
【図１３】
0005814849.tif 000014
【図１４】
0005814849.tif 000015
【図１５】
0005814849.tif 000016
【図１６】
0005814849.tif 000017