(57)【要約】【課題】  冗長化した通信処理システムでアプリケーションレイヤのコネクションリカバリ処理を軽減させる。【解決手段】  通信処理システム内の現用中の通信処理装置１０内のコネクション情報引継部２は，コネクション確立時にコネクション情報と転送される各データの送受信シーケンス番号を待機中のコネクションリカバリ装置１へ送信し，待機中の通信処理装置１０内のコネクション情報引継部２は，コネクション情報と最新の送受信シーケンス番号をコネクション情報記憶部３に保持する。フェイルオーバ発生により現用切替された通信処理装置１０のダミーデータ送信部５は，ヘッダのみのダミーパケットをクライアントへ送信し，コネクション継続判定部６は，ダミーデータの応答パケットの送受信シーケンス番号がコネクション情報記憶部３の送受信シーケンス番号と一致する場合に，通信処理部１３へ継続可を通知し，通信処理部１３がデータ通信を継続できるようにする。【選択図】  図１
2010045760.tif 000002
【特許請求の範囲】
【請求項１】
通信処理部を備える装置が冗長化されて構成されているシステムにおいて，前記装置各々に構成され，前記装置間での通信処理の切替時にコネクションリカバリ処理を行うコネクションリカバリ装置であって，
コネクションを識別するコネクション情報と，当該コネクションで転送される各データに付与されたデータ送信および受信の連続性を示す送受信シーケンス番号とを記憶するコネクション情報記憶部と，
自装置が通信処理を実行している状態を示す現用中である場合に，コネクション確立時に当該コネクションのコネクション情報を待機中の他の装置へ送信し，前記コネクションのデータ送受信時に，各データに付与された送受信シーケンス番号を前記他の装置へ送信する処理と，自装置が通信処理を待機している状態を示す待機中である場合に，前記コネクション情報と前記送受信シーケンス番号とを受信して前記コネクション情報記憶部に格納し，当該コネクション情報に基づいて前記コネクションの確立を自装置の通信処理部へ通知する処理とを行うコネクション情報引継部と，
自装置に前記待機中から前記現用中への切り替えが通知された場合に，前記コネクション情報記憶部のコネクション情報に基づいてダミーデータを作成し，前記コネクションの相手側に当該ダミーデータを送信するダミーデータ送信部と，
自装置に前記待機中から前記現用中への切り替えが通知された場合に，前記送信したダミーデータの応答データを受信し，当該応答データに付与された送受信シーケンス番号を取得し，当該応答データの送受信シーケンス番号が前記コネクション情報記憶部に格納された最新の送受信シーケンス番号と一致する場合に，自装置の通信処理部へコネクション継続可を通知するコネクション継続判定部とを備える
ことを特徴とする冗長化システム用コネクションリカバリ装置。
【請求項２】
前記コネクション継続判定部は，当該応答データの送受信シーケンス番号が前記コネクション情報記憶部に格納された最新のシーケンス番号と一致しない場合に，当該コネクションの切断を行い，自装置の通信処理部へコネクション継続不可を通知する
ことを特徴とする請求項１に記載の冗長化システム用コネクションリカバリ装置。
【請求項３】
前記コネクション情報引継部は，前記コネクションのデータ送受信時の処理が自装置のデータ受信である場合に，前記送受信シーケンス番号を取得するタイミングにおいて，前記自装置の受信データを一時的に保持する受信バッファにデータが存在しているかを調べて，前記受信バッファにデータが存在しないときのみ，前記データ受信のデータに付与された送受信シーケンス番号を取得して前記他の装置へ送信する
ことを特徴とする請求項１記載または請求項２に記載の冗長化システム用コネクションリカバリ装置。
【請求項４】
前記コネクション情報引継部は，前記コネクションのデータ送受信時の処理が自装置のデータ送信である場合に，前記データ送信で送信されるデータ分を，シーケンス番号を用いて示す完了時シーケンス番号を記録し，前記データ送信のデータに付与された送受信シーケンス番号と前記完了時シーケンス番号とを前記他の装置へ送信する
ことを特徴とする請求項１記載ないし請求項３に記載の冗長化システム用コネクションリカバリ装置。
【請求項５】
前記コネクション継続判定部は，前記応答データに付与された送受信シーケンス番号を取得し，当該応答データの受信シーケンス番号が前記コネクション情報記憶部に格納された完了時シーケンス番号と一致する場合に，当該応答データの送信シーケンス番号が前記コネクション情報記憶部に格納された受信シーケンス番号と一致する場合に，自装置の通信処理部へコネクション継続可を通知する
ことを特徴とする請求項４に記載の冗長化システム用コネクションリカバリ装置。
【請求項６】
通信処理部を備える装置が冗長化されて構成されているシステムにおいて，前記装置各々に構成され，前記装置が，前記装置間での通信処理の切替時に実行するコネクションリカバリ処理方法であって，
通信処理を実行している状態を示す現用中である第１の装置が，コネクション確立時に当該コネクションのコネクション情報を待機中の他の装置へ送信する処理過程と，
通信処理を待機している状態を示す待機中である第２の装置が，前記第１の装置から，前記コネクション情報を受信してコネクション情報記憶部に格納する処理過程と，
前記第２の装置が，前記コネクションの確立を自装置の通信処理部へ通知する処理過程と，
前記第１の装置が，前記コネクションで転送されているデータに付与されたデータの送信および受信の連続性を示す送受信シーケンス番号を前記他の通信処理装置へ送信する処理過程と，
前記第２の装置が，前記シーケンス番号を前記コネクション情報記憶部に格納する処理過程と，
前記第２の装置が，前記待機中から前記現用中への切り替え通知を受けた場合に，前記コネクション情報記憶部のコネクション情報に基づいてダミーデータを作成し，前記コネクションの相手側に当該ダミーデータを送信する処理過程と，
前記第２の装置が，前記待機中から前記現用中への切り替え通知を受けた場合に，前記送信したダミーデータの応答データを受信し，当該応答データに付与された送受信シーケンス番号を取得し，当該応答データの送受信シーケンス番号が前記コネクション情報記憶部に格納された最新の送受信シーケンス番号と一致する場合に，自装置の通信処理部へコネクション継続可を通知する処理過程とを備える
ことを特徴とする冗長化システム用コネクションリカバリ方法。
【請求項７】
通信処理部を備える装置が冗長化されて構成されているシステムに，前記装置間での処理切り替え時にコネクションリカバリ処理を行わせるプログラムであって，
前記装置を，
コネクションを識別するコネクション情報と，当該コネクションで転送されるデータに付与されたデータの送信および受信の連続性を示す送受信シーケンス番号とを記憶するコネクション情報記憶部と，
自装置が通信処理を実行している状態を示す現用中である場合に，コネクション確立時に当該コネクションのコネクション情報を待機中の他の装置へ送信し，前記コネクションのデータ送受信時に，各データに付与された送受信シーケンス番号を前記他の装置へ送信する処理と，自装置が通信処理を待機している状態を示す待機中である場合に，前記コネクション情報および前記送受信シーケンス番号を受信して前記コネクション情報記憶部に格納し，受信したコネクション情報に基づいて前記コネクションの確立を自装置の通信処理部へ通知する処理とを行うコネクション情報引継部と，
自装置に前記待機中から前記現用中への切り替えが通知された場合に，前記コネクション情報記憶部のコネクション情報に基づいてダミーデータを作成し，前記コネクションの相手側に当該ダミーデータを送信するダミーデータ送信部と，
自装置に前記待機中から前記現用中への切り替えが通知された場合に，前記送信したダミーデータの応答データを受信し，当該応答データに付与された送受信シーケンス番号を取得し，当該応答データの送受信シーケンス番号が前記コネクション情報記憶部に格納された最新の送受信シーケンス番号と一致する場合に，自装置の通信処理部へコネクション継続可を通知するコネクション継続判定部として機能させるための
冗長化システム用コネクションリカバリ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，通信処理部を備える装置が冗長化されて構成される冗長化システムにおけるＴＣＰコネクションのリカバリ処理を行うコネクションリカバリ装置，方法および処理プログラムに関する。
【０００２】
より詳しくは，冗長化システムでフェイルオーバが発生した場合に，通信処理プログラムの連続運転性を向上させるため，アプリケーションレイヤでのＴＣＰコネクションのリカバリ処理の負担軽減を図り，高信頼化と高性能化を実現するプロトコル制御におけるＴＣＰコネクションリカバリ処理に関する。
【背景技術】
【０００３】
ＴＣＰ／ＩＰを使用したクライアント−サーバ間通信を行う場合に，サーバ側システムを冗長化し，障害等が発生した場合にフェイルオーバすることによって，システムの連続運用性を向上させる技術は広く普及している。例えば，冗長化手段・方式をサポートする製品「ネットワークサーバＩＰＣＯＭ（アイピーコム）（富士通株式会社製）」等が提供されている。
【０００４】
また，ＴＣＰ／ＩＰを使用したクライアント−サーバ間での通信中に，冗長化したサーバシステムでフェイルオーバが発生した場合に，クライアント−サーバ間のＴＣＰコネクションを引き継ぎ，通信の継続性を保証する技術として，「ＴＣＰ  ＣＰ（ＴＣＰ  Ｃｏｎｎｅｃｔｉｏｎ  Ｐａｓｓｉｎｇ）」および「ＴＣＰ  ＣＰ２」が公開されている。
【０００５】
なお，コンピュータ間通信における障害を自動的に発見する従来手法として，複数台のサーバによるクラスタシステムにおいて，サーバ間の経路を監視し，異常検出時には二重化したＩＰアドレスを動的に移動して経路を付け替える処理が開示されている。
【０００６】
また，２台のサーバに同一ＩＰアドレスを割り当て，運用系サーバのＬＡＮを有効にし，待機系サーバのＬＡＮを無効にしておき，運用系サーバ障害時に，待機系サーバを運用系に切り替えてＬＡＮを有効にし，クライアント側で応答（ＡＣＫ）がない場合に異常と認識してコネクションを再確立する手法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平９−３６８６２号公報
【特許文献２】特開平９−３２６８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前記の冗長化システムと，「ＴＣＰ  ＣＰ」／「ＴＣＰ  ＣＰ２」の通信継続性の保証技術とを組み合わせることによって，ＴＣＰ／ＩＰを使用したクライアント−サーバ間の通信中に，冗長化したサーバシステムでフェイルオーバが発生した場合でも，ＴＣＰコネクションを引き継ぎ，通信を継続させることは可能である。
【０００９】
しかし，ＴＣＰコネクションの引き継ぎが完了し，通信の継続が可能となった場合でも，ネットワーク上でパケットがロストする場合があるため，アプリケーションレイヤの通信処理プログラムに，コネクションリカバリ処理を組み込まなければならない。
【００１０】
すなわち，通信処理プログラムに，パケットの連続性をチェックし，パケットロストを検出した場合に，通信相手に再送を依頼する，または，当該コネクションを切断して再度コネクションを確立して通信を再開するなど，複雑なリカバリ処理ロジックを組み込む必要がある。
【００１１】
通信処理プログラムにおいてパケットの連続性をチェックする従来の方式として，クライアントアプリケーションとサーバアプリケーションとの間でローカルな規定を設け，例えばデータの特定位置にデータ長や通番などを埋め込み，パケット受信時にこれらの情報（データ長，通番）から連続性をチェックする方式が考えられる。
【００１２】
しかし，この場合に，通信処理プログラムは，受信したパケットの特定位置に規定された範囲内の値が設定されていれば正しいパケットと判断してしまうため，パケットロスト等によって誤った値が設定されていたとしても，設定された値が解釈可能な値であれば正しいパケットだと認識されてしまい，誤動作する可能性がある。
【００１３】
また，通信処理プログラムの特性上，サーバアプリケーションは複数のクライアントアプリケーションと通信を行う。そのため，クライアントの特性に合わせた個別の規定を設定しなければならず，サーバアプリケーションのプログラム論理が複雑となる。加えて，プログラムの作成，テスト，メンテナンス等の作業に多大な工数が必要となる。
【００１４】
さらに，性能面においても，受信した全パケットに対してチェック処理が走行するため，通信性能の劣化が顕著化してしまう。
【００１５】
本発明は，このような問題に鑑みてなされたものであり，その目的は，冗長化システムにおいてフェイルオーバが発生した場合に，プロトコル制御において，ＴＣＰコネクション継続の可否をチェックできるようにして，アプリケーションレイヤでのリカバリ処理の負担軽減を可能にし，アプリケーションレイヤの高信頼化と高性能化を実現してシステムの連続運転性を向上させることができる装置，方法，およびプログラムを提供することである。
【課題を解決するための手段】
【００１６】
ここに開示する装置は，通信処理部を備える複数の装置で冗長化して構成されたシステムにおいて，前記装置各々に構成され，前記装置間での通信処理の切替時にコネクションリカバリ処理を行う装置である。
【００１７】
開示する装置は，現在通信処理を実行している状態を示す現用中（ＡＣＴＩＶＥ）の第１装置と，通信処理の実行を待機している状態を示す待機中（ＳＴＡＮＤＢＹ）の第２装置とが，ＴＣＰ／ＩＰプロトコル制御処理において，確立されたＴＣＰコネクションの情報と，コネクションで転送されるデータの送信および受信の連続性を示す送受信シーケンス番号とを，ＡＣＴＩＶＥの第１装置からＳＴＡＮＤＢＹの第２装置へ随時転送する機構を有する。
【００１８】
そして，開示の装置は，第１装置でフェイルオーバが発生した場合に，ＳＴＡＮＤＢＹからＡＣＴＩＶＥに切り替わった第２装置において，第１装置から引き継いだ情報を用いて，データパケットの連続性に基づいてＴＣＰコネクションの継続が可能か否かを判断する。コネクション継続可と判断すれば，現コネクションによる通信再開を，アプリケーションレイヤの通信処理部に通知する。
【００１９】
これにより，通信処理部では，パケット連続性のチェックなどの処理を行わずに，通信を再開することができ，処理負担が軽減される。
【００２０】
一方，開示の装置は，コネクション継続不可と判断すれば，当該コネクションを切断する。この場合には，通信処理部に対してコネクション切断事象が通知されるため，通信処理部が該当するコネクションのみを再接続するなどしてリカバリを行う。
【００２１】
より具体的には，開示する装置は，通信処理部を備える装置が冗長化されて構成されたシステムの前記装置各々に設けられるコネクションリカバリ装置であり，コネクション情報記憶部，コネクション情報引継部，ダミーデータ送信部，コネクション継続判定部とを備える。
【００２２】
現用中（ＡＣＴＩＶＥ）の装置に設けられたコネクションリカバリ装置において，コネクション情報引継部は，コネクション確立時にコネクションのコネクション情報を待機中（ＳＴＡＮＤＢＹ）の他の装置へ送信し，コネクションで転送される各データに付与された送受信シーケンス番号を他の装置へ送信する。
【００２３】
待機中の装置に設けられたコネクションリカバリ装置において，コネクション情報引継部は，コネクション情報および送受信シーケンス番号を受信してコネクション情報記憶部に格納し，受信したコネクション情報に基づいてコネクション確立を自装置の通信処理部へ通知する。そして，現用切替が通知された場合に，ダミーデータ送信部が，コネクション情報記憶部のコネクション情報に基づいてダミーデータを作成し，コネクションの相手側にダミーデータを送信する。さらに，コネクション継続判定部は，送信したダミーデータの応答データを受信し，応答データに付与された送受信シーケンス番号を取得し，応答データの送受信シーケンス番号がコネクション情報記憶部に格納された最新の送受信シーケンス番号と一致する場合に，自装置の通信処理部へコネクション継続可を通知する。
【００２４】
これにより，フェイルオーバが発生した場合に，切り替え通知によって新たに現用（ＡＣＴＩＶＥ）となった装置は，パケット転送の連続性を判断して，コネクション継続が可能かどうかをアプリケーションレイヤの通信処理部へ通知することができるため，通信処理部のコネクションリカバリ処理負担を軽減することができる。
【発明の効果】
【００２５】
本発明によれば，アプリケーションレイヤの通信処理部におけるパケット連続性をチェックする処理のための複雑なプログラミングが不要となる。
【００２６】
よって，フェイルオーバ時のＴＣＰコネクションリカバリ処理の高信頼化と高性能化の向上が図られる。
【００２７】
通信処理部（通信処理プログラム）を実装する顧客にとって，システム冗長化による信頼性向上に加え，フェイルオーバ時のＴＣＰコネクションのリカバリ処理の信頼性と性能の向上が可能となる。
【００２８】
また，通信処理部のプログラミングも簡素化することができるため，プログラム作成，テスト，メンテナンス等に要する工数を削減することが可能となる。
【図面の簡単な説明】
【００２９】
【図１】開示する装置の一実施形態における構成例を示す図である。
【図２】第１の実施例におけるフェイルオーバ発生前のコネクション情報引継処理を説明するための図である。
【図３】第１の実施例におけるコネクション管理テーブルのデータ構成例を示す図である。
【図４】第１の実施例における引継情報のデータ構成例を示す図である。
【図５】第１の実施例におけるフェイルオーバ発生時のコネクションリカバリ処理を説明するための図である。
【図６】第１の実施例におけるダミーパケット例を示す図である。
【図７】第１の実施例における応答パケット例を示す図である。
【図８】第１の実施例における，ＡＣＴＩＶＥ側のコネクション情報の引継処理の処理フローである。
【図９】第１の実施例における，ＳＴＡＮＤＢＹ側のコネクション情報の引継処理の処理フローである。
【図１０】第１の実施例における，コネクションリカバリ処理の処理フローである。
【図１１】データ受信時にパケット抜けが発生するタイミングを説明するための図である。
【図１２】第２の実施例における，ＡＣＴＩＶＥ側のコネクションリカバリ装置１ａのデータ受信時の処理のタイミングを説明するための図である。
【図１３】データ送信時にデータ送信のシーケンス番号の不整合が発生するタイミングを説明するための図である。
【図１４】第２の実施例におけるコネクション管理テーブルのデータ構成例を示す図である。
【図１５】第２の実施例における引継情報のデータ構成例を示す図である。
【図１６】第２の実施例における，ＡＣＴＩＶＥ側のコネクションリカバリ装置１ａのデータ送信時の処理のタイミングを説明するための図である。
【図１７】第２の実施例における，ＡＣＴＩＶＥ側のコネクション情報の引継情報の処理フローである。
【図１８】第２の実施例における，ＳＴＡＮＤＢＹ側のコネクション情報の引継処理の処理フローである。
【図１９】第２の実施例における，コネクションリカバリ処理の処理フローである。
【発明を実施するための形態】
【００３０】
開示する装置の実施の形態を，以下の実施例を用いて説明する。
【００３１】
図１は，開示する装置の一実施形態における構成例を示す図である。
【００３２】
コネクションリカバリ装置１は，通信処理装置１０に設けられる。通信処理装置１０は，ＴＣＰ／ＩＰプロトコルの通信処理を行う冗長化システムを構成する，中継装置，サーバ装置等である。
【００３３】
通信処理装置１０は，冗長化制御部１１，プロトコル制御部１２，通信処理部１３を備える。
【００３４】
冗長化制御部１１は，装置が通信処理を実行している状態を示す「現用中（ＡＣＴＩＶＥ）」と，装置が通信処理の実行を待機している状態を示す「待機中（ＳＴＡＮＤＢＹ）」との切り替えを通信処理装置１０に通知し，通信処理装置１０間のデータ転送を行う。
【００３５】
プロトコル制御部１２は，ＴＣＰプロトコル等の制御を行う。
【００３６】
通信処理部１３は，アプリケーションレイヤでのデータ通信サービスを行う。
【００３７】
〔第１の実施例〕
コネクションリカバリ装置１は，図１に示すように，プロトコル制御部１２と協働するように設けられ，コネクション情報引継部２，コネクション情報記憶部３，ダミーデータ送信部５，およびコネクション継続判定部６を有する。
【００３８】
コネクション情報引継部２は，コネクション情報の送信処理および受信処理を行う処理部である。
【００３９】
コネクション情報引継部２は，自装置がＡＣＴＩＶＥである場合に，プロトコル制御部１２でのコネクション確立時に，コネクションリカバリ用のコネクション管理テーブルを作成し，コネクション管理テーブルの内容をもとに作成したコネクション情報を，コネクション確立時の引継情報として，他のＳＴＡＮＤＢＹの通信処理装置１０のコネクションリカバリ装置１へ送信する。
【００４０】
さらに，コネクション情報引継部２は，このコネクションでデータ送受信がある度に，各データに付与された送受信シーケンス番号を，転送データ検出時の引継情報として，他のＳＴＡＮＤＢＹの通信処理装置１０のコネクションリカバリ装置１へ送信する。送受信シーケンス番号は，ＴＣＰヘッダのシーケンス番号（ｓｅｑ）および応答確認番号（ａｃｋ）を用いる。
【００４１】
コネクション情報引継部２は，自装置がＳＴＡＮＤＢＹである場合に，ＡＣＴＩＶＥの通信処理装置１０から送信されたコネクション確立時の引継情報（コネクション管理テーブルの情報）を，冗長化制御部１１を介して受信し，コネクション情報記憶部３に格納する。そして，コネクション確立を自装置の通信処理部１３へ通知する。
【００４２】
また，コネクション情報引継部２は，転送データ検出時の引継情報（各データの送受信シーケンス番号）を受信し，コネクション情報記憶部３に記憶されている該当コネクションの送受信シーケンス番号を最新の送受信シーケンス番号に更新する。
【００４３】
コネクション情報記憶部３は，コネクション管理テーブルの情報と，コネクション単位の最新の送受信シーケンス番号とを記憶する。
【００４４】
ダミーデータ送信部５は，フェイルオーバ事象が発生して，冗長化制御部１１から，自装置がＳＴＡＮＤＢＹからＡＣＴＩＶＥへ切り替わる通知を受信したことを契機に，コネクション情報記憶部３のコネクション情報に基づいて，データ長＝０のダミーパケットを作成し，ダミーデータをコネクションの相手方（クライアント）へ送信する。
【００４５】
コネクション継続判定部６は，ダミーパケットの応答パケット（ＡＣＫ）を受信し，応答パケットに付与された送受信シーケンス番号（シーケンス番号および応答確認番号）を取得する。応答パケットの送受信シーケンス番号には，クライアントが最新に処理したパケットの送受信シーケンス番号が付与されている。そこで，コネクション継続判定部６は，応答パケットから得た送受信シーケンス番号とコネクション情報記憶部３に格納された最新の送受信シーケンス番号とを比較する。これらの２つの送受信シーケンス番号（応答パケットのシーケンス番号と記憶された受信シーケンス番号，応答パケットの受信確認番号と記憶された送信シーケンス番号）が一致する場合には，ネットワーク上でパケットロストが発生しなかったと判断して，自装置の通信処理部１３へコネクション継続可を通知する。
【００４６】
一方，コネクション継続判定部６は，これら２つの送受信シーケンス番号が一致しない場合に，ネットワーク上でパケットロストが発生したと判断する。そして，この判断を受けて，プロトコル制御部１２が，このＴＣＰコネクションの切断処理を行う。コネクション継続判定部６は，ＴＣＰコネクションの切断後に，自装置の通信処理部１３へコネクション継続不可を通知する。
【００４７】
なお，通信処理部１３は，コネクション継続可が通知されると，作成していたソケットを使用して，データ送受信処理を継続する。一方，コネクション継続不可が通知されると，作成していたソケットを解放し，コネクション確立処理を行う。
【００４８】
図２は，第１の実施例における，フェイルオーバ発生前のコネクション情報引継処理を説明するための図である。図２において，冗長化システムの現用中（ＡＣＴＩＶＥ）の通信処理装置１０を第１装置１０ａとし，待機中（ＳＴＡＮＤＢＹ）の通信処理装置１０を第２装置１０ｓとする。
【００４９】
ステップＳ１：  第１装置１０ａの通信処理部１３ａとクライアント２０との間でＴＣＰコネクションが確立されると，コネクションリカバリ装置１ａのコネクション情報引継部２ａは，プロトコル制御部１２ａが作成したコネクション管理テーブルをコネクション情報記憶部３ａに記憶する。
【００５０】
図３に，第１の実施例における，コネクション管理テーブルのデータ構成例を示す。
【００５１】
コネクション管理テーブルは，コネクションを識別するコネクション識別子，自側ＩＰアドレス，自側ポート番号，相手側ＩＰアドレス，相手側ポート番号，送信パケットの送信シーケンス番号，受信応答パケットの受信シーケンス番号を格納する。
【００５２】
さらに，コネクション情報引継部２ａは，冗長化制御部１１ａが提供する装置間データ転送機構を使用して，コネクション管理テーブルの内容であるコネクション情報を，「コネクション確立時の引継情報」として第２装置１０ｓへ送信する。
【００５３】
ステップＳ２，Ｓ３：  コネクションリカバリ装置１ａのコネクション情報引継部２ａは，クライアント２０と通信処理部１３ａとの間のデータ転送を検出するたびに，各データの送受信シーケンス番号を取得し，取得した送受信シーケンス番号を「データ検出時の引継情報」として第２装置１０ｓへ送信する。
【００５４】
ステップＳ４：  第２装置１０ｓ側のコネクションリカバリ装置１ｓのコネクション情報引継部２ｓは，第１装置１０ａからのコネクション確立時の引継情報（コネクション管理テーブル）を受信してコネクション情報記憶部３ｓに格納する。さらに，コネクション情報引継部２ｓは，ＴＣＰコネクション確立を通信処理部１３ｓに通知する。
【００５５】
なお，通信処理部１３ｓは，ＴＣＰコネクション確立の通知を受けると，コネクション情報をもとに，ＴＣＰ／ＩＰ通信の自側エンドポイントとなるソケットを作成して，ＴＣＰコネクションを引き継ぐ準備を行う。
【００５６】
ステップＳ５：  コネクション情報引継部２ｓは，第１装置１０ａから随時通知されるデータ検出時の引継情報を受信して，コネクション情報記憶部３ｓのコネクション管理テーブルの該当するコネクションの送受信のシーケンス番号を最新化する。
【００５７】
なお，図２では図示しないが，第１装置１０ａのプロトコル制御部１２ａがコネクションを解放すると，コネクション情報引継部２ａは，「コネクション解放時の引継情報（解放されたコネクション識別子）」を，コネクションリカバリ装置１ｓへ通知する。
【００５８】
コネクション情報引継部２ｓは，コネクション解放時の引継情報を受信して，コネクション情報記憶部３ｓに格納している該当するコネクション情報を削除する。さらに，ＴＣＰコネクション解放を通信処理部１３ｓに通知する。
【００５９】
図４は，第１の実施例における引継情報のデータ構成例を示す図である。
【００６０】
図４（Ａ）は，コネクション確立時の引継情報のデータ構成例である。コネクション確立時の引継情報は，情報種別を識別する要求識別子（ＡＤＤ：コネクション情報の書き込み要求），コネクション識別子，自側ＩＰアドレス，自側ポート番号，相手側ＩＰアドレス，相手側ポート番号，送信シーケンス番号，受信シーケンス番号を含む。
【００６１】
図４（Ｂ）は，転送データ検出時の引継情報のデータ構成例である。転送データ検出時の引継情報は，要求識別子（ＭＯＤ：コネクション情報の更新要求），コネクション識別子，送信シーケンス番号，受信シーケンス番号を含む。
【００６２】
図４（Ｃ）は，コネクション解放時の引継情報のデータ構成例である。コネクション解放時の引継情報は，要求識別子（ＤＥＬ：コネクション情報の削除要求），コネクション識別子を含む。
【００６３】
図５は，第１の実施例における，フェイルオーバ発生時のコネクションリカバリ処理を説明するための図である。
【００６４】
第１装置１０ａでフェイルオーバ事象が検出されると，第１装置１０ａの冗長化制御部１１ａによって切替通知が送信される。この切替通知を受信した第２装置１０ｓの冗長化制御部１１ｓによって，第２装置１０ｓが現用化される。
【００６５】
冗長化制御部１１ｓが，プロトコル制御部１２ｓにＡＣＴＩＶＥへの切替を通知すると，コネクションリカバリ装置１ｓは，ＴＣＰコネクションのリカバリ処理を開始して，ＯＳ（カーネル）にＴＣＰコネクション情報を展開し，クライアント２０とのＴＣＰコネクションを擬似的に確立して，以下の処理が実行される。
【００６６】
ステップＳ６：  コネクションリカバリ装置１ｓのダミーデータ送信部５ｓは，図６に示すような，ヘッダのみ（データ長＝０）のダミーパケットを作成して，クライアント２０へ送出する。
【００６７】
ステップＳ７：  クライアント２０は，ダミーパケットを受信すると，このダミーパケットの応答（ＡＣＫ）パケットを返信する。
【００６８】
図７に，第１の実施例における応答パケットのデータ構成例を示す。図７に示す応答パケットのＴＣＰヘッダには，クライアント２０が最新に処理したパケットの送受信シーケンス番号（シーケンス番号と応答確認番号）とが付与されている。
【００６９】
コネクション継続判定部６ｓは，応答パケットに付与されている送受信シーケンス番号とコネクション情報記憶部３ｓに格納されている最新の送受信シーケンス番号とを比較する。
【００７０】
ステップＳ８：  コネクション継続判定部６ｓは，２つの送受信シーケンス番号が一致していれば，ネットワーク上でのパケットロストが発生しなかったと判断して，通信処理部１３ｓにコネクション継続可を通知する。
【００７１】
一方，２つの送受信シーケンス番号が一致しなければ，コネクション継続判定部６ｓは，ネットワーク上でのパケットロストが発生したと判断する。そして，プロトコル制御部１２ｓがこのＴＣＰコネクションの切断を行う。コネクション継続判定部６ｓは，コネクション切断後に，通信処理部１３ｓにコネクション継続不可を通知する。
【００７２】
なお，通信処理部１３ｓは，コネクション継続可が通知された場合に，準備したソケットによるデータ送受信処理を行い，コネクション継続不可が通知された場合に，準備したソケットを解放し，再度コネクション確立処理を行う。
【００７３】
図８〜図１０は，第１の実施例におけるコネクションリカバリ装置１の処理フロー図である。
【００７４】
図８は，ＡＣＴＩＶＥ側のコネクション情報の引継処理の処理フローである。
【００７５】
第１装置１０ａにおいて，コネクションリカバリ装置１ａのコネクション情報引継部２ａは，プロトコル制御部１２ａでコネクション確立完了があるかを調べ（ステップＳ１０），コネクション確立完了を検出した場合のみ（ステップＳ１０のＹ），図３に示すコネクション管理テーブルを作成する（ステップＳ１１）。コネクション情報引継部２ａは，図４（Ａ）に示すコネクション確立時の引継情報（要求識別子＝ＡＤＤ；コネクション管理テーブルのデータ）を生成し，コネクション確立時の引継情報の第２装置１０ｓのコネクションリカバリ装置１ｓへの転送を冗長化制御部１１ａへ依頼する。コネクション管理テーブルは，冗長化制御部１１ａ，１１ｓを介してコネクションリカバリ装置１ｓへ引き継がれる（ステップＳ１２）。
【００７６】
コネクション情報引継部２ａは，プロトコル制御部１２ａでデータ通過があるかを調べ（ステップＳ１３），データ通過を検出した場合にのみ（ステップＳ１３のＹ），図４（Ｂ）に示すデータ検出時の引継情報（要求識別子＝ＭＯＤ；通過したデータのコネクション識別子；その送受信シーケンス番号）を生成し，データ検出時の引継情報のコネクションリカバリ装置１ｓへの転送を冗長化制御部１１ａへ依頼する（ステップＳ１４）。
【００７７】
また，コネクション情報引継部２ａは，プロトコル制御部１２ａでコネクション解放があるかを調べ（ステップＳ１５），コネクション解放を検出した場合にのみ（ステップＳ１５のＹ），図４（Ｃ）に示すコネクション解放時の引継情報（要求識別子＝ＤＥＬ；解放されたコネクションのコネクション識別子）を生成し，コネクション解放時の引継情報のコネクションリカバリ装置１ｓへの転送を冗長化制御部１１ａへ依頼する（ステップＳ１６）。
【００７８】
図９は，ＳＴＡＮＤＢＹ側のコネクション情報の引継処理の処理フローである。
【００７９】
第２装置１０ｓにおいて，コネクションリカバリ装置１ｓのコネクション情報引継部２ｓは，冗長化制御部１１ｓを介して受信した引継情報の要求識別子を調べ（ステップＳ２０），要求識別子＝ＡＤＤであれば（ステップＳ２０のＹ），受信した引継情報をもとに，コネクション管理テーブルを作成してコネクション情報記憶部３ｓへ格納する（ステップＳ２１）。さらに，コネクション情報引継部２ｓは，コネクション確立事象を通信処理部１３ｓへ通知する（ステップＳ２２）。
【００８０】
また，コネクション情報引継部２ｓは，冗長化制御部１１ｓを介して受信した引継情報の要求識別子を調べ（ステップＳ２３），要求識別子＝ＭＯＤであれば（ステップＳ２３のＹ），該当するコネクションのコネクション管理テーブルを検索し，受信したコネクション情報をもとに送受信シーケンス番号を更新する（ステップＳ２４）。
【００８１】
また，コネクション情報引継部２ｓは，冗長化制御部１１ｓを介して受信した引継情報の要求識別子を調べ（ステップＳ２５），要求識別子＝ＤＥＬであれば（ステップＳ２５のＹ），該当するコネクションのコネクション管理テーブルを検索し解放する（ステップＳ２６）。
【００８２】
図１０は，コネクションリカバリ処理の処理フローである。
【００８３】
ＡＣＴＩＶＥへの切替通知を受けたコネクションリカバリ装置１ｓは，コネクション情報記憶部３ｓに記憶されている全てのコネクション管理テーブルに対して，ステップＳ３０〜Ｓ３６の処理を行う。
【００８４】
プロトコル制御部１２ｓがＯＳ（カーネル）上にコネクション情報（コネクション管理テーブル）を展開する（ステップＳ３０）。ダミーデータ送信部５ｓは，データ長＝０のダミーパケットを通信相手であるクライアント２０へ送信し，（ステップＳ３１）。コネクションリカバリ装置１ｓが，クライアント２０からの応答（ＡＣＫ）パケットを待ち合わせ，受信する（ステップＳ３２）。
【００８５】
コネクション継続判定部６ｓは，応答パケットの送受信シーケンス番号とコネクション管理テーブルの送受信シーケンス番号が一致するかを調べ（ステップＳ３３），送受信シーケンス番号が一致する場合には（ステップＳ３３のＹ），通信処理部１３ｓに「継続可」を通知する（ステップＳ３４）。
【００８６】
一方，コネクション継続判定部６ｓは，送受信シーケンス番号が一致しないと判断した場合には（ステップＳ３３のＮ），プロトコル制御部１２ｓが該当コネクションを切断する（ステップＳ３５）。コネクション継続判定部６は，通信処理部１３ｓに「継続不可」を通知する（ステップＳ３６）。
【００８７】
〔第２の実施例〕
第１の実施例の処理の場合には，データ送受信時のフェイルオーバによって，パケット抜けが発生するタイミングが存在するため，第２の実施例では，このようなタイミングにおいて，積極的にパケット抜けを検出してコネクションを切断できるようにする。
【００８８】
第１の実施例の処理では，コネクションの仕掛り中，すなわちデータ転送要求の実行中（送受信中）にパケット抜けが発生すると，コネクションリカバリ時にデータ送受信の状態を誤認識してしまうおそれがある。
【００８９】
第２の実施例では，ＡＣＴＩＶＥの第１装置１０ａのコネクションリカバリ装置１ａにおいて，冗長化制御部１１ａがコネクション仕掛り中であるか（データ送受信の処理中であるか）を判定する。そして，コネクション仕掛り中の場合にコネクションを切断できるようにするために，ＳＴＡＮＤＢＹの第２装置１０ｓのコネクションリカバリ装置１ｓが，データ送受信の際に最新状態の送受信シーケンス番号を認識できるようにする。これにより，一層の高信頼性を実現することができる。
【００９０】
第２の実施例におけるコネクションリカバリ装置１（１ａ，１ｓ）の構成は，図１の第１の実施例における構成例と同様であるが，さらに以下に説明する処理動作を行う。
【００９１】
（１）データ受信時におけるパケット抜けへの対応処理
図１１は，データ受信時にパケット抜けが発生するタイミングを説明するための図である。
【００９２】
第１の実施例では，第１装置１０ａのコネクションリカバリ装置１ａが，プロトコル制御部１２ａでデータ受信を検出した場合に，プロトコル制御部１２ａが冗長化制御部１１ａからデータを受信した直後のタイミングで（ｔ１），データ受信時の送受信シーケンス番号（シーケンス番号および応答確認番号）を取得し，取得した情報を「データ検出時の引継情報」として第２装置１０ｓへ送信する。例えば，第１装置１０ａでは，冗長化制御部１１ａがクライアント２０からのデータ（パケットｐ１，パケットｐ２，…）受信を開始すると，プロトコル制御部１２ａが，通信処理部１３ａのデータ受信要求を検出して，冗長化制御部１１ａから，受信したデータの送受信シーケンス番号（シーケンス番号（ｓｅｑ），応答確認番号（ａｃｋ））を取得する。コネクションリカバリ装置１ａのコネクション情報引継部２ａは，プロトコル制御部１２ａが取得した情報をもとに「データ検出時の引継情報」を生成して，ＳＴＡＮＤＢＹの通信処理装置１０ｂへ送信する。
【００９３】
ここで，プロトコル制御部１２ａが送受信シーケンス番号を取得するタイミングにおいて，冗長化制御部１１ａが次のパケットｐ２の受信を既に開始している場合には，冗長化制御部１１ａが保持する送受信シーケンス番号は，受信したパケットｐ２のものに更新されている。そのため，コネクション情報引継部２ａは，プロトコル制御部１２ａを介して，パケットｐ１の送受信シーケンス番号（ｓｅｑ＝１００，ａｃｋ＝１５０）ではなく，パケットｐ２の送受信シーケンス番号（ｓｅｑ＝１００，ａｃｋ＝２００）を取得してしまう。
【００９４】
取得した送受信シーケンス番号において，応答確認番号（ａｃｋ）が，通信処理部１３ａが未だ受信していないパケットｐ２のデータ分まで更新されているため，この情報をもとに生成された引継情報が，ＳＴＡＮＤＢＹの第２装置１０ｓへ送信されると，第２装置１０ｓは，ＡＣＴＩＶＥの第１装置１０ａが，実際には受信完了していないパケットｐ２まで受信完了した状態であると誤認識してしまう。
【００９５】
このような誤認識を防止するため，コネクション情報引継部２ａは，プロトコル制御部１２ａでデータ転送を検出した時に，このデータ転送が第１装置１０ａのデータ受信である場合に，冗長化制御部１１ａが有する，通信処理部１３ａへ転送する受信データを一時的に保持する領域である既存の受信バッファを調べる。受信バッファにデータが存在していなければ，コネクション仕掛り中ではないと判断して，データ転送時（受信時）のデータに付与された送受信シーケンス番号を取得し，取得した情報をもとにデータ転送時の引継情報を生成して第２装置１０ｓへ送信する。
【００９６】
具体的には，コネクション情報引継部２ａは，プロトコル制御部１２ａでのデータ転送を検出したことを契機に，このデータ転送がデータ受信である場合に，受信完了直後に，プロトコル制御部１２ａが冗長化制御部１１ａから取得したコネクション情報から，冗長化制御部１１ａの受信バッファにデータが残存しているかを調べる。
【００９７】
冗長化制御部１１ａの受信バッファにデータが残存しているかの判定は，冗長化制御部１１ａでの受信バッファの生成を示すフラグ情報，コネクション情報内の受信バッファ長等を参照することによって行われる。
【００９８】
そして，コネクション情報引継部２ａは，冗長化制御部１１ａの受信バッファにデータが存在していない場合のみ，受信したデータの送受信シーケンス番号をもとにコネクション情報記憶部３ａのコネクション管理テーブルを書き換え，データ検出時の引継情報を生成して，ＳＴＡＮＤＢＹの第２装置１０ｓへ送信する。
【００９９】
図１２は，第２の実施例における，ＡＣＴＩＶＥの第１装置１０ａのコネクションリカバリ装置１ａのデータ受信時の処理のタイミングを説明するための図である。
【０１００】
ＡＣＴＩＶＥの第１装置１０ａのプロトコル制御部１２ａは，通信処理部１３ａのデータ受信要求を検出したことを契機に，冗長化制御部１１ａからパケットｐ１（５０ｂｙｔｅ）を受信する。また，プロトコル制御部１２ａは，パケットｐ１の受信完了直後に，冗長化制御部１１ａからパケットｐ１の受信に対するコネクション情報を取得する（ｔ２）。
【０１０１】
コネクションリカバリ装置１ａのコネクション情報引継部２ａは，プロトコル制御部１２ａが冗長化制御部１１ａから取得したコネクション情報内の受信バッファ長から，冗長化制御部１１ａの受信バッファにデータが存在しているかを判定する。冗長化制御部１１ａが次のパケットｐ２（５０ｂｙｔｅ）の受信の最中であると，取得したコネクション情報の受信バッファ長は“０”以外の値である。また，コネクション情報が含む応答確認番号（ａｃｋ）も，パケットｐ２のデータ分まで更新されている（ａｃｋ＝２００）。
【０１０２】
コネクション情報引継部２ａは，冗長化制御部１１ａの受信バッファにデータが存在すると判定した場合に，データ検出時の引継情報を生成しない。
【０１０３】
冗長化制御部１１ａが，パケットｐ１に続けて，パケットｐ２（５０ｂｙｔｅ）を受信していると仮定する。
【０１０４】
プロトコル制御部１２ａは，通信処理部１３ａのデータ受信要求を検出したことを契機に，冗長化制御部１１ａが受信していたパケットｐ２（５０ｂｙｔｅ）を受信する。このデータ受信完了直後に，プロトコル制御部１２ａは，冗長化制御部１１ａからコネクション情報を取得する（ｔ３）。この時点で，冗長化制御部１１ａがパケットｐ２の受信以降にデータを受信していなければ，冗長化制御部１１ａの受信バッファのデータ長が“０”となる。
【０１０５】
コネクション情報引継部２ａは，冗長化制御部１１ａの受信バッファにデータがないと判定した場合に，プロトコル制御部１２ａが冗長化制御部１１ａから取得した受信データの送受信シーケンス番号にもとづいて，データ検出時の引継情報を生成し，第２装置１０ｓのコネクションリカバリ装置１ｓへ送信する。
【０１０６】
（２）データ送信時におけるパケット不整合への対応処理
図１３は，データ送信時にデータ送信のシーケンス番号の不整合が発生するタイミングを説明するための図である。
【０１０７】
第１の実施例において，コネクションリカバリ装置１ａのプロトコル制御部１２ａは，通信処理部１３ａからのデータ送信要求を検出したことを契機に，冗長化制御部１１ａでのデータ送信完了の直後のタイミングで（ｔ４，ｔ５），冗長化制御部１１ａからデータ送信の送受信シーケンス番号を取得し，データ検出時（データ送信時）の引継情報の第２装置１０ｓへの送信を行う。
【０１０８】
しかし，通信処理部１３ａが送信要求したデータ（１００ｂｙｔｅ）が，冗長化制御部１１ａのＴＣＰレイヤによって分割され，複数パケット（５０ｂｙｔｅ）の状態で送信される場合がある。この場合に，分割されたパケットの一部の送信が遅延することがある。
【０１０９】
冗長化制御部１１aが，送信要求の全データの送信を完了する前に，プロトコル制御部１２ａが，一部のパケットの送信完了後のタイミングで，送受信シーケンス番号を取得すると（ｔ４），プロトコル制御部１２ａが取得した送受信シーケンス番号のシーケンス番号（ｓｅｑ）は送信したパケット分しか更新されていないことになる。
【０１１０】
コネクション情報引継部２ａが，このような情報をもとにデータ検出時（送信時）の引継情報を生成してＳＴＡＮＤＢＹの第２装置１０ｓへ送信すると，ＳＴＡＮＤＢＹの第２装置１０ｓでは，途中まで送信されたデータのシーケンス番号（ｓｅｑ）を引き継いだことになる。
【０１１１】
このような状態でフェイルオーバが発生して，通信処理の引継がなされると，クライアント２０の応答パケットの送受信シーケンス番号とＳＴＡＮＤＢＹの第２装置１０ｓのコネクションリカバリ装置１ｓが保持する引継情報の送受信シーケンス番号が一致する。その結果，コネクションリカバリ装置１ｓは，実際には，送信要求の一部のデータしか送信されず，データロストが発生しているにもかかわらず，第１装置１０ａでデータ送信が正しく完了して，コネクション継続可能と判断する。
【０１１２】
ＡＣＴＩＶＥの第１装置１０ａの冗長化制御部１１ａの送信バッファにデータが存在している場合に，コネクションリカバリ装置１ａが，ＳＴＡＮＢＹの第２装置１０ｓ引継情報を送信しないことによって，中途半端な状態での引継情報の送信を抑止することができる。しかし，データ送信時は，データ受信時と異なり，通信処理部１３ａから再度データ送信されることがないため，全データの送信完了後に引継情報を第２装置１０ｓへ送信する仕組み，例えば，タイマ制御による再送信処理等の機能が必要となる。
【０１１３】
したがって，第２の実施例において，送信側として，中途半端ではないシーケンス番号，すなわち，送信完了した場合のシーケンス番号を追加して通知することによって，不完全な送信状態での引継情報によるコネクション継続可の判断を防止する。
【０１１４】
そのため，コネクションリカバリ装置１ａのコネクション情報引継部２ａは，プロトコル制御部１２ａでデータ転送を検出した時に，このデータ転送が，第１装置１０ａの通信処理部１３ａのデータ送信である場合に，このデータ送信が完了した状態のシーケンス番号を示す情報として，送信予定の全データの分だけ更新した完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）を設ける。そして，コネクション情報引継部２ａは，データ転送時の送信データに付与された送受信シーケンス番号と完了シーケンス番号とを含むデータ転送時の引継情報を生成して，第２装置１０ｓのコネクションリカバリ装置１ｓへ送信する。
【０１１５】
また，コネクション継続判定部６ｓは，前記ダミーパケットの応答パケットに付与された送受信シーケンス番号の応答確認番号が，前記コネクション情報記憶部に格納された完了時シーケンス番号と一致する場合に，通信処理部１３ｓに「継続可」を通知する。
【０１１６】
第２の実施例において，完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ））は，冗長化制御部１１ａが，送信予定の全データ分を取得して記録する。プロトコル制御部１２ａは，冗長化制御部１１ａから，完了時シーケンス番号を含むコネクション情報を取得する。
【０１１７】
コネクションリカバリ装置１ａのコネクション情報引継部２ａは，プロトコル制御部１２ａが冗長化制御部１１ａから取得したコネクション情報をもとに，送信データの送受信シーケンス番号と完了時シーケンス番号とを，コネクション情報記憶部３ａのコネクション管理テーブルに記録する。さらに，コネクション情報引継部２ａは，コネクション管理テーブルをもとに「データ検出時の引継情報」を生成して第２装置１０ｓのコネクションリカバリ装置１ｓへ送信する。
【０１１８】
図１４は，第２の実施例におけるコネクション管理テーブルのデータ構成例を示す。第２の実施例におけるコネクション管理テーブルは，図３に示すコネクション管理テーブルに，完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）の項目を追加したものである。
【０１１９】
図１５は，第２の実施例における，引継情報のデータ構成例を示す図である。図１５（Ａ）に，コネクション確立時の引継情報のデータ構成例を，図１５（Ｂ）に，データ検出時の引継情報のデータ構成例を，図１５（Ｃ）に，コネクション解放時の引継情報のデータ構成例をそれぞれ示す。
【０１２０】
図１５（Ａ）および図１５（Ｃ）の引継情報は，図４（Ａ）および図４（Ｃ）に示す第１の実施例における引継情報と同じデータ構成である。
【０１２１】
図１５（Ｂ）のデータ検出時の引継情報は，図４（Ｂ）に示す引継情報のデータ項目に，完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）の項目を追加したものである。引継情報の完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）は，図１４に示すコネクション管理テーブルにもとづいて設定される。
【０１２２】
これにより，ＳＴＡＮＢＹの第２装置１０ｓがＡＣＴＩＶＥに切り替えられた場合に，引継情報内の完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）とクライアント２０の応答確認番号（ａｃｋ）とを比較することによって，送信されるべきデータすべてがクライアント２０に送信されたかを判定することが可能となる。
【０１２３】
図１６は，第２の実施例における，ＡＣＴＩＶＥの第１装置１０ａのコネクションリカバリ装置１ａのデータ送信時の処理のタイミングを説明するための図である。
【０１２４】
ＡＣＴＩＶＥの第１装置１０ａのプロトコル制御部１２ａは，通信処理部１３aのデータ（１００ｂｙｔｅ）の送信要求を検出する。冗長化制御部１１ａは，送信要求されたデータを分割し，２つのパケットｐ５，ｐ６（各５０ｂｙｔｅ）を送信し，送信予定のデータ分まで更新した完了時シーケンス番号を記録する。
【０１２５】
プロトコル制御部１２ａは，冗長化制御部１１ａのパケットｐ５の送信完了直後に（ｔ６），冗長化制御部１１ａから，パケットｐ５の送信の送受信シーケンス番号（シーケンス番号ｓｅｑ＝１００，応答確認番号ａｃｋ＝１００）と完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ＝２００）とを取得する。
【０１２６】
コネクションリカバリ装置１ａのコネクション情報引継部２ａは，プロトコル制御部１２ａが取得した送受信シーケンス番号と完了時シーケンス番号とをコネクション情報記憶部３ａのコネクション管理テーブルに記憶し，さらに，データ検出時（データ送信時）の引継情報を生成して，ＳＴＡＮＢＹの第２装置１０ｓのコネクションリカバリ装置１ｓに送信する。
【０１２７】
ＡＣＴＩＶＥに切り替わった第２装置１０ｓにおいて，コネクションリカバリ装置１ｓのコネクション継続判定部６ｓは，次のパケットｐ６の送信中にフェイルオーバが発生した場合に，ダミーデータ送信部５ｓが送信したダミーパケットに対するクライアント２０の応答パケットの応答確認番号（ａｃｋ＝１５０）と完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ＝２００）とを比較して，送信要求のデータが１番目のパケット（５０ｂｙｔｅ）分だけ送信されていることを認識することができる。そのため，第２装置１０ｓは，データロストの発生を認識することができる。
【０１２８】
なお，ＡＣＴＩＶＥの第１装置１０ａの通信処理部１３aがデータ（５０ｂｙｔｅ）の送信要求を行い，冗長化制御部１１ａが，データ（パケットｐ７）をそのまま送信する場合にも，完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）に送信されるデータ分を更新させた値を記録する。そして，コネクション情報引継部２ａは，冗長化制御部１１ａのパケットｐ５の送信完了直後に（ｔ７），冗長化制御部１１ａから，パケットｐ７の送信の送受信シーケンス番号（シーケンス番号ｓｅｑ＝２５０，応答確認番号ａｃｋ＝１００）と，完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ＝２５０）とを取得する。
【０１２９】
コネクションリカバリ装置１ａのコネクション情報引継部２ａは，前述と同様に引継情報を生成して，第２装置１０ｓへ送信する。コネクションリカバリ装置１ｓは，応答パケットの応答確認番号（ａｃｋ＝２５０）と完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ＝２５０）とが一致することから，送信要求のデータ全てが送信されていることを認識することができる。
【０１３０】
なお，前述の（１）データ受信時におけるパケット抜けへの対応処理においても，冗長化制御部１１ａは，完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）を記録し，コネクションリカバリ装置１ａは，図１４のコネクション管理テーブルおよび図１５の引継情報により，完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）を，ＳＴＡＮＢＹの第２装置１０ｓのコネクションリカバリ装置１ｓに引き継ぎを行う。
【０１３１】
図１７〜図１９は，第２の実施例におけるコネクションリカバリ装置１の処理フロー図である。
【０１３２】
図１７は，ＡＣＴＩＶＥ側のコネクション情報の引継情報の処理フローである。
【０１３３】
第１装置１０aにおいて，コネクションリカバリ装置１ａのコネクション情報引継部２ａは，プロトコル制御部１２ａでコネクション確立完了があるかを調べる（ステップＳ５０）。プロトコル制御部１２ａでコネクション確立完了を検出した場合のみ（ステップＳ５０のＹ），コネクション情報引継部２ａは，図１４に示すコネクション管理テーブルを作成する（ステップＳ５１）。さらに，コネクション情報引継部２ａは，図１５（Ａ）に示すコネクション確立時の引継情報（要求識別子＝ＡＤＤ；コネクション管理テーブルのデータ）を生成し，第２装置１０ｓのコネクションリカバリ装置１ｓへの転送を冗長化制御部１１ａへ依頼する。コネクション管理テーブルは，冗長化制御部１１ａ，１１ｓを介してコネクションリカバリ装置１ｓへ引き継がれる（ステップＳ５２）。
【０１３４】
コネクション情報引継部２ａは，プロトコル制御部１２ａでデータ送信があるかを調べる（ステップＳ５３）。プロトコル制御部１２ａでデータ送信があった場合には（ステップＳ５３のＹ），冗長化制御部１１ａは，送信要求のデータ長分だけ完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）を更新する（ステップＳ５４）。コネクション情報引継部２ａは，プロトコル制御部１２ａを介して，データ送信のコネクション識別子，送受信シーケンス番号（シーケンス番号，応答確認番号）および完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）を取得し，図１５（Ｂ）に示すデータ転送時の引継情報（要求識別子＝ＭＯＤ；通過したデータのコネクション識別子；その送受信シーケンス番号；完了時シーケンス番号）を生成し，生成した引継情報のコネクションリカバリ装置１ｓへの転送を冗長化制御部１１ａへ依頼する（ステップＳ５５）。
【０１３５】
プロトコル制御部１２ａでデータ送信がなければ（ステップＳ５３のＮ），ステップＳ５６の処理に進む。
【０１３６】
コネクション情報引継部２ａは，プロトコル制御部１２ａでデータ受信があるかを調べる（ステップＳ５６）。プロトコル制御部１２ａでデータ受信があった場合には（ステップＳ５６のＹ），コネクション情報引継部２ａは，冗長化制御部１１ａに受信バッファがあるかを調べる（ステップＳ５７）。冗長化制御部１１ａに受信バッファがない場合に（ステップＳ５７のＮ），コネクション情報引継部２ａは，プロトコル制御部１２ａを介して，データ受信のコネクション識別子，送受信シーケンス番号（シーケンス番号，応答確認番号）および完了時シーケンス番号（ｗｒｉｔｅ＿ｓｅｑ）を取得し，図１５（Ｂ）に示すデータ検出時の引継情報（要求識別子＝ＭＯＤ；通過したデータのコネクション識別子；その送受信シーケンス番号；完了時シーケンス番号）を生成し，生成した引継情報のコネクションリカバリ装置１ｓへの転送を冗長化制御部１１ａへ依頼する（ステップＳ５８）。
【０１３７】
プロトコル制御部１２ａでデータ受信がない場合（ステップＳ５６のＮ），または冗長化制御部１１ａに受信バッファがある場合（ステップＳ５７のＹ）は，ステップＳ５９の処理に進む。
【０１３８】
プロトコル制御部１２ａでデータ受信がなければ（ステップＳ５６のＮ），ステップＳ５９の処理に進む。
【０１３９】
コネクション情報引継部２ａは，プロトコル制御部１２ａでコネクション解放があるかを調べる（ステップＳ５９）。プロトコル制御部１２ａでコネクション解放を検出した場合には（ステップＳ５９のＹ），図１５（Ｃ）に示すコネクション解放時の引継情報（要求識別子＝ＤＥＬ；解放されたコネクションのコネクション識別子）を生成し，引継情報のコネクションリカバリ装置１ｓへの転送を冗長化制御部１１ａへ依頼する（ステップＳ５１０）。
【０１４０】
図１８は，ＳＴＡＮＤＢＹ側のコネクション情報の引継処理の処理フローである。
【０１４１】
第２装置１０ｓにおいて，コネクションリカバリ装置１ｓのコネクション情報引継部２ｓは，冗長化制御部１１ｓを介して受信した引継情報の要求識別子を調べ（ステップＳ６０），要求識別子＝ＡＤＤであれば（ステップＳ６０のＹ），受信した引継情報をもとに，図１４に示すコネクション管理テーブルを作成し，コネクション情報記憶部３ｓへ格納する（ステップＳ６１）。さらに，コネクション情報引継部２ｓは，コネクション確立事象を通信処理部１３ｓへ通知する（ステップＳ６２）。
【０１４２】
また，コネクション情報引継部２ｓは，冗長化制御部１１ｓを介して受信した引継情報の要求識別子を調べ（ステップＳ６３），要求識別子＝ＭＯＤであれば（ステップＳ６３のＹ），該当するコネクションのコネクション管理テーブルを検索し，受信したコネクション情報をもとに送受信シーケンス番号を更新する（ステップＳ６４）。
【０１４３】
また，コネクション情報引継部２ｓは，冗長化制御部１１ｓを介して受信した引継情報の要求識別子を調べ（ステップＳ６５），要求識別子＝ＤＥＬであれば（ステップＳ６５のＹ），該当するコネクションのコネクション管理テーブルを検索し解放する（ステップＳ６６）。
【０１４４】
図１９は，コネクションリカバリ処理の処理フローである。
【０１４５】
ＡＣＴＩＶＥへの切替通知を受けたコネクションリカバリ装置１ｓにおいて，コネクションリカバリ装置１ｓが，コネクション情報記憶部３ｓに記憶されている全てのコネクション管理テーブルに対して，ステップＳ７０〜Ｓ７７の処理を行う。
【０１４６】
プロトコル制御部１２ｓがＯＳ（カーネル）上にコネクション情報（コネクション管理テーブル）を展開する（ステップＳ７０）。ダミーデータ送信部５ｓは，図６に示す，データ長＝０のダミーパケットを通信相手であるクライアント２０へ送信し，（ステップＳ７１）。コネクションリカバリ装置１ｓが，クライアント２０からの図７に示す応答（ＡＣＫ）パケットを待ち合わせ，受信する（ステップＳ７２）。
【０１４７】
コネクション継続判定部６ｓは，応答パケットの送信シーケンス番号（ｓｅｑ）と図１４に示すコネクション管理テーブルの受信シーケンス番号とが一致するかを調べる（ステップＳ７３）。そして，コネクション継続判定部６ｓは，応答パケットのシーケンス番号とコネクション管理テーブルの受信シーケンス番号が一致する場合には（ステップＳ７３のＹ），さらに，応答パケットの受信シーケンス番号（ａｃｋ）とコネクション管理テーブルの完了時シーケンス番号が一致するかを調べる（ステップＳ７４）。
【０１４８】
応答パケットの受信シーケンス番号とコネクション管理テーブルの完了時シーケンス番号が一致する場合には（ステップＳ７４のＹ），通信処理部１３ｓに「継続可」を通知する（ステップＳ７５）。
【０１４９】
一方，コネクション継続判定部６ｓが，応答パケットの送信シーケンス番号とコネクション管理テーブルの受信シーケンス番号が一致しないと判断した場合（ステップＳ７３のＮ），または，応答パケットの受信シーケンス番号とコネクション管理テーブルの完了時シーケンス番号とが一致しないと判断した場合には（ステップＳ７４のＮ），プロトコル制御部１２ｓが該当コネクションを切断する（ステップＳ７６）。コネクション継続判定部６は，通信処理部１３ｓに「継続不可」を通知する（ステップＳ７７）。
【０１５０】
以上，本発明をその実施の形態により説明したが，本発明はその主旨の範囲において種々の変形が可能であることは当然である。例えば，図１９の処理において，ステップＳ７３の処理の前に，ステップＳ７４の処理を行ってもよい。
【０１５１】
また，開示するコネクションリカバリ装置１のコネクション情報引継部２，ダミーデータ送信部５，コネクション継続判定部６は，コンピュータにより読み取られ実行されるプログラムとして実施することが可能である。このプログラムは，コンピュータが読み取り可能な，可搬媒体メモリ，半導体メモリ，ハードディスクなどの適当な記録媒体に格納することができ，これらの記録媒体に記録して提供され，または，通信インタフェースを介して種々の通信網を利用した送受信により提供されるものである。
【符号の説明】
【０１５２】
１（１ａ，１ｓ）  コネクションリカバリ装置
２（２ａ，２ｓ）  コネクション情報引継部
３（３ａ，３ｓ）  コネクション情報記憶部
５（５ａ，５ｓ）  ダミーデータ送信部
６（６ａ，６ｓ）  コネクション継続判定部
１０（１０ａ，１０ｓ）  通信処理装置
１１（１１ａ，１１ｓ）  冗長化制御部
１２（１２ａ，１２ｓ）  プロトコル制御部
１３（１３ａ，１３ｓ）  通信処理部
２０  クライアント
【図１】
2010045760.tif 000003
【図２】
2010045760.tif 000004
【図３】
2010045760.tif 000005
【図４】
2010045760.tif 000006
【図５】
2010045760.tif 000007
【図６】
2010045760.tif 000008
【図７】
2010045760.tif 000009
【図８】
2010045760.tif 000010
【図９】
2010045760.tif 000011
【図１０】
2010045760.tif 000012
【図１１】
2010045760.tif 000013
【図１２】
2010045760.tif 000014
【図１３】
2010045760.tif 000015
【図１４】
2010045760.tif 000016
【図１５】
2010045760.tif 000017
【図１６】
2010045760.tif 000018
【図１７】
2010045760.tif 000019
【図１８】
2010045760.tif 000020
【図１９】
2010045760.tif 000021