(57)【特許請求の範囲】
【請求項１】
未使用のアドレスを選択し、第一の通信機器からのパケットの宛先アドレスを前記選択したアドレスに書き換えて送出するアドレス変換部と、前記選択されたアドレスが割り当てられ、前記選択されたアドレスを宛先とするパケットを受信して第一の通信機器との間でセッションを確立するセッション確立部と、前記確立したセッション及び前記選択されたアドレスを第二の通信機器に転送するセッション転送部からなる切替えシステム。
【請求項２】
未使用のアドレスを選択し、第一の通信機器からのパケットの宛先アドレスを前記選択したアドレスに書き換えて送出するアドレス変換部と、前記選択されたアドレスを含む未使用のアドレスが割り当てられ、前記選択されたアドレスを宛先とするパケットを受信して第一の通信機器との間でセッションを確立するセッション確立部と、前記確立したセッションを前記選択したアドレスとともに第二の通信機器に転送するセッション転送部からなり、前記確立したセッションが転送されると、前記セッション確立部は、前記選択されたアドレスを割り当てアドレスから削除することを特徴とする切替えシステム。
【請求項３】
複数の第一の通信装置を代表するシステムアドレスを持ち、第二の通信装置が当該システムアドレスをパケットの宛先として要求した接続を前記複数の第一の通信装置のいずれかに接続する切換えシステムであって、
任意に使用可能な追加アドレスを選択し、前記第二の通信装置から受信したパケットの宛先アドレスを前記選択した追加アドレスに書き換えて送出するアドレス変換部と、
前記追加アドレスが割り当てられ、前記選択された追加アドレスを宛先とするパケットを受信して前記第二の通信装置との間でセッションを確立するセッション確立部と、
前記確立したセッションの、前記選択された追加アドレスを含むセッション情報を、選択した前記第一の通信装置に転送するセッション転送部を備え、
前記セッション情報が転送されると、前記選択された追加アドレスは前記セッション確立部の割り当てから削除されることを特徴とする切替えシステム。
【請求項４】
固定アドレスを有する複数のサーバ装置を代表するシステムアドレスを持ち、クライアント装置が当該システムアドレスをパケットの宛先として要求した接続を前記複数のサーバ装置のいずれかに接続する切換えシステムであって、
前記固定アドレスとは異なる任意に使用可能な追加アドレスの未使用の追加アドレスを選択し、前記クライアント装置から受信したパケットの宛先アドレスを前記選択した追加アドレスに書き換えて送出するアドレス変換部と、
前記未使用の追加アドレスを有し、前記選択された追加アドレスを宛先とするパケットを受信して前記クライアント装置との間でセッションを確立するセッション確立部と、
前記確立したセッションの、前記選択された追加アドレスを含むセッション情報を、選択した前記サーバ装置に転送するセッション転送部を備え、
前記セッション確立部は、前記セッション情報が転送されると、前記選択された追加アドレスを削除して使用状態とすることを特徴とする切替えシステム。
【請求項５】
固定アドレスを有する複数のサーバ装置を含むローカルネットワークに設置され、当該複数のサーバ装置を代表するシステムアドレスを有し、当該ローカルネットワーク外のクライアント装置が当該システムアドレスをパケットの宛先として要求した接続を前記複数のサーバ装置のいずれかに接続する切替えシステムにおいて、
前記固定アドレスとは別に任意に使用可能な追加アドレスを管理し、未使用の追加アドレスを選択し、前記クライアント装置から受信したパケットの宛先アドレスを前記選択した追加アドレスに書き換えて送出するアドレス変換部と、
前記未使用の追加アドレスが割り当てられ、前記選択された追加アドレスを宛先とするパケットを受信して前記クライアント装置との間でセッションを確立するセッション確立部と、
前記確立したセッションの、前記選択された追加アドレスを含むセッション情報を、選択した前記サーバ装置に転送するセッション転送部を備え、
前記セッション情報が前記サーバ装置に転送されると、前記セッション確立部に割り当てられた追加アドレスから前記選択された追加アドレスを削除して使用状態とすることを特徴とする切替えシステム。
【請求項６】
一時的に割り当てられたアドレス宛てのパケットを新規接続要求として受信すると、前記アドレスが割り当てられるセッションをパケットの送出元の第一の通信機器と確立するセッション確立部と、前記確立したセッション及び前記アドレスを第二の通信機器に転送するセッション転送部を有するディスパッチャ。
【請求項７】
前記セッション確立部が前記第一のクライアントとの間で確立したセッションを転送する第二の通信機器を複数の通信機器の中から選択する解析部をさらに有することを特徴とする請求項６に記載のディスパッチャ。
【請求項８】
アドレス変換部とセッション確立部とセッション転送部を有する切替えシステムにおける切替え方法であって、
アドレス変換部が、未使用のアドレスを選択し、第一の通信機器からのパケットの宛先アドレスを前記選択したアドレスに書き換えネットワークに送出する第一のステップと、前記セッション確立部が、前記選択されたアドレスを宛先とするパケットをネットワークから受信して、前記選択されたアドレスが割り当てられるセッションを第一の通信機器との間で確立する第二のステップと、前記確立したセッション及び前記選択されたアドレスをセッション転送部により第二の通信機器に転送する第三のステップを有する切替え方法。
【請求項９】
複数の第一の通信装置を代表するシステムアドレスを持つ切替え手段における、第二の通信装置が当該システムアドレスをパケットの宛先として要求した接続を前記複数の第一の通信装置のいずれかに接続する切換え方法であって、
任意に使用可能な追加アドレスを選択し、前記第二の通信装置から受信したパケットの宛先アドレスを前記選択した追加アドレスに書き換えて送出するアドレス変換ステップと、
前記追加アドレスが割り当てられたセッション確立手段において、前記選択された追加アドレスを宛先とするパケットを受信して前記第二の通信装置との間でセッションを確立するセッション確立ステップと、
前記確立したセッションの、前記選択された追加アドレスを含むセッション情報を、選択した前記第一の通信装置に転送するセッション転送ステップを有し、
前記セッション情報が転送されると、前記選択された追加アドレスは前記セッション確立手段の割り当てから削除されることを特徴とする切替え方法。
【請求項１０】
固定アドレスを有する複数のサーバ装置を代表するシステムアドレスを持つ切替え手段における、クライアント装置が当該システムアドレスをパケットの宛先として要求した接続を前記複数のサーバ装置のいずれかに接続する切換え方法であって、
前記固定アドレスとは異なる任意に使用可能な追加アドレスの未使用の追加アドレスを選択し、前記クライアント装置から受信したパケットの宛先アドレスを前記選択した追加アドレスに書き換えて送出するアドレス変換ステップと、
前記未使用の追加アドレスを有するセッション確立手段において、前記選択された追加アドレスを宛先とするパケットを受信し、前記クライアント装置との間でセッションを確立するセッション確立ステップと、
前記確立したセッションの、前記選択された追加アドレスを含むセッション情報を、選択した前記サーバ装置に転送するセッション転送ステップを有し、
前記セッション情報が転送されると、前記セッション確立手段が有する前記選択された追加アドレスを削除して使用状態とすることを特徴とする切替え方法。
【請求項１１】
固定アドレスを有する複数のサーバ装置を含むローカルネットワークに設置され、当該複数のサーバ装置を代表するシステムアドレスを有し、当該ローカルネットワーク外のクライアント装置が当該システムアドレスをパケットの宛先として要求した接続を前記複数のサーバ装置のいずれかに接続する切替え方法において、
前記固定アドレスとは別に任意に使用可能な追加アドレスを管理し、未使用の追加アドレスを選択し、前記クライアント装置から受信したパケットの宛先アドレスを前記選択した追加アドレスに書き換えて送出するアドレス変換ステップと、
前記未使用の追加アドレスが割り当てられたセッション確立手段において、前記選択された追加アドレスを宛先とするパケットを受信して前記クライアント装置との間でセッションを確立するセッション確立ステップと、
前記確立したセッションの、前記選択された追加アドレスを含むセッション情報を、選択した前記サーバ装置に転送するセッション転送ステップを有し、
前記セッション情報が前記サーバ装置に転送されると、前記セッション確立手段に割り当てられた追加アドレスから前記選択された追加アドレスを削除して使用状態とすることを特徴とする切替え方法。
【請求項１２】
セッション確立部に、一時的に割り当てられたアドレス宛てのパケットを新規接続要求として受信すると、前記アドレスが割り当てられるセッションをパケットの送出元である第一の通信機器との間で確立させるステップと、前記確立したセッション及び前記アドレスを第二の通信機器に転送させるステップを実行させる切替えプログラム。
【請求項１３】
第一の通信機器からの特定のアドレス宛てパケットの送信元アドレスが、前記変換テーブルに登録されていないときは所定のデフォルトアドレスにパケットの宛先アドレスを書き換えてネットワーク送出し、前記変換テーブルに登録されているときは前記変換テーブルにしたがってパケットの宛先アドレスを書き換えてネットワークに送出するアドレス変換部と、前記デフォルトアドレスを宛先とするパケットを受信して第一の通信機器との間でセッションを確立するセッション確立部と、前記確立したセッションに割り当てるアドレスを未使用のアドレスから選択して前記変換テーブルに設定するセッション情報書き換え部と、前記確立したセッション及び前記選択されたアドレスを第二の通信機器に転送するセッション転送部からなる切替えシステム。
【請求項１４】
所定のアドレス宛てのパケットを新規接続要求として受信すると、パケットの送出元である第一の通信機器とセッションを確立するセッション確立部と、前記確立したセッションに割り当てるアドレスを未使用のアドレスから選択して前記変換テーブルに設定するセッション情報書き換え部と、前記確立したセッション及び前記選択されたアドレスを第二の通信機器に転送するセッション転送部を有するディスパッチャ。
【請求項１５】
前記セッション転送部は、前記サーバと前記第一の通信機器との間のセッションを切断するときに前記セッションに対応するエントリを削除する指示を出すことを特徴とする請求項１４に記載のディスパッチャ。
【請求項１６】
複数のサーバを代表するシステムアドレスを有するネットワークシステムにおいて、第一の通信機器とセッション確立部との間で確立されたセッションの前記セッション確立部が有するセッション情報の転送を受け取ることにより、前記第一の通信機器とのセッションをセッション確立部から引き継ぐセッション転送部と、第一の通信機器に対して送信するパケットの送信元アドレスを前記システムアドレスに書き換える機能を有し、
前記セッション転送部は、セッションを切断するときにネットワークシステム内の切替え装置におけるアドレスの変換テーブルから、前記サーバと前記第一の通信機器との間のセッションを切断するときに前記セッションに対応するエントリを削除する指示を出すことを特徴とする請求項１１に記載のサーバ。
【請求項１７】
第一の通信機器と第二の通信機器で確立したセッションを第一の通信機器と第三の通信機器のセッションに切り替えるセッション切替え方法であって、
前記切替え装置が、第一の通信機器からの特定のアドレス宛てパケットの送信元アドレスを、切替え装置内の変換テーブルに登録されていないときは所定のデフォルトアドレスにパケットの宛先アドレスを書き換えてネットワーク送出し、前記変換テーブルに登録されているときは前記変換テーブルにしたがってパケットの宛先アドレスを書き換えてネットワークに送出するステップと、
前記第二の通信機器が、前記デフォルトアドレスを宛先とするパケットを受信して第一の通信機器との間でセッションを確立するステップと、
前記第二の通信機器が、前記確立したセッションに割り当てるアドレスを未使用のアドレスから選択して前記変換テーブルに設定するステップと、
前記第二の通信機器が前記確立したセッション及び前記選択されたアドレスを第三の通信機器に転送するステップとからなるセッション切替え方法。
【請求項１８】
第一の通信機器からの所定のデフォルトアドレスを宛先とするパケットを受信して前記第一の通信機器との間でセッションを確立するステップと、
前記確立したセッションに未使用のアドレスから選択したアドレスを割り当てるステップと、
前記確立したセッションを前記第一の通信機器と第二の通信機器との間のセッションとして前記第二の通信機器に転送すると共に、前記選択されたアドレスを前記第二の通信機器に転送するステップとからなる通信機器におけるセッション転送方法。
【請求項１９】
第一の通信機器からの所定のデフォルトアドレスを宛先とするパケットを受信して前記第一の通信機器との間でセッションを確立させるステップと、
前記確立したセッションに未使用のアドレスから選択したアドレスを割り当てるステップと、
前記確立したセッションを前記第一の通信機器と第二の通信機器との間のセッションとして前記第二の通信機器に転送すると共に、前記選択されたアドレスを前記第二の通信機器に転送するステップを通信機器に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信機器間における切替えシステム、切替え方法、および切替えプログラムに関し、特に、簡便なアドレス変換テーブルの管理と少ないパケット書き換え処理で、クライアントとサーバのような通信機器の間の論理的なセッションの切替えを行なう、切替えシステム、切替え方法および切替えプログラムに関する。
【背景技術】
【０００２】
通常、ネットワークにつながれたサーバやクライアント等の通信機器はネットワークアドレス（以下、アドレス）を持つ。通信機器は、通信相手の機器のアドレスに対してセッションを確立し、そのセッションを通じてパケットを送受信することで通信を行なう。【０００３】
通信機器の持つアドレスとは、必ずしも１つの特定レイヤのアドレスだけである必要はない。例えば、下位レイヤのアドレスに対し、その直上のレイヤでのアドレスをマッピングすることも出来る。例えば、１つのデータリンク層のＭＡＣアドレスに対してネットワーク層のＩＰアドレスをマッピングすることが出来る。
また、１つのＩＰアドレスに対してトランスポート層の複数のポート番号をマッピングすることなども出来る。通信機器は、その割り当てられたいずれかのレイヤでのアドレス、またはそのマッピングを用いてパケットを送受信することが可能である。【０００４】
例えば、同一ドメイン（サブネット）内の通信においては、通信機器は、接続しようとしている相手通信機器が持つＩＰアドレスのＡＲＰリクエストを出す。当該ＩＰアドレスを持つ通信機器はリクエストに対してＭＡＣアドレスを返す。
ＭＡＣアドレスを受け取った通信機器は、返されたＭＡＣアドレスに対してパケットを送信する。このように２つのレイヤのアドレスに対するマッピングを利用することで、通信機器間でのパケットの送受信が実現できる。【０００５】
なお、以下においては、説明の都合上、特に断らない限り、アドレスとはＩＰアドレスであるとするが、ＩＰアドレスのみに制限されるものではない。また、通信機器間では、ＴＣＰ（Transmission
Control Protocol）の通信プロトコルを用いて通信がされているものとして説明するが、通信機器間でのプロトコルを限定している訳ではない。【０００６】
次いで、ＴＣＰにおける通信機器間におけるセッション確立動作の概要について説明する。【０００７】
通信機器は通信の相手となる通信機器に対して新規接続要求を送って双方向の通信セッションを確立する。その後、そのセッションを通じて通信機器間でデータの送受信が行われる。ＴＣＰにおいての新規接続要求は、ＳＹＮパケットの送出により始まる。そして、いわゆる３Ｗａｙハンドシェイクといわれる動作を通じて、セッションが確立される。このセッションの確立時にシーケンス番号の初期値がお互いに通知される。通信機器は、この初期値にそれまでに送出したパケットのデータ量に応じた値を加算したシーケンス番号をパケットに付して送信する。受信側では、受信したパケットのシーケンス番号を確認することで、パケットを損失無く受信したかを確認することができる。【０００８】
次に、従来の切替え装置について説明する。【０００９】
従来のこの種の切替え装置を備える通信システムが技術文献１（F５ Networks Japan、”BIG‐IP Load Balancer 520”［online］、インターネット＜URL
http：//www.f5networks.co.jp/ja/producuts/load_index.Html＞）に記載されている。【００１０】
図１８は、この技術文献１に記載された切替え装置を備える通信システムの接続構成を示すブロック図である。この通信システムは、ローカルネットワーク１２０内で接続された切替え装置１２１と複数のサーバ１３０−１〜１３０−ｎ、複数のクライアント１００−１〜１００−ｍ、ローカルネットワーク１２０とクライアント１００−１〜１００−ｍを接続するパケット交換網のネットワーク１１０で構成される。【００１１】
この従来の切替え装置１２１によるサーバの切替え動作の説明を、図１８の接続構成図と、さらに従来の切替え装置によるサーバ切替えの動作を示すシーケンス図である図１９を参照しながら行なう。クライアント（以下ではクライアント１００−１を用いて説明、図１９では７０．７０．７０．７０のアドレス）は、複数のサーバ１３０−１〜１３０−ｎを代表する宛先であるシステムアドレス（図１９では８０．８０．８０．８０）を有する切替え装置１２１と、セッションの確立を行なう（図１９の１９０１）。【００１２】
ローカルネットワーク１２０にある切替え装置１２１は、サーバ１３０−１〜１３０−ｎにリクエストを振り分けることで、サーバ負荷の分散を行なう。切替え装置１２１は、クライアント１００−１からセッション確立の要求を受けると、クライアント１００−１と切替え装置１２１の間で３Ｗａｙハンドシェイクの手順により、セッション確立を行なう（図１９の１９０１、１９０２、および１９０２と１９０３の間でクライアント１００−１から切替え装置１２１に送られる図示しないＡＣＫパケット）。そして、サーバへのリクエストがクライアント１００−１から切替え装置１２１に送られる（図１９の１９０３）。【００１３】
切替え装置１２１は、複数のサーバの中から何らかの選択基準によりサーバを選択し、クライアント１００−１からのリクエストを振り分ける。この際の選択基準としては、パケットのヘッダ部に記載された送信元アドレス等の通信制御に用いられる情報を基準にサーバを選択する方法でも良いし、パケットのペイロード部に含まれるアプリケーションレベルの情報等を基準としたものでも良い。アプリケーションレベルの情報等も用いると、セッション単位で、より柔軟に分散することも可能であるが、その分切替え装置１２１における処理負荷も大きくなる。また、リクエストの到着順に、異なるサーバに振り分けて行くラウンドロビンでサーバを選択しても良い。【００１４】
切替え装置１２１は、クライアント１００−１からのリクエストの振り分け先のサーバとして、サーバ１３０−１を選択したとする。【００１５】
切替え装置１２１は、サーバ１３０−１に対して切替え装置１２１からのセッションを３Ｗａｙハンドシェイクにより確立する（図１９の１９０４、１９０５、および１９０５と１９０６の間で切替え装置１２１からサーバ１３０−１に送られる図示しないＡＣＫパケット）。そして、サーバへのリクエストが切替え装置１２１からサーバ１３０−１に送られる（図１９の１９０６）。【００１６】
パケットのヘッダ部は、宛先アドレス、宛先ポート番号、送信元アドレス、送信元ポート番号、通信プロトコル種別、シーケンス番号、パケットのバイト数（サイズ）のようなヘッダ情報を有する。なお、図１９においては、ポート番号や通信プロトコル種別は動作の説明において不要なため、記載を省略している。また、受け取ったパケットのシーケンス番号を通知するＡＣＫパケットも送受されているが、図が煩雑になることから記載からは省略している。【００１７】
図１９において、切替え装置１２１が、クライアント１００−１から到着するパケットを１９０４以降で送信する際、パケットのヘッダ部にある宛先アドレス（図面および以下においてはＤｓｔと略記することあり。）、送信元アドレス（図面および以下においてはＳｒｃと略記することあり。）、およびシーケンス番号を書き換えて、パケットをサーバ１３０−１に送信する。【００１８】
図１９を用いて具体的に説明すると、切替え装置１２１はパケットのヘッダ部のＳｒｃを７０．７０．７０．７０（クライアント１００−１のアドレス）から１９２．１６８．１．９９（ローカルネットワーク１２０内で切替え装置１２１に割り当てられているアドレス）に書き換える。さらに、Ｄｓｔを８０．８０．８０．８０（サーバ１３０−１〜１３０−ｎを代表するシステムアドレス）から１９２．１６８．１．１００（選択したサーバ１３０−１のアドレス）に書き換える。【００１９】
以下に、切替え装置１２１におけるシーケンス番号の書き換え動作に関して説明する。【００２０】
シーケンス番号とは、セッション毎に、各パケットの送信方向別に決まるものである。セッションを確立する際のＳＹＮパケット（図１９での１９０１）のシーケンス番号（図１９では１００００）、またはそれに対するＳＹＮ−ＡＣＫのパケット（図１９での１９０２）のシーケンス番号（図１９では３００００）を各方向の初期値として決定し、以降、送信済みのパケットのサイズを加算した値が各方向のパケットにシーケンス番号として付加される。なお、ＳＹＮを含むパケット、セッションの終了を示すＦＩＮパケットは、サイズが０でも、シーケンス番号は１つ加算されることがＴＣＰ／ＩＰにおいて規定されている。【００２１】
同様に、切替え装置１２１とサーバ１３０−１の間のセッションに関しても、切替え装置１２１からサーバ１３０−１への送信方向でのシーケンス番号の初期値が図１９の１９０４のシーケンス番号５００００として、また、サーバ１３０−１から切替え装置１２１への送信方向でのシーケンス番号の初期値が図１９の１９０５のシーケンス番号８００００として決定される。【００２２】
切替え装置１２１は、切替え装置１２１からサーバ１３０−１への送信方向の初期値とクライアント１００−１から切替え装置１２１への送信方向のシーケンス番号の初期値との差分を記憶しておく。図１９の例では、５００００から１００００の値の差分である４００００を記憶しておく。そして、クライアント１００−１から到着する１９０３以降のパケットを中継してサーバ１３０−１に送信する際は、クライアント１００−１からのパケットに付加されたシーケンス番号を、そのシーケンス番号に差分を加算した値に書き換える。【００２３】
同様に、切替え装置１２１は、切替え装置１２１からクライアント１００−１への送信方向のシーケンス番号の初期値とサーバ１３０−１から切替え装置１２１への送信方向の初期値の差分を記憶しておく。図１９の例では、３００００から８００００の値の差分である−５００００を記憶しておく。そして、サーバ１３０−１から到着する１９０７以降のパケットを中継してクライアント１００−１に送信する際は、クライアント１００−１からのパケットに付加されたシーケンス番号を、そのシーケンス番号に差分を加算した値に書き換える。【００２４】
選択したサーバ１３０−１からの応答パケット（図１９の１９０７、１９０９）を受け取った切替え装置１２１は、そのパケットを、Ｓｒｃ、Ｄｓｔ、シーケンス番号のヘッダ情報を書き換えながらクライアント１００−１に送信する（図１９の１９０８、１９１０）。サーバ１３０−１は、全ての応答パケットを送信し終わった後にセッションを切断するためのパケットに終了フラグ（ＦＩＮ）をつけて送信する（図１９の１９１１）。それに応じて、切替え装置１２１からもサーバ１３０−１に対してＦＩＮのパケットを送信する（図１９の１９１２）。【００２５】
更に切替え装置１２１はクライアント１００−１にもＦＩＮのパケットを送信する（図１９の１９１３）。ＦＩＮのパケットを受けたクライアント１００−１からも、ＦＩＮのパケットが送信される（図１９の１９１４）。このようにして、クライアント１００−１と切替え装置１２１の間のセッション、切替え装置１２１とサーバ１３０−１の間のセッションは切断される。【００２６】
上述のように、従来の切替え装置においては、クライアントと切替え装置の間と、切替え装置とサーバの間の、それぞれが独立して確立された別々のセッションを、ヘッダ情報を書き換えてパケットを中継することにより、論理的に１つのセッションのように見せ、クライアントとサーバを通信させることを実現している。このようなヘッダ情報の書き換えによる論理的なセッションの確立手法については、例えば、技術文献２（David
Maltz et al., “TCP Splicing for Application Layer Proxy Performance” IBM
Research Report, RC21139）に示されている。【００２７】
上記のヘッダ情報の書き換えを行なうには、ネットワークアドレス変換（Network Address Translator以下、単にＮＡＴと称す。）と呼ばれる図２０に示されるような情報をテーブルとして管理する必要がある。具体的には、サーバ１３０−１〜１３０−ｎを代表するシステムアドレス、および切替え装置に割り当てられたローカルネットワークのアドレスが１つずつしか存在しないとした場合で、少なくとも、図２０のテーブルにおける２００１の行に示されるように、クライアントのアドレス（クライアントアドレス）、クライアントのポート番号（クライアントポート番号）、切替え装置とサーバとの間における切替え装置側のポート番号(切替え装置ポート番号)、振り分け先のサーバのアドレス、クライアントのパケットをサーバに中継するときに加算するシーケンス番号値の差分（サーバ方向加算値）、サーバからのパケットをクライアントに中継するときに加算するシーケンス番号の差分（クライアント方向加算値）、をフィールドとして持つ必要がある。例えば、図１９で示した動作を行なう際には、図２０に示されるテーブルの２００２の行に記述されているような値が各フィールド値として記憶されることになる。クライアントアドレスと、クライアントポート番号は、切替え装置がクライアントと切替え装置間のセッションを識別するのに必要な情報であり、切替え装置ポート番号は、切替え装置が、切替え装置とサーバの間のセッションを識別するのに必要な情報である。【００２８】
新たなリクエストがクライアントから発せられると、再度サーバを選択し、図２０のテーブルにエントリを追加し、セッションを切断する際には図２０のテーブルでの該当するエントリを削除する動作が行われる。【００２９】
上記従来技術における第一の問題点は、アドレス変換のためのＮＡＴテーブルの管理が煩雑であることである。【００３０】
従来のサーバ切替えにおいては、サーバに固定的にアドレスが割り当てられているために、サーバを切り替えるときには、アドレスを付け替えてパケットを送出する必要があった。そのため、サーバを切り替える毎にＮＡＴテーブルのエントリのアドレスを更新する必要があった。また、パケットの送出順を管理するシーケンス番号の書き換えを行なうために、書き換えを行なう際に用いる情報をＮＡＴテーブルに記憶して管理する必要があった。【００３１】
第二の問題点は、パケットのヘッダの書き換え処理負荷が高いということである。従来の切替え装置では、パケットの送信元アドレス、送信先アドレス、シーケンス番号と多数の値を書き換えてパケットの送出が行われているからである。【００３２】
従って、本発明の課題は、サーバ等の通信機器の切替えを行なうために必要とされるＮＡＴテーブルの管理を簡略化することである。【００３３】
また、本発明のもう1つの課題は、パケットの書き換え処理を軽減することであり、より効率の良いサーバ切替えを実現することにある。
【発明の開示】
【００３４】
上記課題を解決するために、本発明の第１の態様によれば、クライアントからのセッション毎にアドレスを選択し、クライアントからのパケットの宛先アドレスをそのアドレスに付け替えて送信する切替え装置と、クライアントとのセッションを確立し、そのクライアントからのリクエストを処理するサーバを選択し、確立したセッション及び選択されたアドレスをそのサーバに転送するディスパッチャと、ディスパッチャが転送したセッション及びアドレスを引き継ぎ、クライアントからのリクエストを処理するサーバとで構成される切替えシステムが提供される。
【００３５】
本発明は、上記第１の態様に記載した切替えシステムのほかに、後述する請求の範囲に記載されているように、切替え装置、ディスパッチャ、サーバ、切替え方法、切替えプログラムに関する多くの態様を有する。
【００３６】
これらの各態様によって達成される本発明の第一の効果は、サーバを切り替える際に、切替え装置が持つＮＡＴテーブルを更新する必要がないことである。サーバに固定された固定アドレスに向けてパケットを送出するのではなく、セッション毎に選択されたアドレスに向けてパケットは送出される。セッションはアドレスとともに切り替えられるので、クライアントからの接続先サーバを切り替えてもパケットの送出先となるアドレスが変わらない。これにより第一の効果が実現されている。
【００３７】
本発明の第二の効果は、切替え装置でシーケンス番号を含めたセッション情報を書き換える必要がなく、パケットの書き換え負荷を軽減できることである。セッションの確立は、クライアントとディスパッチャの間で実現されるので、切替え装置では、セッションの状態を管理する必要がなくなるからである。
【００３８】
前記ならびに他の多くの本発明の課題、態様、そして利点は、本発明の原理に合致する好適な具体例が実施の形態として示されている以下の詳細な記述および添付の図面に関連して説明されることにより、当該技術の熟達者であれば明らかに理解されるであろう。
【図面の簡単な説明】
【００３９】
【図１】第一の実施の形態におけるサーバ切替えシステムの構成を示すブロック図である。
【図２】第一の実施の形態におけるアドレス管理方法を示すブロック図である。
【図３】第一の実施の形態におけるアドレス変換テーブル（ＮＡＴテーブル）を示す図である。
【図４】第一の実施の形態における切替え装置が、クライアントから受信したパケットをネットワークに送出する際に行なうアドレス変換の動作を示したフローチャートである。
【図５】第一の実施の形態における切替え装置が、サーバもしくはディスパッチャから受信したパケットをクライアントに送る際のアドレス変換を行なう動作を示したフローチャートである。
【図６】第一の実施の形態におけるディスパッチャがセッションをサーバに転送する動作を示したフローチャートである。
【図７】第一の実施の形態におけるサーバが、セッションをディスパッチャから受け取る際の動作を示したフローチャートである。
【図８】第一の実施の形態におけるクライアントが、新規接続要求のリクエストを発してからセッションを切断するまでの流れを示すフローチャートである。
【図９】第一の実施の形態に関する具体例におけるパケットの流れを示すシーケンス図である。
【図１０】第一の実施の形態に関する具体例におけるＮＡＴテーブル２２５の状態の推移を表す推移図である。
【図１１】第二の実施の形態におけるＮＡＴテーブルを示す図である。
【図１２】第二の実施の形態におけるアドレス変換部がクライアントから受信したパケットを処理する流れを表したフローチャートである。
【図１３】第二の実施の形態における切替え装置が、ディスパッチャもしくはサーバからクライアントに対して送信されたパケットを書き換える動作を示すフローチャートである。
【図１４】第二の実施の形態におけるサーバ切替えの動作を示すフローチャートである。
【図１５】第三の実施の形態におけるクライアントが、複数リクエストを送信し、返答を受け取る動作の流れを示すフローチャートである。
【図１６】第四の実施の形態におけるサーバ切替えシステムの構成を示すブロック図である。
【図１７】第四の実施の形態におけるクライアントが複数リクエストを送信した場合にそれに対しての返答がサーバからされるまでの流れを示すフローチャートである。
【図１８】従来の切替え装置を備える通信システムの接続構成を示すブロック図である。
【図１９】従来の切替え装置によるサーバ切替えの動作を示すシーケンス図である。
【図２０】従来のＮＡＴテーブルを示す図である。
【図２１】第五の実施の形態におけるサーバ切替えシステムの構成を示すブロック図である。
【図２２】第五の実施の形態におけるクライアントから受信したパケットのアドレス変換動作を示すフローチャートである。
【図２３】第五の実施の形態におけるクライアントにパケットを送信する際のアドレス変換動作を示すフローチャートである。
【図２４】第五の実施の形態におけるクライアントがリクエストを発してからセッションが切断されるまでを示すフローチャートである。
【図２５】第五の実施の形態における具体的な動作例のシーケンス図である。
【図２６】第六の実施の形態におけるクライアントから受信したパケットのアドレス変換動作を示すフローチャートである。
【図２７】第六の実施の形態におけるクライアントにパケットを送信する際のアドレス変換動作を示すフローチャートである。
【図２８】第七の実施の形態におけるクライアントから受信したパケットのアドレス変換動作を示すフローチャートである。
【図２９】第七の実施の形態におけるクライアントにパケットを送信する際のアドレス変換動作を示すフローチャートである。
【発明を実施するための最良の形態】
【００４０】
以下、本発明の好ましい幾つかの実施の形態を添付の図面を参照して詳細に説明する。【００４１】
（第一の実施の形態）
次に、本発明による第一の実施の形態を、図１から図１０までを参照して詳細に説明する。【００４２】
図１は、本発明による第一の実施の形態における切替えシステムの構成を示すブロック図である。
図１を参照すると、本発明による第一の実施の形態に係わる切替えシステム２００は、切替え装置２１０と、クライアントとの間で最初にセッションを確立しその確立したセッションをサーバに転送するディスパッチャ２４０と、１台以上のサーバ２５０−１〜２５０−ｎと、切替え装置２１０、ディスパッチャ２４０およびサーバ２５０−１〜２５０−ｎを相互に接続するネットワーク２３０によって構成される。また、図１にはディスパッチャ２４０が１台しか記載していないが、複数のディスパッチャが存在してもよい。またディスパッチャ２４０は、切替え装置２１０の外にあるとしているが、切替え装置２１０と一体となっていても良い。なお、ネットワーク２６０の先には、図示しないクライアントが存在する。【００４３】
本発明では、ローカルネットワーク２０１内のアドレスを、固定アドレスと追加アドレスの２種類に分けて扱う。固定アドレスは、切替え装置、ディスパッチャ及び各サーバに１つずつ割り当てられ、各装置の通信部に設定される。追加アドレスはローカルネットワーク環境が許す範囲の個数があり、クライアントからセッションの新規接続要求が来る毎に、後述する未使用アドレスとして管理されるアドレスの中から追加アドレスが選択されるが、この追加アドレスは、ディスパッチャか各サーバのいずれかに割り当てられ、各装置の通信部に設定される。したがって、状況によっては、ディスパッチャもしくは各サーバは、１つの固定アドレスと複数の追加アドレスを割り当てられてられる可能性がある。【００４４】
切替え装置２１０は少なくとも、クライアント側通信部２１１とサーバ側通信部２１２とアドレス変換部２２０とＮＡＴテーブル２２５とを含んで構成される。【００４５】
クライアント側通信部２１１はクライアントとの通信に使用されるためにネットワーク２６０につながれる任意の通信手段である。クライアント側通信部２１１には、ネットワーク２６０で一意の固定アドレスが割り当てられている。この固定アドレスを以下では、システムアドレスと呼ぶことにする。【００４６】
サーバ側通信部２１２はネットワーク２３０につながる任意の通信手段であり、ディスパッチャ２４０及びサーバ２５０−１〜２５０−ｎとの通信において使用される。サーバ側通信部２１２にはローカルネットワーク２０１内で固定のアドレスが割り当てられている。この固定アドレスは、ローカルネットワーク２０１では一意のものである。【００４７】
アドレス変換部２２０は、システムアドレスとローカルネットワーク２０１内のアドレスを相互に変換する部分である。つまり、クライアントからディスパッチャ２４０もしくはサーバ２５０−１〜２５０−ｎのいずれかに送信されたパケットのヘッダにある宛先アドレスを書き換えることと、ディスパッチャ２４０もしくはサーバ２５０−１〜２５０−ｎのいずれかからクライアント１００に送信されたパケットのヘッダに記述されている送信元アドレスを書き換えることを行なう。なお、従来の切替え装置とは異なり、シーケンス番号の書き換えを行なう必要はない。【００４８】
ＮＡＴテーブル２２５はアドレス変換部２２０において行なわれる相互アドレス変換のための、クライアントのアドレスとローカルネットワーク２０１内のアドレスの対応、及び、その状態をセッション毎に保持するテーブルである。少なくともＮＡＴテーブル２２５は、図３のテーブルの３０１の行に示されるように、クライアントのアドレス（クライアントアドレス）、クライアントのポート番号(クライアントポート番号)、ネットワーク２３０にパケットを送出する際に書き換えるアドレス（変換アドレス）をフィールドとして持つ必要がある。【００４９】
また、セッション毎の状態として、クライアントからサーバに向かう方向のセッションの維持、または終了を示すフィールドであるＦＩＮ属性（上り）と、サーバからクライアントに向かう方向のセッションの維持、または終了を示すフィールドであるＦＩＮ属性（下り）を持っている。ＦＩＮ属性（上り）及びＦＩＮ属性（下り）はセッションの終了を示す属性である。双方向通信においては、片方向ずつセッションの終了を宣言することも可能なため、ＦＩＮ属性は上り側と下り側の２つの属性を持つことで、クライアントとサーバとの間のセッションの状態を管理することができる。クライアント側からセッション終了が宣言されたらＦＩＮ属性（上り）を１にし、ローカルネットワーク側からセッション終了が宣言されたらＦＩＮ属性（下り）を１にする。いずれも初期値は０である。また、両者が１になったとき、当該エントリはアドレス変換部２２０により消去される。【００５０】
従来の切替え装置とは異なり、切替え装置とサーバとの間の切替え装置側のポート番号(切替え装置ポート番号)、クライアントのパケットをサーバに中継するときに加算するシーケンス番号値の差分（サーバ方向加算値）、サーバからのパケットをクライアントに中継するときに加算するシーケンス番号の差分（クライアント方向加算値）は不要である。【００５１】
次に、第一の実施の形態におけるアドレス変換の動作について説明する。【００５２】
図４は、切替え装置２１０がクライアントから受信したパケットをネットワーク２３０に送出する際に行なうアドレス変換の動作を示したフローチャートである。以下、図４を参照しながら、アドレス変換部２２０の動作を説明する。なお、第一の実施の形態の切替え装置２１０は、どのサーバにリクエストを振り分けるかについては意識しておらず、これから説明するように、アドレスを書き換えてパケットをネットワークに送出するだけであるため、従来の切替え装置においての説明のように、「サーバに送出する」とする表現ではなく、「パケットをネットワークに送出する」という表現を用いている。【００５３】
まず、クライアントが最初にセッションを確立するための新規接続要求のパケット（従来例の図１９における１９０１（ＳＹＮのパケット）に相当）が、システムアドレスを宛先として送信された場合のアドレス変換部２２０の動作を説明する。クライアント側通信部２１１からパケットを受け取った切替え装置２１０は、当該パケットが新規接続要求のパケットかどうかを判断し、新規接続要求パケットなら（ステップＳ４００でＹｅｓ）、追加アドレスとして使用可能なアドレスのうち、ＮＡＴテーブルのエントリの中で使用されていない未使用アドレス（つまり、通信中でない追加アドレス）を１つ選択する（ステップＳ４０１）。【００５４】
このときの選択アルゴリズムは従来からある任意のものが使える。例えば、図２に示されるように、未使用アドレスをリスト形式で管理する方法がある。クライアントからのリクエストに対して割り当てることが可能なアドレスの範囲が２０００１のテーブルに示されるようであるとする。そして、ＮＡＴテーブル２２５のエントリにおいてサーバアドレスとして用いられているアドレスを、使用アドレスとして、２０００２のようなリストとして管理し、２０００１に示される範囲のアドレスで、使用アドレスにないアドレスを、２０００３のような未使用アドレスリストとして管理する。ステップＳ４０１では、この未使用アドレスリスト２０００３の中から１つアドレスを選択し、未使用アドレスリストから抜き出し、使用アドレスリスト２０００２に追加する。そして、そのアドレスを変換アドレスとしてＮＡＴテーブル２２５にエントリを新たに作成する（ステップＳ４０２）。このとき、クライアントのアドレス、ポート番号もエントリのフィールド値として書き込む。また、ＦＩＮ属性（上り）、ＦＩＮ属性（下り）ともに０に初期化する。【００５５】
パケットの宛先アドレスを、選択した未使用アドレス（以下、変換アドレス）に書き換えて（ステップＳ４０３）、書き換えたパケットをサーバ側通信部２１２からネットワーク２３０に送信する（ステップＳ４０４）。【００５６】
次に、セッションが確立された後に、クライアントから送信されたパケットを切替え装置２１０が受信し、宛先アドレスを変換アドレスに書き換えてネットワーク２３０に送出する際の動作を説明する。まずは、終了フラグが含まれていない通信について説明する。【００５７】
まず、パケットが新規接続要求かどうかを判断する（ステップＳ４００でＮｏ）。更に、パケットに終了フラグ（ＦＩＮ）が含まれているかを判断する（ステップＳ４０５でＮｏ）。次に、ＮＡＴテーブル２２５の各エントリのクライアントアドレスおよびクライアントポート番号に、当該パケットの送信元アドレスおよび送信元ポート番号と一致するものがあるかどうかを検索する（ステップＳ４０６）。ＮＡＴテーブルのエントリ中に無かった場合（ステップＳ４０６でＮｏ）、エラーと判断し、当該パケットを破棄するなどの処理を行なう。ＮＡＴテーブルのエントリ中に存在した場合（ステップＳ４０６でＹｅｓ）、パケットの宛先アドレスを変換アドレスに書き換える（ステップＳ４０７）。そして、パケットをローカルネットワーク内に送信する（ステップＳ４０４）。【００５８】
更に図４を参照しながら、次に、クライアントとディスパッチャ２４０もしくはサーバ２５０−１との間での、データ通信が終了してセッションを終了させる場合に切替え装置２１０で行なわれるアドレス変換の流れを説明する。【００５９】
まず、パケットが新規接続要求かどうかを判断する（ステップＳ４００でＮｏ）。更に、パケットに終了フラグが含まれているかを判断する（ステップＳ４０５でＹｅｓ）。次に、ＮＡＴテーブル２２５の各エントリのクライアントアドレスおよびクライアントポート番号に、当該パケットの送信元アドレスおよび送信元ポート番号と一致するものがあるかどうかを検索する（ステップＳ４０８）。ＮＡＴテーブル２２５のエントリ中に無かった場合（ステップＳ４０８でＮｏ）、エラーとなり当該パケットを破棄するなどの処理を行なう。ＮＡＴテーブルのエントリ中に存在した場合（ステップＳ４０８でＹｅｓ）、当該エントリのＦＩＮ属性（上り）を０から１にする。【００６０】
次に、当該エントリのＦＩＮ属性（下り）の値を調べ（ステップＳ４１０）、１であれば（ステップＳ４１０でＹｅｓ）、当該エントリを削除する（ステップＳ４１１）が、このとき、当該エントリの変換アドレスを図示しない記憶領域に一時的に記憶しておく。当該エントリを削除した後（ステップＳ４１１）、もしくは、当該エントリのＦＩＮ属性（下り）の値が０であれば（ステップＳ４１０でＮｏ）、パケットの宛先アドレスを、当該エントリの変換アドレス（もしくは一時的に記憶した記憶領域に保持されているアドレス）に書き換える（ステップＳ４０７）。そして、パケットをローカルネットワーク２０１に送信する。【００６１】
図５は、サーバもしくはディスパッチャから切替え装置２１０を経由してクライアントにパケットを送る際のアドレス変換を行なう動作を示したフローチャートである。【００６２】
切替え装置２１０はネットワーク２３０からパケットを受け取ると、まず、ＮＡＴテーブル２２５の各エントリのクライアントアドレスおよびクライアントポート番号に、当該パケットの宛先アドレスおよび宛先ポート番号と一致するものがあるかを探す（ステップＳ４３０）。このとき、ＮＡＴテーブル２２５の各エントリの変換アドレスに、当該パケットの送信元アドレスと一致するものがあるかという観点で検索することも可能である。【００６３】
ＮＡＴテーブル２２５のエントリに存在しなかった場合（ステップＳ４３０でＮｏ）はエラーとなり、当該パケットを破棄するなどの処理を行なう。ＮＡＴテーブル２２５のエントリに存在した場合（ステップＳ４３０でＹｅｓ）、当該パケットに終了フラグが含まれているかを調べる。終了フラグが含まれていなかった場合は（ステップＳ４３１でＮｏ）、当該パケットの送信元アドレスをシステムアドレスに書き換えて（ステップＳ４３２）、パケットをネットワーク２６０に送信する（ステップＳ４３３）。【００６４】
また、パケットが終了フラグを含む場合（ステップＳ４３１でＹｅｓ）は、当該エントリのＦＩＮ属性（下り）を０から１にする（ステップＳ４３４）。次に当該エントリのＦＩＮ属性（上り）の値を調べ、１であった場合（ステップＳ４３５でＹｅｓ）、当該エントリを消去する（ステップＳ４３６）。当該エントリを消去した後、もしくは当該エントリのＦＩＮ属性（上り）の値が０であった場合（ステップＳ４３５でＮｏ）、当該パケットの送信元アドレスをシステムアドレスに書き換えて（ステップＳ４３２）、パケットをネットワーク２６０に送信する（ステップＳ４３３）。【００６５】
次に、ディスパッチャの機能と動作を説明する。【００６６】
ディスパッチャ２４０は少なくとも通信部２４１とセッション情報蓄積部２４５とセッション確立部２４４と解析部２４２とセッション転送部２４３とを備え、プログラム制御により動作する。ディスパッチャ２４０は、クライアントとの間でセッションを確立し、その確立したセッションを、解析部２４２により選択したサーバに転送することで、サーバへのセッション転送を実現する。【００６７】
通信部２４１はローカルネットワークにつながれる任意の通信手段であり、前述した切替え装置２１０の通信部２１１、２１２と同様のものである。ただし、切替え装置２１０及びサーバ２５０−１〜２５０−ｎと通信プロトコルが同じであれば通信は成立するので、物理的な媒体が同じである必要は必ずしもない。通信部２４１には、ローカルネットワーク内で一意の固定アドレスが割り当てられている。【００６８】
セッション情報蓄積部２４５はクライアントとディスパッチャ２４０の間で確立したセッションの情報（セッション情報）を保持する記憶部である。セッションが確立されると、セッション毎に情報が作成され、セッションが切断された場合またはセッションが転送された場合に削除される。【００６９】
セッション確立部２４４ではクライアントとのセッションを確立する。【００７０】
通信部２４１には追加アドレスが設定できる。切替え装置が選んだ未使用のアドレスのうち、通信部２４１が保持しているアドレス宛のパケットはディスパッチャ２４０が受け取る。したがって新規接続要求のパケットの場合、図４のステップＳ４０４で送出されたパケットをディスパッチャ２４０が受信し、セッション確立部２４４がクライアントとの間のセッションの確立を行なうことになる。従来のサーバ切替えとは異なり、第一の実施の形態では、切替え装置２１０とクライアントの間でのセッション確立を行なう必要はない。【００７１】
なお、切替え装置２１０で、未使用アドレスとして管理されている追加アドレスを、初期状態においてディスパッチャに割り当てておくことが一般的であるが、定期的に利用されていない追加アドレスを、未使用アドレスとして、ディスパッチャ２４０の通信部２４１に設定するなどとすることもできる。【００７２】
解析部２４２では、クライアントと確立したセッションを通じて受信したリクエストの内容を解析する。この解析結果によって、適切なサーバを選択する。なお、解析の方法及び適切なサーバを選択する方法は従来の任意の方法が使える。このリクエストの例としてはＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を用いたリクエストが挙げられる。【００７３】
セッション転送部２４３は、解析部２４２で選んだサーバにセッションを転送する。以下では、サーバ２５０−１が選択されたとして説明する。セッション情報をセッション情報蓄積部２４５から取得し、ディスパッチャの通信部２４１と当該サーバ２５０−１の通信部２５１−１を経由してサーバ２５０−１のセッション転送部２５３−１にセッション情報を転送する。【００７４】
パケット通信においては、データ通信がパケット単位で行われ、セッションの開始及び終了が明示的に通知される。したがって、明示的なセッション終了が通信相手に通知されていない限り、パケットによる通信が行われていなくても、セッションは継続していると言える。【００７５】
パケットの送信先において当該パケットが受理されなかった場合、パケットを拒否する指示が返されたりして当該セッションは無効になるが、受理されればセッションは継続出来る。例えば、パケットを受理するかどうかを判断する方法として、受信したパケットの送信元アドレスに該当するセッション情報がセッション情報蓄積部に登録されているかどうかを見るということがある。したがって、セッション情報蓄積部にセッション情報が存在すればセッションを継続できることになる。【００７６】
したがって、あるセッションのパケットを受信するサーバが変わったとしても、当該セッションのセッション情報がセッション情報蓄積部に正しく引き継がれていれば、パケットを受理する判断基準に合致しているので、セッションを継続出来る。このようなセッションの転送については、例えば技術文献３（V．Pai
et al．， “Locality Aware Request Distribution in Cluster-based Network Servers”,
Architectural Support for Programming Languages and Operating Systems, 1998）に記載されている。【００７７】
第一の実施の形態においては、当該セッションのセッション情報をディスパッチャからサーバに正しく引き継ぐことによってセッションを継続したままディスパッチャとサーバとを切り替えることを行なう。このことを「セッションを（ディスパッチャからサーバに）転送する」と表現することとする。【００７８】
セッション情報にはパケット通信における送信元と送信先のアドレスが含まれている。従来例では、セッションを確立する際、セッション情報の送信元アドレスとしてサーバの通信部に設定している固定アドレスを用いているため、セッションの転送は無理であった。セッションを転送させるためにはサーバの固定アドレスも転送させなければならなくなるからである。【００７９】
第一の実施の形態においては、転送されるセッションのセッション情報に含まれるアドレスは固定アドレスではなく追加アドレスであるため、セッションの転送が自由に行える。【００８０】
ディスパッチャ２４０とクライアントとの間で確立されたセッションをサーバに転送する際には、ディスパッチャ２４０のセッション転送部２４３がセッション情報蓄積部２４５から当該セッションに関するセッション情報を受け取り、サーバ２５０−１のセッション転送部２５３−１に送信する。【００８１】
サーバ２５０−１のセッション転送部２５３−１は受信したセッション情報をセッション情報蓄積部２５５−１に設定する。更に、セッション情報に含まれている追加アドレスを通信部２５１−１に設定する。【００８２】
ディスパッチャ２４０のセッション転送部２４３では、転送したセッションの追加アドレスを通信部２４１から削除する。したがってセッションの転送完了後は、ディスパッチャ２４０ではなく、サーバ２５０−１がそのセッションのパケットを送受するようになる。つまり、セッションの転送先のサーバ２５０−１により、クライアントとの通信が引き継がれるので、当該セッションは切断されずに維持される。【００８３】
図６はセッションをディスパッチャがサーバに転送する動作を示したフローチャートである。この図６を参照しながら、セッションの転送の動作をより詳細に説明する。【００８４】
解析部２４２からの指示によってセッション転送部２４３が、セッション情報蓄積部２４５にある当該セッションのセッション情報を取得する（ステップＳ４６０）。このとき、セッション情報には、当該セッションの確立時に切替え装置で選択した追加アドレスが含まれている。当該選択した追加アドレスを通信部２４１から消去する（ステップＳ４６１）。これにより、当該アドレスへのパケットをディスパッチャ２４０は受け取らなくなる。そして、通信部２４１とネットワーク２３０を介して、サーバ２５０−１のセッション転送部２５３−１にセッション情報を転送し（ステップＳ４６２）、セッション情報をセッション情報蓄積部２４３から消去する（ステップＳ４６３）。【００８５】
上述したセッションの転送時に用いるセッション情報には、少なくとも、セッションの転送までにクライアントから受信したパケットのシーケンス番号と、クライアントに送信したパケットのシーケンス番号、追加アドレスとクライアントのアドレスが含まれている。他にも、使用しているプロトコルでセッションを維持するために必要となる情報を含む。【００８６】
次に、図１を参照して、サーバの構成を説明する。以下ではサーバ２５０−１の説明をするが、他のサーバでも同様である。【００８７】
サーバ２５０−１は、通信部２５１−１、アプリケーションサーバ２５２−１、セッション情報蓄積部２５５−１、セッション転送部２５３−１から構成される。【００８８】
通信部２５１−１はネットワーク２３０につながれた任意の通信手段であり、前述したディスパッチャ２４０の通信部２４１と同様のものである。ただし、切替え装置２１０、ディスパッチャ２４０及び他の各サーバと通信プロトコルが同じであれば通信は成立するので、物理的な媒体が同じである必要は必ずしもない。各サーバの通信部には、各々異なる固定アドレスが割り当てられている。【００８９】
アプリケーションサーバ２５２−１は、クライアントのリクエストを解釈し、要求されているリクエストに対して適切に返答を送信する。なお、リクエストによっては要求されたファイルの内容を転送するものもあるため、そのような場合、サーバには記憶装置が備えられており、アプリケーションサーバ２５２−１が図示しない記憶装置から適切なファイルを読み出して送信することもある。【００９０】
セッション情報蓄積部２５５−１はディスパッチャ２４０のセッション情報蓄積部２４５と同様に、確立したセッションの情報を保持する部分である。【００９１】
セッション転送部２５３−１では、セッションをディスパッチャ２４０からサーバに転送する際にセッション情報を受け取り、後述するようにセッション情報と追加アドレスの設定を行なう。【００９２】
図７はセッションをディスパッチャから受け取る際のサーバの動作を示したフローチャートである。図７を参照しながら、セッションを受け取る際の動作を説明する。【００９３】
サーバ２５０−１上のセッション転送部２５３−１はセッション情報を受け取り（ステップＳ４７０）、このセッション情報をセッション情報蓄積部２５５−１に設定する（ステップＳ４７１）。更に、セッション情報に書かれている追加アドレスを通信部２５１−１に設定する（ステップＳ４７２）。【００９４】
次に、クライアントがリクエストを発してから、クライアントとサーバの間での処理が完了して、セッションが切断されるまでの流れを、通して説明する。図８はこの流れを示すフローチャートである。【００９５】
図８を参照すると、まず、クライアントはセッションを確立するためにシステムアドレスに対して新規接続要求を含んだパケットを送信する（ステップＳ４８０）。パケットはネットワーク２６０を経由して切替え装置２１０が受信する。切替え装置２１０は、前述のように追加アドレスの中から未使用のアドレスを変換アドレスとして選び、当該パケットの宛先アドレスを当該変換アドレスに書き換えてローカルネットワークに送信する（ステップＳ４８１）。このとき、ＮＡＴテーブルに新規のエントリが作成される。当該アドレスはディスパッチャ２４０の通信部に追加アドレスとして予め割り当てられ、設定されているため、ディスパッチャのセッション確立部２４４が当該パケットを受信する。クライアントとディスパッチャの間でセッションが確立される（ステップＳ４８２）。【００９６】
次に、クライアントがリクエストを含んだパケットをシステムアドレスに対して送信する（ステップＳ４８３）。切替え装置２１０では、ＮＡＴテーブルのエントリにしたがって宛先アドレスを変換アドレスに書き換えて送信し（ステップＳ４８４）、ディスパッチャ２４０上の解析部２４２がリクエストを受信する。解析部２４２はリクエストの中身を解析して、適切なサーバ（ここではサーバ２５０−１とする）を選択する（ステップＳ４８５）。次に解析部２４２はセッション転送部２４３に指示して、選択したサーバ２５０−１上のセッション転送部２５３−１にセッション情報を転送する（ステップＳ４８６）。つまり、ディスパッチャ２４０からは追加アドレスとセッション情報が消去され、選択されたサーバ２５０−１では転送されたセッション情報の設定と追加アドレスの設定が行なわれる。【００９７】
このとき、セッションを転送することで、クライアントからのパケットを受け取るものが、ディスパッチャ２４０からサーバ２５０−１に切り替わるが、ＮＡＴテーブルのエントリを書き換える必要はない。【００９８】
さらに、セッションを転送してもセッション情報の中のシーケンス番号はそのまま引き継がれるため、従来のように切替え装置２１０でシーケンス番号を管理して、書き換えをする必要が無い。【００９９】
以降、選択されたサーバ２５０−１とクライアントの間で、上記のセッションによりパケットが送受される（ステップＳ４８７）。クライアントからサーバへのパケットは、切替え装置２１０において、宛先アドレスが変換アドレスに書き換えられて、サーバ２５０−１に到達する。サーバ２５０−１は、アプリケーションサーバ２５２−１にリクエストの内容に応じた返答を作成させて、クライアントに送信する。サーバ２５０−１からクライアントに対して送信されたパケットは、切替え装置２１０上で再びＮＡＴテーブル２２５を参照してパケットの送信元アドレスがシステムアドレスに書き換えられて、クライアントに到達する。リクエストの内容をサーバに伝える方法は任意であるが、例えば、転送するセッション情報に含める方法が使える。【０１００】
サーバ２５０−１は、必要な返答を全て送信し終わった後、セッションを終了するために終了フラグ（ＦＩＮ）を含めたパケットを送信する。これによって切替え装置のＮＡＴテーブルの当該エントリではＦＩＮ属性（下り）が１になる。次に、クライアントからも終了フラグを含めたパケットが送信される。これによって切替え装置のＮＡＴテーブルの当該エントリではＦＩＮ属性（上り）が１になり、エントリが消去される（ステップＳ４８８）。なお、セッションを終了するための、終了フラグを含んだパケットの送信はクライアントから行われることもある。【０１０１】
セッション切断後、当該セッションで使用していた追加アドレスはサーバ２５０−１からディスパッチャ２４０に返される。つまり、サーバ２５０−１は、通信部２５０−１から当該セッションで使用していた追加アドレスの設定を削除し、追加アドレスを通信部２４１に再度設定するようにディスパッチャ２４０に指示を出す。ディスパッチャ２４０の通信部２４１にはこれを受けて、当該追加アドレスが設定される。【０１０２】
このように、サーバ切替えの際にはセッションをそのままの状態でディスパッチャからサーバへ引き継ぐため、切替え装置ではパケットのアドレス部分のみを書き換え、シーケンス番号の計算や書き換えを行なう必要がない。また、ディスパッチャからサーバへセッションを転送する際も、同一の追加アドレスを用いているため、ＮＡＴテーブル上の書き換えも必要ない。したがって従来に比べて、書き換えの負荷や、テーブルとして管理すべき情報量を削減することが可能である。【０１０３】
上記のように構成される第一の実施の形態に関する具体的な動作例を図９と図１０、およびシステムの構成を示す図１を参照しながら詳細に説明する。第一の実施例では、通信プロトコルとしては、ＴＣＰ/ＩＰが用いられているとする。【０１０４】
図９は、第一の実施の形態におけるパケットの流れを示すシーケンス図である。なお、この図では、ＡＣＫパケットの記載については全て省略している。第一の実施の形態では、この図９に示されるように、切替え装置２１０のシステムアドレスのアドレスは９０.９０.９０.９０であり、固定アドレスは１９２.１６８.２.１とする。ディスパッチャ２４０の固定アドレスは１９２.１６８.２.２とする。また、クライアントのアドレスは６０.６０.６０.６０とする。なお、第一の実施の形態においては、ポート番号を書き換えないので図９のパケットのヘッダ情報としての表記は省略する。【０１０５】
図１０は、切替え装置２１０上のＮＡＴテーブル２２５の状態を表したものである。クライアントから新規接続要求が到着する前の段階では、ＮＡＴテーブル２２５は、図１０（Ａ）の状態であるとする。まず、クライアントがＳＹＮパケット（図９の（Ａ））を出す。このときの送信元アドレス（ｓｒｃ）は６０.６０.６０.６０であり、宛先アドレス（ｄｓｔ）は９０.９０.９０.９０である。また、シーケンス番号の初期値は２０００であるとする。クライアントが送出したＳＹＮパケットを切替え装置２１０が受信し、未使用の追加アドレス１９２.１６８.２.１０３を変換アドレスとして選ぶ。そして、宛先アドレスをこの変換アドレス１９２.１６８.２.１０３に書き換えてネットワーク２３０に送信する。切替え装置２１０は、クライアントアドレス、クライアントのポート番号、選択した追加アドレス（変換アドレス）を対応付けてＮＡＴテーブル２２５に新規のエントリを作成する。したがってＮＡＴテーブルは図１０（Ｂ）の状態になる。この追加アドレスは、ディスパッチャ２４０が保持して（ディスパッチャ２４０の通信部２４１に設定されて）いるので、ディスパッチャ２４０が、この宛先アドレスの書き換えがされたＳＹＮパケットを受け付けてセッションを確立する。そして、ディスパッチャ２４０はシーケンス番号の初期値を６０００と決定した上で、そのシーケンス番号を付したＳＹＮ−ＡＣＫパケット（図９（Ｂ））をクライアントに送信する。切替え装置２１０では、ＮＡＴテーブル２５５の情報を確認してシステムアドレスに書き換え、ネットワーク２６０に送信する。具体的には、切替え装置２１０は、ＮＡＴテーブル２２５の中から６０.６０.６０.６０のエントリを見付け、送信元アドレスを９０.９０.９０.９０に書き換えてクライアントに送信する。【０１０６】
次に、クライアントはリクエストの入ったパケット（図９の（Ｃ））を送信する。このときのシーケンス番号は２００１で、リクエスト長は１００バイトとする。切替え装置２１０では、このリクエストパケットの送信元アドレスと送信元ポート番号が、ＮＡＴテーブル２２５のクライアントアドレス、クライアントポート番号と一致するエントリを取り出し、このリクエストのパケットの宛先アドレスを該当するエントリの変換アドレス（ここでは１９２.１６８.２.１０３）に書き換え、ディスパッチャに転送する。ディスパッチャ２４０の解析部２４２は、リクエストを解析して適切なサーバ（アドレスは１９２.１６８.２.３のサーバ２５０−１）を選択する。セッション転送部２４３は、セッションを選択されたサーバ２５０−１に転送する。【０１０７】
セッションの転送後、切替え装置２１０は変換アドレス（１９２.１６８.２.１０３）に対してパケットを送信する時に、ＡＲＰリクエストを送信する場合がある。このとき追加アドレスは既にサーバ２５０−１に設定されているので、サーバ２５０−１がＭＡＣアドレスを回答する。そして、切替え装置２１０は回答されたＭＡＣアドレスに対してパケットを送信する。【０１０８】
また、通信の効率化のためにＡＲＰリクエストに対する回答をキャッシュして利用する装置の場合、装置外部から指示を出してキャッシュを無効化もしくは内容を更新することも可能である。この場合、セッション転送後にＡＲＰリクエストを出すことなく通信が継続できるので、通信が効率的になる。【０１０９】
サーバ２５０−１上で動作するアプリケーションサーバ２５２−１はリクエストに対する応答を作成し、クライアントに対して送信する（図９の（Ｄ））。最初の返答の長さは１０００バイトであったとする。このパケットも図９の（Ｂ）のパケット同様に送信元アドレスをシステムアドレスに書き換えられてクライアントに送信される。全ての応答をα回の送信で送り終えたのち（図９の（Ｅ））、サーバは終了を意味するＦＩＮパケット（図９の（Ｆ））を送信する。このパケットを受け取った切替え装置２１０は、ＦＩＮフラグを検出し、パケットの宛先アドレスおよび宛先ポート番号がクライアントアドレスおよびクライアントポート番号と一致するエントリのＦＩＮ属性（下り）を１にする。したがって、ＮＡＴテーブルは図１０（Ｃ）の状態になる。そして、パケットの送信元アドレスを図９の（Ｂ）と同様に９０.９０.９０.９０に書き換えてクライアントに送信する。【０１１０】
その後、クライアントからもＦＩＮパケット（図９の（Ｇ））が送信される。このパケットを受け取った切替え装置２１０は、ＦＩＮフラグを検出し、パケットの送信元アドレスおよび送信元ポート番号がクライアントアドレスおよびクライアントポート番号と一致するエントリのＦＩＮ属性（上り）を１にする。したがってＮＡＴテーブルは図１０（Ｄ）の状態になる。そして、パケットの宛先アドレスを１９２.１６８.２.１０３に書き換えてネットワーク２３０に送信した後、当該エントリを削除する。削除後のＮＡＴテーブルは、再び図１０（Ａ）の状態に戻る。【０１１１】
なお、上記においては、クライアントのアドレスとポート番号の組合せにより、サーバの切替えを行なうセッションを特定したが、クライアントのアドレスのみに基づいて、上記切替えを行なうようにすることも可能である。また、アドレスやポート番号でなくても、セッションの送信元を特定する識別子を用いる限り、ほぼ同様の切替えをおこなうことが可能である。【０１１２】
（第一の実施の形態の変形例）
第一の実施の形態においては、ディスパッチャ及びサーバは、クライアントに送信するパケットの送信元アドレスとして、セッション毎に選択された追加アドレスを使用していた。そして切替え装置２１０において、それらのパケットの送信元アドレスをシステムアドレスに書き換えていた。【０１１３】
そこで、ディスパッチャ及び各サーバが送信する時点でパケットの送信元アドレスをシステムアドレスにすることが考えられる。本変形例では、切替え装置２１０でパケットの送信元アドレスを書き換える必要が無くなり、図５のステップＳ４３２を省略することができる。【０１１４】
ただしこの場合、第一の実施の形態における図５のステップＳ４３０の説明で、ＮＡＴテーブルにエントリがあるかどうかを検索する際に、各エントリの変換アドレスとパケットの送信元アドレスの一致を調べるやり方は使えない。これは、本変形ではパケットの送信元アドレスが全てシステムアドレスになっているため、そのようなエントリが存在しないためである。【０１１５】
（第二の実施の形態）
第一の実施の形態では、セッションの開始と終了を明示的に示すフラグがパケットの中に存在するプロトコル、具体例としてはＴＣＰを使用していた。第二の実施の形態では、セッションの開始と終了を明示しないプロトコルを用いた場合について説明する。このようなプロトコルの例としてはＵＤＰがある。【０１１６】
第二の実施の形態における切替えシステムの構成は、図１に示される第一の実施の形態におけるものと同様である。第二の実施の形態においては、第一の実施の形態と比較してＮＡＴテーブル２２５のエントリの構造が異なる。また、それにともなって、切替え装置におけるアドレス変換処理の流れも変わる。以下、その差異を説明する。【０１１７】
図１１は、第二の実施の形態におけるＮＡＴテーブル２２５のエントリの例である。図１１を参照すると、エントリはクライアントのアドレスおよびポート番号、そして変換アドレスのみで構成される。なお、第一の実施の形態においても触れたように、クライアントのアドレスとポート番号の組合せでは必ずしもなくても良く、アドレスだけでも良く、要はセッションの送信元を特定する識別子を用いれば良い。以下では、クライアントのアドレスとポート番号の組合せを用いる場合を例にとり説明していく。【０１１８】
図１２は、アドレス変換部２２０においてクライアントから受信したパケットを処理する流れを表したフローチャートである。図１２を参照すると、パケットを受信するとまず、そのパケットの送信元アドレスと送信元ポート番号が、クライアントアドレス、クライアントポート番号と一致するＮＡＴテーブル２２５上のエントリを検索する。（ステップＳ６００）。一致するエントリがあった場合（ステップＳ６００でＹｅｓ）、当該パケットの宛先アドレスを当該エントリの変換アドレスに書き換えて（ステップＳ６０１）、サーバ側通信部２１２から送信する（ステップＳ６０２）。【０１１９】
一致するエントリが無かった場合（ステップＳ６００でＮｏ）、未使用アドレスを選ぶ（ステップＳ６０３）。このときの選択アルゴリズムは従来の任意のアルゴリズムが使用できる。次に、ＮＡＴテーブル２２５に新規のエントリを作成する（ステップＳ６０４）。このエントリでは、当該未使用アドレスを変換アドレスにし、パケットの送信元アドレスをクライアントアドレス、送信元ポートをクライアントポートにする。そして、パケットの宛先アドレスを当該変換アドレスに書き換えてサーバ側通信部２１２から送信する（ステップＳ６０５）。【０１２０】
次に、ディスパッチャもしくはサーバからクライアントに対して送信されたパケットの切替え装置２１０における書き換えを説明する。図１３は、ディスパッチャもしくはサーバからクライアントに対して送信されたパケットの切替え装置２１０における書き換えの動作を示すフローチャートである。【０１２１】
図１３を参照すると、ネットワーク２３０からパケットを受信したアドレス変換部２２０は、まず、ＮＡＴテーブル２２５を検索し、クライアントアドレスがパケットの宛先アドレスと一致するエントリがないかどうかを調べる（ステップＳ６２０）。なお、このとき、変換アドレスがパケットの送信元アドレスと一致するエントリがないかという観点で検索することも可能である。【０１２２】
一致するエントリが存在した場合（ステップＳ６２０でＹｅｓ）、送信元アドレスをシステムアドレスで書き換えて（ステップＳ６２１）、パケットをクライアント側通信部２１１から送出する（ステップＳ６２２）。【０１２３】
一致するエントリが存在しなかった場合（ステップＳ６２０でＮｏ）はエラーとなり、当該パケットを破棄するなどの処理が行なわれる。【０１２４】
なお、第二の実施の形態ではセッションの終了が明示的に行なわれない、別の表現をすれば、セッションの終了を明示的に管理しないため、ＮＡＴテーブルのエントリを消去する明示的な機会が存在しない。そこで、一定時間通信が行なわれなかったエントリを、図示しない監視部が消去するようにする。【０１２５】
サーバにおいても一定時間通信が行なわれないセッションの追加アドレスを消去し、ディスパッチャ２４０に通知して、当該追加アドレスをディスパッチャ２４０は、通信部２４１に設定する。【０１２６】
次に、第二の実施の形態によるサーバ切替えの処理を説明する。図１４はサーバ切替えの動作を示すフローチャートである。【０１２７】
図１４を参照すると、クライアントはまず、システムアドレスに対してリクエストを含むパケットを送信する（ステップＳ６４０）。パケットはネットワーク２６０、クライアント側通信部２１１を経由して切替え装置２１０が受信する。切替え装置２１０は、未使用アドレスの中から変換アドレスとして１つの追加アドレスを選択し、当該パケットの宛先アドレスを当該変換アドレスに書き換えてネットワーク２３０に送信する（ステップＳ６４１）。このとき、ＮＡＴテーブルに新規のエントリが作成される。選択した追加アドレスはディスパッチャ２４０の通信部２４１に割り当てられているため、ディスパッチャ２４０のセッション確立部２４４が当該パケットを受信する。セッション確立部２４４は、クライアントとの間でのセッションを確立するのに必要なセッション情報を作成し、セッション情報蓄積部２４５に記憶する。【０１２８】
次に、受信したリクエストをディスパッチャ２４０の解析部２４２が解析して、適切なサーバを選択する（ステップＳ６４２）。そして解析部はセッション転送部２４３に指示して、選択したサーバ（ここではサーバ２５０−１が選択されたとする。）のセッション転送部２５３−１にセッション情報を転送する（ステップＳ６４３）。ディスパッチャ２４０の通信部２４１からは当該選択された追加アドレスの設定とセッションが消去され、選択されたサーバ２５０−１では転送されたセッション情報の設定と当該追加アドレスの通信部２５１−１への設定を行なう。【０１２９】
このように、セッションを転送することでリクエストを処理するものが、ディスパッチャ２４０からサーバ２５０−１に切り替わるが、ＮＡＴテーブル２２５のエントリを書き換える必要はない。【０１３０】
選択されたサーバ２５０−１のアプリケーションサーバ２５２−１は、リクエストの内容に応じて、返答を作成し、クライアントに送信する（ステップＳ６４４）。サーバ２５０−１からクライアントに対して送信されたパケットは、切替え装置２１０が再びＮＡＴテーブル２２５を参照し、パケットの送信元アドレスをシステムアドレスに書き換えて、クライアントに向けてパケットを送信する。【０１３１】
必要な返答を全て送信し終わった後、当該セッションに対する通信が発生しなくなり、一定時間経過後、ＮＡＴテーブル２２５上の当該エントリが消去される（ステップＳ６４５）。このとき、当該セッションで使用していた追加アドレス（変換アドレス）はサーバ２５０−１から消去されてディスパッチャ２４０に返される（ステップＳ６４６）。ディスパッチャ２４０は当該追加アドレスを通信部２４１に再度設定する。【０１３２】
第二の実施の形態で想定するプロトコルではシーケンス番号が使われないこともある。このような場合、セッションを転送する際のセッション情報にはシーケンス番号は含まれない。転送するセッション情報には、追加アドレスとプロトコルに必要な情報とが含まれる。【０１３３】
以上述べたように、第二の実施の形態では、サーバを切り替えてもＮＡＴテーブルのエントリを変更する必要がない。
（第二の実施の形態の変形例）
第一の実施の形態に対する変形と同じく、第二の実施の形態に対しての変形例は、ディスパッチャ及び各サーバが送信する時点でパケットの送信元アドレスをシステムアドレスにすることである。【０１３４】
このため、切替え装置でパケットの送信元アドレスを書き換える必要が無くなるため、図１３のステップＳ６２１が省略される。【０１３５】
ただしこの場合、図１３のステップＳ６２０の説明で、ＮＡＴテーブルにエントリがあるかどうかを検索する際に、各エントリの内側アドレスとパケットの送信元アドレスの一致を調べるやり方は使えない。これは、本変形例ではパケットの送信元アドレスが全てシステムアドレスになっているため、そのようなエントリが存在しないためである。【０１３６】
更に最適化して、ＮＡＴテーブルのエントリが存在したかったときのエラー処理を行なわなくてもよいならば、図１３の全ての処理を省略して、切替え装置は単に受信したパケットをそのまま送出することも可能である。【０１３７】
(第三の実施の形態)
第一の実施の形態においては、１セッションでクライアントからの１リクエストとそれに対するサーバからの返答が行われる状況を想定していた。リクエストによっては、１セッションでクライアントが複数リクエストを順次送信し、それぞれの返答を順次受け取ることも可能である。第三の実施の形態においては、１セッションでクライアントからの複数リクエストとそれらに対するサーバからの返答が行われる状況を説明する。【０１３８】
第三の実施の形態における切替えシステムの構成は、図１に示される第一の実施の形態における構成と同じである。また、切替え装置２１０におけるアドレス書き換えも第一の実施の形態と同じである。第三の実施の形態では、２回目以降のリクエストを処理する際に、サーバからディスパッチャにセッションが転送される。【０１３９】
サーバがセッションを転送する際の手順は図６と同じである。一方、ディスパッチャが転送されたセッションを受け取る手順は図７と同じである。つまり、第一の実施の形態におけるディスパッチャとサーバの立場が入れ替わっただけで、手順そのものは変わっていない。【０１４０】
図１５に、クライアントが複数リクエストを送信し、返答を受け取る流れを示す。図１５が第一の実施の形態における図８と異なるステップＳ６６８から説明する。【０１４１】
サーバによるリクエストに対する返答が終了後（ステップＳ６６７）、サーバは次のリクエストがあるかどうかを検査し（ステップＳ６６８）、次のリクエストがある場合（ステップＳ６６８でＮｏ）、クライアントは次のリクエストを送信する（ステップＳ６６９）。切替え装置２１０では、ＮＡＴテーブルのエントリにしたがって、当該リクエストのパケットの宛先アドレスを書き換えて送信するが、まだこの時点では、追加アドレスを保持しているのはサーバ（ここではサーバ２５０−１とする。）であるので、パケットはサーバ２５０−１が受信する（ステップＳ６７０）。【０１４２】
ただしこのとき、サーバ２５０−１上で動いているアプリケーションサーバ２５２−１はリクエストを読み込まず、当該セッションをディスパッチャ２４０に転送する（ステップＳ６７１）。このときのセッション情報には、第一の実施の形態と同様に、シーケンス番号、追加アドレスとプロトコルに必要な情報が含まれているが、第三の実施の形態では更に、アプリケーションサーバが読み込んでいないリクエストのパケットも含まれる。したがって、読み込んでいない状態のままでセッションがディスパッチャ２４０に転送される。ディスパッチャ２４０の解析部２４２はリクエストを読み込んで、解析し、適切なサーバを再度選択する（ステップＳ６６５）。その後、選択したサーバにディスパッチャ２４０からセッションが転送され（Ｓ６６６）、当該サーバから応答がクライアントに返される（Ｓ６６７）。【０１４３】
ステップＳ６６８で、次のリクエストが無かった場合（ステップＳ６６８でＹｅｓ）、当該セッションを切断し（ステップＳ６７２）、追加アドレスをディスパッチャ２４０に返す（ステップＳ６７３）。ＮＡＴテーブルからは当該セッションに関するエントリが消去される（ステップＳ６７４）。【０１４４】
このように、複数リクエストに対する応答の場合に、ディスパッチャからサーバへ、もしくはサーバからディスパッチャへサーバへという切替えが発生するが、この場合においても、切替え装置２１０上でのＮＡＴテーブル２２５の変更は必要ない。また、切替え装置２１０でのシーケンス番号の計算及び書き換え処理も必要ない。【０１４５】
なお、第三の実施の形態においても、第一、第二の実施の形態と同様、ディスパッチャ及び各サーバが送信する時点でパケットの送信元アドレスをシステムアドレスにする変形を行なうことが可能である。【０１４６】
(第四の実施の形態)
第三の実施の形態では、複数リクエスト処理の場合、リクエストが到着する毎にディスパッチャに一旦、セッションを転送していた。第四の実施の形態においては、各サーバが次のリクエストを読み込み、適切なサーバにセッションを転送する。もし、自サーバが最適であったならば、他のサーバにセッションを転送せず、セッションを維持したまま次のリクエストに対する返答を続けて送信することも可能である。【０１４７】
図１６は第四の実施の形態における切替えシステムの構成を示すブロック図である。図１、および図１６を参照すると、第四の実施の形態は、第一の実施の形態と比較して、アプリケーションサーバの中に解析部（２５４−１〜２５４−ｎ）が備わっていることが特徴である。第四の実施の形態では、リクエストの処理の際にサーバ上のアプリケーションサーバがリクエストを読み込んで、サーバから他のサーバ、またはディスパッチャにセッションが転送される。【０１４８】
切替え装置２１０におけるアドレス書き換え処理は第一の実施の形態と同じである（図４及び図５）。サーバがセッションを転送する際の手順は図６と同じである。一方、他のサーバが転送されたセッションを受け取る手順は図７と同じである。つまり、２回目以降のリクエスト処理の場合のセッション転送においては、第一の実施の形態と手順は変わらず、転送するセッションの送信元も送信先もサーバになるだけである。【０１４９】
図１７は、クライアントが複数リクエストを送信した場合に、それに対しての返答がサーバからなされるまでの流れを示すフローチャートである。この図を用いて、クライアントが複数リクエストを送信した場合の処理動作について説明する。以下、第一の実施の形態における処理動作のフローチャートを示す図８とは異なるステップＳ４８８以降の処理動作を説明する。【０１５０】
リクエストに対する返答が終了後（Ｓ４８７）、次のリクエストがある場合（ステップＳ４８８でＮｏ）、クライアントは次のリクエストを送信する（ステップＳ４８９）。切替え装置２１０では、ＮＡＴテーブル２２５のエントリにしたがって、当該リクエストのパケットの宛先アドレスを書き換えて送信するが、まだこの時点では、追加アドレスを保持しているのはサーバ（ここではサーバ２５０−１とする。）であるので、パケットはサーバ２５０−１が受信する（ステップＳ４９０）。次に、サーバ２５０−１で動いているアプリケーションサーバ２５２−１がリクエストを読み込み、解析部２５４−１が適切なサーバを選択する（ステップＳ４９１）。選択されたサーバが自サーバ２５０−１の場合（ステップＳ４９２でＮｏ）、アプリケーションサーバ２５０−１は返答を作成して送信する（ステップＳ４８７）。選択されたサーバが他のサーバ、例えばサーバ２５０−ｎの場合（ステップＳ４９２でＹｅｓ）、当該セッションを選択されたサーバ２５０−ｎに転送し（ステップＳ４９３）、選択されたサーバ２５０−ｎのアプリケーションサーバ２５２−ｎは返答を作成して送信する（ステップＳ４８７）。【０１５１】
このとき、一旦読み込んだリクエストを再度、セッション情報に含めて転送することも可能である。したがって、この場合のセッション情報には、シーケンス番号、追加アドレスとプロトコルに必要な情報に加えて更に、読み込んだリクエストのパケットが含まれる。選択されたサーバのアプリケーションサーバはリクエストを読み込んで、返答を作成する。【０１５２】
ステップＳ４８８で、次のリクエストが無かった場合（ステップＳ４８８でＹｅｓ）、当該セッションを切断し（ステップＳ４９４）、追加アドレスをディスパッチャ２４０に返す（ステップＳ４９５）。ＮＡＴテーブル２２５から当該セッションに関するエントリが消去される（ステップＳ４９６）。【０１５３】
このように、複数リクエストに対する応答の場合に、ディスパッチャからサーバへ、もしくはサーバから他のサーバへサーバが切り替わったときにも、切替え装置上でのＮＡＴテーブルの変更は必要ない。切替え装置でのシーケンス番号の差分の計算及び書き換え処理もまた必要ない。【０１５４】
なお、第四の実施の形態においても、第一、第二、第三の実施の形態と同様、ディスパッチャ及び各サーバが送信する時点でパケットの送信元アドレスをシステムアドレスにする変形を行なうことが可能である。【０１５５】
(第五の実施の形態)
第一の実施の形態では、新規接続要求のパケットが到着した際に切替え装置２１０のアドレス変換部２２０が追加アドレスを選び、ＮＡＴテーブル２２５のエントリを作成していた。第五の実施の形態では、切替え装置７１０はパケットが新規接続要求かどうかの判断を行わない。切替え装置７１０は、ＮＡＴテーブル２２５に登録されていないパケットが到着したときにはデフォルトアドレスにパケットを転送する。そして、デフォルトアドレスを保持するサーバまたはディスパッチャがクライアントとの間でセッションを確立する。このセッションの確立後に、当該クライアントとの間でセッションを確立したサーバまたはディスパッチャは、切替え装置７１０のＮＡＴテーブル２２５にエントリの作成指示を送信する。【０１５６】
ここで、デフォルトアドレスとしては、追加アドレスを管理しているサーバ、またはディスパッチャの固定アドレスを用いることができる。第五の実施の形態を説明する以下の文中では、デフォルトアドレスとしてディスパッチャの固定アドレスを用いるものとして説明する。なお、サーバの固定アドレスをデフォルトアドレスとして用いる場合は、サーバにもセッション確立部があるものとする。【０１５７】
第五の実施の形態は、ＮＡＴテーブル２２５のエントリが作成されるまでの処理と切替え装置７１０での処理とディスパッチャ７４０での処理が第一の実施の形態と異なる。【０１５８】
図２１は本発明による第五の実施の形態における切替えシステム７００の構成を示すブロック図である。第一の実施の形態と比べると、第五の実施の形態は、ディスパッチャ７４０にセッション情報書き換え部７４６が追加され、更に、切替え装置７１０にテーブルエントリ設定部７２７が追加されている。【０１５９】
ディスパッチャ７４０のセッション情報書き換え部７４６は、未使用アドレス（通信中でない追加アドレス）の管理を行なっており、セッション確立部２４４がクライアントとの間でセッションを確立した時点で未使用アドレスの中から選ぶ。そしてセッション情報書き換え部７４６は、セッション情報蓄積部２４５にある確立したセッションのアドレスをこの選んだ未使用アドレスで書き換え、更に、選んだ未使用アドレスとクライアントのアドレスの対応を保持するＮＡＴテーブル２２５のエントリを作成する指示を、通信部２４１を介して切替え装置７１０のテーブルエントリ設定部７２７に対して出す。【０１６０】
テーブルエントリ設定部７２７は、セッション情報書き換え部７４６からの指示を受け取り、追加アドレスとクライアントのアドレスの対応を保持するＮＡＴテーブル２２５のエントリを作成する。第五の実施の形態におけるＮＡＴテーブル２２５のエントリ構造は図３と同じである。また、アドレス変換部２２０はデフォルトアドレスを記憶している。【０１６１】
次に、図２２及び図２３を用いて、切替え装置７１０におけるアドレス変換処理の流れを説明する。図２２は切替え装置７１０がクライアントから受信したパケットをネットワーク２３０に送出する際に行なうアドレス変換の動作を示したフローチャートである。図２２を参照すると、クライアントからのパケットを受け取った切替え装置７１０はクライアントアドレスおよびクライアントポート番号でＮＡＴテーブル２２５を検索する（ステップＳ８００）。このとき、ＮＡＴテーブル２２５の各エントリの変換アドレスに当該パケットの送信元アドレスと一致するものがあるかという観点で検索することも可能である。一致するエントリが無かった場合（ステップＳ８００でＮｏ）、デフォルトアドレス（今回の場合はディスパッチャの固定アドレス）にパケットの宛先アドレスを書き換える（ステップＳ８０２）。ＮＡＴテーブル２２５に一致するエントリがあった場合（ステップＳ８００でＹｅｓ）、該当するエントリの変換アドレスにパケットの宛先アドレスを書き換える（ステップＳ８０２）。【０１６２】
次に、当該パケットに終了フラグ（ＦＩＮもしくはＲＥＳＥＴ）が含まれているかを判断する（ステップＳ８０３）。含まれていない場合（ステップＳ８０３でＮｏ）、書き換えたパケットをネットワーク２３０に送出する（ステップＳ８０７）。【０１６３】
終了フラグが含まれている場合（ステップＳ８０３でＹｅｓ）、当該エントリのＦＩＮ属性（上り）を０から１にする（ステップＳ８０４）。次に、当該エントリのＦＩＮ属性（下り）の値を調べる（ステップＳ８０５）。ＦＩＮ属性（下り）の値が０であった場合（ステップＳ８０５でＮｏ）、パケットをローカルネットワーク２３０に送信する（ステップＳ８０７）。ＦＩＮ属性（下り）が１であれば（ステップＳ８０５でＹｅｓ）、当該エントリを削除した後に（ステップＳ８０６）、パケットをローカルネットワーク２３０に送信する（ステップＳ８０７）。【０１６４】
図２３は、サーバ２５０−１〜ｎもしくはディスパッチャ７４０から切替え装置７１０を経由してクライアントにパケットを送る際のアドレス変換を行なう動作を示したフローチャートである。【０１６５】
図２３を参照すると、サーバ２５０−１〜ｎもしくはディスパッチャ７４０からのパケットを受け取った切替え装置７１０は、まず、ＮＡＴテーブル２２５の各エントリのクライアントアドレスおよびクライアントポート番号に、当該パケットの宛先アドレス及び宛先ポート番号と一致するものがあるかを探す（ステップＳ８１０）。このとき、ＮＡＴテーブル２２５の各エントリの変換アドレスに当該パケットの送信元アドレスと一致するものがあるかという観点で検索することも可能である。【０１６６】
ＮＡＴテーブル２２５のエントリに一致するものが無かった場合（ステップＳ８１０でＮｏ）、当該パケットの送信元アドレスがデフォルトアドレスかどうかを比較する（ステップＳ８１１）。デフォルトアドレスでなかった場合はエラーとなり、パケットを廃棄するなどの処理を行なう。デフォルトアドレスであった場合（ステップＳ８１１でＹｅｓ）、もしくは、ＮＡＴテーブル２２５のエントリに一致するものがあった場合（ステップＳ８１０でＹｅｓ）、当該パケットの送信元アドレスをシステムアドレスに書き換える（ステップＳ８３２）。【０１６７】
次に、当該パケットに終了フラグ（ＦＩＮもしくはＲＥＳＥＴ）が含まれているかを判断する（ステップＳ８１３）。含まれていない場合（ステップＳ８１３でＮｏ）、書き換えたパケットをクライアントに対して送出する（ステップＳ８１７）。【０１６８】
終了フラグが含まれている場合（ステップＳ８１３でＹｅｓ）、当該エントリのＦＩＮ属性（下り）を０から１にする（ステップＳ８１４）。次に、当該エントリのＦＩＮ属性（上り）の値を調べる（ステップＳ８１５）。ＦＩＮ属性（上り）の値が０であった場合（ステップＳ８１５でＮｏ）、クライアントに対してパケットを送信する（ステップＳ８１７）。ＦＩＮ属性（上り）が１であれば（ステップＳ８１５でＹｅｓ）、当該エントリを削除した後に（ステップＳ８１６）、パケットをクライアントに対して送信する（ステップＳ８１７）。【０１６９】
図２４は、クライアントがリクエストを発してから、クライアントとサーバもしくはディスパッチャの間での処理が完了してセッションが切断されるまでの流れを示すフローチャートである。ここでは、図２４の中で第一の実施の形態における流れのフローチャート（図８）と異なる箇所であるステップＳ８８０〜Ｓ８８３を説明する。【０１７０】
クライアントがシステムアドレスに対して新規接続要求のパケットを送信すると（ステップＳ８８０）、このパケットを受け取った切替え装置７１０は前述のようにＮＡＴテーブル２２５から一致するエントリを検索するが、一致するエントリが無いため（ステップＳ８００でＮｏ）、パケットの宛先アドレスをデフォルトアドレス（ここではディスパッチャの固定アドレス）に書き換えて（ステップＳ８８１）、ネットワーク２３０に送出する。新規接続要求のパケットを受信したディスパッチャ７４０は、クライアントとセッションを確立する処理を行なう。【０１７１】
例えば、ＴＣＰ/ＩＰのプロトコルを使用した場合、ディスパッチャ７４０はクライアントに対して要求確認パケット（後述する図２５の（Ｂ）ＳＹＮ−ＡＣＫに相当）を送信する。要求確認パケットを受信した切替え装置７１０は、ＮＡＴテーブル２２５を検索するが、この時点ではＮＡＴテーブル２２５には当該セッションに関するエントリはまだ存在しない（ステップＳ８１０でＮｏ）。しかし、送信元アドレスがデフォルトアドレス（ディスパッチャの固定アドレス）なので（ステップＳ８１１でＹｅｓ）、送信元アドレスをシステムアドレスに書き換えて（ステップＳ８１２）、終了フラグの処理（ステップＳ８１３〜Ｓ８１６）を行なった後に、クライアントに対して送信する（ステップＳ８１７）。クライアントからは確認パケット（図２５では省略されているが、（Ｂ）と（Ｃ）の間にクライアントからディスパッチャに対して送信されるＡＣＫパケット）が送信されるが、このパケットが切替え装置７１０に到着した時点でもエントリは存在しないのでデフォルトアドレスに転送される。ディスパッチャが確認パケットを受信すると、このセッションが確立されることになる（ステップＳ８８２）。【０１７２】
セッションが確立されると、クライアントアドレスとディスパッチャ７４０の固定アドレスを含むセッション情報がセッション情報蓄積部２４５に作成される。その後、セッション情報書き換え部７４６は未使用アドレスの中から１つアドレスを選び、確立したセッション情報のディスパッチャ７４０の固定アドレスをこの選択した未使用アドレスに書き換える（ステップＳ８８３）。【０１７３】
更に、セッション情報書き換え部７４６は、確立したセッションのクライアントアドレスと選択した追加アドレスを対応付けるＮＡＴテーブル２２５のエントリを作成する指示を、切替え装置７１０のテーブルエントリ設定部７２７に対して送信する（ステップＳ８８４）。【０１７４】
その後、クライアントはリクエストのパケットを送信するが（ステップＳ８８５）、このパケットを受け取った切替え装置７１０には当該セッションのクライアントアドレスと追加アドレス（変換アドレス）のＮＡＴテーブルエントリが存在するため、クライアントからのパケットはこの変換アドレスを用いて宛先アドレスを書き換えられて送出される。そして、それ以降の動作（ステップＳ８８６以降）については、第一の実施形態と同様（図８のフローチャートにおけるＳ４８４以降）と同様である。【０１７５】
図２５は上記のように構成される第五の実施の形態の具体的な動作例を示すシーケンス図である。図２５が、第一の実施の形態におけるパケットの流れ（図９）と異なるのは、次の２箇所のアドレスがいずれもディスパッチャの固定アドレスとなっている点である。１つ目は、図２５の（Ａ）のＳＹＮのパケット（２５０１）においての切替え装置７１０からディスパッチャ７４０への宛先アドレスである。２つ目は、図２５の（Ｂ）のＳＹＮ−ＡＣＫのパケット（２５０２）においてのディスパッチャ７４０から切替え装置７１０への送信元アドレスである。図２５の（Ｃ）以降は第一の実施の形態におけるパケットの流れ（図９の（Ｃ）以降）と同様である。【０１７６】
(第六の実施の形態)
第六の実施の形態における切替えシステムの構成は、図２１に示される切替えシステムからディスパッチャ７４０のセッション情報書き換え部７４６を削除したものと同じである。【０１７７】
第一の実施の形態では、終了フラグ（ＦＩＮもしくはＲＥＳＥＴ）を含むパケットが到着した際に切替え装置７１０のアドレス変換部２２０がＮＡＴテーブル２２５のエントリを削除していた。第六の実施の形態では、ディスパッチャ７４０もしくはサーバ２５０−１〜ｎがセッションの終了時に切替え装置７１０にエントリを削除する指示を出す。【０１７８】
第六の実施の形態におけるＮＡＴテーブル２２５の構造については図１１と同じである。【０１７９】
第一の実施の形態におけるＮＡＴテーブル２２５の構造である図３と比較すると、第六の実施の形態におけるＮＡＴテーブル２２５の構造はＦＩＮ属性の（上り）及び（下り）が削除されている。これは、第六の実施の形態ではアドレス変換部２２０において終了フラグを検知しないからである。【０１８０】
次に、図２６及び図２７を用いて、切替え装置７１０におけるアドレス変換処理の流れを説明する。図２６は切替え装置７１０がクライアントから受信したパケットをネットワーク２３０に送出する際に行なうアドレス変換の動作を示したフローチャートである。【０１８１】
まず、クライアントが最初にセッションを確立するための新規接続要求のパケットが、システムアドレスを宛先として送信された場合のアドレス変換部２２０の動作を説明する。【０１８２】
図２６を参照すると、クライアント側通信部２１１からパケットを受け取った切替え装置７１０は、当該パケットが新規接続要求のパケットかどうかを判断し（ステップＳ８２０でＹｅｓ）、追加アドレスとして使用可能なアドレスのうち、ＮＡＴテーブル２２５のエントリの中で使用されていない未使用アドレス（つまり、通信中でない追加アドレス）を１つ選択する（ステップＳ８２１）。このときの選択アルゴリズムは従来からある任意のものが使える。そして、そのアドレスを変換アドレスとしてＮＡＴテーブル２２５にエントリを新たに作成する（ステップＳ８２２）。このとき、クライアントのアドレス、ポート番号もエントリのフィールド値として書き込む。次に、パケットの宛先アドレスを、選択した未使用アドレス（以下、変換アドレス）に書き換えて（ステップＳ８２３）、書き換えたパケットをサーバ側通信部２１２からネットワーク２３０に送信する（ステップＳ８２４）。【０１８３】
次に、セッションが確立された後に、クライアントから送信されたパケットを切替え装置７１０が受信し、宛先アドレスを変換アドレスに書き換えてネットワーク２３０に送出する際の動作を説明する。【０１８４】
まず、パケットが新規接続要求かどうかを判断する（ステップＳ８２０でＮｏ）。次に、ＮＡＴテーブル２２５の各エントリのクライアントアドレスおよびクライアントポート番号に、当該パケットの送信元アドレスおよび送信元ポート番号と一致するものがあるかどうかを検索する（ステップＳ８２５）。ＮＡＴテーブル２２５のエントリ中に無かった場合（ステップＳ８２５でＮｏ）、エラーと判断し、当該パケットを破棄するなどの処理を行なう。ＮＡＴテーブル２２５のエントリ中に存在した場合（ステップＳ８２５でＹｅｓ）、パケットの宛先アドレスを変換アドレスに書き換える（ステップＳ８２６）。そして、パケットをローカルネットワーク２３０に送信する（ステップＳ８２４）。【０１８５】
図２７は、サーバ２５０−１〜ｎもしくはディスパッチャ７４０から切替え装置７１０を経由してクライアントにパケットを送る際のアドレス変換を行なう動作を示したフローチャートである。【０１８６】
図２７を参照すると、サーバ２５０−１〜ｎもしくはディスパッチャ７４０からのパケットを受け取った切替え装置７１０は、ＮＡＴテーブル２２５の各エントリのクライアントアドレスおよびクライアントポート番号に、当該パケットの宛先アドレス及び宛先ポート番号と一致するものがあるかを探す（ステップＳ８３０）。このとき、ＮＡＴテーブル２２５の各エントリの変換アドレスに当該パケットの送信元アドレスと一致するものがあるかという観点で検索することも可能である。【０１８７】
ＮＡＴテーブル２２５のエントリに一致するものが無かった場合（ステップＳ８３０でＮｏ）、エラーとなり、パケットを廃棄するなどの処理を行なう。ＮＡＴテーブル２２５のエントリに一致するものがあった場合（ステップＳ８３０でＹｅｓ）、当該パケットの送信元アドレスをシステムアドレスに書き換え（ステップＳ８３２）、クライアントに対して送信する（ステップＳ８３３）。【０１８８】
次に、クライアントがリクエストを発してから、クライアントとサーバの間での処理が完了してセッションが切断されるまでの流れを説明する。【０１８９】
第六の実施の形態における処理動作の流れは第一の実施の形態における流れ（図８）と同じであるが、第一の実施の形態ではステップＳ４９０において、２つのＦＩＮ属性が１になったことを契機にＮＡＴテーブル２２５の当該セッションに対応するエントリをアドレス変換部２２０が削除していたが、第六の実施の形態においては、サーバ２５０−１〜ｎのセッション転送部２５３−１〜ｎもしくはディスパッチャ７４０のセッション転送部２４３がセッションを切断する際に、当該セッションで使用していたクライアントアドレスと追加アドレス（変換アドレス）の対応を保持するエントリを削除する指示を、切替え装置７１０のテーブルエントリ設定部７２７に対して出す点で処理が異なる。【０１９０】
(第七の実施の形態)
第七の実施の形態における切替えシステムの構成は、図２１のものと同じである。【０１９１】
第七の実施の形態における切替え装置は、第一の実施の形態では新規接続要求のフラグ及び、終了フラグを検知することによりＮＡＴテーブルエントリの作成及び削除を行っていたが、第七の実施の形態はそのいずれのフラグも検知せず、ディスパッチャもしくはサーバからの指示によりＮＡＴテーブルエントリの作成及び削除を行なう。つまり、第七の実施の形態は、第五の実施の形態及び第六の実施の形態を組み合わせた形態に等しい。【０１９２】
次に、図２８及び図２９を用いて、切替え装置７１０におけるアドレス変換処理の流れを説明する。図２８は切替え装置７１０がクライアントから受信したパケットをネットワーク２３０に送出する際に行なうアドレス変換の動作を示したフローチャートである。図２８を参照すると、クライアントからのパケットを受け取った切替え装置７１０はクライアントアドレスでＮＡＴテーブル２２５を検索し（ステップＳ８６０）、該当するエントリが無かった場合（ステップＳ８６０でＮｏ）にはデフォルトアドレス（今回の場合はディスパッチャのアドレス）にパケットの宛先アドレスを書き換えて（ステップＳ８６１）、ネットワーク２３０に送出する（ステップＳ８６３）。ＮＡＴテーブル２２５にクライアントアドレスを含むエントリがあった場合（ステップＳ８６０でＹｅｓ）、該当するエントリの変換アドレスを用いてパケットの宛先アドレスを書き換えて（ステップＳ８６２）、ネットワーク２３０に送出する（ステップＳ８６３）。【０１９３】
図１２２は、サーバ２５０−１〜ｎもしくはディスパッチャ７４０から切替え装置７１０を経由してクライアントにパケットを送る際のアドレス変換を行なう動作を示したフローチャートである。【０１９４】
図２９を参照すると、サーバ２５０−１〜ｎもしくはディスパッチャ７４０からのパケットを受け取った切替え装置７１０は、まず、ＮＡＴテーブル２２５の各エントリのクライアントアドレスおよびクライアントポート番号に、当該パケットの宛先アドレス及び宛先ポート番号と一致するものがあるかを探す（ステップＳ８７０）。このとき、ＮＡＴテーブル２２５の各エントリの変換アドレスに当該パケットの送信元アドレスと一致するものがあるかという観点で検索することも可能である。【０１９５】
ＮＡＴテーブル２２５のエントリに一致するものが無かった場合（ステップＳ８７０でＮｏ）、当該パケットの送信元アドレスがデフォルトアドレスかどうかを比較する（ステップＳ８７１）。デフォルトアドレスでなかった場合はエラーとなり、パケットを廃棄するなどの処理を行なう。デフォルトアドレスであった場合（ステップＳ８７１でＹｅｓ）、もしくは、ＮＡＴテーブル２２５のエントリに一致するものがあった場合（ステップＳ８７０でＹｅｓ）、当該パケットの送信元アドレスをシステムアドレスに書き換えて（ステップＳ８７２）、クライアントに対して送信する（ステップＳ８７３）。【０１９６】
次に、クライアントがリクエストを発してから、クライアントとサーバの間での処理が完了してセッションが切断されるまでの流れを説明する。【０１９７】
第七の実施の形態における処理の流れは第五の実施の形態における流れ（図２４）と同じであるが、第五の実施の形態ではステップＳ８９２において、２つのＦＩＮ属性が１になったことを契機にアドレス変換部２２０がエントリを削除していたことが、第七の実施の形態においては、サーバ２５０−１〜ｎもしくはディスパッチャ７４０のセッション転送部２４３がセッションを切断する際に当該セッションで使用していたクライアントアドレスと追加アドレス（変換アドレス）の対応を保持するエントリを削除する指示を、切替え装置７１０のテーブルエントリ設定部７２７に対して出す点で処理が異なる。【０１９８】
なお、上記の全ての実施の形態においては、クライアントとサーバの間のセッションを転送する際の動作を説明したが、クライアント、サーバの役割は固定的なものではない。【０１９９】
クライアント、サーバとも一般的な通信機器として良く、例えば、サーバ、クライアントともＩＰ電話であり、クライアントのＩＰ電話（上記の実施の形態の「クライアント」）から、コールセンタにある複数のオペレータのＩＰ電話（上記の実施の形態の「サーバ」）に、クライアントからの問い合わせを振り分けるようなシステムにおいても上記の実施の形態は適用可能である。【０２００】
また、ディスパッチャは切替え装置やサーバと独立の機器としているが、切替え装置と一体の機器とすること、サーバと一体の機器とすることも可能である。【０２０１】
以上の説明は本発明の好適な実施の形態の単なる例証であり、本発明の範囲はこれに限定されない。本発明に関する更に多くの変形例や改造例が本発明の範囲を逸脱することなく当該技術の熟達者によって容易に想到され得るであろう。
【産業上の利用可能性】
【０２０２】
本発明によれば、通信機器間のパケット通信においてセッションを転送する方法を用いて通信機器の接続相手の機器を切り替えることによる効率的な通信に利用できる。特に、データセンターにおいて、複数のサーバを切替え装置により切り替えることで、適切にかつ効率的に稼働させることなどが出来る。
【図１】
0005257649.tif 000002
【図２】
0005257649.tif 000003
【図３】
0005257649.tif 000004
【図４】
0005257649.tif 000005
【図５】
0005257649.tif 000006
【図６】
0005257649.tif 000007
【図７】
0005257649.tif 000008
【図８】
0005257649.tif 000009
【図９】
0005257649.tif 000010
【図１０】
0005257649.tif 000011
【図１１】
0005257649.tif 000012
【図１２】
0005257649.tif 000013
【図１３】
0005257649.tif 000014
【図１４】
0005257649.tif 000015
【図１５】
0005257649.tif 000016
【図１６】
0005257649.tif 000017
【図１７】
0005257649.tif 000018
【図１８】
0005257649.tif 000019
【図１９】
0005257649.tif 000020
【図２０】
0005257649.tif 000021
【図２１】
0005257649.tif 000022
【図２２】
0005257649.tif 000023
【図２３】
0005257649.tif 000024
【図２４】
0005257649.tif 000025
【図２５】
0005257649.tif 000026
【図２６】
0005257649.tif 000027
【図２７】
0005257649.tif 000028
【図２８】
0005257649.tif 000029
【図２９】
0005257649.tif 000030