説明

通信二重化装置及び通信二重化方法

【課題】通信二重化装置及び通信二重化方法に関し、冗長化非対応の通信装置に対し、ステートフルなプロトコルによる通信のセッション状態を同一状態に維持したまま、通信動作を継続させる。
【解決手段】通信装置10とステートフル通信を行う二重化された通信装置40,40’のそれぞれに通信二重化装置30,30’が接続され、マスター系の通信二重化装置30は、通信装置10からのパケットを通信装置40へ送信すると共に、該パケットを複製し、通信二重化装置30’を介して通信装置40’へ転送する。また、通信装置40から受信されたパケットを複製し、該パケットを通信二重化装置30’へ転送し、通信装置40から受信されたパケットの応答番号と、通信二重化装置30’から転送されたパケットの応答番号とを含むセッション情報を参照し、該パケットの応答番号を更新してセッション状態を同期させ、該パケットを通信装置10へ送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ステートフル通信を行う通信装置を二重化する通信二重化装置及び通信二重化方法に関する。
【背景技術】
【0002】
通信システムの信頼性を向上する手段として、通信装置の二重化構成が従来から広く採用されている。インターネット通信では、レイヤ3(ネットワーク層)のプロトコルとしてIP(Internet Protocol)が使用されている。IPは、通信セッションの状態に依存することなくパケットを送受するステートレスのプロトコルである。
【0003】
また、インターネット通信では、レイヤ4(トランスポート層)のプロトコルとしてTCP(Transmission Control Protocol)が使用される。TCPは、コネクションを確立し、通信セッションの状態に応じてパケットを送受するステートフルのプロトコルである。
【0004】
従来のIP通信モデルでは、パケットの中継処理は、レイヤ3通信装置(即ちIPルータ装置)で行い、レイヤ3通信装置は、経路表に基づいてIPパケットを転送するだけであった。しかし、近年ではTCP等の上位プロトコルにおける通信セッションの状態やパケットの内容など、レイヤ4以上の情報を参照して高度な中継処理を行う通信装置が出現している。
【0005】
IPルータ装置の二重化構成は、VRRP(Virtual Router Redundancy Protocol)や、HSRP(Hot Standby Router Protocol)等のプロトコルにより、マスター系からバックアップ系に自律的に切り替わる。そのため、IP通信装置は、IPルータ装置の障害に対応する機能を備えることなく、IP通信を継続して行うことができる。
【0006】
ネットワークを現用ゲートウェイと予備ゲートウェイとで接続し、予備ゲートウェイから現用ゲートウェイテストデータを送信することにより、現用ゲートウェイの動作を監視し、現用ゲートウェイの異常を検出したとき、バックアップ動作を開始する冗長化構成方式等は特許文献1等により知られている。
【0007】
また、ルータを二重化し、該ルータはホットスタンバイプロトコル(HSRP)により相互に送受信を行い、相対的なプライオリティを決定する技術は、引用文献2等により知られている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開昭64−001350号公報
【特許文献2】特開2000−78199号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述した通信セッションの状態やパケットの内容など、レイヤ4以上の情報を参照して高度な中継処理を行う通信装置に対しては、通信セッションの状態を維持したまま、通信システムの動作を継続することができる二重化構成が要望されている。二重化した該通信装置で、同一の通信セッション状態を維持するためには、該通信装置の内部状態を他方の通信装置に実時間で転送する手法が使用される。
【0010】
通信装置の内部状態は、通信装置の構造に依存するため、通信装置毎に個別の方式で内部状態が定義され、それに伴って通信装置毎の構造が複雑化する。そのため、冗長化非対応の通信装置に対して、通信セッションの状態を維持させようとすると、通信装置の実装コストが増大するとともに、機能の追加が困難になるという課題があった。
【0011】
本発明は、冗長化非対応の通信装置に対し、二重化のためにそれらの通信装置の構造を変更することなく、ステートフルのプロトコルによる通信のセッション状態を、二重化された通信装置で同一状態に維持したまま、通信動作を継続させることができる通信二重化装置及び通信二重化方法を提供する。
【課題を解決するための手段】
【0012】
上記課題を解決する通信二重化装置は、第1の通信装置とステートフル通信を行う二重化された第2の通信装置のそれぞれに接続され、該ステートフル通信のパケットを中継する通信二重化装置であって、前記第1の通信装置から受信された第1のパケットを前記第2の通信装置へ送信すると共に、該第1のパケットを複製し、他方の通信二重化装置を介して他方の第2の通信装置へ転送する手段と、前記第2の通信装置から受信された第2のパケットを複製し、該第2のパケットを他方の通信二重化装置へ転送する手段と、前記第2の通信装置から受信された第2のパケットの第1の応答番号と、前記他方の通信二重化装置から転送された第2のパケットの第2の応答番号とを含むセッション情報を記憶する記憶部と、前記第2の通信装置から受信された第2のパケットに対して、前記記憶部に記憶されたセッション情報を参照し、セッション状態を同期させるよう、応答番号を更新して該第2のパケットを前記第1の通信装置へ送信する手段と、を備えたものである。
【0013】
また、通信二重化方法は、第1の通信装置とステートフル通信を行う第2の通信装置を二重化し、該第1の通信装置と該第2の通信装置のそれぞれの間に接続された通信二重化装置を用いる通信二重化方法であって、前記通信二重化装置で前記第1の通信装置から受信された第1のパケットを前記第2の通信装置へ送信すると共に、該第1のパケットを複製し、他方の通信二重化装置を介して他方の第2の通信装置へ転送するステップと、前記第2の通信装置から受信された第2のパケットを複製し、該第2のパケットを他方の通信二重化装置へ転送するステップと、前記第2の通信装置から受信された第2のパケットの第1の応答番号と、前記他方の通信二重化装置から転送された第2のパケットの第2の応答番号とを含むセッション情報を記憶部に記憶するステップと、前記第2の通信装置から受信された第2のパケットに対して、前記記憶部に記憶されたセッション情報を参照し、セッション状態を同期させるよう、応答番号を更新して該第2のパケットを前記第1の通信装置へ送信するステップと、を含むものである。
【発明の効果】
【0014】
冗長化非対応の通信装置を二重化し、ステートフルのプロトコルによる通信のセッション状態を、マスター系とバックアップ系とで維持したまま、通信システムの動作を継続させることが可能となる。冗長化非対応の通信装置の二重化は、それらの通信装置のネットワークポートに開示の通信二重化装置を接続するだけでよく、二重化のためにそれらの通信装置の構造を変更することなく、二重化することができる。また、異なる構造の通信装置に対して、同一の通信二重化装置を用いて二重化することができ、低コストで通信装置の二重化を実現することができる。
【図面の簡単な説明】
【0015】
【図1】通信二重化装置を含む通信システムの構成例を示す図である。
【図2】レイヤ2中継装置の構成例及びMACアドレス表の一例を示す図である。
【図3】通信二重化装置の構成例を示す図である。
【図4】レイヤ3経路表及びセッション状態表の一例を示す図である。
【図5】マスター系におけるネットワークポートAの受信パケットの処理フロー例を示す図である。
【図6】マスター系におけるネットワークポートBの受信パケットの処理フロー例を示す図である。
【図7】バックアップ系におけるネットワークポートAの受信パケットの処理フロー例を示す図である。
【図8】バックアップ系におけるネットワークポートBの受信パケットの処理フロー例を示す図である。
【図9】縮退モードにおける通信二重化装置の処理フロー例を示す図である。
【発明を実施するための形態】
【0016】
図1に開示の通信二重化装置を含む通信システムの構成例を示す。図1において、通信装置10は、レイヤ2中継装置20を介して二重化された通信二重化装置30,30’と接続され、該通信二重化装置30,30’は、それぞれ二重化化された通信装置40,40’と接続される。各装置間は、Ethernet(登録商標)等のレイヤ2ネットワークプロトコルの通信回線により接続される。
【0017】
図2の(a)にレイヤ2中継装置20の構成例を示す。レイヤ2中継装置20は、MACアドレス表21とパケット転送処理部22とを備える。MACアドレス表21は、図2の(b)に例示するように、各ネットワークポートに接続された通信装置のMAC(Media Access Control)アドレスとネットワークポートの番号とを対応付けて記憶する。
【0018】
パケット転送処理部22は、各ネットワークポートから入力されるパケットを、該パケットの宛先MACアドレスを基に、MACアドレス表21により対応付けられたネットワークポートへ転送し、各ネットワークポート間でのパケットの転送処理を行う。
【0019】
図3に通信二重化装置30,30’の構成例を示す。二重化された通信二重化装置30,30’は、それぞれ同一の構成を有し、ネットワークポートAを介してレイヤ2中継装置20に接続される。第1の通信二重化装置30は、ネットワークポートBを介して第1の通信装置40と接続され、第2の通信二重化装置30’は、ネットワークポートBを介して第2の通信装置40’に接続される。
【0020】
第1及び第2の通信二重化装置30,30’は、それぞれネットワークポートA’及びネットワークポートB’を介して相互に接続される。また、第1及び第2の通信装置40,40’は、二重化の対象となる通信装置であり、それぞれ個別のMACアドレスとそれぞれ同一のIPアドレスが設定される。
【0021】
通信二重化装置30,30’は、それぞれ、パケット転送処理部31A,31B、パケット複製処理部32A,32B、パケット解析処理部33A,33B、パケット中継判定部34、パケット更新処理部35、レイヤ3経路表36、セッション状態表37、セッション状態監視部38、及びレイヤ3冗長化機能部39を備える。
【0022】
パケット転送処理部31Aは、ネットワークポートAから受信されたパケットを、レイヤ3経路表36に基づいて、IPルーティング処理を行う。パケット転送処理部31Bは、ネットワークポートBから受信されたパケットを、レイヤ3経路表36に基づいて、IPルーティング処理を行う。
【0023】
パケット複製処理部32Aは、パケット転送処理部31Aから入力されたパケットを複製し、ネットワークポートA’から該パケットを他方の通信二重化装置に送出し、また、該パケットをネットワークポートBから送信する。パケット複製処理部32Bは、パケット転送処理部31Bから入力されたパケットを複製し、ネットワークポートB’から該パケットを他方の通信二重化装置に送出し、また、該パケットをパケット中継判定部34へ転送する。
【0024】
パケット解析処理部33Aは、ネットワークポートA’から受信されたパケットを解析し、該パケットをネットワークポートBへ送出する。パケット解析処理部33Bは、ネットワークポートB’から受信されたパケットを解析し、該パケットをパケット中継判定部34へ送出する。
【0025】
パケット中継判定部34は、パケット複製処理部32Bから入力されるパケット及びパケット解析処理部33Bから入力されるパケットに対して、中継するか否かの判定を行い、中継するパケットをパケット更新処理部35へ転送する。パケット更新処理部35は、パケット中継判定部34から入力されるパケットに対してパケットの内容の更新処理を行い、該パケットをネットワークポートAから送出する。
【0026】
レイヤ3経路表36は、ネットワークポートA,Bから受信されたパケットに対して、パケット転送処理部31A,31BがIPルーティング処理を行う際に使用される。レイヤ3経路表36の一例を図4の(a)に示す。
【0027】
レイヤ3経路表36は、受信したパケットの宛先IPアドレスと、該パケットの転送先のネットワークポートの番号とを対応付けて記憶している。図4の(a)の例では、宛先IPアドレス192.0.1.0のパケットをネットワークポートAへ転送し、宛先IPアドレス192.0.2.0のパケットをネットワークポートBへ転送するIPルーティング処理が行われる。
【0028】
セッション状態表37の一例を図4の(b)に示す。セッション状態表37は、各通信セッション対応に、セッション状態、ネットワークポートAで受信されたパケット(通信装置10が送信したパケット)に含まれる送信元IPアドレス、送信元ポート番号、シーケンス(SEQ)番号、応答(ACK)番号、及びネットワークポートB,B’で受信されたパケット(通信装置40,40’が送信したパケット)に含まれる送信元IPアドレス、送信元ポート番号、シーケンス(SEQ)番号、第1の応答(ACK)番号、第2応答の(ACK)番号を対応付けて記憶部に記憶する。
【0029】
上述の第1応答(ACK)番号は、自装置に接続された通信装置が送信し、自装置のネットワークポートBで受信されたパケットに含まれる最新の応答番号である。第2応答(ACK)番号は、他方の通信二重化装置に接続された通信装置が送信し、該他方の通信二重化装置からネットワークポートB’で受信したパケットに含まれる応答(ACK)番号である。以下、第1の応答(ACK)番号を「ACK番号#1」と記し、第2の応答(ACK)番号を「ACK番号#2」と記す。
【0030】
セッション状態監視部38は、セッション状態表37を監視し、TCP通信のセッション状態がクローズ(終了)となったとき、セッション状態表37からそのTCP通信のセッション情報を削除する。
【0031】
レイヤ3冗長化機能部39は、VRRP等のプロトコルによる冗長構成処理を行う。通信二重化装置30,30’は、レイヤ3冗長化機能部39の系切り替え機能により、例えば、通信二重化装置30の通信系をマスター系とし、通信二重化装置30’の通信系をバックアップ系とするよう動作状態が設定される。
【0032】
マスター系及びバックアップ系の何れの通信系も正常の場合、通信二重化装置30,30’は、冗長モードで動作する。何れかの通信系が障害状態になると、一方の正常な通信系の通信二重化装置のみで動作する縮退モードに移行する。
【0033】
ここで、通信二重化装置30がマスター系として動作するものとすると、通信二重化装置30は、VRRP等の冗長構成処理機能により、生存通知の広告パケットをレイヤ2中継装置20に対してマルチキャストにより送信する。また、通信二重化装置30は、通信装置10に対して仮想的なMACアドレスを自装置のMACアドレスとして使用する。
【0034】
レイヤ2中継装置20は、該MACアドレスを学習し、通信装置10から該MACアドレス宛に送信されたパケットをマスター系の通信二重化装置30に転送する。バックアップ系の通信二重化装置30’は、マスター系の通信二重化装置30から広告パケットが到来しなくなると、マスター系の通信二重化装置30に障害が発生したと認識し、縮退モードに移行する。
【0035】
通信二重化装置30’は、縮退モードに移行すると、自装置のMACアドレスを送信元MACアドレスとするARP(Address Resolution Protocol)パケットを、レイヤ2中継装置20に対してブロードキャストにより送信する。該ARPパケットのブロードキャストにより、レイヤ2中継装置20は、該MACアドレスと、通信二重化装置30’が接続されたネットワークポートとの対応を再学習し、その結果、該MACアドレス宛のパケットを通信二重化装置30’へ転送する。
【0036】
冗長モードにおける通信二重化装置30,30’の処理フロー例を図5〜図8に示す。以降の説明では、通信二重化装置30がマスター系、通信二重化装置30’がバックアップ系として動作するものとする。
【0037】
図5は、マスター系におけるネットワークポートAの受信パケットの処理フロー例を示し、図6は、マスター系におけるネットワークポートBの受信パケットの処理フロー例を示し、図7は、バックアップ系におけるネットワークポートAの受信パケットの処理フロー例を示し、図8は、バックアップ系におけるネットワークポートBの受信パケットの処理フロー例を示している。
【0038】
まず、図5を参照してマスター系におけるネットワークポートAの受信パケットの処理フロー例について説明する。通信装置10が通信装置40との通信を開始すると、通信装置10が送信したパケットは、レイヤ2中継装置20を経由して通信二重化装置30のネットワークポートAに到達する。
【0039】
通信二重化装置30は、該パケットを受信すると(5−1)、パケット転送処理部31Aで宛先IPアドレスの確認を行い(5−2)、IPルーティング処理を開始する。パケット転送処理部31Aは、まず、該パケットが自装置宛のパケットか否かを判定し(5−3)、自装置宛のパケットの場合、該パケットをレイヤ3冗長化機能部39に転送する(5−4)。
【0040】
次にパケット転送処理部31Aは、レイヤ3経路表36を基に、該パケットがネットワークポートBへ転送するパケットか否かを判定し(5−5)、ネットワークポートBへ転送するパケットでない場合、該パケットを破棄する(5−6)。該パケットがネットワークポートBへ、即ち通信装置40へ転送するパケットである場合、パケット転送処理部31Aは、該パケットのプロトコル番号を確認し(5−7)、該パケットがTCPパケットかどうかを判定する(5−8)。
【0041】
該パケットがTCPパケットでない場合、パケット転送処理部31Aは、該パケットをネットワークポートBから送信する(5−15)。該パケットがTCPパケットである場合、パケット転送処理部31Aは、図4の(b)に例示するセッション状態表37を参照する(5−9)。
【0042】
パケット転送処理部31Aは、セッション状態表37を探索し、該パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号と一致するTCP通信のセッション情報が存在しない(新規なセッションである)か否かを判定する(5−10)。
【0043】
セッション状態表37に、当該パケットのセッションと一致するTCP通信のセッション情報が存在する場合、パケット転送処理部31Aは、該セッション情報を更新する(5−11)。ここで更新するセッション情報は、最新のシーケンス(SEQ)番号、最新の応答(ACK)番号を含む情報である。
【0044】
セッション状態表37に、当該パケットのセッションと一致するTCP通信のセッション情報が存在せず、新規の通信セッションである場合、パケット転送処理部31Aは、当該パケットのTCP通信のセッション情報を新規に登録する(5−12)。
【0045】
次にパケット転送処理部31Aは、該パケットをパケット複製処理部32Aへ転送する。パケット複製処理部32Aは、該パケットを複製し(5−13)、ネットワークポートA’及びネットワークポートBの両方から、該パケットを送信する(5−14,5−15)。マスター系の通信二重化装置30において、ネットワークポートA’でパケットが受信されると(5−16)、該パケットはパケット解析処理部33Aで解析され、破棄される(5−17)。
【0046】
次に図6を参照してマスター系におけるネットワークポートBの受信パケットの処理フロー例について説明する。通信装置40は、通信二重化装置30からTCPパケットを受信すると、そのTCPパケットに対する応答パケット(ACKパケット)を送信する。通信装置40が送信したパケットは、通信二重化装置30のネットワークポートBに到達する。
【0047】
通信二重化装置30は、該パケットを受信すると(6−1)、パケット転送処理部31Bで宛先IPアドレスの確認を行い(6−2)、IPルーティング処理を開始する。パケット転送処理部31Bは、該パケットがネットワークポートAへ転送するパケットか否かを判定し(6−3)、ネットワークポートAへ転送するパケットでない場合、該パケットを破棄する(6−4)。
【0048】
該パケットがネットワークポートAへ、即ち通信装置10へ転送するパケットである場合、パケット転送処理部31Bは、該パケットのプロトコル番号を確認し(6−5)、該パケットがTCPパケットかどうかを判定する(6−6)。
【0049】
該パケットがTCPパケットでない場合、パケット転送処理部31Bは、該パケットをネットワークポートAから送信する(6−22)。該パケットがTCPパケットである場合、パケット転送処理部31Bは、図4の(b)に例示するセッション状態表37を参照する(6−7)。
【0050】
パケット転送処理部31Bは、セッション状態表37を探索し、該パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号と一致するTCP通信のセッション情報が存在しない(新規なセッションであるか)否かを判定する(6−8)。
【0051】
セッション状態表37に、当該パケットのセッションと一致するTCP通信のセッション情報が存在しない(新規通信セッションである)場合、パケット転送処理部31Bは、該パケットをネットワークポートAから送信する(6−22)。
【0052】
セッション状態表37に、当該パケットのセッションと一致するTCP通信のセッション情報が存在する(新規なセッションではない)場合、パケット転送処理部31Bは、該セッション情報を更新する(6−9)。ここで更新するセッション情報は、最新のシーケンス(SEQ)番号、最新の応答(ACK)番号を含む情報である。次にパケット転送処理部31Bは、該パケットをパケット中継判定部34に転送する。
【0053】
一方、マスター系の通信二重化装置30には、バックアップ系の通信二重化装置30’からネットワークポートB’を介して、バックアップ系の通信装置40’が送信した応答パケットが受信される(6−10)。マスター系の通信二重化装置30は、該バックアップ系からの応答パケットをパケット解析処理部33Bで解析し、該パケットのプロトコル番号を確認する(6−11)。
【0054】
パケット解析処理部33Bは、該パケットのプロトコル番号を基に該パケットがTCPパケットであるか否かを判定する(6−12)。該パケットがTCPパケットでない場合、パケット解析処理部33Bは、該パケットを破棄する(6−13)。該パケットがTCPパケットである場合、パケット解析処理部33Bは、セッション状態表37を参照する(6−14)。
【0055】
パケット解析処理部33Bは、セッション状態表37を探索し、該パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号と一致するTCP通信のセッション情報が存在しない(新規なセッションである)か否かを判定する(6−15)。
【0056】
セッション状態表37に、当該パケットのセッションと一致するTCP通信のセッション情報が存在しない(新規セッションである)場合、パケット解析処理部33Bは、該パケットを破棄する(6−16)。セッション状態表37に、当該パケットのセッションと一致するTCP通信のセッション情報が存在する(新規セッションでない)場合、パケット解析処理部33Bは、該セッション情報を更新する(6−17)。ここで更新するセッション情報は、最新のシーケンス(SEQ)番号、最新の応答(ACK)番号を含む情報である。
【0057】
パケット中継判定部34は、パケット複製処理部32Bからパケットが入力されると、セッション状態表37を参照し(6−18)、該パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号と一致するTCP通信のセッション情報を探索する。ここで、参照するセッション情報は、ネットワークポートB側のACK番号#1及びACK番号#2である。
【0058】
ACK番号#1は、ネットワークポートBから受信したTCPパケットに含まれる最新の応答(ACK)番号を示し、ACK番号#2は、ネットワークポートB’から受信したTCPパケットに含まれる最新の応答(ACK)番号を示す。
【0059】
パケット中継判定部34は、該パケットの応答(ACK)番号の比較結果、及び該パケットがデータを含んでいるか否かを基に、該パケットが転送対象のパケットか否かを判定する(6−19)。この判定において、(1)該パケットの応答(ACK)番号が、ACK番号#1とACK番号#2とに一致する、又は(2)ACK番号#1とACK番号#2の何れか古い番号よりもさらに古い応答(ACK)番号である、又は(3)該パケットがデータを含んでいる、これらの何れかの条件に該当するとき、該パケットは転送対象のパケットであると判定し、該パケットをパケット更新処理部35に転送する。
【0060】
該パケットが上述の何れの条件を満たしていない場合、即ち、該パケットの応答(ACK)番号が、ACK番号#1又はACK番号#2の何れか古い番号よりも新しく、かつ、該パケットがデータを含んでいない場合、該パケットを破棄する(6−20)。
【0061】
パケット更新処理部35は、入力されたパケットに対して、セッション状態表37を参照し、該パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号と一致するセッション情報を探索する。ここで参照するセッション情報は、ネットワークポートA側の応答(ACK)番号、ネットワークポートB側のACK番号#1及びACK番号#2である。
【0062】
該パケットに含まれるシーケンス(SEQ)番号と該パケットのデータ長とから求められる最新のシーケンス(SEQ)番号が、ネットワークポートA側の応答(ACK)番号よりも古い場合、該パケットのデータ部分は、既に通信装置10で受信されていることになるので、パケット更新処理部35は、該パケットのデータ部分を削除し、パケットの内容を更新する(6−21)。
【0063】
また、該パケットがデータを含み、該パケットの応答(ACK)番号が、ネットワークポートB側のACK番号#1とACK番号#2の何れか古い番号よりも新しい応答(ACK)番号である場合、該パケットの応答(ACK)番号を、ACK番号#1とACK番号#2の何れか古い番号に書き換え、パケットの内容を更新する(6−21)。
【0064】
パケット更新処理部35は、パケット中継判定部34から入力されたパケットに対して、上述のパケットの内容の更新を行った後、それらのパケットをネットワークポートAから送信する(6−22)。
【0065】
上述の条件(1)が満たされる場合、即ち、応答パケットの応答(ACK)番号が、ACK番号#1とACK番号#2とに一致する場合は、通信装置40と通信装置40’とでセッション状態が同期している状態であるので、該応答パケットを送信装置10へ送信する。
【0066】
また、上述の条件(2)が満たされる場合、即ち、応答パケットの応答(ACK)番号が、ACK番号#1とACK番号#2の何れか古い番号よりもさらに古い応答(ACK)番号である場合は、通信装置40でパケットの再送要求が発せられたことになるので、該応答パケットを送信装置10へ送信する。
【0067】
また、上述の条件(3)が満たされる場合、即ち応答パケットが通信データを含んでいる場合は、該通信データを無条件で送信装置10に通知するため、該応答パケットを送信装置10へ送信する。
【0068】
一方、応答パケットが上述の(1)〜(3)何れの条件を満たしていない場合、即ち、該パケットの応答(ACK)番号が、ACK番号#1又はACK番号#2の何れか古い番号よりも新しく、かつ、該パケットがデータを含んでいない場合は、以下のようにすることができる。
【0069】
ネットワークポートBから受信される通信装置40からの応答パケットと、ネットワークポートB’を介して受信される通信装置40’からの応答パケットとは、必ずしも受信のタイミングが一致せず、受信タイミングのズレによりACK番号#1とACK番号#2とが一致しない場合がある。その場合は、該応答パケットを破棄することとする。
【0070】
応答パケットを破棄しても、同一の応答番号の応答パケットが通信装置40から繰り返し送信されるので、同一の応答番号の応答パケットが揃うのを待つことにより、受信タイミングのズレが吸収され、上述の条件(1)が満たされることとなる。
【0071】
なお、受信タイミングのズレが原因ではなく、伝送エラー等によってACK番号#1とACK番号#2とにズレが生じた場合は、応答パケットに通信データを含んでいるときに、該応答パケットを通信装置10に送信する際に、ACK番号#1とACK番号#2の古い番号に応答(ACK)番号を書き換えることにより、通信装置40と通信装置40’のセッション状態を同期化することができる。なお、この応答(ACK)番号の書き換えの更新処理は、通信データを含んでいないときにも行う構成することもできる。
【0072】
次に、図7を参照してバックアップ系におけるネットワークポートAの受信パケットの処理フロー例について説明する。バックアップ系の通信二重化装置30’は、ネットワークポートAでパケットを受信すると(7−1)、パケット転送処理部31Aで宛先IPアドレスの確認を行い(7−2)、IPルーティング処理を開始する。
【0073】
パケット転送処理部31Aは、該パケットが自装置宛のパケットか否かを判定し(7−3)、自装置宛のパケットである場合、該パケットをレイヤ3冗長化機能部39に転送する(7−4)。該パケットが自装置宛のパケットでない場合、該パケットを破棄する(7−5)。
【0074】
通信二重化装置30’は、ネットワークポートA’でパケットを受信すると(7−6)、パケット解析処理部33Aでプロトコル番号の確認を行い(7−7)、該パケットがTCPパケットかどうかを判定する(7−8)。該パケットがTCPパケットでない場合、パケット解析処理部31Aは、該パケットをネットワークポートBから送信する(7−13)。
【0075】
該パケットがTCPパケットである場合、パケット解析処理部31Bは、セッション状態表37を参照し(7−9)、該パケットが新規なセッションである(該パケットのセッション情報と一致するTCP通信のセッション情報が存在しない)か否かを判定する(7−10)。
【0076】
新規なセッションでない(該パケットのセッション情報と一致するTCP通信のセッション情報が存在する)場合、該パケットのセッション情報を更新する(7−11)。該パケットが新規なセッションである場合、該パケットのセッション情報をセッション状態表37に登録する(7−12)。その後、パケット解析処理部31Aは、該パケットをネットワークポートBから送信する(7−13)。
【0077】
次に、図8を参照してバックアップ系におけるネットワークポートBの受信パケットの処理フロー例について説明する。通信装置40’は、通信二重化装置30’からTCPパケットを受信すると、通信装置40と並行して該TCPパケットに対する応答パケット(ACK)を送信する。
【0078】
通信装置40’が送信したパケットは、通信二重化装置30’のネットワークポートBに到達する。通信二重化装置30’は、該パケットを受信すると(8−1)、パケット転送処理部31Bで宛先IPアドレスの確認を行い(8−2)、IPルーティング処理を開始する。
【0079】
パケット転送処理部31Bは、該パケットがネットワークポートAへ転送するパケットか否かを判定し(8−3)、ネットワークポートAへ転送するパケットでない場合、該パケットを破棄する(8−4)。該パケットがネットワークポートAへ転送するパケットである場合、パケット転送処理部31Bは、該パケットのプロトコル番号を確認し(8−5)、該パケットがTCPパケットかどうかを判定する(8−6)。
【0080】
該パケットがTCPパケットでない場合、パケット転送処理部31Bは、該パケットを破棄する(8−7)。該パケットがTCPパケットである場合、パケット転送処理部31Bは、セッション状態表37を参照する(8−8)。パケット転送処理部31Bは、セッション状態表37を探索し、該パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号と一致するTCP通信のセッション情報が存在しない(新規なセッションである)か否かを判定する(8−9)。
【0081】
該パケットが新規なセッションである場合、該パケットを破棄する(8−10)。該パケットのセッション情報と一致するTCP通信のセッション情報が存在する場合、パケット転送処理部31Bは、該セッション情報を更新する(8−11)。ここで更新するセッション情報は、最新のシーケンス(SEQ)番号、最新の応答(ACK)番号を含む情報である。
【0082】
次にパケット転送処理部31Bは、該パケットをパケット複製処理部32Bに転送する。パケット複製処理部32Bは、該パケットを複製し(8−12)、ネットワークポートB’から送出すると共に(8−13)、該パケットをパケット中継判定部34に転送する。パケット中継判定部34は該パケットを破棄する(8−14)。
【0083】
また、通信二重化装置30’は、ネットワークポートB’でパケットを受信する(8−15)と、パケット解析処理部33Bは、該パケットをパケット中継判定部34に転送し、パケット中継判定部34は、該パケットを破棄する(8−16)。
【0084】
以上の動作により、通信二重化装置30と通信二重化装置30’は、通信装置10−通信装置30間のTCP通信と、通信装置10−通信装置30’間のTCP通信とで、TCP通信のセッション情報を同一状態に維持させたまま、即ちセッション情報を同期させながら、パケットを中継する。
【0085】
この冗長モードでは、マスター系の通信二重化装置30は、ネットワークポートA’から受信したパケットを破棄する。バックアップ系の通信二重化装置30’は、ネットワークポートAから受信したパケットをパケット転送処理部31Aで処理する。そのパケットが自装置宛のパケットの場合、レイヤ3冗長化機能部39に転送する。それ以外のパケットは破棄する。また、バックアップ系の通信二重化装置30’は、ネットワークポートB’で受信したパケットを破棄する。
【0086】
また、セッション状態監視部38は、ネットワークポートBから送信したTCPパケットに対する応答パケット(ACK)を監視し、該応答パケットの再送時間を待機し、該再送時間内に応答パケット(ACK)が受信されない場合は、その通信系に障害が発生したと判断する。
【0087】
通信二重化装置30に障害発生した場合、通信二重化装置30’は、レイヤ3冗長化機能部39により該障害発生を検出し、縮退モードに移行する。通信装置40に障害が発生した場合、通信二重化装置30は、ネットワークポートBからの応答パケット(ACK)の監視により該障害を検出し、縮退モードに移行する。
【0088】
通信二重化装置30’又は通信装置40’に障害発生した場合、通信二重化装置30は、ネットワークポートB’からの応答パケット(ACK)の監視により該障害を検出し、縮退モードに移行する。
【0089】
図9に縮退モードにおける通信二重化装置の処理フロー例を示す。縮退モードの通信二重化装置において、ネットワークポートAでパケットを受信すると(9−1)、パケット転送処理部31Aは、受信したにパケットの宛先IPアドレスを確認し(9−2)、IPルーティング処理を行う。
【0090】
パケット転送処理部31Aは、該パケットが自装置宛のパケットか否かを判定し、自装置宛のパケットである場合、該パケットをレイヤ3冗長化機能部39に転送する(9−4)。該パケットが自装置宛のパケットでない場合、該パケットは、ネットワークポートBに転送するパケットか否かを判定する(9−5)。ネットワークポートBに転送するパケットでない場合、該パケットを破棄する(9−6)。該パケットがネットワークポートBに転送するパケットの場合、該パケットをネットワークポートBから送信する(9−7)。
【0091】
縮退モードの通信二重化装置において、ネットワークポートBでパケットを受信すると(9−8)、パケット転送処理部31Bは、受信したにパケットの宛先IPアドレスを確認し(9−9)、IPルーティング処理を行う。パケット転送処理部31Bは、該パケットがネットワークポートAに転送するパケットであるか否かを判定し(9−10)、ネットワークポートAに転送するパケットでない場合、該パケットを破棄する(9−11)。該パケットがネットワークポートAに転送するパケットである場合、該パケットをネットワークポートAから送信する(9−12)。
【0092】
縮退モードの通信二重化装置において、ネットワークポートA’でパケットを受信すると(9−13)、パケット解析処理部33Aは、該パケットを破棄する(9−14)。また、ネットワークポートB’でパケットを受信すると(9−15)、パケット解析処理部33Bは、該パケットを破棄する(9−16)。なお、パケット解析処理部33Bで破棄せず、パケット中継判定部34で破棄する構成としてもよい。
【0093】
障害が発生した通信系が回復した場合、レイヤ3冗長化機能部39は、他方の通信二重化装置に対して回復したことを通知する。その後、通信二重化装置30,30’は、それぞれ冗長モードに移行し、新規のステートフル通信に対して二重化動作を開始する。このとき、通信二重化装置30,30’の何れがマスター系又はバックアップ系として動作するかは、レイヤ3冗長化機能部39の制御に従う。
【0094】
通信装置40,40’の構造によっては、TCPパケットに含まれるシーケンス(SEQ)番号と応答(ACK)番号が必ずしも一致しない場合がある。この場合は、TCPのセッション確立開始時に、シーケンス(SEQ)番号と応答(ACK)番号との差をセッション状態表37に別途記録し、参照時に補正することにより対応することができる。
【0095】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
第1の通信装置とステートフル通信を行う二重化された第2の通信装置のそれぞれに接続され、該ステートフル通信のパケットを中継する通信二重化装置であって、
前記第1の通信装置から受信された第1のパケットを前記第2の通信装置へ送信すると共に、該第1のパケットを複製し、他方の通信二重化装置を介して他方の第2の通信装置へ転送する手段と、
前記第2の通信装置から受信された第2のパケットを複製し、該第2のパケットを他方の通信二重化装置へ転送する手段と、
前記第2の通信装置から受信された第2のパケットの第1の応答番号と、前記他方の通信二重化装置から転送された第2のパケットの第2の応答番号とを含むセッション情報を記憶する記憶部と、
前記第2の通信装置から受信された第2のパケットに対して、前記記憶部に記憶されたセッション情報を参照し、セッション状態を同期させるよう、応答番号を更新して該第2のパケットを前記第1の通信装置へ送信する手段と、
を備えたことを特徴とする通信二重化装置。
(付記2)
前記第2の通信装置から受信された第2のパケットに対して、該第2のパケットの応答番号が、前記記憶部に記憶された前記第1の応答番号と前記第2の応答番号の何れか古い番号より新しい場合に、該第2のパケットの応答番号を、前記第1の応答番号と前記第2の応答番号の何れか古い番号に書き換えて該第2のパケットを更新することを特徴とする付記1に記載の通信二重化装置。
(付記3)
前記第2のパケットの応答番号が、前記記憶部に記憶された前記第1の応答番号と前記第2の応答番号の何れか古い番号より新しい場合、該第2のパケットが応答番号と共に通信データを含んでいるときに、該第2のパケットの応答番号を、前記第1の応答番号と前記第2の応答番号の何れか古い番号に書き換え、該第2のパケットが通信データを含んでいないとき、該第2のパケットを破棄することを特徴とする付記2に記載の通信二重化装置。
(付記4)
第1の通信装置とステートフル通信を行う第2の通信装置を二重化し、該第1の通信装置と該第2の通信装置のそれぞれの間に接続された通信二重化装置を用いる通信二重化方法であって、
前記通信二重化装置で前記第1の通信装置から受信された第1のパケットを前記第2の通信装置へ送信すると共に、該第1のパケットを複製し、他方の通信二重化装置を介して他方の第2の通信装置へ転送するステップと、
前記第2の通信装置から受信された第2のパケットを複製し、該第2のパケットを他方の通信二重化装置へ転送するステップと、
前記第2の通信装置から受信された第2のパケットの第1の応答番号と、前記他方の通信二重化装置から転送された第2のパケットの第2の応答番号とを含むセッション情報を記憶部に記憶するステップと、
前記第2の通信装置から受信された第2のパケットに対して、前記記憶部に記憶されたセッション情報を参照し、セッション状態を同期させるよう、応答番号を更新して該第2のパケットを前記第1の通信装置へ送信するステップと、
を含むことを特徴とする通信二重化方法。
(付記5)
前記第2の通信装置から受信された第2のパケットに対して、該第2のパケットの応答番号が、前記記憶部に記憶された前記第1の応答番号と前記第2の応答番号の何れか古い番号より新しい場合に、該第2のパケットの応答番号を、前記第1の応答番号と前記第2の応答番号の何れか古い番号に書き換えて該第2のパケットを更新するステップを含むことを特徴とする付記4に記載の通信二重化方法。
(付記6)
前記第2のパケットの応答番号が、前記記憶部に記憶された前記第1の応答番号と前記第2の応答番号の何れか古い番号より新しい場合、該第2のパケットが応答番号と共に通信データを含んでいるときに、該第2のパケットの応答番号を、前記第1の応答番号と前記第2の応答番号の何れか古い番号に書き換え、該第2のパケットが通信データを含んでいないとき、該第2のパケットを破棄するステップを含むことを特徴とする付記5に記載の通信二重化方法。
【符号の説明】
【0096】
10 通信装置
20 レイヤ2中継装置
21 MACアドレス表
22 パケット転送処理部
30,30’ 通信二重化装置
31A,31B パケット転送処理部
32A,32B パケット複製処理部
33A,33B パケット解析処理部
34 パケット中継判定部
35 パケット更新処理部
36 レイヤ3経路表
37 セッション状態表
38 セッション状態監視部
39 レイヤ3冗長化機能部
40,40’ 通信装置

【特許請求の範囲】
【請求項1】
第1の通信装置とステートフル通信を行う二重化された第2の通信装置のそれぞれに接続され、該ステートフル通信のパケットを中継する通信二重化装置であって、
前記第1の通信装置から受信された第1のパケットを前記第2の通信装置へ送信すると共に、該第1のパケットを複製し、他方の通信二重化装置を介して他方の第2の通信装置へ転送する手段と、
前記第2の通信装置から受信された第2のパケットを複製し、該第2のパケットを他方の通信二重化装置へ転送する手段と、
前記第2の通信装置から受信された第2のパケットの第1の応答番号と、前記他方の通信二重化装置から転送された第2のパケットの第2の応答番号とを含むセッション情報を記憶する記憶部と、
前記第2の通信装置から受信された第2のパケットに対して、前記記憶部に記憶されたセッション情報を参照し、セッション状態を同期させるよう、応答番号を更新して該第2のパケットを前記第1の通信装置へ送信する手段と、
を備えたことを特徴とする通信二重化装置。
【請求項2】
前記第2の通信装置から受信された第2のパケットに対して、該第2のパケットの応答番号が、前記記憶部に記憶された前記第1の応答番号と前記第2の応答番号の何れか古い番号より新しい場合に、該第2のパケットの応答番号を、前記第1の応答番号と前記第2の応答番号の何れか古い番号に書き換えて該第2のパケットを更新することを特徴とする請求項1に記載の通信二重化装置。
【請求項3】
前記第2のパケットの応答番号が、前記記憶部に記憶された前記第1の応答番号と前記第2の応答番号の何れか古い番号より新しい場合、該第2のパケットが応答番号と共に通信データを含んでいるときに、該第2のパケットの応答番号を、前記第1の応答番号と前記第2の応答番号の何れか古い番号に書き換え、該第2のパケットが通信データを含んでいないとき、該第2のパケットを破棄することを特徴とする請求項2に記載の通信二重化装置。
【請求項4】
第1の通信装置とステートフル通信を行う第2の通信装置を二重化し、該第1の通信装置と該第2の通信装置のそれぞれの間に接続された通信二重化装置を用いる通信二重化方法であって、
前記通信二重化装置で前記第1の通信装置から受信された第1のパケットを前記第2の通信装置へ送信すると共に、該第1のパケットを複製し、他方の通信二重化装置を介して他方の第2の通信装置へ転送するステップと、
前記第2の通信装置から受信された第2のパケットを複製し、該第2のパケットを他方の通信二重化装置へ転送するステップと、
前記第2の通信装置から受信された第2のパケットの第1の応答番号と、前記他方の通信二重化装置から転送された第2のパケットの第2の応答番号とを含むセッション情報を記憶部に記憶するステップと、
前記第2の通信装置から受信された第2のパケットに対して、前記記憶部に記憶されたセッション情報を参照し、セッション状態を同期させるよう、応答番号を更新して該第2のパケットを前記第1の通信装置へ送信するステップと、
を含むことを特徴とする通信二重化方法。
【請求項5】
前記第2の通信装置から受信された第2のパケットに対して、該第2のパケットの応答番号が、前記記憶部に記憶された前記第1の応答番号と前記第2の応答番号の何れか古い番号より新しい場合に、該第2のパケットの応答番号を、前記第1の応答番号と前記第2の応答番号の何れか古い番号に書き換えて該第2のパケットを更新するステップを含むことを特徴とする請求項4に記載の通信二重化方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate