(57)【要約】【課題】通信処理を効率化する。【解決手段】中継装置は、受信部、格納部、廃棄部、生成部、および、送信部を備える。受信部は、送信パケットの分割により生成され、送信パケットと同じ識別子を含む複数の分割パケットを受信する。格納部は、分割パケットを格納する。廃棄部は、分割パケットの少なくとも１つの消失が検出されると、消失が検出されたパケットと同じ識別子を含む分割パケットを廃棄する。生成部は、送信パケット中のデータの先頭を含む分割パケットである先頭パケットが廃棄部によって廃棄されない場合、送信パケットの識別子と、識別子を含む分割パケットの廃棄を要求する情報を含む廃棄要求を生成する。送信部は、廃棄要求を先頭パケットの中継先に送信する。【選択図】図１
2015144390.tif 000002
【特許請求の範囲】
【請求項１】
送信パケットの分割により生成され、前記送信パケットと同じ識別子を含む複数の分割パケットを受信する受信部と、
前記分割パケットを格納する格納部と、
前記分割パケットの少なくとも１つの消失が検出されると、消失が検出されたパケットと同じ識別子を含む分割パケットを廃棄する廃棄部と、
前記送信パケット中のデータの先頭を含む分割パケットである先頭パケットが前記廃棄部によって廃棄されない場合、前記送信パケットの識別子と、前記識別子を含む分割パケットの廃棄を要求する情報を含む廃棄要求を生成する生成部と、
前記廃棄要求を前記先頭パケットの中継先に送信する送信部
を備えることを特徴とする中継装置。
【請求項２】
前記廃棄部が廃棄する分割パケットに含まれている識別子を、廃棄される対象の分割パケットを識別する識別子として記憶する記憶部を備え、
前記廃棄部は、廃棄対象に設定されている分割パケットの生成に使用された送信パケットのデータの最終の領域を含む分割パケットである最終パケットを廃棄すると、前記最終パケットに含まれている識別子を、廃棄される対象の識別子から除外する
ことを特徴とする請求項１に記載の中継装置。
【請求項３】
前記格納部の空き容量が、前記格納部に出力される対象の分割パケットである対象パケットの大きさよりも小さい場合、前記生成部は、前記対象パケットに含まれている識別子を含む分割パケットの廃棄を要求する廃棄要求を生成し、
前記送信部は、前記対象パケットに含まれている識別子を含む分割パケットの廃棄を要求する廃棄要求を、前記先頭パケットの中継先に送信する
ことを特徴とする請求項１または２に記載の中継装置。
【請求項４】
前記廃棄部は、前記格納部から読み出した分割パケットに含まれている識別子と前記対象パケットに含まれている識別子が一致すると、前記格納部から読み出した分割パケットを廃棄する
ことを特徴とする請求項３に記載の中継装置。
【請求項５】
前記分割パケットでのエラーの発生を検出するエラー検出部と、
前記エラーが検出されたパケットに含まれている識別子を、前記廃棄部が廃棄する分割パケットに含まれている識別子として設定する廃棄設定部
をさらに備えることを特徴とする請求項１〜４のいずれか１項に記載の中継装置。
【請求項６】
前記格納部中のパケットよりも優先的に前記中継先に送信される優先パケットを保持する送信バッファをさらに備え、
前記生成部は、前記廃棄要求を前記送信バッファに出力する
ことを特徴とする請求項１〜５のいずれか１項に記載の中継装置。
【請求項７】
送信パケットを送信元から受信すると共に、前記送信パケットを複数の分割パケットに分割する第１の通信装置と、
前記複数の分割パケットを用いて前記送信パケットを復元する第２の通信装置と、
前記第１の通信装置から受信した分割パケットを、前記第２の通信装置に向けて送信する中継装置
を備えるシステムであって、
前記中継装置は、
前記第１の通信装置から受信した分割パケットを格納し、
前記分割パケットの少なくとも１つの消失が検出されると、消失が検出されたパケットと同じ識別子を含む分割パケットを廃棄し、
前記送信パケット中のデータの先頭を含む分割パケットである先頭パケットを廃棄しない場合、前記送信パケットの識別子と、前記識別子を含む分割パケットの廃棄を要求する情報を含む廃棄要求を生成し、
前記廃棄要求を前記先頭パケットの中継先に送信する
処理を行うことを特徴とする通信システム。
【請求項８】
送信パケットの分割により生成され、前記送信パケットと同じ識別子を含む複数の分割パケットを受信し、
前記分割パケットを格納し、
前記分割パケットの少なくとも１つの消失が検出されると、消失が検出されたパケットと同じ識別子を含む分割パケットを廃棄し、
前記送信パケット中のデータの先頭を含む分割パケットである先頭パケットを廃棄しない場合、前記送信パケットの識別子と、前記識別子を含む分割パケットの廃棄を要求する情報を含む廃棄要求を生成し、
前記廃棄要求を前記先頭パケットの中継先に送信する
処理を、前記分割パケットを中継する中継装置に行わせることを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置の間で行われる通信に関する。
【背景技術】
【０００２】
近年、通信機器の高速化やネットワーク中で送受信されるデータ量の増加に伴い、ジャンボパケットへの対応が求められている。ジャンボパケットを用いると、１つのパケットで大きなデータを処理できるという利点がある。しかし、ジャンボパケットの処理に時間がかかると、他のパケットの処理を遅延させてしまう恐れもある。そこで、Internet Protocol（ＩＰ）電話などのリアルタイム性が求められるサービスとジャンボパケットを扱うサービスを同じネットワークで共存させる場合には、ジャンボパケットのフラグメント化が行われる。なお、ジャンボパケットのフラグメント化は、ジャンボパケットの転送先のネットワークに転送可能なパケットのサイズがジャンボパケットのサイズよりも小さい場合にも行われる。フラグメント化により、１つのジャンボパケットから複数のフラグメントパケットが生成され、フラグメントパケットは、別個に、宛先に向けて送信される。宛先の装置は、受信したフラグメントパケットから、送信されたジャンボパケットを復元した上で、適宜処理する。
【０００３】
関連する技術として、データユニットの１つのフラグメントの発送処理を行うときに、データユニットを発送対象として記録する機構が提案されている。この機構は、送信のためフラグメントを整列させるキューを有し、キューが発送容量を超過したときに、送信対象として記録されていないデータユニットを、欠落させる対象とする（例えば、特許文献１）。また、所定のMaximum Transmission Unit（ＭＴＵ）を超えるInternet Key Exchange（ＩＫＥ）ペイロードを含むパケットをＭＴＵ以下のサイズのパケットにフラグメント化する方法も提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−１７７６２７号公報
【特許文献２】特開２００３−２４４２３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
送信元の装置から送信された送信パケットを受信したルータが送信パケットをフラグメント化し、フラグメントパケットを宛先に向けて送信したとする。この場合、フラグメントパケットは別個に送信されるため、１つの送信パケットから生成されたフラグメントパケットのうちの一部が転送中に消失することもあり得る。転送中に一部のフラグメントパケットが消失すると、他のフラグメントパケットが宛先に到達したとしても、送信パケットを復元することができない。このため、フラグメントパケットを受信した装置は、送信パケットの受信に失敗したと判定して、受信したフラグメントパケットを廃棄することになる。つまり、フラグメントパケットのうちの１つが消失した時点で、同じ送信パケットから生成されたフラグメントパケットは使用されなくなる。このため、使用されないフラグメントパケットを宛先に向けて送信してしまうと、それらのフラグメントパケットが送受信されている装置間の通信効率が悪くなってしまう。
【０００６】
関連する技術として述べた文献に記載された発明のいずれでも、一部のフラグメントの欠落によって使用されなくなったフラグメントパケットの転送処理に起因する通信効率の低下を防ぐことはできない。
【０００７】
本発明は、１つの側面として、通信処理を効率化することを目的とする。
【課題を解決するための手段】
【０００８】
中継装置は、受信部、格納部、廃棄部、生成部、および、送信部を備える。受信部は、送信パケットの分割により生成され、前記送信パケットと同じ識別子を含む複数の分割パケットを受信する。格納部は、前記分割パケットを格納する。廃棄部は、前記分割パケットの少なくとも１つの消失が検出されると、消失が検出されたパケットと同じ識別子を含む分割パケットを廃棄する。生成部は、前記送信パケット中のデータの先頭を含む分割パケットである先頭パケットが前記廃棄部によって廃棄されない場合、前記送信パケットの識別子と、前記識別子を含む分割パケットの廃棄を要求する情報を含む廃棄要求を生成する。送信部は、前記廃棄要求を前記先頭パケットの中継先に送信する。
【発明の効果】
【０００９】
通信処理が効率化される。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る中継処理の例を示す図である。
【図２】ネットワークの例を示す図である。
【図３】中継装置の構成の例を示す図である。
【図４】中継装置のハードウェア構成の例を示す図である。
【図５】パケットのフォーマットの例を示す図である。
【図６】フラグメントパケットの生成方法の例を説明する図である。
【図７】中継処理の例を説明する図である。
【図８】フラグメントデータテーブルの例を示す図である。
【図９】中継処理に用いるデータの取得方法の例を説明するフローチャートである。
【図１０】ポートテーブルの例を示す図である。
【図１１】ポートテーブルの生成方法の例を説明するフローチャートである。
【図１２】エラーの検出による情報の更新の例を説明するフローチャートである。
【図１３】パケット廃棄リストの例を示す図である。
【図１４】廃棄要求の送信方法の例を説明する図である。
【図１５】廃棄設定部の処理の例を説明するフローチャートである。
【図１６】パケットの廃棄処理の例を説明するフローチャートである。
【図１７】Ｔａｉｌ  Ｄｒｏｐの検出方法の例を説明する図である。
【図１８Ａ】第２の実施形態での送信処理部の動作の例を説明するフローチャートである。
【図１８Ｂ】第２の実施形態での送信処理部の動作の例を説明するフローチャートである。
【図１９】変形例での処理の例を説明する図である。
【図２０】変形例での処理の例を説明する図である。
【図２１】変形例での処理の例を説明する図である。
【発明を実施するための形態】
【００１１】
図１は、実施形態に係る中継処理の例を示す。以下、ユーザの端末から受信したパケットのフラグメント化やフラグメントパケットからの送信パケットの復元を行う装置を「エッジノード」と記載する。図１は、ユーザＡが送信した送信パケットが、エッジノード５ａ、５ｂと、複数の中継装置１０（１０ａ〜１０ｃ）を介してユーザＢが使用している端末に送信される場合の送信処理の例を表わす。図１には、図を見やすくするために、送信パケットおよび送信パケットから生成されたフラグメントパケット（分割パケット）の送受信に使用される経路上の中継装置１０のみを示している。
【００１２】
（ａ１）エッジノード５ａは、ユーザＡの端末から送信された送信パケットを受信すると、そのパケットの大きさを特定することにより、ジャンボパケットであるかを判定する。ユーザＡから送信されてきたパケットがジャンボパケットである場合、エッジノード５ａは、ユーザＡからの送信パケットをフラグメント化する。ここでは、送信パケットは、フラグメントパケットＦ１〜Ｆ４に分割されたものとする。このとき、エッジノード５ａは、フラグメントパケットＦ１〜Ｆ４の各々に、送信パケットと同じ識別子を含める。エッジノード５ａは、フラグメントパケットＦ１〜Ｆ４を中継装置１０ａに送信する。ここで、中継装置１０ａから中継装置１０ｂに至る経路でフラグメントパケットＦ３にエラーが発生したとする。なお、このエラーでは、識別子の値は変動していないものとする。
【００１３】
（ａ２）中継装置１０ａは、フラグメントパケットＦ１を受信すると、エラーチェックを行う。フラグメントパケットＦ１にエラーが発見されない場合、中継装置１０ａは、フラグメントパケットＦ１をバッファに格納する。中継装置１０ａは、次にフラグメントパケットＦ２を受信すると、フラグメントパケットＦ１と同様の処理を行う。ここでは、フラグメントパケットＦ２も中継装置１０ａのバッファに格納されたものとする。
【００１４】
（ａ３）中継装置１０ａは、フラグメントパケットＦ１をバッファから読み出して、中継装置１０ｂに転送する。中継装置１０ｂは、フラグメントパケットＦ１を中継装置１０ａから受信し、フラグメントパケットＦ１をバッファに格納する。
【００１５】
（ａ４）その後、中継装置１０ａは、フラグメントパケットＦ３を受信し、フラグメントパケットＦ３のエラーチェックを行う。中継装置１０ａは、エラーチェックにより、フラグメントパケットＦ３にエラーが発生していることを検出すると、フラグメントパケットＦ３に含まれている識別子を取得した上で、フラグメントパケットＦ３を廃棄する。
【００１６】
さらに、中継装置１０ａは、廃棄したフラグメントパケットと同じ識別子を含むフラグメントパケットがバッファ中に格納されている場合、それらのパケットを廃棄する。ここでは、手順（ａ２）の処理により、廃棄対象となったフラグメントパケットＦ３と同じ識別子を有するフラグメントパケットＰ２がバッファ中に含まれている。そこで、中継装置１０ａは、フラグメントパケットＦ２をバッファから削除する。
【００１７】
このとき、中継装置１０ａは、削除するフラグメントパケットに送信パケットの先頭のデータが含まれているかを判定する。フラグメントパケットＦ２は送信パケットの先頭のデータを含むフラグメントパケットではないので、中継装置１０ａは、送信パケットの先頭のデータを含むフラグメントパケットＦ１を、他の中継装置１０に転送済みであると判定する。そこで、中継装置１０ａは、削除されたフラグメントパケットに含まれている識別子と共に、その識別子を含むフラグメントパケットの削除の要求を含むメッセージを、転送先の中継装置１０ｂに送信する。以下、フラグメントパケットの廃棄を要求するメッセージを「廃棄要求」と記載する。また、送信パケットの先頭のデータを含むフラグメントパケットを、「先頭パケット」と記載することがあるものとする。
【００１８】
（ａ５）中継装置１０ｂは、中継装置１０ａから廃棄要求を受信すると、廃棄要求に含まれている識別子を抽出する。中継装置１０ｂは、抽出した識別子を含むフラグメントパケットがバッファに含まれているかを判定する。中継装置１０ｂは、手順（ａ３）の処理により、フラグメントパケットＦ１をバッファに格納しているので、廃棄要求を受信すると、フラグメントパケットＦ１を廃棄する。このとき、中継装置１０ｂは、廃棄対象のパケットが先頭パケットであるかを判定する。フラグメントパケットＦ１は、先頭パケットであるため、中継装置１０ｂは、廃棄要求を生成しない。
【００１９】
（ａ６）次に、中継装置１０ａは、エッジノード５ａからフラグメントパケットＦ４を受信したとする。ここで、手順（ａ４）の処理により、中継装置１０ａは、廃棄対象のパケットの識別子を取得しているので、フラグメントパケットＦ４に廃棄対象のパケットの識別子が含まれているかを判定する。フラグメントパケットＦ４には、廃棄対象のパケットの識別子が含まれているので、中継装置１０ａは、フラグメントパケットＦ４を廃棄する。
【００２０】
以上の処理により、フラグメントパケットＦ３のエラーが検出されると、同じ送信パケットから生成されたフラグメントパケットＦ１、Ｆ２、Ｆ４は、それぞれのパケットを保持している中継装置１０ａ、１０ｂにおいて廃棄される。このため、送信パケットの復元に失敗することにより廃棄されることになるフラグメントパケットが中継装置１０ａ、１０ｂ以外の装置に転送されない。従って、実施形態にかかる方法では、廃棄対象のパケットの送受信を最小限にとどめることができ、通信を効率化できる。
【００２１】
＜ネットワークの例と装置構成＞
図２は、ネットワークの例を示す。図２でも図１と同様に、見やすくするために、送信パケットおよびフラグメントパケットの転送に使用される経路を、リニアネットワーク状に示している。
【００２２】
エッジノード５ａは、ユーザＡから受信したユーザＢ宛の送信パケットのフラグメント化を行うことにより、フラグメントパケットを生成し、ユーザＢが使用している端末に向けて送信する。ユーザＡからユーザＣ宛ての送信パケットが送信された場合も、エッジノード５ａは、送信パケットをフラグメント化した後、ユーザＣが使用している端末に向けて、フラグメントパケットを送信する。また、ネットワーク中の経路は、冗長化されていても良く、冗長化されていなくても良い。図２の例では、ユーザＡとユーザＢの間の経路は、経路αと経路βを使用できるように、冗長化されている。経路αは、エッジノード５ａから、中継装置１０ａ〜１０ｄを介してエッジノード５ｂに至る経路であり、経路βは、エッジノード５ａから、中継装置１０ｅ〜１０ｈを介してエッジノード５ｂに至る経路である。
【００２３】
図３は、中継装置１０の構成の例を示す図である。中継装置１０は、ポート１１、ポート１２、受信処理部２０、制御部３０、記憶部４０、送信処理部５０を備える。受信処理部２０は、受信部２１、受信バッファ２２、エラー検出部２３、および、フラグメント検出部２４を有する。制御部３０は、エラー特定部３１、フラグメントデータ管理部３２、廃棄設定部３３、ポートテーブル更新部３４を有する。記憶部４０は、フラグメントデータテーブル４１、ポートテーブル４２、パケット廃棄リスト４３を有する。送信処理部５０は、廃棄要求生成部５１、フラグメントバッファ５２、パケット廃棄部５３、送信バッファ５４、送信部５５を有する。なお、図３の例では、中継装置１０には、ポート１１、１２が含まれているが、中継装置１０に含まれるポートの数は、実装に応じて任意に変更され得る。以下の説明では、中継装置１０がポート１１からフラグメントパケットを受信する場合を例として説明する。
【００２４】
受信部２１は、ポート１１を介して、エッジノード５や他の中継装置１０などから、パケットを受信する。なお、受信部２１が受信するパケットは、フラグメントパケットであっても、フラグメント化されていないパケットであっても良い。受信部２１は、受信したパケットを受信バッファ２２に出力する。受信バッファ２２は、受信部２１から入力されたパケットを格納する。
【００２５】
エラー検出部２３は、受信バッファ２２に格納されたパケットを読み出して、パケットにエラーが発生しているかを判定する。エラー検出部２３は、受信パケットにエラーが発生している場合、エラーの検出に使用したパケットがフラグメントパケットであるかを判定する。フラグメントパケットからエラーが検出された場合、エラー検出部２３は、エラーを検出したパケットのＩＰヘッダと、エラーが発生していることを示す情報をエラー特定部３１に出力する。エラー検出部２３は、処理対象のパケットについてエラーを検出しなかった場合、処理対象のパケットをフラグメント検出部２４に出力する。さらに、エラー検出部２３は、ユーザごとに所定時間内に送信可能なデータ量の制限が設定されている場合、ユーザごとに、制限されたデータ量の範囲内での通信が行われているかを判定する。制限されたデータ量を超えるパケットが送信された場合も、エラー検出部２３は、パケットのエラーを検出した場合と同様に処理する。
【００２６】
フラグメント検出部２４は、入力されたパケットのヘッダを用いて、入力されたパケットがフラグメントパケットであるかを判定する。入力されたパケットがフラグメントパケットである場合、フラグメント検出部２４は、処理対象のフラグメントパケットのＩＰヘッダ中に含まれている情報を、フラグメントデータ管理部３２に出力する。さらに、フラグメント検出部２４は、フラグメントパケットをフラグメントバッファ５２に出力する。なお、フラグメント検出部２４は、廃棄要求生成部５１を介してフラグメントバッファ５２にフラグメントパケットを出力するものとする。一方、入力されたパケットがフラグメントパケットではない場合、フラグメント検出部２４は、入力されたパケットを送信バッファ５４に出力する。
【００２７】
エラー特定部３１は、エラー検出部２３から入力されたＩＰヘッダから、宛先ＩＰアドレス、送信元ＩＰアドレス、パケットＩＤ、オフセット値、ＩＰフラグなどの情報を抽出し、抽出した情報をフラグメントデータ管理部３２に出力する。
【００２８】
フラグメントデータ管理部３２は、フラグメント検出部２４やエラー特定部３１から取得した情報を用いて、フラグメントデータテーブル４１を更新する。フラグメントデータテーブル４１は、フラグメントパケットの転送や廃棄を行うときに使用する情報を格納している。フラグメントデータテーブル４１の例は後述する。廃棄設定部３３は、適宜、フラグメントデータテーブル４１を参照して、廃棄対象のフラグメントパケットのパケットＩＤをパケット廃棄リスト４３に記録する。パケット廃棄リスト４３の例については後述する。ポートテーブル更新部３４は、中継装置１０に備えられている各ポートで使用されているアドレス学習テーブルを読み出して、ポートテーブル４２を生成する。ポートテーブル４２の例と使用方法については後述する。
【００２９】
送信処理部５０には、フラグメントバッファ５２と送信バッファ５４の２種類のバッファが備えられており、送信バッファ５４に格納されているパケットは、フラグメントバッファ５２に格納されているパケットよりも優先的に処理されるものとする。なお、フラグメントバッファ５２には、フラグメントパケットが格納され、送信バッファ５４には、フラグメントパケットではないパケットが格納される。
【００３０】
廃棄要求生成部５１は、削除対象となっている先頭パケットをパケット廃棄部５３が削除できない場合、先頭パケットの転送先に出力するための廃棄要求を生成する。廃棄要求生成部５１は、先頭パケットの転送先宛に生成した廃棄要求を、送信バッファ５４に出力する。従って、廃棄要求は、フラグメントパケットよりも優先的に、先頭パケットの転送先に送信される。さらに、廃棄要求生成部５１は、フラグメントバッファ５２の空き容量をモニタし、フラグメントバッファ５２の空き容量が十分にある場合は、フラグメント検出部２４から入力されたフラグメントパケットを、フラグメントバッファ５２に出力する。
【００３１】
パケット廃棄部５３は、パケット廃棄リスト４３に記録されているパケットＩＤを含むフラグメントパケットを、フラグメントバッファ５２から読み出して廃棄する。さらに、パケット廃棄部５３は、廃棄対象となっていないフラグメントパケットを、送信部５５に出力する。送信部５５は、パケット廃棄部５３から入力されたフラグメントパケットと、送信バッファ５４から読み出したパケットを、ポート１２を介して送信する。
【００３２】
図４は、中継装置１０のハードウェア構成の例を示す図である。中継装置１０は、プロセッサ１０１、Read Only Memory（ＲＯＭ）１０２、Random Access Memory（ＲＡＭ）１０３、ネットワーク接続装置１０４、および、バス１０５を備える。プロセッサ１０１は、エラー検出部２３、フラグメント検出部２４、制御部３０、廃棄要求生成部５１、パケット廃棄部５３として動作する。ＲＡＭ１０３は、受信バッファ２２、記憶部４０、フラグメントバッファ５２、送信バッファ５４として動作し、適宜、プロセッサ１０１の処理に用いられるデータや、プロセッサ１０１の処理で得られたデータを記憶する。ＲＯＭ１０２は、プロセッサ１０１の動作に使用されるプログラムを格納することができ、また、プロセッサ１０１が使用するデータ等を格納できる。このため、プロセッサ１０１は、ＲＯＭ１０２に格納されているプログラムを実行することにより、制御部３０などを実現できる。ネットワーク接続装置１０４は、ポート１１、ポート１２、受信部２１、送信部５５として動作する。ネットワーク接続装置１０４は、１つ以上の任意の数のネットワークカードを含んでいても良い。バス１０５は、プロセッサ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ネットワーク接続装置１０４を相互にデータの入出力が可能なように接続する。
【００３３】
＜第１の実施形態＞
以下、第１の実施形態を、エッジノード５でのフラグメントパケットの生成、中継装置１０の処理に使用する情報の取得、転送処理、パケットの消失を検出した中継装置での処理、パケットの消失の発生を通知された中継装置での処理に分けて説明する。第１の実施形態では、送信パケットから生成されたフラグメントパケットの一部にエラーが発生した場合を例として説明する。
【００３４】
〔フラグメントパケットの生成〕
図５は、パケットのフォーマットの例を示す図であり、ＩＰパケット中のＩＰヘッダを詳しく示している。ＩＰヘッダには、バージョン情報、ヘッダ長、サービスタイプ（Type Of Service、ＴＯＳ）、データグラム長、パケットＩＤ、ＩＰフラグ、フラグメントオフセットが含まれる。ＩＰヘッダには、さらに、Time To Live（ＴＴＬ）、プロトコル番号、ヘッダチェックサム、送信元ＩＰアドレス、宛先ＩＰアドレス、オプションが含まれる。
【００３５】
フラグメントパケットの生成や転送の処理には、ＩＰヘッダ中のパケットＩＤ、ＩＰフラグ、フラグメントオフセットが使用される。パケットＩＤは、ユーザの端末で使用されているアプリケーションによって、ＩＰパケットの送信の際にランダムに生成される１６ビットの数値である。フラグメントパケットのＩＰヘッダには、そのフラグメントパケットの生成に使用された送信パケットと同じパケットＩＤが含められるものとする。フラグメントオフセットは、個々のフラグメントパケットの値が、元の送信パケットのどの部分のデータを保持しているかを示す。
【００３６】
ＩＰフラグは、３ビットのビット列であり、２ビット目がフラグメント化の可否を表わす情報である。ＩＰフラグの２ビット目の値が０である場合、フラグメント化が可能であることを示すものとする。ＩＰフラグの３ビット目は、１つの送信パケットから分割された最終のパケットであるかの判定に使用される情報である。ＩＰフラグの３ビット目の値が０である場合、１つの送信パケットから分割された最終のパケットであるか、分割されていないパケットであることを示すものとする。以下、１つの送信パケットから分割された最終のパケットを「最終パケット」と記載する。一方、ＩＰフラグの３ビット目の値が１である場合、最終パケット以外のフラグメントパケットであることを示すものとする。以下の説明では、ＩＰフラグの３ビット目は最終パケットであるかを示す情報であるため、ＩＰフラグの３ビット目を「最終フラグ」と記載することがある。また、ＩＰフラグの２ビット目は分割の可否を表わす情報であるため、ＩＰフラグの２ビット目を「分割フラグ」と記載することがある。
【００３７】
図６は、フラグメントパケットの生成方法の例を説明する図である。以下、図２のユーザＡから送信された送信パケットを、エッジノード５ａがフラグメント化する場合を例として説明する。
【００３８】
エッジノード５ａは、ユーザＡから受信した送信パケットのＩＰフラグ中の分割フラグの値が０である場合は、送信パケットの分割が可能であると判定する。ここでは、エッジノード５ａは、分割可能な送信パケットを受信したとする。そこで、エッジノード５ａは、送信パケットのデータを予め設定された大きさに分割する。図６の例では、送信パケット中のデータがフラグメントｆ１〜フラグメントｆ４に分割されるものとする。エッジノード５ａは、得られたフラグメントの各々に、ＩＰヘッダを付すことにより、フラグメントパケットＦ１〜Ｆ４を生成する。ここで、ＩＰヘッダは、フラグメントオフセットと、ＩＰフラグ以外の値は、送信パケットと同じ情報を有するものとする。フラグメントオフセットは、各フラグメントの先頭が、送信パケットのデータ中の何バイト目に当たるかを示すものとする。例えば、エッジノード５ａは、フラグメントパケットＦ１について、フラグメントオフセットを０に設定し、さらに、ＩＰフラグ中の最終フラグを１に設定する。例えば、各フラグメントの大きさが１０００バイトである場合、エッジノード５ａは、フラグメントオフセットを、フラグメントパケットＦ２では１０００、フラグメントパケットＦ３では２０００、フラグメントパケットＦ４では３０００に設定する。エッジノード５ａは、フラグメントパケットＦ２とＦ３についても、最終パケットではないことを示すために、最終フラグの値を１に設定する。一方、エッジノード５ａは、フラグメントパケットＦ４については、最終パケットであることを示すために、最終フラグの値を０に設定する。エッジノード５ａは、生成したフラグメントパケットを中継装置１０ａに送信する。
【００３９】
〔中継処理の制御に使用する情報の取得〕
図７は、中継処理の例を説明する図である。図７の例では、中継装置１０ａは、エッジノード５ａからフラグメントパケットＦ１〜Ｆ９を受信するものとする。図７は、各中継装置１０が受信するフラグメントパケットと、各中継装置１０中のフラグメントバッファ５２中に含まれているフラグメントパケットの経時変化を示している。なお、図７中では、フラグメントパケットを、そのフラグメントパケットを識別するために使用する符号中の番号を記載した四角形として示している。例えば、フラグメントパケットＦ１は、１という数字が書かれた四角形である。さらに、以下の説明では、いずれの中継装置１０の処理であるかを分り易くするために、符号の末尾に処理を行っている中継装置の符号の末尾のアルファベットを付すことがある。例えば、受信処理部２０ａは、中継装置１０ａ中の受信処理部２０であり、パケット廃棄部５３ｂは、中継装置１０ｂ中のパケット廃棄部５３を示すものとする。
【００４０】
（ｂ１）中継装置１０ａの受信部２１ａは、エッジノード５ａからフラグメントパケットＦ１を受信する。受信部２１ａは、フラグメントパケットＦ１を受信バッファ２２ａに出力する。エラー検出部２３ａは、受信バッファ２２ａからフラグメントパケットＦ１を読み出して、エラーが発生しているかを判定する。ここでは、フラグメントパケットＦ１にはエラーが発生していないものとする。すると、エラー検出部２３ａは、フラグメントパケットＦ１を、フラグメント検出部２４ａに出力する。フラグメント検出部２４ａは、フラグメントパケットＦ１のフラグメントオフセット、ＩＰフラグ中の分割フラグと最終フラグなどの値を参照することにより、入力されたパケットがフラグメントパケットであるかを判定する。具体的には、フラグメント検出部２４ａは、最終フラグ＝０、かつ、フラグメントオフセット＝０という条件が当てはまらないパケットを、フラグメントパケットであると判定する。フラグメントパケットＦ１では、フラグメントオフセットは０であるが、最終フラグはフラグメントパケットＦ１が最終ではないことを示す値であるものとする。すると、フラグメント検出部２４ａは、入力されたパケット（Ｆ１）は、フラグメントパケットであると判定する。
【００４１】
（ｂ２）フラグメント検出部２４ａは、フラグメントパケットＦ１のＩＰヘッダ中に含まれている情報を、フラグメントデータ管理部３２ａに出力する。フラグメントデータ管理部３２ａは、入力されたＩＰヘッダを用いて、フラグメントデータテーブル４１ａを更新する。
【００４２】
図８は、フラグメントデータテーブル４１の例を示す。フラグメントデータテーブル４１は、パケットＩＤ、送信元ＩＰアドレス、宛先ＩＰアドレス、フラグメントオフセット値、最終フラグの値、フラグメントパケットでのエラーの有無を含む。フラグメントデータ管理部３２ａは、入力されたＩＰヘッダ中のパケットＩＤ、送信元ＩＰアドレス、宛先ＩＰアドレス、フラグメントオフセット値、最終フラグの値を、フラグメントデータテーブル４１ａに格納する。さらに、フラグメントデータ管理部３２ａは、フラグメント検出部２４ａから入力されたＩＰフラグ中の情報については、エラーが無いことがエラー検出部２３ａによって確認されているため、エラーの有無を示す欄の値を０に設定する。従って、フラグメントパケットＦ１中のＩＰヘッダの情報は、フラグメントデータテーブル４１ａ中のＮｏ．１のエントリに示すように格納される。
【００４３】
（ｂ３）ポートテーブル更新部３４は、転送処理の際の出力ポートを特定するために、ポートテーブル４２を生成し、定期的に更新する。ポートテーブル更新部３４の処理については後述する。
【００４４】
図９は、中継処理に用いるデータの取得方法の例を説明するフローチャートである。図７、図８を参照しながら説明した処理では中継装置１０ａの処理を例として説明したが、中継処理に用いるデータの取得処理はいずれの中継装置１０でも同様に行われる。なお、図９はデータの取得方法の一例であり、例えば、ステップＳ７とＳ８の順序が互いに変更されるなど、処理方法が変更されても良い。
【００４５】
受信バッファ２２は、中継装置１０が受信したパケットを格納する（ステップＳ１）。エラー検出部２３は、受信したパケットにエラーが発生しているかを判定する（ステップＳ２）。受信したパケットにエラーが発生している場合、エラー検出部２３は、エラーが発生しているパケット中のＩＰヘッダをエラー特定部３１に出力する（ステップＳ２でエラー検出）。エラー特定部３１は、入力されたＩＰヘッダ中のパケットＩＤ、アドレス情報などの情報をフラグメントデータ管理部３２に通知する。フラグメントデータ管理部３２は、エラー特定部３１から取得した情報に基づいてフラグメントデータテーブル４１を更新する（ステップＳ３）。一方、処理対象のパケットについてエラーを検出しなかった場合、エラー検出部２３は、処理対象のパケットをフラグメント検出部２４に出力する（ステップＳ２でエラーなし）。フラグメント検出部２４は、入力されたパケットがフラグメントパケットであるかを判定する（ステップＳ４）。フラグメント検出部２４は、入力されたパケットがフラグメントパケットではない場合、そのパケットを送信バッファ５４に出力する（ステップＳ４でＮｏ、ステップＳ５）。
【００４６】
一方、入力されたパケットがフラグメントパケットである場合、フラグメント検出部２４は、ＩＰヘッダ中の情報をフラグメントデータ管理部３２に出力する（ステップＳ４でＹｅｓ、ステップＳ６）。さらに、フラグメント検出部２４は、フラグメントパケットを廃棄要求生成部５１に出力する（ステップＳ７）。フラグメントデータ管理部３２は、フラグメントパケットのＩＰヘッダ中の情報を用いて、フラグメントデータテーブル４１を更新する（ステップＳ８）。
【００４７】
図１０は、ポートテーブル４２の例を示す。ポートテーブル４２には、宛先ＩＰアドレスに対応付けて、宛先ＩＰアドレス宛てのパケットの送信に使用されるネットワークカードの識別子とポート番号が記録されている。ポートテーブル更新部３４は、定期的に各ポートで使用されているアドレス学習テーブルを読み出して、ポートテーブル４２を更新する。ポートテーブル更新部３４がポートテーブル４２を更新する周期は実装に応じて決定される。例えば、ポートテーブル更新部３４は、５００ｍ秒ごとにポートテーブル４２を更新しても良い。
【００４８】
図１１は、ポートテーブル４２の更新方法の例を説明するフローチャートである。ポートテーブル更新部３４は、通信に使用されているポートのAddress Resolution Protocol（ＡＲＰ）テーブルを参照して、ＩＰアドレス、ネットワークカードの識別子、ポート番号の組合せを取得する（ステップＳ１１）。ポートテーブル更新部３４は、取得した情報と、ポートテーブル４２に記録されている情報の差分を特定し、差分を更新する（ステップＳ１２）。ポートテーブル更新部３４は、タイマが満了したかを判定する（ステップＳ１３）。タイマが満了していない場合、タイマの満了まで待機する（ステップＳ１３でＮｏ）。一方、タイマが満了すると、ポートテーブル更新部３４は、タイマを初期化して、ステップＳ１１以降の処理を繰り返す（ステップＳ１３でＹｅｓ）。
【００４９】
〔フラグメントパケットの転送処理〕
次に、図７を参照しながら、エラーが検出されていないパケットを受信した場合に手順（ｂ１）〜（ｂ３）以降に行われる処理の例を説明する。
【００５０】
（ｂ４）フラグメント検出部２４ａは、フラグメントパケットＦ１を廃棄要求生成部５１ａに出力する。廃棄要求生成部５１ａは、フラグメントバッファ５２ａの空き容量とフラグメントパケットＦ１の大きさを比較する。フラグメントバッファ５２ａの空き容量がフラグメントパケットＦ１の大きさ以上である場合、廃棄要求生成部５１ａは、フラグメントパケットＦ１をフラグメントバッファ５２ａに格納できると判定する。すると、廃棄要求生成部５１ａは、フラグメントパケットＦ１をフラグメントバッファ５２ａに出力する。このため、中継装置１０ａが備えるフラグメントバッファ５２ａに、フラグメントパケットＦ１が格納される。パケット廃棄部５３ａは、フラグメントバッファ５２ａにフラグメントパケットが格納された時刻を特定する。
【００５１】
（ｂ５）中継装置１０ａがフラグメントパケットＦ２〜Ｆ４をエッジノード５ａから受信したとする。ここでは、フラグメントパケットＦ２〜Ｆ４のいずれにもエラーが無いものとする。すると、フラグメントパケットＦ２〜Ｆ４の各々に対して手順（ｂ１）、（ｂ２）、（ｂ４）で説明した処理と同様の処理が行われることにより、フラグメントバッファ５２ａには、フラグメントパケットＦ１〜Ｆ４が格納される。
【００５２】
（ｂ６）中継装置１０ａがフラグメントパケットＦ５をエッジノード５ａから受信すると、手順（ｂ１）、（ｂ２）、（ｂ４）で述べた処理と同様の処理が行われる。ここで、パケット廃棄部５３ａは、フラグメントバッファ５２ａ中のパケットの数が閾値と一致し、かつ、新たなパケットが廃棄要求生成部５１ａに入力されると、１つのパケットをフラグメントバッファ５２ａから読み出すように設定されているとする。なお、パケット廃棄部５３ａは、フラグメントバッファ５２ａに格納された時刻から所定の時間が経過したフラグメントパケットも、フラグメントバッファ５２ａから取得するものとする。
【００５３】
以下、フラグメントバッファ５２ａからのパケットの読み出しを開始する閾値が４である場合を例とする。ここで、フラグメントパケットＦ１がフラグメントバッファ５２ａに格納されてから所定の時間が経過する前に、フラグメントパケットＦ１〜Ｆ４がフラグメントバッファ５２ａに格納されているとする。フラグメントパケットＦ５が廃棄要求生成部５１ａに入力されると、パケット廃棄部５３ａは、フラグメントバッファ５２ａに最初に格納されたフラグメントパケットＦ１をフラグメントバッファ５２ａから読み出す。パケット廃棄部５３ａは、読み出したパケットがパケット廃棄リスト４３に記録された廃棄対象であるかを判定する。ここでは、パケット廃棄リスト４３には、データが登録されていないので、パケット廃棄部５３ａは、フラグメントパケットＦ１は廃棄対象ではないと判定する。すると、パケット廃棄部５３ａは、フラグメントパケットＦ１を送信部５５ａに出力する。
【００５４】
送信部５５ａは、送信バッファ５４ａに格納されているパケットの送信処理を行った上でさらに他のパケットの処理が可能になると、パケット廃棄部５３ａから入力されたパケットの送信処理を行う。このため、フラグメントパケットＦ１は、送信部５５ａから転送先の中継装置１０ｂに送信される。
【００５５】
一方、廃棄要求生成部５１ａは、適宜、フラグメントバッファ５２ａの空き容量をモニタしているので、フラグメントパケットＦ１が読み出されると、フラグメントバッファ５２ａの空き容量を更新する。廃棄要求生成部５１ａは、更新後の空き容量がフラグメントパケットＦ５のパケットサイズ以上であると判定すると、フラグメントパケットＦ５をフラグメントバッファ５２ａに出力する。このため、フラグメントＦ２〜Ｆ５がフラグメントバッファ５２ａに格納される。
【００５６】
（ｂ７）中継装置１０ｂがフラグメントパケットＦ１を中継装置１０ａから受信すると、中継装置１０ｂは、手順（ｂ１）〜（ｂ４）で説明した処理と同様の処理を、フラグメントパケットＦ１に対して行う。このため、フラグメントバッファ５２ｂに、フラグメントパケットＦ１が格納される。
【００５７】
（ｂ８）中継装置１０ａがフラグメントパケットＦ６をエッジノード５ａから受信すると、手順（ｂ６）で述べた処理と同様の処理が行われる。このため、フラグメントパケットＦ２は、送信部５５ａから転送先の中継装置１０ｂに送信される。また、フラグメントＦ３〜Ｆ６がフラグメントバッファ５２ａに格納される。一方、フラグメントパケットＦ２を受信した中継装置１０ｂでは、手順（ｂ７）で述べた処理と同様の処理が行われるため、フラグメントパケットＦ１、Ｆ２がフラグメントバッファ５２ｂに格納される。
【００５８】
（ｂ９）中継装置１０ａがフラグメントパケットＦ７、Ｆ８をエッジノード５ａから受信した場合も、手順（ｂ６）で述べた処理と同様の処理が行われる。また、フラグメントパケットＦ３、Ｆ４が中継装置１０ｂに送信され、中継装置１０ｂにおいて手順（ｂ７）で述べた処理と同様の処理が行われる。このため、フラグメントバッファ５２ａにはフラグメントパケットＦ５〜Ｆ８が格納され、フラグメントバッファ５２ｂにはフラグメントパケットＦ１〜Ｆ４が格納される。
【００５９】
ここで、フラグメントパケットＦ７を中継装置１０ａが受信してからフラグメントパケットＦ８を受信するまでの間の時間が長かったためフラグメントパケットＦ５については、フラグメントバッファ５２ａに格納されている時間が所定の時間を越えたとする。すると、パケット廃棄部５３ａは、フラグメントパケットＦ５を読み出して送信部５５ａに出力する。送信部５５ａは、フラグメントパケットＦ５を中継装置１０ｂに送信する。
【００６０】
（ｂ１０）中継装置１０ｂは、フラグメントパケットＦ５を受信すると、手順（ｂ６）で述べた処理と同様の処理を行う。このため、中継装置１０ｂのフラグメントバッファ５２ｂには、フラグメントパケットＦ２〜Ｆ５が格納され、フラグメントパケットＦ１は、中継装置１０ｃに転送される。中継装置１０ｃでは、手順（ｂ１）〜（ｂ４）と同様の処理により、フラグメントバッファ５２ｃにフラグメントパケットＦ１が格納される。
【００６１】
〔パケットの消失の発生を検出した中継装置での動作〕
フラグメントパケットＦ９にエラーが発生した場合を例として、パケットの消失に伴って、廃棄対象のパケットを特定する方法を説明する。
【００６２】
中継装置１０ａの受信バッファ２２ａは、受信部２１ａを介してフラグメントパケットＦ９を取得する。エラー検出部２３ａは、フラグメントパケットＦ９を受信バッファ２２ａから読み出して、フラグメントパケットＦ９にエラーが発生しているかを判定する。ここでは、フラグメントパケットＦ９にエラーが発生しているものとする。
【００６３】
図１２は、エラーの検出による情報の更新の例を説明するフローチャートである。図１２を参照しながら、パケット中にエラーが検出された場合の処理の例を説明する。エラー検出部２３ａは、フラグメントパケットＦ９のエラーを検出する（ステップＳ２２）。エラー検出部２３ａは、エラーを検出したパケットがフラグメントパケットである場合、ＩＰヘッダをエラー特定部３１ａに出力する。エラー特定部３１ａは、入力されたＩＰヘッダから、パケットＩＤ、送信元ＩＰアドレス、宛先ＩＰアドレス、フラグメントオフセット値、ＩＰフラグの値をフラグメントデータ管理部３２ａに出力する（ステップＳ２３）。フラグメントデータ管理部３２ａは、入力された情報を用いて、フラグメントデータテーブル４１ａを更新する。このとき、フラグメントデータ管理部３２ａは、エラー特定部３１ａから通知されたパケットに対応するエラーの有無を、エラーを有することを示す情報に設定する（ステップＳ２４）。このため、フラグメントパケットＦ９に関するエントリは、例えば、図８のフラグメントデータテーブル４１ａのＮｏ．９のように表わされる。なお、エッジノード５ａにおいて送信パケットがフラグメントパケットＦ１〜Ｆ９に分割されているので、フラグメントパケットＦ９では、最終フラグの値が０に設定されている。さらに、フラグメントデータ管理部３２ａは、入力されたパケットが最終のフラグメントであるかを最終フラグの値を用いて判定する（ステップＳ２５）。フラグメントデータ管理部３２ａは、最終フラグ＝０の場合に、入力されたパケットは最終パケットであると判定し、最終フラグ＝１の場合は、入力されたパケットは最終パケットではないと判定する。最終パケットではないと判定した場合、フラグメントデータ管理部３２ａは、エラーが検出されたパケットのパケットＩＤ、送信元ＩＰアドレス、宛先ＩＰアドレス、廃棄設定信号を廃棄設定部３３ａに出力する（ステップＳ２５でＮｏ、ステップＳ２６）。ここで、廃棄設定信号は、エラーが発見されたパケットと同じパケットから生成されたフラグメントパケットの廃棄処理中であり、かつ、廃棄対象のパケットを新たに受信する可能性があることを示す。
【００６４】
一方、フラグメントパケットＦ９のように、最終パケットにエラーが発見された場合、
フラグメントデータ管理部３２ａは、エラーが検出されたパケットを特定するための情報の他に、廃棄解除信号を廃棄設定部３３ａに出力する（ステップＳ２５でＹｅｓ、ステップＳ２７）。ここで、エラーが検出されたパケットを特定するための情報は、パケットＩＤ、送信元ＩＰアドレス、宛先ＩＰアドレスの組合せである。また、廃棄解除信号は、廃棄対象として通知されたパケットＩＤを含む受信済みのパケットを廃棄した後で、廃棄の設定を解除することを要求する信号である。換言すると、廃棄解除信号は、エラーが発見されたパケットと同じパケットから生成されたフラグメントパケットを、中継装置１０が新たに受信しないことを示す。
【００６５】
図１２を参照しながらフラグメントパケットＦ９について中継装置１０ａでエラーが発見された場合を例として説明したが、他の中継装置１０がエラーを発見した場合も、図１２に示す処理と同様の処理が行われる。また、ステップＳ２６とＳ２７において廃棄設定部３３に通知される情報要素は、実装に応じて変更されても良い。
【００６６】
図１３は、パケット廃棄リスト４３の例を示す図である。パケット廃棄リスト４３は、エラーが発見されたパケットに含まれているパケットＩＤ、廃棄開始状態、廃棄状態が含まれる。廃棄開始状態は、対応付けられたパケットＩＤを含むパケットがパケット廃棄部５３での廃棄対象になっていることを表わす情報である。つまり、廃棄開始状態は、パケットＩＤごとに、パケットの廃棄が開始されたかを示す情報である。廃棄設定部３３は、パケット廃棄リスト４３に新たなパケットＩＤを登録する場合、廃棄開始状態の値を０とする。廃棄開始状態＝０は、廃棄対象のパケットの廃棄が開始されていないことを示す。一方、廃棄開始状態＝１は、廃棄対象のパケットの廃棄処理中であることを示す。
【００６７】
廃棄状態は、廃棄処理が終了したかを示す。廃棄状態の値が０に設定されている場合、対応付けられたパケットＩＤを含むフラグメントパケットを以後も受信する可能性があるので、廃棄処理は終了していない。このため、フラグメントバッファ５２に含まれているパケットの処理が終わった後も、廃棄状態＝０となっているパケットＩＤを含むパケットは、削除対象としてモニタされる。
【００６８】
一方、対応付けられたパケットＩＤを含むフラグメントパケットを新たに受信する可能性がない場合、パケット廃棄部５３は、フラグメントバッファ５２中に格納されている廃棄対象のパケットを削除すると、廃棄状態の値を１に設定する。パケット廃棄部５３の処理の詳細については後述する。フラグメントパケットＦ９でエラーが発見された場合、廃棄設定部３３ａは、図１３のＮｏ．１に示す情報をパケット廃棄リスト４３ａに登録する。
【００６９】
次に、図７の場合の例を参照しながら、フラグメントパケットＦ９にエラーが発生した場合の廃棄処理の具体例を説明する。
【００７０】
（ｃ１）廃棄設定部３３ａは、パケット廃棄リスト４３ａの更新を行うと、パケット廃棄部５３ａに、パケット廃棄リスト４３ａを更新したことを通知する。パケット廃棄部５３ａは、パケット廃棄リスト４３ａが更新されたことが通知されると、パケット廃棄リスト４３ａから、廃棄対象のパケットに含まれているパケットＩＤを取得する。パケット廃棄部５３ａは、取得したパケットＩＤを含むフラグメントパケットを、フラグメントバッファ５２ａから削除する。パケット廃棄リスト４３ａが図１３に示すとおりであるとすると、パケット廃棄部５３ａは、パケットＩＤがａａａａかｃｃｃｃのパケットを廃棄対象として認識する。
【００７１】
（ｃ２）廃棄要求生成部５１ａは、フラグメントパケットＦ６のフラグメントオフセットの値が０であるかを判定する。フラグメントオフセットの値が０である場合、中継装置１０ａが先頭パケットを削除できることになる。しかし、フラグメントパケットＦ６のフラグメントオフセットは０ではないので、廃棄要求生成部５１ａは、パケットＩＤ＝ａａａａの先頭パケットを中継装置１０ａで削除できないと判定する。
【００７２】
廃棄要求生成部５１ａは、先頭パケットの転送先にパケットＩＤ＝ａａａａのパケットの廃棄を要求するための廃棄要求を生成する。廃棄要求は、廃棄要求生成部５１が処理対象としたフラグメントパケットのフラグメントオフセットを無効値、かつ、最終フラグ＝０に設定したパケットである。廃棄要求生成部５１ａは、フラグメントオフセットを無効値とするために、例えば、フラグメントオフセットの全てのビットを１に設定できる。フラグメントオフセットの全てのビットが１である場合、分割対象となったパケット中のデータの６５５２８バイト以降の情報を含むことを表わす。しかし、ジャンボパケット中のデータの最大サイズは９６００バイト程度であるため、以下の説明では、フラグメントオフセットの全てのビットが１の場合は、廃棄要求であるものとする。図７の例では、廃棄要求生成部５１ａは、フラグメントパケットＦ６のフラグメントオフセットの全てのビットを１に設定し、さらに、最終フラグを０に設定することにより、廃棄要求を生成する。廃棄要求生成部５１ａは、生成した廃棄要求を、送信バッファ５４ａに出力する。
【００７３】
図１４は、廃棄要求の送信方法の例を説明する図である。廃棄要求生成部５１ａは、生成した廃棄要求を送信バッファ５４ａに挿入する。送信部５５ａは、送信バッファ５４ａに格納されているパケットの送信処理を優先的に行うので、廃棄要求は優先的に送信処理の対象となる。送信部５５ａは、廃棄要求を中継装置１０ｂに送信する。
【００７４】
（ｃ３）さらに、パケット廃棄部５３ａは、フラグメントバッファ５２ａからフラグメントパケットを読み出し、パケットＩＤがａａａａのパケットを廃棄する。ここでは、パケット廃棄部５３ａは、フラグメントパケットＦ８とＦ７を廃棄する。
【００７５】
（ｃ４）その後、エラーが発生しているフラグメントパケットＦ９がフラグメントバッファ５２ａに入力されると、パケット廃棄部５３ａは、フラグメントパケットＦ９を削除する。なお、パケット廃棄部５３ａは、削除するパケットが最終パケットであるかを、最終フラグの値を用いて判定する。フラグメントパケットＦ９は最終パケットであるので、最終フラグ＝０である。このため、パケット廃棄部５３ａは、今後はエラーが発生しているパケットと同じパケットから生成されたフラグメントパケットを受信しないと判定する。パケット廃棄部５３ａは、パケット廃棄リスト４３ａのＮｏ．１のエントリ（パケットＩＤ＝ａａａａ）について、廃棄状態を１に設定する。この処理により、中継装置１０ａは、パケットＩＤ＝ａａａａのパケットの廃棄処理を終了する。
【００７６】
図１５は、廃棄設定部３３の処理の例を説明するフローチャートである。廃棄設定部３３は、フラグメントデータ管理部３２からパケット廃棄リスト４３の変更指示を取得する（ステップＳ３１）。廃棄設定部３３は、取得したＩＰアドレスとポートテーブル４２を用いて、廃棄対象のパケットの送信ポートの情報を取得する（ステップＳ３２）。さらに、廃棄設定部３３は、取得したパケットＩＤがパケット廃棄リスト４３に登録済みであるかを判定する（ステップＳ３３）。取得したパケットＩＤがパケット廃棄リスト４３に登録されていない場合、廃棄設定部３３は、取得したパケットＩＤについてのエントリをパケット廃棄リスト４３に追加する（ステップＳ３３でＮｏ、ステップＳ３４）。一方、取得したパケットＩＤがパケット廃棄リスト４３に登録済みである場合、廃棄設定部３３はパケット廃棄リスト４３を更新しない（ステップＳ３３でＹｅｓ）。その後、廃棄設定部３３は、廃棄設定信号と廃棄解除信号のいずれをフラグメントデータ管理部３２から取得したかを判定する（ステップＳ３５）。取得した信号が廃棄設定信号である場合、廃棄設定部３３は処理を終了する（ステップＳ３５で廃棄設定）。
【００７７】
取得した信号が廃棄解除信号である場合、廃棄設定部３３は、取得したパケットＩＤに対応付けられた廃棄状態の値を、パケット廃棄リスト４３から読み出す（ステップＳ３６）。廃棄設定部３３は、読み出した状態が、廃棄済みを示しているかを判定する（ステップＳ３７）。廃棄設定部３３は、取得したパケットＩＤに対応付けられた廃棄状態が廃棄済ではない場合、ステップＳ３６に戻る（ステップＳ３７で廃棄未）。一方、取得したパケットＩＤの値が廃棄済みとなると、廃棄設定部３３は、そのパケットＩＤについてのエントリをパケット廃棄リスト４３から削除する（ステップＳ３７で廃棄済み）。例えば、図１３のＮｏ．２のエントリに示すように廃棄状態の値が１（廃棄済み）となると、廃棄設定部３３は、パケットＩＤ＝ｂｂｂｂのパケットについての廃棄処理が終了したと判定して、Ｎｏ．２のエントリを削除する。
【００７８】
図１６は、パケットの廃棄処理の例を説明するフローチャートである。パケット廃棄部５３は、フラグメントバッファ５２からフラグメントパケットを取得する（ステップＳ４１）。パケット廃棄部５３は、パケット廃棄リスト４３を読み出し、取得したパケット中のパケットＩＤと、廃棄対象に設定されているパケットＩＤを比較する（ステップＳ４２、Ｓ４３）。パケット廃棄部５３は、取得したパケットのパケットＩＤがパケット廃棄リスト４３において廃棄対象に設定されているかを判定する（ステップＳ４４）。取得したパケットのパケットＩＤが廃棄対象に設定されていない場合、パケット廃棄部５３は、送信部５５を介して、取得したパケットを中継先に送信する（ステップＳ４４でＮｏ、ステップＳ４５）。
【００７９】
取得したパケットのパケットＩＤが廃棄対象に設定されている場合、パケット廃棄部５３は、廃棄開始状態が１に設定されているかを判定する（ステップＳ４４でＹｅｓ、ステップＳ４６）。廃棄開始状態＝０の場合、パケット廃棄部５３は、パケットの廃棄を開始することになるので、廃棄開始状態を１に設定する（ステップＳ４７）。廃棄要求生成部５１は、廃棄対象のフラグメントパケット中のフラグメントオフセットの値が０であるかを判定する（ステップＳ４８）。フラグメントオフセットの値が０ではない場合、処理対象のパケットは先頭パケットではないため、廃棄要求生成部５１は、そのパケットと同じパケットＩＤのパケットについての廃棄要求の送信を行ったかを判定する（ステップＳ４９）。廃棄要求の送信済みでない場合、廃棄要求生成部５１は、読み出したパケットのフラグメントオフセットの全てのビットの値を１に設定し、廃棄要求を生成する（ステップＳ５０）。なお、廃棄要求では、最終フラグは０に設定される。廃棄要求生成部５１は、送信バッファ５４に廃棄要求を格納する。送信部５５は、廃棄要求を送信バッファ５４から読み出し、中継先の中継装置１０に廃棄要求を送信する（ステップＳ５１）。
【００８０】
一方、フラグメントオフセットの値が０である場合、廃棄要求生成部５１は、処理対象のパケットは先頭パケットであるため、他の中継装置１０に廃棄要求を送信しない（ステップＳ４８でＹｅｓ、ステップＳ５４）。このため、パケット廃棄部５３は、読み出したパケットを廃棄して、処理を終了する（ステップＳ５５）。
【００８１】
ステップＳ４６で廃棄開始状態＝１だと判定した場合、パケット廃棄部５３は、読み出したパケットが最終パケットであるかを、最終フラグを用いて判定する（ステップＳ４６で１、ステップＳ５２）。処理対象のパケットが最終パケットである場合、パケット廃棄部５３は、パケット廃棄リスト４３において、処理対象のパケットに含まれているパケットＩＤに対応付けられたエントリの廃棄状態を１に設定する（ステップＳ５２でＹｅｓ、ステップＳ５３）。その後、パケット廃棄部５３は、処理対象のパケットを廃棄する（ステップＳ５５）。一方、処理対象のパケットが最終パケットではない場合も、パケット廃棄部５３は、パケットを廃棄する（ステップＳ５２でＮｏ、ステップＳ５５）。
【００８２】
〔パケットの消失の発生を通知された中継装置での処理〕
次に、図７を参照しながら、パケットの消失の発生を通知された中継装置での処理の例を説明する。
【００８３】
（ｄ１）中継装置１０ｂの受信部２１ｂは、中継装置１０ａから廃棄要求を受信する。廃棄要求は、受信バッファ２２ｂに格納され、エラー検出部２３ｂに読み出される。エラー検出部２３ｂは、読み出したパケットのフラグメントオフセットの値を参照することにより、廃棄要求を受信したかを判定する。ここでは、手順（ｃ２）で生成された廃棄要求が、エラー検出部２３ｂの処理対象になっている。エラー検出部２３ｂは、処理対象のパケットが廃棄要求であると判定すると、エラーを検出した場合と同様に、廃棄要求のＩＰヘッダをエラー特定部３１ｂに出力する。廃棄要求のＩＰヘッダがエラー特定部３１ｂに出力された後の処理は、図１２を参照しながら説明したステップＳ２３〜Ｓ２７の処理と同様である。このため、廃棄要求の受信により、フラグメントデータテーブル４１ｂは、図８に示すとおりになる。さらに、パケット廃棄リスト４３ｂも、図１２、図１３を用いて説明した手順により更新されるため、パケット廃棄部５３ｂは、パケットＩＤがａａａａのパケットを廃棄対象として認識する。なお、図７の例では、廃棄要求の処理を行っている間に、フラグメントパケットＦ２が中継装置１０ｃに転送されている。
【００８４】
（ｄ２）廃棄要求生成部５１ｂは、フラグメントバッファ５２ｂからフラグメントパケットＦ３を読み出すと、フラグメントオフセットの値が０であるかを判定する。フラグメントパケットＦ３のフラグメントオフセットの値は０ではないので、廃棄要求生成部５１ｂは、手順（ｃ２）や図１４で説明した処理と同様の処理により、廃棄要求を生成し、中継装置１０ｃに送信する。
【００８５】
（ｄ３）パケット廃棄部５３ｂは、フラグメントバッファ５２ｂからフラグメントパケットＦ４、Ｆ５を読み出して、廃棄する。フラグメントパケットの廃棄の際に行われる処理は、図１５、図１６を参照しながら説明した処理と同様である。
【００８６】
（ｄ４）中継装置１０ｃの受信バッファ２２ｃは、受信部２１ｃを介して、中継装置１０ｂから廃棄要求を受信する。エラー検出部２３ｃは、読み出したパケットのフラグメントオフセットの値から、廃棄要求を受信したと判定する。エラー検出部２３ｃは、廃棄要求のＩＰヘッダをエラー特定部３１ｃに出力する。その後の処理は、図１２のステップＳ２３〜Ｓ２７や、図１３を参照しながら説明した処理と同様である。このため、パケット廃棄部５３ｃは、パケットＩＤがａａａａのパケットを廃棄対象として認識する。
【００８７】
（ｄ５）廃棄要求生成部５１ｃは、フラグメントバッファ５２ｃの先頭に格納されているフラグメントパケットＦ１を読み出すと、フラグメントオフセットの値が０であるかを判定する。フラグメントパケットＦ１のフラグメントオフセットの値は０であるので、廃棄要求生成部５１ｃは、中継装置１０ｃにおいて先頭パケットを廃棄できると判定し、廃棄要求を生成しない。パケット廃棄部５３ｃは、フラグメントパケットＦ１とＦ２を削除する。
【００８８】
このように、エラーが検出されたフラグメントパケットと同じ送信パケットから生成されたフラグメントパケットは、それぞれのパケットを保持している中継装置１０において廃棄される。このため、送信パケットの復元に失敗することにより廃棄されることになるフラグメントパケットは、送信パケットを復元するエッジノード５に向けて転送されない。従って、実施形態にかかる方法では、廃棄対象のパケットの送受信を最小限にとどめることができ、通信を効率化できる。
【００８９】
＜第２の実施形態＞
第２の実施形態では、中継装置１０がフラグメントバッファ５２の容量を超えてフラグメントパケットを受信したために、ｔａｉｌ  ｄｒｏｐが発生する場合について説明する。ｔａｉｌ  ｄｒｏｐが発生した場合にも、後述するように、パケットのエラーが発生したときと同様に、送信パケットの復元に使用できない無駄なパケットの転送処理の削減を行うことができる。
【００９０】
図１７は、Ｔａｉｌ  Ｄｒｏｐの検出方法の例を説明する図である。第２の実施形態においても、受信処理部２０、制御部３０で行われる処理と、フラグメントデータテーブル４１、ポートテーブル４２、パケット廃棄リスト４３の更新方法は第１の実施形態と同様であるものとする。廃棄要求生成部５１は、フラグメントバッファ５２の空き容量が、新たに格納しようとするフラグメントパケットの容量を下回ると、Ｔａｉｌ  Ｄｒｏｐが発生したと判定する。
【００９１】
図１８Ａと図１８Ｂは、第２の実施形態での送信処理部５０の動作の例を説明するフローチャートである。廃棄要求生成部５１は、フラグメント検出部２４からフラグメントパケットを取得する（ステップＳ６１）。廃棄要求生成部５１は、フラグメントバッファ５２の使用状況をチェックする（ステップＳ６２）。廃棄要求生成部５１は、フラグメントバッファ５２に、取得したフラグメントパケットを格納するための空き容量があるかを判定する（ステップＳ６３）。空き容量がない場合、廃棄要求生成部５１は、読み出したパケットのＴＯＳフィールドの値を高優先に設定する（ステップＳ６３で「無し」、ステップＳ６４）。廃棄要求生成部５１は、パケットのフラグメントオフセットの全てのビットを１に設定し、廃棄要求を生成する（ステップＳ６５）。廃棄要求生成部５１は、廃棄要求を送信バッファ５４に出力し、送信部５５を介して、先頭パケットの転送先に廃棄要求を送信する（ステップＳ６６）。
【００９２】
一方、フラグメントバッファ５２に空き容量がある場合、廃棄要求生成部５１は、フラグメントバッファ５２に、取得したフラグメントパケットを出力する（ステップＳ６３で「有り」）。フラグメントバッファ５２は、廃棄要求生成部５１から入力されたパケットを格納する（ステップＳ６７）。廃棄要求生成部５１は、新たに格納されたパケットのサイズを用いて、パケットを格納した後のフラグメントバッファ５２の空き容量を算出する（ステップＳ６８、Ｓ６９）。フラグメントバッファ５２の空き容量が、閾値を超えると、廃棄要求生成部５１は、フラグメントバッファ５２の空き容量が十分であると判定して、ステップＳ６１以降の処理を繰り返す（ステップＳ７０でＹｅｓ）。ここで、閾値は、フラグメントパケットの格納に成功する可能性が高いと見込まれる程度の値である。閾値は実装に応じて設定され、例えば、フラグメントパケットの平均的なサイズや、ステップＳ６８で取得したパケットの大きさなどに設定され得る。
【００９３】
一方、フラグメントバッファ５２の空き容量が、閾値以下の場合、廃棄要求生成部５１は、フラグメントバッファ５２の空き容量が不十分であることをパケット廃棄部５３に通知する（ステップＳ７０でＮｏ）。パケット廃棄部５３は、フラグメントバッファ５２がバッファの空き容量がないことを認識する（ステップＳ７１）。以下、フラグメントバッファ５２の空き容量が不十分な状態を「バッファフル」と記載することがある。パケット廃棄部５３は、強制的にパケットをフラグメントバッファ５２から読み出して、送信部５５に出力することにより、パケットの転送処理を行う（ステップＳ７２、Ｓ７３）。パケット廃棄部５３は、パケットを強制的に送信すると、バッファフル状態を解除し、読み出しタイマを初期化する（ステップＳ７４、Ｓ７５）。ここで、読み出しタイマは、パケット廃棄部５３がパケットの強制的な読み出しを行うトリガとなるタイマである。パケット廃棄部５３は、読み出しタイマを開始し、読み出しタイマが満了するまで待機する（ステップＳ７６、Ｓ７７でＮｏ）。読み出しタイマが満了すると、パケット廃棄部５３は、パケットをフラグメントバッファ５２から読み出し、送信部５５を介して、中継先へ転送する（ステップＳ７７でＹｅｓ、ステップＳ７８、Ｓ７９）。その後、パケット廃棄部５３は、読み出しタイマを初期化し、次のパケットがフラグメント検出部２４から廃棄要求生成部５１に出力されたかを判定する（ステップＳ８０、Ｓ８１）。次のパケットがフラグメント検出部２４から廃棄要求生成部５１に出力された場合、ステップＳ６１以降の処理が繰り返される（ステップＳ８１でＹｅｓ）。一方、次のパケットがフラグメント検出部２４から廃棄要求生成部５１に出力されていない場合、ステップＳ７６以降の処理が繰り返される（ステップＳ８１でＮｏ）。
【００９４】
図１７〜図１８Ｂを参照しながら説明した処理により、Ｔａｉｌ  Ｄｒｏｐが発生した中継装置１０からフラグメントパケットを受信する中継装置１０では、Ｔａｉｌ  Ｄｒｏｐにより廃棄対象となったパケットのパケットＩＤを特定できる。このため、Ｔａｉｌ  Ｄｒｏｐが発生した中継装置１０からフラグメントパケットを受信する中継装置１０は、第１の実施形態で説明した処理と同様の処理により、廃棄対象のパケットを廃棄できる。なお、第２の実施形態では、廃棄要求に含まれている最終フラグは１に設定しておくことにより、廃棄要求の送信先の中継装置１０に対して、新たに廃棄対象のパケットが送信される可能性があることも通知できる。従って、第２の実施形態を用いると、Ｔａｉｌ  Ｄｒｏｐによるフラグメントパケットの消失が発生した場合でも、廃棄対象のフラグメントパケットの転送処理による通信効率の低下を回避できる。
【００９５】
＜変形例＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００９６】
中継装置１０は、フラグメントバッファ５２の他に、フラグメント送信バッファ５６を保持していても良い。フラグメントバッファ５２に所定の数のパケットが格納されるか、いずれかのフラグメントパケットがフラグメントバッファ５２に格納されている期間が所定の時間を越えると、フラグメントバッファ５２中の全てのパケットがフラグメント送信バッファ５６に出力される。図１９〜図２１を用いて、フラグメントバッファ５２とフラグメント送信バッファ５６が併用される場合の処理の例を説明する。図１９〜図２１の例でも、図７を用いて説明した例と同様に、１つの送信パケットから生成されたフラグメントパケットＦ１〜Ｆ９が、エッジノード５ａから中継装置１０ａに送信されるものとする。また、図７と比較しやすくするために、図１９〜図２１の例でも、フラグメントパケットＦ１〜Ｆ９のパケットＩＤがａａａａであり、フラグメントパケットＦ９でエラーが発生している場合を例として説明する。
【００９７】
フラグメントパケットＦ１〜Ｆ４は、手順（ｂ１）〜（ｂ５）と同様に処理されるので、中継装置１０ａのフラグメントバッファ５２ａには、フラグメントパケットＦ１〜Ｆ４が格納される。フラグメントバッファ５２ａに格納されたパケットの数が閾値と一致すると、フラグメントバッファ５２ａ中の全てのフラグメントパケットは、図１９に示すように、フラグメント送信バッファ５６ａに出力される。図１９の例では、閾値は４である。
【００９８】
パケット廃棄部５３ａは、フラグメント送信バッファ５６ａ中のフラグメントパケットを、一定の時間ごとに、１つずつ読み出す。パケット廃棄部５３ａは、読み出したフラグメントパケット中のパケットＩＤがパケット廃棄リスト４３ａに廃棄対象として記録されていない場合、読み出したパケットを送信部５５ａに出力する。このため、フラグメントパケットＦ１〜Ｆ４の処理中に、これらのパケットのパケットＩＤが廃棄対象とされていない場合、図１９に示すように、フラグメントパケットＦ１〜Ｆ４が中継装置１０ｂに転送される。
【００９９】
フラグメントパケットＦ１〜Ｆ４の転送処理中に、中継装置１０ａがフラグメントパケットＦ５〜Ｆ８を受信したとすると、同様の処理により、フラグメントパケットＦ５〜Ｆ８もフラグメント送信バッファ５６ａに出力される。パケット廃棄部５３ａがフラグメントパケットＦ５、Ｆ６を送信部５５ａに出力したことにより、これらのパケットも中継装置１０ｂに転送される。中継装置１０ｂでも中継装置１０ａと同様の処理が行われる。
【０１００】
その後、中継装置１０ａがフラグメントパケットＦ９を受信すると、図７を参照しながら説明した手順（ｃ１）の処理により、パケット廃棄部５３ａは、パケットＩＤ＝ａａａａのパケットを廃棄対象として認識する。すると、パケット廃棄部５３ａは、手順（ｃ３）、（ｃ４）と同様の処理により、フラグメントパケットＦ７〜Ｆ９を削除する。さらに、廃棄要求生成部５１ａは、フラグメントパケットＦ７を用いて、手順（ｃ２）と同様の処理により、廃棄要求を生成し、送信部５５ａを介して、中継装置１０ｂに送信する。
【０１０１】
図２０は、中継装置１０ｂが廃棄要求を受信した場合の例を示している。中継装置１０ｂが廃棄要求を受信すると、パケット廃棄部５３ｂは、手順（ｄ１）と同様の手順によりパケットＩＤ＝ａａａａのパケットを廃棄対象として認識する。そこで、パケット廃棄部５３ｂは、フラグメントパケットＦ４を転送せずに廃棄する。また、廃棄要求生成部５１ｂは、フラグメントパケットＦ４を用いて廃棄要求を生成し、中継装置１０ｃに送信する。
【０１０２】
図２１は、図２０を用いて説明した処理が行われた後に、中継装置１０ｂと中継装置１０ｃで行われる処理の例を示す。中継装置１０ｂでは、フラグメントバッファ５２ｂ中のパケットＦ５がフラグメントバッファ５２ｂに格納されている時間が所定の値に達すると、フラグメントパケットＦ５、Ｆ６がフラグメント送信バッファ５６ｂに読み出される。パケット廃棄部５３ｂは、フラグメント送信バッファ５６ｂ中のフラグメントパケットＦ５、Ｆ６を廃棄する。一方、中継装置１０ｃでも、手順（ｄ４）と同様の処理により、パケット廃棄部５３ｃがパケットＩＤ＝ａａａａのパケットを廃棄対象として認識する。その後、フラグメントパケットＦ１がフラグメントバッファ５２ｃに格納されている時間が所定の値に達すると、フラグメントパケットＦ１〜Ｆ３は、フラグメントバッファ５２ｃからフラグメント送信バッファ５６ｃに読み出される。パケット廃棄部５３ｃは、フラグメント送信バッファ５６ｃ中のフラグメントパケットＦ１〜Ｆ３を廃棄する。
【０１０３】
以上の説明で参照したフラグメントデータテーブル４１、ポートテーブル４２、パケット廃棄リスト４３は一例であり、各テーブルに含まれる情報要素は、実装に応じて変更され得るものとする。
【０１０４】
第２の実施形態において、Ｔａｉｌ  Ｄｒｏｐが発生した中継装置１０においても、フラグメントパケットの廃棄処理が行われるように変形される場合がある。例えば、中継装置１０ａにおいて、フラグメントバッファ５２ａの空き容量が不足したことによりＴａｉｌ  Ｄｒｏｐが発生し、パケットＩＤ＝ｂｂｂｂのパケットが廃棄対象となったとする。このとき、廃棄要求生成部５１ａは、適宜、廃棄要求を送信すると共に、廃棄対象のパケットに含まれているパケットＩＤをパケット廃棄部５３ａに通知する。パケット廃棄部５３ａは、廃棄要求生成部５１ａから通知されたパケットＩＤも、パケット廃棄リスト４３に廃棄対象として記録されているパケットＩＤと同様に、廃棄対象として特定する。このため、パケット廃棄部５３ａは、フラグメントバッファ５２ａ中のフラグメントパケットのうち、廃棄対象となっているパケットの転送処理を防止できる。
【０１０５】
第１の実施形態と第２の実施形態は組み合わせることができる。また、第１の実施形態と、第２の実施形態に対する変形例を組み合わせても良いものとする。複数の実施形態を組み合わせることにより、エラーの発生によりフラグメントパケットが消失したときと、Ｔａｉｌ  Ｄｒｏｐによりパケットが消失した場合のいずれでも、無駄なパケットの転送を防止し、通信を効率化することができる。
【符号の説明】
【０１０６】
５  エッジノード
１０  中継装置
１１、１２  ポート
２０  受信処理部
２１  受信部
２２  受信バッファ
２３  エラー検出部
２４  フラグメント検出部
３０  制御部
３１  エラー特定部
３２  フラグメントデータ管理部
３３  廃棄設定部
３４  ポートテーブル更新部
４０  記憶部
４１  フラグメントデータテーブル
４２  ポートテーブル
４３  パケット廃棄リスト
５０  送信処理部
５１  廃棄要求生成部
５２  フラグメントバッファ
５３  パケット廃棄部
５４  送信バッファ
５５  送信部
５６  フラグメント送信バッファ
１０１  プロセッサ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ネットワーク接続装置
１０５  バス
【図３】
2015144390.tif 000003
【図４】
2015144390.tif 000004
【図５】
2015144390.tif 000005
【図６】
2015144390.tif 000006
【図７】
2015144390.tif 000007
【図８】
2015144390.tif 000008
【図９】
2015144390.tif 000009
【図１０】
2015144390.tif 000010
【図１１】
2015144390.tif 000011
【図１２】
2015144390.tif 000012
【図１３】
2015144390.tif 000013
【図１４】
2015144390.tif 000014
【図１５】
2015144390.tif 000015
【図１６】
2015144390.tif 000016
【図１７】
2015144390.tif 000017
【図１８Ａ】
2015144390.tif 000018
【図１８Ｂ】
2015144390.tif 000019
【図１９】
2015144390.tif 000020
【図２０】
2015144390.tif 000021
【図２１】
2015144390.tif 000022
【図１】
2015144390.tif 000023
【図２】
2015144390.tif 000024