(57)【特許請求の範囲】
【請求項１】
制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部と、サービス用と制御用の複数のIPアドレスとをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備し、稼動系および待機系のサーバの両方がスイッチを介して対向端末に接続され、稼動系及び待機系が同一のサービス用IPアドレスを共有し、稼動系でのみ概サービス用IPアドレスを有効化するＴＣＰセッション切替装置であって、
前記稼動系のサーバの制御部は、稼動系サーバのソケット部とＴＣＰ部とＩＰ部からソケット情報を取得し、系切り替えの際には、稼動系サーバによる引き継ぐべきTCPセッションのパケット送受信を停止し、サービス用の引き継ぐべきIPアドレスを停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信し、
前記待機系サーバの制御部は、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始し、
前記ソケット情報が、パケットの、次に送信する番号を示すシーケンス番号、送信先のコンピュータから送信元のコンピュータへ送られる信号を受け取ったシーケンス番号、次に受信するシーケンス番号をそれぞれ示す第１ないし第３のシーケンス番号を含み、
稼動系および待機系サーバの制御部は、パケットを対向端末へ送信した後に、前記対向端末より、第１及び第３のシーケンス番号の通知を受信すると、直前に送信したパケットの第１及び第３のシーケンス番号を通知されたシーケンス番号に上書きして前記対向端末へ送信することを特徴とするＴＣＰセッション切替装置。
【請求項２】
請求項１記載のＴＣＰセッション切替装置において、
ソケット情報が、TCPヘッダのパケットのタイムスタンプを含み、
稼動系および待機系サーバの制御部は、パケットを対向端末へ送信した後に、前記対向端末より前記タイムスタンプの通知を受信すると、直前に送信したパケットのタイムスタンプを、通知されたタイムスタンプを基準として補正して前記対向端末へ送信することを特徴とするＴＣＰセッション切替装置。
【請求項３】
制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部とをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備するＴＣＰセッション切替装置と、前記ＴＣＰセッション切替装置の稼動系および待機系のサーバのいずれかとスイッチを介して接続される対向端末と、からなるＴＣＰセッション切替システムであって、
前記稼動系のサーバの制御部は、稼動系サーバのソケット部とＴＣＰ部とＩＰ部から、パケットの、次に送信する番号を示すシーケンス番号、送信先のコンピュータから送信元のコンピュータへ送られる信号を受け取ったシーケンス番号、次に受信するシーケンス番号をそれぞれ示す第１ないし第３のシーケンス番号を含むソケット情報を取得し、系切り替えの際には、稼動系サーバによるパケット送受信を停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信し、
前記待機系サーバの制御部は、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始し、
前記対向端末は、前記稼動系または待機系サーバより送られてきたパケットの第１及び第３のシーケンス番号を前回受信したパケットのものと比較し、過去のものであると判断した場合には、前回受信したパケットの各シーケンス番号に基づいた第１及び第３のシーケンス番号を前記稼動系または待機系サーバへ送信し、
稼動系または待機系サーバの制御部は、パケットを対向端末へ送信した後に、前記対向端末より、第１及び第３のシーケンス番号の通知を受信すると、直前に送信したパケットの第１及び第３のシーケンス番号を通知されたシーケンス番号に上書きして前記対向端末へ送信することを特徴とするＴＣＰセッション切替システム。
【請求項４】
制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部とをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備するＴＣＰセッション切替装置と、前記ＴＣＰセッション切替装置の稼動系および待機系のサーバのいずれかとスイッチを介して接続される対向端末と、からなるＴＣＰセッション切替システムであって、
前記稼動系のサーバの制御部は、稼動系サーバのソケット部とＴＣＰ部とＩＰ部から、パケットの、タイムスタンプを含むソケット情報を取得し、系切り替えの際には、稼動系サーバによるパケット送受信を停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信し、
前記待機系サーバの制御部は、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始し、
前記対向端末は、前記稼動系または待機系サーバより送られてきたパケットのタイムスタンプを前回受信したパケットのものと比較し、過去のものであると判断した場合には、前回受信したパケットのタイムスタンプを前記稼動系または待機系サーバへ送信し、
稼動系または待機系サーバの制御部は、パケットを対向端末へ送信した後に、前記対向端末よりタイムスタンプの通知を受信すると、直前に送信したパケットのタイムスタンプを、通知されたタイムスタンプを基準として補正して前記対向端末へ送信することを特徴とするＴＣＰセッション切替システム。
【請求項５】
制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部とをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備し、稼動系および待機系のサーバのいずれかがスイッチを介して対向端末に接続されるＴＣＰセッション切替装置で行われる切り替え方法であって、
前記稼動系のサーバの制御部が、稼動系サーバのソケット部とＴＣＰ部とＩＰ部からソケット情報を取得し、系切り替えの際には、稼動系サーバによるパケット送受信を停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信するステップと、
前記待機系サーバの制御部が、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始するステップと、を有し、
ソケット情報が、パケットの、次に送信する番号を示すシーケンス番号、送信先のコンピュータから送信元のコンピュータへ送られる信号を受け取ったシーケンス番号、次に受信するシーケンス番号をそれぞれ示す第１ないし第３のシーケンス番号を含み、
稼動系および待機系サーバの制御部が、パケットを対向端末へ送信した後に、前記対向端末より、第１及び第３のシーケンス番号の通知を受信すると、直前に送信したパケットの第１及び第３のシーケンス番号を通知されたシーケンス番号に上書きして前記対向端末へ送信するステップを行うことを特徴とするＴＣＰセッション切替方法。
【請求項６】
請求項５に記載のＴＣＰセッション切替方法において、
ソケット情報が、TCPヘッダのパケットのタイムスタンプを含み、
稼動系および待機系サーバの制御部が、パケットを対向端末へ送信した後に、前記対向端末より前記タイムスタンプの通知を受信すると、直前に送信したパケットのタイムスタンプを、通知されたタイムスタンプを基準として補正して前記対向端末へ送信するステップを行うことを特徴とするＴＣＰセッション切替方法。
【請求項７】
制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部とをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備するＴＣＰセッション切替装置と、前記ＴＣＰセッション切替装置の稼動系および待機系のサーバのいずれかとスイッチを介して接続される対向端末と、からなるＴＣＰセッション切替システムで行われる切り替え方法であって、
前記稼動系のサーバの制御部が、稼動系サーバのソケット部とＴＣＰ部とＩＰ部から、パケットの、次に送信する番号を示すシーケンス番号、送信先のコンピュータから送信元のコンピュータへ送られる信号を受け取ったシーケンス番号、次に受信するシーケンス番号をそれぞれ示す第１ないし第３のシーケンス番号を含むソケット情報を取得し、系切り替えの際には、稼動系サーバによるパケット送受信を停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信するステップと、
前記待機系サーバの制御部が、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始するステップと、
前記対向端末が、前記稼動系または待機系サーバより送られてきたパケットの第１及び第３のシーケンス番号を前回受信したパケットのものと比較し、過去のものであると判断した場合には、前回受信したパケットの各シーケンス番号に基づいた第１及び第３のシーケンス番号を前記稼動系または待機系サーバへ送信するステップと、
稼動系または待機系サーバの制御部が、パケットを対向端末へ送信した後に、前記対向端末より、第１及び第３のシーケンス番号の通知を受信すると、直前に送信したパケットの第１及び第３のシーケンス番号を通知されたシーケンス番号に上書きして前記対向端末へ送信するステップと、を有することを特徴とするＴＣＰセッション切替方法。
【請求項８】
制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部とをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備するＴＣＰセッション切替装置と、前記ＴＣＰセッション切替装置の稼動系および待機系のサーバのいずれかとスイッチを介して接続される対向端末と、からなるＴＣＰセッション切替システムで行われる切り替え方法であって、
前記稼動系のサーバの制御部が、稼動系サーバのソケット部とＴＣＰ部とＩＰ部から、パケットの、タイムスタンプを含むソケット情報を取得し、系切り替えの際には、稼動系サーバによるパケット送受信を停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信するステップと、
前記待機系サーバの制御部が、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始するステップと、
前記対向端末が、前記稼動系または待機系サーバより送られてきたパケットのタイムスタンプを前回受信したパケットのものと比較し、過去のものであると判断した場合には、前回受信したパケットのタイムスタンプを前記稼動系または待機系サーバへ送信するステップと、
稼動系または待機系サーバの制御部が、パケットを対向端末へ送信した後に、前記対向端末よりタイムスタンプの通知を受信すると、直前に送信したパケットのタイムスタンプを、通知されたタイムスタンプを基準として補正して前記対向端末へ送信するステップと、を有することを特徴とするＴＣＰセッション切替方法。
【請求項９】
請求項１または請求項２に記載の装置をコンピュータシステムに実現させるプログラム。
【請求項１０】
請求項９に記載のプログラムを格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、稼動系−待機系の２重化構成での稼動系から待機系への系切替え時に、ＴＣＰ（Transmission Control Protocol）セッションを救済する技術に関する。
【背景技術】
【０００２】
ネットワークサービスを提供するシステムには極めて高い信頼性、すなわち、長期間にわたって連続して稼動し続けるという性能（これを可用性とよぶ。）が要求される。具体的に説明すると、ネットワークサービスでは２４時間３６５日連続してサービスを提供し、典型的には年間のサービス可用性が９９．９９９％以上であることが要求される。
【０００３】
このため、従来は専用システムを用いるとともに、システムを二重化するなどして、可用性を確保してきた。しかし、専用システムはコストが高く、安価にサービスの提供ができない問題があった。
【０００４】
そこで、ｘ８６アーキテクチャのハードウェアやオープンソースＯＳであるＬｉｎｕｘ（登録商標）など、汎用のハードウェアや汎用のＯＳを用いたシステムが用いられるようになってきた。
【０００５】
このため、汎用のハードウェアや汎用のＯＳを用いたシステムで上記した可用性を確保することが課題となっている。
【０００６】
そこで、Ｌｉｎｕｘを用いたシステム（以下、Ｌｉｎｕｘシステムとよぶ。）においても、サーバをクラスタ構成して、稼動系と待機系と二重化し、一方がフェイルしても、ＴＣＰ状態を引き継ぎ、切替えを意識させずに待機系で運用を継続させる技術が求められている。ここで、ＴＣＰセッションとは、ＴＣＰ接続を確立してから切断するまでをいい、障害が発生した場合に、代替サーバが処理やデータを引き継ぐことをフェイルオーバという。切替えを意識させずに稼動系から待機系に運用を継続させる技術をＴＣＰセッションフェイルオーバ技術と呼ぶ。
【０００７】
ＴＣＰ／ＩＰ通信においては、１つのＩＰアドレスは複数（通常は６５５３６個）の「ポート」から構成されている。このため、接続を行う場合は必ずＩＰアドレスとポート番号の組を指定する必要がある。この組をソケットという。
【０００８】
したがって、稼動系から待機系にサービスを切り替える場合には、Ｌｉｎｕｘカーネルから稼動系のソケット情報を取り出し、待機系に引き継ぐ仕組みが必要となる。
【０００９】
この課題を解決する技術としては、非特許文献１に示すように、TCP Connection Passing（以下、ＴＣＰＣＰと呼ぶ。）技術が報告されている。
【００１０】
稼動系のアプリケーションがカーネルの状態をコピーし、そのコピーを待機系のアプリケーションに渡し、待機系のアプリケーションが稼動系のカーネルの状態を設定することにより、対向端末に意識させることなく、切替えを達成する。
【非特許文献１】W. Almerberger, "TCP Connection Passing", Proceedings of the Linux Symposium,p.9-22,2004
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ＴＣＰセッションの切替えを意識させずに待機系に継続させるためには、ソケット情報だけではなく、ＴＣＰ部やＩＰ部のバッファに蓄積されたパケットも同時に引き継がれることが必要である。しかし、バッファに蓄えられたパケットとソケット情報を取得した後にも、パケットが送信されることがある。その場合、既に送られたパケットと、切替え後にバッファから送られたパケットのシーケンス番号やタイムスタンプについて矛盾が生じる恐れがある。このような矛盾が生じた場合には正常な通信ができない。
【００１２】
以上述べた、ＴＣＰＣＰは稼動系端末から待機系端末にソケットを引き継ぐ基本的な技術を示すとともに、シーケンス番号がＴＣＰ接続の同期を確保する重要なパラメータであることを指摘している。また、タイムスタンプが過去に飛ぶことで矛盾が生じたときは、矛盾するパケットを捨てるか、オフセットを設けることで解決できることが示唆されている。しかし、実用的な技術が確立されていないという問題があった。
【００１３】
本発明は上述したような従来の技術が有する問題点に鑑みてなされたものであって、稼動系から待機系への切り替えを円滑に行うとともに、パケットのシーケンス番号およびタイムスタンプの矛盾を解消する技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明によるＴＣＰセッション切替装置は、制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部と、サービス用と制御用の複数のIPアドレスとをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備し、稼動系および待機系のサーバの両方がスイッチを介して対向端末に接続され、、稼動系及び待機系が同一のサービス用IPアドレスを共有し、稼動系でのみ概サービス用IPアドレスを有効化するＴＣＰセッション切替装置であって、
前記稼動系のサーバの制御部は、稼動系サーバのソケット部とＴＣＰ部とＩＰ部からソケット情報を取得し、系切り替えの際には、稼動系サーバによる引き継ぐべきTCPセッションのパケット送受信を停止し、サービス用の引き継ぐべきIPアドレスを停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信し、
前記待機系サーバの制御部は、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始し、
前記ソケット情報が、パケットの、次に送信する番号を示すシーケンス番号、送信先のコンピュータから送信元のコンピュータへ送られる信号を受け取ったシーケンス番号、次に受信するシーケンス番号をそれぞれ示す第１ないし第３のシーケンス番号を含み、
稼動系および待機系サーバの制御部は、パケットを対向端末へ送信した後に、前記対向端末より、第１及び第３のシーケンス番号の通知を受信すると、直前に送信したパケットの第１及び第３のシーケンス番号を通知されたシーケンス番号に上書きして前記対向端末へ送信することを特徴とする。
【００１５】
この場合、ソケット情報が、パケットのタイムスタンプを含み、
稼動系および待機系サーバの制御部は、パケットを対向端末へ送信した後に、前記対向端末よりタイムスタンプの通知を受信すると、直前に送信したパケットのタイムスタンプを、通知されたタイムスタンプを基準として補正して前記対向端末へ送信することとしてもよい。
【００１６】
本発明によるＴＣＰセッション切替システムは、制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部とをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備するＴＣＰセッション切替装置と、前記ＴＣＰセッション切替装置の稼動系および待機系のサーバのいずれかとスイッチを介して接続される対向端末と、からなるＴＣＰセッション切替システムであって、
前記稼動系のサーバの制御部は、稼動系サーバのソケット部とＴＣＰ部とＩＰ部から、パケットの、次に送信する番号を示すシーケンス番号、送信先のコンピュータから送信元のコンピュータへ送られる信号を受け取ったシーケンス番号、次に受信するシーケンス番号をそれぞれ示す第１ないし第３のシーケンス番号を含むソケット情報を取得し、系切り替えの際には、稼動系サーバによるパケット送受信を停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信し、
前記待機系サーバの制御部は、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始し、
前記対向端末は、前記稼動系または待機系サーバより送られてきたパケットの第１及び第３のシーケンス番号を前回受信したパケットのものと比較し、過去のものであると判断した場合には、前回受信したパケットの各シーケンス番号に基づいた第１及び第３のシーケンス番号を前記稼動系または待機系サーバへ送信し、
稼動系または待機系サーバの制御部は、パケットを対向端末へ送信した後に、前記対向端末より、第１及び第３のシーケンス番号の通知を受信すると、直前に送信したパケットの第１及び第３のシーケンス番号を通知されたシーケンス番号に上書きして前記対向端末へ送信することを特徴とする。
【００１７】
本発明の他の形態によるＴＣＰセッション切替システムは、制御部と、ソケット部と、ＴＣＰ部と、ＩＰ部とをそれぞれ備える現在運用されている稼動系サーバと、待機系のサーバと、を具備するＴＣＰセッション切替装置と、前記ＴＣＰセッション切替装置の稼動系および待機系のサーバのいずれかとスイッチを介して接続される対向端末と、からなるＴＣＰセッション切替システムであって、
前記稼動系のサーバの制御部は、稼動系サーバのソケット部とＴＣＰ部とＩＰ部から、パケットの、タイムスタンプを含むソケット情報を取得し、系切り替えの際には、稼動系サーバによるパケット送受信を停止し、待機系サーバに対して系切り替えの要求を示す旨の要求信号と取得したソケット情報とを前記待機系サーバへ送信し、
前記待機系サーバの制御部は、前記要求信号とソケット情報を受信すると、受信したソケット情報を待機系サーバのソケット部、ＴＣＰ部、ＩＰ部に設定し、待機系サーバによるパケット送受信を開始し、
前記対向端末は、前記稼動系または待機系サーバより送られてきたパケットのタイムスタンプを前回受信したパケットのものと比較し、過去のものであると判断した場合には、前回受信したパケットのタイムスタンプを前記稼動系または待機系サーバへ送信し、
稼動系または待機系サーバの制御部は、パケットを対向端末へ送信した後に、前記対向端末よりタイムスタンプの通知を受信すると、直前に送信したパケットのタイムスタンプを、通知されたタイムスタンプを基準として補正して前記対向端末へ送信することを特徴とする。
【００２０】
本発明によるプログラムは、上記のＴＣＰセッション切替装置をコンピュータシステムに実現させる。
【００２１】
本発明による記録媒体は上記のプログラムを格納する。
【発明の効果】
【００２２】
上記のように構成される本発明においては、稼動系のサーバから待機系のサーバヘの切り替えを行う際に、稼動系サーバによるパケット送受信を停止し、ソケット情報を稼動系サーバから待機系サーバへのコピーが終了した後に待機系サーバによるパケット送受信が開始されるため、稼動系のサーバから待機系のサーバへの切り替えを円滑に行うことができる。
【００２３】
また、ソケット情報に加え、シーケンス番号やタイムスタンプの補正が行われるように構成したものにおいては、シーケンス番号およびタイムスタンプに矛盾がないため、系切替えを意識させないで稼動系から待機系に切り替えることができる効果がある。
【発明を実施するための最良の形態】
【００２４】
次に、本発明の実施例について図面を参照して説明する。
【００２５】
図１は本発明による二重化システムの構成を示すブロック図である。稼動系サーバ１０１と待機系サーバ２０１が二重化されている。対向端末３０１は、サーバ１０１またはサーバ２０１にスイッチ３０２を介して接続され、サーバ１０１またはサーバ２０１とパケットの送受信する端末である。
【００２６】
稼動系サーバ１０１と待機系サーバ２０１はＬｉｎｕｘシステムである。
【００２７】
カーネル１０２／２０２には、ＴＣＰ／ＩＰ通信のためのソケット部１０３／２０３、ＴＣＰ部１０４／２０４、ＩＰ部１０５／２０５を含む。ＴＣＰ部１０４／２０４、ＩＰ部１０５／２０５は送信バッファおよび受信バッファを備え、送信パケット、受信パケットを保持する。
【００２８】
なお、稼動系サーバ１０１、待機系サーバ２０１、および、対向端末３０１のいずれも、キーボード、マウス、受信装置等の入力装置、CPUなどの制御装置、ROM、RAM、HDDなどからなり、送受信パケットの記憶などを行う記憶装置、ディスプレイ、プリンタ、送信装置などの出力装置からなる一般的なコンピュータシステムにより構成されるものである。各制御装置は、ROM、RAM、HDDに格納されているプログラムに応じた処理を行うものであり、稼動系サーバ１０１と待機系サーバ２０１内の上述したカーネル１０２／２０２およびこれらの内部に構成されるソケット部１０３／２０３、ＴＣＰ部１０４／２０４、ＩＰ部１０５／２０５は、コンピュータシステム内に仮想的に構築されるものである。
【００２９】
また、ROM、RAM、HDD内に格納されるプログラムは、CD-ROM、DVD-ROM、フロッピーディスク、USBメモリなどの読み取り可能な記録媒体からこれらの入力装置を介して移入される形態やインターネットなどのネットワークを介して受信装置より移入される形態がある。本発明によるシステムはこれらのプログラムにより一般的なコンピュータシステム上に構築されるものであり、本発明にはこれらのプログラムや該プログラムを格納した記録媒体が含まれる。
【００３０】
図２は、稼動系から待機系に切替える時のフローチャートである。
【００３１】
待機系のサーバ２０１は、制御部２０６のソケット停止機能によりパケットの送受信は停止されており、パケットフィルタリングがかけられている。
【００３２】
上記のソケット停止機能とは、パケット送受信を停止する機能であり、制御部１０６，２０６からソケット停止要求を受けた場合に動作する。
【００３３】
パケットフィルタリングは、ＩＰ部のパケットの送信を停止する機能である。待機系サーバ２０１でソケット情報設定機能によるソケット情報設定中に、未設定のソケットに対するパケットを受信すると、ＴＣＰセッションが切断される。そこで、パケットフィルタリングにより、待機系サーバ２０１のソケット情報設定処理が完了するまで、ＩＰ部１０５のパケットの送信を停止する。
【００３４】
ステップＳ４０１では、フェイルオーバの場合を考慮して、稼動系サーバ１０１の制御部１０６が、任意のタイミングで、ソケット部１０３、ＴＣＰ部１０４、ＩＰ部１０５から、ソケット情報を取得する（図１の（１））。
【００３５】
ソケット情報取得機能は、ＴＣＰセッションの救済に必要なカーネル１０２／２０２内のソケット情報を制御部１０６／２０６へ渡す機能であり、制御部１０６／２０６からソケット情報取得要求を受けた場合に動作する。
【００３６】
ステップＳ４０２では、稼動系サーバ１０１の制御部１０６が系切替えのトリガを発生する（図１の（２））。
【００３７】
ステップＳ４０３では、稼動系サーバ１０１の制御部１０６とカーネル１０２の状態の不一致がないようにするため、また、対向端末３０１との状態不一致が起こらないようにするため、稼動系サーバ１０１の制御部１０６のソケット停止機能を用いて、ＴＣＰ部１０４でのパケットの送受信を停止させる（図１の（３））。
【００３８】
ステップＳ４０４では、カーネル１０２はＴＣＰセッションを復旧するために必要な情報と、送信バッファ、受信バッファの内容をソケット情報へコピーする。
【００３９】
ステップＳ４０５では、稼動系サーバ１０１の制御部１０６は、ソケット情報取得機能を用いて、ソケット情報をカーネル１０２から取得する（図１の（４））。
【００４０】
ステップＳ４０６では、稼動系サーバ１０１の制御部１０６は、ＩＰアドレス切替えのため、パケットを送受信しないようにパケットフィルタリングを行った後、ＩＰアドレスを削除する（図１（５））。
【００４１】
ステップＳ４０７では、稼動系サーバ１０１の制御部１０６は、ソケット情報を待機系サーバ２０１の制御部２０６に送信する。さらに、待機系サーバ２０１の制御部２０６に系切替え要求を送信する（図１（６））。
【００４２】
ステップＳ４０８では、待機系サーバ２０１の制御部２０６はＩＰ部２０５にＩＰアドレスを設定する（図１の（７））。
【００４３】
ステップＳ４０９では、待機系サーバ２０１の制御部２０６のソケット情報設定機能により、ソケット情報をカーネル２０２に設定する（図１の（８））。
【００４４】
ソケット情報設定機能とは、ＴＣＰ部１０４／２０４に対し、指定されたソケット情報を設定する機能である。
【００４５】
ステップＳ４１０では、待機系サーバ２０１の制御部２０６は、ソケット開始機能を用いて、パケット送受信を開始する（図１の（９））。送信バッファに送信すべきパケットがある場合は送信する。ここで、待機系サーバ２０１のシーケンス番号とタイムスタンプが対向端末とずれている可能性があるため、補正処理を行う。
【００４６】
ソケット開始機能とは、パケット送受信を再開する機能であり、制御部２０６よりソケット開始要求を受けた場合に動作する。
【００４７】
ステップＳ４１１では、待機系サーバ２０１の制御部２０６は、パケットフィルタリングを解除する。事実上、ここで対向端末３０１との通信が再開される（図１の（１０））。
【００４８】
ステップＳ４１２では、待機系サーバ２０１の通信再開が確認された時点で、稼動系の制御部１０６は、ソケット削除機能を用いてソケットをクローズする（図１の（１１））。
【００４９】
ソケット削除機能とは、不要になった稼動系サーバ１０１のソケットを削除する機能であり、制御部１０６よりソケット削除要求を受けた場合に動作する。
【００５０】
以上により、ソケット情報は稼動系サーバ１０１から待機系サーバ２０１にそのまま引き継がれるため、対向端末３−１は、切替えを意識することがない効果がある。
【００５１】
上記では、稼動系サーバ１０１の制御部１０６が切替えのトリガを出すとしたが、フェイルオーバの場合は、稼動系サーバ１０１の制御部１０６による異常の検出、スイッチオーバ（マスタの役割をスレーブに移動する）の場合は、管理者から制御部１０６への切替え通知によって稼動系サーバ１０１の制御部１０６がトリガを出すとしてもよい。
【００５２】
図３は切替えの処理を実行中にエラーが発生し、切戻すことが必要になった時の構成および動作を示す図であり、図４はその動作を詳細に示すフローチャートである。図３に示す構成は図１と基本的に同じである。
【００５３】
ステップＳ４１３では、待機系サーバ２０１の制御部２０６はＩＰアドレスを削除する。パケットフィルタリングは設定されたままとしておく（図３の（１２））。
【００５４】
ステップＳ４１４では、待機系サーバ２０１の制御部２０６は、稼動系サーバ１０１へ再度系切替え要求を送信する（図３の（１３））。
【００５５】
ステップＳ４１５では、稼動系サーバ１０１の制御部１０６は、ＩＰアドレスを設定する（図３の（１４））。
【００５６】
ステップＳ４１６では、稼動系サーバ１０１の制御部１０６は、ソケット開始機能によりパケット送受信を開始する（図３の（１５））。
【００５７】
ステップＳ４１７では、稼動系サーバ１０１の制御部１０６は、パケットフィルタリングを解除する（図３の（１６））。
【００５８】
ステップＳ４１８では、対向端末３０１との通信を再開する。
【００５９】
このように、本実施例においては、切替えの処理において、エラーが発生しても、直ちに切戻すことができ、対向端末３０１は、切替えを意識することがないという効果がある。
【００６０】
次に、シーケンス番号、タイムスタンプの補正処理について説明する。
【００６１】
シーケンス番号とは、各パケットにユニークに設定され、セッション確立中は送信ごとにこの値を更新する。毎回送信したバイト数をシーケンス番号に足しこむことで、データストリームのどこまでを送受信したかを一意に判断することができる。
【００６２】
タイムスタンプは、パケットの中で古いパケットがあるかどうかを見つけるために使用される。タイムスタンプが時間的に前に戻っているように見える場合、対向端末３０１はそのパケットを破棄する。
【００６３】
稼動系サーバ１０１でソケット情報を取得した後でも、稼動系サーバ１０１と対向端末３０１は通信を行う可能性がある。すると、既に対向端末に送信されたパケットより、系切替え後に送信されたパケットがシーケンス番号、タイムスタンプが前である可能性がある。シーケンス番号、タイムスタンプに矛盾があると、正常な送受信ができない。そこで、切替え直後に限り、シーケンス番号とタイムスタンプを補正する。
【００６４】
図５は、シーケンス番号の補正の動作を示すタイムチャートである。
【００６５】
パケット送受信が行われ、稼動系サーバ１０１においてソケット情報が取得されたとする（時点５０１）。その時、ソケット情報として、稼動系サーバ１０１が次に送信するシーケンス番号がｓｅｑ１であり、ＡＣＫ（送信先のコンピュータから送信元のコンピュータへ送られる肯定的な信号）を受け取ったシーケンス番号がｓｅｑ２であり、次に受信する確認応答番号（ａｃｋｓｅｑ）がｓｅｑ１０３であったとする。
【００６６】
しかし、ソケット情報取得後も、系の切替えが行われるまでに、稼動系サーバ１０１と対向端末３０１との間でパケットの送受信が行われ、対向端末３０１では、次に送信するシーケンス番号がｓｅｑ１０４、ＡＣＫを受け取ったシーケンス番号がｓｅｑ１０５、確認応答番号がｓｅｑ６になっていたとする（時点５０２）。
【００６７】
この後、稼動系サーバ１０１から待機系サーバ２０１への系に切替えられると、待機系サーバ２０１にてソケット情報が設定され（時点５０３）、ソケット開始機能によりパケット送受信が開始される（時点５０４）。
【００６８】
待機系サーバ２０１から対向端末３０１に送信されるパケットのシーケンス番号は、初期状態であるｓｅｑ１、確認応答番号（ａｃｋｓｅｑ）はｓｅｑ３となる。対向端末３０１は、これらのシーケンス番号が、次に送信するシーケンス番号および確認応答番号のｓｅｑ１０４およびｓｅｑ６と異なるものであることから過去と判断する（時点５０５）。
【００６９】
そこで、対向端末３０１からＤ−ＳＡＣＫ信号（RFC 2833 - An Extension to the Selective Acknowledgment (SACK) Option for TCPで定義される）が送信され、次に送信するシーケンス番号はｓｅｑ１０４であり、次に受信を期待するシーケンス番号がｓｅｑ６であることを待機系サーバ２０１に通知する。これに基づき、待機系サーバ２０１が次に送信するシーケンス番号をｓｅｑ６、ＡＣＫを受け取ったシーケンス番号をｓｅｑ６、次に受信する確認応答番号（ａｃｋｓｅｑ）をｓｅｑ１０４と上書きにより補正（時点５０６）することにより、シーケンス番号の矛盾を解消することができる。
【００７０】
図６は、タイムスタンプの補正についてのタイムチャートの図である。
【００７１】
稼動系サーバ１０１が対向端末３０１よりソケット情報を取得した時点５０１をｔｓＡ１とする。その後も、稼動系サーバ１０１と対向端末３０１との間でパケットの送受信が行われ、ｔｓＡ１の後のｔｓＡ２の時点５０２まで、稼動系サーバ１０１はパケットを受け取っていたとする。
【００７２】
その後、稼動系サーバ１０１から待機系サーバ２０１への切替えられる。この後、時点５０３にてソケット情報が設定され、時点５０４にてソケットが開始されてパケットの送信が行われるが、このときに送られるパケットのタイムスタンプはｔｓＡ１となる。このタイムスタンｔｓＡ１は、ｔｓＡ２より古いため、対向端末３０１はそのパケットを廃棄する（時点５０５）。
【００７３】
その後、対向端末３０１は受信に成功した最新のパケットのタイムスタンプｔｓＡ２を、待機系サーバ２０１に送信し、待機系サーバ２０１はその時刻をベースに時間を計測し、パケットの時刻を補正する（時点５０６）。
【００７４】
これにより、タイムスタンプの矛盾を解消することができ、稼動系サーバ１０１から待機系サーバ２０１への切替えにより、パケットが廃棄されることを防ぐ効果がある。
【産業上の利用可能性】
【００７５】
本発明は高い可用性が要求されるネットワークサービスを提供するシステムにおいて利用することができる。
【図面の簡単な説明】
【００７６】
【図１】本発明にかかる二重化システムの構成を示す図である。
【図２】稼動系から待機系に切替える時のフローチャートである。
【図３】切戻すことが必要になった時の構成を示す図である。
【図４】待機系から稼動系に切戻す時のフローチャートである。
【図５】シーケンス番号の補正のタイムチャートの図である。
【図６】タイムスタンプの補正についてのタイムチャートである。
【符号の説明】
【００７７】
１０１    稼動系サーバ
２０１    待機系サーバ
１０２、２０２    カーネル
１０３、２０３    ソケット部
１０４、２０４    ＴＣＰ部
１０５、２０５    ＩＰ部
１０６、２０６    制御部
３０１    対向端末
３０２    スイッチ
５０１〜５０６    タイミング
Ｓ４０１〜Ｓ４１２    稼動系から待機系に切替える時のステップ
Ｓ４１３〜Ｓ４１８    待機系から稼動系に切戻す時のステップ
【図１】
0004550867.tif 000002
【図２】
0004550867.tif 000003
【図３】
0004550867.tif 000004
【図４】
0004550867.tif 000005
【図５】
0004550867.tif 000006
【図６】
0004550867.tif 000007