JP5814849B2 - オープンフローネットワークシステム、及び、データ通信方法 - Google Patents

オープンフローネットワークシステム、及び、データ通信方法 Download PDF

Info

Publication number
JP5814849B2
JP5814849B2 JP2012080859A JP2012080859A JP5814849B2 JP 5814849 B2 JP5814849 B2 JP 5814849B2 JP 2012080859 A JP2012080859 A JP 2012080859A JP 2012080859 A JP2012080859 A JP 2012080859A JP 5814849 B2 JP5814849 B2 JP 5814849B2
Authority
JP
Japan
Prior art keywords
packet
network device
switch
router
flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012080859A
Other languages
English (en)
Other versions
JP2013211706A (ja
Inventor
繁章 前田
繁章 前田
兼介 渡邉
兼介 渡邉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Data Corp
Original Assignee
NTT Data Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Data Corp filed Critical NTT Data Corp
Priority to JP2012080859A priority Critical patent/JP5814849B2/ja
Publication of JP2013211706A publication Critical patent/JP2013211706A/ja
Application granted granted Critical
Publication of JP5814849B2 publication Critical patent/JP5814849B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、オープンフローネットワークシステム、及び、データ通信方法に関し、特に、冗長化構成を維持した状態で、冗長化されたネットワーク機器をオープンフローネットワークに接続することが可能なオープンフローネットワークシステム、及び、データ通信方法に関する。
ネットワークで使用される機器の信頼性を向上させる技術として、VRRP(Virtual Router Redundancy Protocol)がある(例えば、特許文献1参照)。VRRPは、物理的に複数の機器で冗長化し、現用系の機器に障害が発生しても、冗長化構成を形成する他の機器が処理を引き継ぐことで、処理が停止してしまうのを防止することが可能となる。
また、ネットワークを構成する各スイッチにおける転送処理等をコントローラにより一元的に制御するオープンフロー技術が、OpenFlow Consortiumによって提案されている。
特開2005−167435号公報
既存のネットワーク機器は、自律的に動作するため、VRRP機能を備えた機器をオープンフロー技術を利用したネットワークに接続した場合、コントローラは、同じVRRPグループを形成する機器のうちの、いずれの機器が現用系として機能しているのかについての情報を得ることができない。
そのため、オープンフロー技術を利用したネットワークにVRRPグループを形成する機器を接続した場合、コントローラは、各スイッチの転送処理等を一元的に制御できなくなる。
本発明は、上記の課題を解決するためになされたものであり、冗長化構成を維持した状態で、冗長化されたネットワーク機器をオープンフローネットワークに接続することが可能なオープンフローネットワークシステム、及び、データ通信方法を提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係るオープンフローネットワークシステムは、
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、受信した死活監視用パケットを、前記各スイッチのデータ転送処理を一元的に制御するコントローラへ転送する死活監視用パケット転送手段と、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するARP(Address Resolution Protocol)テーブルを更新させるためのGARP(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記GARPパケットを転送するGARPパケット転送手段と、
を備え、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報と、前記物理的に冗長化されているネットワーク機器が接続されているスイッチのうちで、いずれのスイッチに接続されているネットワーク機器が現用系ネットワーク機器かを識別可能な現用系情報と、を対応つけた接続情報を格納する記憶部と、
前記GARPパケット転送手段により転送された前記GARPパケットに含まれる、前記現用系ネットワーク機器の物理MAC(Media Access Control)アドレスを取得する取得手段と、
前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる死活監視用パケット転送制御手段と、
前記取得手段により取得された前記現用系ネットワーク機器の物理MACアドレスと前記接続情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先MACアドレスと一致する前記現用系ネットワーク機器の物理MACアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する経路算出手段と、
前記経路算出手段により算出された経路上の各スイッチを制御して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想IP(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるパケット転送制御手段と、
を備える、
ことを特徴とする。
記死活監視用パケット転送制御部は、前記記憶部に格納されている前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、特定したネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記特定したネットワーク機器へ送信させる、
ようにしてもよい。
また、前記コントローラが、
前記記憶部に格納されている接続情報を参照して、前記死活監視用パケットを送信したネットワーク機器が現用系ネットワーク機器か否かを判定する送信元判定手段をさらに備え、
死活監視用パケット転送制御手段は、前記送信元判定手段により前記死活監視用パケットを送信したネットワーク機器が現用系ネットワーク機器であると判定された場合のみ、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる、
ようにしてもよい。
また、前記コントローラが、
現用系ネットワーク機器からの死活監視用パケットが所定時間内に受信できなかった場合には、該現用系ネットワーク機器に障害が発生したと判定し、前記接続情報の対応する現用系情報を更新する更新手段をさらに備える、
ようにしてもよい。
また、前記物理的に冗長化されているネットワーク機器は、VRRP(Virtual Router Redundancy Protocol)機能を備え、前記死活監視用パケットは、VRRPパケットである、
ようにしてもよい。
また、前記物理的に冗長化されているネットワーク機器は、ルータである、
ようにしてもよい。
上記目的を達成するために、本発明の第2の観点に係るオープンフローネットワークシステムは、
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローの設定を、自スイッチから前記死活監視用パケットの送信先のネットワーク機器までの経路上の各スイッチに対して実行するよう要求するフロー設定要求を、コントローラへ送信するフロー設定要求送信手段と、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するARP(Address Resolution Protocol)テーブルを更新させるためのGARP(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記GARPパケットを転送するGARPパケット転送手段と、
を備え、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報を格納する記憶部と、
前記GARPパケット転送手段により転送された前記GARPパケットに含まれる、前記現用系ネットワーク機器の物理MAC(Media Access Control)アドレスを取得する取得手段と、
前記フロー設定要求を受信すると、前記記憶部に格納されている前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、前記フロー設定要求を送信したスイッチから、特定したネットワーク機器までの経路を算出する第1経路算出手段と、
前記第1経路算出手段により算出された経路上の各スイッチに対して、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信させるためのフローをそれぞれ設定する死活監視用パケット転送制御手段と、
前記取得手段により取得された前記現用系ネットワーク機器の物理MACアドレスと前記ネットワーク機器スイッチ対応情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先MACアドレスと一致する前記現用系ネットワーク機器の物理MACアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する第2経路算出手段と、
前記第2経路算出手段により算出された経路上の各スイッチに対して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想IP(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるためのフローをそれぞれ設定するパケット転送制御手段と、
を備える、
ことを特徴とする。
なお、前記各スイッチが、
前記ネットワーク機器から前記死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記受信した死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローが既に設定されているか否かを判定する判定手段をさらに備え、
フロー設定要求送信手段は、前記判定手段により、前記物理的に冗長化されているネットワーク機器のうちで、前記受信した死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローがまだ設定されていないと判定された場合のみ、前記フロー設定要求をコントローラへ送信する、
ようにしてもよい。
また、前記物理的に冗長化されているネットワーク機器は、VRRP(Virtual Router Redundancy Protocol)機能を備え、前記死活監視用パケットは、VRRPパケットである、
ようにしてもよい。
また、前記物理的に冗長化されているネットワーク機器は、ルータである、
ようにしてもよい。
上記目的を達成するために、本発明の第3の観点に係るデータ通信方法は、
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、受信した死活監視用パケットを、前記各スイッチのデータ転送処理を一元的に制御するコントローラへ転送する死活監視用パケット転送ステップと、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するARP(Address Resolution Protocol)テーブルを更新させるためのGARP(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記GARPパケットを転送するGARPパケット転送ステップと、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報と、前記物理的に冗長化されているネットワーク機器が接続されているスイッチのうちで、いずれのスイッチに接続されているネットワーク機器が現用系ネットワーク機器かを識別可能な現用系情報と、を対応つけた接続情報を格納する記憶ステップと、
前記GARPパケット転送ステップにより転送された前記GARPパケットに含まれる、前記現用系ネットワーク機器の物理MAC(Media Access Control)アドレスを取得する取得ステップと、
前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる死活監視用パケット転送制御ステップと、
前記取得ステップにより取得された前記現用系ネットワーク機器の物理MACアドレスと前記接続情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先MACアドレスと一致する前記現用系ネットワーク機器の物理MACアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する経路算出ステップと、
記経路算出ステップにより算出された経路上の各スイッチを制御して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想IP(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるパケット転送制御ステップと、
を備える、
ことを特徴とする。
上記目的を達成するために、本発明の第4の観点に係るデータ通信方法は、
オープンフローネットワークを構成する各スイッチが、
物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローの設定を、自スイッチから前記死活監視用パケットの送信先のネットワーク機器までの経路上の各スイッチに対して実行するよう要求するフロー設定要求を、コントローラへ送信するフロー設定要求送信ステップと、
前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するARP(Address Resolution Protocol)テーブルを更新させるためのGARP(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記GARPパケットを転送するGARPパケット転送ステップと、
前記コントローラが、
前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報を格納する記憶ステップと、
前記GARPパケット転送ステップにより転送された前記GARPパケットに含まれる、前記現用系ネットワーク機器の物理MAC(Media Access Control)アドレスを取得する取得ステップと、
前記フロー設定要求を受信すると、前記記憶ステップで格納された前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、前記フロー設定要求を送信したスイッチから、特定したネットワーク機器までの経路を算出する第1経路算出ステップと、
記第1経路算出ステップで算出された経路上の各スイッチに対して、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信させるためのフローをそれぞれ設定する死活監視用パケット転送制御ステップと、
前記取得ステップで取得された前記現用系ネットワーク機器の物理MACアドレスと前記ネットワーク機器スイッチ対応情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先MACアドレスと一致する前記現用系ネットワーク機器の物理MACアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する第2経路算出ステップと、
記第2経路算出ステップで算出された経路上の各スイッチに対して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想IP(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるためのフローをそれぞれ設定するパケット転送制御ステップと、
前記第1経路算出ステップで算出された経路上の各スイッチが、
前記第1経路算出ステップでそれぞれ設定されたフローに基づいて、前記死活監視用パケットを順次転送することで、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信する死活監視用パケット送信ステップと、
前記第2経路算出ステップで算出された経路上の各スイッチが、
前記パケット転送制御ステップでそれぞれ設定されたフローに基づいて、前記パケットデータを順次転送することで、前記現用系ネットワーク機器へ、前記パケットデータを送信するパケット送信ステップと、
を備える、
ことを特徴とする。
本発明によれば、冗長化構成を維持した状態で、冗長化されたネットワーク機器をオープンフローネットワークに接続することが可能となる。
実施形態1における、オープンフローネットワークシステムの構成を示すブロック図である。 実施形態1における、VRRPパケットのフォーマットの例を示す図である。 実施形態1における、各スイッチの構成を示すブロック図である。 実施形態1における、フローテーブルの例を示す図である。 実施形態1における、コントローラの構成を示すブロック図である。 実施形態1における、設定時間テーブルの例を示す図である。 実施形態1における、接続情報テーブルの例を示す図である。 実施形態1における、アドレステーブルの例を示すブロック図である。 実施形態1における、トポロジ情報テーブルの例を示す図である。 実施形態1における、VRRPパケット転送処理のフローチャートを示す図である。 実施形態1における、図1に示すオープンフローネットワークシステムを例にした、平常時のシステム全体の処理のフローを説明するための図である。 実施形態1における、図1に示すオープンフローネットワークシステムを例にした、障害発生時のシステム全体の処理のフローを説明するための図である。 実施形態2における、コントローラの構成を示すブロック図である。 実施形態2における、接続情報テーブルの例を示す図である。 実施形態2における、図1に示すオープンフローネットワークシステムを例にした、平常時のシステム全体の処理のフローを説明するための図である。 実施形態2における、図1に示すオープンフローネットワークシステムを例にした、障害発生時のシステム全体の処理のフローを説明するための図である。
(実施形態1)
添付図面を参照しながら本実施形態について説明する。
図1を参照して、本実施形態におけるオープンフローネットワークシステム1の構成を説明する。ネットワークシステム1は、図1に示すように、複数のオープンフロースイッチ(以下、スイッチという)SW1乃至SWnからなるスイッチ群2と、オープンフローコントローラ(以下、コントローラという)Cと、から構成される。なお、nは2以上の自然数であり、スイッチSW1乃至SWnを区別せずに総称する場合はスイッチSWということとする。
オープンフローネットワークシステム1のスイッチSW1とSW2には、それぞれ、ルータR1とルータR2が接続されており、ルータR1とR2は、VRRP(Virtual Router Redundancy Protocol)機能を備え、冗長化されている。すなわち、現用系のルータに障害が発生しても、待機系のルータで処理を引継ぎ、ルータとしての機能が停止し、通信が遮断されないように構成されている。また、スイッチSWnには、レイヤ3ノードN1が接続されている。本実施形態においては、ルータR1とR2とから構成されるVRRPグループがオープンフローネットワークシステム1に接続されている構成を例に説明するが、複数のVRRPグループがオープンフローネットワーク1に接続されている構成であってもよい。また、VRRPグループを構成するルータは3以上でもよいし、VRRPグループを構成する機器は、ルータではなく、VRRP機能を備えるロードバランサなどであってもよい。
同じVRRPグループを形成するルータは、図2に例示するVRRPパケットを同じVRRPグループを形成する他のルータへ送信する。すなわち、本実施形態においては、ルータR1は、VRRPパケットをルータR2宛てに送信し、ルータR2は、VRRPパケットをルータR1宛に送信する。ただし、ルータ間で現用系ルータが決定されると、現用系ルータのみがVRRPパケットを待機系ルータ宛に送信する。同じVRRPグループを形成するルータのうち、いずれのルータが現用系になるかは、詳しくは後述するVRRPパケットに含まれる優先度に基づいて決定される。現用系ルータが決定されると、上述したように、現用系ルータのみがVRRPパケットを待機系ルータ宛てに送信し、待機系ルータは、現用系ルータから送信されるVRRPパケットを一定時間内に受信できなかった場合は、現用系ルータに障害が発生したと判定し、障害が発生した現用系ルータの処理を引き継いで、現用系ルータとしてVRRPパケットを送信する。
図2は、VRRPパケットのフォーマットの例を示す図である。VRRPパケットのフォーマットは、図2に示すように、「バージョン」フィールドには、VRRPバージョンが格納され、「タイプ」フィールドには、VRRPパケットがアドバタイズメント(アナウンスメント)である場合は”1”が格納される。「VRID」フィールドには、VRID値が格納され、同じVRRPグループを形成する各ルータ、本実施形態においては、ルータR1とR2から送信されるVRRPパケットの「VRID」フィールドには、同じVRID値が格納される。「プライオリティ」フィールドには、VRRPパケットの送信元ルータの優先度が格納され、この優先度の値が高いVRRPパケットを送信するルータが現用系ルータとなる。
「カウントIP(Internet Protocol)アドレス」フィールドには、VRRPパケットで広告するIPアドレスの数を格納し、「認証タイプ」フィールドには、認証タイプを特定するための値が格納される。例えば、認証を行わない場合は、”0”が、テキストパスワードによる認証の場合は、”1”が、格納される。「アドバタイズメントインターバル」フィールドには、VRRPパケットをアドバタイズメントパケットとして送信する間隔を特定する値が格納される。VRRPパケットを受信した他のルータは、「アドバタイズメントインターバル」フィールドに格納されている値から、VRRPパケットの送信間隔を取得し、例えば、現用系ルータからのVRRPパケットが「アドバタイズメントインターバル」フィールドに規定されている送信間隔に基づいて、次式により定められる時間S内に受信されなかった場合には、待機系ルータは、現用系ルータに障害が発生したと判定し、待機系ルータが現用系ルータとして、障害が発生した現用系ルータの処理を引継ぐ。
(式1)
時間S=(アドバタイズメントインターバル)x3+(256−優先度値)/256
「IPアドレス」フィールドには、仮想IPアドレスとして使用可能なIPアドレスを格納する。この仮想IPアドレスは、同じVRRPグループを形成するルータR1とR2がネットワークで共有するIPアドレスである。
また、現用系ルータは、ARP(Address Resolution Protocol)テーブルを更新させるためのGratuitous ARPパケット(以下、GARPパケットという)を送信する。GARPパケットの「送信元IPアドレス」フィールドには、同じVRRPグループを形成するルータR1とR2がネットワークで共有する仮想IPアドレスが格納され、「送信元ハードウェアアドレス」フィールドには、GARPパケットを送信した現用系ルータの物理MACアドレスが格納される。GARPパケットを受信した装置は、自身が保持するARPテーブルを参照し、GARPパケットに含まれるIPアドレス(仮想IPアドレス)に該当するエントリが存在する場合には、そのエントリのMACアドレスをGARPパケットの「送信元ハードウェアアドレス」フィールドに格納されているMACアドレスで更新する。一方、GARPパケットに含まれるIPアドレス(仮想IPアドレス)に該当するエントリがARPテーブルに存在しない場合には、そのGARPパケットの送信元ルータの仮想IPアドレスと物理MACアドレスとを対応付けたエントリがARPテーブルに追加される。
例えば、ルータR1から送信されたGARPパケットをレイヤ3ノードN1が受信し、レイヤ3ノードN1が保持するARPテーブルにそのGARPパケットに含まれるIPアドレス(仮想IPアドレス)に該当するエントリが存在する場合には、そのエントリのMACアドレスをGARPパケットに含まれるルータR1の物理MACアドレスで更新する。一方、レイヤ3ノードN1が保持するARPテーブルにそのGARPパケットに含まれるIPアドレス(仮想IPアドレス)に該当するエントリが存在しない場合には、GARPパケットに含まれるルータR1の仮想IPアドレスと物理MACアドレスとを対応付けたエントリがARPテーブルに追加される。
スイッチSWは、図3に示すように、制御部S1と、記憶部S2とから構成される。
制御部S1は、CPU(Central Processing Unit)を備え、記憶部S2に格納されている動作プログラムを実行することで、VRRPパケット処理部S1Aと、GARPパケット処理部S1Bと、フロー設定部S1Cと、判定部S1Dと、フロー処理部S1Eとしての機能を実現する。
VRRPパケット処理部S1Aは、自スイッチに接続されているルータからVRRPパケットを受信すると、受信したVRRPパケットをコントローラCへ転送する。VRRPパケット処理部1Aは、VRRPパケットを転送する際に、自身のスイッチ番号SWNと、受信したVRRPパケットの送信元のルータが接続されている物理ポートの物理ポート番号PNと、をそれぞれ特定するための情報を付加する。ここで、スイッチ番号SWNは、各スイッチSWを一意に識別可能な番号である。
例えば、スイッチSW1のスイッチ番号SWNが”1”であり、ルータR1が接続されているスイッチSW1の物理ポートの物理ポート番号PNが”10”の場合には、スイッチSW1がルータR1からVRRPパケットを受信すると、スイッチSW1のVRRPパケット処理部S1Aは、スイッチ番号”1”と物理ポート番号”10”を特定するための情報を受信したVRRPパケットに付加して、コントローラCへ転送する。
また、VRRPパケット処理部S1Aは、コントローラCからVRRPパケットの送信指示を受信すると、その指示に従って、送信指示と共に送信されてきたVRRPパケットを自スイッチSWに接続されている待機系ルータへ送信する。例えば、VRRPパケットのコントローラCによる送信先がスイッチSW2であり、コントローラCの送信指示が、ルータR2への送信指示である場合には、スイッチSW2のVRRPパケット処理部S1Aは、コントローラCの指示に従って、受信したVRRPパケットをルータR2へ送信する。
GARPパケット処理部S1Bは、自スイッチに接続されている現用系ルータから送信されたGARPパケットを受信すると、受信したGARPパケットをコントローラCへ転送する。例えば、現用系ルータがルータR1であり、スイッチSW1がルータR1からのGARPパケットを受信した場合には、スイッチSW1のGARPパケット処理部S1Bは、受信したGARPパケットをコントローラCへ転送する。
また、GARPパケット処理部S1Bは、コントローラCから転送されたGARPパケットを受信すると、コントローラCの送信指示に従って、受信したGARPパケットを送信する。例えば、GARPパケットのコントローラCによる転送先がスイッチSWnであり、コントローラCの送信指示が、レイヤ3ノードN1への送信である場合には、スイッチSWnのGARP処理部S1Bは、受信したGARPパケットをレイヤ3ノードN1へ送信する。
フロー設定部S1Cは、コントローラCから取得したフローをテーブル記憶部S2Aが格納するフローテーブルT1に設定する。
判定部S1Dは、自スイッチSWに接続するノードから送信されたパケットを受信すると、フローテーブルT1の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。
フロー処理部S1Eは、判定部S1Dにより、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在すると判定された場合には、そのルールに対応するアクション情報により特定されるアクションを実行する。一方、フロー処理部S1Eは、判定部S1Dにより、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないと判定された場合には、コントローラCへフロー設定要求を送信する。フロー設定要求には、パケットのヘッダ情報と、自スイッチのスイッチ番号SWNとパケットの送信元のノードが接続されている物理ポートの物理ポート番号PNとを特定するための情報が含まれる。
例えば、レイヤ3ノードN1からVRRPグループを形成するルータR1とルータR2が共有する仮想IPアドレス宛のパケットのヘッダ情報と一致するルールが、スイッチSWnが保持するフローテーブルT1に存在しない場合には、スイッチSWnのフロー処理部S1Eは、パケットのヘッダ情報と、自スイッチのスイッチ番号nとレイヤ3ノードN1が接続されている物理ポートの物理ポート番号30とを特定するための情報とを含むフロー設定要求をコントローラCへ送信する。フロー設定要求を受信したコントローラCは、フロー設定要求に基づいて、スイッチSWnから現用系ルータに至る経路を算出し、算出された経路上に設置されている各スイッチSWにおけるフローを生成し、経路上に設置されている各スイッチSWに対して生成したフローをそれぞれ設定する。そして、算出された経路上に設置されている各スイッチSWは設定されたフローに従って、受信したパケットを処理することで、レイヤ3ノードN1からVRRPグループを形成するルータR1とルータR2が共有する仮想IPアドレス宛のパケットは、現用系ルータへ届けられる。
図4は、各スイッチSWが保持するフローテーブルT1の例を示す図である。フローテーブルT1は、図4に示すように、ルールとアクション情報とが対応付けられている。本実施形態においては、ルールには、送信元MACアドレスと、宛先IPアドレスと、宛先MACアドレスと、を含む組み合わせが規定される。ルールと対応付けられているアクション情報には、例えば、受信したパケットの送信先が規定される。各スイッチSWは、このようなフローテーブルT1を保持することで、受信したパケットのヘッダ情報と一致するルールが存在する場合には、そのルールに対応するアクション情報により特定されるアクションを実行することが可能となる。
例えば、レイヤ3ノードN1からVRRPグループを形成するルータR1とルータR2が共有する仮想IPアドレス宛のパケットのヘッダ情報と一致するルールが、スイッチSWnが保持するフローテーブルT1に存在し、そのルールに対応するアクション情報により特定されるアクションがスイッチSW5へ受信したパケットの送信である場合には、スイッチSWnのフロー処理部S1Eは、受信したパケットをスイッチSW5へ送信する。
記憶部S2は、ROM(Read Only Memory)、RAM(Random Access Memory)などから構成され、テーブル記憶部S2Aとして機能すると共に、制御部S1が備えるCPU(Central Processing Unit)のワーキングエリア、CPUが実行する動作プログラムを格納するプログラムエリア、各種データを格納するデータエリア、などとして機能する。
テーブル記憶部S2Aは、フローテーブルT1を格納する。このフローテーブルT1は、上述したように、フロー設定部S1Cにより設定される。より具体的には、コントローラCからフローを受信すると、フロー設定部S1Cは、受信したフローをフローテーブルT1に設定する。この際、フローに含まれるルールと一致するルールを含むフローがフローテーブルT1に存在する場合には、そのフローを受信したフローで上書きし、一致するルールを含むフローがフローテーブルT1に存在しない場合には、そのフローをフローテーブルT1に追加する。
コントローラCは、図5に示すように、制御部C1と記憶部C2とから構成され、オープンフロー技術により、オープンフローネットワーク1内の各スイッチSWを制御し、一元的に経路制御を行う。オープンフロー技術とは、コントローラCが、ルーティングポリシーに従って、マルチレイヤ及びフロー単位の経路情報(フロー)を各スイッチSWに設定することで、コントローラCが、一元的に経路制御やノード制御を行う技術のことである。
制御部C1は、CPUを備え、記憶部C2に格納されている動作プログラムを実行することで、送信元判定部C1Aと、タイマC1Bと、判定部C1Cと、VRRPパケット処理部C1Dと、GARPパケット処理部C1Eと、経路算出部C1Fと、フロー設定部C1Gと、としての機能を実現すると共に、各機能部の制御処理、後述するVRRPパケット転送処理などの処理を実行する。
また、制御部C1は、送信元判定部C1Aにより受信したVRRPパケットが現用系ルータから送信されたVRRPパケットであると判定された場合には、そのVRRPパケットに付加されている付加情報(スイッチ番号SWNと物理ポート番号PN)に基づいて、そのVRRPパケットの送信元のルータに対応する設定時間Siを後述するテーブル記憶部C2Aに格納されている設定時間テーブルT2から取得し、取得した設定時間SiをタイマC1Bに設定する。そして、タイマC1Bがタイムアウトするまでに現用系ルータから次のVRRPパケットを受信できなかった場合には、テーブル記憶部C2Aに格納されている接続情報テーブルT3の「現用系」欄のフラグを切り替える。例えば、ルータR1が現用系、ルータR2が待機系であり、設定時間Si内にルータR1からのVRRPパケットを受信できなかった場合には、接続情報テーブルT3の「現用系」欄のフラグを、ルータR1(図7においては、マスタルータ)からルータR2(図7においては、スレーブルータ)へ切り替える。
図6は、設定時間テーブルT2の例を示す図である。設定時間テーブルT2は、図6に示すように、スイッチ番号SWNと設定時間Siとが対応付けられている。各設定時間Siとして、上述した式1により算出した時間が設定される。これにより、制御部C1は、受信したVRRPパケットに付加されている付加情報に含まれるスイッチ番号SWNと一致するスイッチ番号SWNに対応する設定時間Siを設定時間テーブルT2から取得することが可能となる。そして、取得した設定時間SiをタイマC1Bに設定することで、コントローラCは、設定時間Si内に現用系ルータから次のVRRPパケットを受信できなかった場合に、現用系ルータに異常が発生したと判定することが可能となる。さらに、設定時間Siとして、上述した式1により算出した時間を設定していることから、同じVRRPグループを形成する待機系ルータが現用系ルータに異常が発生したと判定するタイミングと同じタイミングで、コントローラCは、現用系ルータに異常が発生したと判定することが可能となり、新たに現用系ルータとなったルータから送信されるVRRPパケットを適切に待機系ルータへ転送することが可能となる。
図5に戻り、送信元判定部C1Aは、コントローラCがVRRPパケットを受信すると、受信したVRRPパケットが現用系ルータから送信されたVRRPパケットであるか否かを判定する。具体的には、送信元判定部C1Aは、後述するテーブル記憶部C2Aに格納されている接続情報テーブルT3の「スイッチ番号」欄と「ポート番号」欄を検索し、受信したVRRPパケットに付加されている、そのVRRPパケットをコントローラCへ転送したスイッチSWのスイッチ番号SWNと、そのVRRPパケットの送信元ルータが接続されている物理ポートの物理ポート番号PNと、が一致するルータを特定する。そして、送信元判定部C1Aは、特定したルータの「現用系」欄にフラグが存在するか否かで、受信したVRRPパケットが現用系ルータから送信されたVRRPパケットであるか否かを判定する。
図7は、テーブル記憶部C2Aに格納されている接続情報テーブルT3の例を示す図である。接続情報テーブルT3は、図7に示すように、VRRPグループを形成するマスタルータとスレーブルータと、そのVRRPグループを形成するルータと通信を行うノードとが対応付けられており、さらに、それぞれが接続するスイッチSWのスイッチ番号SWNとポート番号PNが対応付けられている。また、VRRPグループを形成する各ルータには、「現用系」欄が設けられており、「現用系」欄にフラグを立てる(1を格納する)ことで、どのルータが現用系ルータであるか否かを判定することが可能となっている。初期状態では、マスタルータの「現用系」欄に1が格納されており、設定時間内Si内に現用系ルータからの次のVRRPパケットを受信できなかった場合には、制御部C1は、スレーブルータの「現用系」欄に1を格納し、マスタルータの「現用系」欄の1を削除する。
なお、マスタルータとして、VRRPグループを形成するルータのうちで、最も優先度の設定値の値が高いルータが、選択される。本実施形態においては、ルータR1がマスタルータであり、ルータR2がスレーブルータであると仮定する。
図5に戻り、タイマC1Bは、現用系ルータに異常が発生したか否かを判定するためのタイマであり、上述したように、送信元判定部C1Aにより受信したVRRPパケットが現用系ルータから送信されたVRRPパケットであると判定された場合に、制御部C1により設定時間テーブルT2から取得された設定時間Siが設定され、スタートされる。
判定部C1Cは、VRRPパケットを受信したか否かを判定すると共に、タイマC1Bがタイムアウトしたか否かを判定する。現用系ルータからの次のVRRPパケットが受信される前にタイマC1Bがタイムアウトしたと判定部C1Cにより判定された場合には、制御部C1は、上述したように、現用系ルータに異常が発生したと判定し、接続情報テーブルT3の「現用系」欄のフラグを切り替える。
VRRPパケット処理部C1Dは、送信元判定部C1Aにより現用系ルータから送信されたVRRPパケットであると判定されたVRRPパケットを、同じVRRPグループを形成する待機系ルータへ転送する。具体的には、VRRPパケット処理部C1Dは、テーブル記憶部C2Aに格納されている接続情報テーブルT3を参照して、同じVRRPグループの待機系ルータが接続されているスイッチSWのスイッチ番号SWNを取得する。そして、VRRPパケット処理部C1Dは、取得したスイッチ番号SWNのスイッチSWに対して、受信したVRRPパケットと共にそのスイッチSWに接続されている待機系ルータへVRRPパケットを送信するように指示するコマンドを送信する。
また、VRRPパケット処理部C1Dは、送信元判定部C1Aにより現用系ルータから送信されたVRRPパケットではないと判定されたVRRPパケットを破棄する。
GARPパケット処理部C1Eは、受信したGARPパケットに含まれる送信元MACアドレスを取得する。そして、GARPパケット処理部C1Eは、接続情報テーブルT3から、GARPパケットの送信元の現用系ルータが接続されているスイッチSWのスイッチ番号SWNを取得し、取得した送信元MACアドレスとスイッチ番号SWNとを対応付けて、アドレステーブルT4に格納する。この際、例えば、同じVRRPグループを形成する他のルータのMACアドレスが格納されている場合には、上書きを行う。
また、GARPパケット処理部C1Eは、受信したGARPパケットを、そのGARPパケットの送信元ルータと通信を行う各ノードへ転送する。具体的には、接続情報テーブルT3を参照して、転送対象のノードが接続されているスイッチSWを特定し、特定したスイッチSWへGARPパケットと共にノードへGARPパケットを送信するように指示するコマンドを送信する。
図8は、テーブル記憶部C2Aが格納するアドレステーブルT4の例を示す図である。アドレステーブルT4は、図8に示すように、VRRPグループID(例えば、VRID)と、現用系ルータが接続されているスイッチSWのスイッチ番号SWNと、現用系ルータの物理MACアドレスと、が対応付けられている。例えば、ルータR1が現用系ルータで、ルータR1の物理MACアドレスがA1である場合には、GARPパケット処理部C1Eは、現用系ルータであるルータR1からのGARPパケットに含まれるルータR1の物理MACアドレスA1を取得し、接続情報テーブルT3からルータR1が接続されているスイッチSW1のスイッチ番号1を取得する。そして、GARPパケット処理部C1Eは、取得したルータR1の物理MACアドレスA1とルータR1が接続されているスイッチSW1のスイッチ番号1とを対応付けて、アドレステーブルT4のルータR1が属するVRRPグループIDに対応するフィールドに格納する。
図5に戻り、経路算出部C1Fは、例えば、スイッチSWnからフロー設定要求を受信すると、アドレステーブルT4の「MACアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先MACアドレスと一致するMACアドレスに対応するスイッチ番号SWNを特定する。そして、経路算出部C1Fは、テーブル記憶部C2Aに格納されているトポロジ情報テーブルT5を参照して、フロー設定要求を送信したスイッチSWnから、特定したスイッチ番号SWNのスイッチSWに接続されているパケットの送信先である現用系ルータまでの経路を算出する。
図9は、テーブル記憶部C2Aが格納するトポロジ情報テーブルT5の例を示す図である。トポロジ情報テーブルT5には、図9に示すように、各スイッチSWとそのスイッチSWのポート接続先情報とが対応付けられて格納されている。ポート接続先情報には、ポートごとの、接続先の種別(例えば、スイッチ、ノードなど)を特定するための情報と、接続先を特定するための識別情報(例えば、接続先がスイッチSWであればそのスイッチSWのスイッチ番号SWN)などが含まれる。
図5に戻り、フロー設定部C1Gは、経路算出部C1Fにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上の各スイッチSWに対するフローをそれぞれ生成し、生成したフローを経路上の各スイッチSWへ送信する。そして、コントローラCから送信されたフローを受信した各スイッチSWのフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。
例えば、フロー設定要求に含まれるパケットのヘッダ情報の送信先MACアドレスが、ルータR1のMACアドレスであり、フロー設定要求の送信元のスイッチSWがスイッチSWnの場合には、経路算出部C1Fにより、スイッチSWnからスイッチSW1に接続されているルータR1への経路が算出される。例えば、経路算出部C1Fにより算出された経路が、スイッチSWn>スイッチSW5>スイッチSW3>スイッチSW1>ルータR1である場合には、フロー設定部C1Gは、スイッチSWnと、スイッチSW5と、スイッチSW3と、スイッチSW1と、に対するフローをそれぞれ生成する。例えば、スイッチSW5に対するフローに含まれるアクション情報には、スイッチSW3へのパケット転送指示が格納され、ルールには、ルータR1のMACアドレスと仮想IPアドレスと、パケットの送信元ノードのMACアドレスと、を含む組み合わせが格納される。また、例えば、スイッチSW1に対するフローに含まれるアクション情報には、ルータR1へのパケット転送指示が格納され、ルールには、スイッチSW5に対するフローのルールと同一のルールが格納される。これにより、同じノードからルータR1とルータR2が共有する仮想IPアドレス宛にパケットが送信された場合には、スイッチSWnがコントローラCへフロー設定要求を再度送信することなく、経路上のスイッチSWnと、スイッチSW5と、スイッチSW3と、スイッチSW1は、設定されたフローに従って、パケットを現用系であるルータR1へ届けることが可能となる。
記憶部C2は、ROM、RAMなどから構成され、テーブル記憶部C2Aとして機能すると共に、制御部C1が備えるCPU(Central Processing Unit)のワーキングエリア、CPUが実行する動作プログラムを格納するプログラムエリア、各種データを格納するデータエリア、などとして機能する。
テーブル記憶部C2Aは、上述したように、設定時間テーブルT2と、接続情報テーブルT3と、アドレステーブルT4と、トポロジ情報テーブルT5を格納する。
次に、図10を参照して、コントローラCが実行する本実施形態におけるVRRPパケット転送処理のフローについて説明する。このVRRPパケット転送処理は、オープンフローネットワークシステム1に接続されているVRRPグループごとに実行される。各VRRPグループにおけるVRRPパケット転送処理は同じ処理であることから、ルータR1とルータR2により形成されるVRRPグループを例にして、VRRPパケット転送処理について以下に説明する。
判定部C1Cは、VRRPパケットをコントローラCが受信したか否かを判定する(ステップS101)。VRRPパケットを受信していないと判定された場合には(ステップS101;NO)、VRRPパケットが受信されるまで、ステップS101の処理を繰り返す。
一方、VRRPパケットを受信したと判定された場合には(ステップS101;YES)、送信元判定部C1Aは、受信したVRRPパケットが現用系ルータ(本実施形態においては、ルータR1)からのVRRPパケットであるか否かを判定する(ステップS102)。受信したVRRPパケットが待機系ルータ(本実施形態においては、ルータR2)からのVRRPパケットであると判定された場合には(ステップS102;NO)、VRRPパケット処理部C1Dは、受信したVRRPパケットを破棄し(ステップS103)、処理はステップS101の処理に戻り、前述の処理を繰り返す。
一方、受信したVRRPパケットが現用系ルータ(本実施形態においては、ルータR1)からのVRRPパケットであると判定された場合には(ステップS102;YES)、制御部C1は、受信したVRRPパケットに付加されている付加情報(スイッチ番号SWNと物理ポート番号PN)に基づいて、そのVRRPパケットを送信した現用系ルータに対応する設定時間Siを設定時間テーブルT2から取得し、取得した設定時間SiをタイマC1Bに設定し、タイマC1Bをスタートさせる(ステップS104)。
そして、VRRPパケット処理部C1Dは、受信したVRRPパケットを同じVRRPグループを形成する待機系ルータ(本実施形態においては、ルータR2)へ転送する(ステップS105)。
そして、判定部C1Cは、再び、VRRPパケットをコントローラCが受信したか否かを判定する(ステップS106)。VRRPパケットを受信していないと判定された場合には(ステップS106;NO)、処理はステップS109の処理へ移行する。
一方、VRRPパケットを受信したと判定された場合には(ステップS106;YES)、送信元判定部C1Aは、受信したVRRPパケットが現用系ルータ(本実施形態においては、ルータR1)からのVRRPパケットであるか否かを判定する(ステップS107)。受信したVRRPパケットが現用系ルータ(本実施形態においては、ルータR1)からのVRRPパケットであると判定された場合には(ステップS107;YES)、処理はステップS104の処理へ戻り、前述の処理を繰り返す。
一方、受信したVRRPパケットが待機系ルータ(本実施形態においては、ルータR2)からのVRRPパケットであると判定された場合には(ステップS107;NO)、VRRPパケット処理部C1Dは、受信したVRRPパケットを破棄する(ステップS108)。
そして、判定部C1Cは、タイマC1Bがタイムアウトしたか否かを判定する(ステップS109)。タイマC1Bがタイムアウトしていないと判定された場合には(ステップS109;NO)、処理はステップS106の処理に戻り、前述の処理を繰り返す。
一方、タイマC1Bがタイムアウトしたと判定された場合には(ステップS109;YES)、制御部C1は、テーブル記憶部C2Aに格納されている接続情報テーブルT3の「現用系」欄のフラグを切り替える(ステップS110)。そして、処理は、ステップS101の処理に戻り、前述の処理を繰り返す。
次に、図6乃至図8と図11を参照して、図1に示すシステムを例して、平常時における、システム全体の処理の流れについて説明する。図11は、平常時における、図1に示すシステム全体の処理のフローを説明するための図である。なお、図中のスイッチSWkは、経路算出部C1Fにより算出された、スイッチSWnから現用系ルータに至る経路上のスイッチSWから、スイッチSWnとスイッチSW1(又は、スイッチSW2)を除いたスイッチSWを表す。
同じVRRPグループを形成するルータR1とルータR2は、現用系ルータを決定するために、VRRPパケットを他のルータ宛てに送信する。ルータR2が送信したVRRPパケットは、ルータR2が接続されているスイッチSW2により受信される。ルータR2からのVRRPパケットを受信すると、スイッチSW2のVRRPパケット処理部S1Aは、受信したVRRPパケットに自身のスイッチ番号2と、ルータR2が接続されている物理ポートの物理ポート番号20と、をそれぞれ特定するための情報を付加してコントローラCへ転送する。
本実施形態においては、コントローラCのテーブル記憶部C2Aが格納する接続情報テーブルT3の初期状態では、上述したように、マスタルータであるルータR1に対応する「現用系」欄にフラグが立てられている。すなわち、初期状態では、コントローラCは、マスタルータであるルータR1を現用系ルータとして認識している。そのため、ルータR2からのVRRPパケットをコントローラCが受信しても、コントローラCの送信元判定部C1Aは、受信したVRRPパケットは現用系ルータからのVRRPパケットではないと判定し、VRRPパケット処理部C1Dは、受信したVRRPパケットを破棄する。いずれのルータからのVRRPパケットであるかの判定は、上述したように、VRRPパケットに付加されている付加情報(スイッチ番号SWNと物理ポート番号PN)に基づいて、行われる。
一方、ルータR1が送信したVRRPパケットは、ルータR1が接続されているスイッチSW1により受信される。ルータR1からのVRRPパケットを受信すると、スイッチSW1のVRRPパケット処理部S1Aは、受信したVRRPパケットに自身のスイッチ番号1と、ルータR1が接続されている物理ポートの物理ポート番号10と、をそれぞれ特定するための情報を付加してコントローラCへ転送する。
コントローラCは、上述したように、初期状態ではルータR1を現用系ルータとして認識していることから、ルータR1からのVRRPパケットを受信すると、コントローラCの送信元判定部C1Aは、受信したVRRPパケットは現用系ルータからのVRRPパケットであると判定する。そして、コントローラCの制御部C1は、VRRPパケット設定時間テーブルT2から設定時間Siを取得してタイマC1Bに設定し、タイマC1Bをスタートさせる。そして、コントローラCのVRRPパケット処理部C1Dは、受信したVRRPパケットをルータR2に届けるために、スイッチSW2へ転送する。
スイッチSW2のVRRPパケット処理部S1Aは、VRRPパケットを受信すると、コントローラCからの指示に従って、受信したVRRPパケットをルータR2へ転送する。ルータR1からのVRRPパケットを受信したルータR2は、VRRPパケットに含まれる優先度に基づいて、ルータR1が現用系ルータであると判定し、その後、VRRPパケットの送信を中断する。
ルータR1は、ルータR2からのVRRPパケットが届かないことから、自機が現用系であると判定し、定期的にVRRPパケットを送信すると共に、ARPテーブルを更新させるためのGARPパケットを送信する。スイッチSW1のGARP処理部S1Bは、スイッチSW1がルータR1からのGARPパケットを受信すると、受信したGARPパケットをコントローラCへ転送する。
コントローラCのGARP処理部C1Eは、コントローラCがGARPパケットを受信すると、受信したGARPパケットから送信元MACアドレスA1を取得すると共に、接続情報テーブルT3から、GARPパケットの送信元のルータR1が接続されているスイッチSW1のスイッチ番号1を取得する。そして、コントローラCのGARP処理部C1Eは、取得した送信元MACアドレスA1とスイッチ番号1とを対応付けて、アドレステーブルT4に格納すると共に、受信したGARPパケットを、レイヤ3ノードN1へ転送させるために、スイッチSWnへ転送する。
スイッチSWnのGARPパケット処理部S1Bは、コントローラCから転送されたGARPパケットを受信すると、コントローラCの指示に従って、受信したGARPパケットをレイヤ3ノードN1へ転送する。
レイヤ3ノードN1は、GARPパケットを受信すると、保持しているARPテーブルの更新又は追加を行う。
レイヤ3ノードN1は、VRRPグループを形成するルータR1とルータR2が共有する仮想IPアドレス宛にパケットを送信する際に、ARPテーブルを参照して、その仮想IPアドレス宛のパケットを生成し、生成したパケットを送信する。
スイッチSWnの判定部S1Dは、レイヤ3ノードN1からのパケットを受信すると、フローテーブルT1の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。受信したパケットが、レイヤ3ノードN1から現用系のルータR1宛のいわゆるファーストパケットであると仮定すると、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないため、判定部S1Dは、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないと判定する。
そのため、スイッチSWnのフロー処理部S1Eは、コントローラCへフロー設定要求を送信する。
コントローラCの経路算出部C1Fは、コントローラCがスイッチSWnからのフロー設定要求を受信すると、アドレステーブルT4の「MACアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先MACアドレスA1と一致するMACアドレスに対応するスイッチ番号1を特定する。そして、経路算出部C1Fは、トポロジ情報テーブルT5を参照して、スイッチSWnから、特定したスイッチ番号1のスイッチSW1に接続されているパケットの送信先である現用系ルータR1までの経路(スイッチSWn>スイッチSWk>スイッチSW1>ルータR1)を算出する。
そして、コントローラCのフロー設定部C1Gは、経路算出部C1Fにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上のスイッチSWnとスイッチSWkとスイッチSW1に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチSWnとスイッチSWkとスイッチSW1へ送信する。
コントローラCから送信されたフローを受信した各スイッチSWのフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。
スイッチSWnとスイッチSWkとスイッチSW1は、設定したフローに従って、レイヤ3ノードN1からのパケットを順次転送し、現用系ルータR1へ届けられる。一度フローが設定されると、その後にレイヤ3ノードN1からルータ1とルータ2が共有する仮想IPアドレス宛に送信されたパケットは、設定されたフローに従って、スイッチSWnとスイッチSWkとスイッチSW1により転送処理され、現用系のルータR1へ届けられる。
次に、図6と図7と図12を参照して、図1に示すシステムを例して、障害発生時における、システム全体の処理の流れについて説明する。図12は、障害発生時における、図1に示すシステム全体の処理のフローを説明するための図である。なお、図中のスイッチSWkは、経路算出部C1Fにより算出された、スイッチSWnから現用系ルータに至る経路上のスイッチSWから、スイッチSWnとスイッチSW1(又は、スイッチSW2)を除いたスイッチSWを表す。
同じVRRPグループを形成するルータR1とルータR2は、現用系ルータを決定するために、VRRPパケットを他のルータ宛てに送信する。ルータR2が送信したVRRPパケットは、ルータR2が接続されているスイッチSW2により受信される。ルータR2からのVRRPパケットを受信すると、スイッチSW2のVRRPパケット処理部S1Aは、受信したVRRPパケットに自機のスイッチ番号2と、ルータR2が接続されている物理ポートの物理ポート番号20と、をそれぞれ特定するための情報を付加してコントローラCへ転送する。
本実施形態においては、コントローラCのテーブル記憶部C2Aが格納する接続情報テーブルT3の初期状態では、上述したように、マスタルータであるルータR1に対応する「現用系」欄にフラグが立てられている。すなわち、初期状態では、コントローラCは、マスタルータであるルータR1を現用系ルータとして認識している。そのため、ルータR2からのVRRPパケットをコントローラCが受信しても、コントローラCの送信元判定部C1Aは、受信したVRRPパケットは現用系ルータからのVRRPパケットではないと判定し、VRRPパケット処理部C1Dは、受信したVRRPパケットを破棄する。いずれのルータからのVRRPパケットであるかの判定は、上述したように、VRRPパケットに付加されている付加情報(スイッチ番号SWNと物理ポート番号PN)に基づいて、行われる。
一方、ルータR1が送信したVRRPパケットは、ルータR1が接続されているスイッチSW1により受信される。ルータR1からのVRRPパケットを受信すると、スイッチSW1のVRRPパケット処理部S1Aは、受信したVRRPパケットに自機のスイッチ番号1と、ルータR1が接続されている物理ポートの物理ポート番号10と、をそれぞれ特定するための情報を付加してコントローラCへ転送する。
コントローラCは、上述したように、初期状態ではルータR1を現用系ルータとして認識していることから、ルータR1からのVRRPパケットを受信すると、コントローラCの送信元判定部C1Aは、受信したVRRPパケットは現用系ルータからのVRRPパケットであると判定する。そして、コントローラCの制御部C1は、VRRPパケット設定時間テーブルT2から設定時間Siを取得してタイマC1Bに設定し、タイマC1Bをスタートさせる。そして、コントローラCのVRRPパケット処理部C1Dは、受信したVRRPパケットをルータR2に届けるために、スイッチSW2へ転送する。
スイッチSW2のVRRPパケット処理部S1Aは、VRRPパケットを受信すると、コントローラCからの指示に従って、受信したVRRPパケットをルータR2へ転送する。ルータR1からのVRRPパケットを受信したルータR2は、VRRPパケットに含まれる優先度に基づいて、ルータR1が現用系ルータであると判定し、その後、VRRPパケットの送信を中断する。
ここで、ルータR1に障害が発生すると、ルータR2は、現用系ルータR1からのVRRPパケットを設定時間内に受信できないことから、ルータR2は、現用系ルータR1に障害が発生したと判定し、ルータR1の処理を引き継いで、現用系ルータとしてVRRPパケットを定期的に送信する。
コントローラCの制御部C1は、タイマC1Bがタイムアウトするまでに現用系ルータR1からの次のVRRPパケットを受信できなかったために、接続情報テーブルT3の「現用系」欄のフラグを切り替える。すなわち、接続情報テーブルT3の「現用系」欄のフラグを、ルータR1からルータR2へ切り替える。
現用系ルータとなったルータR2が送信したVRRPパケットは、ルータR2が接続されているスイッチSW2により受信される。ルータR2からのVRRPパケットを受信すると、スイッチSW2のVRRPパケット処理部S1Aは、受信したVRRPパケットに自機のスイッチ番号2と、ルータR2が接続されている物理ポートの物理ポート番号20と、をそれぞれ特定するための情報を付加してコントローラCへ転送する。
コントローラCの送信元判定部C1Aは、受信したルータR2からのVRRPパケットは現用系ルータからのVRRPパケットであると判定する。そして、コントローラCの制御部C1は、設定時間テーブルT2から設定時間Siを取得してタイマC1Bに設定し、タイマC1Bをスタートさせる。そして、コントローラCのVRRPパケット処理部C1Dは、受信したVRRPパケットをルータR1に届けるために、スイッチSW1へ転送する。
スイッチSW1のVRRPパケット処理部S1Aは、VRRPパケットを受信すると、コントローラCからの指示に従って、受信したVRRPパケットをルータR1へ転送する。
ルータR1からのVRRPパケットが届かないことから、自機が現用系であると判定したルータR2は、ARPテーブルを更新させるためのGARPパケットを送信する。スイッチSW2のGARP処理部S1Bは、スイッチSW2がルータR2からのGARPパケットを受信すると、受信したGARPパケットをコントローラCへ転送する。
コントローラCのGARP処理部C1Eは、コントローラCがGARPパケットを受信すると、受信したGARPパケットから送信元MACアドレス(A2とする)を取得すると共に、接続情報テーブルT3から、GARPパケットの送信元のルータR2が接続されているスイッチSW2のスイッチ番号2を取得する。そして、コントローラCのGARP処理部C1Eは、取得した送信元MACアドレスA2とスイッチ番号2とを対応付けて、アドレステーブルT4に格納すると共に、受信したGARPパケットを、レイヤ3ノードN1へ転送させるために、スイッチSWnへ転送する。
スイッチSWnのGARPパケット処理部S1Bは、コントローラCから転送されたGARPパケットを受信すると、コントローラCの指示に従って、受信したGARPパケットをレイヤ3ノードN1へ転送する。
レイヤ3ノードN1は、GARPパケットを受信すると、保持しているARPテーブルの更新又は追加を行う。
レイヤ3ノードN1は、ルータ1とルータ2が共有する仮想IPアドレス宛にパケットを送信する際に、ARPテーブルを参照して、その仮想IPアドレス宛のパケットを生成し、生成したパケットを送信する。
スイッチSWnの判定部S1Dは、レイヤ3ノードN1からのパケットを受信すると、フローテーブルT1の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。受信したパケットが、レイヤ3ノードN1から現用系であるルータR2宛のいわゆるファーストパケットであると仮定すると、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないため、判定部S1Dは、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないと判定する。
そのため、スイッチSWnのフロー処理部S1Eは、コントローラCへフロー設定要求を送信する。
コントローラCの経路算出部C1Fは、コントローラCがスイッチSWnからのフロー設定要求を受信すると、アドレステーブルT4の「MACアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先MACアドレスA2と一致するMACアドレスに対応するスイッチ番号2を特定する。そして、経路算出部C1Fは、トポロジ情報テーブルT5を参照して、スイッチSWnから、特定したスイッチ番号2のスイッチSW2に接続されているパケットの送信先である現用系ルータR2までの経路(スイッチSWn>スイッチSWk>スイッチSW2>ルータR2)を算出する。
そして、コントローラCのフロー設定部C1Gは、経路算出部C1Fにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上のスイッチSWnとスイッチSWkとスイッチSW2に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチSWnとスイッチSWkとスイッチSW2へ送信する。
コントローラCから送信されたフローを受信した各スイッチSWのフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。
スイッチSWnとスイッチSWkとスイッチSW2は、設定したフローに従って、レイヤ3ノードN1からのパケットを順次転送し、現用系ルータR2へ届けられる。一度フローが設定されると、その後にレイヤ3ノードN1からルータ1とルータ2が共有する仮想IPアドレス宛に送信されたパケットは、設定されたフローに従って、スイッチSWnとスイッチSWkとスイッチSW2により転送処理され、新たに現用系となったルータR2へ届けられる。
本実施形態1によれば、VRRP機能を備えた機器が接続されているスイッチSWは、その機器からVRRPパケットを受信すると、受信したVRRPパケットにスイッチ番号SWNとその機器が接続されている物理ポートのポート番号PNを付加してコントローラCへ転送した。そして、転送されたVRRPパケットを受信すると、コントローラCの送信元判定部C1Aは、接続情報テーブルT3を参照して、そのVRRPパケットが現用系から送信されたVRRPパケットであるか否かを判定し、そのVRRPパケットが現用系から送信されたVRRPパケットでないと判定された場合には、VRRPパケット処理部C1Dは、そのVRRPパケットを破棄した。一方、そのVRRPパケットが現用系から送信されたVRRPパケットであると判定された場合には、そのVRRPパケットを、同じVRRPグループを形成する待機系の機器へ転送した。こうすることで、オープンフローネットワーク1に接続されているVRRPグループを形成する機器間で行われる死活監視を、コントローラCの制御下で実行させることが可能となる。
また、設定時間テーブルT2の設定時間Siとして、待機系の機器が現用系の機器に障害が発生したと判定するために用いる設定時間を設定した。そして、送信元判定部C1AによりVRRPパケットが現用系から送信されたVRRPパケットであると判定された場合には、制御部C1は、設定時間テーブルT2から取得した設定時間SiをタイマC1Bに設定し、タイマC1Bをスタートさせた。そして、タイマC1Bがタイムアウトするまでに、現用系からの次のVRRPパケットが受信できなかった場合には、制御部C1は、接続情報テーブルT3の「現用系」欄のフラグを切り替えた。こうすることで、コントローラCは、VRRPグループを形成するいずれの機器が現用系かを的確に把握することが可能となる。
また、現用系の機器が接続されているスイッチSWは、その機器からGARPパケットを受信すると、受信したGARPパケットをコントローラCへ転送した。そして、転送されたGARPパケットを受信すると、コントローラCのGARPパケット処理部C1Eは、受信したGARPパケットから送信元MACアドレスを取得すると共に、接続情報テーブルT3から、GARPパケットの送信元の現用系ルータが接続されているスイッチSWのスイッチ番号SWNを取得した。そして、取得した送信元MACアドレスとスイッチ番号SWNとを対応付けて、アドレステーブルT4に格納した。こうすることで、VRRPグループを形成する機器が共有する仮想IPアドレス宛に送信されたパケットを、現用系の機器へ届けられるようにフローを設定することが可能となる。
これにより、冗長化構成を維持した状態で、VRRPグループをオープンフローネットワークに接続することが可能となる。すなわち、VRRPグループを形成する機器間で行われる死活監視を、コントローラCの制御下で実行させることが可能となると共に、冗長化された経路を維持した状態で、オープンフローネットワークにVRRPグループを接続することが可能となる。
(実施形態2)
実施形態1では、VRRPパケットを受信したスイッチSWは、受信したVRRPパケットをコントローラCへ転送するように構成された。本実施形態では、VRRPパケットを受信したスイッチSWは、受信したVRRPパケットをコントローラCへ転送するかわりに、フロー設定要求をコントローラCへ送信する。
本実施形態におけるオープンフローネットワーク1の基本的な構成は、実施形態1の場合と同じである。但し、スイッチSWのVRRPパケット処理部S1Aと、判定部S1Dと、フロー処理部S1Eと、が果たす機能が実施形態1とでは若干異なる。また、コントローラCの制御部C1が、図13に示すように、送信元判定部C1Aと、タイマC1Bと、判定部C1Cと、VRRPパケット処理部C1Dと、を備えない点と、テーブル記憶部C2Aが、設定時間テーブルT2を備えない点が、実施形態1とでは異なる。また、コントローラCの経路算出部C1Fと、フロー設定部C1Gが果たす機能が実施形態1とでは若干異なる。
スイッチSWのVRRPパケット処理部S1Aは、判定部S1Dにより自スイッチに接続されているルータからのVRRPパケットに関するルールがフローテーブルT1に存在すると判定された場合には、フローテーブルT1を参照して、そのルールに対応するアクション情報により特定されるアクションに従って、自スイッチに接続されているルータからのVRRPパケットを転送する。その際、自スイッチのスイッチ番号SWNとVRRPパケットの送信元ルータが接続されている物理ポートのポート番号PNを特定するための情報を付加する。例えば、スイッチSW1が、ルータR1からのVRRPパケットを受信し、判定部S1Dにより、ルータR1からのVRRPパケットに関するルールが、フローテーブルT1に存在すると判定され、そのルールに対応するアクション情報により特定されるアクションが「スイッチSW2へ転送」である場合には、スイッチSW1のVRRPパケット処理部S1Aは、受信したVRRPパケットにスイッチ番号1とポート番号10を特定するための情報を付加して、スイッチSW2へ転送する。
一方、判定部S1Dにより、自スイッチに接続されているルータからのVRRPパケットに関するルールがフローテーブルT1に存在しないと判定された場合には、VRRPパケット処理部S1Aは、フロー設定要求をコントローラCへ送信する。フロー設定要求には、パケットの種別:VRRPパケットと、自スイッチのスイッチ番号SWNと、受信したVRRPパケットの送信元のルータが接続されている物理ポートの物理ポート番号PNと、が含まれる。
例えば、スイッチSW1のスイッチ番号SWNが”1”、ルータR1が接続されているスイッチSW1の物理ポートの物理ポート番号PNが”10”であり、スイッチSW1がルータR1からVRRPパケットを受信し、判定部S1Dにより、ルータR1からのVRRPパケットに関するルールがフローテーブルT1に存在しないと判定された場合には、スイッチSW1のVRRPパケット処理部S1Aは、パケットの種別:VRRPパケットと、スイッチ番号”1”と、物理ポート番号”10”と、を含むフロー設定要求をコントローラCへ送信する。
また、VRRPパケット処理部S1Aは、他のスイッチSWから転送されたVRRPパケットを受信すると、フローテーブルT1の「ルール」欄を検索して、VRRPパケットに付加されている、VRRPパケットの送信元ルータが接続されているスイッチSWのスイッチ番号SWNと物理ポートのポート番号PNとの組と、パケットの種別:VRRPパケットとに基づいて、ルールを特定する。そして、VRRPパケット処理部S1Aは、特定したルールに対応するアクション情報により特定されるアクションに従って、受信したVRRPパケットを転送する。
判定部S1Dは、自スイッチSWに接続するノードから送信されたパケットを受信すると、フローテーブルT1の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在するか否かを判定する。さらに、判定部S1Dは、自スイッチに接続されているルータからのVRRPパケットを受信すると、フローテーブルT1の「ルール」欄を検索して、自スイッチに接続されているルータからのVRRPパケットに関するルールがフローテーブルT1に存在するか否かを判定する。
フロー処理部S1Eは、自スイッチSWに接続するノードから送信されたパケットを受信し、判定部S1Dにより、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在すると判定された場合には、そのルールに対応するアクション情報により特定されるアクションを実行する。一方、フロー処理部S1Eは、判定部S1Dにより、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないと判定された場合には、コントローラCへフロー設定要求を送信する。フロー設定要求には、パケットの種別と、パケットのヘッダ情報と、自スイッチのスイッチ番号SWNとパケットの送信元のノードが接続されている物理ポートの物理ポート番号PNとを特定するための情報が含まれる。
コントローラCの制御部C1は、CPUを備え、記憶部C2に格納されている動作プログラムを実行することで、図13に示すように、GARPパケット処理部C1Eと、経路算出部C1Fと、フロー設定部C1Gと、としての機能を実現すると共に、各機能部の制御処理、フロー設定処理などの処理を実行する。
経路算出部C1Fは、例えば、スイッチSWnからフロー設定要求を受信し、フロー設定要求に含まれるパケットの種別が通常のパケットである場合には、アドレステーブルT4の「MACアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先MACアドレスと一致するMACアドレスに対応するスイッチ番号SWNを特定する。そして、経路算出部C1Fは、テーブル記憶部C2Aに格納されているトポロジ情報テーブルT5を参照して、フロー設定要求を送信したスイッチSWnから、特定したスイッチ番号SWNのスイッチSWに接続されているパケットの送信先である現用系ルータまでの経路を算出する。
また、例えば、スイッチSW1からのフロー設定要求を受信し、フロー設定要求に含まれるパケットの種別がVRRPパケットである場合には、経路算出部C1Fは、接続情報テーブルT3を参照して、フロー設定要求に含まれるスイッチ番号1とポート番号10とに基づいて、そのフロー設定要求を送信したスイッチSW1にVRRPパケットを送信したルータR1を特定する。そして、経路算出部C1Fは、特定したルータR1と同じVRRPグループを形成するルータR2が接続されているスイッチSW2を特定する。そして、経路算出部C1Fは、テーブル記憶部C2Aに格納されているトポロジ情報テーブルT5を参照して、フロー設定要求を送信したスイッチSW1から、特定したスイッチSW2に接続されているVRRPパケットの送信元のルータと同じVRRPグループを形成するルータR2までの経路を算出する。
図14は、テーブル記憶部C2Aに格納されている接続情報テーブルT3の例を示す図である。接続情報テーブルT3は、図14に示すように、VRRPグループを形成する各ルータと、そのVRRPグループを形成するルータと通信を行うノードとが対応付けられており、さらに、それぞれが接続するスイッチSWのスイッチ番号SWNとポート番号PNが対応付けられている。
図13に戻り、フロー設定部C1Gは、フロー設定要求に含まれるパケットの種別が通常のパケットである場合には、経路算出部C1Fにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上の各スイッチSWに対するフローをそれぞれ生成し、生成したフローを経路上の各スイッチSWへそれぞれ送信する。そして、コントローラCから送信されたフローを受信した各スイッチSWのフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。
また、フロー設定部C1Gは、フロー設定要求に含まれるパケットの種別がVRRPパケットである場合には、経路算出部C1Fにより算出された経路と、パケットの種別とに基づいて、経路上の各スイッチSWに対するフローをそれぞれ生成し、生成したフローを経路上の各スイッチSWへ送信する。そして、コントローラCから送信されたフローを受信した各スイッチSWのフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。フロー設定要求に含まれるパケットの種別がVRRPパケットである場合にフロー設定部C1Gにより生成されるフローに含まれるルールには、例えば、パケットの種別:VRRPパケットと、そのVRRPパケットの送信元ルータを識別する情報(例えば、送信元ルータが接続されるスイッチSWのスイッチ番号SWNと、送信元ルータが接続される物理ポートのポート番号PNとの組)と、が格納される。
例えば、フロー設定要求に含まれるパケットの種別が、VRRPパケットであり、フロー設定要求の送信元のスイッチSWがスイッチSW1の場合には、経路算出部C1Fにより、スイッチSW1からスウィッチSW2に接続されているルータR2への経路が算出される。この場合、経路算出部C1Fにより算出される経路は、スイッチSW1>スイッチSW2>ルータR2となる。フロー設定部C1Gは、スイッチSW1と、スイッチSW2と、に対するフローをそれぞれ生成する。例えば、スイッチSW1に対するフローに含まれるアクション情報には、スイッチSW2へのVRRPパケット転送指示が格納され、ルールには、パケットの種別:VRRPパケットと、スイッチSW1のスイッチ番号1とVRRPパケットの送信元ルータR1が接続されている物理ポートのポート番号10との組と、が格納される。また、例えば、スイッチSW2に対するフローに含まれるアクション情報には、ルータR2へのVRRPパケット転送指示が格納され、ルールには、スイッチSW1に対するフローのルールと同一のルールが格納される。これにより、ルータR1から次のVRRPパケットが送信された場合には、スイッチSW1は、コントローラCへフロー設定要求を送信することなく、フローテーブルT3に設定されたフローに従って、VRRPパケットをルータR2へ届けることが可能となる。
テーブル記憶部C2Aは、接続情報テーブルT3と、アドレステーブルT4と、トポロジ情報テーブルT5を格納する。
次に、図8と図14と図15を参照して、図1に示すシステムを例して、平常時における、システム全体の処理の流れについて説明する。図15は、平常時における、図1に示すシステム全体の処理のフローを説明するための図である。なお、図中のスイッチSWkは、経路算出部C1Fにより算出された、スイッチSWnから現用系ルータに至る経路上のスイッチSWから、スイッチSWnとスイッチSW1(又は、スイッチSW2)を除いたスイッチSWを表す。なお、ルータR1の優先度の値は、ルータR2の優先度の値より大きいと仮定する。
同じVRRPグループを形成するルータR1とルータR2は、現用系ルータを決定するために、VRRPパケットを他のルータ宛てに送信する。ルータR2が送信したVRRPパケットは、ルータR2が接続されているスイッチSW2により受信される。ルータR2からのVRRPパケットを受信すると、スイッチSW2の判定部S1Dは、フローテーブルT1の「ルール」欄を検索して、ルータR2からのVRRPパケットに関するルールがフローテーブルT1に存在するか否かを判定する。受信したVRRPパケットがルータR2が送信した最初のVRRPパケットである場合には、スイッチSW2の判定部S1Dにより、フローテーブルT1にルータR2からのVRRPパケットに関するルールは存在しないと判定され、スイッチSW2のVRRPパケット処理部S1Aは、フロー設定要求をコントローラCへ送信する。
スイッチSW2からのフロー設定要求を受信したコントローラCの経路算出部C1Fは、接続情報テーブルT3を参照して、フロー設定要求に含まれるスイッチ番号2とポート番号20とに基づいて、そのフロー設定要求を送信したスイッチSW2にVRRPパケットを送信したルータR2を特定する。そして、経路算出部C1Fは、特定したルータR2と同じVRRPグループを形成するルータR1が接続されているスイッチSW1特定する。そして、経路算出部C1Fは、テーブル記憶部C2Aに格納されているトポロジ情報テーブルT5を参照して、フロー設定要求を送信したスイッチSW2から、特定したスイッチSW1に接続されている、VRRPパケットの送信元のルータR1と同じVRRPグループを形成するルータR1までの経路(スイッチSW2>スイッチSW1>ルータR1)を算出する。
そして、コントローラCのフロー設定部C1Gは、経路算出部C1Fにより算出された経路(スイッチSW2>スイッチSW1>ルータR1)と、パケットの種別:VRRPパケットとに基づいて、経路上のスイッチSW1とスイッチSW2に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチSW1とスイッチSW2へそれぞれ送信する。
そして、コントローラCから送信されたフローを受信したスイッチSW1とスイッチSW2のフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。
これにより、ルータR2から送信されたVRRPパケットは、フローテーブルT1に設定されたフローに従って、スイッチSW2から順次転送され、VRRPパケットの送信元のルータR2と同じVRRPグループを形成するルータR1へ届けられる。ルータR2からのVRRPパケットを受信したルータR1は、VRRPパケットに含まれる優先度に基づいて、自機が現用系ルータであると判定し、VRRPパケットを定期的に送信すると共に、ARPテーブルを更新させるためのGARPパケットを送信する。
また、ルータR1が送信したVRRPパケットは、ルータR1が接続されているスイッチSW1により受信される。ルータR1からのVRRPパケットを受信すると、スイッチSW1の判定部S1Dは、フローテーブルT1の「ルール」欄を検索して、ルータR1からのVRRPパケットに関するルールがフローテーブルT1に存在するか否かを判定する。受信したVRRPパケットがルータR1が送信した最初のVRRPパケットである場合には、スイッチSW1の判定部S1Dにより、フローテーブルT1にルータR1からのVRRPパケットに関するルールは存在しないと判定され、スイッチSW1のVRRPパケット処理部S1Aは、フロー設定要求をコントローラCへ送信する。
スイッチSW1からのフロー設定要求を受信したコントローラCの経路算出部C1Fは、経路(スイッチSW1>スイッチSW2>ルータR2)を算出する。そして、コントローラCのフロー設定部C1Gは、経路算出部C1Fにより算出された経路(スイッチSW1>スイッチSW2>ルータR2)と、パケットの種別:VRRPパケットとに基づいて、経路上のスイッチSW1とスイッチSW2に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチSW1とスイッチSW2へそれぞれ送信する。
そして、コントローラCから送信されたフローを受信したスイッチSW1とスイッチSW2のフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。
これにより、ルータR1から送信されたVRRPパケットは、フローテーブルT1に設定されたフローに従って、スイッチSW1から順次転送され、VRRPパケットの送信元のルータR1と同じVRRPグループを形成するルータR2へ届けられる。ルータR1からのVRRPパケットを受信したルータR2は、VRRPパケットに含まれる優先度に基づいて、ルータR1が現用系ルータであると判定し、その後、VRRPパケットの送信を中断する。
スイッチSW1のGARP処理部S1Bは、スイッチSW1がルータR1からのGARPパケットを受信すると、受信したGARPパケットをコントローラCへ転送する。。
コントローラCのGARP処理部C1Eは、コントローラCがGARPパケットを受信すると、受信したGARPパケットから送信元MACアドレスA1を取得すると共に、接続情報テーブルT3から、GARPパケットの送信元のルータR1が接続されているスイッチSW1のスイッチ番号1を取得する。そして、コントローラCのGARP処理部C1Eは、取得した送信元MACアドレスA1とスイッチ番号1とを対応付けて、アドレステーブルT4に格納すると共に、受信したGARPパケットを、レイヤ3ノードN1へ転送させるために、スイッチSWnへ転送する。
スイッチSWnのGARPパケット処理部S1Bは、コントローラCから転送されたGARPパケットを受信すると、コントローラCの指示に従って、受信したGARPパケットをレイヤ3ノードN1へ転送する。
レイヤ3ノードN1は、GARPパケットを受信すると、保持しているARPテーブルの更新又は追加を行う。
レイヤ3ノードN1は、VRRPグループを形成するルータR1とルータR2が共有する仮想IPアドレス宛にパケットを送信する際に、ARPテーブルを参照して、その仮想IPアドレス宛のパケットを生成し、生成したパケットを送信する。
スイッチSWnの判定部S1Dは、レイヤ3ノードN1からのパケットを受信すると、フローテーブルT1の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。受信したパケットが、レイヤ3ノードN1から現用系のルータR1宛のいわゆるファーストパケットであると仮定すると、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないため、判定部S1Dは、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないと判定する。
そのため、スイッチSWnのフロー処理部S1Eは、コントローラCへフロー設定要求を送信する。
コントローラCの経路算出部C1Fは、コントローラCがスイッチSWnからのフロー設定要求を受信すると、アドレステーブルT4の「MACアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先MACアドレスA1と一致するMACアドレスに対応するスイッチ番号1を特定する。そして、経路算出部C1Fは、トポロジ情報テーブルT5を参照して、スイッチSWnから、特定したスイッチ番号1のスイッチSW1に接続されているパケットの送信先である現用系ルータR1までの経路(スイッチSWn>スイッチSWk>スイッチSW1>ルータR1)を算出する。
そして、コントローラCのフロー設定部C1Gは、経路算出部C1Fにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上のスイッチSWnとスイッチSWkとスイッチSW1に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチSWnとスイッチSWkとスイッチSW1へ送信する。
コントローラCから送信されたフローを受信した各スイッチSWのフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。
スイッチSWnとスイッチSWkとスイッチSW1は、設定したフローに従って、レイヤ3ノードN1からのパケットを順次転送し、現用系ルータR1へ届けられる。一度フローが設定されると、その後にレイヤ3ノードN1からルータ1とルータ2が共有する仮想IPアドレス宛に送信されたパケットは、設定されたフローに従って、スイッチSWnとスイッチSWkとスイッチSW1により転送処理され、現用系のルータR1へ届けられる。
次に、図8と図14と図16を参照して、図1に示すシステムを例して、障害発生時における、システム全体の処理の流れについて説明する。図16は、障害発生時における、図1に示すシステム全体の処理のフローを説明するための図である。なお、図中のスイッチSWkは、経路算出部C1Fにより算出された、スイッチSWnから現用系ルータに至る経路上のスイッチSWから、スイッチSWnとスイッチSW1(又は、スイッチSW2)を除いたスイッチSWを表す。なお、ルータR1の優先度の値は、ルータR2の優先度の値より大きいと仮定する。また、スイッチSW1とスイッチSW2のフローテーブルT1には、既に、VRRPパケットに関するフローが設定されているものとし、ルータR1が、現用系ルータとして機能しているものとする。
現用系ルータのルータR1は定期的にVRRPパケットを送信する。ルータR1からのVRRPパケットを受信すると、スイッチSW1の判定部S1Dは、フローテーブルT1の「ルール」欄を検索して、ルータR1からのVRRPパケットに関するルールがフローテーブルT1に存在するか否かを判定する。既に、フローテーブルT1には、ルータR1からのVRRPパケットに関するフローが設定されていることから、スイッチSW1の判定部S1Dは、ルータR1からのVRRPパケットに関するルールがフローテーブルT1に存在すると判定する。スイッチSW1は、フロー設定要求をコントローラCへ送信することなく、フローテーブルT1に設定されているフローに従って、VRRPパケットに自機のスイッチ番号1と、ルータR1が接続されている物理ポートの物理ポート番号10と、をそれぞれ特定するための情報を付加して転送し、VRRPパケットは、同じVRRPグループを形成する待機系ルータR2へ届けられる。
ここで、ルータR1に障害が発生すると、ルータR2は、現用系ルータR1からのVRRPパケットを設定時間内に受信できないことから、ルータR2は、現用系ルータR1に障害が発生したと判定し、ルータR1の処理を引き継いで、現用系ルータとしてVRRPパケットを定期的に送信する。
ルータR2からのVRRPパケットを受信すると、スイッチSW2の判定部S1Dは、フローテーブルT1の「ルール」欄を検索して、ルータR2からのVRRPパケットに関するルールがフローテーブルT1に存在するか否かを判定する。既に、フローテーブルT1には、ルータR2からのVRRPパケットに関するフローが設定されていることから、スイッチSW2の判定部S1Dは、ルータR2からのVRRPパケットに関するルールがフローテーブルT1に存在すると判定する。スイッチSW2は、フロー設定要求をコントローラCへ送信することなく、フローテーブルT1に設定されているフローに従って、VRRPパケットに自機のスイッチ番号2と、ルータR2が接続されている物理ポートの物理ポート番号20と、をそれぞれ特定するための情報を付加して転送し、VRRPパケットは、同じVRRPグループを形成する待機系ルータR1へ届けられる。
現用系となったルータR2は、ARPテーブルを更新させるためのGARPパケットを送信する。スイッチSW2のGARP処理部S1Bは、スイッチSW2がルータR2からのGARPパケットを受信すると、受信したGARPパケットをコントローラCへ転送する。
コントローラCのGARP処理部C1Eは、コントローラCがGARPパケットを受信すると、受信したGARPパケットから送信元MACアドレス(A2とする)を取得すると共に、接続情報テーブルT3から、GARPパケットの送信元のルータR2が接続されているスイッチSW2のスイッチ番号2を取得する。そして、コントローラCのGARP処理部C1Eは、取得した送信元MACアドレスA2とスイッチ番号2とを対応付けて、アドレステーブルT4に格納すると共に、受信したGARPパケットを、レイヤ3ノードN1へ転送させるために、スイッチSWnへ転送する。
スイッチSWnのGARPパケット処理部S1Bは、コントローラCから転送されたGARPパケットを受信すると、コントローラCの指示に従って、受信したGARPパケットをレイヤ3ノードN1へ転送する。
レイヤ3ノードN1は、GARPパケットを受信すると、保持しているARPテーブルの更新又は追加を行う。
レイヤ3ノードN1は、ルータ1とルータ2が共有する仮想IPアドレス宛にパケットを送信する際に、ARPテーブルを参照して、その仮想IPアドレス宛のパケットを生成し、生成したパケットを送信する。
スイッチSWnの判定部S1Dは、レイヤ3ノードN1からのパケットを受信すると、フローテーブルT1の「ルール」欄を検索して、受信したパケットのヘッダ情報と一致するルールが存在するか否かを判定する。受信したパケットが、レイヤ3ノードN1から現用系であるルータR2宛のいわゆるファーストパケットであると仮定すると、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないため、判定部S1Dは、受信したパケットのヘッダ情報と一致するルールがフローテーブルT1に存在しないと判定する。
そのため、スイッチSWnのフロー処理部S1Eは、コントローラCへフロー設定要求を送信する。
コントローラCの経路算出部C1Fは、コントローラCがスイッチSWnからのフロー設定要求を受信すると、アドレステーブルT4の「MACアドレス」欄を検索して、フロー設定要求に含まれるパケットのヘッダ情報の、送信先MACアドレスA2と一致するMACアドレスに対応するスイッチ番号2を特定する。そして、経路算出部C1Fは、トポロジ情報テーブルT5を参照して、スイッチSWnから、特定したスイッチ番号2のスイッチSW2に接続されているパケットの送信先である現用系ルータR2までの経路(スイッチSWn>スイッチSWk>スイッチSW2>ルータR2)を算出する。
そして、コントローラCのフロー設定部C1Gは、経路算出部C1Fにより算出された経路と、フロー設定要求に含まれるパケットのヘッダ情報とに基づいて、経路上のスイッチSWnとスイッチSWkとスイッチSW2に対するフローをそれぞれ生成し、生成したフローを経路上のスイッチSWnとスイッチSWkとスイッチSW2へ送信する。
コントローラCから送信されたフローを受信した各スイッチSWのフロー設定部S1Cは、テーブル記憶部S2Aが格納するフローテーブルT1に、受信したフローを設定する。
スイッチSWnとスイッチSWkとスイッチSW2は、設定したフローに従って、レイヤ3ノードN1からのパケットを順次転送し、現用系ルータR2へ届けられる。一度フローが設定されると、その後にレイヤ3ノードN1からルータ1とルータ2が共有する仮想IPアドレス宛に送信されたパケットは、設定されたフローに従って、スイッチSWnとスイッチSWkとスイッチSW2により転送処理され、新たに現用系となったルータR2へ届けられる。
本実施形態2によれば、VRRP機能を備える機器が送信したVRRPパケットを受信した、その機器が接続されているスイッチSWの判定部S1Dは、フローテーブルT1の「ルール」欄を検索して、自スイッチに接続されているルータからのVRRPパケットに関するルールがフローテーブルT1に存在するか否かを判定した。そして、その機器が接続されているスイッチSWのVRRPパケット処理部S1Aは、判定部S1Dによりその機器からのVRRPパケットに関するルールがフローテーブルT1に存在すると判定された場合には、フローテーブルT1を参照して、そのルールに対応するアクション情報により特定されるアクションに従って、受信したVRRPパケットを転送した。一方、判定部S1Dにより、その機器からのVRRPパケットに関するルールがフローテーブルT1に存在しないと判定された場合には、VRRPパケット処理部S1Aは、フロー設定要求をコントローラCへ送信した。そして、フロー設定要求を受信したコントローラCの経路算出部C1Fは、VRRPパケットの送信元の機器が接続されているスイッチSWから、その機器と同じVRRPグループを形成する機器までの経路を算出し、コントローラCのフロー設定部C1Gは、経路上に設置されている各スイッチSWに対するフローを生成し、生成したフローを各スイッチSWにそれぞれ設定した。こうすることで、スイッチSWは、接続されているVRRP機能を備える機器からのVRRPパケットを受信するたびに、コントローラCとの間でやりとりを行う必要がなくなることから、コントローラCの負荷を軽減させることが可能となる。また、VRRPパケットに関するフローが経路上の各スイッチSWに対して設定されることから、仮にコントローラCに障害が発生したとしても、現用系の機器に障害が発生しない限り、現用系の機器から定期的に送信されるVRRPパケットは、設定されたフローに従って、待機系の機器へ届けられるため、データ通信を継続することが可能となる。
なお、上記実施形態において、VRRP機能を備えるルータを例に、本発明について説明したが、本発明は、他の冗長化プロトコルを用いる機器に対しても適用することができる。
また、上記実施形態1において、コントローラCのVRRPパケット処理部C1Dは、待機系ルータからのVRRPパケットを破棄する構成としたが、破棄せずに現用系ルータへ届けるように構成してもよい。
また、上記実施形態において、実行されるプログラムは、フレキシブルディスク、CD−ROM(Compact Disc Read-Only Memory)、DVD(Digital Versatile Disc)、MO(Magneto-Optical Disc)等のコンピュータで読み取り可能な記録媒体に格納して配布し、そのプログラムをインストールすることにより、上述の処理を実行することとしてもよい。
また、プログラムをインターネット等の通信ネットワーク上の所定のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、取得等するようにしてもよい。
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。
1 オープンフローネットワークシステム
2 スイッチ群
SW1〜SWn スイッチ
S1 制御部
S1A VRRPパケット処理部
S1B GARPパケット処理部
S1C フロー設定部
S1D 判定部
S1E フロー処理部
S2 記憶部
S2A テーブル記憶部
C コントローラ
C1 制御部
C1A 送信元判定部
C1B タイマ
C1C 判定部
C1D VRRPパケット処理部
C1E GARPパケット処理部
C1F 経路算出部
C1G フロー設定部
C2 記憶部
C2A テーブル記憶部
T1 フローテーブル
T2 設定時間テーブル
T3 接続情報テーブル
T4 アドレステーブル
T5 トポロジ情報テーブル

Claims (12)

  1. オープンフローネットワークを構成する各スイッチが、
    物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、受信した死活監視用パケットを、前記各スイッチのデータ転送処理を一元的に制御するコントローラへ転送する死活監視用パケット転送手段と、
    前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するARP(Address Resolution Protocol)テーブルを更新させるためのGARP(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記GARPパケットを転送するGARPパケット転送手段と、
    を備え、
    前記コントローラが、
    前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報と、前記物理的に冗長化されているネットワーク機器が接続されているスイッチのうちで、いずれのスイッチに接続されているネットワーク機器が現用系ネットワーク機器かを識別可能な現用系情報と、を対応つけた接続情報を格納する記憶部と、
    前記GARPパケット転送手段により転送された前記GARPパケットに含まれる、前記現用系ネットワーク機器の物理MAC(Media Access Control)アドレスを取得する取得手段と、
    前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる死活監視用パケット転送制御手段と、
    前記取得手段により取得された前記現用系ネットワーク機器の物理MACアドレスと前記接続情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先MACアドレスと一致する前記現用系ネットワーク機器の物理MACアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する経路算出手段と、
    前記経路算出手段により算出された経路上の各スイッチを制御して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想IP(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるパケット転送制御手段と、
    を備える、
    ことを特徴とするオープンフローネットワークシステム。
  2. 記死活監視用パケット転送制御手段は、前記記憶部に格納されている前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、特定したネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記特定したネットワーク機器へ送信させる、
    ことを特徴とする請求項1に記載のオープンフローネットワークシステム。
  3. 前記コントローラが、
    前記記憶部に格納されている接続情報を参照して、前記死活監視用パケットを送信したネットワーク機器が現用系ネットワーク機器か否かを判定する送信元判定手段をさらに備え、
    死活監視用パケット転送制御手段は、前記送信元判定手段により前記死活監視用パケットを送信したネットワーク機器が現用系ネットワーク機器であると判定された場合のみ、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる、
    ことを特徴とする請求項1または2に記載のオープンフローネットワークシステム。
  4. 前記コントローラが、
    現用系ネットワーク機器からの死活監視用パケットが所定時間内に受信できなかった場合には、該現用系ネットワーク機器に障害が発生したと判定し、前記接続情報の対応する現用系情報を更新する更新手段をさらに備える、
    ことを特徴とする請求項1乃至3のいずれか一に記載のオープンフローネットワークシステム。
  5. 前記物理的に冗長化されているネットワーク機器は、VRRP(Virtual Router Redundancy Protocol)機能を備え、前記死活監視用パケットは、VRRPパケットである、
    ことを特徴とする請求項1乃至のいずれか一に記載のオープンフローネットワークシステム。
  6. 前記物理的に冗長化されているネットワーク機器は、ルータである、
    ことを特徴とする請求項1乃至のいずれか一に記載のオープンフローネットワークシステム。
  7. オープンフローネットワークを構成する各スイッチが、
    物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローの設定を、自スイッチから前記死活監視用パケットの送信先のネットワーク機器までの経路上の各スイッチに対して実行するよう要求するフロー設定要求を、コントローラへ送信するフロー設定要求送信手段と、
    前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するARP(Address Resolution Protocol)テーブルを更新させるためのGARP(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記GARPパケットを転送するGARPパケット転送手段と、
    を備え、
    前記コントローラが、
    前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報を格納する記憶部と、
    前記GARPパケット転送手段により転送された前記GARPパケットに含まれる、前記現用系ネットワーク機器の物理MAC(Media Access Control)アドレスを取得する取得手段と、
    前記フロー設定要求を受信すると、前記記憶部に格納されている前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、前記フロー設定要求を送信したスイッチから、特定したネットワーク機器までの経路を算出する第1経路算出手段と、
    前記第1経路算出手段により算出された経路上の各スイッチに対して、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信させるためのフローをそれぞれ設定する死活監視用パケット転送制御手段と、
    前記取得手段により取得された前記現用系ネットワーク機器の物理MACアドレスと前記ネットワーク機器スイッチ対応情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先MACアドレスと一致する前記現用系ネットワーク機器の物理MACアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する第2経路算出手段と、
    前記第2経路算出手段により算出された経路上の各スイッチに対して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想IP(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるためのフローをそれぞれ設定するパケット転送制御手段と、
    を備える、
    ことを特徴とするオープンフローネットワークシステム。
  8. 前記各スイッチが、
    前記ネットワーク機器から前記死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記受信した死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローが既に設定されているか否かを判定する判定手段をさらに備え、
    フロー設定要求送信手段は、前記判定手段により、前記物理的に冗長化されているネットワーク機器のうちで、前記受信した死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローがまだ設定されていないと判定された場合のみ、前記フロー設定要求をコントローラへ送信する、
    ことを特徴とする請求項に記載のオープンフローネットワークシステム。
  9. 前記物理的に冗長化されているネットワーク機器は、VRRP(Virtual Router Redundancy Protocol)機能を備え、前記死活監視用パケットは、VRRPパケットである、
    ことを特徴とする請求項7または8に記載のオープンフローネットワークシステム。
  10. 前記物理的に冗長化されているネットワーク機器は、ルータである、
    ことを特徴とする請求項乃至のいずれか一に記載のオープンフローネットワークシステム。
  11. オープンフローネットワークを構成する各スイッチが、
    物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、受信した死活監視用パケットを、前記各スイッチのデータ転送処理を一元的に制御するコントローラへ転送する死活監視用パケット転送ステップと、
    前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するARP(Address Resolution Protocol)テーブルを更新させるためのGARP(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記GARPパケットを転送するGARPパケット転送ステップと、
    前記コントローラが、
    前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報と、前記物理的に冗長化されているネットワーク機器が接続されているスイッチのうちで、いずれのスイッチに接続されているネットワーク機器が現用系ネットワーク機器かを識別可能な現用系情報と、を対応つけた接続情報を格納する記憶ステップと、
    前記GARPパケット転送ステップにより転送された前記GARPパケットに含まれる、前記現用系ネットワーク機器の物理MAC(Media Access Control)アドレスを取得する取得ステップと、
    前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器が接続されているスイッチを制御して、前記死活監視用パケットを、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ送信させる死活監視用パケット転送制御ステップと、
    前記取得ステップにより取得された前記現用系ネットワーク機器の物理MACアドレスと前記接続情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先MACアドレスと一致する前記現用系ネットワーク機器の物理MACアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する経路算出ステップと、
    記経路算出ステップにより算出された経路上の各スイッチを制御して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想IP(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるパケット転送制御ステップと、
    を備える、
    ことを特徴とするデータ通信方法。
  12. オープンフローネットワークを構成する各スイッチが、
    物理的に冗長化されているネットワーク機器から死活監視のためのパケットデータである死活監視用パケットを受信すると、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ受信した死活監視用パケットを送信するためのフローの設定を、自スイッチから前記死活監視用パケットの送信先のネットワーク機器までの経路上の各スイッチに対して実行するよう要求するフロー設定要求を、コントローラへ送信するフロー設定要求送信ステップと、
    前記物理的に冗長化されているネットワーク機器のうちの現用系ネットワーク機器が送信する、前記オープンフローネットワークに接続されているノードが保持するARP(Address Resolution Protocol)テーブルを更新させるためのGARP(Gratuitous Address Resolution Protocol)パケットを受信すると、前記コントローラへ受信した前記GARPパケットを転送するGARPパケット転送ステップと、
    前記コントローラが、
    前記物理的に冗長化されているネットワーク機器が接続されている各スイッチを一意に識別可能な情報を対応付けたネットワーク機器スイッチ対応情報を格納する記憶ステップと、
    前記GARPパケット転送ステップにより転送された前記GARPパケットに含まれる、前記現用系ネットワーク機器の物理MAC(Media Access Control)アドレスを取得する取得ステップと、
    前記フロー設定要求を受信すると、前記記憶ステップで格納された前記ネットワーク機器スイッチ対応情報に基づいて、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器を特定し、前記フロー設定要求を送信したスイッチから、特定したネットワーク機器までの経路を算出する第1経路算出ステップと、
    記第1経路算出ステップで算出された経路上の各スイッチに対して、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信させるためのフローをそれぞれ設定する死活監視用パケット転送制御ステップと、
    前記取得ステップで取得された前記現用系ネットワーク機器の物理MACアドレスと前記ネットワーク機器スイッチ対応情報とに基づいて、前記パケットデータのヘッダ情報に含まれる送信先MACアドレスと一致する前記現用系ネットワーク機器の物理MACアドレスに対応するスイッチを特定して、前記ノードが接続されているスイッチから前記特定したスイッチに接続されている前記現用系ネットワーク機器までの経路を算出する第2経路算出ステップと、
    記第2経路算出ステップで算出された経路上の各スイッチに対して、前記ノードから前記物理的に冗長化されているネットワーク機器が共有する仮想IP(Internet Protocol)アドレス宛に送信されたパケットデータを、前記現用系ネットワーク機器へ送信させるためのフローをそれぞれ設定するパケット転送制御ステップと、
    前記第1経路算出ステップで算出された経路上の各スイッチが、
    前記第1経路算出ステップでそれぞれ設定されたフローに基づいて、前記死活監視用パケットを順次転送することで、前記物理的に冗長化されているネットワーク機器のうちで、前記死活監視用パケットを送信したネットワーク機器以外のネットワーク機器へ、前記死活監視用パケットを送信する死活監視用パケット送信ステップと、
    前記第2経路算出ステップで算出された経路上の各スイッチが、
    前記パケット転送制御ステップでそれぞれ設定されたフローに基づいて、前記パケットデータを順次転送することで、前記現用系ネットワーク機器へ、前記パケットデータを送信するパケット送信ステップと、
    を備える、
    ことを特徴とするデータ通信方法。
JP2012080859A 2012-03-30 2012-03-30 オープンフローネットワークシステム、及び、データ通信方法 Expired - Fee Related JP5814849B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012080859A JP5814849B2 (ja) 2012-03-30 2012-03-30 オープンフローネットワークシステム、及び、データ通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012080859A JP5814849B2 (ja) 2012-03-30 2012-03-30 オープンフローネットワークシステム、及び、データ通信方法

Publications (2)

Publication Number Publication Date
JP2013211706A JP2013211706A (ja) 2013-10-10
JP5814849B2 true JP5814849B2 (ja) 2015-11-17

Family

ID=49529187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012080859A Expired - Fee Related JP5814849B2 (ja) 2012-03-30 2012-03-30 オープンフローネットワークシステム、及び、データ通信方法

Country Status (1)

Country Link
JP (1) JP5814849B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220311708A1 (en) * 2019-06-14 2022-09-29 Nippon Telegraph And Telephone Corporation Monitoring device, redundancy switching method, redundancy switching program, and network system

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101538667B1 (ko) * 2013-12-31 2015-07-22 주식회사 시큐아이 네트워크 시스템 및 네트워크 제어 방법
JP6287518B2 (ja) 2014-04-14 2018-03-07 富士通株式会社 オープンフロースイッチおよびオープンフローネットワークの障害復旧方法
JP6565914B2 (ja) 2014-07-16 2019-08-28 日本電気株式会社 通信制御装置、通信システム、通信制御方法および通信制御用プログラム
CN105959222A (zh) * 2016-04-25 2016-09-21 上海斐讯数据通信技术有限公司 一种报文转发方法、路由节点及软件定义网络

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4231773B2 (ja) * 2003-12-01 2009-03-04 株式会社日立コミュニケーションテクノロジー Vrの機密性を維持したvrrp技術
US7929420B2 (en) * 2006-02-02 2011-04-19 Avaya, Inc. Method and apparatus for learning VRRP backup routers
JP5035219B2 (ja) * 2008-11-06 2012-09-26 富士通株式会社 通信経路検出方法、通信経路検出プログラム、および通信経路検出装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220311708A1 (en) * 2019-06-14 2022-09-29 Nippon Telegraph And Telephone Corporation Monitoring device, redundancy switching method, redundancy switching program, and network system
US11876709B2 (en) * 2019-06-14 2024-01-16 Nippon Telegraph And Telephone Corporation Monitoring device, redundancy switching method, redundancy switching program, and network system

Also Published As

Publication number Publication date
JP2013211706A (ja) 2013-10-10

Similar Documents

Publication Publication Date Title
EP2109962B1 (en) Triple-tier anycast addressing
US7895345B2 (en) Distributed routing table architecture and design
US8989048B2 (en) Node system ID change in link state protocol network
EP2748992B1 (en) Method for managing network hardware address requests with a controller
US20130135989A1 (en) Data forwarding apparatus with redundancy
JP2018530969A (ja) ビットインデックス付きエクスプリシットレプリケーションを実現する方法及びビット転送ルータ
JP5861772B2 (ja) ネットワークアプライアンス冗長化システム、制御装置、ネットワークアプライアンス冗長化方法及びプログラム
US20080225699A1 (en) Router and method of supporting nonstop packet forwarding on system redundant network
JP5814849B2 (ja) オープンフローネットワークシステム、及び、データ通信方法
US20170214609A1 (en) Forwarding method and forwarding device
KR101464790B1 (ko) 링크 상태 광고(lsa)에 기반한 신장 트리를 계산하는 방법, 브릿지 및 컴퓨터 네트워크
JP2014533001A (ja) 転送装置の制御装置、転送装置の制御方法、通信システムおよびプログラム
US10404544B2 (en) Network topology determining method and apparatus, and centralized network status information storage device
JP6064989B2 (ja) 制御装置、通信システム、ノード制御方法及びプログラム
JP2006157716A (ja) ネットワークノード装置およびその経路情報更新方法
JP2015514374A (ja) 情報を受信するための方法、情報を送信するための方法及びそれらの装置
US10735252B2 (en) Outside router fault detection
JP5319626B2 (ja) ノード、パケット転送方法および通信ネットワーク
JPWO2014126094A1 (ja) 通信システム、通信方法、制御装置、制御装置の制御方法及びプログラム
JP6217190B2 (ja) パケット中継装置、パケット中継システム、パケット中継方法
JP2012191534A (ja) レイヤ3スイッチの切替方法
US8732335B2 (en) Device communications over unnumbered interfaces
JP4369882B2 (ja) ルーティング方法、および、ネットワークシステム
JP2017220812A (ja) 制御装置、通信システム、通信方法及びプログラム
JP2012169951A (ja) ネットワーク接続装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140826

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150918

R150 Certificate of patent or registration of utility model

Ref document number: 5814849

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees