(57)【要約】【課題】通信装置が１つのＩＰアドレスのみを保有する場合でも、複数の通信経路を利用したトランスポートレイヤの通信を適切に行うことが可能な通信システム、通信装置、中継装置及び通信方法を提供する。【解決手段】クライアント１０１及びサーバ１０３は、ゲートウェイ１０２が保有するＩＰアドレスに対応する、当該ゲートウェイ１０２を経由する通信経路と、自身が保有するＩＰアドレスに対応する通信経路とを選択的に利用して、通信相手との間で１のトランスポートレイヤの通信を行う。ゲートウェイ１０２は、自身が保有するＩＰアドレスに対応してトランスポートレイヤの通信に自身を経由する通信経路が利用される場合に、該通信経路において、クライアント１０１及びサーバ１０３からのパケットを通信相手へ中継する。【選択図】        図１
2004336542.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２の通信装置と、前記第１及び第２の通信装置間における通信を中継する中継装置とを有する通信システムにおいて、
前記第１の通信装置は、前記中継装置が保有する第１のＩＰアドレスに対応する、該中継装置を経由する第１の通信経路と、自身が保有する第２のＩＰアドレスに対応する第２の通信経路とを選択的に利用して、前記第２の通信装置との間で１のトランスポートレイヤの通信を行う通信手段を備え、
前記中継装置は、前記第１及び第２の通信装置間のトランスポートレイヤの通信に第１の通信経路が利用される場合に、該通信経路において、前記第１の通信装置からのパケットを前記第２の通信装置へ中継する中継手段を備える通信システム。
【請求項２】
通信相手の通信装置との間で通信を行う通信装置において、前記通信相手の通信装置との通信を中継する中継装置が保有する第１のＩＰアドレスに対応する、該中継装置を経由する第１の通信経路と、自身が保有する第２のＩＰアドレスに対応する第２の通信経路とを選択的に利用して、前記通信相手の通信装置との間で１のトランスポートレイヤの通信を行う通信手段を備える通信装置。
【請求項３】
請求項２に記載の通信装置において、
前記第１のＩＰアドレスを自身が保有するＩＰアドレスとして前記通信相手の通信装置へ通知するアドレス通知手段を備える通信装置。
【請求項４】
請求項３に記載の通信装置において、
前記通信手段は、送信対象のパケットにおいて、前記第１の通信経路を利用する場合には前記第１のＩＰアドレスを宛先のＩＰアドレスとして設定し、前記第２の通信経路を利用する場合には前記通信相手の通信装置が保有するＩＰアドレスを宛先のＩＰアドレスとして設定する通信装置。
【請求項５】
第１及び第２の通信装置間における通信を中継する中継装置において、
自身が保有するＩＰアドレスに対応して前記第１及び第２の通信装置間のトランスポートレイヤの通信に自身を経由する通信経路が利用される場合に、該通信経路において、前記第１の通信装置からのパケットを前記第２の通信装置へ中継する中継手段を備える中継装置。
【請求項６】
請求項５に記載の中継装置において、
前記中継手段は、前記第１の通信装置からのパケットにおける送信元のＩＰアドレスを前記自身が保有するＩＰアドレスに設定するとともに、宛先のＩＰアドレスを前記第２の通信装置が保有するＩＰアドレスに設定して前記第２の通信装置へ中継する中継装置。
【請求項７】
請求項６に記載の中継装置において、
前記パケット中継手段は、ＩＰレイヤにおけるチェックサムを再計算する中継装置。
【請求項８】
請求項５乃至７の何れかに記載の中継装置において、
自装置内にて、前記第１の通信装置において実行されるアプリケーションの識別子がユニークである中継装置。
【請求項９】
通信相手の通信装置との間で通信を行う通信装置における通信方法において、
前記通信相手の通信装置との通信を中継する中継装置が保有する第１のＩＰアドレスに対応する、前記中継装置を経由する第１の通信経路と、自身が保有する第２のＩＰアドレスに対応する第２の通信経路とを利用して、前記通信相手の通信装置との間で１のトランスポートレイヤの通信を行う通信方法。
【請求項１０】
第１及び第２の通信装置間における通信を中継する中継装置における通信方法において、
自身が保有するＩＰアドレスに対応して前記第１及び第２の通信装置間のトランスポートレイヤの通信に自身を必ず経由する通信経路が利用される場合に、該通信経路において、前記第１の通信装置からのパケットを前記第２の通信装置へ中継する通信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信ネットワークに接続された通信装置間の通信に関し、特に、複数の通信経路を利用するマルチパス通信に関する。
【０００２】
【従来の技術】
通信ネットワークに接続した２つの通信装置が複数の通信経路を用いて通信を行う技術として、特許文献１（特開２０００−２０９２７８号公報）の「ルータ及びルータを用いたパケット中継システム」がある。特許文献１では、複数のＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）に接続するＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  ＮＥＴｗｏｒｋ）内のクライアント端末がこれらのＩＳＰを介してインターネット内のサーバにアクセスする場合、クライアント端末からのサーバ宛パケットを受信したデフォルトゲートウェイは、自己が直接接続するＩＳＰ経由の通信経路の負荷状況を判定する。そして、その負荷が基準値以上であれば、デフォルトゲートウェイは、ＬＡＮ内において他のＩＳＰに接続する他のゲートウェイへパケットを転送し、当該他のゲートウェイが直接接続するＩＳＰ経由でサーバへのアクセスを実現する。なお、特許文献１において、通信経路は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）コネクション毎に固定である。
【０００３】
また、他の技術としては、特許文献２（特開２００１−６０９５６号公報）の「トランスポート層マルチリンク通信方法」がある。特許文献２では、複数の外部組織に直接接続するマルチホーム接続を行うネットワーク内において、端末は、複数のＩＰアドレスを有し、目的のサーバに対して、これらのＩＰアドレスに基づく独立したＴＣＰコネクション（サブフロー）を確立する。そして、上位層のアプリケーションには、これらのＴＣＰコネクションを束ねた１つの通信（トータルフロー）が提供される。サブフロー毎に異なる外部組織を利用可能にする方法としては、端末が複数のネットワークインタフェースでそれぞれ物理的に異なるネットワークに接続する方法、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）等で異なる外部組織へサブフローを導く方法、及び、端末へネットワークアドレス体系が異なる複数のＩＰアドレスを割り当て、ネットワーク体系毎に異なる外部組織にルーティングするようネットワークを構築する方法がある。
【０００４】
また、更に他の技術としては、ＩＥＴＦ（Ｔｈｅ  ＩＮＴｅｒＮＥＴ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）の規格であるＲＦＣ２９６０「Ｓｔｒｅａｍ  Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＳＣＴＰ）（２０００年１０月）や、ドラフト規格案である  「Ｓｔｒｅａｍ  Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｐｒｏｔｏｃｏｌ  （ＳＣＴＰ）  Ｄｙｎａｍｉｃ  Ａｄｄｒｅｓｓ  Ｒｅｃｏｎｆｉｇｕｒａｔｉｏｎ    ｄｒａｆｔ−ｉｅｔｆ−ｔｓｖｗｇ−ａｄｄＩＰ−ＳＣＴＰ−０６．ｔｘｔ」  がある。ＳＣＴＰは、ＴＣＰと同様のコネクションオリエンテッド型のトランスポートプロトコルであり、１つのコネクションにおいて、もしホストが複数のＩＰアドレスを有しているならば、通信経路を動的に切り替えることができる。
【０００５】
【特許文献１】
特開２０００−２０９２７８号公報（第７−８頁、図５）
【０００６】
【特許文献２】
特開２００１−６０９５６号公報（第３頁、図１）
【０００７】
【発明が解決しようとする課題】
しかしながら、特許文献１（特開２０００−２０９２７８号公報）では、通信経路は、ＴＣＰコネクション単位で１つに固定され、通信経路の障害時にＴＣＰコネクションを継続したまま他の通信経路へ変更することができない。これに対し、特許文献２（特開２００１−６０９５６号公報）及びＳＴＣＰでは、複数の通信経路のフローを束ねることで１つのアプリケーション通信を実現するため、仮に１つの通信経路に障害が発生しても他の通信経路により通信を継続することができる。しかし、サーバがＩＰアドレスを１つしか保有しない場合においてもクライアントが複数の通信経路にパケットを送信することを可能にするためには、クライアントのパケットルーティング機能としてソースアドレス（すなわちクライアントのアドレス）に基づいて通信経路を選択する機能が必要であり、本機能を有しないクライアントは、宛先であるサーバのＩＰアドレスで決定される通信経路が障害になった時点で通信が不可能になる。また、サーバがパケットを送信する際にも同様に、クライアントがＩＰアドレスを１つしか保有していない場合は、サーバのパケットルーティング機能としてソースアドレスに基づき通信経路を選択する機能が必要であり、本機能を有しないサーバは、宛先であるクライアントのＩＰアドレスで決定される通信経路が障害になった時点で通信が不可能になる。
【０００８】
本発明は、上述の問題点を解決するものであり、通信装置が１つのＩＰアドレスのみを保有する場合でも、複数の通信経路を利用したトランスポートレイヤの通信を適切に行うことが可能な通信システム、通信装置、中継装置及び通信方法を提供することを課題とする。
【０００９】
【課題を解決するための手段】
上記の課題を解決するため、本発明は請求項１に記載されるように、第１及び第２の通信装置と、前記第１及び第２の通信装置間における通信を中継する中継装置とを有する通信システムにおいて、前記第１の通信装置は、前記中継装置が保有する第１のＩＰアドレスに対応する、該中継装置を経由する第１の通信経路と、自身が保有する第２のＩＰアドレスに対応する第２の通信経路とを選択的に利用して、前記第２の通信装置との間で１のトランスポートレイヤの通信を行う通信手段を備え、前記中継装置は、前記第１及び第２の通信装置間のトランスポートレイヤの通信に第１の通信経路が利用される場合に、該通信経路において、前記第１の通信装置からのパケットを前記第２の通信装置へ中継する中継手段を備える。
【００１０】
また、本発明は請求項２に記載されるように、通信相手の通信装置との間で通信を行う通信装置において、前記通信相手の通信装置との通信を中継する中継装置が保有する第１のＩＰアドレスに対応する、該中継装置を経由する第１の通信経路と、自身が保有する第２のＩＰアドレスに対応する第２の通信経路とを選択的に利用して、前記通信相手の通信装置との間で１のトランスポートレイヤの通信を行う通信手段を備える。
【００１１】
また、本発明は請求項３に記載されるように、請求項２に記載の通信装置において、前記第１のＩＰアドレスを自身が保有するＩＰアドレスとして前記通信相手の通信装置へ通知するアドレス通知手段を備える。
【００１２】
また、本発明は請求項４に記載されるように、請求項３に記載の通信装置において、前記通信手段は、送信対象のパケットにおいて、前記第１の通信経路を利用する場合には前記第１のＩＰアドレスを宛先のＩＰアドレスとして設定し、前記第２の通信経路を利用する場合には前記通信相手の通信装置が保有するＩＰアドレスを宛先のＩＰアドレスとして設定する。
【００１３】
また、本発明は請求項５に記載されるように、第１及び第２の通信装置間における通信を中継する中継装置において、自身が保有するＩＰアドレスに対応して前記第１及び第２の通信装置間のトランスポートレイヤの通信に自身を経由する通信経路が利用される場合に、該通信経路において、前記第１の通信装置からのパケットを前記第２の通信装置へ中継する中継手段を備える。
【００１４】
また、本発明は請求項６に記載されるように、請求項５に記載の中継装置において、前記中継手段は、前記第１の通信装置からのパケットにおける送信元のＩＰアドレスを前記自身が保有するＩＰアドレスに設定するとともに、宛先のＩＰアドレスを前記第２の通信装置が保有するＩＰアドレスに設定して前記第２の通信装置へ中継する。
【００１５】
また、本発明は請求項７に記載されるように、請求項６に記載の中継装置において、前記パケット中継手段は、ＩＰレイヤにおけるチェックサムを再計算する。
【００１６】
また、本発明は請求項８に記載されるように、請求項５乃至７の何れかに記載の中継装置において、自装置内にて、前記第１の通信装置において実行されるアプリケーションの識別子がユニークである。
【００１７】
また、本発明は請求項９に記載されるように、通信相手の通信装置との間で通信を行う通信装置における通信方法において、前記通信相手の通信装置との通信を中継する中継装置が保有する第１のＩＰアドレスに対応する、前記中継装置を経由する第１の通信経路と、自身が保有する第２のＩＰアドレスに対応する第２の通信経路とを利用して、前記通信相手の通信装置との間で１のトランスポートレイヤの通信を行う。
【００１８】
また、本発明は請求項１０に記載されるように、第１及び第２の通信装置間における通信を中継する中継装置における通信方法において、自身が保有するＩＰアドレスに対応して前記第１及び第２の通信装置間のトランスポートレイヤの通信に自身を必ず経由する通信経路が利用される場合に、該通信経路において、前記第１の通信装置からのパケットを前記第２の通信装置へ中継する。
【００１９】
本発明によれば、第１の通信装置は、中継装置が保有するＩＰアドレスに対応する、中継装置を経由する第１の通信経路と、自身が保有するＩＰアドレスに対応する第２の通信経路とを選択的に利用して、通信相手である第２の通信装置との間で１のトランスポートレイヤの通信を行う。一方、中継装置は、第１のＩＰアドレスに対応してトランスポートレイヤの通信に自身を経由する通信経路が利用される場合に、該通信経路において、第１の通信装置からのパケットを第２の通信装置へ中継する。従って、第１の通信装置が１つのＩＰアドレスのみを保有する場合でも、複数の通信経路を利用したトランスポートレイヤの通信を適切に行うことが可能となる。
【００２０】
また、本発明によれば、第１の通信装置は、中継装置が保有するＩＰアドレスを自身が保有するＩＰアドレスとして第２の通信装置へ通知し、更に、中継装置を経由する第１の通信経路を利用する場合には、当該中継装置が保有するＩＰアドレスを宛先のＩＰアドレスとして設定したパケットを構成する。そして、中継装置は、第１の通信装置からのパケットにおける送信元のＩＰアドレスを自身が保有するＩＰアドレスに設定するとともに、宛先のＩＰアドレスを第２の通信装置が保有するＩＰアドレスに設定して中継する。従って、第２の通信装置は、中継装置が保有するＩＰアドレスについても、第１の通信装置が保有しているとみなすことができ、更には、送信元のＩＰアドレスが第１の通信装置が予め保有しているＩＰアドレスとなっているパケットのみならず、送信元のＩＰアドレスが中継装置が保有するＩＰアドレスとなっているパケットについても、第１の通信装置から送信されたものであることを認識することができ、複数の通信経路を利用したトランスポートレイヤの通信を適切に行うことが可能となる。
【００２１】
また、本発明によれば、中継装置は、第１の通信装置からのパケットの送信元及び宛先のＩＰアドレスを変換した場合に、ＩＰレイヤにおけるチェックサムを再計算しており、第２の通信装置がＩＰレイヤにおけるチェックサムに基づいて誤り検出を行う際に、チェックサムが再計算されていないために間違った誤り検出を行うことを防止することができる。
【００２２】
また、本発明によれば、中継装置において、第１の通信装置において実行されるアプリケーションの識別子がユニークである。このため、第１の通信装置が複数存在する場合に、これら複数の第１の通信装置が第２の通信装置へアクセスすることにより、中継装置が第２の通信装置からのパケットをどの第１の通信装置へ転送すればよいのか判断できなくなることが防止される。
【００２３】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。
【００２４】
図１は、本実施形態のネットワークの構成例を示す図である。同図に示す通信ネットワーク１００は、クライアント（Ｃ）１０１、中継装置としてのマルチパスアクセスゲートウェイ（Ｇ）（以下、ゲートウェイと称する）１０２、サーバ（Ｓ）１０３、クライアント１０１とサーバ１０３とを接続する通信経路１０４、クライアント１０１とゲートウェイ１０２とを接続する通信経路１０５、及び、ゲートウェイ１０２とサーバ１０３とを接続する通信経路１０６により構成される。同図において、通信ネットワーク１００は、クライアント１０１とサーバ１０３との通信において、複数の通信経路を利用したいわゆるマルチパスアクセス通信を行うものである。通信ネットワーク１００は、ＩＰレイヤのネットワークであればよく、当該ＩＰレイヤの下位レイヤは例えばＥｔｈｅｒｎｅｔ（登録商標）やＡＴＭ等である。
【００２５】
クライアント１０１は、アプリケーションプログラムの要求に基づき、通信ネットワーク１００を介してサーバ１０３にＳＣＴＰで接続し、当該サーバ１０３との間でアプリケーションデータの送受信を行う。ＳＴＣＰではコネクションを識別するための識別子としてＩＰアドレスとＳＣＴＰポート番号が使用される。ＳＣＴＰポート番号は、ＴＣＰあるいはＵＤＰポート番号と同様、独立した番号空間を有し、エンドホスト（ここではクライアント１０１やサーバ１０３）上でのアプリケーションを識別するために使用される。エンドホストのＳＣＴＰモジュールは、コネクションの自側端点であるＩＰアドレス、ＳＣＴＰポート番号、相手側端点のＩＰアドレス、ＳＣＴＰポート番号の組をコネクション毎に管理する。
【００２６】
なお、ＳＣＴＰでは、エンドツーエンド通信を実現するコネクションのことを「アソシエーション」と称し、上述のクライアント１０１がサーバ１０３に接続することを「アソシエーションを確立する」と称する。アプリケーションデータの送受信を行うためには事前にエンドホスト間でアソシエーションが確立されることが必要である。また、エンドホスト間でアソシエーションが確立され、アプリケーションデータの送受信が完了したときにアソシエーションが解放される概念は、ＳＣＴＰと同様コネクションオリエンテッドなプロトコルであるＴＣＰにおいてコネクションが確立、解放されるのと同じである。
【００２７】
図２は、ＳＣＴＰパケットを含むＩＰパケットのフォーマットを示す。ＩＰパケット２００はＩＰヘッダ（ＩＰ  Ｈｅａｄｅｒ）２０１、ＳＣＴＰ共通ヘッダ（ＳＴＣＰ  Ｃｏｍｍｏｎ  Ｈｅａｄｅｒ）（以下、ＳＣＴＰヘッダと称する）２０２、ＳＣＴＰチャンク（Ｃｈｕｎｋ）２０３から構成される。例えば、図１の通信経路１０４において、クライアント１０１からサーバ１０３へ送信されるパケットの場合、送信元であるクライアント１０１は、ＩＰヘッダ２０１内の送信元アドレス（ソースＩＰアドレス：Ｓｏｕｒｃｅ  ＩＰ  ａｄｄｒｅｓｓ）２０５にクライアント１０１のＩＰアドレス（図１ではａｃ）を、宛先アドレス（デスティネーションＩＰアドレス：Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ  ａｄｄｒｅｓｓ）２０６にはサーバ１０３のＩＰアドレス（図１ではａｓ）を、ＳＣＴＰヘッダ２０２内の送信元ポート（ソースポート：Ｓｒｃ  Ｐｏｒｔ）２０７にはクライアント１０１がアプリケーションに割り当てたＳＣＴＰポート番号（図１ではｐｃ）を、宛先ポート（デスティネーションポート：Ｄｓｔ  Ｐｏｒｔ）２０８にはサーバ１０３がアプリケーションに割り当てたＳＣＴＰポート番号（図１ではｐｓ）を、それぞれ設定する。
【００２８】
なお、ＳＣＴＰチャンク２０３は、アソシエーションの確立、解放を行うための制御情報や、アプリケーションデータを格納する領域であり、これらの塊（チャンク）を、ＩＰパケットの最大許容長以下に収まるよう複数個搭載することができる。また、ＩＰヘッダ２０１内のプロトコル識別子（Ｐｒｏｔ）２０９に設定されるＳＣＴＰのコードは０ｘ８４である。
【００２９】
ところで、ＳＣＴＰではホストが複数のＩＰアドレスを有する場合、すなわちホストがマルチホームホストである場合、アソシエーション確立時にあらかじめ通信相手にこれら複数のＩＰアドレスを通知することで、アソシエーション確立後に送受信されるいかなるパケットも、ＩＰアドレスを自由に選んで宛先または送信元として利用することが可能となる。つまり、ＴＣＰでは不可能であった、アプリケーションデータ通信中のＩＰアドレスの切り替えが可能となる。但し、ＳＣＴＰポートは不変である必要があり、例えばマルチホームホスト同士のアソシエーションではクライアントの複数のＩＰアドレス、クライアントのＳＣＴＰポート番号、サーバの複数のＩＰアドレス、及び、サーバのＳＣＴＰポート番号の組を管理する。マルチホームホストは、アプリケーションデータ通信にＳＣＴＰを使用することにより、特定の通信経路障害に強いデータ通信を行うことが可能となる。
【００３０】
一方、図１のクライアント１０１、サーバ１０３はＩＰアドレスをそれぞれ１つしか持たないホストである（クライアント１０１はａｃ、サーバ１０３はａｓ）。このため、従来のＳＣＴＰ通信を利用する場合には、クライアント１０１とサーバ１０３とを直接接続する通信経路１０４を利用する通信しか行うことができない。この場合、仮に通信経路１０４上に障害が発生した場合は、通信ネットワーク１００自体が備える復旧手段によってのみ通信を回復することができる。
【００３１】
これに対し、本発明では、ゲートウェイ１０２を利用することで、ＩＰアドレスを１つしか保有しないクライアント１０１及びサーバ１０３においても、マルチホームホストと同様に通信経路の冗長化を行えるようにする。具体的には、以下のような処理が行われる。
【００３２】
図１において、クライアント１０１は、サーバ１０３へのアソシエーション確立時に、自身が保有するＩＰアドレスａｃとともに、ゲートウェイ１０２が保有するＩＰアドレスａｇｃをあたかも自身が保有するＩＰアドレスのようにサーバ１０３に通知する。サーバ１０３は、アソシエーション管理情報にクライアント１０１のＩＰアドレスとしてａｃとａｇｃを登録する。更に、サーバ１０３は、状況に応じてＩＰアドレスａｇｃのノード、即ち、ゲートウェイ１０２へパケットを送信する。本パケットの送信元アドレス、送信元ポート、宛先アドレス、宛先ポートはそれぞれａｓ、ｐｓ、ａｇｃ、ｐｃである。ゲートウェイ１０２は、サーバ１０３から受信したパケットの送信元アドレス、宛先アドレスを更新し、ＩＰアドレスａｃのノード、即ち、クライアント１０１へパケットを転送する。本パケットの送信元アドレス、送信元ポート、宛先アドレス、宛先ポートはそれぞれａｇｓ、ｐｓ、ａｃ、ｐｃである。
【００３３】
同様にクライアント１０１がＩＰアドレスａｇｓのノード、即ち、ゲートウェイ１０２へパケットを送信すると、ゲートウェイ１０２は、受信したパケットの送信元アドレス、宛先アドレスを更新し、アドレスａｓのノード、即ち、サーバ１０３へ転送する。
【００３４】
クライアント１０１及びゲートウェイ１０２の機能により、クライアント１０１とサーバ１０３は、通信経路１０４と、通信経路１０５及び１０６との２つの経路を利用してマルチホームホストと同様のＳＣＴＰ通信を行うことができる。なお、本実施形態ではゲートウェイ１０２のＩＰアドレスとしてクライアント１０１との通信用アドレスａｇｓと、サーバ１０３との通信用アドレスａｇｃと用いて説明するが、この２つのアドレスは同一であっても良い。
【００３５】
図３は、クライアント１０１の構成例を示す図である。同図に示すクライアント１０１は、アプリケーションプログラム（ＡＰＬ）３０１、ネットワークインタフェースカード（ＮＩＣ）３０６、オペレーションシステム（ＯＳ）３１１、からなる。
【００３６】
ＯＳ３１１は、様々なＡＰＬ３０１の実行環境を装置上に実現するための基本プログラムであり、ネットワークモジュール（ＮＥＴ）３０８、ファイルシステム（ＦＳ）３０９、装置初期化モジュール（ＩＮＩＴ）３１０等により構成される。ＮＩＣ３０６は、Ｅｔｈｅｒｎｅｔ（登録商標）等の電気通信回線３０７を介して通信ネットワーク１００に接続される。ＮＥＴ３０８は、クライアント１０１が通信ネットワーク１００内の他のホストと通信するためのプロトコル処理を司るものである。このＮＥＴ３０８は、ＴＣＰ処理部（ＴＣＰ）３０２、ＳＣＴＰ処理部（ＳＣＴＰ）３０３、ＩＰ処理部（ＩＰ）３０４及びレイヤ２処理部（Ｌ２）３０５からなる。
【００３７】
ＡＰＬ３０１は、ＳＣＴＰによるアプリケーションデータ通信を行う場合、対象データをＳＣＴＰ３０３に渡す。ＳＣＴＰ３０３は、対象データを含んだＳＣＴＰパケットを生成し、ＩＰ３０４はルーティング等のＩＰ処理を行う。Ｌ２（３０５）は、ＩＰレイヤのパケットにリンクレイヤ（レイヤ２）のヘッダを付加した後、ＮＩＣ３０６を介して電気通信回線３０７へ送出する。また、ＮＩＣ３０６が電気通信回線３０７から受信したパケットは、Ｌ２（３０５）、ＩＰ３０４を経由してＳＣＴＰ３０３に到達する。ＳＴＣＰ３０３は、パケットにアプリケーションデータが含まれている場合は、そのアプリケーションデータをＡＰＬ３０１に渡す。なお、サーバ１０３も図３に示すクライアント１０１と同様の構成を有する。
【００３８】
図４は、ゲートウェイ１０２の構成例を示す図である。ゲートウェイ１０２は、アプリケーションプログラム（ＡＰＬ）を含んでいないこと以外はクライアント１０１とほぼ同様の構成である。即ち、図４のゲートウェイ１０２において、ＯＳ４０１、ＮＥＴ４０２、ＩＰ４０３、Ｌ２（４０４）は、図３のクライアント１０１におけるＯＳ３１１、ＮＥＴ３０８、ＩＰ３０４、Ｌ２（３０５）と同じである。但し、ＩＰ４０３は、クライアント１０１、サーバ１０３から受信したＳＣＴＰパケットの送信元アドレス、宛先アドレスを変更してサーバ１０３、クライアント１０１に転送するためのＳＣＴＰ制御モジュール（ＳＣＴＰＣＴＬ）４０７を備える。なお、ＮＩＣ４０５ａ及び４０５ｂは、それぞれ電気通信回線４０６ａ及び４０６ｂを介して通信ネットワーク１００に接続されているが、１つのＮＩＣが電気通信回線を介して通信ネットワーク１００に接続される構成でも良い。
【００３９】
次に、クライアント１０１、ゲートウェイ１０２及びサーバ１０３がそれぞれ管理するアソシエーション情報について説明し、アソシエーション確立後のアプリケーションデータ通信において、ゲートウェイ１０２経由でパケットがどのように転送されるかについて説明する。
【００４０】
図５は、サーバ１０３内のＳＣＴＰ３０３が管理するアソシエーション情報テーブルである。このアソシエーション情報テーブル５００は、アソシエーション確立時に生成され、アソシエーションの数だけ存在する。図５において、ローカルアドレス（Ｌｏｃａｌ  ａｄｄｒｅｓｓ）５０１は、サーバ１０３が保有し、通信に利用するＩＰアドレスである。受信プライマリアドレス（Ｐｒｉｍａｒｙ−ｒｃｖ）５０２は、サーバ１０３が保有するローカルアドレスが複数存在する場合に、どのアドレスが主にパケット受信に使用されるかを示す情報である。本実施形態では、サーバ１０３のローカルアドレスはａｓだけであるので、このａｓが受信プライマリアドレスとなる。ローカルポート（Ｌｏｃａｌ  Ｐｏｒｔ）５０３は、対象のアソシエーションを通信に使用しているサーバ１０３上のアプリケーションに割り当てられたＳＣＴＰポート番号である。ローカルアドレスが複数存在したとしても、１つのアソシエーションで使用されるローカルポートは１つだけである。対向アドレス（Ｐｅｅｒ  ａｄｄｒｅｓｓ）５０４は、クライアント１０１がアソシエーション確立時に自己のアドレスとしてサーバ１０３に通知してきたＩＰアドレスである。ここで、ａｇｃは実際はクライアント１０１のＩＰアドレスではないが、当該クライアント１０１がサーバ１０３へ通知してきたものであるため、クライアント１０１が保有するＩＰアドレスａｃとともに格納される。送信プライマリアドレス（Ｐｒｉｍａｒｙ−ｓｎｄ）５０５は、対向アドレスが複数存在する場合に、どのアドレスが主にパケット送信に使用されるかを示す情報である。対向ホストであるクライアント１０１は、ＳＣＴＰの制御メッセージを用いて送信プライマリアドレスを指定することができ、本実施形態では、クライアント１０１が保有するＩＰアドレスａｃが送信プライマリアドレスとなっている。対向ポート（Ｐｅｅｒ  Ｐｏｒｔ）５０６は、対向ホストであるクライアント１０１上のアプリケーションが使用しているＳＣＴＰポート番号である。対向アドレスが複数存在したとしても、１つのアソシエーションで使用される対向ポートは１つだけである。
【００４１】
図６は、クライアント１０１内のＳＣＴＰ３０３が管理するアソシエーション情報テーブルである。このアソシエーション情報テーブル６００の構成は、サーバ１０３のアソシエーション情報テーブル５００と同じである。但し、設定される情報は異なる。即ち、ローカルアドレス６０１には、クライアント１０１が保有するＩＰアドレスａｃと、クライアント１０１がサーバ１０３に対して自身が保有するＩＰアドレスとして通知するゲートウェイ１０２のＩＰアドレスａｇｃが設定される。受信プライマリアドレス６０２は、その時点でサーバ１０３に対し、送信プライマリアドレスとして指定したＩＰアドレスを示す情報である。ローカルポート６０３には、クライアント１０１上のアプリケーションが使用しているＳＣＴＰポート番号ｐｃが設定される。対向アドレス６０４には、サーバ１０３が保有するＩＰアドレスａｓ以外にゲートウェイ１０２が保有するＩＰアドレスａｇｓが設定される。ここで、ゲートウェイ１０２が保有するＩＰアドレスａｇｓは、アソシエーション確立時にサーバ１０３から通知されるのではなく、クライアント１０１が予め認識しているものである。送信プライマリアドレス６０５は、唯一のＩＰアドレスしか有しないサーバ１０３が選択、指示することはないので、クライアント１０１が例えば受信プライマリアドレス６０２と連動させて設定されるものである。対向ポート６０６は、サーバ１０３上のアプリケーションが使用しているＳＣＴＰポート番号ｐｓが設定される。
【００４２】
図７は、ゲートウェイ１０２内のＳＣＴＰＣＴＬ４０７が管理するアソシエーション管理テーブルである。このアソシエーション管理テーブル７００は、ゲートウェイ１０２が関与する全てのアソシエーションを一括して管理するテーブルであり、本実施形態では３つのアソシエーションが登録済みである。これらの情報は、クライアント１０１がそれぞれ対応するアソシエーションを確立するのに先立って実施するアソシエーション登録手順において、当該クライアント１０１がゲートウェイ１０２に通知することにより、本テーブルに登録される。アソシエーション登録手順については後述する。
【００４３】
図７において、クライアントアドレス（Ｃｌｉｅｎｔ  ａｄｄｒｅｓｓ）７０１、クライアントポート（Ｃｌｉｅｎｔ  Ｐｏｒｔ）７０２には、それぞれクライアント１０１が保有するＩＰアドレス、クライアント１０１上のアプリケーションが使用しているＳＣＴＰポート番号が設定される。プロキシサーバアドレス（Ｐｒｏｘｙ  ｓｅｒｖｅｒ  ａｄｄｒｅｓｓ）７０３、プロキシクライアントアドレス（Ｐｒｏｘｙ  ｃｌｉｅｎｔ  ａｄｄｒｅｓｓ）７０４には、それぞれゲートウェイ１０２がクライアント１０１とのパケット送受信に使用するＩＰアドレス、サーバ１０３とのパケット送受信に使用するＩＰアドレスが設定される。サーバアドレス（Ｓｅｒｖｅｒ  ａｄｄｒｅｓｓ）７０５、サーバポート（Ｓｅｒｖｅｒ  ｐｏｒｔ）７０６には、それぞれサーバ１０３が保有するＩＰアドレス、サーバ１０３上のアプリケーションが使用しているＳＣＴＰポート番号が設定される。アイドルタイマ７０７は、個々のアソシエーション情報を削除するまでの時間が設定されており、周期的に減算されて０になった時点で対象のアソシエーション情報がテーブルから削除される。
【００４４】
図８はクライアント１０１のＳＣＴＰ３０３におけるＳＣＴＰパケット送信時のフローチャートである。このフローチャートは、ＳＣＴＰヘッダ２０２及びＳＣＴＰチャンク２０３からなるＳＣＴＰパケットの完成後、ＩＰヘッダ情報が付加されてＩＰ３０４への送信キューに入れられるまでの処理を示す。
【００４５】
ＳＣＴＰパケットキューイング要求が発生すると（ステップ８００）、ＳＴＣＰ３０３は、対象パケットが再送パケットであるか否かを判定する（ステップ８０１）。再送パケットでない場合、ＳＣＴＰ３０３は、プライマリアドレス宛に送信するため、ＳＣＴＰのプロトコルに基づき、ＩＰヘッダ２０１の宛先アドレス２０６に、図６のアソシエーション情報テーブル６００の送信プライマリアドレス６０５が示す対向アドレス６０４（本テーブル例ではａｓ）を設定する（ステップ８０２）。一方、ステップ８０１において再送パケットであると判定された場合には、ＳＣＴＰ３０３は、可能ならばプライマリではないアドレスを宛先とする必要があるため、ＳＣＴＰのプロトコルに基づき、宛先アドレス２０６に、送信プライマリアドレス６０５が示すアドレス以外の対向アドレス（本テーブル例ではａｇｓ）を設定する（ステップ８０３）。
【００４６】
その後、ＳＣＴＰ３０３は、図２のＩＰヘッダ２０１の送信元アドレス２０５を設定する（ステップ８０４）。この際、ＳＣＴＰ３０３は、アソシエーション情報テーブル６００に設定されているローカルアドレス６０１によらず、必ずクライアント１０１が実際に保有するＩＰアドレスａｃを設定する。これは、ネットワークアドレス体系にそぐわないＩＰアドレスを送信元とするパケットは、ゲートウェイ１０２に到達する以前に通信ネットワーク１００内で廃棄される可能性があるからである。従来のＳＣＴＰでは、マルチホームホストは、対向ホストから重複パケット受信の通知を受けると、送信元アドレスを切り替える処理を行う場合があるが、クライアント１０１は、この点に関してマルチホームホストと同一の動作を行わない。
【００４７】
送信元アドレス２０５の設定後、ＳＣＴＰ３０３は、その他のＩＰヘッダ情報を設定してＩＰパケットを完成し（ステップ８０５）、従来のＳＣＴＰと同様、宛先アドレス別に管理される送信キューに入力して（ステップ８０６）、一連の処理を終了する。送信キュー内のＩＰパケットは、クライアント１０１のＳＣＴＰ３０３とサーバ１０３のＳＣＴＰ３０３が連携して行うフロー制御に従ったタイミングでＩＰ３０４へ送られ、最終的にクライアント１０１外へ送信される。
【００４８】
図９は、ゲートウェイ１０２のＳＣＴＰＣＴＬ４０７におけるＳＣＴＰパケット転送時のフローチャートである。ＮＩＣ４０５ａ及び４０５ｂが電気通信回線４０６ａ及び４０６ｂを介して受信したＩＰパケット２００は、Ｌ２（４０４）を経てＩＰ４０３へ到達する。ここで、ＩＰパケット２００の宛先アドレス２０６が、ゲートウェイ１０２が保有するＩＰアドレスａｇｓ又はａｇｃであり、プロトコル識別子２０９がＳＣＴＰの場合、このＩＰパケット２００は、ＩＰ４０３からＳＣＴＰＣＴＬ４０７へ渡されて、当該ＳＣＴＰ４０７により図９のフローチャートの処理が実行される。
【００４９】
まず、ＳＣＴＰＣＴＬ４０７は、受信したＩＰパケット２００が属するアソシエーションを特定するため、図７のアソシエーション管理テーブル７００を検索し（ステップ９０１）、当該ＩＰパケット２００内の送信元アドレス２０５、宛先アドレス２０６、送信元ポート２０７、宛先ポート２０８の組み合わせが成り立つアソシエーションがあるか否かを判定する（ステップ９０２）。
【００５０】
該当するアソシエーションがない場合には、ＳＣＴＰＣＴＬ４０７は、受信したＩＰパケット２００を廃棄して（ステップ９０３）、一連の処理を終了する。一方、該当アソシエーションが存在する場合には、ＳＣＴＰＣＴＬ４０７は、送信元ホストがクライアント１０１であるか否かを判定し（ステップ９０４）、クライアント１０１でない場合、換言すれば、サーバ１０３の場合には、ＩＰパケット２００の送信元アドレス２０５にプロキシサーバアドレス７０３を、宛先アドレス２０６にクライアントアドレス７０１を設定する（ステップ９０５、９０６）。
【００５１】
一方、ステップ９０４において、送信元がクライアント１０１であった場合には、ＩＰパケット２００の送信元アドレス２０５にプロキシクライアントアドレス７０４を、宛先アドレス２０６にサーバアドレス７０５を設定する（ステップ９０７、９０８）。
【００５２】
ステップ９０５、９０６、又はステップ９０７、９０８の処理の後、ＳＣＴＰＣＴＬ４０７は、対象のアソシエーションのアイドルタイマ７０７を初期値、例えば６０秒に設定し、再起動する（ステップ９０９）。次に、ＳＣＴＰＣＴＬ４０７は、ＩＰヘッダを変更したため、その変更後のＩＰヘッダのチェックサム２０４を再計算を行う（ステップ９１０）。なお、ＳＣＴＰヘッダ２０２内のチェックサム２１０は、ＳＣＴＰパケット（ＳＣＴＰヘッダ２０２及びチャンク２０３）に基づいて計算されており、宛先アドレス２０６及び送信元アドレス２０５が変更されても、ＳＣＴＰパケットは変更されていない。このため、ＳＣＴＰＣＴＬ４０７は、ＳＣＴＰヘッダ２０２内のチェックサム２１０については再計算する必要がない。
【００５３】
このようにして、ＩＰパケット２００が完成すると、ＳＣＴＰＣＴＬ４０７は、完成したＩＰパケット２００を送信する（ステップ９１１）。このＩＰパケット２００は、その後、ＩＰ４０３、Ｌ２（４０４）を経由してＮＩＣ４０５ａ又は４０５ｂからゲートウェイ１０２外へ送信される。
【００５４】
以上の処理により、クライアント１０１からゲートウェイ１０２へ送信されたパケットは、当該ゲートウェイ１０２においてＩＰアドレスが変換された後、サーバ１０３へ転送される。同様にサーバ１０３からゲートウェイ１０２へ送信されたパケットは、当該ゲートウェイ１０２においてＩＰアドレスが変換された後、クライアント１０１へ転送される。
【００５５】
ゲートウェイ１０２からのＳＣＴＰパケットを受信したサーバ１０３あるいはクライアント１０１は、自己のアソシエーション情報テーブル５００、６００の対向アドレス５０４、６０４にゲートウェイ１０２が保有するＩＰアドレスが登録済みであるため、従来のＳＣＴＰと同様マルチホームホストからの正常なパケットであると判断して、受信処理を行う。
【００５６】
図１０は、ゲートウェイ１０２のＳＣＴＰＣＴＬ４０７におけるアソシエーション管理テーブル７００からアソシエーション情報を削除する際のフローチャートである。
【００５７】
ＳＣＴＰＣＴＬ４０７は、周期的にアイドルタイマ７０７を減算しており、そのアソシエーションに属する新たなパケットを受信しない限りそのうち値が０となり満了となる（ステップ１０００）。アイドルタイマ７０７が満了すると、ＳＣＴＰＣＴＬ４０７は、対応するアソシエーション情報をアソシエーション管理テーブル７００から削除する（ステップ１００１）。
【００５８】
次にアソシエーション確立後の処理に関し、プライマリアドレスの変更について説明する。図１１は、クライアント１０１がサーバ１０３に対し、主にゲートウェイ１０２経由の通信経路１０５及び１０６でパケットを受信したいことを通知する際のシーケンス図である。
【００５９】
クライアント１０１において、何らかの判断基準で優先的に利用する通信経路の切替要求（プライマリ切替要求）発生すると（ステップ１１０１）、クライアント１０１は、ＳＣＴＰのＡＳＣＯＮＦメッセージを送信する（ステップ１１０２）。この際、クライアント１０１は、自身が管理するアソシエーション情報テーブル６００のローカルアドレス６０１に登録されており、且つ、受信プライマリアドレス６０２によってプライマリと示されていないＩＰアドレス（本テーブル例ではａｇｃ）をメッセージ内部に設定する。
【００６０】
ＡＳＣＯＮＦメッセージを受信したサーバ１０３は、アソシエーション情報テーブル５００の送信プライマリアドレス５０５を更新し、対向アドレス５０４のうち、ゲートウェイ１０２が保有するＩＰアドレスａｇｃにプライマリのマークをつける（ステップ１１０３）。更に、サーバ１０３は、ＳＣＴＰのＡＳＣＯＮＦ−ＡＣＫメッセージをクライアント１０１に送信する（ステップ１１０４）。
【００６１】
クライアント１０１は、ＡＳＣＯＮＦ−ＡＣＫメッセージを受信すると、自身が管理するアソシエーション情報テーブル６００の受信プライマリアドレス６０２を更新し、ローカルアドレス６０１のうち、ゲートウェイ１０２が保有するＩＰアドレスａｇｃにプライマリのマークをつけるとともに、対向アドレス６０４のうち、ゲートウェイ１０２が保有するＩＰアドレスａｇｓにプライマリのマークをつける（ステップ１１０５）。
【００６２】
同様に、クライアント１０１がサーバ１０３に対し、主にゲートウェイ１０２を経由しない通信経路１０４でパケットを受信したいことを通知する際には、クライアント１０１は、ＡＳＣＯＮＦメッセージに自身が保有するＩＰアドレスａｃを含ませてサーバ１０３に通知することで変更することが可能となる。なお、ＡＳＣＯＮＦメッセージの送受信経路は、通知するＩＰアドレスが何であるかによらず、図８のＳＣＴＰパケット送信時のフローチャートに従って決定される。また、図１１では、ＡＳＣＯＮＦメッセージがゲートウェイ１０２を経由せずに通知される例を示したが、ゲートウェイ１０２を経由して通知される場合には、当該ゲートウェイ１０２は、図９に示すＩＰヘッダ２０１のアドレス変換を行って、サーバ１０３へ転送する。
【００６３】
以上、クライアント１０１、サーバ１０３及びゲートウェイ１０２がそれぞれアソシエーション情報テーブル６００、５００、アソシエーション管理テーブル７００に対象アソシエーションの情報を設定済みの場合、換言すれば、アソシエーションが確立された状態におけるＳＣＴＰパケットの送受信について説明した。次に、これらのアソシエーション情報テーブル６００、５００、アソシエーション管理テーブル７００にアソシエーション情報を設定する手順について説明する。
【００６４】
図１２は、クライアント１０１がサーバ１０３へアソシエーションを確立するのに先立って実施するアソシエーション登録処理時におけるシーケンス図である。
【００６５】
クライアント１０１内のＡＰＬ３０１がサーバ１０３（ＩＰアドレスａｓ）のＳＣＴＰポート番号ｐｓに対するアソシエーションの確立を、クライアント１０１内のＳＣＴＰ３０３に要求すると（ステップ１２０１）、ＳＣＴＰ３０３はＡＰＬ３０１に割り当てるポート（ｐｃ）を選択する（ステップ１２０２）。更に、クライアント１０１内のＳＣＴＰ３０３は、ゲートウェイ１０２に対して、アソシエーション登録要求メッセージを送信する（ステップ１２０３）。
【００６６】
図１３は、アソシエーション登録要求メッセージのフォーマットを示す図である。同図のアソシエーション登録要求メッセージ１３００において、アソシエーション登録要求１３０１は、本メッセージがアソシエーション登録要求メッセージであることを示すメッセージ識別子である。クライアントＩＰアドレス（Ｃｌｉｅｎｔ  ＩＰ  ａｄｄｒｅｓｓ）１３０２、クライアントポート（Ｃｌｉｅｎｔ  Ｐｏｒｔ）１３０３、サーバＩＰアドレス（Ｓｅｒｖｅｒ  ＩＰ  Ａｄｄｒｅｓｓ）１３０４及びサーバポート（Ｓｅｒｖｅｒ  Ｐｏｒｔ）１３０５には、それぞれ、クライアント１０１が保有するＩＰアドレスａｃ、図１２のステップ１２０２で選択されたポートｐｃ、サーバ１０３が保有するＩＰアドレスａｓ、サーバ１０３において割り当てられるポートｐｓが設定される。このアソシエーション登録要求メッセージ１３００は、例えばＵＤＰ／ＩＰにより、クライアント１０１からゲートウェイ１０２へ送信される。
【００６７】
図１４は、ＵＤＰ／ＩＰパケットのフォーマットを示す図である。同図において、ＵＤＰ／ＩＰパケット１４００は、ＩＰヘッダ（ＩＰ  ｈｅａｄｅｒ）１４０１、ＵＤＰヘッダ（ＵＤＰ  ｈｅａｄｅｒ）１４０２及びＵＤＰペイロード（ＵＤＰ  ｐａｕｌｏａｄ）１４０３により構成される。
【００６８】
ＩＰヘッダ１４０１内の送信元アドレス（ソースＩＰアドレス：Ｓｏｕｒｃｅ  ＩＰ  ａｄｄｒｅｓｓ）１４０４及び宛先アドレス（デスティネーションＩＰアドレス：Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ  ａｄｄｒｅｓｓ）１４０５には、それぞれクライアント１０１が保有するＩＰアドレスａｃ、ゲートウェイ１０２が保有するＩＰアドレスａｇｓが設定される。
【００６９】
ＵＤＰヘッダ１４０２内の送信元ポート（ソースポート：Ｓｒｃ  Ｐｏｒｔ）１４０６には、クライアント１０１がアソシエーション登録要求メッセージの送信のために割り当てたＵＤＰポート番号が設定される。また、宛先ポート（デスティネーションポート：Ｄｓｔ  Ｐｏｒｔ）１４０７には、ゲートウェイ１０２がアソシエーション登録要求メッセージを受信するために予め待ち受けているＵＤＰポート番号が設定される。ここで、宛先アドレス１４０５及び宛先ポート１４０７は、図１２のシーケンス図の処理によらず、別途、予めクライアント１０１が認識していることを前提としている。この場合、これら宛先アドレス１４０５及び宛先ポート１４０７は、例えば、ユーザのマニュアル設定などにより、クライアント１０１に登録されている。アソシエーション登録要求メッセージ１３００は、ＵＤＰペイロード１４０３に設定される。
【００７０】
再び、図１２について説明する。ゲートウェイ１０２がステップ１２０３においてアソシエーション登録要求メッセージ１３００を受信すると、アソシエーション管理テーブル７００のクライアントポート７０２に、アソシエーション登録要求メッセージ１３００内のクライアントポート１３０３と一致するものがあるか否か、換言すれば、アソシエーション登録要求メッセージ１３００内のクライアントポート１３０３が未使用であるか否かを判定する（ステップ１２０４）。
【００７１】
クライアントポート１３０３に一致するものがなく、当該クライアントポート１３０３が未使用である場合には、ゲートウェイ１０２は、新たなアソシエーションが開始されるものと判断し、アソシエーション管理テーブル７００のクライアントアドレス７０１、クライアントポート７０２、サーバアドレス７０５、サーバポート７０６に、それぞれアソシエーション登録要求メッセージ１３００内のクライアントＩＰアドレス１３０２、クライアントポート１３０３、サーバＩＰアドレス１３０４及びサーバポート１３０５を設定する。これにより新たなアソシエーションに対応するアソシエーション情報が登録されることになる（ステップ１２０５）。
【００７２】
次に、ゲートウェイ１０２は、アソシエーション管理テーブル７００のアイドルタイマ７０７を初期値に設定して起動し（ステップ１２０６）、クライアント１０１へアソシエーション登録成功メッセージを送信する（ステップ１２０７）。
【００７３】
図１５は、アソシエーション登録成功メッセージのフォーマットを示す図である。同図のアソシエーション登録成功メッセージ１５００において、アソシエーション登録成功１５０１は、本メッセージがアソシエーション登録成功メッセージであることを示すメッセージ識別子である。また、プロキシクライアントＩＰアドレス（Ｐｒｏｘｙ  Ｃｌｉｅｎｔ  ＩＰ  ａｄｄｒｅｓｓ）１５０２は、ゲートウェイ１０２が保有し、サーバ１０３との間でパケット送受信を行う際に用いるＩＰアドレスａｇｃである。このＩＰアドレスａｇｃは、サーバ１０３では、クライアント１０１が保有するＩＰアドレスとみなされる。
【００７４】
このアソシエーション登録成功メッセージ１５００は、アソシエーション登録要求メッセージ１３００と同様、例えばＵＤＰ／ＩＰにより、ゲートウェイ１０２からクライアント１０１へ送信される。この場合、図１４に示すフォーマットのＵＤＰ／ＩＰパケットにおいて、ＩＰヘッダ１４０１内の送信元アドレス１４０４にはゲートウェイ１０２が保有するＩＰアドレスａｇｓが設定され、宛先アドレス１４０５にはクライアント１０１が保有するＩＰアドレスａｃが設定される。また、送信元ポート１４０６、宛先ポート１４０７には、それぞれ、アソシエーション登録要求メッセージ１３００を含んだＵＤＰ／ＩＰパケット１４００に設定されている宛先ポート１４０７、送信元ポート１４０６が設定される。
【００７５】
再び、図１２について説明する。クライアント１０１は、ステップ１２０７においてアソシエーション登録成功メッセージ１５００を受信すると、アソシエーション情報テーブル６００を生成し、ローカルアドレス６０１に自身が保有するＩＰアドレスａｃと、アソシエーション登録成功メッセージ１５００のプロキシクライアントＩＰアドレス１５０２に設定されている、ゲートウェイ１０２が保有するＩＰアドレスａｇｃとを設定する。更に、クライアント１０１は、対向アドレス６０４に、サーバ１０３が保有するＩＰアドレスａｓと、ゲートウェイ１０２が保有し、既知であるＩＰアドレスａｇｓとを設定する。また、クライアント１０１は、ローカルポート６０３、対向ポート６０６に、それぞれ、自身が保有するポートｐｃ、サーバ１０３が保有するポートｐｓを設定する。更に、クライアント１０１は、ローカルアドレスである自身のＩＰアドレスのａｃを指すように受信プライマリアドレス６０２を設定し、対向アドレスであるサーバ１０３が保有するＩＰアドレスａｓを指すように送信プライマリアドレス６０５を設定する。これにより新たなアソシエーションに対応するアソシエーション情報が登録されることになる（ステップ１２０８）。
【００７６】
以降、ＳＣＴＰのアソシエーション確立の処理となる。即ち、クライアント１０１は、ＳＣＴＰのＩＮＩＴメッセージをサーバ１０３へ送信する（ステップ１２０９）。このＩＮＩＴメッセージにはクライアント１０１に対応するＩＰアドレスとして、当該クライアント１０１が保有するＩＰアドレスａｃとゲートウェイ１０２が保有するＩＰアドレスａｇｃとが含まれている。一方、このＩＮＴメッセージを受信したサーバ１０３は、ＩＮＩＴ−ＡＣＫメッセージをクライアント１０１へ送信する（ステップ１２１０）。このＩＮＩＴ−ＡＣＫメッセージには、サーバ１０３に対応するＩＰアドレスとして、当該サーバ１０３が保有するＩＰアドレスａｓのみが含まれる。但し、クライアント１０１では、ＩＰアドレスａｇｓも合わせて通知されたものとみなして、アソシエーション情報テーブル６００の更新は行わない。
【００７７】
次に、ＩＮＩＴ−ＡＣＫメッセージを受信したクライアント１０１は、ＣＯＯＫＩＥ−ＥＣＨＯメッセージをサーバ１０３へ送信する（ステップ１２１１）。このＣＯＯＫＩＥ−ＥＣＨＯメッセージを受信したサーバ１０３は、アソシエーション情報テーブル５００を生成し、クライアントＩＰアドレス等のアソシエーション情報を設定する（ステップ１２１２）。更に、サーバ１０３は、ＣＯＯＫＩＥ−ＡＣＫメッセージをクライアント１０１へ送信する（ステップ１２１３）。これにより、サーバ１０３はクライアント１０１との間で、アソシエーションを確立した状態となり、クライアント１０１も、ＣＯＯＫＩＥ−ＡＣＫメッセージを受信することにより、サーバ１０３との間でアソシエーションを確立した状態となる（ステップ１２１４）。
【００７８】
また、図１２のステップ１２０４において、クライアント１０１がローカルポートとして選択したｐｃが既にゲートウェイ１０２のアソシエーション管理テーブル７００のクライアントポート７０２に存在したと判定された場合には、図１６のシーケンス図に示す処理が行われる。
【００７９】
この図１６に示すシーケンス図に示す処理は、ゲートウェイ１０２が、クライアントポート７０２を用いて全てのアソシエーションを特定可能にするためのものである。仮に複数のクライアント１０１が同じローカルポートを使用して同一サーバ１０３の同一ポートにアクセスした場合、ゲートウェイ１０２は、サーバ１０３がゲートウェイ１０２に対して送信した宛先アドレスａｇｃのパケットをどのクライアント１０１に対して転送すればよいのか判断できなくなる。このため、クライアント１０１がローカルポートとして選択したｐｃが既にゲートウェイ１０２のアソシエーション管理テーブル７００のクライアントポート７０２に存在した場合には、図１６の処理により、別のローカルポートが選択されるようにする。
【００８０】
図１２のステップ１２０４において、クライアント１０１がローカルポートとして選択したｐｃが既にゲートウェイ１０２のアソシエーション管理テーブル７００のクライアントポート７０２に存在し、使用中であると判定された場合、ゲートウェイ１０２は、アソシエーション管理テーブル７００のクライアントポート７０２に登録されていないポート、即ち、未使用のポートｐｃ´を任意に選び（ステップ１６０１）、アソシエーション登録失敗メッセージに含ませてクライアント１０１に提案する（ステップ１６０２）。
【００８１】
図１７は、アソシエーション登録失敗メッセージのフォーマットを示す図である。同図のアソシエーション登録失敗メッセージ１７００において、アソシエーション登録失敗１７０１は本メッセージがアソシエーション登録失敗メッセージであることを示すメッセージ識別子である。未使用ポート１７０２は、図１６のステップ１６０１においてゲートウェイ１０２が選択したポートｐｃ´である。なお、このポートは、ゲートウェイ１０２の実装によって複数の候補が設定されるようにしても良い。このアソシエーション登録失敗メッセージ１７００は、アソシエーション登録成功メッセージ１５００と同様、例えばＵＤＰ／ＩＰにより、ゲートウェイ１０２からクライアント１０１へ送信される。この場合、図１４に示すフォーマットのＵＤＰ／ＩＰパケットにおいて、ＩＰヘッダ１４０１内の送信元アドレス１４０４にはゲートウェイ１０２が保有するＩＰアドレスａｇｓが設定され、宛先アドレス１４０５にはクライアント１０１が保有するＩＰアドレスａｃが設定される。また、送信元ポート１４０６、宛先ポート１４０７には、それぞれ、アソシエーション登録要求メッセージ１３００を含んだＵＤＰ／ＩＰパケット１４００に設定されている宛先ポート１４０７、送信元ポート１４０６が設定される。
【００８２】
再び、図１６について説明する。ステップ１６０２においてアソシエーション登録失敗メッセージを受信したクライアント１０１は、当該メッセージにより提案されたポートｐｃ´がクライアント１０１において未使用であるか否かを判定する（ステップ１６０３）。未使用である場合には、クライアント１０１は、提案されたポートｐｃ´を新たなポートｐｃとして（ステップ１６０４）、再度アソシエーション登録要求メッセージをゲートウェイ１０２へ送信する（ステップ１６０７）。
【００８３】
一方、ステップ１６０３において、提案されたポートｐｃ´が既にクライアント１０１において使用中であると判定された場合には、クライアント１０１は、独自に候補となるポートｐｃ´´を選択する（ステップ１６０５）。更にクライアント１０１は、このポートｐｃ´´を新たなポートｐｃとして（ステップ１６０６）、再度アソシエーション登録要求メッセージをゲートウェイ１０２へ送信する（ステップ１６０７）。
【００８４】
再度のアソシエーション登録要求メッセージを受信したゲートウェイ１０２は、図１２のステップ１２０４と同一の判定を行い（ステップ１６０８）、新たなｐｃが未使用である場合には、図１２のステップ１２０５以降の処理を行う。一方、新たなｐｃもまた使用中である場合には、ステップ１６０１以降の処理を繰り返す。
【００８５】
なお、本実施形態では、クライアント１０１とサーバ１０３は、相手のＩＰアドレスを宛先アドレスに指定したパケットが伝送される、ゲートウェイ１０２を必ずしも経由しない通信経路と、ゲートウェイ１０２を経由する通信経路とで１つのアソシエーションを実現しているが、ゲートウェイ１０２を必ずしも経由しない通信経路が存在せず、全ての通信経路に必ずゲートウェイ１０２が存在する場合でも同様に、本発明を適用することができる。この場合、ゲートウェイ１０２を境界としてクライアント１０１が属するネットワークがプライベートネットワーク、サーバ１０３の属するネットワークがグローバルネットワークといったアドレス体系の異なるネットワーク間においても、ＳＣＴＰ通信を行うことが可能となる。
【００８６】
以上説明したように、本実施形態では、クライアント１０１及びサーバ１０３は、ゲートウェイ１０２が保有するＩＰアドレスに対応する、当該ゲートウェイ１０２を経由する通信経路と、自身が保有するＩＰアドレスに対応する通信経路とを選択的に利用して、通信相手との間で１のトランスポートレイヤの通信を行う。一方、ゲートウェイ１０２は、自身が保有するＩＰアドレスに対応してトランスポートレイヤの通信に自身を経由する通信経路が利用される場合に、該通信経路において、クライアント１０１及びサーバ１０３からのパケットを通信相手へ中継する。従って、クライアント１０１及びサーバ１０３がそれぞれ１つのＩＰアドレスのみを保有する場合でも、複数の通信経路を利用したトランスポートレイヤの通信を適切に行うことが可能となる。
【００８７】
また、クライアント１０１は、自身が保有するＩＰアドレスのみならず、ゲートウェイ１０２が保有するＩＰアドレスについても、自身が保有するＩＰアドレスとしてサーバ１０３へ通知し、更に、ゲートウェイ１０２を経由する通信経路を利用する場合には、当該ゲートウェイ１０２が保有するＩＰアドレスを宛先のＩＰアドレスとして設定したパケットを構成する。そして、ゲートウェイ１０２は、クライアント１０１からのパケットにおける送信元のＩＰアドレスを自身が保有するＩＰアドレスに設定するとともに、宛先のＩＰアドレスをサーバ１０３が保有するＩＰアドレスに設定する。従って、サーバ１０３は、クライアント１０１が２つのＩＰアドレスを保有しているとみなすことができ、更には、送信元のＩＰアドレスがゲートウェイ１０２が保有するＩＰアドレスとなっているパケットについても、クライアント１０１から送信されたものであることを認識することができ、複数の通信経路を利用したトランスポートレイヤの通信を適切に行うことが可能となる。
【００８８】
また、ゲートウェイ１０２は、クライアント１０１からのパケットの送信元及び宛先のＩＰアドレスを変換した場合に、ＩＰレイヤにおけるチェックサムを再計算しており、サーバ１０３がＩＰレイヤにおけるチェックサムに基づいて誤り検出を行う際に、チェックサムが再計算されていないために間違った誤り検出を行うことを防止することができる。
【００８９】
また、ゲートウェイ１０２において、クライアント１０１が実行するアプリケーションの識別子であるローカルポートがユニークである。従って、ゲートウェイ１０２は全てのアソシエーションを特定することが可能となる。このため、仮に複数のクライアント１０１が同一サーバ１０３の同一ポートにアクセスした場合に、ゲートウェイ１０２がサーバ１０３からのパケットをどのクライアント１０１に対して転送すればよいのかを判断することができる。
【００９０】
【発明の効果】
本発明によれば、通信装置が１つのＩＰアドレスのみを保有する場合でも、複数の通信経路を利用したトランスポートレイヤの通信を適切に行うことが可能となる。
【図面の簡単な説明】
【図１】本実施形態のネットワークの構成例を示す図である。
【図２】ＩＰパケットのフォーマットを示す図である。
【図３】クライアントの構成例を示す図である。
【図４】ゲートウェイの構成例を示す図である。
【図５】サーバが管理するアソシエーション情報テーブルの一例を示す図である。
【図６】クライアントが管理するアソシエーション情報テーブルの一例を示す図である。
【図７】ゲートウェイが管理するアソシエーション管理テーブルの一例を示す図である。
【図８】クライアントにおけるパケット送信のフローチャートである。
【図９】ゲートウェイにおけるパケット中継のフローチャートである。
【図１０】ゲートウェイにおけるアソシエーション情報削除のフローチャートである。
【図１１】クライアントとサーバにおける通信経路切替のシーケンス図である。
【図１２】クライアント、ゲートウェイ及びサーバにおけるアソシエーション情報登録のシーケンス図である。
【図１３】アソシエーション登録要求メッセージのフォーマットを示す図である。
【図１４】ＵＤＰ／ＩＰパケットのフォーマットを示す図である。
【図１５】アソシエーション登録成功メッセージのフォーマットを示す図である。
【図１６】ローカルポートが使用済みの場合のクライアント及びゲートウェイの処理のシーケンス図である。
【図１７】アソシエーション登録失敗メッセージのフォーマットを示す図である。
【符号の説明】
１００  通信ネットワーク
１０１  クライアント
１０２  ゲートウェイ
１０３  サーバ
１０４、１０５、１０６  通信経路
３０１  アプリケーションプログラム（ＡＰＬ）
３０２  ＴＣＰ処理部（ＴＣＰ）
３０３  ＳＣＴＰ処理部（ＳＣＴＰ）
３０４、４０３  ＩＰ処理部（ＩＰ）
３０５、４０４  レイヤ２処理部（Ｌ２）
３０６、４０５ａ、４０５ｂ  ネットワークインタフェースカード（ＮＩＣ）
３０７  ４０６ａ、４０６ｂ  電気通信回線
３０８、４０２  ネットワークモジュール（ＮＥＴ）
３０９  ファイルシステム（ＦＳ）
３１０  装置初期化モジュール（ＩＮＩＴ）
３１１、４０１  オペレーションシステム（ＯＳ）
４０７  ＳＣＴＰ制御モジュール（ＳＣＴＰＣＴＬ）
【図１】
2004336542.tif 000003
【図２】
2004336542.tif 000004
【図３】
2004336542.tif 000005
【図４】
2004336542.tif 000006
【図５】
2004336542.tif 000007
【図６】
2004336542.tif 000008
【図７】
2004336542.tif 000009
【図８】
2004336542.tif 000010
【図９】
2004336542.tif 000011
【図１０】
2004336542.tif 000012
【図１１】
2004336542.tif 000013
【図１２】
2004336542.tif 000014
【図１３】
2004336542.tif 000015
【図１４】
2004336542.tif 000016
【図１５】
2004336542.tif 000017
【図１６】
2004336542.tif 000018
【図１７】
2004336542.tif 000019