(57)【要約】【課題】本発明は、ブラックホール問題により端末通信装置が通信不可能となることを防ぐ、中継通信装置、および通信システムを提供することを目的とする。【解決手段】ブラックホールルータ７０８を含むインターネット７０３を経由して、送信元端末通信装置７０１と相手端末通信装置７０４が通信７０５を行う場合に、本発明の中継通信装置７０２が、通信７０５の通信データおよび応答確認を利用して、通信経路上の最大ＭＴＵを調査し、通信７０５のデータサイズを調査した最大ＭＴＵ値以下にするような制御を行うことにより、通信７０５を正常に行わせることができる。本発明によれば、各端末通信装置や全ての中継通信装置で対応を行わなくても、単一の中継通信装置のみが対応することで、その中継通信装置を経由する通信を行う複数の端末通信装置がブラックホール問題に陥り通信不能となることを防ぐことができる。【選択図】図１０
2007180686.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信装置と第２の通信装置が行っている第１の通信を中継する中継通信装置であって、
ＰＭＴＵ（Ｐａｔｈ  Ｍａｘｉｍｕｍ  Ｔｒａｎｓｆｅｒ  Ｕｎｉｔ）調査パケットのサイズを決定するＰＭＴＵ調査サイズ決定手段と、
前記第１の通信装置が送信した前記第１の通信に属する第１のデータパケットを受信し、前記第２の通信装置に向けて転送する際に、第１のサイズ調整方法を用いて前記第１のデータパケットを前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズに調整し、前記ＰＭＴＵ調査パケットとして送信するＰＭＴＵ調査パケット生成手段と、
前記第２の通信装置が送信した前記第１の通信に属する応答確認パケットを受信し、前記第１の通信装置に向けて転送する際に、応答確認されたデータを示す情報を前記応答確認パケットから取得し、取得した情報に基づいて前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかを判定するＰＭＴＵ調査パケット到達判定手段と、
前記ＰＭＴＵ調査パケット到達判定手段の判定結果に基づいて、前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは前記第１の通信以降に前記中継通信装置を経由して行われる第２の通信に属する第２のデータパケットのサイズを変更する中継通信データサイズ変更手段と、
を備えることを特徴とする中継通信装置。
【請求項２】
前記第１の通信がＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）を用いた通信であることを特徴とする、請求項１に記載の中継通信装置。
【請求項３】
前記第１の通信がＤＣＣＰ（Ｄａｔａｇｒａｍ  Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）を用いた通信であることを特徴とする、請求項１に記載の中継通信装置。
【請求項４】
前記ＰＭＴＵ調査パケット到達判定手段は、前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかの判定を、前記ＰＭＴＵ調査パケットを送信後の第１のタイミングで行い、
前記第１のタイミングは、前記中継通信装置と前記第２の通信装置との間のＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）の推定値から決定されることを特徴とする、請求項１に記載の中継通信装置。
【請求項５】
前記第１の通信装置が、前記第１のデータパケットに対する応答確認が得られなかった場合に、前記第１のデータパケットに対する再送パケットを送信する第２のタイミングを、前記第１の通信装置と前記第２の通信装置との間のＲＴＴの推定値から決定する通信装置であった場合に、
前記第１のタイミングは、前記中継通信装置が前記再送パケットを受信したタイミングに基づいて決定されることを特徴とする、請求項４に記載の中継通信装置。
【請求項６】
前記第１のタイミングは、前記中継通信装置が計測した前記中継通信装置と前記第２の通信装置との間のＲＴＴに基づいて推定されることを特徴とする、請求項４に記載の中継通信装置。
【請求項７】
前記第１の通信がＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いた通信であった場合に、
前記第１のサイズ調整方法は、前記第１のデータパケットをＩＰフラグメントする処理を含むことを特徴とする、請求項１に記載の中継通信装置。
【請求項８】
前記第１の通信がさらにＴＣＰを用いた通信であった場合に、
前記第１のサイズ調整方法は、前記第１のデータパケットと、前記第１のデータパケットに続くＴＣＰデータを含む第３のデータパケットをさらに前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズ以下のサイズにＩＰフラグメントする処理を含むことを特徴とする、請求項７に記載の中継通信装置。
【請求項９】
前記第１の通信がＴＣＰを用いた通信であった場合に、
前記第１のサイズ調整方法は、前記第１のデータパケットからＴＣＰデータの一部を抽出し、前記ＴＣＰデータの一部を含む、ＩＰフラグメントされていない一つのＩＰパケットとして前記ＰＭＴＵ調査パケットを構成することを特徴とする、請求項１に記載の中継通信装置。
【請求項１０】
前記第１のサイズ調整方法は、前記第１のデータパケットのサイズを保ったまま前記ＰＭＴＵ調査パケットを構成することを特徴とする、請求項１に記載の中継通信装置。
【請求項１１】
前記第２の通信がＴＣＰを用いた通信であった場合に、
前記中継通信データサイズ変更手段は、前記第２の通信におけるＳＹＮパケットに含まれるＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）オプションの値を変更することにより、前記第２の通信に属する第２のデータパケットのサイズを変更することを特徴とする、請求項１に記載の中継通信装置。
【請求項１２】
前記第２の通信がＩＰを用いた通信であった場合に、
前記中継通信データサイズ変更手段は、前記第１の通信装置に対して、ＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）宛先到達不能要断片化パケットもしくは、ＩＣＭＰｖ６パケット過大パケットを送信することを特徴とする、請求項１に記載の中継通信装置。
【請求項１３】
前記第２の通信がＩＰを用いた通信であった場合に、
前記中継通信データサイズ変更手段は、前記第２の通信のデータパケットをＩＰフラグメントする処理を含むことを特徴する、請求項１に記載の中継通信装置。
【請求項１４】
前記ＰＭＴＵ調査パケットサイズ決定手段は、前記ＰＭＴＵ調査パケットのサイズを変更しつつ請求項１に記載の処理を複数回繰り返すことにより、前記中継通信装置から前記第２の通信装置へ到達可能なデータパケットのサイズの最大値を調査し、前記中継通信データサイズ変更手段は前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは第２の通信に属するデータパケットのサイズを前記最大値のサイズに変更することを特徴する、請求項１に記載の中継通信装置。
【請求項１５】
第１の通信装置と第２の通信装置が行っている第１の通信を中継する中継通信装置が実行するプログラムを記録した、コンピュータ読み取り可能な記録媒体であって、
ＰＭＴＵ調査パケットのサイズを決定するＰＭＴＵ調査サイズ決定手段及び、
第１の通信装置が送信した第１の通信の第１のデータパケットを受信し前記第２の通信装置に向けて転送する際に、第１のサイズ調整方法を用いて前記第１のデータパケットを前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズに調整しＰＭＴＵ調査パケットとして送信するＰＭＴＵ調査パケット生成手段及び、
第２の通信装置が送信した第１の通信に属する応答確認パケットを受信し、前記第１の通信装置に向けて転送する際に、応答確認されたデータを示す情報を取得し、取得した情報に基づいて前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかを判定するＰＭＴＵ調査パケット到達判定手段及び、
前記ＰＭＴＵ調査パケット到達判定手段の判定結果に基づいて、前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは前記第１の通信以降に前記中継通信装置を経由して行われる第２の通信の第２のデータパケットのサイズを変更する中継通信データサイズ変更手段としてコンピュータを機能させるプログラムを記録したことを特徴とする、コンピュータ読み取り可能な記録媒体。
【請求項１６】
第１の通信装置と第２の通信装置が行っている第１の通信を中継する中継通信装置において用いられる集積回路であって、
ＰＭＴＵ調査パケットのサイズを決定するＰＭＴＵ調査サイズ決定手段と、
第１の通信装置が送信した第１の通信の第１のデータパケットを受信し前記第２の通信装置に向けて転送する際に、第１のサイズ調整方法を用いて前記第１のデータパケットを前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズに調整しＰＭＴＵ調査パケットとして送信するＰＭＴＵ調査パケット生成手段と、
第２の通信装置が送信した第１の通信の応答確認パケットを受信し、前記第１の通信装置に向けて転送する際に、応答確認されたデータを示す情報を前記応答確認パケットから取得し、取得した情報に基づいて前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかを判定するＰＭＴＵ調査パケット到達判定手段と、
前記ＰＭＴＵ調査パケット到達判定手段の判定結果に基づいて、前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは前記第１の通信以降に前記中継通信装置を経由して行われる第２の通信の第２のデータパケットのサイズを変更する中継通信データサイズ変更手段と、
を備えることを特徴とする集積回路。
【請求項１７】
第１の通信装置と第２の通信装置、および前記第１の通信装置と前記第２の通信を行っている第１の通信を中継する中継通信装置とが接続されている通信システムであって、
前記第１の通信装置は第１のデータパケットを送信し、
前記中継通信装置は、ＰＭＴＵ調査パケットのサイズを決定するＰＭＴＵ調査パケットサイズ決定手段を有し、
第１の通信装置が送信した第１の通信の第１のデータパケットを受信し前記第２の通信装置に向けて転送する際に、第１のサイズ調整方法を用いて前記第１のデータパケットを前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズに調整しＰＭＴＵ調査パケットとして送信し、
前記第２の通信装置は、前記ＰＭＴＵ調査パケットを受信すると応答確認パケットを送信し、
前記中継通信装置は、さらに第２の通信装置が送信した前記ＰＭＴＵ調査パケットに対する前記応答確認パケットを受信し、前記第１の通信装置に向けて転送する際に、応答確認されたデータを示す情報を前記応答確認パケットから取得し、取得した情報から前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかを判定し、
前記判定結果に基づいて、前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは前記第１の通信以降に前記中継通信装置を経由して行われる第２の通信の第２のデータパケットのサイズを変更することを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙに関する機能を持つ中継通信装置、記憶媒体、集積回路および通信システムに関する。
【背景技術】
【０００２】
近年、インターネットを含めてＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を利用したネットワークが広く普及している。
【０００３】
このＴＣＰ／ＩＰネットワークを模式的に示したのが図１である。図１にあるように、ＴＣＰ／ＩＰネットワークは単純化すると以下の代表的な３種類の構成要素からなるネットワークとみなすことができる。
【０００４】
端末通信装置（１０１）：アプリケーションレベルでの通信を行う通信装置。Ｗｅｂブラウザを登載したＰＣや、ＩＰ電話、ＩＰネットワークカメラなどがこれにあたる。
【０００５】
中継通信装置（１０２）：一方の端末通信装置から送信されたデータを他方の端末通信装置に届けるための役割を持つ通信装置。ＩＰルータ、もしくは単にルータなどと呼ぶ。また、広義にはＩＰ層での中継のみならず、データリンク層での中継を行うブリッジ（ＨＵＢや無線アクセスポイントなど）などさまざまなレイヤでの中継を行う装置を含むものとする。
【０００６】
リンク（１０３）：隣接する上記通信装置同士の間の通信路。例えばＥｔｈｅｒｎｅｔ（登録商標）などが用いられる。
【０００７】
本発明はＴＣＰ／ＩＰネットワークでの通信においてやりとりされるＩＰパケットのデータサイズに関する発明であるため、図１のネットワーク上で行われている一つのアプリケーションレベルでの通信（１０４ａ）を例にとり、その通信データを搬送するＩＰパケットのサイズに関して次に説明する。
【０００８】
各リンクを通過する際のＩＰパケットの最大サイズは、通過する各リンクで定義された最大データサイズ（ＭＴＵ：Ｍａｘｉｍｕｍ  Ｔｒａｎｓｆｅｒ  Ｕｎｉｔ）を越えることはできない。このＭＴＵの値はリンクの種類ごとに規定されており、例えばＥｔｈｅｒｎｅｔ（登録商標）の場合は１５００バイトとなっている。なお、物理的に規定されたリンク以外にも、論理的にリンクとみなせる経路がＩＰｓｅｃやＰＰＰｏＥなどを含む任意のカプセル化プロトコルなどにより形成される場合があり、本発明においてはこれらの論理的なリンクもＭＴＵを持つ一種のリンクとしてみなせるものとして考える。
【０００９】
ここで、端末通信装置１０１ａから端末通信装置１０１ｂにパケットを送信する場合を考える。まず１０１ａは１０１ｂへ向かうための経路であるリンク１０３ａにＩＰパケットを送信する。このときのＩＰパケットのサイズはリンク１０３ａのＭＴＵ（例えば１５００）に収まるようにアプリケーションデータを分割して各ＩＰパケットを構築し、リンク１０３ａに送信する。
【００１０】
次にこのＩＰパケットを受信した中継通信装置１０２ａは、リンク１０３ｂに転送しようとする。しかし、リンク１０３ｂのＭＴＵ値が１５００より小さかった場合（例えば１０００）であった場合、１５００バイトのＩＰパケットをそのまま転送することはできない。このため、中継通信装置１０２ａはこのパケットを１０００バイト以下の複数のＩＰパケットにＩＰフラグメントした上で転送する。これを受信した中継通信装置１０２ｂはこれらのＩＰフラグメントされたＩＰパケットをリンク１０３ｃにそのまま（ＭＴＵ値が１５００とすると、さらにＩＰフラグメントを行う必要はないため）送信する。最後に、ＩＰパケットの宛先である端末通信装置１０１ｂにおいてもとの１５００バイトのＩＰパケットに復元され受信される。なお、以降では１０１ａのようにパケットを送信する側の端末通信装置を送信元端末通信装置、１０１ｂのようにパケットを受信する側の端末通信装置を相手端末通信装置と呼ぶものとする。
【００１１】
上記の説明から分かるようにＩＰパケットがその通信経路上でＩＰフラグメントされるのは、通信経路上の各リンクのＭＴＵ値の最大値（以降、これをＰａｔｈ  ＭＴＵ値または、略してＰＭＴＵ値と呼ぶ）を超えるサイズのＩＰパケットを送信元端末通信装置が送信した場合である。
【００１２】
しかし、上記の場合のように通信経路上でＩＰフラグメントが発生した場合、以下のような問題が発生する。
【００１３】
・中継通信装置におけるＩＰフラグメント処理、相手端末通信装置における復元処理など、各通信装置の処理負荷が増加する。
【００１４】
・ＩＰフラグメントされることによりＩＰパケット数が必要以上に増加し、中継通信装置において転送する際の処理負荷が増加する。
【００１５】
・ＩＰフラグメントの際に発生するＭＴＵ値より小さなサイズの各パケットにおいてもＩＰヘッダが必要となるため、ＩＰフラグメントされない場合と比較して通信帯域の利用効率が低下する。
【００１６】
これらの問題の発生を避けるため、送信元端末通信装置が通信経路のＰＭＴＵ値を知り、始めからそのサイズのＩＰパケットを送信することにより通信経路上でＩＰフラグメントを発生させないための方法が従来から考えられてきた。このような方法の実現する従来技術のひとつとしてＲＦＣ１１９１（タイトル：Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ）（非特許文献１）について次に説明する。なお、ＲＦＣ１１９１はＩＰｖ４を対象としたものであるが、ＩＰｖ６を対象としたＲＦＣ１９８１（非特許文献２）も存在する。
【００１７】
ＲＦＣ１１９１ではＩＰヘッダのＤＦ（Ｄｏｎ‘ｔ  Ｆｒａｇｍｅｎｔ）フラグおよび、ＩＣＭＰ宛先到達不能要断片化パケット（図５：Ｔｙｐｅフィールドの値が０ｘ０３、Ｃｏｄｅフィールドの値が０ｘ０４であるＩＣＭＰパケット）を用いて送信元端末通信装置がＰＭＴＵ値を知るための方法が記述されている。以下では図４を参照しながらこの方法について説明する。
【００１８】
なお、実施シーケンスの説明の前に、前提知識としてＩＰパケットのフォーマットを図２を用いて、ＩＰフラグメントされたＩＰパケットのフォーマットを図３を用いて簡単に説明しておく。図２のようにＩＰパケットはＩＰヘッダ２０１（最低２０バイト）と、そのデータ部分からなり、このＩＰのデータ部分にはＴＣＰやＵＤＰなどのヘッダ２０２（ＴＣＰヘッダの場合は最低２０バイト）とＴＣＰやＵＤＰのデータ２０３、即ちアプリケーションデータが含められる。このＩＰパケットがフラグメントされると図３のようになる。即ち、フラグメントされた各ＩＰパケットにはそれぞれＩＰヘッダが含まれ、ＩＰのデータ部分は複数に分割され順に各ＩＰフラグメントされたＩＰパケット（ｂ−１、ｂ−２）に含められる。ここで、ＴＣＰ／ＵＤＰヘッダ２１２は先頭のＩＰパケット（ｂ−１）のみに含まれることに注意されたい。
【００１９】
さて、図４は図１における通信１０４ａに関連する通信装置（１０１ａ、１０２ａ、１０２ｂ、１０１ｂ）およびリンク（１０３ａ、１０３ｂ、１０３ｃ）のみを抽出し、通信１０４ａを用いてＲＦＣ１１９１による方法の実施シーケンス例を示したものである。
【００２０】
まず、送信元端末通信装置１０１ａは自身が直接送出するリンク１０３ａのＭＴＵ値である１５００バイトのパケット３０１を送信する。このときパケット３０１では中継装置におけるＩＰフラグメントを許可しないことを意味するＩＰヘッダ内のＤＦフラグ（図２の２０２１）を設定した状態にしておく必要がある。次に中継通信装置１０２ａはこれを受信し、１０２ｂに転送しようとする（Ｓ３１１）。しかし、リンク１０３ｂのＭＴＵ値は１０００であるためそのまま送信することはできない。また、前述したＩＰフラグメント処理は、ＤＦフラグが設定されているパケットに対しては行えないため、１０１ａに対してＩＣＭＰ宛先到達不能要断片化パケット３０２を返信する。このＩＣＭＰ宛先到達不能要断片化パケットは、図５のようなフォーマットであり、そのＭＴＵ値フィールド（４０３）にリンク１０３ｂのＭＴＵ値である１０００（即ち、ＩＰフラグメントせずに送出先リンク１０３ｂに送出可能なサイズ）を入れて通知する機能を持つ。
【００２１】
次に送信元端末通信装置１０１ａは、このＩＣＭＰ宛先到達不能要断片化パケット３０２を受信すると、以降のＩＰパケットの送信サイズをＭＴＵ値フィールド（４０３）により通知された１０００バイトに変更する（Ｓ３１２）。以降、送信元端末通信装置１０１ａが送信するＩＰパケット（３０２、３０４）のサイズは１０００バイトとなる。このサイズのパケットは１０２ａから１０３ｂにそのまま送信できるサイズであるため、相手端末通信装置である１０１ｂまで到達することができ、通信系路上でＩＰフラグメントを発生させることなく通信（１０４ａ）を行うことが可能となる。
【００２２】
なお、ＩＰｖ６でのＰａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ方法がＲＦＣ１９８１に記載されているが、ここでは、ＩＣＭＰ宛先到達不能要断片化パケットが、同様の機能を持つＩＣＭＰｖ６パケット過大パケットになることを除いてはＲＦＣ１１９１と同様の方法を用いている。
【００２３】
しかし、最近のインターネットでは、ここまでに説明したＲＦＣ１１９１の方法を適用することにより通信自体が行えなくなる場合が多く存在するという問題が、ＲＦＣ２９２３（タイトル：ＴＣＰ  Ｐｒｏｂｌｅｍ  ｗｉｔｈ  Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ）（非特許文献３）において指摘されている。ここで指摘されている問題はブラックホール問題と呼ばれる。以下では、ブラックホール問題の概要に関して説明する。
【００２４】
ブラックホール問題はＩＣＭＰパケットを送信もしくは転送しないルータ（ブラックホールルータと呼ばれる）が存在することにより発生する。例えばＲＦＣ１８９１の説明で用いた図４における通信中継装置１０２ａがブラックホールルータであった場合、中継通信装置１０２ａはＤＦフラグのついた１５００バイトのＩＰパケット３０１を転送しない上に、ＩＣＭＰ宛先到達不能要断片化パケット（３０２）を返信することもしない。即ち、何もせずに単にＩＰパケット３０１を破棄する。このため、送信元端末通信装置１０１ａは変更すべきパケットサイズ（ＰＭＴＵ値に等しい）を知ることができず、以降も１５００バイトのパケットを送信するため、このパケットが相手端末通信装置１０１ｂに到達することができず、通信１０４ａを行うことができない。また、中継通信装置がＩＣＭＰ宛先到達不能要断片化パケットを送信したとしても、送信元端末通信装置までに到達する経路に別のルータが存在し、そのルータがＩＣＭＰパケットを転送しなかった場合にも変更すべきパケットサイズを知ることができないため、同様の問題が発生する。
【００２５】
なお、ブラックホールルータが存在する理由は、ネットワーク管理者がＩＣＭＰによるネットワーク情報（存在する端末通信装置のアドレス情報など）の流出を防ぐというセキュリティ上のものや、単なる設定忘れ、設定間違いなどがあると考えられる。
【００２６】
〔ブラックホール問題を回避する従来技術（ＰＬＰＭＴＵＤ）の説明〕
上記ブラックホール問題を発生させるブラックホールルータが通信経路上に存在する場合でも、送信元端末通信装置が通信経路のＰＭＴＵ値を知ることができ、ＩＰフラグメントなしに相手端末通信装置との間で通信することを可能とする方法も考案されている。
【００２７】
そのような方法のひとつがＩＥＴＦにＩ−Ｄ（Ｉｎｔｅｒｎｅｔ  Ｄｒａｆｔ）として提案されたことのあるＰＬＰＭＴＵＤ（Ｐａｃｋｅｔｉｚａｔｉｏｎ  Ｌａｙｅｒ  Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ）という方法である。この方法について記述した文書（非特許文献４）はインターネット上で公開されている。以下ではＰＬＰＭＴＵＤの概要について説明する。
【００２８】
ＲＦＣ１１９１の方法でブラックホール問題が発生した原因は、ＲＦＣ１１９１の方法が通信経路上の中継通信装置（ブラックホールルータの可能性がある）との協調動作により送信元端末通信装置がＰＭＴＵ値を知るという方法だったからである。これに対し、ＰＬＰＭＴＵＤでは中継通信装置に依存せず、送信元端末通信装置と相手端末通信装置のみが協調して動作することによりＰＭＴＵ値を知ることができる方法を用いることでブラックホールルータが存在しても利用可能となっている。
【００２９】
具体的なＰＬＰＭＴＵＤの手順（特にＴＣＰの性質を利用した効率的な方法の概略手順）について図６、図７、図８、図９を用いて説明する。
【００３０】
図６はＰＬＰＭＴＵＤにおけるＰＭＴＵ探索処理のフローチャートの一例である。なお、ＰＭＴＵの探索のための処理は、送信元端末通信装置において主に行われ、相手端末通信装置は単に通常のＴＣＰのアルゴリズムに基づいてＡＣＫ（応答確認）を行うだけでよいため、ここでは送信元端末通信装置の処理について主に説明する。
【００３１】
ＰＬＰＭＴＵＤでは、実際にアプリケーションが行うＴＣＰ通信の通信データを用いてＰＭＴＵ探索を行うため、まずＴＣＰ通信開始処理（Ｓ５０１）を行う。具体的には、ＳＹＮパケットの送信、ＳＹＮ  ＡＣＫパケットの受信、ＡＣＫパケットの送信からなる３ウェイハンドシェイクを行う。次に、試行を行う際のパケット（以降ＰＭＴＵ調査パケットと呼ぶ）のサイズＳｐ（以降ＰＭＴＵ調査パケットサイズと呼ぶ）の初期設定を行う（Ｓ５０２）。ここでは、通常インターネットにおいて通過可能とされている最小サイズである５７６バイトを設定するとする。以降、ＰＭＴＵ調査パケットサイズＳｐのＰＭＴＵ調査パケットが相手端末通信装置に到着可能かを試行し、到達不可能になるまでＳｐをインクリメント（Ｓ５０４）しながら試行（Ｓ５０３）を繰り返す。試行後の到達可能判定処理（Ｓ５０５）において到達不可能となった時点でそのサイズ−１がＰＭＴＵ値であると決定する（Ｓ５０４）。図６のＰＭＴＵ探索処理完了以降は、送信側端末通信装置が、処理Ｓ５０６で決定したＰＭＴＵ値を越えないサイズでパケットを送信することによって、正常に通信を行うことができる。
【００３２】
次に、ＰＭＴＵ調査パケットサイズＳｐのサイズのＰＭＴＵ調査パケットが相手端末通信装置に到着可能かの試行（Ｓ５０３）における具体的な処理について図７のフローチャートおよび図８、図９のシーケンス図を用いて説明する。ＰＬＰＭＴＵＤでは、まずＳｐのサイズのＴＣＰパケットをＰＭＴＵ調査パケットとして生成して送信する（Ｓ５１１）。このＰＭＴＵ調査パケットに含まれるＴＣＰデータのシーケンス番号はＮ−ＳＰ＋４０〜Ｎ−１であるとする。なお、＋４０となっているのは、ＳｐバイトのＩＰパケットに含まれるＴＣＰデータのサイズは、ＳｐからＩＰヘッダサイズ（例えば２０バイト）およびＴＣＰヘッダサイズ（例えば２０バイト）を引いたＳｐ−４０となるためである。また、このとき送信したデータの最終シーケンス番号の値、即ちＮ−１を記憶しておく。次に、Ｓ５１１で送信したＴＣＰデータと重複するＴＣＰデータ（シーケンス番号がＮ−Ｓｐ＋４０以降のデータ）をサイズがＳｍのＩＰパケットに収まるようにＳｍ−４０のサイズの複数のＴＣＰデータに分割し、それらを含むサイズがＳｍのＩＰパケットを連続的に送信する（Ｓ５１２）。ここで、Ｓｍは相手端末通信装置に到達可能であることが既に分かっているサイズであり、当然Ｓｐよりも小さな値となる（Ｓｐに関する詳細な条件として、ＴＣＰの高速再送機構（Ｆａｓｔ  Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ）を発動させないために３Ｓｍ＞Ｓｐであること、ＰＭＴＵ調査パケットに含まれるＴＣＰデータの最終シーケンス番号と、各Ｓｍサイズのパケットに含まれるＴＣＰデータの最終シーケンス番号が一致しないような値であること、がさらに必要である。）。
【００３３】
図８、図９は、上記の処理（Ｓ５１１、Ｓ５１２）を含めて、相手端末通信装置との間のパケットのシーケンスを示す図である。図８はＳ５１１で送信したＰＭＴＵ調査パケット６１１が相手端末通信装置へ到達可能な場合（即ち、ＰＭＴＵ値がＳｐの場合）の図である。この場合、相手端末通信装置はＰＭＴＵ調査パケット６１１に続いて、ＩＰパケット６１２を受信する。ＴＣＰのアルゴリズムによれば、このような場合６１１と６１２の少なくとも一方に対してＡＣＫを応答する（図８では６１２に対してＡＣＫ６１４を応答する場合を示している）が、その際のＡＣＫ番号はその時点までに受け取ったＴＣＰデータの最終シーケンス番号＋１となるため、６１１、６１２のいずれに対するＡＣＫであってもそのＡＣＫ番号はＮとなる。
【００３４】
一方図９はＳ５１１で送信したＰＭＴＵ調査パケット６１１が相手端末通信装置へ到達不可能な場合（即ち、ＰＭＴＵ値がＳｐ未満の場合）の図である。この場合、相手端末通信装置はＩＰパケット６１２に続いて、ＩＰパケット６１３を受信する。ＴＣＰのアルゴリズムによれば、このような場合６１２と６１３の少なくとも一方に対してＡＣＫを応答する（図９では６１３に対してＡＣＫ６１５を応答する場合を示している）が、その際のＡＣＫ番号は６１２に対するＡＣＫの場合はＮ−Ｓｐ＋４０＋Ｓｍ、６１３に対するＡＣＫの場合はＮ−Ｓｐ＋４０＋２Ｓｍとなるため、６１２、６１３のいずれに対するＡＣＫであってもそのＡＣＫ番号はＮとは異なるものとなる。
【００３５】
以降、再び図７に戻って説明する。送信元端末通信装置は上記の説明において相手端末通信装置から返信されたＡＣＫ（６１４もしくは６１５）を受信する（Ｓ５１３）。そして、そのＡＣＫ番号がＮに等しいかどうかを判定する（Ｓ５１４）。ＡＣＫ番号がＮであった場合は、ＰＭＴＵ調査パケットサイズＳｐのパケットが宛先通信端末に到達可能ことを示していることになるため、そのことを記憶しておき（Ｓ５１５）、Ｓ５０５の判定時に利用する。また、ＡＣＫ番号がＮでなかった場合は、到達不可能であることを示しているため、同様にそのことを記憶しておく（Ｓ５１６）。
【００３６】
このように、ＰＬＰＭＴＵＤは送信元端末通信装置において送信するＩＰパケットに含めるＴＣＰデータの分割サイズを調整することによりＰＭＴＵ値を調査する方法である。
【００３７】
また、送信元端末通信装置がＰＭＴＵ値を知るための別の方法が特許文献１において開示されている。
【００３８】
特許文献１の方法は、ネットワーク中（少なくとも通信経路上）の各通信中継装置が、予め通信経路上の各リンクのＭＴＵ値情報を交換しておくことによりＰＭＴＵ値を常時管理しておく方法である。この方法を用いれば、送信元端末通信装置は相手端末通信装置への経路のＰＭＴＵ値を、隣接する中継通信装置から通知してもらうだけでよい。
【特許文献１】特開平５−２２３４５号公報
【非特許文献１】ＩＥＴＦ  ＲＦＣ１１９１：Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ  ＜ｈｔｔｐ:／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ１１９１．ｔｘｔ＞、検索日２００５年９月１３日
【非特許文献２】ＩＥＴＦ  ＲＦＣ１９８１：Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ  ｆｏｒ  ＩＰ  ｖｅｒｓｉｏｎ  ６  ＜ｈｔｔｐ:／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ１９８１．ｔｘｔ＞、検索日２００５年９月１３日
【非特許文献３】ＩＥＴＦ  ＲＦＣ２９２３：ＴＣＰ  Ｐｒｏｂｌｅｍ  ｗｉｔｈ  Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ  ＜ｈｔｔｐ:／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ２９２３．ｔｘｔ＞、検索日２００５年９月１３日
【非特許文献４】ｄｒａｆｔ−ｉｅｔｆ−ＰＭＴＵｄ−ｍｅｔｈｏｄ−０４：Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ  ＜ｈｔｔｐ:／／ｗｗｗ．ｗａｔｅｒｓｐｒｉｎｇｓ．ｏｒｇ／ｐｕｂ／ｉｄ／ｄｒａｆｔ―ｉｅｔｆ―ＰＭＴＵｄ―ｍｅｔｈｏｄ―０４．ｔｘｔ＞、検索日２００５年９月１３日
【発明の開示】
【発明が解決しようとする課題】
【００３９】
前述のＰＬＰＭＴＵＤ（非特許文献４）のように端末通信装置においてＰＭＴＵを調査する方法を用いる場合、各送信元端末通信装置がこの方法を実装している必要がある。しかし既存の端末通信装置は、このような方法を実装していない、もしくは実装していても設定を行わなければ有効にならないものがほとんどである。このため、これらの既存の端末通信装置はブラックホール問題に陥る可能性があるという問題がある。また、今後もこの方法を実装しない端末通信装置が流通した場合、それらの端末通信装置に関してもやはり同様の問題が発生する。
【００４０】
また、特許文献１の方法では経路上の全ての中継通信装置がこの方法に対応している必要がある。しかし、インターネット上の全ての中継通信装置をこの方法に対応させるのは非現実的であるため、この方法の実施は困難である。
【００４１】
そこで、本発明は各端末通信装置や全ての中継通信装置で対応を行わなくても、単一の中継通信装置のみが対応することで、その中継通信装置を経由する通信を行う複数の端末通信装置がブラックホール問題に陥り通信不能となることを防ぐ方法を提供することを目的とする。
【課題を解決するための手段】
【００４２】
上記課題を解決するために、本願第１発明は、第１の通信装置と第２の通信装置が行っている第１の通信を中継する中継通信装置であって、ＰＭＴＵ調査パケットのサイズを決定するＰＭＴＵ調査サイズ決定手段と、前記第１の通信装置が送信した前記第１の通信に属する第１のデータパケットを受信し、前記第２の通信装置に向けて転送する際に、第１のサイズ調整方法を用いて前記第１のデータパケットを前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズに調整し、前記ＰＭＴＵ調査パケットとして送信するＰＭＴＵ調査パケット生成手段と、前記第２の通信装置が送信した前記第１の通信に属する応答確認パケットを受信し、前記第１の通信装置に向けて転送する際に、応答確認されたデータを示す情報を前記応答確認パケットから取得し、取得した情報に基づいて前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかを判定するＰＭＴＵ調査パケット到達判定手段と、前記ＰＭＴＵ調査パケット到達判定手段の判定結果に基づいて、前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは前記第１の通信以降に前記中継通信装置を経由して行われる第２の通信に属する第２のデータパケットのサイズを変更する中継通信データサイズ変更手段と、を備えることを特徴とする中継通信装置を提供する。
【００４３】
これにより、実際にアプリケーションの通信を行う端末通信装置において特別な機能を追加することなく、単一の中継通信装置が本発明の機能を持つだけで、ブラックホール問題に陥ることなく、この中継通信装置を経由する複数の端末通信装置が行うアプリケーションの通信を成功させることができる。また、またこの方法によれば、経路上の中継通信装置全てが連携して動作する必要もない。
【００４４】
本願第２発明は、第１発明において、前記第１の通信がＴＣＰを用いた通信であることを特徴とする、請求項１に記載の中継通信装置を提供する。
【００４５】
これにより、広く一般に利用されているＴＣＰ通信を用いるアプリケーションの通信が、ブラックホール問題に陥ることなく正常に通信を行うことができる。
【００４６】
本願第３発明は、第１発明において、前記第１の通信がＤＣＣＰを用いた通信であることを特徴とする、請求項１に記載の中継通信装置を提供する。
【００４７】
これにより、広く一般に利用されているＵＤＰ通信の代替プロトコルとして利用される可能性のあるＤＣＣＰ通信を用いるアプリケーションの通信が、ブラックホール問題に陥ることなく正常に通信を行うことができる。
【００４８】
本願第４発明は、第１発明において、前記ＰＭＴＵ調査パケット到達判定手段は、前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかの判定を、前記ＰＭＴＵ調査パケットを送信後の第１のタイミングで行い、前記第１のタイミングは、前記中継通信装置と前記第２の通信装置との間のＲＴＴの推定値から決定されることを特徴とする、請求項１に記載の中継通信装置を提供する。
【００４９】
これにより、相手端末通信装置にＰＭＴＵ調査パケットが到達しなかった場合に、そのことを判定する処理の完了までの時間を短くしつつ、判定精度を高めることができる。
【００５０】
本願第５発明は、第４発明において、前記第１の通信装置が、前記第１のデータパケットに対する応答確認が得られなかった場合に、前記第１のデータパケットに対する再送パケットを送信する第２のタイミングを、前記第１の通信装置と前記第２の通信装置との間のＲＴＴの推定値から決定する通信装置であった場合に、前記第１のタイミングは、前記中継通信装置が前記再送パケットを受信したタイミングに基づいて決定されることを特徴とする、請求項４に記載の中継通信装置を提供する。
【００５１】
これにより、中継通信装置においてＲＴＴ計測に基づくタイムアウト値計算処理、タイムアウト制御処理などを行う必要がなく、実装を容易にすることができる。
【００５２】
本願第６発明は、第４発明において、前記第１のタイミングは、前記中継通信装置が計測した前記中継通信装置と前記第２の通信装置との間のＲＴＴに基づいて推定されることを特徴とする、請求項４に記載の中継通信装置を提供する。
【００５３】
これにより、相手端末通信装置にＰＭＴＵ調査パケットが到達しなかった場合に、そのことを判定する処理の完了までの時間を短くしつつ、判定精度を高めることができる。
【００５４】
本願第７発明は、第１発明において、前記第１の通信がＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いた通信であった場合に、前記第１のサイズ調整方法は、前記第１のデータパケットをＩＰフラグメントする処理を含むことを特徴とする、請求項１に記載の中継通信装置を提供する。
【００５５】
これにより、中継通信装置が通常有するＩＰフラグメント機能を流用することができ、実装が容易となる。
【００５６】
本願第８発明は、第７発明において、前記第１の通信がさらにＴＣＰを用いた通信であった場合に、前記第１のサイズ調整方法は、前記第１のデータパケットと、前記第１のデータパケットに続くＴＣＰデータを含む第３のデータパケットをさらに前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズ以下のサイズにＩＰフラグメントする処理を含むことを特徴とする、請求項７に記載の中継通信装置を提供する。
【００５７】
これにより、ＴＣＰの遅延応答確認機能のために応答確認の送信が遅延することがなく、到達可能な場合の判定完了までの時間を短縮することができる。
【００５８】
本願第９発明は、第１発明において、前記第１の通信がＴＣＰを用いた通信であった場合に、前記第１のサイズ調整方法は、前記第１のデータパケットからＴＣＰデータの一部を抽出し、前記ＴＣＰデータの一部を含む、ＩＰフラグメントされていない一つのＩＰパケットとして前記ＰＭＴＵ調査パケットを構成することを特徴とする、請求項１に記載の中継通信装置を提供する。
【００５９】
これにより、相手端末通信装置にＰＭＴＵ調査パケットが到達しなかったことを、即座に返される確認応答パケットから判定することができ、判定完了までの時間を短縮することができる。
【００６０】
本願第１０発明は、第１発明において、前記第１のサイズ調整方法は、前記第１のデータパケットのサイズを保ったまま前記ＰＭＴＵ調査パケットを構成することを特徴とする、請求項１に記載の中継通信装置を提供する。
【００６１】
これにより、中継通信装置においてパケットサイズ変更処理を行う必要がなく実装が容易となる。
【００６２】
本願第１１発明は、第１発明において、前記第２の通信がＴＣＰを用いた通信であった場合に、前記中継通信データサイズ変更手段は、前記第２の通信におけるＳＹＮパケットに含まれるＭＳＳオプションの値を変更することにより、前記第２の通信に属する第２のデータパケットのサイズを変更することを特徴とする、請求項１に記載の中継通信装置を提供する。
【００６３】
これにより、第１の端末通信装置からのデータパケットだけでなく、第２の端末通信装置からのデータパケットのサイズも変更することができる。
【００６４】
本願第１２発明は、第１発明において、前記第２の通信がＩＰを用いた通信であった場合に、前記中継通信データサイズ変更手段は、前記第１の通信装置に対して、ＩＣＭＰ宛先到達不能要断片化パケットもしくは、ＩＣＭＰｖ６パケット過大パケットを送信することを特徴する、請求項１に記載の中継通信装置を提供する。
【００６５】
これにより、任意のタイミング以降に第１の端末通信装置から送信されるデータパケットのサイズを変更することができる。
【００６６】
本願第１３発明は、第１発明において、前記第２の通信がＩＰを用いた通信であった場合に、前記中継通信データサイズ変更手段は、前記第２の通信のデーパケットをＩＰフラグメントすることを特徴する、請求項１に記載の中継通信装置を提供する。
【００６７】
これにより、第１の端末通信装置からのデータパケットのサイズを、任意のタイミングで確実に変更することができる。
【００６８】
本願第１４発明は、第１発明において、前記ＰＭＴＵ調査パケットサイズ決定手段は、前記ＰＭＴＵ調査パケットのサイズを変更して請求項１に記載の処理を複数回繰り返すことにより、前記中継通信装置から前記第２の通信装置へ到達可能なデータパケットのサイズの最大値を調査し、前記中継通信データサイズ変更手段は前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは第２の通信に属する第２のデータパケットのサイズを前記最大値のサイズに変更することを特徴する、請求項１に記載の中継通信装置を提供する。
【００６９】
これにより、データパケットのサイズを、変更後の通信が最も低遅延、高スループットで行うことのできる最適な値に変更することができる。
【００７０】
本願第１５発明は、第１の通信装置と第２の通信装置が行っている第１の通信を中継する中継通信装置が実行するプログラムを記録した、コンピュータ読み取り可能な記録媒体であって、ＰＭＴＵ調査パケットのサイズを決定するＰＭＴＵ調査サイズ決定手段及び、第１の通信装置が送信した第１の通信の第１のデータパケットを受信し前記第２の通信装置に向けて転送する際に、第１のサイズ調整方法を用いて前記第１のデータパケットを前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズに調整しＰＭＴＵ調査パケットとして送信するＰＭＴＵ調査パケット生成手段及び、第２の通信装置が送信した第１の通信に属する応答確認パケットを受信し、前記第１の通信装置に向けて転送する際に、応答確認されたデータを示す情報を取得し、取得した情報に基づいて前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかを判定するＰＭＴＵ調査パケット到達判定手段及び、前記ＰＭＴＵ調査パケット到達判定手段の判定結果に基づいて、前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは前記第１の通信以降に前記中継通信装置を経由して行われる第２の通信の第２のデータパケットのサイズを変更する中継通信データサイズ変更手段としてコンピュータを機能させるプログラムを記録したことを特徴とする、コンピュータ読み取り可能な記録媒体を提供する。本プログラムが記載された記録媒体を用いることで、本願第１発明と同様の作用効果を有する。
【００７１】
本願第１６発明は、第１の通信装置と第２の通信装置が行っている第１の通信を中継する中継通信装置において用いられる集積回路であって、ＰＭＴＵ調査パケットのサイズを決定するＰＭＴＵ調査サイズ決定手段と、第１の通信装置が送信した第１の通信の第１のデータパケットを受信し前記第２の通信装置に向けて転送する際に、第１のサイズ調整方法を用いて前記第１のデータパケットを前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズに調整しＰＭＴＵ調査パケットとして送信するＰＭＴＵ調査パケット生成手段と、第２の通信装置が送信した第１の通信の応答確認パケットを受信し、前記第１の通信装置に向けて転送する際に、応答確認されたデータを示す情報を前記応答確認パケットから取得し、取得した情報に基づいて前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかを判定するＰＭＴＵ調査パケット到達判定手段と、前記ＰＭＴＵ調査パケット到達判定手段の判定結果に基づいて、前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは前記第１の通信以降に前記中継通信装置を経由して行われる第２の通信の第２のデータパケットのサイズを変更する中継通信データサイズ変更手段と、を備えることを特徴とする集積回路を提供する。上記集積回路は、本願第１発明と同様の作用効果を有する。
【００７２】
本願第１７発明は、第１の通信装置と第２の通信装置、および前記第１の通信装置と前記第２の通信を行っている第１の通信を中継する中継通信装置とが接続されている通信システムであって、前記第１の通信装置は第１のデータパケットを送信し、前記中継通信装置は、ＰＭＴＵ調査パケットのサイズを決定するＰＭＴＵ調査パケットサイズ決定手段を有し、第１の通信装置が送信した第１の通信の第１のデータパケットを受信し前記第２の通信装置に向けて転送する際に、第１のサイズ調整方法を用いて前記第１のデータパケットを前記ＰＭＴＵ調査パケットサイズ決定手段が決定したサイズに調整しＰＭＴＵ調査パケットとして送信し、前記第２の通信装置は、前記ＰＭＴＵ調査パケットを受信すると応答確認パケットを送信し、前記中継通信装置は、さらに第２の通信装置が送信した前記ＰＭＴＵ調査パケットに対する前記応答確認パケットを受信し、前記第１の通信装置に向けて転送する際に、応答確認されたデータを示す情報を前記応答確認パケットから取得し、取得した情報から前記ＰＭＴＵ調査パケットが前記第２の通信装置に到達したかどうかを判定し、前記判定結果に基づいて、前記中継通信装置と前記第２の通信装置間における前記第１の通信もしくは前記第１の通信以降に前記中継通信装置を経由して行われる第２の通信の第２のデータパケットのサイズを変更する中継通信データサイズ変更することを特徴とする通信システムを提供する。上記通信システムは、本願第１発明と同様の作用効果を有する。
【発明の効果】
【００７３】
本発明によれば、各端末通信装置や全ての中継通信装置に特別な機能を追加する必要がなく、単一の中継通信装置のみに本発明の機能を追加することで、その中継通信装置を経由して通信を行う複数の端末通信装置がブラックホール問題に陥り通信不能となることを防ぐことができる。
【発明を実施するための最良の形態】
【００７４】
（実施の形態１）
実施の形態１では、ＰＭＴＵ調査パケットを生成するためにＩＰフラグメントを用い、また、ＰＭＴＵ調査パケットに対する相手通信端末からの応答確認があったかどうかの判断を、送信元端末通信装置からの再送ＴＣＰパケットを受信するタイミングで行う場合について説明する。
【００７５】
以下本発明の実施の形態１について、図面を参照しながら説明する。図１０は、第１実施形態例に係るネットワーク構成図である。図１０では、ホームネットワーク７１０に、送信元端末通信装置７０１（例えばＰＣなど）、および送信元端末通信装置７０１をインターネット７０３に接続するための本発明の中継通信装置７０２（例えばブロードバンドルータなど）を含んでいる。このネットワークにおいて、送信元端末通信装置７０１はインターネット上の相手端末通信装置７０４（例えばＷｅｂサーバなど）との間でＴＣＰ通信７０５（例えばＷｅｂアクセス）を行うときには、中継通信装置７０２およびインターネット７０３を経由することになる。
【００７６】
ここで、インターネット７０３内におけるＴＣＰ通信７０５の通信経路上には、各端末通信装置（７０１、７０４）に隣接するリンク（７０６、７０７）のどちらのＭＴＵ値よりも小さなＭＴＵ値を持つリンク７０９が存在し、かつブラックホールルータ７０８が存在しているものとする。なお、リンク７０９はＴＣＰ通信７０５の経路上で最小のＭＴＵ値を持つリンクであるとする。例えば、リンク７０６、７０７のＭＴＵ値を１５００、リンク７０９のＭＴＵ値を１３００とすると、ＴＣＰ通信７０５の経路におけるＰＭＴＵ値は１３００バイトとなる。
【００７７】
もしこのような状況において、仮に中継通信装置７０２が本発明の機能を有していない単なる中継通信装置であったとすると、ＴＣＰのＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）決定機能（詳細は後述）により送信元端末通信装置７０１が送信するパケットのサイズは、各端末通信装置（７０１、７０４）が隣接するリンク（７０６、７０７）のＭＴＵ値の小さいほう（例えばどちらも１５００バイトであれば１５００バイト）となる。このため、送信元端末通信装置７０１が送信したパケットは中継通信装置７０８において破棄されるため、通信相手端末通信装置７０４に到達できずＴＣＰ通信７０５を行うことができない。
【００７８】
中継通信装置７０２が本発明の中継通信装置の場合は、以下のようにＴＣＰ通信７０５が行えるようになる。
【００７９】
まずここでは、本発明の中継通信装置７０２の内部構成について説明する。図１１は中継通信装置７０２の内部構成を示したブロック図である。図１１に示すように中継通信装置７０２は、ＰＭＴＵ調査パケットサイズ決定部８０１、ＰＭＴＵ調査パケット生成部８０２、中継通信処理部８０３、ＰＭＴＵ調査パケット到達判定部８０４、中継通信データサイズ変更部８０５からなる。
【００８０】
次にこれら中継通信装置の各機能部がどのように動作するかを含めて、ＴＣＰ通信７０５が開始してから正常に通信できるようになるまでのシーケンスを図１２〜図１９を用いて順に説明する。図１２はシステム全体におけるシーケンスを示している。
【００８１】
図１２に示すように本発明にかかわるシーケンスは大きく分けて以下の４つフェーズからなる。
【００８２】
（１）送信元端末通信装置７０１と相手端末通信装置７０４の間でのＴＣＰ通信開始フェーズ（３ウェイハンドシェーク）（Ｓ９０１）。
【００８３】
（２）中継通信装置７０２が、中継通信装置７０２と相手端末通信装置との間のＰＭＴＵ値を調査するＰＭＴＵ調査フェーズ（Ｓ９０２）。
【００８４】
（３）中継通信装置７０２が、ＴＣＰ通信７０５のデータパケットサイズをＰＭＴＵ調査フェーズ（Ｓ９０２）で決定された値に変更するフェーズ（Ｓ９０３）。
【００８５】
（４）中継通信データサイズ変更後に、通信７０５が正常に行われるフェーズ（Ｓ９０４）。
【００８６】
以下では、これらの各処理の詳細について説明する。
【００８７】
（１）ＴＣＰ通信開始フェーズの説明
まず、（１）のＴＣＰ通信開始フェーズのシーケンスを表すのが図１３である。なお、本シーケンスは一般のＴＣＰ通信が通信開始時に必ず行うシーケンスであり、本発明に特有のものではない。まず、送信元端末通信装置７０１が相手端末通信装置７０４に対してＳＹＮパケット（１０１１）を送信する。このＳＹＮパケットには、送信元端末通信装置７０１が隣接するリンク（７０６）のＭＴＵ値（１５００バイト）から計算された値である１４６０バイトがＭＳＳオプションとして含まれている。このＭＳＳは、ＴＣＰのデータを一つのＩＰパケットに含める際の最大データサイズであり、ＭＴＵ値から４０バイト（ＩＰヘッダおよびＴＣＰヘッダのサイズの合計値）を引いた値とするのが一般的である。このため、ここでは１５００のＭＴＵ値に対してＭＳＳは１４６０となっている。次に、このＳＹＮパケット（１０１１）を受信した相手端末通信装置７０４はＳＹＮ  ＡＣＫパケット（１０１２）を送信元端末通信装置７０１に返信する。このパケットにもＭＳＳオプションが含まれており、その値は先ほどと同様に相手端末通信装置７０４に隣接するリンク（７０７）のＭＴＵ値（１５００バイト）から４０バイトを引いた値（１４６０バイト）となる。最後にこのＳＹＮ  ＡＣＫパケット（１０１２）に対してＡＣＫパケット（１０１３）を返信してＴＣＰ通信開始処理は終了する。なお、各端末通信装置（７０１、７０４）においては、自身が送信したＳＹＮ（もしくはＳＹＮ  ＡＣＫ）パケットに含まれるＭＳＳ値と、相手から受信したＳＹＮ（もしくはＳＹＮ  ＡＣＫ）パケットに含まれるＭＳＳ値の小さい方の値を以降のデータ送信時のパケットサイズをけっている際に用いるＭＳＳ値とするため、この場合はどちらもＭＳＳ値を１４６０に設定する（Ｓ１００１、Ｓ１００２）。
【００８８】
（２）ＰＭＴＵ調査フェーズの説明
次に（２）のＰＭＴＵ調査フェーズにおける中継通信装置７０２の処理のフローチャートを表すのが図１４である。まず、ＰＭＴＵ調査パケットサイズ決定部（図１１の８０１）はＰＭＴＵ調査パケットのサイズであるＳｐの初期値を５７６バイト（通常インターネットにおいて通過可能と言われている最小サイズ）に設定する。なお、この初期値の値はこの値に限る必要はなく、ＩＰパケットの最小値として規定されている６４バイトでもよいし、既に通信経路を通過可能と分かっているサイズであればこれより大きいサイズでもよい（Ｓ１１０１）。次に、ＰＭＴＵ調査パケット生成部、ＰＭＴＵ調査パケット到達判定部が連携して、サイズがＳｐのＰＭＴＵ調査パケットが宛先に到達可能かの判定処理を行う（Ｓ１１０２）。Ｓ１１０２の処理の詳細については以降で説明する。次にＳ１１０２での判定結果が「到達可能」であった場合は（Ｓ１１０４）、さらに大きなサイズのパケットが到達可能かを判定するために、ＰＭＴＵ調査パケットサイズ決定部がＳｐの値をインクリメントし（Ｓ１１０３）、再度Ｓ１１０２を行い、Ｓ１１０４での判定結果が到達可能でなくなるまで、これらの処理を繰り返し行う。Ｓ１１０４において到達可能でなくなった場合はＳｐ−１が到達可能な最大サイズ（即ちＰＭＴＵ値）であるためＰＭＴＵ値としてＳｐ−１を採用する（Ｓ１１０５）。なお、ここでは、簡単のため上記のように小さい値から大きい値へ変化させる探索方法を説明したが、本発明ではこの方法に限る必要はなく、大きいほうから小さい方へ変化させる方法、大きくしたり小さくしたりしながら２分探索方などのアルゴリズムを用いて探索する方法など何を用いてもかまわない。また、到達可能な最大値を完全に求め切る必要はなく、適当な基準を満たす到達可能なサイズが見付かれば、その時点でその値を以降の中継パケットサイズ変更時に利用する値として採用してもよい。
【００８９】
次に、Ｓ１１０２の処理（サイズがＳｐのＰＭＴＵ調査パケットが宛先に到達可能かの判定処理）の詳細について説明する。以降、到達可能な場合［Ａ］、到達不可能な場合［Ｂ］について順に説明する。
【００９０】
［Ａ：到達可能な場合］
Ｓ１１０２の処理においてＰＭＴＵ調査パケットが相手に到達した場合のシーケンスを図示したのが図１５である。まず、送信元端末通信装置７０１は１５００バイトのパケット１２０１（ＩＰヘッダ２０バイト、ＴＣＰヘッダ２０バイト、ＴＣＰデータ１４６０バイト）を送信する。このパケットを受信した中継通信装置７０２において、ＰＭＴＵ調査パケット到達判定部は、まずＩＰパケット１２０１に含まれていたＴＣＰデータの最終シーケンス番号（Ｎ−１とする）を記憶しておく（Ｓ１２２１）。
【００９１】
次に、中継通信装置７０２のＰＭＴＵ調査パケット生成部はこのパケット１２０１をＩＰフラグメント処理し転送する（Ｓ１２２２）。このときのＳｐの値がＰＭＴＵ値（１３００バイト）より小さい６００であったとすると、このパケットは３つのＩＰパケット（６００バイトのＰＭＴＵ調査パケット１２０２、およびその他のＩＰフラグメントパケット１２０３、１２０４）に分割される）（Ｓ１２２１）。なお、パケット１２０１にＤＦフラグが設定されている場合（もしくはＩＰｖ６パケットの場合）は中継通信装置においてＩＰフラグメントを行ってはいけないことになっているが、ここでは調査のために強制的にＩＰフラグメントを行うものとする。また、調査を行うためには中継通信装置７０２から相手端末通信装置７０４までの経路上でＩＰフラグメントされないように、ＰＭＴＵ調査パケット１２０２にＤＦフラグを設定しておく必要がある。一方、パケット１２０１にＤＦフラグが設定されていなかった場合は、ＩＰフラグメントによる性能劣化が起きてもよいフローであると判断し、ＰＭＴＵ調査自体を行わずそのまま転送してもよいし、またＰＭＴＵ調査を行うためにＩＰフラグメントした上でＤＦフラグを設定して転送してもよい。
【００９２】
相手端末通信装置７０４はこれらの３つの分割されたパケットを受信すると、まず元の１５００バイトのＩＰパケット１２０１を再構築する。その後、ＴＣＰ処理においてシーケンス番号がＮ−１までのデータ受信を行い、ＡＣＫ番号がＮであるＡＣＫパケット１２０５を返信する。このＡＣＫパケット１２０５を受信すると、中継通信装置７０２のＰＭＴＵ調査パケット到達判定部はそのＡＣＫ番号（Ｎ）と、Ｓ１２２２で記憶したシーケンス番号（Ｎ−１）を比較し、ＡＣＫ番号の方が１大きいことを確認することにより、ＰＭＴＵ調査パケット１２０２が相手端末通信装置７０４に到達したと判定することができる（Ｓ１２２３）。
【００９３】
なお、ここではＰＭＴＵ調査パケットに対するＡＣＫパケット１２０５が即座に返される場合について述べたが、ＴＣＰのＡＣＫ返信機構においては、単独のデータ受信ではすぐにＡＣＫが返信されない（一定時間後に返信される）場合がある。この場合でも相手端末通信装置７０４は複数のデータを連続して受信すると、少なくとも一方には即座にＡＣＫを返信する。この機構を考慮し、中継通信装置７０２が送信元端末通信装置７０１からパケット１２０１に続くパケット（シーケンス番号がＮ〜Ｍ―１のＴＣＰデータを含む）を受信した場合、このパケットをＳｐもしくはそれ以下のサイズにＩＰフラグメントして、ＰＭＴＵ調査パケットに続き連即して転送することにより（この際Ｍ−１も記憶しておく）、ＰＭＴＵ調査パケットが相手端末通信装置７０４に到達した場合は、そのことをＮもしくはＭのＡＣＫ番号を持つＡＣＫパケット受信により、即座に確認することができる。
【００９４】
［Ｂ：到達不可能な場合］
Ｓ１１０２の処理においてＰＭＴＵ調査パケットが相手に到達しない場合のシーケンスを図示したのが図１６である。まず、送信元端末通信装置７０１は１５００バイトのパケット１２１１を到達可能な場合と同様送信する。このパケットを受信した中継通信装置７０２において、ＰＭＴＵ調査パケット到達判定部は、まずＩＰパケット１２１１に含まれていたＴＣＰデータの最終シーケンス番号（Ｎ’−１とする）を記憶しておく（Ｓ１２２１）。
【００９５】
次に、中継通信装置７０２のＰＭＴＵ調査パケット生成部はこのパケット１２１１をＩＰフラグメント処理し転送する。このときのＳｐの値がＰＭＴＵ値（１３００バイト）より小さい１４００であったとすると、このパケットは２つのＩＰパケット（１４００バイトのＰＭＴＵ調査パケット１２１２、およびその他のＩＰフラグメントパケット１２１３に分割される）（Ｓ１２２２）。なお、ＤＦフラグに関する説明は前述の到達可能な場合と同様のことがいえるためここでは省略する。
【００９６】
ここで、ＰＭＴＵ調査パケット１２１２を受け取ったブラックホールルータ７０８は、そのパケットサイズが隣接するリンク７０９のＭＴＵ値（１３００）を越えており、またＤＦフラグが設定されていることから、ＰＭＴＵ調査パケット１２１２を破棄する。また、ブラックホールルータであるためＩＣＭＰ宛先到達不能要断片化パケットを送信することもない。一方、その他のＩＰフラグメントパケット１２１３はサイズが１３００以下であるためそのまま転送される。
【００９７】
したがって、相手端末通信装置７０４はＰＭＴＵ調査パケットを受けとることができないため、その他のＩＰフラグメントパケット１２１３を受け取ったとしても元のＩＰパケット１２１１を再構築することができない。このため、ＴＣＰ処理を行うことができずＡＣＫ番号がＮのＡＣＫを返信することはない。
【００９８】
その後、送信元端末通信装置７０１は送信したパケット１２１１に対するＡＣＫを受信できないため、タイムアウトを発生させＩＰパケット１２１１に対する再送パケット１２１４を送信する（Ｓ１２２３）。中継通信装置７０２のＰＭＴＵ調査パケット到達判定部はこの再送パケット１２１４を受信すると、そこに含まれるＴＣＰデータの最終シーケンス番号がＳ１２２１で記憶したシーケンス番号（既にＰＭＴＵ調査パケットとして送信したパケット１２１３のＩＰフラグメント前のパケット１２１１に含まれるＴＣＰデータの最終シーケンス番号（Ｎ−１））と同じかどうかをチェックする。これらが同じ値（Ｎ−１）であった場合、再送が発生した、即ちＰＭＴＵ調査パケットが相手端末通信装置に到達しなかったと判定する。
【００９９】
ここで、ＰＭＴＵ調査パケットが到達しなかったことを判定するためのトリガ（上記では再送パケットの受信を利用）について説明する。まず、このトリガが発行されるまでの時間は少なくとも中継通信装置７０２がＰＭＴＵ調査パケットを送信してからそれに対するＡＣＫパケットを受信するまでの時間よりも長く設定する必要がある。この時間は一般に中継通信装置７０２と相手端末通信装置７０４との間のＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）値と呼ばれる。ＲＴＴ値は、経路上にある中継通信装置の数、処理速度、輻輳状態に応じた待ち時間、各リンクの帯域（通信速度）、パケットサイズなど様々な要素により変化するため、トリガが発生するまでの時間を決定するにはＲＴＴ値を動的に計測する必要がある。一つの方法として、中継通信装置７０２自身が動的にＲＴＴ値を計測しておき、ＰＭＴＵ調査パケットを送信してから、さきほど計測したＲＴＴ値に基づいて計算されたタイムアウト時間以内にＡＣＫパケットを受信しなかった場合は、到達不可能と判定する方法がある。なお、ここで用いるＲＴＴ計測およびタイムアウト値を決定するアルゴリズムはＴＣＰの再送タイムアウト処理と同様のアルゴリズムを用いることができる。
【０１００】
しかし、中継通信装置７０２は通常ＴＣＰ処理を行う機能は持たないため、この方法ではＰＭＴＵ調査を行うために新たに上記アルゴリズムの実装を行わなければならず、実装が複雑になるという問題がある。
【０１０１】
最初に説明した、トリガとして再送パケット１２２３を利用する方法は、送信元端末通信装置７０１が行っているＲＴＴ値計測処理、タイムアウト値計算処理、タイムアウト処理などを間接的に利用することで、中継通信装置においてこれらの処理を行う必要がないため実装が容易になるという点で、より好ましいといえる。
【０１０２】
（３）中継通信データサイズ変更フェーズ、および（４）中継通信データサイズ変更後の正常通信フェーズの説明
次に、（３）ＴＣＰ通信７０５のデータパケットサイズをＰＭＴＵ調査フェーズ（Ｓ９０２）で決定された値に変更するフェーズ（Ｓ９０３）、および（４）その後正常通信を行うフェーズ、について説明する。中継通信のデータサイズを変更する方法はいくつか考えられ、その方法によってその後の正常通信のシーケンスも異なるため、ここではそれぞれの方法に対して（３）、（４）をまとめて説明する。なお、（２）ではＰＭＴＵ値が１３００に決定されたものとして説明する。
【０１０３】
［Ａ：ＳＹＮパケットのＭＳＳオプションを変更する方法］
この方法は、ＴＣＰの３ウェイハンドシェークのＳＹＮパケットに含まれるＭＳＳオプションの値を変更することにより、送信元端末通信装置７０１と相手端末通信装置７０４から送信されるパケットのサイズを小さくさせる方法である。
【０１０４】
ただし、この方法はＴＣＰ通信が開始するタイミングでしか行えないため、ＰＭＴＵ調査に用いたＴＣＰ通信ではなく、以降の同経路を通るＴＣＰ通信（つまり相手端末通信装置が同じサブネットに含まれる）に対して有効である。ＰＭＴＵ調査に用いたＴＣＰ通信自身を正常に行わせるためには、後述する方法Ｂ、Ｃなどを用いるか、もしくはパケット転送時にＤＦフラグを外すことで以降の経由する中継通信装置（例えば７０８）などでＩＰフラグメント可能にさせるなどの方法を用いる必要がある。
【０１０５】
さて、図１７を用いて３ウェイハンドシェークを行う際にＭＳＳオプションを変更するシーケンスについて説明する。まず、送信元端末通信装置７０１は新たにＴＣＰ通信を開始するためＳＹＮパケット１３０１を送信する。（２）の処理によりＰＭＴＵ値が１３００であることが決定されている状態で、ＳＹＮパケット１３０１を受信した場合、中継通信装置７０２の中継通信データサイズ変更部（図１１の８０５）はＳＹＮパケット１３０１に含まれるＭＳＳオプションの値を１２６０（ＰＭＴＵ値−４０（ＩＰヘッダサイズ２０バイト＋ＴＣＰヘッダサイズ２０バイト））に書き換えて転送する（Ｓ１３１１）。相手端末通信装置７０４はＭＳＳを書き換えられたＳＹＮパケット１３０２を受信すると、ＳＹＮ  ＡＣＫパケット１３０３を返信する。ここで、相手端末通信装置７０４ではＭＳＳ値を送信したＳＹＮ  ＡＣＫパケットと受信したＳＹＮパケットに含まれるＭＳＳ値の小さい方を選択するため、以降のＴＣＰデータ送信時に利用するＭＳＳ値は１２６０となる（Ｓ１３１３）。次にＳＹＮ  ＡＣＫパケット１３０３を受信した中継通信装置７０２は、ＳＹＮパケットの場合と同様にＭＳＳオプションの値を１２６０に変更し転送する（Ｓ１３１２）。ＭＳＳを変更されたＳＹＮ  ＡＣＫパケット１３０４を受信した送信元端末通信装置７０１はＡＣＫパケット（１０１３）を返信し、やはり以降のＴＣＰデータ送信時に利用するＭＳＳ値を１２６０にする（Ｓ１３１４）。これにより、ＴＣＰデータ通信時のＩＰパケットサイズは１３００（１２６０＋４０）バイトとなり、ＩＰフラグメントを発生させることなくＴＣＰ通信を行うことができる。
【０１０６】
［Ｂ：ＩＣＭＰ宛先到達不能パケットを利用する方法］
この方法は、ＩＣＭＰ宛先到達不能要断片化パケット（ＩＰｖ６の場合はＩＣＭＰｖ６パケット過大パケット）を送信元端末通信装置７０１に対して送信し、送信元端末通信装置７０１から送信されるパケットのサイズを小さくさせる方法である。
【０１０７】
図１８はこの方法を用いた場合のシーケンスを示している。中継通信装置７０２において（２）の処理によりＰＭＴＵ値が分かると、中継通信装置７０２の中継通信データサイズ変更部（図１１の８０５）は、ＩＣＭＰ宛先到達不能要断片化パケット１３２１を生成し送信元端末通信装置７０１に送信する。なお、このパケット１３２１に含まれるＭＴＵ値フィールドの値（図５の４０３）はＰＭＴＵ値である１３００とする。送信元端末通信装置７０１はこのパケット１３２１を受信すると、指定されたＭＴＵ値−４０（即ち、１２６０）をＴＣＰ通信に利用するＭＳＳ値として設定する（Ｓ１３３１）。ここで設定されたＭＳＳ値は、以降（直後も含む）に送信されるＴＣＰデータのパケットサイズにも反映されるため、送信データパケット１３２１のサイズは１３００となる。これにより、送信元端末通信装置７０１から送信されたＴＣＰ通信のパケットは相手端末通信装置７０４まで到達可能となる。また、一旦ＭＳＳ値が１２６０に設定されると、以降送信元端末通信装置７０１が開始するＳＹＮパケットに含まれるＭＳＳオプションの値も１２６０となるため、これらの通信も正常に行えるようになる。
【０１０８】
［Ｃ：ＩＰフラグメントを利用する方法］
この方法は、送信元端末通信装置７０１から送信されるパケットのサイズは変更せずに、中継通信装置７０２においてＩＰフラグメントを行う方法である。
【０１０９】
図１９はこの方法を用いた場合のシーケンスを示している。中継通信装置７０２において（２）の処理よりＰＭＴＵ値が分かると、中継通信装置７０２の中継通信データサイズ変更部（図１１の８０５）は、送信元端末通信装置７０１から送信されてきた１５００バイトのパケット１３４１を、ＰＭＴＵ値である１３００バイトでＩＰフラグメントし、１３００バイトのパケット１３４２と、残りのデータを含むパケット１３４３の２つを転送する。これにより、送信元端末通信装置７０１から送信されたＴＣＰ通信のパケットは相手端末通信装置７０４まで到達可能となる。
【０１１０】
なお、ここまでの説明ではＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）を例として説明したが、データ受信に対して応答確認（ＡＣＫ）を返信する機構を持つプロトコルであれば、ＵＤＰの代替プロトコルとして提案されているＤＣＣＰ（Ｄａｔａｇｒａｍ  Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）など他のプロトコルに対しても本発明を適用可能である。なお、ＤＣＣＰに関するドキュメントは２００５年９月２２日現在では、＜ｈｔｔｐ：／／ｗｗｗ．ｗａｔｅｒｓｐｒｉｎｇｓ．ｏｒｇ／ｐｕｂ／ｉｄ／ｄｒａｆｔ―ｉｅｔｆ―ｄｃｃｐ―ｓｐｅｃ―１１．ｔｘｔ＞から入手可能である。
【０１１１】
（実施の形態２）
実施の形態１では、ＰＭＴＵ調査パケットを生成するためにＩＰフラグメントを用いていたが、実施の形態２ではＰＭＴＵ調査パケット生成時にパケットサイズの変更を行わない方法について説明する。この方法では、中継通信装置７０２がＰＭＴＵ調査パケットのサイズを自由に選択することができないため、正確なＰＭＴＵ値を調査することはできないが、ＩＰフラグメントなどの処理を行う場合に比べさらに実装が容易になるという利点がある。
【０１１２】
ネットワーク構成図（図１０）、中継通信装置の内部構成図（図１１）、全体の処理の流れ（図１２）に関しては実施の形態１と同様であるため、ここでは説明を省略する。また、図１２のＴＣＰ通信開始フェーズ（Ｓ９０１）も実施の形態１と同様であるためここでは説明を省略する。
【０１１３】
次に実施の形態２におけるＰＭＴＵ調査フェーズ（Ｓ９０２）について図２０のフローチャート、および図２１（到達可能な場合のシーケンス図）、図２２（到達不可能な場合のシーケンス図）を用いて説明する。
【０１１４】
図２０にあるように、まず、転送したＰＭＴＵ調査パケットが相手端末通信装置７０４に到達可能かの判定処理を行う（Ｓ１４０１）。Ｓ１４０１の到達可能な場合のシーケンスを示したのが図２１である。図２１では、送信元端末通信装置７０１から送信された１５００バイトのパケット１５０１を受信した中継通信装置７０２は、パケット１５０１に含まれるＴＣＰデータの最終シーケンス番号（Ｎ−１とする）を記憶し（Ｓ１５１１）、その内容およびサイズは変更せずにＰＭＴＵ調査パケット１５０２としてそのまま転送する。ここではリンク７０９におけるＭＴＵ値も１５００バイトであるとし、ＰＭＴＵ調査パケット１５０２は相手端末通信装置７０４まで到達するものとする。ＰＭＴＵ調査パケットに対するＡＣＫパケット１５０３（ＡＣＫ番号Ｎ）を受信した中継通信装置７０２は到達判定処理（Ｓ１５１２）においてＡＣＫ番号の確認により到達可能であるとの判定を行い、ＡＣＫパケット１５０３はそのまま転送する。一方、Ｓ１４０１の到達不可能な場合のシーケンス図を示したのが図２２である。図２２では、送信元端末通信装置７０１から送信された１５００バイトのパケット１５２１を受信した中継通信装置７０２は、パケット１５２１に含まれるＴＣＰデータの最終シーケンス番号（Ｎ−１とする）を記憶し（Ｓ１５３１）、その内容およびサイズは変更せずにＰＭＴＵ調査パケット１５２２としてそのまま転送する。ここではリンク７０９におけるＭＴＵ値は１３００バイトであるとし、ＰＭＴＵ調査パケットはその直前のルータ７０８において破棄される。このためＰＭＴＵ調査パケット１５２２に対するＡＣＫパケットは返信されず、送信元端末通信装置７０１は再送パケット１５２３を送信する（Ｓ１５３２）。再送パケット１５２３（最終シーケンス番号Ｎ−１）を受信した中継通信装置７０２はそのシーケンス番号を確認することにより、到達不可能であるとの判定を行う。
【０１１５】
再び図２０に戻り、上記の判定処理（Ｓ１４０１）により到達可能と判定された場合（Ｓ１４０２）は、ＰＭＴＵ値をそのサイズＳｐに設定する（Ｓ１４０４）。また、到達不可能と判定された場合はＰＭＴＵ値を相手通信端末に到達可能であることが分かっている既定値（例えば５７６）に設定する（Ｓ１４０３）。なお、Ｓｐのサイズは送信元端末通信装置７０１が送信したパケットのサイズに依存するため、到達可能かの判定後に中継通信装置７０２がＳｐのサイズを変更して再調査を行うことはできないため、ここではこの判定処理（Ｓ１４０１）は１回のみ行うものとしている。なお、以降送信元端末通信装置７０１が送信したパケットのサイズがここで判定したサイズＳｐと異なる場合は、再度調査を行っても良い。
【０１１６】
以降の中継通信データサイズ変更フェーズ（Ｓ９０３）および中継通信データサイズ変更後の正常通信フェーズ（Ｓ９０４）での処理に関しては、実施の形態１と同様であるため、ここでは省略する。
【０１１７】
（実施の形態３）
実施の形態１ではＰＭＴＵ調査パケットを生成するためにＩＰフラグメントを行う方法、実施の形態２ではサイズの変更を行わない方法を述べたが、実施の形態３ではＴＣＰデータの分割を行う方法について説明する。
【０１１８】
ネットワーク構成図（図１０）、中継通信装置の内部構成図（図１１）、全体の処理の流れ（図１２）に関しては実施の形態１と同様であるため、ここでは説明を省略する。また、図１２の各フェーズのうち、ＴＣＰ通信開始フェーズ（Ｓ９０１）、中継通信データサイズ変更フェーズ（Ｓ９０３）、中継通信データサイズ変更後の正常通信フェーズ（Ｓ９０４）も実施の形態１と同様であるためここでは説明を省略する。実施の形態３が実施の形態１と異なるのはＰＭＴＵ調査フェーズ（Ｓ９０２）の処理のうち、サイズがＳｐのＰＭＴＵ調査パケットが相手端末通信装置７０４に到達可能かの判定処理（図１４のＳ１１０２）のみであるため、以降ではこの処理の詳細についてのみ説明する。
【０１１９】
［Ａ：到達可能な場合］
到達可能な場合のシーケンス図は図２３である。まずＳ１６１１のＴＣＰデータ分割処理について説明する。送信元端末通信装置７０１が送信した１５００バイトのパケット１６０１を受信した中継通信装置７０２は、そのパケットからＴＣＰデータ１４６０バイトを抽出する。次に抽出したＴＣＰデータの先頭からＳｐ（例えばここでは１２００バイトとする）−４０バイトのＴＣＰデータを抽出し、Ｓｐ（１２００）バイトのＰＭＴＵ調査パケット１６２２を構築する。このパケットはＩＰフラグメントの行われていないＴＣＰパケットであり、最終シーケンス番号がＮ−１のＴＣＰデータを含むとする。また、抽出した１４６０バイトのＴＣＰデータを、到達可能であることが分かっているサイズ（例えば５７６バイト）の複数のパケットに収まるように分割し、３つのＩＰフラグメントされていない通常のＴＣＰパケット（１６０３（５７６バイト）、１６０４（５７６バイト）、１６０５（４２８バイト））を構築する。これらのＴＣＰパケットに含まれるＴＣＰデータの最終シーケンス番号はいずれもＮ−１とは異なる値になる。
【０１２０】
次にシーケンス番号記憶処理Ｓ１６１２において、先ほど構築したＰＭＴＵ調査パケットに含まれるＴＣＰデータの最終シーケンス番号Ｎ−１を記憶しておく。そして、先ほど構築したＴＣＰパケットを、ＰＭＴＵ調査パケット（１６０２）、到達可能なパケット（１６０３、１６０４、１６０５）の順に送信する。
【０１２１】
これらのパケットを受信した相手端末通信装置７０４は、少なくとも１６０２もしくは１６０３のいずれかに対してＡＣＫパケット１６０６を返信する。このとき、このＡＣＫパケット１６０６に含まれるＡＣＫ番号は受信したＴＣＰデータの最終シーケンス番号であるＮとなる。次に中継通信装置７０２はこのＡＣＫパケット１６０６を受信するとそのＡＣＫ番号Ｎが、Ｓ１６１２で記憶したシーケンス番号Ｎ−１より１大きいことを確認すると、到達可能であると判定する（Ｓ１６１３）。
【０１２２】
［Ｂ：到達不可能な場合］
一方、到達不可能な場合のシーケンス図は図２４である。ＴＣＰデータ分割処理（Ｓ１６３１）およびシーケンス番号記憶処理（Ｓ１６３２）までは到達可能な場合と同様なのでここでは説明を省略する。ここで、到達可能な場合と異なるのはＰＭＴＵ調査パケット１６２２のサイズがＰＭＴＵ値（１３００バイト）よりも大きい１４００バイトであることである。このため、ＰＭＴＵ調査パケットはブラックホールルータ７０８により破棄され、その他のパケット（１６２３、１６２４、１６２５）のみが相手端末通信装置７０４に到着する。この場合、返信されるＡＣＫパケット１６２６に含まれるシーケンス番号はＮとは異なる値になる。したがってこのＡＣＫパケット１６２６を受信した中継通信装置７０２は到達判定処理（Ｓ１６３３）において到達不可能であると判定する。
【０１２３】
なお、ここで述べた方法は、送信元端末通信装置７０１から送信されたＩＰパケットからＴＣＰデータを抽出して、中継通信装置７０２において新たに複数のＴＣＰパケットを構築することを除いては、ＰＬＰＭＴＵＤと同様の処理を行っている。
【０１２４】
以上のような動作を行う本発明の中継通信装置７０２を利用することによって、送信元端末装置に特別な機能を追加することなく、ブラックホールルータの存在するネットワークを介して、複数の送信元端末装置が正常に通信を行うことができる。
【０１２５】
なお、本発明で説明した各実施の形態は、上述の処理手順をＣＰＵに実行させるためのプログラムをＣＰＵに実行させることによっても実現することが出来る。この場合、当該プログラムを記録媒体に格納し、その内容を記憶した装置の記憶装置（ハードディスクなど）から実行させても良いし、記録媒体から直接実行しても良い。ここでの記録媒体は、ＲＯＭやＲＡＭ、フラッシュメモリなどの半導体メモリ、フレキシブルディスクやハードディスクなどの磁気ディスクメモリ、ＣＤ−ＲＯＭやＤＶＤ、ＢＤなどの光ディスク、メモリカードなどの記録媒体をいう。
【０１２６】
また、各実施の形態で説明した中継通信装置の機能を集積回路であるＬＳＩとして実現しても良い。
【０１２７】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１２８】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【産業上の利用可能性】
【０１２９】
本発明の中継通信装置は、ホームネットワークや社内ＬＡＮ、ＩＳＰ内のネットワークなどブラックホールルータが存在しない小規模もしくは中規模ネットワークにおいて、外部ネットワークと接続する境界や小規模ネットワーク内の任意の中継点において適用できる。例えば、ブロードバンドルータや、無線アクセスポイント、中継機能と端末機能の両方を有する通信装置などに対して適用できる。
【図面の簡単な説明】
【０１３０】
【図１】ＴＣＰ／ＩＰネットワークのモデル図
【図２】ＩＰパケットフォーマット（ＩＰフラグメント前）を示す図
【図３】ＩＰパケットフォーマット（ＩＰフラグメント後）を示す図
【図４】ＲＦＣ１１９１におけるＰａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙのシーケンス図
【図５】ＩＣＭＰ宛先到達不能要断片化パケットを示す図
【図６】ＰＬＰＭＴＵＤの全体を示すフローチャート
【図７】ＰＬＰＭＴＵＤの到達判定処理の詳細を示すフローチャート
【図８】ＰＬＰＭＴＵＤの到達可能な場合を示すシーケンス図
【図９】ＰＬＰＭＴＵＤの到達不可能な場合を示すシーケンス図
【図１０】実施形態例におけるネットワーク図
【図１１】本発明の中継通信装置の内部構成図
【図１２】実施形態例における処理シーケンス図
【図１３】ＴＣＰ通信開始フェーズにおける処理シーケンス図
【図１４】第１実施形態例におけるＰＭＴＵ調査フェーズのフローチャート
【図１５】第１実施形態例におけるＰＭＴＵ調査フェーズの到達可能な場合を示す処理シーケンス図
【図１６】第１実施形態例におけるＰＭＴＵ調査フェーズの到達不可能な場合を示す処理シーケンス図
【図１７】ＳＹＮパケットのＭＳＳオプションを変更する方法による中継通信データサイズ変更フェーズおよび中継通信データサイズ変更後の正常通信フェーズのシーケンス図
【図１８】ＩＣＭＰ宛先到達不能要断片化パケットを利用する方法による中継通信データサイズ変更フェーズおよび中継通信データサイズ変更後の正常通信フェーズのシーケンス図
【図１９】ＩＰフラグメントを利用する方法による中継通信データサイズ変更フェーズおよび中継通信データサイズ変更後の正常通信フェーズのシーケンス図
【図２０】第２実施形態例におけるＰＭＴＵ調査フェーズのフローチャート
【図２１】第２実施形態例におけるＰＭＴＵ調査フェーズの到達可能な場合を示す処理シーケンス図
【図２２】第２実施形態例におけるＰＭＴＵ調査フェーズの到達不可能な場合を示す処理シーケンス図
【図２３】第３実施形態例におけるＰＭＴＵ調査フェーズの到達可能な場合を示す処理シーケンス図
【図２４】第３実施形態例におけるＰＭＴＵ調査フェーズの到達不可能な場合を示す処理シーケンス図
【符号の説明】
【０１３１】
１０１    端末通信装置
１０２    中継通信装置
１０３    リンク
１０４    アプリケーションレベルでの通信
７１０    ホームネットワーク
７０１    送信元端末通信装置
７０２    本発明の中継通信装置
７０３    インターネット
７０４    相手端末通信装置
７０５    ＴＣＰ通信
７０６，７０７，７０８    リンク
７０８    ブラックホールルータ
８０１    ＰＭＴＵ調査パケットサイズ決定部
８０２    ＰＭＴＵ調査パケット生成部
８０３    中継通信処理部
８０４    ＰＭＴＵ調査パケット到達判定部
８０５    中継通信データサイズ変更部
【図１】
2007180686.tif 000003
【図２】
2007180686.tif 000004
【図３】
2007180686.tif 000005
【図４】
2007180686.tif 000006
【図５】
2007180686.tif 000007
【図６】
2007180686.tif 000008
【図７】
2007180686.tif 000009
【図８】
2007180686.tif 000010
【図９】
2007180686.tif 000011
【図１０】
2007180686.tif 000012
【図１１】
2007180686.tif 000013
【図１２】
2007180686.tif 000014
【図１３】
2007180686.tif 000015
【図１４】
2007180686.tif 000016
【図１５】
2007180686.tif 000017
【図１６】
2007180686.tif 000018
【図１７】
2007180686.tif 000019
【図１８】
2007180686.tif 000020
【図１９】
2007180686.tif 000021
【図２０】
2007180686.tif 000022
【図２１】
2007180686.tif 000023
【図２２】
2007180686.tif 000024
【図２３】
2007180686.tif 000025
【図２４】
2007180686.tif 000026