(57)【要約】【課題】冗長化されたネットワークでの通信を効率化する。【解決手段】制御装置で決定されたパケットの処理ルールに基づいて動作する第１および第２の転送装置を用いて冗長化されたネットワーク中で、第２の転送装置として動作する転送装置は、通信部と通信制御部を備える。通信部は、制御装置から第１の転送装置が受信した処理ルールと、第１の転送装置と制御装置との間の通信セッションの維持に使用される制御情報とを、第１の転送装置から取得する。通信制御部は、第１の転送装置から所定の期間以上、死活監視用の所定のパケットを受信しない場合、制御情報を用いて、通信セッションを介した制御装置との通信を開始する。【選択図】図２
2017130852.tif 000002
【特許請求の範囲】
【請求項１】
制御装置で決定されたパケットの処理ルールに基づいて動作する第１および第２の転送装置を用いて冗長化されたネットワーク中で、前記第２の転送装置として動作する転送装置であって、
前記制御装置から前記第１の転送装置が受信した処理ルールと、前記第１の転送装置と前記制御装置との間の通信セッションの維持に使用される制御情報とを、前記第１の転送装置から取得する通信部と、
前記第１の転送装置から所定の期間以上、死活監視用の所定のパケットを受信しない場合、前記制御情報を用いて、前記通信セッションを介した前記制御装置との通信を開始する通信制御部と
を備えることを特徴とする転送装置。
【請求項２】
前記第１の転送装置から所定の期間以上、前記死活監視用の所定のパケットを受信していないことを検出してから、前記通信制御部が前記通信セッションを介した前記制御装置との通信を開始するまでの期間である第１の期間は、前記制御装置が前記第１の転送装置と通信が可能であるかを判定するために送信するパケットに対する返信パケットを前記制御装置で待ち合わせる期間である第２の期間よりも短い
ことを特徴とする請求項１に記載の転送装置。
【請求項３】
前記第２の転送装置に接続された回線での通信障害を検出する検出部
をさらに備え、
前記通信制御部は、前記第２の転送装置が前記制御装置との間で前記通信セッションを維持している間、
前記検出部が前記回線での障害を検出していない場合、前記第１の転送装置に、前記第２の通信装置が正常に動作していることを通知する通知パケットを送信し、
前記回線での障害が検出されると、前記第１の転送装置への前記通知パケットの送信を中断する
ことを特徴とする請求項１または２に記載の転送装置。
【請求項４】
前記回線での障害が検出された後に、前記制御装置から前記第２の転送装置を介した通信が可能であるかの判定に使用される判定パケットを受信すると、前記通信部は、前記判定パケットに対する応答パケットを前記制御装置に送信する
ことを特徴とする請求項３に記載の転送装置。
【請求項５】
制御装置で決定されたパケットの処理ルールに基づいて動作する第１および第２の転送装置を用いて冗長化されたネットワーク中で、前記第２の転送装置として動作する転送装置が、
前記制御装置から前記第１の転送装置が受信した処理ルールと、前記第１の転送装置と前記制御装置との間の通信セッションの維持に使用される制御情報とを、前記第１の転送装置から取得し、
前記第１の転送装置から所定の期間以上、死活監視用の所定のパケットを受信しない場合、前記制御情報を用いて、前記通信セッションを介した前記制御装置との通信を開始する
ことを特徴とする転送方法。
【請求項６】
ネットワーク中のパケットの転送処理を制御する制御装置と、
前記制御装置から受信した処理ルールを用いて受信パケットを処理する第１の転送装置と、
前記第１の転送装置のバックアップとして動作可能な第２の転送装置
を備え、
前記第２の転送装置は、
前記処理ルールと、前記第１の転送装置と前記制御装置との間の通信セッションの維持に使用される制御情報とを、前記第１の転送装置から取得し、
前記第１の転送装置から所定の期間以上、死活監視用の所定のパケットを受信しない場合、前記制御情報を用いて、前記通信セッションを介した前記制御装置との通信を開始する
ことを特徴とする転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置間でのパケットの転送処理に関する。
【背景技術】
【０００２】
近年、ＳＤＮ(Software Defined Networking)に対応したシステムの研究や開発が進められており、様々なＳＤＮコントローラ、ＳＤＮスイッチ、ＳＤＮルータなどが提供されている。また、コントローラとスイッチまたはルータとの間の通信にＯｐｅｎＦｌｏｗプロトコルが使用されることがある。
【０００３】
一方、インターネット上でのルータの冗長化をサポートするプロトコルとして、ＶＲＲＰ(Virtual Router Redundancy Protocol)等のプロトコルも知られている。ＶＲＲＰでは、仮想ＩＰアドレスを用いることで、動作中のルータでの障害発生時での通信を可能にしている。
【０００４】
図１は、ＶＲＲＰを用いたネットワークでの通信の例を説明する図である。図１に示すネットワークには、端末５（５ａ、５ｂ）、Ｌ２スイッチ１５、ルータ１０（１０ａ〜１０ｃ）が含まれている。ルータ１０ａとルータ１０ｂはＶＲＲＰグループに含まれているとする。
【０００５】
ＶＲＲＰグループに含まれる各ルータ１０は、優先度と各装置に届くパケットの宛先に設定されるアドレスの情報を保持する。図１では、ルータ１０ａはテーブルＴ１、ルータ１０ｂはテーブルＴ２に示す情報を有するとする。ルータ１０ａの優先度は２００であり、ルータ１０ｂの優先度は１００である。ここで、優先度の値が大きい方のルータ１０がアクティブルータとして動作するので、図１の例では、ルータ１０ａがアクティブルータ、ルータ１０ｂがバックアップルータとして動作する。このため、アクティブルータであるルータ１０ａを介した通信が可能な場合は、ＶＲＲＰグループでの通信に使用される仮想ＩＰアドレス宛のパケットは、ルータ１０ａで処理される。従って、テーブルＴ１にはルータ１０ａの処理対象のアドレスとして、実ＩＰアドレス＝１９２．１６８．１．１０、実ＭＡＣアドレス＝ＡＡ−ＢＢ−ＣＣ−ＤＤ−ＥＥ−０１の他に、ＶＲＲＰグループで用いられる仮想的なアドレスも含まれる。図１の例では、ＶＲＲＰグループにおいて、仮想ＩＰアドレス＝１９２．１６８．１．１と仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１が使用されているとする。一方、図１に示す時点では、ルータ１０ｂは、実ＩＰアドレス＝１９２．１６８．１．１１、実ＭＡＣアドレス＝ＡＡ−ＢＢ−ＣＣ−ＤＤ−ＥＥ−０２を宛先としたパケットを処理する。さらに、アクティブルータとして動作しているルータ１０ａは、ルータ１０ａが正常に動作している間はルータ１０ｂに向けて定期的に制御パケットを送信する（矢印Ａ１）。このため、ルータ１０ｂは、ルータ１０ａでの障害を検出することができる。
【０００６】
テーブルＴ３は端末５ａが保持する情報の例であり、テーブルＴ４は端末５ｂが保持する情報の例である。図１の例では、端末５ａに割り当てられたＩＰアドレスは１９２．１６８．１０．１であり、端末５ｂに割り当てられたＩＰアドレスは１９２．１６８．１０．２である。端末５ａと端末５ｂのいずれにおいても、デフォルトゲートウェイのＩＰアドレスは、ＶＲＲＰグループで使用される仮想ＩＰアドレス（１９２．１６８．１．１）に設定されている。
【０００７】
図１の状態において、端末５ａは、デフォルトゲートウェイ宛のＡＲＰ（Address Resolution Protocol）を行うことにより、ＶＲＲＰグループで使用される仮想ＭＡＣアドレスをルータ１０ａから取得する。そこで、端末５ａが他のサブネット中の装置を宛先としたパケットを送信する場合、仮想ＭＡＣアドレス（００−００−５Ｅ−００−０１−０１）を宛先ＭＡＣアドレスに設定する。このため、端末５ａから他のサブネット中の装置宛に送信されたパケットは、ルータ１０ａから宛先に向けて転送される（矢印Ａ２）。端末５ｂから他のサブネット中の装置へのパケットの送信も同様に行われる（矢印Ａ３）。
【０００８】
ルータ１０ａでの障害が発生した場合、ルータ１０ｂは、ＶＲＲＰグループで使用される仮想的なアドレスが宛先に設定されたパケットを処理する。このため、端末５ａや端末５ｂは、デフォルトゲートウェイの仮想的ＩＰアドレスや仮想ＭＡＣアドレスを宛先に設定したパケットを送信しても、ルータ１０ｂによって、ルータ１０ａでの障害の発生前と同様に処理される。
【０００９】
関連する技術として、冗長化されたネットワーク機器を接続可能なオープンフローネットワークシステムが提案されている（例えば、特許文献１など）。このシステムでは、スイッチは、ルータから受信したＶＲＲＰパケットと、ＶＲＲＰグループの現用系ルータから受信したＧＡＲＰパケットを、コントローラへ転送し、コントローラは、システム中のスイッチを制御する。メインルータ、バックアップルータ、仮想ルータを含み、メインルータとバックアップルータの間で経路情報を共有化するデータ中継装置も提案されている（例えば、特許文献２など）。バックアップルータは、メインルータで障害が発生すると、仮想ルータを起動させて他のルータとの間で経路情報の交換を行わせ、仮想ルータで取得された経路情報を用いて経路情報を更新する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１３−２１１７０６号公報
【特許文献２】特開２００４−２８２１７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
コントローラによってパケットの処理が決定されるネットワークに、ＶＲＲＰなどを用いて冗長化された機器が接続される場合、冗長化されたいずれの機器も、コントローラからの設定に従ってパケットを処理する。そこで、コントローラは、動作中の機器とバックアップ用の機器の両方に対して、制御情報を送信することになるため、コントローラへの負荷が大きい上に処理効率が悪い。バックアップ用の機器への制御情報の送信が機器の切り替えが発生する前から行われる場合、コントローラは、動作中の機器とバックアップ用の機器の両方との間で通信路を確保するので通信路の使用効率が悪い。一方、切り替え後にバックアップ用の機器に制御装置から制御情報が送信される場合は、切り替え後にパケットの処理が開始されるまで時間がかかるため、処理効率が悪い。関連する技術として挙げたいずれの技術でも、同様の問題が発生する。また、以上の説明では、冗長化の例としてＶＲＲＰが用いられる場合の例を示したが、ＶＲＲＰ以外の冗長化手法が用いられた場合にも同様の問題が発生する。
【００１２】
本発明は、１つの側面として、冗長化されたネットワークでの通信を効率化することを目的とする。
【課題を解決するための手段】
【００１３】
ある１つの態様にかかる転送装置は、制御装置で決定されたパケットの処理ルールに基づいて動作する第１および第２の転送装置を用いて冗長化されたネットワーク中で、前記第２の転送装置として動作する。転送装置は、通信部と通信制御部を備える。通信部は、前記制御装置から前記第１の転送装置が受信した処理ルールと、前記第１の転送装置と前記制御装置との間の通信セッションの維持に使用される制御情報とを、前記第１の転送装置から取得する。通信制御部は、前記第１の転送装置から所定の期間以上、死活監視用の所定のパケットを受信しない場合、前記制御情報を用いて、前記通信セッションを介した前記制御装置との通信を開始する。
【発明の効果】
【００１４】
冗長化されたネットワークでの通信が効率化される。
【図面の簡単な説明】
【００１５】
【図１】ＶＲＲＰを用いたネットワークでの通信の例を説明する図である。
【図２】実施形態にかかる通信方法の例を説明する図である。
【図３】転送装置の構成の例を説明する図である。
【図４】転送装置のハードウェア構成の例を説明する図である。
【図５】制御装置と転送装置の間でのセッションの確立の際に行われる処理の例を説明するシーケンス図である。
【図６】制御装置と転送装置の間で送受信されるメッセージ中の情報要素の例を説明する図である。
【図７】バックアップ側の転送装置に通知される制御情報の例を説明する図である。
【図８】マスタ側の転送装置で行われる処理の例を説明するフローチャートである。
【図９】制御装置と転送装置の間で送受信されるメッセージ中の情報要素の例を説明する図である。
【図１０】フローテーブルの例を説明する図である。
【図１１】グループテーブルの例を説明する図である。
【図１２】マスタ側の転送装置で行われる処理の例を説明するフローチャートである。
【図１３】バックアップ側の転送装置で行われる処理の例を説明するフローチャートである。
【図１４】制御装置と転送装置の間の死活確認の例を説明する図である。
【図１５】マスタ側転送装置が回線の障害を検出したときの制御装置との間の通信処理の例を説明する図である。
【図１６】マスタ側転送装置が回線の障害を検出したときの切り替え処理の例を説明するシーケンス図である。
【図１７】ＶＲＲＰ情報テーブルの例を説明する図である。
【図１８】ポート情報の例を説明する図である。
【図１９】マスタ側の転送装置で行われる処理の例を説明するフローチャートである。
【図２０】バックアップ側の転送装置で行われる処理の例を説明するフローチャートである。
【図２１】マスタ側転送装置で障害が発生したときの切り替え処理の例を説明するシーケンス図である。
【図２２】マスタ側転送装置で障害が発生したときの制御装置との間の通信処理の例を説明する図である。
【図２３】ポート情報の送信処理の例を説明する図である。
【図２４】実施形態にかかる転送方法が適用されるシステムの例を説明する図である。
【図２５】各装置が保持する情報の例を説明する図である。
【図２６】マスタ側転送装置で回線の障害が検出された場合の例を説明する図である。
【図２７】スイッチが保持する情報の例を説明する図である。
【図２８】ポート情報テーブルの例を説明する図である。
【図２９】切り替え処理が完了したときの状態の例を説明する図である。
【図３０】マスタ側転送装置で障害が発生した場合の例を説明する図である。
【図３１】切り替え処理が完了したときの状態の例を説明する図である。
【発明を実施するための形態】
【００１６】
図２は、実施形態にかかる通信方法の例を説明する図である。図２のケースＣ１に示すシステムでは、冗長化されていないルータ１０（１０ａ〜１０ｃ）、Ｌ２スイッチ１５、制御装置２０、転送装置３０（３０ａ、３０ｂ）が含まれる。転送装置３０ａと転送装置３０ｂは、１つの冗長化グループに含まれている。例えば、転送装置３０ａと転送装置３０ｂは、Ｌ２スイッチ１５ｘを介してルータ１０ａに接続されており、Ｌ２スイッチ１５ｘによって動作中の装置にパケットが転送される。
【００１７】
以下の説明では、転送装置３０ａは動作中であり、転送装置３０ｂは転送装置３０ａに障害が発生したときのバックアップ用の装置として動作している。以下の説明や図面では、理解しやすくするために、動作中の転送装置３０を「マスタ側」の転送装置３０と記載することがある。一方、マスタ側の転送装置３０のバックアップとなる転送装置３０は、「バックアップ側」の転送装置３０と記載することがある。図２の例では、一例として、転送装置３０ａと転送装置３０ｂがＶＲＲＰによって冗長化されている場合を説明するが、転送装置３０ａと転送装置３０ｂは任意の方法で冗長化され得る。また、紙面の関係上、一部のＬ２スイッチ１５を省略することがあるが、ＶＲＲＰグループ内の装置は、適宜、Ｌ２スイッチ１５を介して自装置が含まれるＶＲＲＰグループに含まれていない装置と接続されている。
【００１８】
制御装置２０は、ネットワーク中のルータ１０や転送装置３０で送受信されるパケットの各装置での処理を決定し、決定した処理の内容を各装置に通知することにより、ネットワーク中の転送処理を制御する。ネットワークにおいてＯｐｅｎＦｌｏｗプロトコルが使用される場合、制御装置２０は、ＯｐｅｎＦｌｏｗコントローラとして実現され、ルータ１０や転送装置３０は、ＯｐｅｎＦｌｏｗスイッチとして実現される。
【００１９】
ここで、制御装置２０は、転送装置３０ａと転送装置３０ｂのうちの１台との間に通信セッションを確立するが、もう１台の転送装置３０とは通信セッションを確立しない。転送装置３０ａと転送装置３０ｂのうちの一方のみが制御装置２０との間で接続を確立している様子を、図２では、制御装置２０から伸びた直線を、転送装置３０ａと転送装置３０ｂとを結ぶ太い円弧に接続させることで表している。太い円弧で結ばれた転送装置３０ａと転送装置３０ｂのうち、円弧中の実線で示すようにマスタ側の転送装置３０ａは、制御装置２０との間で通信セッションを確立する。円弧中の破線は、バックアップ側の転送装置３０ｂは制御装置２０との間の通信セッションを確立していないことを示す。一方、転送装置３０ａと転送装置３０ｂの間では制御情報を同期するために通信セッションを確立する。さらに、転送装置３０ａは、ＶＲＲＰグループで使用する仮想アドレスを用いて、適宜、ルータ１０ａ〜１０ｃの各々と通信する。
【００２０】
図２のケースＣ２は、制御情報が送受信される通信セッションと通信経路の例を示す。ケースＣ１に円弧を用いて説明した接続の切り替えは、Ｌ２スイッチ１５ｙによって行われている。転送装置３０ａは、ルータ１０ａ〜１０ｃから受信したパケットの処理方法を記憶していない場合、その受信パケットの処理の内容を要求する要求パケットを、矢印Ａ１１で示すセッションを介して、制御装置２０に送信する。以下、制御装置２０から通知されるパケットの処理方法のことを「処理ルール」と記載することがある。制御装置２０は、要求メッセージを用いた問い合わせのあったパケットに対する転送装置３０ａでの処理を、パケットの宛先の情報やネットワークのトポロジ情報などを用いて決定し、転送装置３０ａに通知する。転送装置３０ａは、処理ルールに従ってパケットを処理するとともに、処理ルールを記憶する。
【００２１】
さらに、転送装置３０ａは、矢印Ａ１２に示す通信セッションを介して、処理ルールを転送装置３０ｂに通知する。転送装置３０ｂは、転送装置３０ａから通知された処理ルールを記憶する。さらに、転送装置３０ｂは、転送装置３０ａが制御装置２０との間の通信に使用しているセッションの情報や、そのセッションを介して送受信された情報なども、矢印Ａ１２に示す通信セッションを介して、転送装置３０ａから取得する。
【００２２】
転送装置３０ａは、矢印Ａ１２のセッションを介して、定期的に転送装置３０ｂに対して、転送装置３０ａが正常に動作していることを通知するための制御パケットを送信する。一方、転送装置３０ａに障害が発生した場合や、転送装置３０ａとルータ１０ａ〜１０ｃとの間の回線に異常が発生した場合、転送装置３０ａは制御パケットの送信を中断する。このため、転送装置３０ｂは、所定期間以上の期間にわたって転送装置３０ａからパケットを受信しない場合、転送装置３０ａに障害が発生したと判定し、制御装置２０ａから受信している制御情報を使用して、制御装置２０との間のセッションを引き継ぐ。すなわち、転送装置３０ｂは、転送装置３０ａと制御装置２０との間の通信セッションのタイムアウト前に、ＶＲＲＰグループに割り当てられた仮想ＩＰアドレスや制御情報等を用いて、制御装置２０との間で通信を開始する。
【００２３】
さらに、転送装置３０ｂは、ＶＲＲＰグループで使用する仮想アドレスを用いたデータパケットの処理も開始する。このとき、転送装置３０ｂは、ルータ１０ａ〜１０ｃから受信したパケットを、予め転送装置３０ａから通知されている処理ルールを用いて処理する。さらに、記憶済みの処理ルールが適用されないパケットを受信した場合、転送装置３０ｂは、転送装置３０ａから引き継いだ通信セッションを用いて、制御装置２０と通信することにより新たな処理ルールを取得する。
【００２４】
このように、実施形態にかかる通信方法では、制御装置２０は、ＶＲＲＰグループ中の１つの転送装置３０と通信するだけで済む。このため、実施形態にかかる方法では、制御装置２０がＶＲＲＰグループ中の全ての転送装置３０と通信する場合に比べて、制御装置２０と転送装置３０の間の通信量を削減することができる。また、転送装置３０ｂは、制御装置２０の代わりにマスタ側の転送装置３０ａから処理ルールなどの情報を受信するので、制御装置２０と転送装置３０の間の通信量を削減しつつ、バックアップ側の転送装置３０ｂのホットスタンバイを実現できる。このため、転送装置３０ｂがコールドスタンバイしている場合のように、バックアップ側の転送装置３０ｂがマスタ側としての動作を開始する際に大量の制御情報が制御装置２０から送信されることも防ぐことができる。また、実施形態にかかる方法では、制御装置２０がＶＲＲＰグループ中の全ての転送装置３０と並行して通信する場合に比べて、制御装置２０と転送装置３０の通信のために一度に使用される経路数が少ないので、ネットワークも効率化される。従って、実施形態にかかる方法により、冗長化されたネットワークでの通信が効率化される。
【００２５】
＜装置構成＞
以下の説明でも、ＶＲＲＰによって冗長化が実現されている場合を例として説明するが、冗長化に使用される手法はＶＲＲＰ以外の任意の手法でもよい。
【００２６】
図３は、転送装置３０の構成の例を説明する図である。転送装置３０は、通信部３１、制御部４０、記憶部５０を備える。転送装置３０は、送信部３２と受信部３３を有する。制御部４０は、通信制御部５０、テーブル情報処理部４２、転送処理部４３、ハードウェア処理部４４、検出部４５を備える。通信制御部５０は、検出部５１、切り替え部５２、同期処理部５３、接続処理部５４を有する。記憶部６０は、制御情報テーブル６１、ポート情報テーブル６２、ＶＲＲＰ情報テーブル６３、フローテーブル６４、グループテーブル６５を保持する。
【００２７】
送信部３２は、制御装置２０、ルータ１０などの他の装置にパケットを送信する。受信部３３は、制御装置２０、ルータ１０などの他の装置からパケットを受信する。転送処理部４３は、マスタ側の転送装置３０として動作しているときに動作する。転送処理部４３は、ルータ１０から受信したパケットを、処理ルールに従って転送する。また、転送処理部４３は、処理ルールを制御装置２０に要求するための要求パケットの生成も行う。マスタ側の転送装置３０において、テーブル情報処理部４２は、制御装置２０から受信した制御情報を制御情報テーブル６１、処理ルールをフローテーブル６４、グループごとの設定情報をグループテーブル６５に記録する。バックアップ側の転送装置３０のテーブル情報処理部４２は、マスタ側の転送装置３０から受信した情報を制御情報テーブル６１、フローテーブル６４、グループテーブル６５に記録する。ポート情報テーブル６２には、転送装置３０が備える各ポートの状態などの情報が記録される。ＶＲＲＰ情報テーブル６３には、ＶＲＲＰによる冗長化で使用する仮想アドレス等の管理情報が記録されている。制御情報テーブル６１、ポート情報テーブル６２、ＶＲＲＰ情報テーブル６３、フローテーブル６４、グループテーブル６５の例は後述する。ハードウェア処理部４４は、適宜、スイッチ回路１０４の設定処理などを行う。マスタ側の転送装置３０において、検出部４５は、マスタ側の転送装置３０とネットワーク中のルータ１０や制御装置２０との間の通信障害を検出する。
【００２８】
通信制御部５０は、切り替え処理や、制御情報の同期処理などを行う。検出部５１、切り替え部５２は、バックアップ側の転送装置３０で動作し、同期処理部５３と接続処理部５４はマスタ側の転送装置３０で動作する。接続処理部５４は、制御装置２０とマスタ側の転送装置３０との間の通信セッションを確立する。同期処理部５３は、制御装置２０から取得した処理ルールや、制御装置２０との間の通信セッションの維持に使用する制御情報などをバックアップ側の転送装置３０に通知するためのパケットを生成する。さらに、同期処理部５３は、マスタ側の転送装置３０を介した経路に障害が発生していない場合、送信部３２を介して、定期的に、障害が発生していないことを通知する制御パケットをバックアップ側の転送装置３０に送信する。検出部５１は、マスタ側の転送装置３０からの制御パケットの受信間隔を用いて、マスタ側の転送装置３０での障害の発生を検出する。なお、マスタ側の転送装置３０が回線の障害を検出した際にも、制御パケットの送信が停止されるので、バックアップ側では制御パケットを受信しない場合、マスタ側の転送装置３０かマスタ側の転送装置３０を介した転送経路で障害が発生したと判定しても良い。切り替え部５２は、制御装置２０とマスタ側の転送装置３０の間の通信セッションを、バックアップ側の転送装置３０で引き継ぐための処理を行う。さらに、切り替え部５２は、ルータ１０ａ〜１０ｃとの間の通信を行うために、仮想アドレスに宛てたパケットの受信を行うための設定処理を行う。
【００２９】
図４は、転送装置３０のハードウェア構成の例を説明する図である。転送装置３０は、プロセッサ１０１、メモリ１０２、記憶装置１０３、スイッチ回路１０４、インタフェース１０５（１０５ａ、１０５ｂ）を備える。プロセッサ１０１は、ＣＰＵ（Central Processing Unit）を含む任意のプロセッサのいずれかとすることができる。メモリ１０２は、ＲＡＭ（Random Access Memory）とＲＯＭ（Read Only Memory）を備えており、バッファとして機能する他、プロセッサ１０１での処理に使用される情報やプロセッサ１０１での処理により得られた情報などを記録する。また、メモリ１０２や記憶装置１０３は、プロセッサ１０１が実行するプログラムを記憶する。スイッチ回路１０４は、パケットの転送処理の際のスイッチングに使用される。インタフェース１０５は、ネットワークに接続し、他の装置との通信のための処理を行う。
【００３０】
転送装置３０において、プロセッサ１０１は制御部４０を実現する。通信部３１はインタフェース１０５によって実現される。さらに、メモリ１０２と記憶装置１０３は、記憶部６０として動作する。
【００３１】
＜実施形態＞
以下、制御装置２０と転送装置３０の間の通信に使用される制御情報の引き継ぎ、処理ルールの同期処理、制御装置２０と転送装置３０の間の死活確認、アクティブ側の転送装置３０とバックアップ側の転送装置３０の切り替え処理に分けて説明する。さらに、以下の説明では、マスタ側とバックアップ側のいずれの装置での処理かを分かりやすくするために、符号の末尾に転送装置３０の符号の末尾と同じアルファベットを付けて記載することがある。例えば、同期処理部５３ａは、転送装置３０ａ中の同期処理部５３を表すものとする。
【００３２】
（１）制御装置２０と転送装置３０の間の通信に使用される制御情報の引き継ぎ
図５は、制御装置２０と転送装置３０ａの間でのセッションの確立の際に行われる処理の例を説明するシーケンス図である。なお、以下の説明では、ＯｐｅｎＦｌｏｗプロトコルとＴＣＰ（Transmission Control Protocol）が用いられる場合を例として説明するが、使用されるプロトコルの種類は実装に応じて変更され得る。転送装置３０ａ中の接続処理部５４ａは、ＴＣＰコネクションの確立要求を制御装置２０に送信する（ステップＳ１）。制御装置２０からコネクションの確立を許可することを通知する応答が転送装置３０ａに送信されると、制御装置２０と転送装置３０ａの間でコネクションが確立される（ステップＳ２、Ｓ３）。
【００３３】
受信部３３ａは、制御装置２０からＨｅｌｌｏメッセージを受信する（ステップＳ４）。なお、Ｈｅｌｌｏメッセージなど、図５中で送受信されるメッセージ中に含まれる情報要素の例は、図６を参照しながら説明する。接続処理部５４ａは、制御装置２０に対してＨｅｌｌｏメッセージを送信することにより、制御装置２０と転送装置３０ａの間のＯｐｅｎＦｌｏｗセッションを確立する（ステップＳ５、Ｓ６）。
【００３４】
ＯｐｅｎＦｌｏｗセッションが確立すると、制御装置２０は、転送装置３０ａに向けてＦｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔメッセージを送信する（ステップＳ７）。受信部３３ａは、Ｆｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔメッセージを受信し、接続処理部５４ａに出力する。接続処理部５４ａは、Ｆｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔメッセージに応答して、転送装置３０ａのパケットバッファの最大値等の情報を含むＦｅａｔｕｒｅ  Ｒｅｐｌｙメッセージを、制御装置２０に送信する（ステップＳ８）。すると、制御装置２０は、Ｓｅｔ  Ｃｏｎｆｉｇメッセージを転送装置３０ａに送信する（ステップＳ９）。
【００３５】
接続処理部５４ａは、受信部３３ａを介して、Ｓｅｔ  Ｃｏｎｆｉｇメッセージを取得する。一方、同期処理部５３ａは、Ｆｅａｔｕｒｅｓ  Ｒｅｐｌｙメッセージで制御装置２０に通知した情報や、Ｓｅｔ  Ｃｏｎｆｉｇメッセージで得られた情報から、バックアップ側の転送装置３０ｂに通知するための制御情報を選択する。同期処理部５３ａは、通知対象として選択した制御情報を、送信部３２ａを介して、転送装置３０ｂに送信する（ステップＳ１０）。転送装置３０ｂのテーブル情報処理部４２ｂは、転送装置３０ａから取得した制御情報を、記憶部６０ｂに記録する。
【００３６】
一方、制御装置２０は、マスタ側の転送装置３０ａに対して、制御装置２０が決定済みの処理ルール等を送信する。このため、転送装置３０aは、制御装置２０からＦｌｏｗＭｏｄメッセージやＧｒｏｕｐ  Ｍｏｄメッセージを受信する（ステップＳ１１）。テーブル情報処理部４２ａは、ＦｌｏｗＭｏｄメッセージによって通知された情報を、フローテーブル６４ａ、Ｇｒｏｕｐ  Ｍｏｄメッセージによって通知された情報を、グループテーブル６５ａに記録する。
【００３７】
なお、図５のシーケンス図には明記されていないが、マスタ側の転送装置３０ａの同期処理部５３ａは、定期的に転送装置３０ｂに対して、転送装置３０ａが正常に動作していることを通知するための制御パケットを送信している。
【００３８】
図６は、制御装置２０と転送装置３０の間で送受信されるメッセージに含まれている情報要素の例を説明する図である。なお、図６の例は一例であり、例えば、いずれのメッセージでも共通ヘッダ部には図示している以外の情報要素が含まれてもよい。
【００３９】
図６のＭ１はＨｅｌｌｏメッセージ中の情報要素の例である。Ｈｅｌｌｏメッセージは図５のステップＳ４、Ｓ５において送受信されている。Ｈｅｌｌｏメッセージは、共通ヘッダ部を有し、さらにオプションの情報要素を含んでも良いが、Ｍ１に示すように、オプションの情報要素はＨｅｌｌｏメッセージ中に含まれていなくてもよい。共通ヘッダ部には、送信元の装置のＯｐｅｎＦｌｏｗバージョンとメッセージ種別（Ｈｅｌｌｏ）が含まれる。
【００４０】
Ｍ２はＦｅａｔｕｒｅ  Ｒｅｑｕｅｓｔメッセージ中の情報要素である。Ｆｅａｔｕｒｅ  Ｒｅｑｕｅｓｔメッセージは図５のステップＳ７で送信されている。Ｆｅａｔｕｒｅ  Ｒｅｑｕｅｓｔメッセージは、送信元の制御装置２０が使用しているＯｐｅｎＦｌｏｗバージョンとメッセージ種別（Ｆｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔ）が含まれる。
【００４１】
Ｍ３はＦｅａｔｕｒｅ  Ｒｅｐｌｙメッセージ中の情報要素である。Ｆｅａｔｕｒｅ  Ｒｅｐｌｙメッセージは、図５のステップＳ８において、転送装置３０ａの性能を表す情報を制御装置２０に通知するために転送装置３０ａから送信されている。Ｆｅａｔｕｒｅ  Ｒｅｐｌｙメッセージは、共通ヘッダ部とＦｅａｔｕｒｅｓ情報を含む。Ｍ３の例では、Ｆｅａｔｕｒｅｓ情報は、Ｄａｔａｐａｔｈ  ＩＤ、パケットバッファ最大値、送信元の転送装置３０ａがサポートするテーブル数、送信元の転送装置３０ａがサポートする機能情報を含み、適宜、パディングを含む。なお、Ｆｅａｔｕｒｅｓ情報の内容は実装に応じて変更され得る。共通ヘッダ部は、送信元の転送装置３０ａが使用しているＯｐｅｎＦｌｏｗバージョンとメッセージ種別（Ｆｅａｔｕｒｅｓ  Ｒｅｐｌｙ）を含む。
【００４２】
Ｍ４はＳｅｔ  Ｃｏｎｆｉｇメッセージ中の情報要素の例である。Ｓｅｔ  Ｃｏｎｆｉｇメッセージは、図５のステップＳ９で制御装置２０から転送装置３０ａに送信されている。Ｓｅｔ  Ｃｏｎｆｉｇメッセージは、共通ヘッダ部とＣｏｎｆｉｇ情報を含む。Ｃｏｎｆｉｇ情報には、例えば、Ｃｏｎｆｉｇフラグや制御装置２０から送信される情報の最大バイト数などが含められる。
【００４３】
これらのメッセージで通知された情報を用いることにより、マスタ側の転送装置３０ａは制御装置２０との間の通信処理を行う。さらに、転送装置３０ａ中の同期処理部５３ａは、図６中の各メッセージを用いて制御装置２０から取得した情報から、制御装置２０との間の通信セッションの維持に使用する情報を、バックアップ側の転送装置３０ｂに通知する制御情報として選択する。
【００４４】
図７は、バックアップ側の転送装置３０に通知される制御情報の例を説明する図である。図７の例では、ＯｐｅｎＦｌｏｗバージョン、Ｄａｔａｐａｔｈ  ＩＤ、パケットバッファ最大値、サポートテーブル数、サポート機能情報、Ｃｏｎｆｉｇフラグ、制御装置２０から送信される情報の最大バイト数が制御情報に含まれている。図７において、ＯｐｅｎＦｌｏｗバージョンは、制御装置２０が使用しているＯｐｅｎＦｌｏｗプロトコルのバージョンである。図７の例では、制御装置２０は、ＯｐｅｎＦｌｏｗのバージョン１．３を使用している。また、Ｄａｔａｐａｔｈ  ＩＤは、転送装置３０ａと制御装置２０の間のＯｐｅｎＦｌｏｗセッションを一意に特定する際に使用する識別情報であり、図７の例では９０５２０７４６８４９４８１という値である。パケットバッファ最大値は、転送装置３０ａがバッファ可能な値として制御装置２０に通知したバッファの値であり、転送装置３０ａと転送装置３０ｂのいずれもが使用可能なバッファの上限値以下に設定されている。サポートテーブル数は、転送装置３０ａがサポートするテーブル数として転送装置３０ａが制御装置２０に通知した値であり、転送装置３０ａと転送装置３０ｂのいずれもが使用可能なテーブル数の上限値以下に設定された値である。サポート機能情報は、転送装置３０ａがサポートする機能情報として転送装置３０ａが制御装置２０に通知した値であり、転送装置３０ａと転送装置３０ｂのいずれもが提供可能な機能から選択された値である。なお、図７は制御情報の一例であり、マスタ側の転送装置３０から通知される情報として選択される情報要素の種類や各情報の値は、実装に応じて任意に変更される。
【００４５】
同期処理部５３ａは、バックアップ側の転送装置３０ｂに通知する制御情報を図７に示すように選択すると、図５のステップＳ１０で説明したように、制御情報を含むパケットを、バックアップ側の転送装置３０ｂに送信する。転送装置３０ｂの受信部３３ｂは、マスタ側の転送装置３０ａから受信した情報をテーブル情報処理部４２ｂに出力する。すると、テーブル情報処理部４２ｂは、入力された制御情報を記憶部６０ｂに記録する。
【００４６】
図８は、マスタ側の転送装置３０で行われる処理の例を説明する図である。転送装置３０中の接続処理部５４は、制御装置２０との間で、ＴＣＰなどＯｐｅｎＦｌｏｗよりも下位レイヤでのコネクション確立処理を行う（ステップＳ２１）。受信部３３は、制御装置２０から送信されたＨｅｌｌｏメッセージを受信する（ステップＳ２２）。テーブル情報処理部４２は、Ｈｅｌｌｏメッセージ中の情報を記憶部６０に記憶する（ステップＳ２３）。接続処理部５４は、制御装置２０に対してＨｅｌｌｏメッセージを送信する（ステップＳ２４）。受信部３３は、制御装置２０から送信されたＦｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔメッセージを受信する（ステップＳ２５）。テーブル情報処理部４２は、Ｆｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔメッセージ中にパラメータ情報が含まれている場合、パラメータ情報を記憶部６０に記憶する（ステップＳ２６）。接続処理部５４は、制御装置２０に対してＦｅａｔｕｒｅｓ  Ｒｅｐｌｙメッセージを送信する（ステップＳ２７）。受信部３３は、制御装置２０から送信されたＳｅｔ  Ｃｏｎｆｉｇメッセージを受信する（ステップＳ２８）。テーブル情報処理部４２は、Ｓｅｔ  Ｃｏｎｆｉｇメッセージ中の情報を記憶部６０に記憶する（ステップＳ２９）。同期処理部５３は、記憶部６０中の情報から、バックアップ側の転送装置３０に送信する対象となる制御情報を選択し、送信部３２を介して、バックアップ側の転送装置３０ｂに制御情報を送信する（ステップＳ３０、Ｓ３１）。
【００４７】
（２）処理ルールの同期処理
次に、制御装置２０から転送装置３０に処理ルールが通知されたときの同期処理について説明する。処理ルールは、ＦｌｏｗＭｏｄメッセージやＧｒｏｕｐＭｏｄメッセージを用いて、制御装置２０からマスタ側の転送装置３０ａに通知される。
【００４８】
図９は、制御装置２０と転送装置３０の間で送受信されるメッセージ中の情報要素の例を説明する図である。Ｍ１１は、ＦｌｏｗＭｏｄメッセージに含まれる情報要素の例を示す。ＦｌｏｗＭｏｄメッセージは図５のステップＳ１１で制御装置２０から転送装置３０ａに送信されている。ＦｌｏｗＭｏｄメッセージは、共通ヘッダ部とＦｌｏｗＭｏｄ情報を含む。Ｍ１１の例では、ＦｌｏｗＭｏｄ情報は、優先度、ｍａｔｃｈ条件、ｉｎｓｔｒｕｃｔｉｏｎｓを含む。各ｍａｔｃｈ条件にはｉｎｓｔｒｕｃｔｉｏｎが対応付けられている。図９の例では、ｍａｔｃｈ条件として、マッチ種別、マッチ情報サイズ、ＯＸＭ（OpenFlow eXtensible Match）フィールド、パディングが含まれる。一方、ｉｎｓｔｒｕｃｔｉｏｎとして、ｉｎｓｔｒｕｃｔｉｏｎ種別、ｉｎｓｔｒｕｃｔｉｏｎ情報サイズ、パディングが含まれている。
【００４９】
Ｍ１２は、ＧｒｏｕｐＭｏｄメッセージに含まれる情報要素の例を示す。ＧｒｏｕｐＭｏｄメッセージも図５のステップＳ１１で制御装置２０から転送装置３０ａに送信されている。ＧｒｏｕｐＭｏｄメッセージは、共通ヘッダ部とＧｒｏｕｐＭｏｄ情報を含む。Ｍ１２の例では、ＧｒｏｕｐＭｏｄ情報は、コマンド種別、グループ種別、パディング、グループＩＤ、ｂｕｃｋｅｔ情報が含まれる。グループ種別は、ＧｒｏｕｐＭｏｄメッセージ中の情報が適用されるグループの種類の情報であり、全てのｂｕｃｋｅｔ情報を実行するか等の判定に使用される。グループＩＤは、ＧｒｏｕｐＭｏｄメッセージ中の情報が適用されるグループの識別子である。ｂｕｃｋｅｔ情報には、監視ポートなどの情報と、ａｃｔｉｏｎ情報が含まれる。ａｃｔｉｏｎ情報には、アクション種別とアクション情報サイズ、パディングが含まれる。アクション種別は、該当するグループで行われる処理の内容を示す。
【００５０】
なお、ＦｌｏｗＭｏｄメッセージやＧｒｏｕｐＭｏｄメッセージに含まれる情報要素は実装に応じて変更され得る。また、テーブル情報処理部４２ａは、制御装置２０から受信したこれらの情報を用いて、フローテーブル６４やグループテーブル６５を更新する。
【００５１】
図１０は、フローテーブル６４の例を説明する図である。図１０に示すフローテーブル６４には、フローエントリ番号、マッチフィールド、優先度（ｐｒｉｏｒｉｔｙ）、ｉｎｓｔｒｕｃｔｉｏｎ情報が含まれる。転送装置３０ａ中の転送処理部４３ａは、ルータ１０から受信したパケットについて、優先度順にマッチフィールド中の条件（ｍａｔｃｈ条件）との整合を判定する。転送処理部４３ａは、受信したパケットに該当するｍａｔｃｈ条件を検出すると、そのｍａｔｃｈ条件に対応するｉｎｓｔｒｕｃｔｉｏｎの処理を実行する。
【００５２】
図１１は、グループテーブル６５の例を説明する図である。図１１のグループテーブルには、グループエントリ番号、グループＩＤ、タイプ、ａｃｔｉｏｎ情報が含まれる。なお、タイプはグループ種別としてＧｒｏｕｐＭｏｄメッセージで通知された情報である。転送装置３０ａ中の転送処理部４３ａは、グループＩＤで特定されるポートのグループなどを用いて、ルータ１０から受信したパケットの処理の際の負荷分散などを行う。
【００５３】
マスタ側の転送装置３０ａでフローテーブル６４ａやグループテーブル６５ａが更新されると、同期処理部５３ａは、更新後のフローテーブル６４ａと更新前のフローテーブル６４ａの差分をフローテーブル６４のテーブル更新情報として求める。同様に、同期処理部５３ａは、更新後のグループテーブル６５ａと更新前の更新後のグループテーブル６５ａの差分をグループテーブル６５のテーブル更新情報として求める。同期処理部５３ａは、得られたテーブル更新情報を、テーブルの種類に対応付けて、バックアップ側の転送装置３０ｂに送信する。
【００５４】
転送装置３０ｂの受信部３３ｂは、テーブル更新情報を含むパケットを受信し、受信したパケットをテーブル情報処理部４２ｂに出力する。テーブル情報処理部４２ｂは、入力されたパケット中のテーブル更新情報を用いて、フローテーブル６４ｂやグループテーブル６５ｂを更新する。このため、バックアップ側の転送装置３０ｂは、制御装置２０と通信していなくても、マスタ側の転送装置３０ａからの情報を用いて、制御装置２０で決定された処理ルールを取得することができる。
【００５５】
図１２は、マスタ側の転送装置３０で行われる処理の例を説明するフローチャートである。受信部３３は、制御装置２０からメッセージを受信する（ステップＳ４１）。テーブル情報処理部４２は、メッセージの種類を判別する（ステップＳ４２）。メッセージがＦｌｏｗＭｏｄメッセージである場合、テーブル情報処理部４２は、フローテーブル６４を更新するとともに、フローテーブル６４の更新情報を一時的に記憶する（ステップＳ４３、Ｓ４４）。メッセージがＧｒｏｕｐＭｏｄメッセージである場合、テーブル情報処理部４２は、グループテーブル６５を更新するとともに、グループテーブル６５の更新情報を一時的に記憶する（ステップＳ４５、Ｓ４６）。同様にその他のメッセージについても、テーブル情報処理部４２は、そのメッセージに関連するテーブルを更新するとともに、更新情報を一時的に記憶する（ステップＳ４７、Ｓ４８）。
【００５６】
同期処理部５３は、記憶部６０に記憶されているいずれかのテーブルが更新されたかを判定する（ステップＳ４９）。記憶部６０に記憶されているいずれかのテーブルが更新された場合、同期処理部５３は、各テーブルの更新情報として一時的に記憶している情報を収集する（ステップＳ４９でＹｅｓ、ステップＳ５０）。収集した更新情報を、送信部３２を介してバックアップ側の転送装置３０に送信する（ステップＳ５１）。このとき、同期処理部５３は、収集した更新情報と各更新情報の取得に使用されたメッセージの種類を対応付けたものを、送信対象としても良い。また、同期処理部５３は、収集した更新情報と各更新情報で更新されるテーブルの種類を対応付けたものを、送信対象としても良い。一方、記憶部６０に記憶されているいずれのテーブルも更新されていない場合、同期処理部５３は処理を終了する（ステップＳ４９でＮｏ）。
【００５７】
図１３は、バックアップ側の転送装置３０で行われる処理の例を説明するフローチャートである。なお、図１３の例では、マスタ側の転送装置３０からは、更新情報が各更新情報の取得に使用されたメッセージの種別に対応付けて送信されるものとする。
【００５８】
受信部３３は、マスタ側の転送装置３０から更新情報を含むパケットを受信する（ステップＳ６１）。テーブル情報処理部４２は、受信したパケットを解析し、受信パケット中に含まれている更新情報を、その更新情報の取得に使用されたメッセージの種別に対応付けて抽出する（ステップＳ６２）。次に、ループ端Ｌ１とＬ２で挟まれたループ処理が行われる。以下、ループ端Ｌ１とＬ２で挟まれたループのことを「更新ループ」と記載することがある。テーブル情報処理部４２は、処理対象のテーブル更新情報を選択し、選択した更新情報の取得に使用されたメッセージの種別を判別する（ステップＳ６３）。ステップＳ６４〜Ｓ６９で行われる処理は、図１２を参照しながら説明したステップＳ４３〜Ｓ４８の処理と同様である。ステップＳ６５、Ｓ６７、Ｓ６９のいずれかの処理の後で、テーブル情報処理部４２は、受信パケットに含まれていた全ての更新情報に対する処理が終わったかを判定する（ループ端Ｌ２）。受信パケットに含まれていた全ての更新情報に対する処理が終わっていない場合、ステップＳ６３以降の処理が繰り返される（ループ端Ｌ２でＮｏ）。一方、受信パケットに含まれていた全ての更新情報に対する処理が終わっている場合、テーブル情報処理部４２は、処理を終了する（ループ端Ｌ２でＹｅｓ）。
【００５９】
（３）制御装置２０とマスタ側の転送装置３０の間の死活確認
図１４は、制御装置２０とマスタ側の転送装置３０の間で行われる死活確認の例を説明する図である。シーケンスＳＥ１は、転送装置３０ａがマスタ側として動作している場合の死活確認の例である。シーケンスＳＥ１の例では、制御装置２０は、マスタ側の転送装置３０ａにＥｃｈｏ  Ｒｅｑｕｅｓｔメッセージを送信する（矢印Ａ２１）。
【００６０】
図１４のＭ２１は、Ｅｃｈｏ  Ｒｅｑｕｅｓｔメッセージに含まれる情報要素の例である。Ｅｃｈｏ  Ｒｅｑｕｅｓｔメッセージには、共通ヘッダ部とＥｃｈｏ情報が含まれる。共通ヘッダ部には、送信元の制御装置２０が使用しているＯｐｅｎＦｌｏｗバージョンとメッセージ種別（Ｅｃｈｏ  Ｒｅｑｕｅｓｔ）が含まれる。Ｅｃｈｏ情報は、Ｅｃｈｏ  Ｒｅｑｕｅｓｔで送信されるデータが含められるが、死活確認の際は、Ｅｃｈｏ情報にデータが含められていなくても良い。
【００６１】
転送装置３０ａの受信部３３ａは、Ｅｃｈｏ  Ｒｅｑｕｅｓｔメッセージを受信する。検出部４５ａは、Ｅｃｈｏ  Ｒｅｑｕｅｓｔメッセージに応答するＥｃｈｏ  Ｒｅｐｌｙメッセージを生成し、送信部３２ａを介して、制御装置２０に送信する（シーケンスＳＥ１の矢印Ａ２２）。
【００６２】
図１４のＭ２２は、Ｅｃｈｏ  Ｒｅｐｌｙメッセージに含まれる情報要素の例である。Ｅｃｈｏ  Ｒｅｐｌｙメッセージには、共通ヘッダ部とＥｃｈｏ情報が含まれる。共通ヘッダ部には、送信元の転送装置３０ａが使用しているＯｐｅｎＦｌｏｗバージョンとメッセージ種別（Ｅｃｈｏ  Ｒｅｐｌｙ）が含まれる。Ｅｃｈｏ情報は、Ｅｃｈｏ  Ｒｅｐｌｙで送信されるデータが含められるが、Ｅｃｈｏ  Ｒｅｑｕｅｓｔメッセージと同様に、死活確認の際はＥｃｈｏ情報にデータが含められていなくても良い。
【００６３】
シーケンスＳＥ１には、制御装置２０と転送装置３０ａとの間で送受信されるメッセージを１対のみ示しているが、Ｅｃｈｏメッセージによる死活監視は定期的に行われる。Ｅｃｈｏメッセージの送受信の間隔は実装に応じて任意に決定されるが、転送装置３０の切り替え処理にかかる時間よりも長いものとする。なお、図１４を用いて説明した死活監視の方法は一例であり、例えば、死活監視に使用されるメッセージは、他の種類の制御メッセージであっても良い。
【００６４】
（４）マスタ側の転送装置とバックアップ側の転送装置の切り替え処理
以下、マスタ側の転送装置３０ａに接続されている回線の障害により転送装置３０の切り替え処理が行われるケースと、マスタ側の転送装置３０ａに障害が発生したことにより転送装置３０の切り替え処理が行われるケースに分けて処理の例を説明する。
【００６５】
〔ケース１〕回線に障害が発生した場合の処理の例
図１５は、マスタ側の転送装置３０ａが回線の障害を検出したときの制御装置２０との間の通信処理の例を説明する図である。転送装置３０ａの検出部４５ａは、ルータ１０ａ〜１０ｃの各々との間で疎通確認を定期的に行うことにより、転送装置３０ａと接続先のルータ１０との間での回線の障害発生を検出する。図１５の例では、検出部４５ａは、ルータ１０ａと転送装置３０ａの間の回線に障害が発生したことを検出したとする。なお、図１５でも、転送装置３０ａと転送装置３０ｂの各々はＬ２スイッチ１５を介してルータ１０ａに接続されているが、図を見やすくするためにＬ２スイッチ１５を図示していない。以下の説明において、回線の障害は、Ｌ２スイッチ１５と転送装置３０ａの間で発生しており、Ｌ２スイッチ１５とルータ１０ａの間には障害が発生していないとする。
【００６６】
回線の障害が検出されると、転送装置３０ｂをマスタ側として動作させるために、同期処理部５３ａは、転送装置３０ｂへの制御パケットの送信や、同期用の更新情報の送信を中断する。図１５では、転送装置３０ａと転送装置３０ｂとの間での制御パケットや更新情報の送信が中断されていることを、転送装置３０ａと転送装置３０ｂを結ぶ破線の矢印で示している。
【００６７】
なお、マスタ側の転送装置３０ａは、回線の障害を検出した場合も、制御装置２０との間の通信セッションを維持するために、制御装置２０との間で行われる死活監視用のメッセージに応答する。例えば、検出部４５ａで回線の障害を検出した後で、矢印Ａ３１に示すように、転送装置３０ａが制御装置２０からＥｃｈｏ  Ｒｅｑｕｅｓｔメッセージを受信したとする。この場合、図１４を参照しながら説明した処理と同様の処理により、検出部４５ａは、Ｅｃｈｏ  Ｒｅｐｌｙメッセージを生成し、送信部３２ａを介して、制御装置２０に送信する（矢印Ａ３２）。
【００６８】
図１６は、マスタ側の転送装置３０ａが回線の障害発生を検出したときの切り替え処理の例を説明するシーケンス図である。転送装置３０ａが回線での障害の発生を検出した場合、転送装置３０ａと制御装置２０との間で形成した通信セッションを維持した状態で、転送装置３０の切り替え処理が行われる。以下、図１６を参照しながら切り替え処理の詳細を説明する。以下の説明では、転送装置３０ａでの通信に障害が出ていないことを転送装置３０ｂに通知する制御パケットとして、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔが用いられる場合を例としているが、制御パケットは実装に応じて変更されても良い。また、図１６は処理の一例である。実装に応じて、例えば、ステップＳ９４がステップＳ９３の前に実行されるなど、処理の順序が変更され得る。また、制御装置２０とバックアップ側の転送装置３０ｂとの間での下位レイヤのコネクション等の接続のタイミングは、ＯｐｅｎＦｌｏｗセッションの引継ぎ前の任意のタイミングである。
【００６９】
ステップＳ９１の段階では、転送装置３０ａとルータ１０ａの間の回線に障害が発生していないとする。ステップＳ９１において、転送装置３０ａはマスタ側の転送装置３０として動作しているので、制御装置２０との間でＯｐｅｎＦｌｏｗセッションを確立している。また、同期処理部５３ａは、定期的にＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを転送装置３０ｂに送信している。このため、転送装置３０ｂの検出部５１ｂは、転送装置３０ａでは障害が発生しておらず、転送装置３０ａを介した通信が行われていると判定する。
【００７０】
その後、ルータ１０ａと転送装置３０ａとの間の回線で障害が発生したとする。検出部４５ａは、ルータ１０ａとの間の回線に障害が発生したことを検出する（ステップＳ９２）。検出部４５ａは、障害が発生している回線に接続されたポートを介した通信に障害が発生していることを、ポート情報テーブル６２ａに記録する。例えばルータ１０ａに接続されているポートがポートＰｏ１である場合、検出部４５ａは、ポートＰｏ１からの通信に障害が発生していることをポート情報テーブル６２ａに書き込む。検出部４５ａは、ポート情報テーブル６２ａ中の情報を含むＰｏｒｔ  Ｓｔａｔｕｓメッセージを生成し、送信部３２ａを介して、制御装置２０に送信する（ステップＳ９３）。ポート情報テーブル６２やＰｏｒｔ  Ｓｔａｔｕｓメッセージの例については、図１８を参照しながら説明する。さらに、同期処理部５３ａは、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信を停止する（ステップＳ９４）。
【００７１】
一方、転送装置３０ａが制御装置２０からＥｃｈｏ  Ｒｅｑｕｅｓｔメッセージを受信したとする（ステップＳ９５）。すると、図１４、図１５を参照しながら説明した処理と同様の処理により、検出部４５ａは、Ｅｃｈｏ  Ｒｅｐｌｙメッセージを生成し、送信部３２ａを介して、制御装置２０に送信する（ステップＳ９６）。
【００７２】
ステップＳ９４においてＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信が停止されたことに伴い、転送装置３０ｂは、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを受信しなくなる。検出部５１ｂは、所定の期間以上にわたってＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを受信していない場合、マスタ側の転送装置３０ａを介した通信での障害が発生していると判定する（ステップＳ９７）。切り替え部５２ｂは、転送装置３０ｂがマスタ側の転送装置３０として動作するために、ＶＲＲＰグループに割り当てられている仮想ＩＰアドレスと仮想ＭＡＣアドレスとを、転送装置３０ｂで処理するアドレスとして設定する（ステップＳ９８）。さらに、切り替え部５２ｂは、ルータ１０ａ〜１０ｃから転送装置３０ｂに至る経路中のＬ２スイッチ１５に対して、ＧＡＲＰ（Gratuitous Address Resolution Protocol）を送信する（ステップＳ９９）。ＧＡＲＰの送信により、Ｌ２スイッチ１５が保持しているＡＲＰテーブルが更新されるため、ＶＲＲＰグループで使用される仮想ＩＰアドレスや仮想ＭＡＣアドレスを宛先に指定したパケットは、転送装置３０ｂに転送されるようになる。
【００７３】
その後、転送装置３０ｂ中の切り替え部５２ｂは、制御情報テーブル６１ｂを参照してマスタ側の転送装置３０ａから通知された制御情報を取得する（ステップＳ１００）。切り替え部５２ｂは、制御情報を用いることにより、制御装置２０と転送装置３０ａの間で確立された通信セッションを介して、制御装置２０にＥｃｈｏ  Ｒｅｐｌｙメッセージを送信する（ステップＳ１０１）。ここで、Ｅｃｈｏ  Ｒｅｐｌｙメッセージの送信は、制御装置２０からのＥｃｈｏ  Ｒｅｑｕｅｓｔメッセージに対する応答が転送装置３０ａから送られていない場合に備えて送信される。すなわち、マスタ側として動作していた転送装置３０ａ自身に障害が発生した場合に制御装置２０と転送装置３０ａで確立された通信セッションを切断しないため、バックアップ側の転送装置３０は、切り替え処理が終わると制御装置２０に対してＥｃｈｏ  Ｒｅｐｌｙメッセージを送信する。
【００７４】
ここで、切り替えにかかる時間と死活監視のタイミングについて説明する。検出部５１ｂがマスタ側の転送装置３０ａを介した通信で障害が発生していると判定した時刻から、Ｅｃｈｏ  Ｒｅｐｌｙメッセージを送信するまでの期間を第１の期間とする。一方、制御装置２０と転送装置３０ａの間の死活監視で制御装置２０がＥｃｈｏ  Ｒｅｐｌｙを待ち合わせる期間を第２の期間とする。すると、第１の期間は第２の期間よりも短くなるように設定されている。
【００７５】
なお、図１６のように、転送装置３０ａに障害が発生していない場合には、転送装置３０ａからＥｃｈｏ  Ｒｅｐｌｙメッセージが送信されているにも関わらず、転送装置３０ｂからＥｃｈｏ  Ｒｅｐｌｙメッセージが送信されることになる。この場合には、転送装置３０ｂから送信されたＥｃｈｏ  Ｒｅｐｌｙメッセージは制御装置２０で破棄されるため、特に誤作動は発生しない。
【００７６】
切り替え部５２ｂは、さらに、制御装置２０にＰｏｒｔ  Ｓｔａｔｕｓメッセージを送信することにより、転送装置３０ｂでのポートの状態を制御装置２０に通知する（ステップＳ１０２）。例えば、ステップＳ９３で回線の障害に伴う転送装置３０ａのポートの状態が通知されたために、制御装置２０では、ポートＰｏ１を介した通信に障害が発生していると判定されているとする。しかし、転送装置３０ｂのポートＰｏ１を介した通信には障害が無いため、マスタ側の転送装置３０が転送装置３０ａから転送装置３０ｂに切り替わったことによりルータ１０ａとの通信が可能になったとする。すると、ステップＳ１０２において、転送装置３０ｂからポートＰｏ１を介した通信が可能であることが制御装置２０に通知され、制御装置２０では、転送装置３０ｂでのポートの状態に合わせてＶＲＲＰグループでの通信状態が更新される。なお、ＶＲＲＰグループに含まれている転送装置３０ａと転送装置３０ｂでは、ポート番号とそのポート番号で特定されるポートの接続先が同じ装置になるように設定されている。
【００７７】
図１７は、ＶＲＲＰ情報テーブル６３の例を説明する図である。ＶＲＲＰ情報テーブル６３は、ＶＲＲＰグループＩＤ、仮想ルータＩＤ、インタフェース、優先度、仮想ＩＰアドレス、仮想ＭＡＣアドレス、Ａｄｖｅｒｔｉｓｅｍｅｎｔ送信間隔を含む。ＶＲＲＰグループＩＤは、ＶＲＲＰグループを特定する識別情報である。仮想ルータＩＤは、各インタフェースとの間で使用される仮想ルータの識別情報である。例えば、インタフェース１／０／１がルータ１０ａとの間の接続である場合、転送装置３０ａと転送装置３０ｂとがルータ１０ａとの間の通信に使用する仮想ルータの識別子（ＶＲＩＤ）は１０である。同様に、インタフェース１／０／２がルータ１０ｂとの間の接続である場合、転送装置３０ａ、３０ｂがルータ１０ｂとの通信に使用するＶＲＩＤは２０である。また、インタフェース１／０／３がルータ１０ｃとの間の接続である場合、転送装置３０ａ、３０ｂがルータ１０ｃとの通信に使用するＶＲＩＤは３０である。優先度は、そのインタフェースにおいてのマスタ側の転送装置３０の優先度である。仮想ＩＰアドレスと仮想ＭＡＣアドレスは、各インタフェースでの通信に使用される仮想ルータに設定される仮想ＩＰアドレスと仮想ＭＡＣアドレスの組み合わせである。Ａｄｖｅｒｔｉｓｅｍｅｎｔ送信間隔は、マスタ側の転送装置３０ａがＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを送信する時間間隔である。
【００７８】
図１６のステップＳ９７において、検出部５１ｂは、ＶＲＲＰ情報テーブル６３ｂから、各インタフェースについてのＡｄｖｅｒｔｉｓｅｍｅｎｔの送信間隔を取得する。検出部５１ｂは、転送装置３０ａからのＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの受信間隔がいずれかのインタフェースについて設定されているＡｄｖｅｒｔｉｓｅｍｅｎｔの送信間隔と予め決められた値の積を比較する。ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの受信間隔が、Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信間隔と予め決められた値の積よりも長くなると、検出部５１ｂは、マスタ側の転送装置３０ａを介した通信に障害が発生したと判定する。例えば、予め決められた値が３の場合、インタフェース１／０／１のＡｄｖｅｒｔｉｓｅｍｅｎｔの送信間隔の３倍の期間にわたってＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを受信していない場合、検出部５１ｂは、転送装置３０ａを介した通信の障害を検出する。
【００７９】
また、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを受信していない期間が、（１）式から計算されるマスタダウンインターバル時間（Ｔｄｏｗｎ）を超えた場合、検出部５１ｂは、転送装置３０ａを介した通信の障害を検出しても良い。
Ｔｄｏｗｎ＝Ｉｎｔ×３＋（２５６−Ｐｒ）／２５６）  ・・・（１）
ここで、ＩｎｔはＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信間隔であり、Ｐｒはマスタ側の転送装置３０ａの優先度である。
【００８０】
図１８は、ポート情報の例を説明する図である。図１８は、ポート情報テーブル６２の例と、Ｐｏｒｔ  Ｓｔａｔｕｓメッセージの例を示す。ポート情報テーブル６２は、転送装置３０が備えている各ポートの情報が記録されている。図１８の例では、各エントリには、ポート番号、ＭＡＣアドレス、ポート状態が含まれる。ＭＡＣアドレスは、ポート番号で特定されるポートのインタフェースに割り当てられているＭＡＣアドレスである。ポート状態は、そのポートを介した通信に障害が検出されているかを表わす値である。図１８の例では、ポート状態＝０のポートでは、そのポートを介した通信に障害が検出されていないものとする。一方、ポート状態＝１のポートでは、そのポートを介した通信に障害が検出されているものとする。従って、図１８に示すポート情報テーブル６２では、ポート番号＝１のポートを介した通信に障害が発生していることが記録されている。
【００８１】
Ｍ３１は、Ｐｏｒｔ  Ｓｔａｔｕｓメッセージに含まれる情報要素の例である。Ｐｏｒｔ  Ｓｔａｔｕｓメッセージは、共通ヘッダ部とＰｏｒｔ  Ｓｔａｔｕｓ情報が含まれる。共通ヘッダ部には、送信元の転送装置３０が使用しているＯｐｅｎＦｌｏｗバージョンとメッセージ種別（Ｐｏｒｔ  Ｓｔａｔｕｓ）が含まれる。Ｐｏｒｔ  Ｓｔａｔｕｓ情報には、送信元の転送装置３０に備えられているポートの番号とそのポート番号で識別されるポートを介した通信の状態が対応付けて記録される。
【００８２】
図１９は、マスタ側の転送装置３０で行われる処理の例を説明するフローチャートである。検出部４５は、切り替えのトリガとなる現象を検出する（ステップＳ１１１）。図１５などを参照した説明では、切り替えのトリガは、転送装置３０に接続されているルータ１０との間の回線での障害発生である。同期処理部５３は、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信を停止する（ステップＳ１１２）。その後、受信部３３が制御装置２０からＥｃｈｏ  Ｒｅｑｕｅｓｔメッセージを受信したとする（ステップＳ１１３）。すると、検出部４５は、バックアップ側との間の切り替え処理が終わる前に制御装置２０との間の通信セッションが切断されることを防止するために、Ｅｃｈｏ  Ｒｅｐｌｙメッセージを生成する（ステップＳ１１４）。検出部４５は、送信部３２を介して、Ｅｃｈｏ  Ｒｅｐｌｙメッセージを送信する（ステップＳ１１５）。
【００８３】
図２０は、バックアップ側の転送装置３０で行われる処理の例を説明するフローチャートである。検出部５１は、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの受信間隔を、予め、ＶＲＲＰ情報テーブル６３から読み込んでいるとする。このため、マスタ側の転送装置３０を介した通信での障害によりＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信が停止されると、検出部５１は、予定時刻にＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔが未受信であることを検出する。検出部５１は、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔが未受信となった回数をカウントしており、今回の未受信が所定の回数目（Ｎ回目）のＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの未受信であるかを判定する（ステップＳ１２２）。ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの未受信の回数がＮ回未満の場合、ステップＳ１２１に戻る（ステップＳ１２２でＮｏ）。ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの未受信の回数がＮ回目の場合、切り替え部５２は、ＶＲＲＰグループの仮想ＩＰアドレスと仮想ＭＡＣアドレスを、自装置で処理するための設定処理を行う（ステップＳ１２３）。その後、切り替え部５２は、Ｌ２スイッチ１５に対してＧＡＲＰを送信し、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔが未受信となった回数のカウント値を初期化する。
【００８４】
なお、ステップＳ１２３、Ｓ１２４の処理は、そのＶＲＲＰグループに含まれている仮想ルータの各々について行われる。このため、ステップＳ１２３、Ｓ１２４の処理は、ＶＲＲＰ情報テーブル６３に記録されている各エントリについて行われる。従って、図１５などを参照して説明している例では、ルータ１０ａ〜１０ｃの各々との間のインタフェースについてステップＳ１２３、Ｓ１２４の処理が行われる。
【００８５】
次に、切り替え部５２は、マスタ側の転送装置３０から通知された制御情報を参照する（ステップＳ１２５）。なお、マスタ側の転送装置３０から通知された制御情報は制御情報テーブル６１として記録されている。切り替え部５２は、制御情報を用いて、マスタ側の転送装置３０と制御装置２０の間の通信セッションを介して、制御装置２０にＥｃｈｏ  Ｒｅｐｌｙを送信する（ステップＳ１２６）。さらに、切り替え部５２は、ポート情報テーブル６２を参照することにより、自装置が管理しているポートの情報を収集する（ステップＳ１２７）。切り替え部５２は、収集した情報を含むＰｏｒｔ  Ｓｔａｔｕｓメッセージを制御装置２０に送信する（ステップＳ１２８）。
【００８６】
このように、転送装置３０が切り替えられる場合にも、バックアップ側の転送装置３０ｂは、マスタ側の転送装置３０ａが制御装置２０との間で確立した通信セッションを用いるので、制御装置２０では、転送装置３０が切り替わっていると認識しない。このため、制御装置２０は、切り替え処理の後に転送装置３０ｂに対して、既に転送装置３０ａに送信済みの処理ルールを送り直さないので、制御装置２０と転送装置３０との間の無駄な通信が削減される。また、転送装置３０ｂは、転送装置３０ｂがバックアップ側であったときに、マスタ側の転送装置３０ａが制御装置２０から受信した処理ルールを既に取得している。このため、制御装置２０が既に転送装置３０ａに送信済みの処理ルールを新たに受信しなくても、転送装置３０ｂの転送処理部４３ｂは、処理ルールに従ったパケットの処理が可能である。
【００８７】
〔ケース２〕マスタ側の転送装置に障害が発生した場合の処理の例
図２１は、マスタ側の転送装置３０ａで障害が発生したときの切り替え処理の例を説明するシーケンス図である。マスタ側の転送装置３０ａが故障した場合も、転送装置３０ａが制御装置２０との間で通信セッションを維持した状態で、転送装置３０の切り替え処理が行われる。以下、図２１を参照しながら切り替え処理の詳細を説明する。また、図１６は処理の一例である。例えば、ステップＳ１４９とステップＳ１５０の処理が並行して行われるなど、処理のタイミングが変更され得る。なお、図２１においても、制御装置２０とバックアップ側の転送装置３０ｂとの間での下位レイヤのコネクション等の接続のタイミングは、ＯｐｅｎＦｌｏｗセッションの引継ぎ前の任意のタイミングである。
【００８８】
ステップＳ１４１の段階では、転送装置３０ａには障害が発生していないとする。ステップＳ１４１において、転送装置３０ａはマスタ側の転送装置３０として動作しているので、制御装置２０との間でＯｐｅｎＦｌｏｗセッションを確立している。また、同期処理部５３ａは、定期的にＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを転送装置３０ｂに送信している。このため、転送装置３０ｂは、転送装置３０ａを介した通信が行われていると判定する。
【００８９】
転送装置３０ａにおいて障害が発生したとする（ステップＳ１４２）。転送装置３０ａ中の検出部４５ａは、障害の発生により、制御装置２０からの死活監視に対する応答を停止する。さらに、同期処理部５３ａは、バックアップ側の転送装置３０ｂとの間の同期処理や、バックアップ側の転送装置３０ｂに対するＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信も停止する（ステップＳ１４３）。
【００９０】
転送装置３０ａでの障害の発生後に、制御装置２０からＥｃｈｏ  Ｒｅｑｕｅｓｔメッセージが送信されたとする（ステップＳ１４４）。しかし、ステップＳ１４４の時点では、障害の発生により、制御装置２０からの死活監視に対する応答が停止されているので、転送装置３０ａから制御装置２０に対する応答は行われない。
【００９１】
一方、転送装置３０ａからのＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信が停止されているため、検出部５１ｂは、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの未受信を検出する（ステップＳ１４５）。転送装置３０ｂ中の検出部５１ｂは、マスタ側の転送装置３０ａに障害が発生していると判定する。ステップＳ１４６〜Ｓ１４８の処理は、図１６を参照しながら説明したステップＳ９８〜Ｓ１００で行われる処理と同様である。切り替え部５２ｂは、制御情報を用いることにより、制御装置２０と転送装置３０ａの間で確立された通信セッションを介して、制御装置２０にＥｃｈｏ  Ｒｅｐｌｙメッセージを送信する（ステップＳ１４９）。Ｅｃｈｏ  Ｒｅｐｌｙメッセージが、確立済みの通信セッションを用いて制御装置２０に送信されることから、制御装置２０は、通信中の転送装置３０が動作していると判定して、送信済みの処理ルール等を通知し直さずに通信制御を継続する。さらに、切り替え部５２ｂは、制御装置２０にＰｏｒｔ  Ｓｔａｔｕｓメッセージを送信することにより、転送装置３０ｂでのポートの状態を制御装置２０に通知する（ステップＳ１５０）。
【００９２】
ここで、マスタ側の転送装置３０で障害が発生した場合について、切り替えにかかる時間と死活監視のタイミングについて説明する。図１６での説明と同様に、検出部５１ｂがマスタ側の転送装置３０ａを介した通信で障害が発生していると判定した時刻からＥｃｈｏ  Ｒｅｐｌｙメッセージを送信するまでの期間を第１の期間とする。また、制御装置２０と転送装置３０ａの間の死活監視で制御装置２０がＥｃｈｏ  Ｒｅｐｌｙを待ち合わせる期間を第２の期間とする。前述の通り、第１の期間は第２の期間よりも短くなるように設定されている。このため、マスタ側の転送装置３０ａからＥｃｈｏ  Ｒｅｐｌｙが制御装置２０に送信されていなくても、転送装置３０ｂから送信されたＥｃｈｏ  Ｒｅｐｌｙが制御装置２０に到達すると、ＯｐｅｎＦｌｏｗセッションが維持される。
【００９３】
例えば、制御装置２０とマスタ側の転送装置３０の間の死活監視のために、Ｅｃｈｏ  Ｒｅｑｕｅｓｔが１０秒間隔で送信されており、制御装置２０でのタイムアウト検出（第２の期間）はＥｃｈｏ  Ｒｅｑｕｅｓｔ送信後３０秒程度であるとする。次に、第１の期間について検討する。ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信間隔が１秒程度だと、マスタ側の転送装置３０ａでの障害発生後、３秒程度で転送装置３０の切り替えが発生すると考えられる。バックアップ側の転送装置３０ｂがマスタ側に切り替わってから、転送装置３０ｂとＬ２スイッチ１５ａとの間のＧＲＡＰの送受信などにかかる時間も加味すると、第１の期間は、例えば、１０秒程度と見積もることができる。すると、第２の期間は、第１の期間よりも長いため、制御装置２０側では転送装置３０の切り替えを認識せずにＯｐｅｎＦｌｏｗセッションを維持する。なおこれらの数値は一例であり、装置間での死活監視の間隔は、実装に応じて変更され得る。ただし、第１の期間は、第２の期間よりも短くなるように設定されるものとする。
【００９４】
図２２は、マスタ側の転送装置３０ａで障害が発生したときの制御装置２０との間の通信処理の例を説明する図である。図２２は、図２１のステップＳ１４２〜Ｓ１４９の間に、転送装置３０ｂを含むＶＲＲＰグループと制御装置２０の間で行われる通信の例を示している。なお、図２２、図２３でも、転送装置３０ａと転送装置３０ｂの各々はＬ２スイッチ１５を介してルータ１０ａに接続されているが、図を見やすくするためにＬ２スイッチ１５を図示していない。
【００９５】
転送装置３０ａが故障すると、図２１のステップＳ１４５を参照しながら説明したように、転送装置３０ａは、制御装置２０や転送装置３０ｂとの間の通信を中断する。図２２では、転送装置３０ａと転送装置３０ｂとの間での制御パケットや更新情報の送信が中断されていることを、転送装置３０ａと転送装置３０ｂを結ぶ破線の矢印で示している。
【００９６】
図２１のステップＳ１４４で説明したように、転送装置３０ａが故障した後で、矢印Ａ４１に示すように、制御装置２０からＥｃｈｏ  Ｒｅｑｕｅｓｔメッセージが送信されたとする。この場合、転送装置３０ａ中の検出部４５ａは、Ｅｃｈｏ  Ｒｅｑｕｅｓｔメッセージを受信部３３ａが受信したとしてもＥｃｈｏ  Ｒｅｐｌｙメッセージを生成しない。このため、転送装置３０ａから制御装置２０に対してＥｃｈｏ  Ｒｅｐｌｙメッセージは送信されない（矢印Ａ４２）。しかし、図２１を参照しながら説明したように、マスタ側の装置の切り替え後、転送装置３０ｂの切り替え部５２ｂは、制御装置２０と転送装置３０ａの通信に使用されていた通信セッションを介して、Ｅｃｈｏ  Ｒｅｐｌｙメッセージを送信する（矢印Ａ４３）。なお、矢印Ａ４３の処理は、図２１のステップＳ１４９に相当する。このため、切り替え処理の後にマスタ側として動作する転送装置３０ｂと制御装置２０の間の通信セッションは新規に確立されたセッションではなく、制御装置２０から転送装置３０ａに通知済みの処理ルールは転送装置３０ｂに送信されない。
【００９７】
図２３は、ポート情報の送信処理の例を説明する図である。図２３は、図２１のステップＳ１５０の処理を図示している。切り替え処理が終わると、切り替え処理によりマスタ側として動作を開始した転送装置３０ｂは、制御装置２０に対して、転送装置３０ｂのポートの状態を通知する（矢印Ａ５１）。この処理により、制御装置２０は、切り替え後の転送装置３０ｂでのポートの状態に合わせた転送制御を行うことができる。
【００９８】
このように、マスタ側の転送装置３０の故障による切り替えが発生した場合でも、バックアップ側の転送装置３０ｂは、マスタ側の転送装置３０ａが制御装置２０との間で確立した通信セッションを用いる。従って、制御装置２０では、通信先の転送装置３０ａでの障害の発生や、通信先が転送装置３０ａから転送装置３０ｂに切り替わっていることを認識しない。このため、制御装置２０は、切り替え処理の後に転送装置３０ｂに対して、既に転送装置３０ａに送信済みの処理ルールを送り直さずに済み、制御装置２０と転送装置３０との間の無駄な通信が削減される。また、転送装置３０ｂは、切り替え前に送信された処理ルールを、転送装置３０ａを介して取得している。このため、制御装置２０が既に転送装置３０ａに送信済みの処理ルールを新たに受信しなくても、転送装置３０ｂの転送処理部４３ｂは、処理ルールに従ったパケットの処理が可能である。
【００９９】
＜適用例＞
図２４は、実施形態にかかる転送方法が適用されるシステムの例を説明する図である。なお、図２４はシステムの例であり、システム中のルータ１０、転送装置３０、Ｌ２スイッチ１５、ＣＥネットワーク８０などの数や、各装置が備えるポートやインタフェースの数は任意である。
【０１００】
以下、図２４に示すシステムで実施形態にかかる方法が適用された場合に行われる処理の例を説明する。図２４のシステムには、ルータ１０（１０ａ〜１０ｅ）、Ｌ２スイッチ１５（１５ａ〜１５ｄ）、制御装置２０、転送装置３０ａ、転送装置３０ｂが含まれる。また、システムには、ＣＥ（customer edge）ネットワーク８０（８０ａ〜８０ｃ）が含まれている。図２４中の一点鎖線は、制御装置２０と転送装置３０との間での制御処理に使用される制御回線であり、実線はデータの送受信に使用される回線である。なお、図面を見やすくするために、図２４では、制御装置２０とルータ１０の間の通信に使用される回線は記載していないが、ルータ１０がＯｐｅｎＦｌｏｗに対応している場合、各ルータ１０は制御装置２０と制御回線で接続されている。なお、以下の説明では、ルータ１０はＯｐｅｎＦｌｏｗに対応しているとする。従って、制御装置２０は、ルータ１０ａ〜１０ｅ、転送装置３０ａ、転送装置３０ｂの各々と、Ｌ２スイッチ１５ｄを介して通信することができる。
【０１０１】
ルータ１０ａはＣＥネットワーク８０ａに接続されており、ルータ１０ｂはＣＥネットワーク８０ｂに接続されているとする。また、ＣＥネットワーク８０ｃはルータ１０ｄに接続されている。Ｌ２スイッチ１５ａのポート＃１はルータ１０ａ、ポート＃２はルータ１０ｂ、ポート＃３は転送装置３０ａ、ポート＃４は転送装置３０ｂに接続されている。
【０１０２】
転送装置３０ａと転送装置３０ｂは、ＶＲＲＰグループに含まれている。転送装置３０ａのポートＰｏ１は、Ｌ２スイッチ１５ａ、ポートＰｏ２はＬ２スイッチ１５ｂ、ポートＰｏ３はＬ２スイッチ１５ｄに接続されている。転送装置３０ｂも、転送装置３０ａと同様にＬ２スイッチ１５ａ、１５ｂ、１５ｄに接続されている。
【０１０３】
図２４の例では、転送装置３０ａがマスタ側の転送装置３０として動作しており、転送装置３０ｂがバックアップ側の転送装置３０として動作している。転送装置３０ａは正常に動作しているので、矢印Ａ６１に示すように、転送装置３０ａから転送装置３０ｂに対して、定期的にＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔが送信されている。さらに、制御装置２０とマスタ側の転送装置３０ａの間では、通信セッションが確立されており、確立された通信セッションを介して処理ルールや制御メッセージが送受信されているとする。制御装置２０と転送装置３０ａの間で確立された通信セッションによる通信は、経路Ｒ１に示す経路で行われている。
【０１０４】
また、ネットワーク中のルータ１０や転送装置３０ａには、制御装置２０からパケットの処理ルールが通知されているため、ＣＥネットワーク８０間でのパケットの送受信が可能な状態であるとする。例えば、ＣＥネットワーク８０ａ中の装置がＣＥネットワーク８０ｃ中の装置にパケットを送信する場合、経路Ｒ２に示す通信経路が使用されるとする。
【０１０５】
図２５は、各装置が保持する情報の例を説明する図である。図２４のシステムにおいて、転送装置３０ａはテーブルＴ１１に示す情報を保持しており、転送装置３０ｂはテーブルＴ１２に示す情報を保持しているものとする。一方、ルータ１０ａのＩＰアドレスは１９２．１６８．１０．１に設定されているため、ルータ１０ａは対するＩＰアドレスの設定情報としてテーブルＴ１３を保持している。また、ルータ１０ｂのＩＰアドレスは１９２．１６８．１０．２に設定されているため、ルータ１０ｂはＩＰアドレスの設定情報としてテーブルＴ１４を保持している。さらに、Ｌ２スイッチ１５ａは、ＡＲＰテーブルとしてテーブルＴ１５の情報を保持しており、ＭＡＣアドレステーブルとしてテーブルＴ１６の情報を保持しているものとする。
【０１０６】
図２５に示す各情報が使用される場合、転送装置３０ａに設定されている優先度が２００であるのに対して、転送装置３０ｂの優先度が１００であることから、転送装置３０ａがマスタ側の転送装置３０として動作する。さらに、転送装置３０ａのポートＰｏ１を含むインタフェースに割り当てられているＩＰアドレスは１９２．１６８．１．１０であり、ＭＡＣアドレスは４２−５４−００−Ｆ３−Ｆ４−Ａ１である。一方、転送装置３０ｂのポートＰｏ１を含むインタフェースに割り当てられているＩＰアドレスは１９２．１６８．１．１１であり、ＭＡＣアドレスは４２−５４−００−Ｆ３−Ｆ４−Ａ２である。また、転送装置３０ａと転送装置３０ｂで形成しているＶＲＲＰグループの通信で、Ｌ２スイッチ１５ａから受信したパケットの処理に使用される仮想ＩＰアドレスは１９２．１６８．１．１であり、仮想ＭＡＣアドレスは００−００−５Ｅ−００−０１−０１であるものとする。図２４、図２５を参照しながら説明している状況では、転送装置３０ａがマスタ側として動作しているので、転送装置３０ａは、ＶＲＲＰグループの通信で使用される仮想ＩＰアドレスや、仮想ＭＡＣアドレスが宛先に設定されたパケットを受信する。このため、処理対象のアドレスとして、仮想ＩＰアドレス＝１９２．１６８．１．１や、仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１がテーブルＴ１１に設定されている。
【０１０７】
テーブルＴ１５では、仮想ＩＰアドレス＝１９２．１６８．１．１と仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１が対応付けられている。さらに、テーブルＴ１６では、仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１がポート＃３に対応付けられている。このため、転送装置３０ａと転送装置３０ｂのポートＰｏ１の組み合わせで使用される仮想ＭＡＣアドレス宛のパケットは、Ｌ２スイッチ１５ａのポート＃３から出力される。このため、仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１が宛先ＭＡＣアドレスに設定されているパケットは、Ｌ２スイッチ１５ａから転送装置３０ａに出力される。
【０１０８】
例えば、ＣＥネットワーク８０ａ中の装置からＣＥネットワーク８０ｃ中の装置に送信されるパケットが経路Ｒ２に沿って転送される場合、パケットはルータ１０ａからＣＥネットワーク８０ｃに向けて転送される。このとき、ルータ１０ａは、ルーティングテーブルを用いて、転送先のＭＡＣアドレスを転送装置３０ａと転送装置３０ｂのポートＰｏ１の組み合わせで使用される仮想ＭＡＣアドレスに設定する。従って、転送対象のパケットの宛先ＭＡＣアドレスは、仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１に設定される。従って、テーブルＴ１６に基づいて、ＣＥネットワーク８０ｃ中の装置宛てのパケットは、Ｌ２スイッチ１５ａから転送装置３０ａに向けて出力される。
【０１０９】
図２６は、マスタ側の転送装置３０ａで回線の障害が検出された場合の例を説明する図である。転送装置３０ａ中の検出部４５ａは、ルータ１０ａとの間の疎通確認に失敗したとする。すると、検出部４５ａは、ルータ１０ａとの間の回線に障害が発生したと判定する。また、同期処理部５３ａは、転送装置３０ｂに対するＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信を停止する。
【０１１０】
転送装置３０ｂ中の検出部５１ｂは、所定の期間以上にわたって、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを受信しない場合、転送装置３０ａか転送装置３０ａを介した通信経路での障害が発生したと判定する。検出部５１ｂは、制御装置２０との通信の開始を切り替え部５２ｂに要求する。
【０１１１】
切り替え部５２ｂは、転送装置３０ｂがマスタ側の転送装置３０として動作するために、ＶＲＲＰグループに割り当てられている仮想ＩＰアドレスと仮想ＭＡＣアドレスとを、転送装置３０ｂで処理するアドレスとして設定する。なお、この設定は、転送装置３０ｂが備えている各インタフェースに対して行われる。さらに、切り替え部５２ｂは、Ｌ２スイッチ１５ａに対して、ＧＡＲＰを送信する。このとき、切り替え部５２ｂは、ポートＰ１を含むインタフェースで処理する仮想ＩＰアドレス１９２．１６８．１．１と仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１を用いて、ＧＡＲＰを送信する。
【０１１２】
図２７は、Ｌ２スイッチ１５ａが保持する情報の例を説明する図である。Ｌ２スイッチ１５ａは、仮想ＩＰアドレス＝１９２．１６８．１．１と仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１を含むＧＡＲＰを、Ｐｏｒｔ＃４から受信する。このため、Ｌ２スイッチ１５ａは、図２７のテーブルＴ２２のＭＡＣアドレステーブルに示すように、ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１とポート＃４を対応付ける。なお、ポート＃４を介して、Ｌ２スイッチ１５ａがＧＡＲＰを受信しても、ＧＡＲＰで通知されたＩＰアドレスとＭＡＣアドレスの組合せはＡＲＰテーブルに登録中である。このため、ＡＲＰテーブルの情報は、図２７のテーブルＴ２１に示すように、マスタ側の転送装置３０の切り替え前の状態（図２５のテーブルＴ１５）から変更されない。
【０１１３】
その後、切り替え部５２ｂは、転送装置３０ａと制御装置２０との間の通信に使用されていた通信セッションを用いて、制御装置２０にＥｃｈｏ  ＲｅｐｌｙメッセージやＰｏｒｔ  Ｓｔａｔｕｓメッセージなどのパケットを送信する。
【０１１４】
図２８は、ポート情報テーブル６２の例を説明する図である。切り替え部５２ｂは、Ｐｏｒｔ  Ｓｔａｔｕｓメッセージを生成するために、ポート情報テーブル６２ｂを参照する。図２８に示す例では、ポート情報テーブル６２は、ポート番号、ＭＡＣアドレス、ポート状態が対応付けられている。ＭＡＣアドレスは、エントリ中のポート番号で識別されるポートに割り当てられているＭＡＣアドレスである。ポート状態は、エントリ中のポート番号で識別されるポートの状態を示す。図２８の例では、ポート番号＝４のポートに障害が発生しているが、ポート番号＝１〜３、５、６のポートでは、障害が発生していない。なお、転送装置３０ｂ中のポート番号＝４〜６のポートを用いた接続は図示されていないが、ポート番号＝４〜６のポートは使用されていても使用されていなくてもよい。
【０１１５】
図２９は、切り替え処理が完了したときの状態の例を説明する図である。転送装置３０ｂと制御装置２０との間の通信は、転送装置３０ａと制御装置２０の間の通信に使用されていた通信セッションを用いて行われるが、通信経路は、転送装置３０ｂのポートＰｏ３と制御装置２０を結ぶ経路である。このため、図２９の経路Ｒ３に示す経路を用いて通信が行われる。なお、切り替え処理が完了した後に使用される通信セッションの経路を用いて、Ｅｃｈｏ  Ｒｅｐｌｙメッセージなどのパケットも制御装置２０に送信されるので、図２９では、これらのパケットが送信される様子も図示している。
【０１１６】
経路Ｒ４は、転送装置３０ａから転送装置３０ｂへの切り替え処理の後に、ＣＥネットワーク８０ａ中の装置がＣＥネットワーク８０ｃ中の装置と通信する際に使用される通信経路の例である。図２７のテーブルＴ２２に示すように、仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１がポート＃４に対応付けられている。このため、仮想ＭＡＣアドレス＝００−００−５Ｅ−００−０１−０１宛のパケットは、Ｌ２スイッチ１５ａのポート＃４から出力される。なお、ルータ１０ａでのパケットの転送処理は転送装置３０の切り替えによって変更されないので、ＣＥネットワーク８０ｃ中の装置に送信されるパケットの宛先ＭＡＣアドレスは、００−００−５Ｅ−００−０１−０１に設定される。従って、テーブルＴ２２に基づいて、ＣＥネットワーク８０ｃ中の装置宛てのパケットは、Ｌ２スイッチ１５ａから転送装置３０ｂに出力される。
【０１１７】
図３０は、マスタ側の転送装置３０ａで障害が発生した場合の例を説明する図である。転送装置３０ａで障害が発生すると、同期処理部５３ａは、転送装置３０ｂに対するＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの送信を停止する。
【０１１８】
転送装置３０ｂ中の検出部５１ｂは、所定の期間以上にわたって、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔを受信しない場合、転送装置３０ａか転送装置３０ａを介した通信経路での障害が発生したと判定する。すると、図２６〜図２９を参照しながら説明した処理と同様の処理により、マスタ側として稼働する転送装置３０が転送装置３０ａから転送装置３０ｂに切り替えられる。
【０１１９】
図３１は、切り替え処理が完了したときの状態の例を説明する図である。転送装置３０ｂと制御装置２０との間の通信は、転送装置３０ａと制御装置２０の間の通信に使用されていた通信セッションを用いて行われるが、通信経路は、転送装置３０ｂのポートＰｏ３と制御装置２０を結ぶ経路である。このため、図３１の経路Ｒ３に示す経路を用いて、制御装置２０と転送装置３０ｂの間の通信が行われる。なお、切り替え処理が完了した後に使用される通信セッションの経路Ｒ３を用いて、Ｅｃｈｏ  Ｒｅｐｌｙメッセージなどのパケットも制御装置２０に送信されるので、図３１には、これらのパケットの送信される様子も図示している。
【０１２０】
経路Ｒ４は、マスタ側として稼働する転送装置３０が転送装置３０ａから転送装置３０ｂに切り替えられた後に、ＣＥネットワーク８０ａ中の装置からＣＥネットワーク８０ｃ中の装置に送信されたパケットが転送される経路を示している。なお、経路Ｒ４は、図２９を参照しながら説明した処理により得られる。
【０１２１】
以上説明したように、マスタ側の転送装置３０の故障や回線での障害の発生による切り替えが発生した場合でも、バックアップ側の転送装置３０ｂは、マスタ側の転送装置３０ａが制御装置２０との間で確立した通信セッションを用いる。従って、制御装置２０では、ＶＲＲＰグループ中の制御対象が転送装置３０ａから転送装置３０ｂに切り替わっていることを認識しない。このため、制御装置２０は、切り替え処理の後に転送装置３０ｂに対して、既に転送装置３０ａに送信済みの処理ルールを送り直さずに済み、制御装置２０と転送装置３０との間の無駄な通信が削減される。
【０１２２】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１２３】
バックアップ側の転送装置３０中の検出部５１は、マスタ側の転送装置３０からパケットを受信する時間間隔を求めるとともに、閾値と比較してもよい。ここで、マスタ側から受信するパケットは、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔであってもよく、また、ＦｌｏｗＭｏｄなどの処理ルールの通知に使用されるパケットであっても良い。さらに、パケットを受信する時間間隔と比較する閾値は、例えば、ＶＲＲＰ  Ａｄｖｅｒｔｉｓｅｍｅｎｔの受信を待ち合わせる期間の所定の倍数分などに設定され得る。閾値で表される所定の期間以上にわたって、パケットをマスタ側から受信していない場合、検出部５１は、マスタ側の転送装置３０での障害が発生したか、マスタ側の転送装置３０に接続された回線での障害が発生していると判定できる。そこで、所定の期間以上にわたって、パケットをマスタ側から受信していない場合、接続処理部５４は、マスタ側の転送装置３０が制御装置２０との通信に使用している通信セッションを用いて、制御装置２０との間の通信を開始する。
【０１２４】
図１３を参照しながら、バックアップ側の転送装置３０が、フローテーブル６４やグループテーブル６５を更新する際に更新情報を記憶する場合の例を説明したが、バックアップ側の転送装置３０は更新情報を記憶しなくてもよい。このように変形される場合、テーブル情報処理部４２は、自装置がバックアップ側とマスタ側のいずれとして動作しているかを、切り替え部５２などから取得する。テーブル情報処理部４２は、自装置がバックアップ側として動作している場合、更新情報を一時的に記憶しない。したがって、図１３のうち、ステップＳ６５、Ｓ６７、Ｓ６９は省略されてもよい。
【０１２５】
以上の説明で用いたメッセージ中の情報要素やテーブル中の情報要素は一例である。メッセージ中の情報要素やテーブル中の情報要素は、実装に応じて任意に変更され得る。
【０１２６】
以上の説明では、転送装置３０の冗長化にＶＲＲＰが使用される場合を例としたが、転送装置３０の冗長化は他のプロトコルで行われても良い。また、ネットワークの制御に使用されるプロトコルもＯｐｅｎＦｌｏｗに限られない。さらに、死活監視や障害の検出に使用される制御情報の種類も変更され得る。すなわち、転送装置３０の切り替えにかかる時間が、制御装置２０とマスタ側の転送装置３０の間の死活監視でのタイムアウト検出にかかる時間よりも短ければ、使用されるプロトコルや制御パケットの種類等は、実装に応じて変更され得る。
【０１２７】
上述の実施形態に関し、さらに以下の付記を開示する。
（付記１）
制御装置で決定されたパケットの処理ルールに基づいて動作する第１および第２の転送装置を用いて冗長化されたネットワーク中で、前記第２の転送装置として動作する転送装置であって、
前記制御装置から前記第１の転送装置が受信した処理ルールと、前記第１の転送装置と前記制御装置との間の通信セッションの維持に使用される制御情報とを、前記第１の転送装置から取得する通信部と、
前記第１の転送装置から所定の期間以上、死活監視用の所定のパケットを受信しない場合、前記制御情報を用いて、前記通信セッションを介した前記制御装置との通信を開始する通信制御部と
を備えることを特徴とする転送装置。
（付記２）
前記第１の転送装置から所定の期間以上、前記死活監視用の所定のパケットを受信していないことを検出してから、前記通信制御部が前記通信セッションを介した前記制御装置との通信を開始するまでの期間である第１の期間は、前記制御装置が前記第１の転送装置と通信が可能であるかを判定するために送信するパケットに対する返信パケットを前記制御装置で待ち合わせる期間である第２の期間よりも短い
ことを特徴とする付記１に記載の転送装置。
（付記３）
前記第２の転送装置に接続された回線での通信障害を検出する検出部
をさらに備え、
前記通信制御部は、前記第２の転送装置が前記制御装置との間で前記通信セッションを維持している間、
前記検出部が前記回線での障害を検出していない場合、前記第１の転送装置に、前記第２の通信装置が正常に動作していることを通知する通知パケットを送信し、
前記回線での障害が検出されると、前記第１の転送装置への前記通知パケットの送信を中断する
ことを特徴とする付記１または２に記載の転送装置。
（付記４）
前記回線での障害が検出された後に、前記制御装置から前記第２の転送装置を介した通信が可能であるかの判定に使用される判定パケットを受信すると、前記通信部は、前記判定パケットに対する応答パケットを前記制御装置に送信する
ことを特徴とする付記３に記載の転送装置。
（付記５）
制御装置で決定されたパケットの処理ルールに基づいて動作する第１および第２の転送装置を用いて冗長化されたネットワーク中で、前記第２の転送装置として動作する転送装置が、
前記制御装置から前記第１の転送装置が受信した処理ルールと、前記第１の転送装置と前記制御装置との間の通信セッションの維持に使用される制御情報とを、前記第１の転送装置から取得し、
前記第１の転送装置から所定の期間以上、死活監視用の所定のパケットを受信しない場合、前記制御情報を用いて、前記通信セッションを介した前記制御装置との通信を開始する
ことを特徴とする転送方法。
（付記６）
前記第１の転送装置から所定の期間以上、前記死活監視用の所定のパケットを受信していないことを検出してから、前記第２の通信装置が前記通信セッションを介した前記制御装置との通信を開始するまでの期間である第１の期間は、前記制御装置が前記第１の転送装置と通信が可能であるかを判定するために送信するパケットに対する返信パケットを前記制御装置で待ち合わせる期間である第２の期間よりも短い
ことを特徴とする付記５に記載の転送方法。
（付記７）
前記第１の転送装置は、
前記第１の転送装置に接続された回線での通信障害を検出する処理を行い、
前記回線での障害を検出していない場合、前記第２の転送装置に、前記第１の通信装置が正常に動作していることを通知する通知パケットを送信し、
前記回線での障害を検出すると、前記第２の転送装置への前記通知パケットの送信を中断する
ことを特徴とする付記５または６に記載の転送方法。
（付記８）
前記第１の転送装置は、前記回線での障害を検出した後に、前記制御装置から前記第１の転送装置を介した通信が可能であるかの判定に使用される判定パケットを受信すると、前記判定パケットに対する応答パケットを前記制御装置に送信する
ことを特徴とする付記７に記載の転送方法。
（付記９）
ネットワーク中のパケットの転送処理を制御する制御装置と、
前記制御装置から受信した処理ルールを用いて受信パケットを処理する第１の転送装置と、
前記第１の転送装置のバックアップとして動作可能な第２の転送装置
を備え、
前記第２の転送装置は、
前記処理ルールと、前記第１の転送装置と前記制御装置との間の通信セッションの維持に使用される制御情報とを、前記第１の転送装置から取得し、
前記第１の転送装置から所定の期間以上、死活監視用の所定のパケットを受信しない場合、前記制御情報を用いて、前記通信セッションを介した前記制御装置との通信を開始する
ことを特徴とする転送システム。
（付記１０）
前記第１の転送装置から所定の期間以上、前記死活監視用の所定のパケットを受信していないことを検出してから、前記第２の通信装置が前記通信セッションを介した前記制御装置との通信を開始するまでの期間である第１の期間は、前記制御装置が前記第１の転送装置と通信が可能であるかを判定するために送信するパケットに対する返信パケットを前記制御装置で待ち合わせる期間である第２の期間よりも短い
ことを特徴とする付記９に記載の転送システム。
（付記１１）
前記第１の転送装置は、
前記第１の転送装置に接続された回線での通信障害を検出する処理を行い、
前記回線での障害を検出していない場合、前記第２の転送装置に、前記第１の通信装置が正常に動作していることを通知する通知パケットを送信し、
前記回線での障害を検出すると、前記第２の転送装置への前記通知パケットの送信を中断する
ことを特徴とする付記９または１０に記載の転送システム。
（付記１２）
前記第１の転送装置は、前記回線での障害を検出した後に、前記制御装置から前記第１の転送装置を介した通信が可能であるかの判定に使用される判定パケットを受信すると、前記判定パケットに対する応答パケットを前記制御装置に送信する
ことを特徴とする付記１１に記載の転送システム。
【符号の説明】
【０１２８】
５  端末
１０  ルータ
１５  Ｌ２スイッチ
２０  制御装置
３０  転送装置
３１  通信部
３２  送信部
３３  受信部
４０  制御部
４２  テーブル情報処理部
４３  転送処理部
４４  ハードウェア処理部
４５、５１  検出部
５０  通信制御部
５２  切り替え部
５３  同期処理部
５４  接続処理部
６０  記憶部
６１  制御情報テーブル
６２  ポート情報テーブル
６３  ＶＲＲＰ情報テーブル
６４  フローテーブル
６５  グループテーブル
８０  ＣＥネットワーク
１０１  プロセッサ
１０２  メモリ
１０３  記憶装置
１０４  スイッチ回路
１０５  インタフェース
【図１】
2017130852.tif 000003
【図２】
2017130852.tif 000004
【図３】
2017130852.tif 000005
【図４】
2017130852.tif 000006
【図５】
2017130852.tif 000007
【図６】
2017130852.tif 000008
【図７】
2017130852.tif 000009
【図８】
2017130852.tif 000010
【図９】
2017130852.tif 000011
【図１０】
2017130852.tif 000012
【図１１】
2017130852.tif 000013
【図１２】
2017130852.tif 000014
【図１３】
2017130852.tif 000015
【図１４】
2017130852.tif 000016
【図１５】
2017130852.tif 000017
【図１６】
2017130852.tif 000018
【図１７】
2017130852.tif 000019
【図１８】
2017130852.tif 000020
【図１９】
2017130852.tif 000021
【図２０】
2017130852.tif 000022
【図２１】
2017130852.tif 000023
【図２２】
2017130852.tif 000024
【図２３】
2017130852.tif 000025
【図２４】
2017130852.tif 000026
【図２５】
2017130852.tif 000027
【図２６】
2017130852.tif 000028
【図２７】
2017130852.tif 000029
【図２８】
2017130852.tif 000030
【図２９】
2017130852.tif 000031
【図３０】
2017130852.tif 000032
【図３１】
2017130852.tif 000033