(57)【要約】  通信装置は、パケット長テーブル、送信部、受信部、テーブル更新部を備える。パケット長テーブルは、ネットワークの識別子に対応付けて、ネットワークに属する装置に送信するパケットの長さを格納する。送信部は、宛先装置が属するネットワークに対応付けられたパケットの長さをパケット長テーブルから取得すると共に、取得したパケットの長さ以下のパケットを宛先装置に送信する。受信部は、宛先装置に向けて送信されたパケットの長さが宛先装置に到達するまでの経路に含まれるネットワークに送信できるパケットの長さよりも長い場合、通知メッセージを受信する。通知メッセージは、経路に含まれるネットワークに送信できる最大のパケット長である最大パケット長を通知する。テーブル更新部は、パケット長テーブル中で、宛先装置を含むネットワークに対応付けられているパケットの長さを、最大パケット長に更新する。
2012124035.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークの識別子に対応付けて、前記ネットワークに属する装置に送信するパケットの長さを格納するパケット長テーブルと、
宛先装置が属するネットワークに対応付けられたパケットの長さを、前記パケット長テーブルから取得すると共に、取得したパケットの長さ以下のパケットを前記宛先装置に送信する送信部と、
前記宛先装置に向けて送信されたパケットの長さが前記宛先装置に到達するまでの経路に含まれるネットワークに送信できるパケットの長さよりも長い場合、前記経路に含まれるネットワークに送信できる最大のパケット長である最大パケット長を通知する通知メッセージを受信する受信部と、
前記パケット長テーブル中で、前記宛先装置を含むネットワークに対応付けられているパケットの長さを、前記最大パケット長に更新するテーブル更新部
を備えることを特徴とした通信装置。
【請求項２】
前記パケット長テーブルは、前記宛先装置のアドレスのルーティングプレフィックスと、前記ルーティングプレフィックスで指定されるネットワークに送信できるパケット長を対応付けて記憶し、
前記通知メッセージは、前記宛先装置のアドレスを含み、
前記テーブル更新部は、前記宛先アドレスのルーティングプレフィクスに対応付けられているパケット長の値を、前記最大パケット長に変更する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
送信元装置から送信されたパケットを中継する中継装置であって、
前記パケットを受信する受信部と、
前記パケットの宛先である宛先装置を含むネットワークの識別子に対応付けて、前記ネットワークに属する装置に送信できるパケットの長さを格納するパケット長テーブルと、
前記パケットを転送する転送先ネットワークを決定する転送先決定部と、
前記パケットの長さが、前記宛先装置を含むネットワークを識別する識別子に対応付けて記憶されているパケットの長さ以下の場合、前記受信部により受信したパケットを転送対象であると判定する判定部と、
前記転送対象であると判定されたパケットを、前記転送先ネットワークに送信する送信部
を備えることを特徴とする中継装置。
【請求項４】
前記宛先装置に向けて送信されたパケットの長さが前記転送先ネットワークに向けて送信できるパケットの長さである最大パケット長よりも長いことと、前記最大パケット長の値を通知する通知メッセージを生成するメッセージ生成部
をさらに備え、
前記パケットの長さが前記最大パケット長を超えていると前記判定部が判定した場合、前記通知メッセージを前記送信元装置に送信する
ことを特徴とする請求項３に記載の中継装置。
【請求項５】
前記受信部により受信したパケットは第１のプロトコルに基づいて生成されており、前記転送先ネットワークでは前記第１のプロトコルとは異なる第２のプロトコルが用いられる場合に、前記受信部により受信したパケットに前記第２のプロトコルを用いた処理を行うためのヘッダを付加するカプセル化部をさらに備え、
前記パケット長テーブルは、前記宛先装置を含むネットワークを識別する識別子に対応付けて、前記最大パケット長から前記ヘッダの長さを差し引いた値を記憶する
ことを特徴とする請求項４に記載の中継装置。
【請求項６】
送信元装置から送信されたパケットを中継する中継装置が、
前記パケットを受信し、
前記パケットを転送する転送先ネットワークを決定し、
前記パケットの長さが、前記宛先装置を含むネットワークを識別する識別子に対応付けて記憶されているパケットの長さ以下の場合、前記パケットを転送対象であると判定し、
前記転送対象であると判定したパケットを、前記転送先ネットワークに送信する
処理を行うことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置と、その通信装置により行われる通信方法にかかわる。
【背景技術】
【０００２】
インターネットをはじめとするInternet Protocol（ＩＰ）ネットワークでは、パケットを送信する送信元装置は、宛先装置へのパケットの送信に際して、最大パケット長を求める。ここで、最大パケット長は、送信元装置から宛先装置へパケットを送信する際に用いられる最短経路上で送信可能なパケットの大きさの最大値（Path Maximum Transfer Unit、ＰＭＴＵ）である。送信元装置は、ＰＭＴＵの大きさに設定したパケットを宛先装置に送信する。また、送信元装置は、次回以降のパケットの送信に用いるために、得られたＰＭＴＵの値を宛先装置に対応付けて記憶する。【０００３】
また、関連する技術として、ルーティング経路が複数存在する場合に、それぞれの経路についてのＰＭＴＵを求めて、パケットの送信元装置に通知することができる装置が考案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００７／１１４１８３号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
パケットを送信する送信元装置は、宛先装置ごとに対応するＰＭＴＵを記憶しているため、送信元装置に記憶されているＰＭＴＵのエントリは、宛先装置数が増加すると共に増加する。記憶しているエントリ数が多くなるとパケットの宛先装置に対応付けられたエントリを検索する時間が長くなるため、送信元装置が宛先装置に対応付けられたＰＭＴＵを取得するまでに時間がかかってしまう。ＰＭＴＵの取得に時間がかかると、パケットの生成に時間がかかるため、通信に時間がかかってしまう。【０００６】
本発明は、送信元装置が宛先装置に対応付けられたＰＭＴＵを検索する時間を短縮することを目的とする。
【課題を解決するための手段】
【０００７】
ある実施形態に係る通信装置は、パケット長テーブル、送信部、受信部、および、テーブル更新部を備える。パケット長テーブルは、ネットワークの識別子に対応付けて、前記ネットワークに属する装置に送信するパケットの長さを格納する。送信部は、宛先装置が属するネットワークに対応付けられたパケットの長さを、前記パケット長テーブルから取得すると共に、取得したパケットの長さ以下のパケットを前記宛先装置に送信する。受信部は、前記宛先装置に向けて送信されたパケットの長さが前記宛先装置に到達するまでの経路に含まれるネットワークに送信できるパケットの長さよりも長い場合、通知メッセージを受信する。通知メッセージは、前記経路に含まれるネットワークに送信できる最大のパケット長である最大パケット長を通知する。テーブル更新部は、前記パケット長テーブル中で、前記宛先装置を含むネットワークに対応付けられているパケットの長さを、前記最大パケット長に更新する。
【発明の効果】
【０００８】
送信元装置が宛先装置に対応付けられたＰＭＴＵを検索する時間が短縮される。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る通信装置を含むネットワークの例を示す図である。
【図２】パケット長テーブルの例を示す図である。
【図３】通信装置の機能構成の例を示す図である。
【図４】通信装置のハードウェア構成の例を示す図である。
【図５】パケット長テーブルの例を示す図である。
【図６】通知メッセージの構成の例を示す図である。
【図７】通信装置の動作の例を説明するフローチャートである。
【図８】通信装置の動作の例を説明するフローチャートである。
【図９】トンネルルータの機能構成の例を示す図である。
【図１０】パケット長テーブルの例を示す図である。
【図１１】トンネルルータを含むネットワークの例を示す図である。
【図１２】通信装置１ａが通信装置１ｃにパケットを送信した場合に送受信されるパケットを示すシーケンス図の例である。
【図１３】テーブル更新部によって変更されたパケット長テーブルの例を示す図である。
【図１４】トンネルルータの動作の例を説明するフローチャートである。
【図１５】トンネルルータの動作の例を説明するフローチャートである。
【図１６】第３の実施形態で用いられるパケット長テーブルの例を示す図である。
【図１７】パケット長テーブルと経路テーブルを統合した場合のトンネルルータの機能構成の例を示す。
【図１８】パケット長テーブルと経路テーブルを統合されたテーブルの例を示す図である。
【図１９】トンネルルータの機能構成の例を表す図である。
【発明を実施するための形態】
【００１０】
図１は、実施形態に係る通信装置１０を含むネットワークの例を示す図である。図１に示すネットワークには、通信装置１０（１０ａ〜１０ｃ）、ルータ４、ネットワーク２（２ａ〜２ｃ）が含まれている。図１の例では、通信装置１０ａに１０．１．０．１、通信装置１０ｂに１０．２．０．１、通信装置１０ｃに１０．３．０．１のＩＰアドレスが割り当てられているものとする。また、通信装置１０ａが属するネットワーク２ａのプレフィックスは１０．１．０．０／１６であるものとする。さらに、ネットワーク２ｂのプレフィックスは１０．２．０．０／１６、ネットワーク２ｃのプレフィックスは１０．３．０．０／１６であるものとする。さらに、通信装置１０ｂはネットワーク２ｂに属し、通信装置１０ｃはネットワーク２ｃに属するものとする。また、各々のネットワーク２で送信可能なパケットの大きさ、すなわちＭＴＵ（Maximum Transfer Unit、ＭＴＵ）は、ネットワーク２ａと２ｂでは１５００バイト、ネットワーク２ｃでは１４００バイトであるものとする。
【００１１】
通信装置１０ａは、図２に示すようなパケット長テーブル２０を備える。パケット長テーブル２０には、パケットの宛先装置が属するネットワーク２のプレフィックスと、そのネットワーク２に到る通信経路上で送信可能なパケットの大きさ（ＰＭＴＵ）が対応付けて記憶されている。例えば、通信装置１０ｂが宛先装置の場合、ネットワーク２ａと２ｂのいずれもＭＴＵ＝１５００バイトである。このため、パケット長テーブル２０には、ネットワーク２ｂに対応付けてＰＭＴＵ＝１５００バイトが記録される。一方、通信装置１０ｃが宛先である場合、ネットワーク２ｃのＭＴＵが１４００バイトであるため、通信装置１０ａから通信装置１０ｃに向けたパケットの長さが１４００バイト以下でなければ、ネットワーク２ｃに送信されない。従って、ネットワーク２ｃに宛先装置が属する場合は、ＰＭＴＵ＝１４００バイトであることがパケット長テーブル２０に記録される。
【００１２】
このように、本実施形態では、宛先装置の属するネットワーク２ごとに、そのネットワーク２に到達できる通信経路上のパケット長の最大値が記憶される。従って、宛先装置ごとに１つのエントリを作成する場合に比べて、パケット長テーブル２０に含まれるエントリ数が減少する。このため、通信装置１０がＰＭＴＵを求めるために検索するエントリの数が少ない。すなわち、パケット長テーブル２０が用いられる通信装置１０では、通信装置１０が宛先装置に応じたＰＭＴＵを検索する時間が短縮される。
【００１３】
＜第１の実施形態＞
まず、第１の実施形態に係る通信装置１０について説明する。なお、以下の説明では、ルータ４でパケットの分割が行われないものとする。例えば、ＩＰｖ４パケットがルータ４で転送される場合、そのパケットのＩＰヘッダに含まれるＤｏｎ’ｔ  Ｆｒａｇｍｅｎｔａｔｉｏｎ  ｂｉｔは、ＯＮ（分割禁止）に設定されているものとする。なお、以下の説明で送受信されるパケットは、ＩＰｖ４パケットとすることができ、また、ＩＰｖ６パケットとすることもできるものとする。
【００１４】
図３は、通信装置１０の機能構成の例を示す図である。通信装置１０は、送信データバッファ１１、受信データバッファ１２、パケット化部１３、非パケット化部１４、テーブル更新部１５、ネットワークインタフェース１６、および、パケット長テーブル２０を有する。ここで、ネットワークインタフェース１６は、送信部１７と受信部１８を有する。
【００１５】
送信データバッファ１１には、宛先装置に送信されるデータが一時的に格納される。送信データバッファ１１に格納されたデータは、適宜、パケット化部１３に出力される。受信データバッファ１２は、受信部１８を介して受信されたパケットから得られたデータを格納する。受信データバッファ１２に記憶されたデータは、適宜、通信装置１０での処理に用いられる。
【００１６】
パケット化部１３は、送信データバッファ１１から入力されたデータをＰＭＴＵ以下の大きさのパケットにパケタイズする。パケット化部１３は、データの宛先アドレスをキーとしてパケット長テーブル２０を検索し、宛先アドレスに含まれるルーティングプレフィクスと一致するアドレスのネットワーク２に対応付けられているＰＭＴＵを取得する。パケット化部１３は、パケット長テーブル２０から取得したＰＭＴＵ以下の大きさになるようにデータをパケタイズする。パケット化部１３は、生成したパケットを送信部１７に出力する。
【００１７】
非パケット化部１４は、受信部１８を介して受信した受信パケットから、データを取得する。非パケット化部１４は、取得したデータを受信データバッファ１２に格納することができる。さらに、非パケット化部１４は、受信部１８で受信されたパケットが通知メッセージである場合、通知メッセージに含まれているデータをテーブル更新部１５に出力する。ここで、通知メッセージは、例えば、パケットの長さが宛先装置に向けて送信できるパケットの長さよりも長いこと、宛先装置に送信できる最大のパケット長である最大パケット長などの情報を通知するものとする。例えば、通知メッセージは、Internet Control Message Protocol（ＩＣＭＰ）エラーメッセージ、ＩＣＭＰｖ６エラーメッセージのうちの Packet too bigメッセージなどが用いられることがある。通知メッセージについては、後で詳しく説明する。テーブル更新部１５は、非パケット化部１４から入力されたデータに応じてパケット長テーブル２０を更新する。テーブル更新部１５の動作については、後で詳しく説明する。
【００１８】
図４は、通信装置１０のハードウェア構成の例を示す図である。通信装置１０は、ＣＰＵ３１、メモリ３２、入力装置３３、出力装置３４、バス３５、外部記憶装置３６、媒体駆動装置３７、ネットワーク接続装置３９を備える。ＣＰＵ３１は、パケット化部１３、非パケット化部１４、テーブル更新部１５として動作する。さらに、ＣＰＵ３１は、適宜、周辺機器を制御し、また、各種ソフトウェアを実行する。メモリ３２は、送信データバッファ１１、受信データバッファ１２として動作し、さらに、パケット長テーブル２０を格納する。また、メモリ３２は、適宜、ＣＰＵ３１での処理に用いられるデータやプログラムなどを格納する。入力装置３３は、例えばキーボードやマウスなどであり、ユーザは入力装置３３を用いて、通信装置１０にデータを入力できる。出力装置３４は、適宜、データ等を表示する。バス３５は、ＣＰＵ３１、メモリ３２、入力装置３３、出力装置３４、外部記憶装置３６、媒体駆動装置３７、ネットワーク接続装置３９などの間を相互にデータの受け渡しが行えるように接続する。外部記憶装置３６は、プログラムやデータなどを格納し、適宜、ＣＰＵ３１などに格納している情報を提供する。媒体駆動装置３７は、メモリ３２や外部記憶装置３６に格納されているデータを可搬記憶媒体３８に出力することができ、また、可搬記憶媒体３８からからプログラムやデータ等を読み出すこともできる。ここで、可搬記憶媒体３８は、フロッピイディスク、Magneto-Optical（ＭＯ）ディスク、Compact Disc Recordable（ＣＤ−Ｒ）やDigital Versatile Disk Recordable（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。ネットワーク接続装置３９は、ネットワークインタフェース１６として動作し、ネットワーク２との間でパケットの送受信などを行う。
【００１９】
次に、パケット長テーブル２０の生成方法について説明する。ここでは、図１に示したネットワークについて、通信装置１０ａが通信装置１０ｂと通信装置１０ｃとにパケットを送信することにより、図２に示すパケット長テーブル２０が生成される場合について説明する。また、以下の説明では、パケットの区別を容易にするために、パケットＰ１、パケットＰ２などのようにアルファベットと数字の組み合わせをパケットの識別子とする。
【００２０】
（１）通信装置１０ａは、図１に示すように、ＭＴＵ＝１５００バイトのネットワーク２ａに接続されている。すなわち、通信装置１０ａは、通信装置１０ａが属するネットワーク２ａに、パケット長が１５００バイトのパケットまで送信することができる。従って、通信装置１０ａに電源が投入されると、パケット長テーブル２０では、通信装置１０ａに接続されているネットワーク２のＭＴＵが通信装置１０からパケットを送信できるネットワーク２のＰＭＴＵの初期値に設定される。ここでは、図５に示すように、通信装置１０ａがパケットを送信することができる装置を含むネットワーク２のプレフィクスに対応付けて、ネットワーク２ａでのＭＴＵが記録される。
【００２１】
（２）通信装置１０ａが通信装置１０ｂにパケットＰ１を送信するとする。このとき、通信装置１０ａのパケット化部１３は、パケット長テーブル２０を参照してパケットＰ１のサイズを決定する。パケット化部１３は、宛先の通信装置１０ｂのアドレスをキーとしてパケット長テーブル２０を検索し、ネットワークプレフィックスが通信装置１０ｂのアドレスのルーティングプレフィクスと同じネットワーク２のエントリを検出する。図５に示すように、パケット長テーブル２０には、ネットワーク２ｂ（１０．２．０．０／１６）とネットワーク２ｃ（１０．３．０．０／１６）の２つのネットワークについてプレフィックスが記憶されている。通信装置１０ｂのアドレスは、１０．２．０．１であるので、通信装置１０ｂに宛てたパケットはネットワーク２ｂ（１０．２．０．０／１６）に送信される。従って、パケット化部１３は、検出したネットワーク２ｂのＰＭＴＵを用いてパケットを生成する。ここでは、通信装置１０ａのパケット化部１３は、１５００バイトのパケットＰ１を生成して、送信部１７に出力する。送信部１７は、パケットＰ１を通信装置１０ｂに向けて送信する。
【００２２】
（３）ルータ４は、通信装置１０ａから通信装置１０ｂに向けて送信されたパケットＰ１を受信すると、ルーティングテーブル（図示せず）を参照して、ネットワーク２ｂにパケットを転送する。ここで、ネットワーク２ｂのＭＴＵは１５００バイトであるため、ルータ４は、通信装置１０ａから受信したパケットＰ１をネットワーク２ｂに転送する。
【００２３】
（４）通信装置１０ｂは、通信装置１０ａから送信されたパケットＰ１を受信する。通信装置１０ａは、通信装置１０ｂに送信したパケットＰ１に関するエラーメッセージを受信しないため、テーブル更新部１５は、パケット長テーブル２０の記録を変更しない。
【００２４】
（５）次に、通信装置１０ａが通信装置１０ｃにパケットＰ２を送信する場合について述べる。パケット化部１３は、パケット長テーブル２０を用いて、手順（１）で述べた方法と同様に、通信装置１０ｃのアドレスをキーとしてパケット長テーブル２０を検索し、通信装置１０ｃがネットワーク２ｃに属することを検出する。この時点では、図５に示すように、ネットワーク２ｃに対応付けてＰＭＴＵ＝１５００バイトが記録されている。そこで、パケット化部１３は、通信装置１０ｃに送信するために１５００バイトのパケットＰ２を生成する。パケット化部１３で生成されたパケットＰ２が入力されると、送信部１７は、通信装置１０ｃに向けてパケットＰ２を送信する。
【００２５】
（６）ルータ４は、通信装置１０ｃに宛てたパケットＰ２を受信すると、ネットワーク２ｃに転送しようとする。しかし、ネットワーク２ｃのＭＴＵは１４００バイトであるため、ルータ４は、パケットＰ２をネットワーク２ｃに転送できない。そこで、ルータ４は、通信装置１０ａに対してパケットＰ２の転送に失敗したことを通知する通知メッセージを送信する。
【００２６】
図６は、通知メッセージの構成の例を示す図である。転送に失敗したパケットがＩＰｖ４パケットである場合、ルータ４は、通信装置１０ａに、図６（ａ）に示すＩＣＭＰエラーメッセージを送信する。ＩＣＭＰエラーメッセージは、図６（ａ）に示すようにMedia Access Control（ＭＡＣ）ヘッダ、ＩＰヘッダ、ＩＣＭＰヘッダ、および、データを含む。図６（ｂ）は、ＩＣＭＰエラーメッセージに含まれるＩＣＭＰヘッダとデータの例を示す図である。図６（ｂ）に示すＩＣＭＰヘッダは、ＩＰｖ４パケットの転送に失敗したことを通知する場合に用いられる。なお、図６（ｂ）に示すＩＣＭＰヘッダを備えたメッセージは、ＩＣＭＰ  Ｆｒａｇｍｅｎｔａｔｉｏｎ  Ｎｅｅｄｅｄ  ａｎｄ  ＤＦ  ｓｅｔメッセージと呼ばれることもある。
【００２７】
ＩＣＭＰヘッダには、Ｔｙｐｅフィールド、Ｃｏｄｅフィールド、チェックサムフィールド、Ｎｅｘｔ−Ｈｏｐ  ＭＴＵフィールドが含まれる。ルータ４から送信されるＩＣＭＰエラーメッセージでは、Ｔｙｐｅフィールドに３、Ｃｏｄｅフィールドに４が設定される。また、ｕｎｕｓｅｄフィールドは０に設定され、Ｎｅｘｔ−Ｈｏｐ  ＭＴＵフィールドには、ルータ４がパケットを転送しようとしたネットワーク２でのＭＴＵの値が格納される。この例では、ネットワーク２ｃのＭＴＵである１４００バイトが格納される。さらに、ＩＣＭＰエラーメッセージのＢｏｄｙには、転送に失敗したパケットのインターネットヘッダと先頭の６４ビットが含まれる。
【００２８】
ＩＣＭＰエラーメッセージのＩＰヘッダ中の宛先ＩＰアドレスには通信装置１０ａのＩＰアドレスが設定され、ルータ４から通信装置１０ａにＩＣＭＰエラーメッセージが送信される。
【００２９】
（７）通信装置１０ａは、受信部１８でＩＣＭＰエラーメッセージを受信する。受信部１８は、ＩＣＭＰエラーメッセージを非パケット化部１４に出力し、非パケット化部１４は、ＩＣＭＰエラーメッセージから得られた情報をテーブル更新部１５に出力する。ＩＣＭＰエラーメッセージには、送信に失敗したパケットのＩＰヘッダが含まれているので、非パケット化部１４は、送信に失敗したパケットの宛先ＩＰアドレスを取得することができる。テーブル更新部１５は、非パケット化部１４から入力された情報により、通信装置１０ｃに向けたパケットＰ２の送信に失敗したことを認識する。さらに、Ｎｅｘｔ−Ｈｏｐ  ＭＴＵフィールドに記録された値から、宛先の通信装置１０ｃに向けて送信できるパケット長の最大値（ＰＭＴＵ）は１４００バイトであることを認識する。
【００３０】
（８）テーブル更新部１５は、パケットＰ２の宛先ＩＰアドレスを用いて、通信装置１０ｃが属するネットワークに対応付けられたエントリを検索する。テーブル更新部１５は、通信装置１０ｃのアドレス１０．３．０．１／１６を用いてパケット長テーブル２０を検索することにより、通信装置１０ｃがネットワーク２ｃ（１０．３．０．０／１６）に含まれることを認識する。次に、テーブル更新部１５は、ネットワーク２ｃに対応付けられたＰＭＴＵを１４００バイトに変更する。変更後のパケット長テーブル２０は、図２に示すとおりである。
【００３１】
（９）テーブル更新部１５は、パケット長テーブル２０を変更すると、パケット化部１３にパケットＰ２の再送を要求する。以下の記載では、パケットＰ２の再送パケットをパケットＰ３と記載する。なお、テーブル更新部１５は、パケット長テーブル２０を変更したこともパケット化部１３に通知することもできる。
【００３２】
（１０）パケット化部１３は、手順（５）と同様に、通信装置１０ｃに送信するためのパケットＰ３のＰＭＴＵをパケット長テーブル２０から取得する。手順（９）でパケット長テーブル２０が変更されているため、ここでは、ネットワーク２ｃに１４００バイトが対応付けられている。そこで、パケット化部１３は、１４００バイト以下のパケットＰ３を生成して、送信部１７に出力する。送信部１７は、パケットを通信装置１０ｃに向けて送信する。
【００３３】
（１１）ルータ４は、通信装置１０ａから通信装置１０ｃ宛てのパケットＰ３を受信する。パケットＰ３は１４００バイト以下であるので、ルータ４は、パケットＰ３をネットワーク２ｃに転送することができる。
（１２）通信装置１０ｃは、ネットワーク２ｃを介してパケットＰ３を受信する。
【００３４】
このように、パケット長テーブル２０を備える通信装置１０は、宛先の通信装置１０が属するネットワークごとにＰＭＴＵの値を記憶することができる。このため、通信装置１０ごとにＰＭＴＵが記録される場合に比べてパケット長テーブル２０の容量が小さくなる。また、送信元の通信装置１０から宛先の通信装置１０に送信するパケットの大きさはパケット長テーブル２０を参照して決定されるので、１つのパケットの送信に成功すると、以後のパケットについては送信可能なパケット長に設定することができる。
【００３５】
なお、以上の説明では、例としてＩＰｖ４のパケットが送受信される場合について説明したが、ＩＰｖ６のパケットが送受信されるネットワークでもパケット長テーブル２０やテーブル更新部１５などを備える通信装置１０を用いることができる。ただし、ＩＰｖ６パケットが送受信される場合、転送に失敗したときにルータ４が生成するメッセージがＩＣＭＰｖ６エラーメッセージに変更される。図６（ｃ）は、ＩＣＭＰｖ６エラーメッセージに含まれるＩＣＭＰヘッダとボディの例を示す。ＩＣＭＰｖ６エラーメッセージのＩＣＭＰヘッダには、Ｔｙｐｅフィールド、Ｃｏｄｅフィールド、チェックサムフィールド、ＭＴＵフィールドが含まれる。パケットの送信の失敗を通知するＩＣＭＰｖ６エラーメッセージでは、Ｔｙｐｅフィールドに２、Ｃｏｄｅフィールドに０が設定されている。また、ＭＴＵフィールドには、ルータ４がパケットを転送しようとしたネットワーク２でのＭＴＵの値が格納される。さらに、ボディには、送信に失敗したパケットのＩＰヘッダとデータの一部が含まれる。ＩＣＭＰｖ６エラーメッセージが通信装置１０ａの受信部１８で受信されると、手順（７）〜（１２）で説明した処理と同様の処理が行われる。
【００３６】
図７は、通信装置１０の動作の例を説明するフローチャートである。図７（ａ）は、通信装置１０の初期化の際に行われる動作を説明するフローチャートである。通信装置１０に電源が投入されると、テーブル更新部１５は、パケット長テーブル２０を初期化する（ステップＳ１、Ｓ２）。すなわち、テーブル更新部１５は、通信装置１０が接続されているネットワークのＭＴＵをＰＭＴＵとして、ルーティングテーブルに記録されている全てのプレフィックスに対応付けてパケット長テーブル２０に記録する。
【００３７】
図７（ｂ）は、初期化が終了した後で、通信装置１０がパケットを受信したときの動作の例を説明するフローチャートである。初期化が終了すると、受信部１８はパケットを受信するまで待機する（ステップＳ１１）。受信部１８は、パケットを受信すると非パケット化部１４に出力する。非パケット化部１４は、入力されたパケットが通知メッセージであるかを確認する（ステップＳ１２）。入力されたパケットが通知メッセージである場合、非パケット化部１４は、通知メッセージに含まれているデータをテーブル更新部１５に出力する。テーブル更新部１５は、非パケット化部１４から入力されたデータを用いてパケット長テーブル２０を更新する（ステップＳ１３）。その後、ステップＳ１１以降の処理が繰り返される。一方、非パケット化部１４に通知パケットではないパケットが入力された場合、非パケット化部１４は、パケットに含まれているデータを受信データバッファ１２に出力する。そこで、通信装置１０は、適宜、受信データバッファ１２に格納されたデータを処理する（ステップＳ１４）。その後、ステップＳ１１以降の処理が繰り返される。
【００３８】
図８は、通信装置１０の動作の例を説明するフローチャートである。図８（ａ）は、初期化が終了した後で、通信装置１０がパケットを送信するときの動作の例を説明するフローチャートである。パケット化部１３は、パケットの送信の指示を受けるまで待機する（ステップＳ２１）。ユーザの操作などによりパケット送信の指示を受けると、パケット化部１３は、送信先のＩＰアドレスをキーとしてパケット長テーブル２０を検索し、宛先の通信装置１０を含むネットワークのプレフィックスに対応付けて記録されているＰＭＴＵを求める（ステップＳ２２）。パケット化部１３は、送信データバッファ１１からデータを取得し、ステップＳ２２で取得したＰＭＴＵを用いて、送信パケットを生成する（ステップＳ２３）。パケット化部１３は、生成したパケットを送信部１７に出力すると、送信部１７は、宛先に向けてパケットを送信する（ステップＳ２４）。その後、ステップＳ２０〜Ｓ２４の処理が繰り返される。
【００３９】
図８（ｂ）は、パケット長テーブル２０の管理方法の例を説明する。テーブル更新部１５は、タイマ（図示せず）から時刻情報を取得する。ここで、タイマはパケット長テーブル２０が初期化されたときに初期化されるものとし、タイマの値は、最後にパケット長テーブル２０が初期化されてから経過した時間を示すものとする。テーブル更新部１５は、タイマの値が予め決められた時間（ｎ時間）を経過したかを確認する（ステップＳ３１）。ここで、予め決められた時間は、任意の長さであり、ｎは任意の正の数とする。テーブル更新部１５は、タイマの時刻情報がｎ時間になると、パケット長テーブル２０を初期化する（ステップＳ３２）。初期化の方法は、ステップＳ２と同様である。ステップＳ３１とＳ３２の処理は、通信装置１０の電源が切られるまで繰り返される。
【００４０】
本実施形態にかかる通信装置１０では、ネットワーク２ごとにＰＭＴＵがパケット長テーブル２０中に記録される。このため、通信装置１０の通信先となる通信装置１０の数が増大しても、宛先ごとにＰＭＴＵを記録している装置に比べて、ＰＭＴＵを記録するテーブル中のエントリの数は少ない。従って、通信装置１０では、宛先の通信装置１０ごとにＰＭＴＵを記録している装置に比べて、ＰＭＴＵの検索にかかる時間が短くなる。ＰＭＴＵの検索は、サーバがパケットを送信する度に行われるため、検索時間の短縮は、通信装置１０の通信性能の改善につながる。また、ＰＭＴＵを用いて通信が行われるので、本実施形態では、ＰＭＴＵよりも小さなパケット長で通信が行われる場合よりも通信効率が良好になる。
【００４１】
例えば、１００万台のクライアントにサービスを提供するサーバからデータが送信されるとする。また、ここでは、１００万台のクライアントが１００のネットワーク２に収容されているとする。この場合、もし、クライアントごとにエントリが作成されてＰＭＴＵが記憶されていると、サーバは、１００万のエントリから送信先のクライアントに関するエントリを検索してＰＭＴＵを取得することになる。エントリ数が大きくなると、１回の検索にかかる時間が長くなる上に、ＰＭＴＵの検索はサーバがパケットを送信する度に行われるため、検索時間の増加は、パケット通信性能の劣化を引き起こしてしまう。一方、第１の実施形態にかかる通信装置１０では、１００万台のクライアントが１００のネットワーク２に収容されていることから、パケット長テーブル２０には１００しかエントリを作成しない。従って、通信装置１０がクライアントにデータを送信しようとする場合は、パケット長テーブル２０に含まれている１００のエントリから宛先のクライアントへの送信に用いられるＰＭＴＵを検索することができる。従って、通信装置１０は、クライアントごとにＰＭＴＵを記憶している装置に比べて、パケットの宛先のクライアントに対するＰＭＴＵを早く検索することができる。結果として、通信装置１０の通信性能は、クライアントごとにＰＭＴＵを記憶している装置よりも改善される。
【００４２】
メモリ容量の削減量や検索速度の改善の程度について、図１のネットワークの場合について述べる。図１に示したネットワークには、３個の／１６のネットワークが含まれている。１個の／１６のネットワークには、最大約６．５万台のホストが存在し得る。このため、宛先装置別にＰＭＴＵが記憶される場合、最大で、１３万台の通信装置についてのＰＭＴＵが記憶されることになる。ここで、１エントリには、３２ビットのＩＰアドレスが用いられるので、ＰＭＴＵ長に８ビットを割り当てた場合、１つのエントリ当り４０ビット（５バイト）となる。そこで、約１３万台分のテーブルを保持するには、６５万バイトのメモリが用いられる。しかし、通信装置１０はパケット長テーブル２０を用いてネットワークごとにＰＭＴＵを記憶するので、記憶するエントリは２つである。
【００４３】
ＩＰｖ４のインターネットには、２の３２乗（約４．３億台）の通信装置が存在し得る。この場合に全ての通信装置までのＰＭＴＵを記録するテーブルを生成すると、そのテーブルのサイズは、約２０Ｇバイトとなる。一方、インターネットのフルルート数（経路数）は数十万であるため、通信装置１０は、２０〜３０万エントリを記憶すればよい。つまり、通信装置１０は、インターネット全体の装置についてＰＭＴＵを記憶する場合でも、宛先ごとにＰＭＴＵを記憶する場合に比べて、１４００〜２１００分の１のデータを記憶すればよい。検索速度で見れば、通信装置１０は、宛先ごとにＰＭＴＵを記憶する通信装置に比べて、１４００〜２１００倍もＰＭＴＵの検索速度を短縮でき、通信性能を向上できる。
【００４４】
なお、第１の実施形態では、分かりやすくするために図１のようなネットワークでの通信を例としたが、データの送受信を行う通信装置１０同士を結ぶ経路に含まれるルータ４の数は任意に変更される場合がある。この場合、テーブル更新部１５は、ＩＭＣＰエラーメッセージなどの通知メッセージを受信するたびに、送信元の通信装置１０から宛先の通信装置１０に到達するまでに含まれるネットワーク２でのＰＭＴＵの最小値を更新する。
【００４５】
＜第２の実施形態＞
第２の実施形態では、ネットワーク２ごとにＰＭＴＵを記憶するトンネルルータ４０について説明する。トンネルルータ４０を介してパケットを送受信する通信装置は、通信装置１０であっても良く、また、パケット長テーブル２０を備えない任意の通信装置１であっても良い。以下の説明では、通信装置１がトンネルルータ４０を介してパケットを送受信している場合を例として説明する。
【００４６】
トンネルルータ４０では、パケットの転送先に応じてカプセル化やデカプセル化が行われる。カプセル化では、パケットに新たなヘッダが付加される。カプセル化によって付加されるヘッダは、例えば、ＩＰｖ４ヘッダやＩＰｖ６ヘッダとすることができる。一方、デカプセル化では、カプセル化の際に付加されたヘッダが、パケットから除去される。以下の説明では、カプセル化される前のパケットのヘッダを「インナーヘッダ」、カプセル化によって付加されたヘッダを「アウターヘッダ」と記載するものとする。
【００４７】
カプセル化されると、パケットの長さは付加されたアウターヘッダの分だけ長くなる。例えば、アウターヘッダがＩＰｖ４ヘッダである場合、カプセル化後のパケットはカプセル化の前に比べて２０バイト以上長くなる。同様に、アウターヘッダがＩＰｖ６ヘッダである場合は、パケットの長さが４０バイト以上長くなる。このため、カプセル化の対象となるパケットは、カプセル化されたパケットが転送されるネットワークのＭＴＵよりも、カプセル化で付加されるアウターヘッダの長さ分短い場合に、宛先装置に向けて転送される。第２の実施形態に係るトンネルルータ４０は、カプセル化されたパケットが転送される宛先ネットワークまで通信系路上で送信可能なパケットの大きさの最大値であるＰＭＴＵからアウターヘッダの長さを引いた値を、宛先ネットワークごとに記憶する。なお、カプセル化されたパケットが転送される宛先のネットワークまでのＰＭＴＵからアウターヘッダの長さを引いた値を、以下の説明では、「トンネルＰＭＴＵ」（Tunnel Path Maximum Transfer Unit）と記載することがある。後述するように、トンネルルータ４０は、パケットをカプセル化する前に、カプセル化の対象となるパケットの長さとトンネルＰＭＴＵを比較することにより、カプセル化後のパケットを送信先のネットワーク２に送信できるかを確認する。
【００４８】
図９は、トンネルルータ４０の機能構成の例を示す図である。トンネルルータ４０は、ネットワークインタフェース（４１、５４）、ルーティング部（４４、５１）、パケット長テーブル４７、経路テーブル（４８、５５）、カプセル化部４９、通知メッセージ生成部５０、受信パケット処理部５６、テーブル更新部５７、デカプセル化部５８を備える。ネットワークインタフェース４１は、受信部４２と送信部４３を有する。ネットワークインタフェース５４は、受信部５２と送信部５３を有する。ルーティング部４４は、転送先決定部４５と判定部４６を有する。以下の例では、ネットワークインタフェース４１、ルーティング部４４、経路テーブル４８は、インナーヘッダによるルーティングに用いられるものとする。一方、ルーティング部５１、ネットワークインタフェース５４、経路テーブル５５は、アウターヘッダによるルーティングに用いられる。
【００４９】
以下の説明では、経路テーブル４８、５５には、宛先ネットワークごとに、転送先のルータのアドレス、転送先のネットワークに関する情報などが記録されているものとする。なお、転送先のネットワークに関する情報には、転送先のネットワークで用いられているプロトコルの情報など、そのネットワークに転送されるパケットをカプセル化するかをルーティング部４４が判定する際に用いられる情報が含まれているものとする。
【００５０】
ネットワークインタフェース４１は、受信部４２と送信部４３を有する。受信部４２は、カプセル化される前のパケットを受信し、ルーティング部４４に出力する。送信部４３は、トンネルルータ４０が受信したパケットのうちでトンネルルータ４０によってカプセル化されずに転送されるパケットを、ルーティング部４４から指定された転送先に出力する。また、送信部４３は、トンネルルータ４０に接続されている通信装置１などにパケットを送信する。
【００５１】
転送先決定部４５は、受信部４２から入力されたパケットのヘッダ（インナーヘッダ）を確認し、パケットの宛先アドレスを取得する。また、後述するように、通知メッセージ生成部５０から通知メッセージが入力された場合も、転送先決定部４５は、同様に、パケットの宛先アドレスを取得する。転送先決定部４５は、得られた宛先アドレスをキーとして経路テーブル４８を検索する。転送先決定部４５は、受信部４２から入力されたパケットを転送するルータのアドレス、および、転送先のネットワーク情報を、経路テーブル４８から取得する。また、転送先決定部４５は、取得した情報を判定部４６に通知することができる。
【００５２】
判定部４６は、転送先のネットワーク情報に基づいて、パケットをカプセル化するかを決定する。パケットがカプセル化の対象でない場合、判定部４６は、パケット長テーブル４７を参照して、宛先ネットワークまでの通信経路に対するトンネルＰＭＴＵを取得する。カプセル化の対象ではないパケットの長さが取得したトンネルＰＭＴＵ以下であれば、判定部４６は、そのパケットを送信部４３に出力すると共に、送信部４３に転送先を通知する。
【００５３】
一方、パケットがカプセル化の対象である場合、判定部４６は、パケット長テーブル４７を参照して、宛先ネットワークまでの通信経路に対するトンネルＰＭＴＵを取得する。パケット長テーブル４７の例を図１０に示す。判定部４６は、カプセル化の対象のパケットの長さを、トンネルＰＭＴＵと比較する。カプセル化されるパケットの長さがトンネルＰＭＴＵ以下の場合、トンネルルータ４０は、カプセル化後のパケットを転送先のネットワークに送信することができる。そこで、カプセル化されるパケットの長さがトンネルＰＭＴＵ以下である場合、判定部４６は、カプセル化されるパケットをカプセル化部４９に出力する。この場合、転送先決定部４５は、カプセル化部４９に対し、カプセル化後のパケットの転送先、転送先のネットワークのトンネルＰＭＴＵなどの情報を出力する。カプセル化部４９は、予め、パケットに付加されるアウターヘッダの種類を記憶しているものとする。カプセル化部４９は、ルーティング部４４から入力されたパケットにアウターヘッダを付加してルーティング部５１に出力する。
【００５４】
一方、カプセル化されるパケットの長さがトンネルＰＭＴＵより長い場合、トンネルルータ４０は、カプセル化した後のパケットを転送先のネットワークに送信できない。この場合、判定部４６は、カプセル化後のパケットを転送できないことと、転送先のネットワーク２のトンネルＰＭＴＵを、通知メッセージ生成部５０に通知する。また、判定部４６は、ルーティング部４４から入力されたパケットも、通知メッセージ生成部５０に出力する。
【００５５】
通知メッセージ生成部５０は、カプセル化後のパケットを転送できないことが通知されると、通知メッセージを生成する。通知メッセージは、例えば、ＩＣＭＰエラーメッセージ、Packet too bigメッセージなどであり、図６を参照しながら述べたような情報要素を備える。なお、通知メッセージのタイプフィールド、コードフィールド、チェックサムフィールドなどに設定される値は、予め、通知メッセージ生成部５０が記憶しているものとする。通知メッセージ生成部５０は、カプセル化部４９から入力されたパケットに含まれるＩＰヘッダとパケット中のデータの一部を、ＭＴＵの値と共に、通知メッセージに含める。なお、判定部４６から通知されたトンネルＰＭＴＵの値がＭＴＵに設定される。さらに、通知メッセージ生成部５０は、通知メッセージを生成したパケットの送信元ＩＰアドレスを取得し、取得した送信元ＩＰアドレスを通知メッセージの宛先とする。通知メッセージ生成部５０は、生成した通知メッセージをルーティング部４４に出力する。
【００５６】
カプセル化部４９からパケットが入力されると、ルーティング部５１は、カプセル化されたパケットのアウターヘッダを参照して、宛先アドレスを取得する。ルーティング部５１は、経路テーブル５５を参照してパケットの転送先を取得する。また、ルーティング部５１は、受信部５２から入力されたパケットについても、アウターヘッダに記載されている宛先と経路テーブル５５を参照して、転送先のネットワークなどの情報を取得する。ルーティング部５１は、カプセル化部４９から入力されたパケットや他のネットワークに転送するパケットを送信部５３に出力し、転送先のネットワークの情報等を通知する。
【００５７】
一方、受信部５２から入力されたパケットのアウターヘッダ中の宛先アドレスが、そのパケットを受信したトンネルルータ４０のアドレスである場合、ルーティング部５１は、パケットを受信パケット処理部５６に出力する。受信パケット処理部５６は、ルーティング部５１から入力されたパケットが通知メッセージのパケットであるかを確認する。受信パケット処理部５６は、通知メッセージをテーブル更新部５７に出力する。さらに、受信パケット処理部５６は、通知メッセージではないパケットを、デカプセル化部５８に出力する。
【００５８】
テーブル更新部５７は、ＩＭＣＰエラーメッセージなどの通知メッセージから、ＭＴＵの値と送信に失敗したパケットの宛先ＩＰアドレスを取得する。テーブル更新部５７は、取得したＩＰアドレスとパケット長テーブル４７に記録されているプレフィックスを比較し、送信に失敗したパケットの宛先ＩＰアドレスのプレフィックスに対応付けられているエントリを検出する。テーブル更新部５７は、検出したエントリに記録されているトンネルＰＭＴＵの値を、通知メッセージから取得したＭＴＵの値で変更する。テーブル更新部５７の動作の例については、後述する。デカプセル化部５８は、受信パケット処理部５６から入力されたパケットからアウターヘッダを除去する。デカプセル化部５８は、アウターヘッダを除去したパケットをルーティング部４４に出力する。
【００５９】
トンネルルータ４０は、メモリ、プロセッサ、および、スイッチ（図示せず）を有しているものとする。メモリは、パケット長テーブル４７、経路テーブル４８、経路テーブル５５を格納する。プロセッサは、通知メッセージ生成部５０、受信パケット処理部５６、テーブル更新部５７として動作する。スイッチは、ルーティング部４４やルーティング部５１として動作する。カプセル化部４９とデカプセル化部５８は、チップなどのハードウェアにより実現される場合がある。
【００６０】
図１１は、トンネルルータ４０を含むネットワークの例を示す図である。図１１に示すネットワークには、通信装置１（１ａ〜１ｃ）、トンネルルータ４０（４０ａ〜４０ｃ）、ルータ４、ネットワーク２（２ｄ〜２ｉ）が含まれている。図１１の例では、通信装置１のＩＰアドレスと、ネットワーク２ｄ、２ｈ、２ｉのプレフィックスは以下のとおりであるものとする。
通信装置１ａのＩＰアドレス        ：  １０．１．０．１
通信装置１ｂのＩＰアドレス        ：  １０．２．０．１
通信装置１ｃのＩＰアドレス        ：  １０．３．０．１
ネットワーク２ｄのプレフィックス  ：  １０．１．０．０／１６
ネットワーク２ｈのプレフィックス  ：  １０．２．０．０／１６
ネットワーク２ｉのプレフィックス  ：  １０．３．０．０／１６
【００６１】
図１１の例では、通信装置１ａはネットワーク２ｄ、通信装置１ｂはネットワーク２ｈ、通信装置１ｃはネットワーク２ｉに属するものとする。また、トンネルルータ４０ａは、ネットワーク２ｄ、２ｅに接続されている。また、トンネルルータ４０ｂは、ネットワーク２ｆ、２ｈに、トンネルルータ４０ｃは、ネットワーク２ｇ、２ｉに接続されている。さらに、ルータ４は、ネットワーク２ｅ、２ｆ、２ｇに接続されている。以下、図１１に示すネットワークで通信装置１ａが通信装置１ｃにパケットを送信することにより、図１０に示すパケット長テーブル２０が変更される場合について説明する。トンネルルータ４０ａでは、ＩＰｖ４  ｏｖｅｒ  ＩＰｖ６のカプセル化が行われるものとする。また、以下の説明では、パケット化部１３で生成されたパケットの区別を容易にするために、パケットＰ１１、パケットＰ１２などのようにＰと数字の組み合わせを用いる。
【００６２】
図１２は、通信装置１ａが通信装置１ｃにパケットを送信した場合に送受信されるパケットを示すシーケンス図の例である。なお、図１２中の数字は以下の説明の手順の番号を表す。また、図１２の例では、通知メッセージは、ＩＣＭＰエラーメッセージであるものとする。
【００６３】
（１）トンネルルータ４０ａは、図１１に示すように、ＭＴＵ＝１５００バイトのネットワーク２ｅに接続されている。トンネルルータ４０ａが起動されると、テーブル更新部５７は、ネットワーク２ｅのＭＴＵを用いてパケット長テーブル４７の初期値を設定する。ここでは、トンネルルータ４０ａは、ネットワーク２ｅに転送するパケットにＩＰｖ４  ｏｖｅｒ  ＩＰｖ６のカプセル化を行うために、４０バイトのＩＰｖ６ヘッダをアウターヘッダとして付加するものとする。すると、カプセル化後のパケットがネットワーク２ｅに転送されるには、カプセル化前のパケットが１５００−４０＝１４６０（バイト）以下であればよい。また、１０．２．０．０／１６と１０．３．０．０／１６のいずれのネットワークに含まれる装置を宛先とするパケットも、トンネルルータ４０ａからネットワーク２ｅに転送される。そこで、テーブル更新部５７は、図１０に示すパケット長テーブル４７を生成する。
【００６４】
（２）通信装置１ａが通信装置１ｃにパケットＰ１１を送信するとする。このとき、通信装置１ａは、通信装置１ａが接続されているネットワーク２のＭＴＵの長さにあわせて生成したパケットを送信する。通信装置１ａは、ネットワーク２ｄに接続されており、ネットワーク２ｄのＭＴＵは１５００バイトであるので、通信装置１ａは、１５００バイトのパケットを通信装置１ｃに宛てて送信する。なお、通信装置１ａはＩＰｖ４を用いて通信を行い、パケットＰ１１はＩＰｖ４ヘッダを備えたパケットであるとする。
【００６５】
（３）トンネルルータ４０ａは、受信部４２からパケットＰ１１を受信する。受信部４２は、パケットＰ１１を転送先決定部４５と判定部４６に出力する。転送先決定部４５は、パケットＰ１１のＩＰヘッダから宛先アドレスを取得し、経路テーブル４８を参照して、パケットＰ１１の転送先がネットワーク２ｅであることを認識する。
【００６６】
（４）判定部４６は、転送先のネットワークに関する情報を参照して、ネットワーク２ｅでは、ＩＰｖ６を用いた通信が行われることを認識する。パケットＰ１１がＩＰｖ４のパケットであり、さらに、パケットＰ１１の転送先のネットワーク２ではＩＰｖ６による通信が行われるため、判定部４６は、パケットＰ１１がＩＰｖ４  ｏｖｅｒ  ＩＰｖ６のカプセル化の対象であると判定する。
【００６７】
（５）次に、判定部４６は、パケット長テーブル４７を参照して通信装置１ｃの属するネットワーク２に送信するために用いられるトンネルＰＭＴＵを取得する。図１０に示すとおり、この時点では、通信装置１ｃの属するネットワーク２に対応付けられたトンネルＰＭＴＵは１４６０バイトであるものとする。判定部４６は、パケットＰ１１のパケット長を、取得したトンネルＰＭＴＵと比較する。パケットＰ１１は１５００バイトであり、パケットＰ１１のほうがトンネルＰＭＴＵよりも長いので、トンネルルータ４０ａは、パケットＰ１１をカプセル化しても転送先のネットワーク２ｅに送信することはできない。そこで、判定部４６は、パケットＰ１１とネットワーク２ｅのＭＴＵの値を通知メッセージ生成部５０に出力して、通知メッセージの生成を要求する。
【００６８】
（６）通知メッセージ生成部５０は、通知メッセージＮ１を生成し、ルーティング部４４を介して送信部４３に出力する。送信部４３は、通知メッセージＮ１を通信装置１ａに送信する。
【００６９】
（７）通信装置１ａは、通知メッセージＮ１を受信すると、１４６０バイトのパケットであれば通信装置１ｃに送信できると認識する。そこで、通信装置１ｃあてのパケットＰ１２のサイズを１４６０バイトにして、再度、通信装置１ｃに向けて送信する。
【００７０】
（８）トンネルルータ４０ａは、パケットＰ１２を受信すると、パケットＰ１２について手順（３）、（４）で述べた処理を行う。次に、判定部４６は、パケットＰ１２のパケット長とトンネルＰＭＴＵの値を比較する。ここでは、パケットＰ１２のパケット長とトンネルＰＭＴＵの値が等しいので、パケットＰ１２をカプセル化部４９に出力する。カプセル化部４９は、パケットＰ１２にＩＰｖ６ヘッダを付加する。カプセル化されたパケットＰ１２は、ルーティング部５１と送信部５３を介して、ネットワーク２ｅに転送される。
【００７１】
（９）ルータ４は、カプセル化されたパケットＰ１２を受信すると、アウターヘッダに含まれている宛先アドレスとルータ４が記憶しているルーティングテーブルに基づいて、転送先のネットワーク２を決定する。カプセル化されたパケットＰ１２の転送先は、ネットワーク２ｇである。次に、ルータ４は、カプセル化されたパケットＰ１２の長さを、ネットワーク２ｇのＭＴＵと比較する。カプセル化されたパケットＰ１２は１５００バイトであるのに対し、図１１に示すように、ネットワーク２ｇのＭＴＵは１４００バイトである。そこで、ルータ４は、カプセル化されたパケットＰ１２を転送することができないので、ＩＣＭＰエラーメッセージを生成して、ＭＴＵが１４００バイトであることを、トンネルルータ４０ｂに通知する。
【００７２】
（１０）トンネルルータ４０ａは、受信部５２でＩＣＭＰエラーメッセージを受信する。受信部５２は、ＩＣＭＰエラーメッセージをルーティング部５１に出力する。ＩＣＭＰエラーメッセージの宛先アドレスはトンネルルータ４０ａであるので、ルーティング部５１は、ＩＣＭＰエラーメッセージを受信パケット処理部５６に出力する。受信パケット処理部５６は、入力されたパケットがＩＣＭＰエラーメッセージであるので、ＩＣＭＰエラーメッセージをテーブル更新部５７に出力する。
【００７３】
（１１）テーブル更新部５７は、ＩＣＭＰエラーメッセージから、送信に失敗したパケットの宛先ＩＰアドレスとＭＴＵの値を取得する。ここでは、通信装置１ｃのＩＰアドレス１０．３．０．１／１６であることと、通信装置１ｃまでの経路に含まれるネットワーク２ではＭＴＵが１４００バイト以下であることを認識する。次に、テーブル更新部５７は、ＩＣＭＰエラーメッセージに含まれているＭＴＵからアウターヘッダの長さを差し引いて、トンネルＰＭＴＵの長さを求める。ここでは、アウターヘッダが４０バイトであるので、トンネルＰＭＴＵは、１４００−４０＝１３６０バイトである。テーブル更新部５７は、求めたトンネルＰＭＴＵの長さを、パケット長テーブル４７に記録する。テーブル更新部５７によって変更されたパケット長テーブル４７の例を図１３に示す。
【００７４】
（１２）トンネルルータ４０は、パケット長テーブル４７を変更しても、パケットの送信元の通信装置１ａにはトンネルＰＭＴＵを通知しない。従って、通信装置１ａは、パケットＰ１２の送信時刻から一定の時間内に、パケットＰ１２に対するＡｃｋメッセージを受信できない場合、パケットＰ１２が通信装置１０ｃに到達できなかったと判断する。すると、通信装置１ａは、パケットＰ１２の再送パケットであるパケットＰ１３を生成し、通信装置１ｃに向けて再送する。ここで、図１２に示すように、通信装置１ａは、ＩＣＭＰエラーメッセージなどの通知メッセージを受信していないので、通信装置１ｃに送信可能なＰＭＴＵの値を変更していない。従って、パケットＰ１３は、パケットＰ１２と同じように、１４６０バイトで生成される。
【００７５】
（１３）トンネルルータ４０ａは、通信装置１ａからパケットＰ１３を受信すると、手順（３）、（４）で説明したように、パケットＰ１３を処理し、カプセル化の対象であると判断する。さらに、判定部４６は、パケット長テーブル４７を参照して通信装置１ｃの属するネットワーク２に送信するために用いられるトンネルＰＭＴＵが１３６０バイトであることを認識する。判定部４６は、パケットＰ１３のパケット長（１４６０バイト）は、トンネルＰＭＴＵよりも長いので、通知メッセージ生成部５０に、通知メッセージの生成を要求する。
【００７６】
（１４）通知メッセージ生成部５０は、通知メッセージＮ２を生成し、ルーティング部４４を介して送信部４３に出力する。送信部４３は、通知メッセージＮ２を通信装置１ａに送信する。ここで、通知メッセージＮ２には、ＭＴＵとして、トンネルＭＴＵが１３６０バイトであることが記録されている。
【００７７】
（１５）通信装置１ａは、通知メッセージＮ２を受信すると、１３６０バイトのパケットであれば通信装置１ｃに送信できると認識する。そこで、通信装置１ｃあてのパケットＰ１４のサイズを１３６０バイトにして、再度、通信装置１ｃに向けて送信する。
【００７８】
（１６）トンネルルータ４０ａは、パケットＰ１４を受信すると、パケットＰ１４について手順（３）、（４）で述べた処理を行う。次に、判定部４６は、パケットＰ１４のパケット長とトンネルＰＭＴＵの値を比較する。ここでは、パケットＰ１４のパケット長とトンネルＰＭＴＵの値が等しいので、パケットＰ１４をカプセル化部４９に出力する。カプセル化部４９は、パケットＰ１４にＩＰｖ６ヘッダを付加する。カプセル化されたパケットＰ１２は、ルーティング部５１と送信部５３を介して、ネットワーク２ｅに転送される。
【００７９】
（１７）ルータ４は、カプセル化されたパケットＰ１４を受信すると、手順（９）に記載したように転送先のネットワーク２がネットワーク２ｇであることを認識する。また、ルータ４は、カプセル化されたパケットＰ１４の長さが、ネットワーク２ｇのＭＴＵ以下であることを確認して、パケットＰ１４をネットワーク２ｇに転送する。
【００８０】
（１８）トンネルルータ４０ｃは、カプセル化されたパケットＰ１４を受信部５２から受信する。受信部５２は、カプセル化されたパケットＰ１４をルーティング部５１に出力する。アウターヘッダの宛先アドレスはトンネルルータ４０ｃであるので、ルーティング部５１は、カプセル化されたパケットＰ１４を受信パケット処理部５６に出力する。受信パケット処理部５６は、入力されたパケットが通知メッセージではないので、そのパケットをデカプセル化部５８に出力する。デカプセル化部５８は、受信パケット処理部５６から入力されたパケットをデカプセル化してパケットＰ１４をルーティング部４４に出力する。ルーティング部４４は、パケットＰ１４のＩＰｖ４ヘッダ中のＩＰアドレス１０．３．０．１／１６を取得する。トンネルルータ４０ｃはアドレスが１０．３．０．０／１６であるネットワーク２ｉに接続しているので、トンネルルータ４０ｃは、ネットワーク２ｉ中の通信装置１ｃにパケットＰ１４を送信する。
（１９）通信装置１ｃは、パケットＰ１４を受信する。
【００８１】
図１４はトンネルルータ４０の動作の例を説明するフローチャートである。図１４は、トンネルルータ４０がバックボーンネットワーク側からパケットを受信し、スタブネットワークにパケットを転送する場合の動作を表している。図１１の例では、トンネルルータ４０ａにとって、バックボーンネットワーク側はネットワーク２ｅ側であり、スタブネットワーク側はネットワーク２ｄ側である。また、トンネルルータ４０ｃにとっては、バックボーンネットワーク側はネットワーク２ｇ側であり、スタブネットワーク側はネットワーク２ｉ側である。
【００８２】
受信部５２は、バックボーンネットワークからのパケットを受信するまで待機する（ステップＳ４１）。受信部５２は、パケットを受信するとルーティング部５１に出力する。ルーティング部５１は、トンネルルータ４０を宛先としたパケットを受信パケット処理部５６に出力する。受信パケット処理部５６は、受信したパケットが通知メッセージであるかを確認する（ステップＳ４２）。受信パケット処理部５６は、通知メッセージを受信した場合、テーブル更新部５７に出力する。テーブル更新部５７は、通知メッセージからＭＴＵの値を取得して、パケット長テーブル４７を更新する（ステップＳ４３）。一方、受信パケット処理部５６に入力されたパケットが通知メッセージではない場合、受信パケット処理部５６は、パケットをデカプセル化部５８に出力する。デカプセル化部５８は、受信パケット処理部５６から入力されたパケットのアウターヘッダを除去することにより、デカプセル化する（ステップＳ４４）。デカプセル化されたパケットは、ルーティング部４４を介し、送信部４３からインナーヘッダに記録された宛先に向けて送信される（ステップＳ４５）。ステップＳ４３もしくはＳ４５が行われた後、ステップＳ４１以降の処理が繰り返される。
【００８３】
図１５はトンネルルータ４０の動作の例を説明するフローチャートである。図１５は、トンネルルータ４０がスタブネットワークからパケットを受信し、バックボーンネットワーク側にパケットを転送する場合の動作を表している。受信部４２は、スタブネットワークからのパケットを受信するまで待機する（ステップＳ５１）。受信部４２は、パケットを受信するとルーティング部４４に出力する。判定部４６は、転送先に関する情報に基づいて受信パケットがカプセル化の対象であることを認識する。さらに、判定部４６は、パケット長テーブル４７を参照して、パケットの宛先のネットワークまでのトンネルＰＭＴＵを取得する。（ステップＳ５２）。判定部４６は、パケットの長さがトンネルＰＭＴＵを超えている場合、判定部４６は、カプセル化したパケットを転送することはできないと判定して、通知メッセージ生成部５０に判定結果を通知する。通知メッセージ生成部５０は、通知メッセージを生成し、送信部４３を介して受信パケットの送信元に返信する（ステップＳ５３でＮｏ、ステップＳ５４）。一方、受信パケットの長さがトンネルＰＭＴＵ以下である場合、受信パケットはカプセル化部４９に出力され、カプセル化される（ステップＳ５３でＹｅｓ、ステップＳ５５）。カプセル化されたパケットは、ルーティング部５１や送信部５３を介して、バックボーンネットワーク側に送信される（ステップＳ５６）。ステップＳ５１〜Ｓ５６の処理は、トンネルルータ４０の電源が切られるまで繰り返される。
【００８４】
なお、トンネルルータ４０に備えられたパケット長テーブル４７も、パケット長テーブル２０と同様に、トンネルルータ４０に電源が投入されたときや、パケット長テーブル４７が初期化されてから所定の時間が経過したときに初期化される。パケット長テーブル４７の初期化はテーブル更新部５７によって行われ、初期化の方法は、図７（ａ）および図８（ｂ）を参照しながら説明した方法と同様である。
【００８５】
このように、トンネルルータ４０が備えるパケット長テーブル４７において、トンネルＰＭＴＵをネットワークごとに記録することができる。また、トンネルＰＭＴＵをネットワークごとに記録すると、トンネルルータ４０により中継されるパケットの宛先に応じたトンネルＰＭＴＵを記録するための記憶量を宛先ごとに記録する場合に比べて、トンネルＰＭＴＵの記録に用いられるエントリ数を削減することができる。
【００８６】
ルータが扱うパケットは非常に膨大であり、なおかつ宛先も多様である。トンネルルータ４０で中継されるパケットの宛先の種類の数は、サーバやホストなどの単一の通信装置１０に比べて大きい。従って、トンネルルータで宛先ごとにトンネルＰＭＴＵを記録すると、トンネルＰＭＴＵを記憶するテーブルのエントリ数は膨大になってしまうため、パケットの転送に際してトンネルＰＭＴＵを検索するために時間がかかってしまう。第２の実施形態では、トンネルルータ４０が備えるパケット長テーブル４７で、ネットワークごとにトンネルＰＭＴＵを記録することにより、パケット長テーブル４７に記録されるエントリ数を抑えることができる。このため、トンネルルータ４０でのトンネルＰＭＴＵの検索時間が短くなり、転送処理が早くなる。
【００８７】
また、トンネルルータ４０がパケット長テーブル４７を備える場合、パケット長テーブル４７のために用いるメモリの容量は、宛先装置ごとにトンネルＰＭＴＵが記録される場合に比べて小さくなる。従って、メモリ不足でトンネルＰＭＴＵが記録できなくなる恐れが小さくなる。また、トンネルルータ４０では、宛先装置ごとにトンネルＰＭＴＵが記録される場合に比べて、搭載するメモリの量を小さくすることができる。さらに、トンネルルータ４０においてメモリ不足が発生することによりトンネルＰＭＴＵが記録できなくなる恐れが小さいため、トンネルルータ４０をリセットする回数も少なくなり、トンネルルータ４０のメンテナンスも簡便になる。
【００８８】
＜第３の実施形態＞
第３の実施形態では、トンネルルータ４０がStateless Automatic IPv4 over IPv6 Tunneling（ＳＡ４６Ｔ）による通信で用いられる場合について説明する。例えば、図１１に示すネットワークのうち、ネットワーク２ｄがＩＰｖ４で動作し、残りのネットワーク２ｅ〜２ｉはＩＰｖ６で動作しているとする。この場合、トンネルルータ４０ａは、宛先のネットワークのＩＰｖ６アドレスのプレフィックス（ＳＡ４６Ｔプレフィックス）に対応付けてトンネルＰＭＴＵを記録したパケット長テーブル４７を備えている。
【００８９】
図１６は、第３の実施形態で用いられるパケット長テーブル４７の例を示す図である。第３の実施形態で用いられるパケット長テーブル４７では、パケットの宛先のネットワークを識別できるＳＡ４６ＴプレフィックスにトンネルＰＭＴＵが対応付けられている。ルータ４０ａは、ＩＰｖ６で通信が行われているネットワーク２ｈや２ｉにＩＰｖ４のパケットを転送する際に、パケットにＩＰｖ６ヘッダを付加する。トンネルＰＭＴＵの値は、ネットワーク２ｈ、２ｉの各々に到達することができる最大のパケット長からＩＰｖ６ヘッダの長さを差し引いた値となる。
【００９０】
パケット長テーブル４７の生成方法や変更方法は、第２の実施形態で述べた方法と同様である。ただし、本実施形態では、トンネルルータ４０ａは、通知メッセージとしてPacket too bigメッセージを受信する。
【００９１】
本実施形態で説明したように、トンネルＰＭＴＵをＳＡ４６Ｔプレフィックスに対応付けて記録すると、宛先ごとにトンネルＰＭＴＵが記録される場合に比べて、トンネルＰＭＴＵの記録に用いられるエントリ数を削減することができる。このため、トンネルＰＭＴＵを検索するための時間が短縮される。
【００９２】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００９３】
パケット長テーブル４７は、宛先ネットワークごとにトンネルＰＭＴＵを記録するので、ルータのルーティングテーブルを拡張して、パケット長テーブル４７と経路テーブル４８を統合することも可能である。図１７は、パケット長テーブル４７と経路テーブル４８を統合した場合のトンネルルータ６０の構成の例を示す。トンネルルータ６０は、ネットワークインタフェース４１、５４、ルーティング部４４、５１、カプセル化部４９、通知メッセージ生成部５０、経路テーブル５５、受信パケット処理部５６、テーブル更新部５７、デカプセル化部５８、経路およびパケット長テーブル６１を有する。経路およびパケット長テーブル６１は、パケット長テーブル４７と経路テーブル４８を統合したテーブルである。経路およびパケット長テーブル６１の例を図１８に示す。経路およびパケット長テーブル６１中のトンネルＰＭＴＵの変更方法は、第２および第３の実施形態と同様である。図１８に示すようにパケット長テーブル４７と経路テーブル５５が統合されることにより、経路の検索とトンネルＰＭＴＵの検索が一度に行われるため、トンネルルータ６０の処理効率は、トンネルルータ４０に比べて改善される。
【００９４】
図１９は、トンネルルータ７０の機能構成の例を表す図である。トンネルルータ７０は、カプセル化されるパケットを送受信するインタフェースを複数備える。すなわち、トンネルルータ７０は、カプセル化された後のパケットのルーティングに、ネットワークインタフェース７１とルーティング部７２、経路テーブル５５を用いる。カプセル化の対象のパケットは、ネットワークインタフェース４１（４１ａ〜４１ｃ）、ルーティング部４４（４４ａ〜４４ｃ）、カプセル化部４９（４９ａ〜４９ｃ）で処理される。カプセル化後のパケットを転送できない場合、パケットの転送ができないと判定されたパケットが入力されたネットワークインタフェース４１に接続されている通知メッセージ生成部５０は、通知メッセージを生成する。ネットワークインタフェース７１を介して受信されたパケットは、受信パケット処理部５６（５６ａ〜５６ｃ）、テーブル更新部５７（５７ａ〜５７ｃ）、デカプセル化部５８（５８ａ〜５８ｃ）、経路およびパケット長テーブル６１（６１ａ〜６１ｃ）により処理される。トンネルルータ７０は、例えば、Virtual Private Network（ＶＰＮ）を実現する際に用いられることがある。
【００９５】
パケット長テーブル２０、パケット長テーブル４７、経路およびパケット長テーブル６１、経路テーブル４８、５５などは、連想メモリを用いることができ、また、ハードウェアにより生成することにより、高速で検索が可能な構成で生成される。
【００９６】
なお、経路テーブルにデフォルトルートが設定されている場合、パケット長テーブル２０やパケット長テーブル４７は、デフォルトルートを用いてルーティングされた宛先については、ホストごとにＰＭＴＵを記憶するように変形されることがある。
【００９７】
第２および第３の実施形態や図１７〜図１９を参照しながら説明した形態では、トンネルルータが用いられた場合について説明したが、カプセル化を行わないルータ４などの中継装置がパケット長テーブル２０を備えることもできる。この場合、中継装置は、転送先のネットワークのプレフィックスに対応付けてパケット長テーブル２０に記録されているＰＭＴＵを取得し、転送対象のパケットの長さと比較する。
【符号の説明】
【００９８】
１、１０  通信装置
２  ネットワーク
４  ルータ
１１  送信データバッファ
１２  受信データバッファ
１３  パケット化部
１４  非パケット化部
１５、５７  テーブル更新部
１６、４１、５４、７１  ネットワークインタフェース
１７、４２、５２  送信部
１８、４３、５３  受信部
２０、４７  パケット長テーブル
３１  ＣＰＵ
３２  メモリ
３３  入力装置
３４  出力装置
３５  バス
３６  外部記憶装置
３７  媒体駆動装置
３８  可搬記憶媒体
３９  ネットワーク接続装置
４０、６０、７０  トンネルルータ
４４、５１、７２  ルーティング部
４５  転送先決定部
４６  判定部
４８、５５  経路テーブル
４９  カプセル化部
５０  通知メッセージ生成部
５６  受信パケット処理部
５８  デカプセル化部
６１  経路およびパケット長テーブル
【図１】
2012124035.tif 000003
【図２】
2012124035.tif 000004
【図３】
2012124035.tif 000005
【図４】
2012124035.tif 000006
【図５】
2012124035.tif 000007
【図６】
2012124035.tif 000008
【図７】
2012124035.tif 000009
【図８】
2012124035.tif 000010
【図９】
2012124035.tif 000011
【図１０】
2012124035.tif 000012
【図１１】
2012124035.tif 000013
【図１２】
2012124035.tif 000014
【図１３】
2012124035.tif 000015
【図１４】
2012124035.tif 000016
【図１５】
2012124035.tif 000017
【図１６】
2012124035.tif 000018
【図１７】
2012124035.tif 000019
【図１８】
2012124035.tif 000020
【図１９】
2012124035.tif 000021
【国際調査報告】
2012124035.tif 000022
2012124035.tif 000023