図1は通信ネットワークの一例を示す構成図である。通信ネットワークには、通信システムの一例であるゲートウェイシステム9と、レイヤ2スイッチ(L2SW)3と、インターネットなどの公衆通信網4と、LAN(Local Area Network)5と、サーバ6と、端末装置7とが含まれる。
端末装置7は、例えばパーソナルコンピュータ、またはスマートフォンなどの携帯型無線通信端末であり、LAN5に接続されている。携帯型無線通信端末の場合、LAN5として、無線LANが用いられる。端末装置7は、符号Rで示されるように、レイヤ2スイッチ3及びゲートウェイシステム9を介して、公衆通信網4に接続されたサーバ6との間でユーザパケットPKTを送受信する。なお、本実施例のパケットの形態としては、イーサネット(登録商標、以下同様)フレームを挙げるが、これに限定されず、IP(Internet Protocol)パケットであってもよい。
サーバ6は、公衆通信網4に接続されており、例えば、クラウドサービスのように、端末装置7と通信することにより、ユーザからの要求に応じて特定のサービスを提供する。なお、サーバ6は、公衆通信網4に限定されず、LAN5とは異なる他のLANに接続されてもよい。
レイヤ2スイッチ3は、端末装置7とサーバ6の通信を中継する。レイヤ2スイッチ3は、転送処理部30と、複数のポートV〜Yと、アドレス学習テーブル31とを有する。転送処理部30は、例えばCPU(Central Processing Unit)を駆動するプログラムによりCPUの機能として形成され、アドレス学習テーブル31はメモリなどの記憶手段により形成される。
ポートV〜Yは、他装置との間でパケットの送信及び受信の処理を行う。ポートX,Yは、光ファイバなどの伝送路を介してゲートウェイシステム9にそれぞれ接続されている。また、ポートVは公衆通信網4に接続され、ポートWはLAN5に接続されている。
転送処理部30は、ポートV〜Y間でパケットを交換することによりパケットを転送する。転送処理部30は、パケットを受信すると、全ポートV〜Yに送信することで(いわゆるフラッディング)、パケットの宛先アドレス(DA: Destination Address)とポートV〜Yの関係をアドレス学習テーブル31に登録する。
アドレス学習テーブル31には、ポートID(V〜Y)とMAC(Media Access Control)アドレス(DA)が対応付けられて登録されている。転送処理部30は、アドレス学習テーブル31に登録済みのパケットを受信すると、そのパケットのDAに対応するポートV〜Yからパケットを送信する。つまり、転送処理部30は、アドレス学習テーブル31に基づいてパケットの転送先のポートV〜Yを判定する。
転送処理部30は、ポートX,Yの一方を介してゲートウェイシステム9とパケットを送受信する。転送処理部30は、ポートWから入力されたユーザパケットPKTを、ポートX,Yの一方を介してゲートウェイシステム9に送信し、ポートX,Yの一方から入力された該ユーザパケットPKTを、ポートVからサーバ6に送信する。また、転送処理部30は、ポートVから入力されたユーザパケットPKTを、ポートX,Yの一方を介してゲートウェイシステム9に送信し、ポートX,Yの一方から入力された該ユーザパケットPKTを、ポートWから端末装置7に送信する。これにより、端末装置7とサーバ6の間において、ユーザパケットPKTが送受信される。
転送処理部30は、ポートX,Yのうち、後述するLLCパケット(LLC PKT)を受信したポートを、ゲートウェイシステム9との通信に用いる。より具体的には、転送処理部30は、ポートXからLLCパケットを受信した場合、ポートXを介してゲートウェイシステム9とユーザパケットPKTを送受信し、ポートYからLLCパケットを受信した場合、ポートYを介してゲートウェイシステム9とユーザパケットPKTを送受信する。
ゲートウェイシステム9は、冗長構成された一組のゲートウェイ(GW)装置(#0、#1)1と、管理サーバ2とを有する。一組のゲートウェイ装置(#0、#1)1は、対向装置の一例であるレイヤ2スイッチ3と通信する。
ゲートウェイ装置(#0、#1)1は、公衆通信網4とLAN5の間においてプロトコル変換などを行う。ゲートウェイ装置(#0、#1)1は、クラスタペアとして構成され、レイヤ2スイッチ3から仮想的に単一の装置として扱われるように、個別のアドレスとは異なる共通の代表アドレス「a:b:c:d:e:f」(a〜f:16進数表記の00〜FF)が割り当てられている。
一方のゲートウェイ装置(#0)1は、レイヤ2スイッチ3のポートXと接続され、他方のゲートウェイ装置(#1)1は、レイヤ2スイッチ3のポートYと接続されている。これにより、一組のゲートウェイ装置(#0、#1)1は、別々の通信経路を介して、共通のレイヤ2スイッチ3と通信する。
管理サーバ2は、制御装置の一例であり、一組のゲートウェイ装置(#0、#1)1を制御する。より具体的には、管理サーバ2は、例えば、ゲートウェイ装置(#0)1から障害の発生(「障害」参照)が通知(「障害発生通知」参照)されたとき、各ゲートウェイ装置(#0、#1)1に運用系または予備系への切り替えを指示する(「切替指示」参照)。ゲートウェイ装置(#0、#1)1は、運用系の場合、レイヤ2スイッチ3との間で通信が可能であるが、予備系の場合、通信が不可能である。
図2(a)には、ゲートウェイ装置1の切り替え制御の比較例が示されている。なお、本例は、ゲートウェイ装置(#0)1に障害が発生した場合を示すが、他方のゲートウェイ装置(#1)1に障害が発生した場合も、ゲートウェイ装置(#0、#1)1を入れ替えた上で同様の制御が行われる。
図2(a)は、切り替え制御の時刻T0〜T2ごとに、切り替え後のゲートウェイ装置(#0、#1)1の動作状態(つまり、運用系または予備系)を示す。初期の時刻T0において、ゲートウェイ装置(#0)1は運用系に設定され、ゲートウェイ装置(#1)1は予備系に設定されている。このため、ゲートウェイ装置(#0)1のみが、レイヤ2スイッチ3との間で通信できる。
管理サーバ2は、時刻T1において、運用系のゲートウェイ装置(#0)1から障害通知を受信すると、ゲートウェイ装置(#0)1に予備系への切り替えを指示する。その後、管理サーバ2は、時刻T2において、予備系のゲートウェイ装置(#1)1に運用系への切り替えを指示する。これにより、ゲートウェイ装置(#1)1が、障害のゲートウェイ装置(#0)1に代わり、レイヤ2スイッチ3との間で通信を継続できる。
しかし、本例では、時刻T1において、2台の予備系のゲートウェイ装置(#0、#1)1が同時に存在するため、レイヤ2スイッチ3との間で通信が瞬断する。そこで、実施例の切り替え制御では、予備系のゲートウェイ装置(#1)1に運用系への切り替えを指示した後、運用系のゲートウェイ装置(#0)1に予備系への切り替えを指示する。
図2(b)は、切り替え制御の時刻T0〜T2ごとに、切り替え後のゲートウェイ装置(#0、#1)1の動作状態を示す。初期の時刻T0において、ゲートウェイ装置(#0)1は運用系に設定され、ゲートウェイ装置(#1)1は予備系に設定されている。
管理サーバ2は、時刻T1において、運用系のゲートウェイ装置(#0)1から障害通知を受信すると、比較例とは異なり、予備系のゲートウェイ装置(#1)1に運用系への切り替えを指示する。その後、管理サーバ2は、時刻T2において、運用系のゲートウェイ装置(#0)1に予備系への切り替えを指示する。これにより、ゲートウェイ装置(#1)1が、障害のゲートウェイ装置(#0)1に代わり、レイヤ2スイッチ3との間で通信を継続できる。
本例では、時刻T1において、2台のゲートウェイ装置(#0、#1)1が同時に運用系となるように制御されるため、レイヤ2スイッチ3との間の通信の瞬断が防止される。
再び図1を参照すると、運用系のゲートウェイ装置1は、通知パケットの一例であるLLCパケットをレイヤ2スイッチ3に定期的に送信する。これにより、ゲートウェイ装置1は、レイヤ2スイッチ3に自装置が運用系であることを通知する。なお、レイヤ2スイッチ3は、受信したLLCパケットを受信元以外のポートにフラッディングするため、一方のゲートウェイ装置1は、他方のゲートウェイ装置1が送信したLLCパケットを受信することができる。
レイヤ2スイッチ3は、上述したように、LLCパケットを受信したポートX,Yをゲートウェイシステム9との通信に用いる。このため、レイヤ2スイッチ3は、ポートXからLLCパケットを受信した場合、ゲートウェイ装置(#0)1と通信し、ポートYからLLCパケットを受信した場合、ゲートウェイ装置(#1)1と通信する。これにより、レイヤ2スイッチ3は、2台のゲートウェイ装置(#0、#1)1のうち、運用系のゲートウェイ装置1と通信する。
しかし、管理サーバ2は、図2(b)を参照して述べたように、2台のゲートウェイ装置(#0、#1)1が一時的にともに運用系となるように切り替え制御を行う。このため、ゲートウェイ装置(#0、#1)1の一方のLLCパケットの送信を停止しない限り、両方のゲートウェイ装置(#0、#1)1からレイヤ2スイッチ3にLLCパケットが送信される。
この場合、レイヤ2スイッチ3は、サーバ6または端末装置7から受信したゲートウェイ装置1宛てのユーザパケットPKTの送信ポートを、ポートXとポートYの間で頻繁に切り替えることになる。より具体的には、転送処理部30は、符号pで示されるように、アドレス学習テーブル31において、ゲートウェイ装置1のMACアドレス「a:b:c:d:e:f」に対応するポートIDを、XまたはYに頻繁に書き換える。
このため、2台の運用系のゲートウェイ装置1が同時に存在する間、レイヤ2スイッチ3は、各ゲートウェイ装置1からLLCパケットを定期的に受信し、その受信のたびに、通信に使用するポートを切り替える。したがって、ゲートウェイシステム9とレイヤ2スイッチ3の間の通信において、ユーザパケットPKTの損失、送信順序の逆転、及びジッタの増加などが発生し、通信品質が低下する。
そこで、実施例のゲートウェイ装置(#0、#1)1は、LLCパケットにより運用系への切り替え時刻を互いに通知して比較し、時刻の早いゲートウェイ装置1が、レイヤ2スイッチ3へのLLCパケットの送信を停止した後、予備系に切り替わることで、通信品質の低下が防止される。
例えば、ゲートウェイ装置(#0)1に障害が発生した場合、管理サーバ2は、ゲートウェイ装置(#0)1からの障害通知を受信して、他方のゲートウェイ装置(#1)1に予備系から運用系への切り替えを指示する(図2(b)の時刻T2参照)。このため、各ゲートウェイ装置(#0、#1)1は、運用系となるので、運用系に切り替わった時刻を含むLLCパケットを生成しレイヤ2スイッチ3に送信する。
各ゲートウェイ装置(#0、#1)1から送信されたLLCパケットは、レイヤ2スイッチ3を介して他方のゲートウェイ装置(#1、#0)1で受信される。各ゲートウェイ装置(#0、#1)1は、他方のゲートウェイ装置(#1、#0)1から受信したLLCパケットから時刻を取得して、自装置の時刻と比較する。
各ゲートウェイ装置(#0、#1)1は、比較の結果、自装置の時刻が他方のゲートウェイ装置(#1、#0)1の時刻より早い場合、LLCパケットの送信を停止し、その後、予備系に切り替わる。また、各ゲートウェイ装置(#0、#1)1は、自装置の時刻が他方のゲートウェイ装置(#1、#0)1の時刻より遅い場合、LLCパケットの送信を維持する。このため、レイヤ2スイッチ3において、ユーザパケットPKTの送信ポートの頻繁な切り替えが防止されるので、通信品質の低下が防止される。
図3はLLCパケットの一例を示す構成図である。図3において、「Byte」は、LLCパケット内のバイト位置を示し、「Bit」は、各バイト内のビット位置を示す。
LLCパケットは、宛先アドレスのDAと、送信元アドレスのSA(Source Address)と、パケット長のLENGTHと、DSAP(Destination Service Access Point)と、SSAP(Source Service Access Point)と、Controlと、切り替え時刻と、識別番号とを含む。なお、「−」は未使用領域を示す。
DAは、所定のMACアドレス「01:00:5e:00:00:00」であり、SAは、ゲートウェイ装置1の代表アドレス「a:b:c:d:e:f」である。DSAPは、宛先のサービスを示し、例えば0x00(0xは16進数表記を示す。以下同様。)に設定される。SSAPは、送信元のサービスを示し、例えば0x00に設定される。また、Controlは、制御情報であり、0xe3に設定される。
切り替え時刻は、LLCパケットの送信元のゲートウェイ装置1が運用系に切り替わった時刻を示す。識別番号は、ゲートウェイ装置1を識別するための番号(#0、#1)を示し、自装置以外からのLLCパケットの識別に使用される。
このように、LLCパケットには、送信元のゲートウェイ装置1が運用系に切り替わった時刻が含まれているため、各ゲートウェイ装置1は、他方のゲートウェイ装置1からLLCパケットを受信することで、そのゲートウェイ装置1が運用系に切り替わった時刻を検出できる。次に、管理サーバ2及びゲートウェイ装置1の構成を説明する。
図4は管理サーバ2の一例を示す構成図である。管理サーバ2は、CPU20、ROM(Read Only Memory)21、RAM(Random Access Memory)22、不揮発性メモリ23、及び複数の通信ポート24を有する。CPU20は、互いに信号の入出力ができるように、ROM21、RAM22、不揮発性メモリ23、複数の通信ポート24と、データバス25を介して接続されている。
ROM21は、CPU20を駆動するプログラムが格納されている。RAM22は、CPU20のワーキングメモリとして機能する。通信ポート24は、例えばネットワークインターフェースカードであり、各ゲートウェイ装置1との間でそれぞれ通信を行う。
CPU20は、ROM21からプログラムを読み込むと、機能として、障害通知処理部201及び切り替え処理部202が形成される。また、不揮発性メモリ23は、例えばフラッシュメモリであり、装置管理テーブル230が記憶されている。装置管理テーブル230には、クラスタペアとして冗長構成されたゲートウェイ装置1の識別番号(#0、#1)が登録されている。
障害通知処理部201は、障害が発生したゲートウェイ装置1から、通信ポート24を介して障害通知を受信する。障害通知処理部201は、障害通知の送信元のゲートウェイ装置1の識別番号を切り替え処理部202に通知する。
切り替え処理部202は、障害通知を送信したゲートウェイ装置1の識別番号に基づき、装置管理テーブル230から、そのゲートウェイ装置1とクラスタペアを構成する他のゲートウェイ装置1の識別番号を取得する。切り替え処理部202は、図2(b)に示されるように各ゲートウェイ装置1に切り替えを指示する。
図5はゲートウェイ装置1の一例を示す構成図である。ゲートウェイ装置1は、CPU10、ROM11、RAM12、不揮発性メモリ13、及び複数の通信ポート14を有する。CPU10は、互いに信号の入出力ができるように、ROM11、RAM12、不揮発性メモリ13、複数の通信ポート14と、データバス15を介して接続されている。
ROM11は、CPU10を駆動するプログラムが格納されている。RAM12は、CPU10のワーキングメモリとして機能する。通信ポート14は、例えばネットワークインターフェースカードであり、管理サーバ2や他方のゲートウェイ装置1との間でそれぞれ通信を行う。
CPU10は、ROM11からプログラムを読み込むと、機能として、通信処理部101、切り替え部102、切り替え時刻取得部103、LLCパケット生成部104、LLCパケット終端部105、送信制御部106、及び障害通知部107が形成される。また、不揮発性メモリ13は、例えばフラッシュメモリであり、装置状態情報130、アドレス情報131、識別番号132、切り替え時刻情報133、及び送信可否フラグ134が記憶されている。
装置状態情報130は、自装置が運用系及び予備系の何れの動作状態であるのかを示し、切り替え部102により設定及び更新される。アドレス情報131は、クラスタペアの代表アドレス「a:b:c:d:e:f」を示し、例えば管理サーバ2から予め設定される。識別番号は、個々のゲートウェイ装置1の固有番号であり、例えば製造時に設定される。
切り替え時刻情報133は、自装置が運用系に切り替わった時刻を示し、切り替え時刻取得部103により書き込まれる。送信可否フラグ134は、LLCパケットの送信可否(‘1’:送信可能、、‘0’:送信不可)を示し、送信制御部106により設定される。
通信処理部101は、レイヤ2スイッチ3から通信ポート14を介して受信したユーザパケットPKTの送受信処理を行う。通信処理部101は、公衆通信網4とLAN5の間のプロトコル変換などを行う。通信処理部101は、装置状態情報130が運用系を示す場合、上記の通信処理を実行するが、装置状態情報130が予備系を示す場合、通信処理の実行を中止する。
切り替え部102は、管理サーバ2からの制御に従い、自装置を運用系及び予備系の間で切り替える。切り替え部102は、切り替え後の自装置の動作状態に応じて装置状態情報130を更新する。
切り替え時刻取得部103は、第1取得部の一例であり、自装置が運用系に切り替えられたときの時刻t1(第1時刻)を取得する。時刻は、例えばCPU10を駆動するプログラムのOS(Operating System)などから取得される。切り替え時刻取得部103は、取得した時刻t1を示す切り替え時刻情報133を書き込む。
LLCパケット生成部104は、自装置が運用系である場合、切り替え時刻情報133が示す時刻t1を含むLLCパケット(第1通知パケット)を生成する。LLCパケット生成部104は、切り替え時刻情報133、アドレス情報131、及び識別番号132を不揮発性メモリ13から読み出して、LLCパケットを生成する。これにより、LLCパケット生成部104は、自装置と他方のゲートウェイ装置1に設定された共通の代表アドレスを送信元とし、自装置の識別番号132を含むLLCパケットを生成する。
LLCパケット生成部104は、送信部の一例であり、生成したLLCパケットを、通信ポート14を介してレイヤ2スイッチ3に送信する。なお、LLCパケット生成部104は、装置状態情報130に基づき自装置の動作状態(運用系または予備系)を判定する。
LLCパケット終端部105は、第2取得部の一例であり、他方のゲートウェイ装置1からレイヤ2スイッチ3を介してLLCパケット(第2通知パケット)を受信し、そのLLCパケットから切り替え時刻t2(第2時刻)を取得する。すなわち、LLCパケット終端部105は、他方のゲートウェイ装置1からのLLCパケットを終端することで、そのゲートウェイ装置1が運用系に切り替わった時刻t2を取得する。LLCパケット終端部105は、取得した時刻t2を送信制御部106に出力する。
送信制御部106は、切り替え時刻情報133が示す時刻t1とLLCパケット終端部105が取得した時刻t2を比較する。送信制御部106は、制御部の一例であり、時刻t1と時刻t2を比較した結果、時刻t1が時刻t2より早い場合、LLCパケット生成部104にLLCパケットの送信を停止させる。これにより、レイヤ2スイッチ3が、ユーザパケットPKTを送信するポートを、ポートXとポートYの間で頻繁に切り替えることが防止されるので、通信品質の低下が防止される。
より具体的には、送信制御部106は、時刻t1が時刻t2より早い場合、送信可否フラグ134を「0」(送信不可)にセットする。LLCパケット生成部104は、送信可否フラグ134が「0」である場合、LLCパケットの生成及び送信を行わず、送信可否フラグ134が「1」である場合、LLCパケットの生成及び送信を行う。
切り替え部102は、送信制御部106がLLCパケット生成部104にLLCパケットの送信を停止させた後、管理サーバ2の制御に従い、自装置を予備系に切り替える。これにより、図2(b)に示された切り替え制御が完了し、ゲートウェイ装置1とレイヤ2スイッチ3の間の通信が継続される。また、障害通知部107は、自装置の障害を検出し、その障害を通知する障害通知を生成して、通信ポート14を介して管理サーバ2に送信する。次に、ゲートウェイ装置1の各処理を説明する。
図6は運用系への切り替え時刻の取得処理の一例を示すフローチャートである。本処理は、例えば一定の時間周期で行われる。
切り替え時刻取得部103は、不揮発性メモリ13から装置状態情報130を読み出す(ステップSt1)。次に、切り替え時刻取得部103は、装置状態情報130に基づき、自装置が予備系から運用系に切り替えられたか否かを判定する(ステップSt2)。切り替え時刻取得部103は、例えば、装置状態情報130を読み出すたびに保持しておき、前回保持した装置状態情報130と比較することにより、自装置が予備系から運用系に切り替えられたか否かを判定する。
切り替え時刻取得部103は、自装置が予備系から運用系に切り替えられたと判定した場合(ステップSt2のYes)、時刻t1を取得する(ステップSt3)。切り替え時刻t1は、OSの時計機能などから取得される。次に、切り替え時刻取得部103は、取得した時刻t1を切り替え時刻取得部103として不揮発性メモリ13に書き込み(ステップSt4)、処理を終了する。
また、切り替え時刻取得部103は、自装置が予備系から運用系に切り替えられていないと判定した場合(ステップSt2のNo)、ステップSt3,St4の処理を行わずに、処理を終了する。このようにして、運用系への切り替え時刻の取得処理は行われる。
図7は、LLCパケットの送信処理の一例を示すフローチャートである。本処理は、例えば一定の時間周期で行われる。
LLCパケット生成部104は、不揮発性メモリ13から装置状態情報130を読み出す(ステップSt11)。次に、LLCパケット生成部104は、装置状態情報130に基づき、自装置が運用系であるか否かを判定する(ステップSt12)。LLCパケット生成部104は、自装置が予備系である場合(ステップSt12のNo)、処理を終了する。つまり、LLCパケット生成部104は、自装置が予備系である場合、LLCパケットの生成及び送信を行わない。
また、LLCパケット生成部104は、自装置が運用系である場合(ステップSt12のYes)、不揮発性メモリ13から送信可否フラグ134を読み出す(ステップSt13)。LLCパケット生成部104は、送信可否フラグ134が‘1’(送信可能)である場合(ステップSt14のYes)、送信周期の到来の有無を判定する(ステップSt15)。LLCパケット生成部104は、送信周期の到来を、例えばタイマ(カウンタ)により判定する。LLCパケット生成部104は、送信周期が到来していない場合(ステップSt15のNo)、処理を終了する。
LLCパケット生成部104は、送信周期が到来している場合(ステップSt15のYes)、不揮発性メモリ13から切り替え時刻情報133を読み出す(ステップSt16)。次に、LLCパケット生成部104は、不揮発性メモリ13から識別番号132を読み出す(ステップSt17)。
次に、LLCパケット生成部104は、読み出した切り替え時刻情報133の時刻t1及び識別番号132を含むLLCパケットを生成する(ステップSt18)。なお、LLCパケットのDAには、アドレス情報131が示す代表アドレスが挿入される。
次に、LLCパケット生成部104は、生成したLLCパケットを、通信ポート14を介してレイヤ2スイッチ3に送信し(ステップSt19)、処理を終了する。このように、LLCパケット生成部104は、送信可否フラグ134が‘1’である場合、LLCパケットの生成及び送信を行う。なお、LLCパケットは、レイヤ2スイッチ3を介して他方のゲートウェイ装置1にも送信される。
一方、送信可否フラグ134が‘0’(送信不可)である場合(ステップSt14のNo)、LLCパケット生成部104は、新たなLLCパケットの送信に備えて、送信可否フラグ134を‘1’にリセットし(ステップSt20)、処理を終了する。このように、LLCパケット生成部104は、送信可否フラグ134が‘0’である場合、LLCパケットの生成及び送信を行わない。このようにして、LLCパケットの送信処理は行われる。
図8は、LLCパケットの受信処理の一例を示すフローチャートである。本処理は、例えば一定の時間周期で行われる。
LLCパケット終端部105は、不揮発性メモリ13から装置状態情報130を読み出す(ステップSt31)。次に、LLCパケット終端部105は、自装置が運用系であるか否かを判定する(ステップSt32)。LLCパケット終端部105は、自装置が予備系である場合(ステップSt32のNo)、LLCパケットの送信が行われないため、処理を終了する。
また、LLCパケット終端部105は、自装置が運用系である場合(ステップSt32のYes)、通信ポート14のパケットの受信の有無を判定する(ステップSt33)。LLCパケット終端部105は、パケットの受信が無い場合(ステップSt33のNo)、処理を終了する。
LLCパケット終端部105は、パケットが受信された場合(ステップSt33のYes)、不揮発性メモリ13からアドレス情報131を読み出し(ステップSt34)、パケットの送信元アドレスであるSAが、アドレス情報131が示す代表アドレスに一致するか否かを判定する(ステップSt35)。LLCパケット終端部105は、パケットの送信元が代表アドレスに一致しない場合(ステップSt35のNo)、そのパケットはLLCパケットではないと判定し、処理を終了する。
すなわち、LLCパケット終端部105は、パケットの送信元のアドレス及び代表アドレスの一致を検出することにより、LLCパケットを識別する。このため、LLCパケット終端部105は、LLCパケットを容易に識別できる。
LLCパケット終端部105は、パケットの送信元が代表アドレスに一致した場合(ステップSt35のYes)、そのパケットはLLCパケットであると判定し、不揮発性メモリ13から識別番号132を読み出す(ステップSt36)。LLCパケット終端部105は、読み出した識別番号132が、LLCパケットに含まれる識別番号(図3参照)に一致するか否かを判定する(ステップSt37)。LLCパケット終端部105は、識別番号132が、LLCパケットに含まれる識別番号に一致した場合(ステップSt37のYes)、そのパケットは他方のゲートウェイ装置1から受信したLLCパケットではないと判定し、処理を終了する。
すなわち、LLCパケット終端部105は、LLCパケットに含まれる他方のゲートウェイ装置1の識別番号及び自装置の識別番号132の不一致を検出することにより、他方のゲートウェイ装置1からのLLCパケットを識別する。このため、LLCパケット終端部105は、他方のゲートウェイ装置1からのLLCパケットを容易に識別できる。
LLCパケット終端部105は、識別番号132、及びLLCパケットに含まれる識別番号が不一致である場合(ステップSt37のNo)、LLCパケットを受信する(ステップSt38)。次に、LLCパケット終端部105は、受信したLLCパケットから切り替え時刻(図3参照)、つまり他方のゲートウェイ装置1が運用系に切り替えられた時刻t2を取得する(ステップSt39)。次に、LLCパケット終端部105は、不揮発性メモリ13から切り替え時刻情報133、つまり自装置が運用系に切り替えられた時刻t1を読み出す(ステップSt40)。
次に、LLCパケット終端部105は、自装置の切り替え時刻t1と他方のゲートウェイ装置1の切り替え時刻t2を比較し、時刻t1が時刻t2より早いか否かを判定する(ステップSt41)。LLCパケット終端部105は、時刻t1が時刻t2より早い場合(ステップSt41のYes)、送信可否フラグ134を‘0’に設定して(ステップSt42)、処理を終了する。
このため、LLCパケット終端部105は、自装置が、他方のゲートウェイ装置1より先に運用系に切り替えられ、障害発生のために予備系に切り替えられる場合、LLCパケットの送信を停止する。このとき、ゲートウェイ装置1は、運用系であるため、LLCパケットの送信を停止する前まではレイヤ2スイッチ3と通信可能である。したがって、ゲートウェイ装置1とレイヤ2スイッチ3の間の通信が瞬断することはない。
また、LLCパケット終端部105は、時刻t1が時刻t2より遅い場合(ステップSt41のNo)、送信可否フラグ134を設定することなく、処理を終了する。この場合、送信可否フラグ134は‘1’であるため、LLCパケット生成部104は、LLCパケットの生成及び送信が可能である。このため、ゲートウェイ装置1は、他方のゲートウェイ装置1に代わり、レイヤ2スイッチ3と通信することが可能である。このようにして、LLCパケットの受信処理は行われる。
図9は、管理サーバ2とゲートウェイ装置1の通信の一例を示すシーケンス図である。初期状態において、ゲートウェイ装置(#0)1は運用系に設定され(符号S1参照)、ゲートウェイ装置(#1)1は予備系に設定される(符号S2参照)。
ゲートウェイ装置(#0)1は、自装置が運用系に切り替えられた時刻t1(つまり設定された時刻)を含むLLCパケットを、定期的にレイヤ2スイッチ3に送信する。LLCパケットは、レイヤ2スイッチ3を介して他方のゲートウェイ装置(#1)1にも送信される。ゲートウェイ装置(#0)1は、障害が発生すると(符号S3参照)、障害通知を管理サーバ2に送信する。
管理サーバ2は、ゲートウェイ装置(#0)1から障害通知を受信すると、他方のゲートウェイ装置(#1)1に、運用系への切り替え指示を送信する。ゲートウェイ装置(#1)1は、管理サーバ2から切り替え指示を受信すると、時刻t2において運用系に切り替わる(符号S4参照)。これにより、各ゲートウェイ装置(#0、#1)1は、運用系となるため、レイヤ2スイッチ3と通信が可能である。
ゲートウェイ装置(#1)1は、自装置が運用系に切り替えられた時刻t2を含むLLCパケットを、定期的にレイヤ2スイッチ3に送信する。LLCパケットは、レイヤ2スイッチ3を介して他方のゲートウェイ装置(#0)1にも送信される。ゲートウェイ装置(#0)1は、他方のゲートウェイ装置(#1)1からLLCパケットを受信すると、LLCパケットから時刻t2を取得し、時刻t1と比較する(符号S5参照)。ゲートウェイ装置(#0)1は、時刻t1が時刻t2より早いことを判定し、LLCパケットの送信を停止する(符号S6参照)。
このように、ゲートウェイ装置(#0)1において、送信制御部106は、自装置が運用系に切り替えられたときの時刻t1が、他のゲートウェイ装置1が運用系に切り替えられたときの時刻t2より早い場合、LLCパケット生成部104にLLCパケットの送信を停止させる。このため、ゲートウェイ装置(#0)1は、他方のゲートウェイ装置(#1)1より前から運用系として動作している場合、LLCパケットの送信を停止して、他方のゲートウェイ装置(#1)1だけが、レイヤ2スイッチ3にLLCパケットを送信する。
したがって、レイヤ2スイッチ3は、冗長構成された2台のゲートウェイ装置1が同時に存在する場合でも、ゲートウェイ装置(#1)1のLLCパケットだけを受信するため、そのゲートウェイ装置(#1)1だけを運用系として認識する。これにより、レイヤ2スイッチ3が通信相手を2台のゲートウェイ装置(#0、#1)1の間で頻繁に切り替えることが防止されるため、通信品質の低下が防止される。
次に、管理サーバ2は、ゲートウェイ装置(#0)1に、予備系への切り替え指示を送信する。ゲートウェイ装置(#1)1は、管理サーバ2から切り替え指示を受信すると、予備系に切り替わる(符号S7参照)。このため、冗長構成された2台のゲートウェイ装置(#0、#1)1はそれぞれ運用系及び予備系となる。ゲートウェイ装置(#1)1は、運用系であるため、レイヤ2スイッチ3との通信を継続できる。
これまで述べたように、実施例に係る通信装置であるゲートウェイ装置1は、他のゲートウェイ装置1とともに冗長構成され、他のゲートウェイ装置1とは別の通信経路を介し共通のレイヤ2スイッチ3と通信する。ゲートウェイ装置1は、切り替え部102と、切り替え時刻取得部103と、LLCパケット生成部104と、LLCパケット終端部105と、送信制御部106とを有する。
切り替え部102は、自装置を運用系及び予備系の間で切り替える。切り替え時刻取得部103は、自装置が運用系に切り替えられたときの時刻t1を取得する。LLCパケット生成部104は、自装置が運用系である場合、時刻t1を含み、自装置が運用系であることを通知するLLCパケットを生成して、レイヤ2スイッチ3に送信する。
LLCパケット終端部105は、他のゲートウェイ装置1からレイヤ2スイッチ3を介してLLCパケットを受信し、LLCパケットから、他のゲートウェイ装置1が運用系に切り替えられたときの時刻t2を取得する。送信制御部106は、時刻t1と時刻t2を比較した結果、時刻t1が時刻t2より早い場合、LLCパケット生成部104にLLCパケットの送信を停止させる。
切り替え部102は、送信制御部106がLLCパケット生成部104にLLCパケットの送信を停止させた後、自装置を予備系に切り替える。
上記の構成によると、送信制御部106は、自装置が運用系に切り替えられたときの時刻t1が、他のゲートウェイ装置1が運用系に切り替えられたときの時刻t2より早い場合、LLCパケット生成部104にLLCパケットの送信を停止させる。このため、ゲートウェイ装置1は、他のゲートウェイ装置1より前から運用系として動作している場合、LLCパケットの送信を停止して、他のゲートウェイ装置1だけが、レイヤ2スイッチ3にLLCパケットを送信する。
したがって、レイヤ2スイッチ3は、冗長構成された2台のゲートウェイ装置1が同時に存在する場合でも、他のゲートウェイ装置1のLLCパケットだけを受信するため、そのゲートウェイ装置1だけを運用系として認識する。これにより、レイヤ2スイッチ3が通信相手を2台のゲートウェイ装置1の間で頻繁に切り替えることが防止されるため、通信品質の低下が防止される。
また、切り替え部102は、送信制御部106がLLCパケット生成部104にLLCパケットの送信を停止させた後、自装置を予備系に切り替えるため、冗長構成された2台のゲートウェイ装置1をそれぞれ運用系及び予備系とすることができる。
よって、実施例に係る通信装置によると、通信品質を低下させずに系切り替えを行うことができる。
また、実施例に係る通信システムであるゲートウェイシステム9は、別々の通信経路を介して共通のレイヤ2スイッチ3と通信する、冗長構成された一組のゲートウェイ装置1と、一組のゲートウェイ装置1を制御する管理サーバ2とを有する。一組のゲートウェイ装置1は、それぞれ、切り替え部102と、切り替え時刻取得部103と、LLCパケット生成部104と、LLCパケット終端部105と、送信制御部106とを有する。
切り替え部102は、自装置を運用系及び予備系の間で切り替える。切り替え時刻取得部103は、自装置が運用系に切り替えられたときの時刻t1を取得する。LLCパケット生成部104は、自装置が運用系である場合、時刻t1を含み、自装置が運用系であることを通知するLLCパケットを生成して、レイヤ2スイッチ3に送信する。
LLCパケット終端部105は、他のゲートウェイ装置1からレイヤ2スイッチ3を介してLLCパケットを受信し、LLCパケットから、他のゲートウェイ装置1が運用系に切り替えられたときの時刻t2を取得する。送信制御部106は、時刻t1と時刻t2を比較した結果、時刻t1が時刻t2より早い場合、LLCパケット生成部104にLLCパケットの送信を停止させる。
切り替え部102は、送信制御部106がLLCパケット生成部104にLLCパケットの送信を停止させた後、自装置を予備系に切り替える。
実施例に係る通信システムは、上記のゲートウェイ装置1と同様の構成を含むので、上述した内容と同様の作用効果を奏する。
また、実施例に係る通信方法は、冗長構成された一組のゲートウェイ装置1が、別々の通信経路を介して共通のレイヤ2スイッチ3と通信する通信方法において、一組のゲートウェイ装置1は、それぞれ、以下の処理を行う方法である。
処理(1):自装置が運用系に切り替えられたときの時刻t1を取得する。
処理(2):自装置が運用系である場合、時刻t1を含み、自装置が運用系であることを通知するLLCパケットを生成して、レイヤ2スイッチ3に送信する。
処理(3):他のゲートウェイ装置1からレイヤ2スイッチ3を介してLLCパケットを受信する。
処理(4):LLCパケットから、他のゲートウェイ装置1が運用系に切り替えられたときの時刻t2を取得する。
処理(5):時刻t1と時刻t2を比較した結果、時刻t1が時刻t2より早い場合、LLCパケット生成部104にLLCパケットの送信を停止させる。
処理(6):LLCパケットの送信を停止した後、自装置を予備系に切り替える。
実施例に係る通信方法は、上記のゲートウェイ装置1と同様の構成を含むので、上述した内容と同様の作用効果を奏する。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1) 他の通信装置とともに冗長構成され、前記他の通信装置とは別の通信経路を介し共通の対向装置と通信する通信装置において、
自装置を運用系及び予備系の間で切り替える切り替え部と、
自装置が運用系に切り替えられたときの第1時刻を取得する第1取得部と、
自装置が運用系である場合、前記第1時刻を含み、自装置が運用系であることを通知する第1通知パケットを生成して、前記対向装置に送信する送信部と、
前記他の通信装置から前記対向装置を介して第2通知パケットを受信し、前記第2通知パケットから、前記他の通信装置が運用系に切り替えられたときの第2時刻を取得する第2取得部と、
前記第1時刻と前記第2時刻を比較した結果、前記第1時刻が前記第2時刻より早い場合、前記送信部に前記第1通知パケットの送信を停止させる制御部とを有し、
前記切り替え部は、前記制御部が前記送信部に前記第1通知パケットの送信を停止させた後、自装置を予備系に切り替えることを特徴とする通信装置。
(付記2) 前記送信部は、自装置及び前記他の通信装置に設定された共通のアドレスを送信元として前記第1通知パケットを生成し、
前記第2取得部は、前記第2通知パケットの送信元のアドレス及び前記共通のアドレスの一致を検出することにより、前記第2通知パケットを識別することを特徴とする付記1に記載の通信装置。
(付記3) 前記送信部は、自装置の識別番号を含む前記第1通知パケットを生成し、
前記第2取得部は、前記第2通知パケットに含まれる前記他の通信装置の識別番号及び自装置の識別番号の不一致を検出することにより、前記第2通知パケットを識別することを特徴とする付記2に記載の通信装置。
(付記4) 別々の通信経路を介して共通の対向装置と通信する、冗長構成された一組の通信装置と、前記一組の通信装置を制御する制御装置とを有する通信システムにおいて、
前記一組の通信装置は、それぞれ、
前記制御装置からの制御に従い、自装置を運用系及び予備系の間で切り替える切り替え部と、
自装置が運用系に切り替えられたときの第1時刻を取得する第1取得部と、
自装置が運用系である場合、前記第1時刻を含み、自装置が運用系であることを通知する通知パケットを生成して、前記対向装置に送信する送信部と、
前記一組の通信装置の他方から前記対向装置を介して前記通知パケットを受信し、前記通知パケットから、前記一組の通信装置の他方が運用系に切り替えられたときの第2時刻を取得する第2取得部と、
前記第1時刻と前記第2時刻を比較した結果、前記第1時刻が前記第2時刻より早い場合、前記送信部に前記通知パケットの送信を停止させる制御部とを有し、
前記切り替え部は、前記制御部が前記送信部に前記通知パケットの送信を停止させた後、前記制御装置からの制御に従い、自装置を予備系に切り替えることを特徴とする通信システム。
(付記5) 前記送信部は、自装置及び前記他の通信装置に設定された共通のアドレスを送信元として前記第1通知パケットを生成し、
前記第2取得部は、前記第2通知パケットの送信元のアドレス及び前記共通のアドレスの一致を検出することにより、前記第2通知パケットを識別することを特徴とする付記4に記載の通信システム。
(付記6) 前記送信部は、自装置の識別番号を含む前記第1通知パケットを生成し、
前記第2取得部は、前記第2通知パケットに含まれる前記他の通信装置の識別番号及び自装置の識別番号の不一致を検出することにより、前記第2通知パケットを識別することを特徴とする付記5に記載の通信システム。
(付記7) 冗長構成された一組の通信装置が、別々の通信経路を介して共通の対向装置と通信する通信方法において、
前記一組の通信装置は、それぞれ、
自装置が運用系に切り替えられたときの第1時刻を取得し、
自装置が運用系である場合、前記第1時刻を含み、自装置が運用系であることを通知する通知パケットを生成して、前記対向装置に送信し、
前記一組の通信装置の他方から前記対向装置を介して前記通知パケットを受信し、
前記通知パケットから、前記一組の通信装置の他方が運用系に切り替えられたときの第2時刻を取得し、
前記第1時刻と前記第2時刻を比較した結果、前記第1時刻が前記第2時刻より早い場合、前記通知パケットの送信を停止し、
前記通知パケットの送信を停止した後、自装置を予備系に切り替えることを特徴とする通信方法。
(付記8) 前記一組の通信装置は、それぞれ、
前記一組の通信装置に設定された共通のアドレスを送信元として前記通知パケットを生成し、
前記通知パケットの送信元のアドレス及び前記共通のアドレスの一致を検出することにより、受信した前記通知パケットを識別することを特徴とする付記7に記載の通信方法。
(付記9) 前記一組の通信装置は、それぞれ、
自装置の識別番号を含む前記通知パケットを生成し、
受信した前記通知パケットに含まれ前記一組の通信装置の他方の識別番号及び自装置の識別番号の不一致を検出することにより、受信した前記通知パケットを識別することを特徴とする付記8に記載の通信方法。