(57)【要約】【課題】長大パケットに対するアセンブル手段も具備しながら，高速なアセンブル処理を効率的なバッファメモリの使用方法によって実現することにより，全てのフラグメントパケットをリアセンブル可能とする。【解決手段】ネットワークを通して端末間でパケットデータを送受信するパケット転送装置における断片パケット処理方法において，ネットワーク内の転送最大パケット長を超えたために断片化されたパケットを受信し，前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，あるいは，３個以上に断片化されたパケットであるかを識別し，前記識別された２個に断片化されたパケットに対して，それぞれのオフセット値を基準に順番に組立バッファに格納し，順次に読み出し，前記識別された３個以上に断片化されたパケットに対して，組立バッファをチェーン接続して受信順に格納し，読み出しの際に前記オフセット値の比較により順序を判定して読み出すことにより，断片化に対する再組立を行う。【選択図】図９
2006074726.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，
パケットを受信し，
前記受信されたパケットに対し，元のパケットから所定数に断片化されたパケットか，あるいは前記所定数より多くの個数に断片化されたパケットであるかを識別し，
前記識別された所定数に断片化されたパケットに対して，予め前記所定数の断片化されたパケットを格納できるバッファを確保し，前記所定数の断片化されたパケットを断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出す，
ことを特徴とする断片パケット処理方法。
【請求項２】
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，
パケットを受信し，
前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，あるいは，３個以上に断片化されたパケットであるかを識別し，
前記識別された２個に断片化されたパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出す，
ことを特徴とする断片パケット処理方法。
【請求項３】
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，
パケットを受信し，
前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，あるいは，３個以上に断片化されたパケットであるかを識別し，
前記識別された２個に断片化されたパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出し，
３個以上に断片化されたパケットについては断片化の正常性，全フラグメントパケットの受信監視のみを行い，受信パケットをソフトウェア処理部に転送し，前記ソフトウェア処理部で，前記３個以上に断片化されたパケットの再組立を行う
ことを特徴とする断片パケット処理方法。
【請求項４】
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，
パケットを受信し，
前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットで，且つ元のパケット長が所定値以下であるか，あるいは，３個以上に断片化されたパケットであるかを識別し，
前記識別された２個に断片化され，且つ元のパケット長が所定値以下であるパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出し，
３個以上に断片化されたパケット及び，元のパケット長が所定値以上である２個の断片化されたパケットについては断片化の正常性，全断片化パケットの受信監視のみ行い，受信パケットをソフトウェア処理部に転送し，前記ソフトウェア処理部で，前記３個以上に断片化されたパケット及び，元のパケット長が所定値以上である２個の断片化されたパケットの再組立を行う
ことを特徴とする断片パケット処理方法。
【請求項５】
ネットワークを通してパケットデータを送受信するパケット転送装置において，
パケットの受信部と，
前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，
前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，
前記リアセンブル処理部は，
フラグメントパケットが元のパケットから所定個に断片化されたパケットか，前記所定個より多くに断片化されたパケットかを判定する判定部と，
前記判定された所定個に断片化されたパケットを断片化された順に格納するバッファと，前記所定個より多くに断片化されたパケットをそれぞれ格納する複数のバッファを含むバッファメモリと，
前記バッファに格納された前記所定個の断片化されたパケットを先頭から順に読み出しを行う第１の出力処理部と，
前記所定個より多くに断片化されたパケットについて全断片化パケットの受信監視のみを行い，前記複数のバッファから受信パケットを転送する第２の出力処理部を備え，更に，
前記第２の出力処理部から転送される前記所定個より多くに断片化されたパケットに対する再組立を行うソフトウェア処理部と，
前記第１の出力処理部と，前記ソフトウェア処理部からの再組立されたパケットを多重化して出力するパケット処理部を
有することを特徴とするパケット転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法及びこれを用いるパケット転送装置に関する。
【背景技術】
【０００２】
ネットワークを通してパケットデータを送受信するパケット転送装置は，概念的に図１で示すネットワークにより説明される。図１において，パケット転送装置は，ノードＡ,ノードＢとして示され，ノードＡに収容される複数の端末TE1〜TEn，サーバSA，あるいはインターネットINTからのデータを暗号化，及びカプセル化機能 (Ｓ１)を有している。さらに，カプセル化されたデータは，ＩＰトンネル１００を通してノードＢに転送される。
【０００３】
この場合，かかるシステムにおいて，ノードＡに収容される複数の端末TE1〜TEn，サーバＳＡ，あるいはインターネットＩＮＴからのデータを暗号化し，カプセル化する際(Ｓ1)に，所定のヘッダが付加される（I）。これにより，ネットワークで規定された最大転送バイト長（ＭＴＵ）を超える場合がある。かかる場合は，送信側ノードＡは，カプセル化されたデータをＭＴＵ値内となるように複数のパケットにフラグメント(断片化)する機能を有している(Ｓ２)。
【０００４】
これにより暗号化データ(Ｉ)は，断片化される(II)。このフラグメント(断片化)されたパケットがＩＰトンネル１００に送出される。
【０００５】
一方，ＩＰトンネル１００の受信側ノードＢでは，フラグメントされた暗号化データのパケットについてリアセンブル(再組立)し（Ｓ３），ノードＡで作成された暗号化データ（I）と同じものが得られる（III）。
【０００６】
ついで，ノードＢは，暗号化データを復号化し，アウタヘッダを外すようにデカプセル化を行い（Ｓ４），暗号化前のデータを得る(IV)。
【０００７】
図２，図３にＩＰパケットのフラグメントフォーマット例(図２はＩＰv6，図３はＩＰv4パケットの例)を示す。各図において，（Ａ）は２パケットにフラグメントする例であり，（Ｂ）は３パケットにフラグメントする例である。
【０００８】
例えば，図２において，２パケットにフラグメントする場合，ＩＰv6ヘッダを有するカプセル化されたデータは，Ｌ１の長さのデータ１と，Ｌ２の長さのデータ２に分割され，それぞれＩＰv6ヘッダ改と，フラグメントヘッダが付され，断片化されたパケットとなる。
【０００９】
図２に示すＩＰv6のフラグメントフォーマットでは，ＩＰv6ヘッダ改にペイロード長，変更されたネクストヘッダＮＨ値を含み，更にフラグメントヘッダが追加されている。ＩＰv6ヘッダ改のネクストヘッダＮＨ値によりフラグメントヘッダの有無が分り，従って，これにより受信されるパケットがセグメント化されたパケットか否かが判定される。
【００１０】
また，フラグメントヘッダは，断片オフセット値，継続フラグ及び識別子を有する。更に，ＩＰv6ヘッダ改には，ソースアドレスを有し，このソースアドレスと，フラグメントヘッダの識別子により，セグメント化された元の暗号化データのパケットを特定することができる。また，それぞれのフラグメントヘッダの断片オフセット値と，断片継続フラグ（１または０）により，分割されたそれぞれの断片データ位置が判別可能である。
【００１１】
暗号化パケットを，図２，図３に示すようなフラグメントフォーマットに従い，送信側ノードＡにおいてフラグメント処理(Ｓ２)することは，パケット単位にシリアルで処理できるためハードウェアで高速処理を実現することは比較的容易である。
【００１２】
一方，受信側ノードＢでのリアセンブル処理(Ｓ３)については，フラグメントされた全パケットの受信を監視し，パケットを再組立する必要があるが，このときフラグメントパケット内の順序性がネットワーク内でくずれる場合があること（順序逆転）や，ネットワークより複数のフラグメントパケットを同時多重で受信する場合があることにより，処理が複雑となる。
【００１３】
図４は，フラグメント(断片)パケットのリアセンブル処理（Ｓ３）の手順例を示す図である。図５は，かかる従来例のリアセンブル処理（Ｓ３）を適用する受信側パケット転送装置の構成例を示す図である。さらに，図６は，図４及び図５におけるリアセンブル処理を説明する図である。
【００１４】
図４において，パケット受信部３で受信したパケットに対し，フラグメント判定検索部１において，フラグメントパケットであるか否かを，ＩＰv6ヘッダ改あるいは，ＩＰv4ヘッダにより，フラグメントヘッダの有無の判断により判定する（処理工程Ｐ１）。
【００１５】
フラグメントヘッダがなければ，断片（フラグメント）パケットでないと判断し，そのままパケット処理部５に送られる（処理工程Ｐ１，Ｎ）。フラグメントパケットであると判断される場合は（処理工程Ｐ１，Ｙ），パケットヘッダ内のソースアドレス(IP＿SA)とフラグメント識別子ＩＤとにより何れの暗号化パケットからフラグメント化されたパケットであるかの検索を，既にリアセンブリ処理対象として登録(エントリー)されたエントリデータと比較して行う（処理工程Ｐ２）。
【００１６】
この検索処理により，登録されたリアセンブリ処理対象と不一致である時（処理工程Ｐ３，Ｎ），新規フラグメントパケットと判定して，ソースアドレス(IP＿SA)とフラグメント識別子ＩＤを新規に取り込み(エントリー：Entry)（処理工程Ｐ４），新規であるという検索結果と新規エントリーをリアセンブリ処理部４に通知する（処理工程Ｐ６）。
【００１７】
一方，検索一致の時（処理工程Ｐ３，Ｙ）は，組立(リアセンブリ)中であるという検索結果を通知する（処理工程Ｐ６）。これに基づき，後続フラグメントパケットとして，検索結果から同一フラグメントパケットをフラグメント識別子ＩＤから識別し，通知されたエントリー毎にリアセンブル処理部４において，パケットをオフセット値の順に組み立てる（処理工程Ｐ７）。
【００１８】
このようにして，フラグメント組立が完了した場合は（処理工程Ｐ８，Ｙ），フラグメント判定検索部１に対してエントリーの解除を指示する（処理工程Ｐ９）。
【００１９】
図６に上記図４における組立処理（処理工程Ｐ７）における従来のリアセンブル(再組立)処理の一例を示す。
【００２０】
図６に示す処理では，フラグメント判定検索部１において，パケット受信部３で受信された受信パケットのエントリーを検索するが，リアセンブリ処理部４には，検索エントリー対応に固定長の組立バッファメモリ２が割り付けられている。組立バッファメモリ２は，同時処理するエントリーの数分用意される。
【００２１】
フラグメント判定検索部１により得られたパケットとその検索情報に基づき，パケットヘッダの断片オフセット値Ｌに対応した組立バッファメモリ２のアドレス位置にデータ部(データ1，データ２，データ３)を書込み，ヘッダ（Ｈ１，Ｈ２，Ｈ３）は組立バッファメモリ２のヘッダ格納部２ａに格納される。
【００２２】
ここで，フラグメントパケットのヘッダ情報として，図２，図３に示したように，断片オフセット値Ｌ，継続パケットの有無を示すフラグＭを有する。断片オフセット値Ｌは，ペイロードデータの開始位置の先頭パケットのヘッダからの大きさであり，断片オフセット値＝０のとき先頭パケットを表し，フラグＭは，継続パケットがあるときはＭ＝１，最終パケットであるときＭ＝０である。
【００２３】
ついで，全フラグメントパケット受信後に，リアセンブリ組立処理部４において，エントリー対応の組立バッファメモリ２からパケットデータを順に読み出すことによりリアセンブル処理を行う。また，ここでヘッダの付け替え変更等の処理が施され，パケット処理部５に送られ，送信部６から送出される。
【００２４】
このように，図６に示すリアセンブリ組立処理部４の処理は，ハードウエアにより処理され，高速処理が可能である。
【００２５】
図７にリアセンブル処理（Ｓ３）を適用する受信側パケット転送装置の他の構成例を示す。さらに，図８は，図７におけるリアセンブル処理を説明する図である。
【００２６】
図７の構成例は，フラグメント判定検索部１によりフラグメントパケットであると判定すると，リアセンブル処理をソフトウェア処理部８でソフトウェア処理により行う構成である。図７において，フラグメント検索判定部１で判定されたフラグメントパケットはインターフェース７を通してソフトウェア処理部８に転送される。そこでソフトウェア処理による検索・組立処理が行われ，リアセンブルされた後，再びインターフェース7を通し，パケット処理部５に転送される。
【００２７】
図８に示すようにソフトウェア処理部８において，エントリー対応に受信順に組立バッファメモリ２にチェーンで繋いでパケットを蓄積する。しかし，蓄積されたフラグメントパケットはフラグメント順に受信されているとは限らないため，全パケット受信後にヘッダ内の継続情報Ｍ，断片オフセット値Ｌによりフラグメント順を判定した後，フラグメント順に並び替える（フラグメント順に読出す）ことによりリアセンブル処理が行われる。
【００２８】
このような方法はパケット順序判定処理に時間がかかるが，組立バッファメモリ２の効率的な使用が図られるため，高速処理を必要としない装置では有効であり，ソフトウェア，ファームウェアを介した処理として有効である。
【００２９】
また，上記に関連する技術として，パケットの処理に関する発明として，拡張回線から受信したＡＴＭセルを基に，パケットを組立メモリに蓄積するとともに，このメモリから読み出し，アドレス解決できるパケットはハードウェアで，アドレス解決できないパケットは，ソフトウェアで処理することが提案されている(特許文献１)。
【特許文献１】特開２００１−２２３７０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００３０】
図１のようなＩＰトンネル１００を通して暗号化パケットをギガビット等の高速で転送させるようなシステムのパケット転送装置でフラグメントパケットを受信した場合，リアセンブルしたパケットを高速で復号化部へ転送しなければならない。
【００３１】
このために，図４〜図６に示した従来例のようなリアセンブル処理を行えば，ハードウェアによる高速処理が可能である。しかし，全フラグメントパケットを受信するまではフラグメントを行う前のパケット長が判定できない。このため，あらかじめ一定長のバッファを用意すると，リアセンブル後のパケット長がそのバッファ長を超えることとなる場合にはリアセンブルできない。
【００３２】
一方，フラグメントパケットに対して，図７，図８に示した従来例のようなソフトウェア処理部８でリアセンブル処理を行う場合は，フラグメントパケットを連続して受信した時の処理が間に合わないという問題がある。
【００３３】
さらに，図４〜図６に示した前者の処理において，上記のようにフラグメントパケットをリアセンブル対象とするとリアセンブル後の最大パケット長分のエリアを組立用に確保する必要がある。ネットワーク上に流れるパケット長（フラグメント前）の上限は６４Ｋバイトの可能性があり，全てのフラグメントパケットを処理できるようにするためには（６４Ｋバイト）×同時処理数分のバッファメモリが必要となる。したがって，メモリコスト，実装スペース的に非常に不利となる。
【００３４】
かかる点に鑑みて本発明の目的は，長大パケットに対するアセンブル手段も具備しながら，高速なアセンブル処理を効率的なバッファメモリの使用方法によって実現することにより，全てのフラグメントパケットをリアセンブル可能とする方法及びこれを用いるパケット転送装置を提供することにある。
【課題を解決するための手段】
【００３５】
上記の本発明の目的達成のために，本発明者は次の考慮を行った。すなわち，図１において説明したように，カプセル化，暗号化により，ＭＴＵ値を超過してフラグメントが必要となる際のＭＴＵ値の超過値が数バイトから数十バイトとなるのが一般的である。
【００３６】
イーサネットのＭＴＵ値（1500バイト）を考えると，フラグメント化の効率，またネットワーク上での転送効率を考えると２つのパケットにフラグメントされるのが最も効率的である。
【００３７】
以上の点から，ＩＰトンネル化のカプセル化，暗号化による要因でのフラグメントに関すれば，ほとんど２つのパケットにフラグメントされると考えられる。したがって，本発明は，所定個数の例えば，２つのパケットにフラグメントされたパケットと，それ以外即ち，３以上のパケットのフラグメントを識別し，２つのパケットにフラグメントされたパケットについては用意された２つのパケットが格納できるバッファメモリ内にオフセット値に従って書き込むことによりハードウェアによる高速なリアセンブルを行う。
【００３８】
３パケット以上にフラグメントされたパケットについては，ソフトウェア処理部に転送する等による低速処理のリアセンブル処理に委ねることで，長大パケットも含んだフラグメントパケットの高速受信に対して，全てのフラグメントパケットをリアセンブル可能とすることを特徴する。
【００３９】
かかるソフトウェア処理による３パケット以上にフラグメントされたパケットに対するリアセンブル処理部は，前記高速のリアセンブル処理部を第１のリアセンブル処理部とすると，第２のリアセンブル処理部である。
【００４０】
さらに，上記の高速でのリアセンブル処理と低速でのリアセンブル処理との処理分担として以下のような処理方法を特徴とする。
【００４１】
１）低速リアセンブル処理を行うフラグメントパケットを第２のリアセンブル処理部であるソフトウェア処理部に転送し，ソフトウェア処理部で独自にリアセンブル処理を行ってリアセンブル済みパケットを第１のリアセンブル処理部であるハードウェア処理部に戻す。
【００４２】
２）ハードウェア処理部における高速リアセンブル処理が行った検索によるエントリーの付与をソフトウェア処理部にも引継ぎ，ソフトウェアでの検索の負荷を軽減し，またハードウェア処理部による組立処理中に検出された低速リアセンブル処理用パケットのフラグメント異常やタイマオーバ時，ハードウェア処理部のバッファメモリに残っている  パケットを廃棄するとともに，既に一部のフラグメントパケットがソフトウェアに転送  されている場合はソフトウェア処理部に対して廃棄情報を通知してソフトウェア処理部での異常検出処理負荷を軽減させる。
【００４３】
３）低速リアセンブル処理もハードウェア処理部で行うことも可能である。このとき高速リアセンブル処理で使用したバッファメモリを低速リアセンブル処理で共有することによりバッファメモリの増加を押さえることが可能である。
【００４４】
そして，上記の目的に対応する断片パケット処理方法は，第１の側面として，
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，  パケットを受信し，  前記受信されたパケットに対し，元のパケットから所定数に断片化されたパケットか，あるいは前記所定数より多くの個数に断片化されたパケットであるかを識別し，  前記識別された所定数に断片化されたパケットに対して，予め前記所定数の断片化されたパケットを格納できるバッファを確保し，前記所定数の断片化されたパケットを断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出す，ことを特徴とする。
【００４５】
上記の目的に対応する断片パケット処理方法は，第２の側面として，ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，パケットを受信し，前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，あるいは，３個以上に断片化されたパケットであるかを識別し，前記識別された２個に断片化されたパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出す，ことを特徴とする。
【００４６】
上記の目的に対応する断片パケット処理方法は，第３の側面として，ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，パケットを受信し，前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，あるいは，３個以上に断片化されたパケットであるかを識別し，前記識別された２個に断片化されたパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出し，３個以上に断片化されたパケットについては断片化の正常性，全フラグメントパケットの受信監視のみを行い，受信パケットをソフトウェア処理部に転送し，前記ソフトウェア処理部で，前記３個以上に断片化されたパケットの再組立を行うことを特徴とする。
【００４７】
第２，第３の側面において，前記３個以上に断片化されたパケットに対し，組立バッファをチェーン接続して受信順に格納し，全フラグメントパケット受信後に，チェーン情報とチェーン内のフラグメントパケットの前記オフセット値の比較により順序を判定して読み出すことにより，断片化に対する再組立を行うことが可能である。
【００４８】
上記の目的に対応する断片パケット処理方法は，第４の側面としてネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，パケットを受信し，前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットで，且つ元のパケット長が所定値以下であるか，あるいは，３個以上に断片化されたパケットであるかを識別し，前記識別された２個に断片化され，且つ元のパケット長が所定値以下であるパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出し，３個以上に断片化されたパケット及び，元のパケット長が所定値以上である２個の断片化されたパケットについては断片化の正常性，全断片化パケットの受信監視のみ行い，受信パケットをソフトウェア処理部に転送し，前記ソフトウェア処理部で，前記３個以上に断片化されたパケット及び，元のパケット長が所定値以上である２個の断片化されたパケットの再組立を行うことを特徴とする。
【００４９】
第４の側面において，前記３個以上に断片化されたパケット及び，元のパケット長が所定値以上である２個の断片化されたパケットに対し，組立バッファをチェーン接続して受信順に格納し，全フラグメントパケット受信後に，チェーン情報とチェーン内のフラグメントパケットのオフセット値の比較により順序を判定して読み出すことにより，断片化に対する再組立を行うことが可能である。
【００５０】
上記の目的に対応する本発明の第５の側面として，ネットワークを通してパケットデータを送受信するパケット転送装置に特徴を有し，パケットの受信部と，前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，前記リアセンブル処理部は，フラグメントパケットが元のパケットから所定個に断片化されたパケットか，前記所定個より多くに断片化されたパケットかを判定する判定部と，前記判定された所定個に断片化されたパケットを断片化された順に格納するバッファと，前記所定個より多くに断片化されたパケットをそれぞれ格納する複数のバッファを含むバッファメモリと，前記バッファに格納された前記所定個の断片化されたパケットを先頭から順に読み出しを行う第１の出力処理部と，前記所定個より多くに断片化されたパケットについて全断片化パケットの受信監視のみを行い，前記複数のバッファから受信パケットを転送する第２の出力処理部を備え，更に，前記第２の出力処理部から転送される前記所定個より多くに断片化されたパケットに対する再組立を行うソフトウェア処理部と，前記第１の出力処理部と，前記ソフトウェア処理部からの再組立されたパケットを多重化して出力するパケット処理部を有することを特徴とする。
【００５１】
上記の目的に対応する本発明の第６の側面として，ネットワークを通してパケットデータを送受信するパケット転送装置であって，パケットの受信部と，前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，前記リアセンブル処理部は，フラグメントパケットが元のパケットから２個に断片化されたパケットか，３個以上に断片化されたパケットかを判定する判定部と，前記判定された２個に断片化されたパケットを断片化された順に格納するバッファと，前記３個以上に断片化されたパケットをそれぞれ格納する複数のバッファを含むバッファメモリと，前記バッファに格納された前記２個の断片化されたパケットを先頭から順に読み出しを行う第１の出力処理部と，前記３個以上に断片化されたパケットについて全断片化パケットの受信監視のみを行い，前記複数のバッファから受信パケットを転送する第２の出力処理部を備え，更に，前記第２の出力処理部から転送される３個以上に断片化されたパケットに対する再組立を行うソフトウェア処理部と，前記第１の出力処理部と，前記ソフトウェア処理部からの再組立されたパケットを多重化して出力するパケット処理部を有することを特徴とする。
【００５２】
また，上記の目的に対応する本発明の第７の側面として，ネットワークを通してパケットデータを送受信するパケット転送装置であって，パケットの受信部と，前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，前記リアセンブル処理部は，フラグメントパケットが元のパケットから２個に断片化され，且つ元のパケット長が所定値以下であるパケットか，それ以外のパケットかを判定する判定部と，前記判定された２個に断片化され，且つ元のパケット長が所定値以下であるパケットを断片化された順に格納する第１のバッファと，前記３個以上に断片化されたパケット及び前記２個に断片化され，且つ元のパケット長が所定値以上であるパケットをそれぞれ格納する複数の第２のバッファを含むバッファメモリと，前記第１のバッファに格納された前記２個の断片化されたパケットを先頭から読み出しを行う第１の出力処理部と，前記３個以上に断片化されたパケット及び，前記２個に断片化され，且つ元のパケット長が所定値以上であるパケットについて，全断片化パケットの受信監視のみを行い，前記複数の第２のバッファから受信パケットを転送する第２の出力処理部を備え，更に，前記第２の出力処理部から転送される３個以上に断片化されたパケット及び，前記２個に断片化され，且つ元のパケット長が所定値以上であるパケットに対する再組立を行うソフトウェア処理部と，前記第１の出力処理部と，前記ソフトウェア処理部からの再組立されたパケットを多重化して出力するパケット処理部を有することを特徴とする。
【００５３】
上記第６または７の側面において，前記第２の出力処理部から前記ソフトウェア処理部に転送する断片化パケットに対して，前記リアセンブル部より第２の出力処理部に引き継がれたエントリー番号をもとにしたパケットの識別情報を付与し，前記リアセンブル部でソフトウェア転送用のフラグメントパケットに異常を検出し，かつ一部フラグメントパケットをソフトウェア処理部に転送済みの時，前記リアセンブル部で該当パケットを廃棄するとともに，前記ソフトウェア処理部に対してパケットの識別情報とともに異常検出を通知するようにできる。
【００５４】
また，上記の目的に対応する本発明の第８の側面として，ネットワークを通してパケットデータを送受信するパケット転送装置であって，パケットの受信部と，前記受信部により受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，３個以上に断片化されたパケットであるかを識別するフラグメント判定部と，
前記フラグメント判定部により判定された２個に断片化されたパケットに対して，再組立を行うリアセンブル処理部を有し，前記リアセンブル処理部は，フラグメントパケットが元のパケットから２個に断片化されたパケットか，３個以上に断片化されたパケットかの判定を行う判定部と，前記判定された２個に断片化されたパケットを断片化された順に格納するバッファと，前記３個以上に断片化されたパケットをそれぞれ格納する複数のバッファを含むバッファメモリと，前記バッファメモリのバッファに格納された前記２個の断片化されたパケットを先頭から読み出しを行う第１の出力処理部と，前記３個以上に断片化されたパケットについて，前記バッファメモリ内で複数バッファ間でチェーンを組んで受信順にバッファに格納する手段を有し，前記バッファに全断片化パケットを格納後，前記バッファ内に格納されたパケットおよびバッファ内のパケット情報はそのまま保存し，バッファチェーン情報を引継ぐ第２の出力処理部とを備え，前記第２の出力処理部で引き継がれたエントリーごとのバッファチェーン情報とバッファ内のパケット情報を元に断片化順を判定して，断片化順に前記バッファメモリから読み出すことを特徴とする。
【００５５】
上記の目的に対応する本発明の第９の側面として，ネットワークを通してパケットデータを送受信するパケット転送装置であって，パケットの受信部と，前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，前記リアセンブル処理部は，フラグメントパケットが元のパケットから２個に断片化され，且つ元のパケット長が所定値以下であるパケットか，それ以外のパケットかを判定する判定部と，前記判定された２個に断片化され，且つ元のパケット長が所定値以下であるパケットを断片化された順に格納する第１のバッファと，前記３個以上に断片化されたパケット及び前記２個に断片化され，且つ元のパケット長が所定値以上であるパケットをそれぞれ格納する複数の第２のバッファを含むバッファメモリと，前記第１のバッファに格納された前記２個の断片化されたパケットを先頭から読み出しを行う第１の出力処理部と，前記３個以上に断片化されたパケット及び，２個に断片化され，且つ元のパケット長が所定値以上であるパケットについて，前記バッファメモリ内で前記複数の第２のバッファ間でチェーンを組んで受信順に格納する手段を有し，前記複数の第２のバッファに全断片化パケットを格納後，前記バッファ内に格納されたパケットおよびバッファ内のパケット情報はそのまま保存し，バッファチェーン情報を引継ぐ第２の出力処理部とを備え，前記第２の出力処理部で引き継がれたエントリーごとのバッファチェーン情報とバッファ内のパケット情報を元に断片化順を判定して，断片化順に前記バッファメモリから読み出すことを特徴とする。
【００５６】
さらに，本発明の特徴は，以下に説明される発明の実施の形態例からより明らかになる。
【発明の効果】
【００５７】
本発明によれば，ＩＰトンネルを通して暗号化パケットを高速で転送する転送装置において，リアセンブル用のバッファを効率的に使用して少ないメモリ量で，長大パケットも含んだ全てのフラグメントパケットをリアセンブルすることが可能となる。
【発明を実施するための最良の形態】
【００５８】
以下に図面に従い，本発明の実施の形態例を説明する。なお，図示される実施の形態例は，本発明の理解のためのものであり，本発明の技術的範囲はこれに限定されるものではない。
【００５９】
図９は，本発明の第１の実施の形態例である。図９において，上記第１のリアセンブル処理部における高速でのリアセンブル処理と，第２のリアセンブル処理部における低速でのリアセンブル処理との処理分担を上記の方法１）または２）として，リアセンブル処理を行うパケット転送装置の構成例を示す図である。
【００６０】
図９において，パケット受信部３により受信された受信パケットについて，フラグメント判定検索部１は，ＣＡＭ１０を有し，判定制御部１２の制御により検索ツール１１によりＣＡＭ１０を参照して既に登録されている，受信パケットのエントリーを検索する。
【００６１】
さらに，フラグメント判定検索部１で，先に説明したようにＩＰv6フォーマットではネクストヘッダ（ＮＨ）変更値によりフラグメントヘッダの有無を判定し，フラグメントヘッダを有するフラグメントパケットと判定されると，更にヘッダ情報のソースＩＰアドレスとフラグメントＩＤを基に，フラグメント前のパケット毎にエントリー番号が付与されてリアセンブル部４に通知される。受信パケットが，フラグメントなしと判定されると，そのままパケット処理部５に送られる。
【００６２】
リアセンブル部４ではエントリー毎に２パケットにフラグメントされたパケットか３パケット以上にフラグメントされたパケットかを識別し，２パケットにフラグメントされたパケットについては高速でリアセンブルしてパケット処理部５に送出する。また３パケット以上にフラグメントされたパケットについてはソフトウェア処理部８に送出される。
【００６３】
組立管理用にエントリー対応の組立管理情報を格納する組立管理メモリ４４が設けられ，全フラグメントパケットを受信するまで状態を管理する。
【００６４】
リアセンブルに用いる組立バッファメモリ２は２フラグメントパケットを格納できる固定長の複数バッファに分割される。また２フラグメントパケットに分割されるパケットが暗号化，カプセル化によるMTU値オーバのパケットがほとんどであることからバッファ長をMTU値＋αとして設定すればより効率的なバッファメモリ２の使用が可能である。
【００６５】
この場合は２パケットにフラグメントされたパケットかつフラグメント前パケット長が一定長以下のときに高速リアセンブルする処理となる。またバッファ管理メモリ２０上にバッファ対応にバッファ管理情報を持ちバッファ間のリンク制御，バッファに格納されたパケットの制御情報を格納する。
【００６６】
ここで，図１０に第１の実施の形態例のリアセンブル組立バッファメモリ２の構成例を示す。本実施の形態例では，メモリのアクセス効率（バーストアクセス）を考えて，２５６バイトをアクセス単位としてバッファ一面の長さを２５６バイト×８の２０４８バイトとしている(図１０Ａ参照)。バッファ管理メモリ２０にはバッファ毎の，バッファのリンク情報，格納されたパケットの種別情報，格納されたパケット長，格納位置情報等が格納される(図１０Ｂ)。受信されたフラグメントパケットは先頭パケットはバッファ先頭より，最終パケットはオフセット値より算出されたバッファ内面番号の先頭より格納される。
【００６７】
なお，図１０Ｃにおいて，（ａ）は２フラグメントパケットの場合のパケット格納例であり，（ｂ）は３フラグメントパケット以上の場合のパケット格納例である。
【００６８】
図１１は，本実施の形態例による２パケットにフラグメントされたパケットのバッファ格納と組立制御を示す図である。
【００６９】
組立管理メモリ４４には，図１１Ａに示すように，エントリー対応に，使用バッファ番号，先頭，最終パケット長，最終パケットのオフセット値，最終以外のペイロード長の加算値，組立の状態情報，全フラグメントパケット受信までのタイミング監視用のタイマ値が格納される。
【００７０】
図１１において，２パケットにフラグメントされ，検索結果判定部４０から出力されるパケットは，エントリー毎(図では，エントリーＸ，Ｙが示されている)に先頭，最終パケットに対応して組立バッファ２内の算出された位置に格納される。組立完了時，格納バッファをリアセンブル出力待ちキューＲＱに繋いだ後，新たなフラグメントパケット用にエントリーを解放する（ＢＱ）。リアセンブル出力キューＲＱに一旦保持されたパケットはリアセンブル出力処理部４１により，バッファ管理メモリ２０に格納されたバッファ管理情報をもとに読み出され，ヘッダの作成，データ部の結合を行いリアセンブル処理される。
【００７１】
図１２は本実施の形態例による３パケット以上にフラグメントされたパケットのバッファ格納と組立制御例を示す図である。
【００７２】
図１２において，最初に受信したパケットについては２パケットにフラグメントされているか判定できない場合，図１１と同様の処理を行うが，２番目に受信するパケットにより，オフセット値Ｌ及び，継続情報Ｍに基づき必ず２パケットにフラグメントされているか否かが判明する。このため，この時点で３パケット以上にフラグメントされていると判定されたら，２番目のパケット格納用に新たにバッファを捕捉してパケットを格納する。
【００７３】
したがって，１番目のパケット格納バッファと２番目のパケット格納バッファはソフトホップと判定されたため，ソフトホップ出力キューＳＨＱ上に一旦保持され，また３番目のパケットも既にソフトホップと判定されているため，同様に新たに捕捉されたバッファに格納されソフトホップ出力キューＳＨＱ上に一旦保持される。
【００７４】
ソフトホップ出力キューＳＨＱに積まれたパケットは，ソフトホップ出力処理部４２により，ソフトホップ出力キューポインタ４６に従い，順にソフトウェア処理部８に送出される。
【００７５】
全フラグメントパケットが受信されたかの判定は，図１２Ａに示す組立管理メモリ４４のエントリー対応の組立管理情報を参照して，最終パケットのオフセット値と最終以外のパケットのペイロード長の総和が一致したかを判定することにより行われる。
【００７６】
ソフトウェア処理部８では，一例として，先に図８において説明した方法でリアセンブル処理が行われる。すなわち，３個以上に断片化されたパケットは，受信順に組立バッファにチェーン接続して格納し，これを読み出しの際に前記オフセット値の比較により順序を判定して読み出すことにより，断片化に対する再組立を行う。
【００７７】
ここで，すべての組立処理において，組立中（１番目のフラグメントパケット受信から全フラグメントパケット受信まで）リアセンブル部４ではエントリー毎にタイミング監視部４３でタイミングを監視する。タイミングオーバした時は，受信パケットは廃棄される。
【００７８】
組立完了または異常により廃棄されたら，該当のエントリーの管理情報は組立管理メモリ４４からクリアされ，フラグメント判定検索部１に対してエントリーが解除されたことを通知する。
【００７９】
また図１１，図１２で示すようなリアセンブル処理またはソフトウェア部８におけるソフトホップ処理が終了したら捕捉していた組立バッファメモリ２のバッファは解放される。
【００８０】
図１３〜１５は本実施の形態例のリアセンブル処理における検索結果判定，組立制御処理手順を表すフローチャートである。
【００８１】
図１３において，パケット受信部３でパケットを受信すると，フラグメント判定検索部１で受信パケットが，フラグメントパケットであるか否かの判定を行い（処理工程Ｐ１０），送信アドレスＳＡとフラグメントＩＤによりＣＡＭ１０を検索する（処理工程Ｐ１１）。
【００８２】
ついで，パケット組立管理部４０において，組立管理メモリ４４の状態表示を参照し，入力されるフラグメントパケットについてエントリー対応に状態判定を行う（処理工程Ｐ１２）。この判定において，新規エントリーのパケットであれば（処理工程Ｐ１３，Ｙ），最終フラグメントパケットか否かを判定し，最終フラグメントパケットであれば（処理工程Ｐ１４，Ｙ），オフセット値と自ペイロード長の加算値が設定値以下であることを判定する（処理工程Ｐ１５）。
【００８３】
オフセット値と自ペイロード長の加算値が設定値以下であれば（処理工程Ｐ１５，Ｙ），最終受信であり，組立バッファを補足してパケットを最終エリアに格納し（処理工程Ｐ１６），組立管理メモリ４４の対応するエントリーの状態を高速組立中，最終パケット受信済みに設定する（ステップＳ１７）。
【００８４】
処理工程Ｐ１５において，オフセット値と自ペイロード長の加算値が設定値を越えている（処理工程Ｐ１５，Ｎ）時は，３パケット以上でない場合であっても，ソフトウェア処理部８におけるソフトホップ処理を行うために，バッファを捕捉してパケットを格納する（処理工程Ｐ１８）。ついで，捕捉バッファをソフトホップ出力待ちキューＳＨＱへ送る（処理工程Ｐ１９）。そして，組立管理メモリ４４の対応するエントリーの状態をソフトホップ組立中，最終受付済みに設定する（ステップＳ２０）。
【００８５】
さらに，処理工程Ｐ１４において最終フラグメントパケットでなく（処理工程Ｐ１４，Ｎ），オフセット値が０であると（処理工程Ｐ２１，Ｙ），先頭パケットと判断される。
【００８６】
また，自ペイロード長設定値以下である場合（処理工程Ｐ２２，Ｙ），先頭パケット受信であるので，ペイロード長を加算し（処理工程Ｐ２３），組立バッファを補足し，パケットを先頭エリアに格納する（処理工程Ｐ２４）。そして，組立管理メモリ４４の対応するエントリーの状態を高速組立中，最終パケット受信未に設定する（処理工程Ｐ２５）。
【００８７】
さらに，オフセット値が０でない場合は（処理工程Ｐ２１，Ｎ），３以上のフラグメントパケットの中間の断片パケットであることが判る。また，２フラグメントのパケットの先頭パケットであるが，自ペイロード長設定値以上であるとき（処理工程Ｐ２２，Ｎ）は，先に処理工程Ｐ１５で述べたように，ソフトホップ対象とする。
【００８８】
したがって，３以上のフラグメントパケットの中間の断片パケットである場合と同様に，ソフトホップ処理を行うために，バッファを補足し，パケットを格納する（処理工程Ｐ２６）。補足されたバッファをソフトホップ出力待ちキューＳＨＱに送り（処理工程Ｐ２７），組立管理メモリ４４の対応するエントリーの状態をソフトホップ組立中，最終パケット未受信に設定する（処理工程Ｐ２８）。
【００８９】
次に，処理工程Ｐ１３において，新規エントリーのパケットでないと判断されると（処理工程Ｐ１３，Ｎ），図１４の処理に移行し，組立管理メモリ４４の対応するエントリーの状態に基づき状態判定を行う（処理工程Ｐ３０）。
【００９０】
この状態判定において，高速組立中，最終パケット受信済みである場合，最終フラグメントパケットであれば（処理工程Ｐ３１，Ｙ），格納済みパケット及び，受信パケットを廃棄して（処理工程Ｐ３２），エントリー及び，組立バッファを開放する（処理工程Ｐ３３）。
【００９１】
最終パケットでなければ（処理工程Ｐ３１，Ｎ），最終以外のペイロード長を加算する（処理工程Ｐ３４）。このとき，最終オフセット値が最終パケット以外のパケットの加算値に等しく（処理工程Ｐ３５，Ｙ），全ペイロード加算値が設定値以下であれば（処理工程Ｐ３６，Ｙ），受信パケット組立バッファメモリ２の先頭エリアに格納する（処理工程Ｐ３７）。
【００９２】
ついで，組立バッファメモリ２をリアセンブル出力待ちキューＲＡＱへ送り（処理工程Ｐ３８），エントリーを開放する（処理工程Ｐ３９）。
【００９３】
上記処理工程Ｐ３５で，最終オフセット値が最終以外のパケットのペイロード値の加算値に等しくなく，最終オフセット値が最終以外のパケットのペイロードの加算値より大きければ（処理工程Ｐ４０，Ｙ），３パケット以上フラグメントと判定してソフトホップ処理を行う為に，バッファを補足してパケットを格納する（処理工程Ｐ４１）。ついで，組立中バッファと受信パケット格納バッファをソフトホップ出力待ちキューＳＨＱに送り（処理工程Ｐ４２），エントリーの状態をソフトホップ組立中，最終受付済みに設定する（処理工程Ｐ４３）。
【００９４】
高速組立中，最終パケット未受信での処理は，次のように行われる。受信パケットが，最終フラグメントパケットであるか否かを判断し（処理工程Ｐ４４），最終フラグメントパケットであるとき，更に最終パケットのオフセット値が，最終以外のパケットの加算値に等しければ（処理工程Ｐ４５，Ｙ），全ペイロード加算値が設定値以下であるかを判定し，設定値以下であれば（処理工程Ｐ４６，Ｙ），受信パケット組立バッファ２の最終エリアに格納する（処理工程Ｐ４７）。さらに，組立バッファをリアセンブル出力待ちキューＲＡＱに送り（処理工程Ｐ４８），エントリーを開放する（処理工程Ｐ４９）。
【００９５】
処理工程Ｐ４４において，最終フラグメントパケットでない場合（処理工程Ｐ４４，Ｎ）は，３パケット以上フラグメントと判定して最終パケット以外のペイロード長を加算し（処理工程Ｐ５０），バッファを補足してパケットを格納する（処理工程Ｐ５１）。さらに，組立中バッファと受信パケット格納バッファをソフトホップ出力待ちキューＳＨＱに送る（処理工程Ｐ５２）。さらに，エントリーの状態をソフトホップ組立中，最終パケット未受信に設定する（処理工程Ｐ５３）。
【００９６】
さらに，処理工程Ｐ４５で，最終パケットのオフセット値が，最終以外のパケットの加算値に等しくなければ（処理工程Ｐ４５，Ｎ），処理工程Ｐ４０以降の処理に移行する。
【００９７】
また，処理工程Ｐ４６で，全ペイロード加算値が設定値を越えている場合は，バッファを補足してパケットを格納する（処理工程Ｐ５４）。そして，組立中バッファと受信パケット格納バッファをソフトホップ出力待ちキューＳＨＱに送り（処理工程Ｐ５５），エントリーを開放する（処理工程Ｐ５６）。
【００９８】
ついで，エントリー対応の状態判定（処理工程Ｐ３０）において，ソフトホップ組立中である場合の処理は，図１５に示すフローに示される。
【００９９】
ソフトホップ組立中で最終のフラグメントパケットを受付済みである場合において，最終フラグメントパケットでないと（処理工程Ｐ６０，Ｎ），最終以外のパケットのペイロード長を加算し（処理工程Ｐ６１），最終オフセットと最終以外の加算値が等しくなることを判定し（処理工程Ｐ６２，Ｙ），バッファを補足して，パケットを格納する（ステップＳ６３）。ついで，受信パケット格納バッファをソフトホップ出力待ちキューＳＨＱへ送り（処理工程Ｐ６４），ソフトホップ組立を完了してエントリーを開放する（処理工程Ｐ６５）。
【０１００】
処理工程Ｐ６２で，最終オフセットと最終以外の加算値が等しくない場合で，最終オフセットが最終以外のパケットのペイロード長の加算値を超えている場合（処理工程Ｐ６６，Ｙ）は，バッファを補足し，パケットを格納する（処理工程Ｐ６７）。ついで，受信パケット格納バッファソフトホップ出力待ちキューＳＨＱに送る（処理工程Ｐ６８）。
【０１０１】
また，処理工程Ｐ６０で最終フラグパケットであるとき（処理工程Ｐ６０，Ｙ）及び，処理工程Ｐ６６で最終オフセットが最終以外のパケットのペイロード長の加算値を超えていない場合（処理工程Ｐ６６，Ｎ）は，格納済みパケット及び受信パケットを廃棄し（処理工程Ｐ６９），エントリーを開放し（処理工程Ｐ７０），ソフトウエア処理部８に廃棄したエントリーを通知する（処理工程Ｐ７１）。
【０１０２】
一方，ソフトホップ組立中，最終フラグメントパケット未受信であるとき，最終フラグメントパケットか否かを確認し（処理工程Ｐ７２），最終フラグメントパケットでないとき（処理工程Ｐ７２，Ｎ），最終以外のパケットのペイロード長を加算し（処理工程Ｐ７３），バッファを補足し，パケットを格納する（処理工程Ｐ７４）。
【０１０３】
最終フラグメントパケットであり（処理工程Ｐ７２，Ｙ），最終オフセットと最終以外のパケットのペイロード長の加算値が等しいとき（処理工程Ｐ７５，Ｙ），処理工程Ｐ６３に移行し，最終オフセットが，最終以外のパケットのペイロード長の加算値を超えているとき（処理工程Ｐ７６，Ｙ），バッファ補足し，パケットを格納し（処理工程Ｐ７７），受信パケット格納バッファをソフトホップ出力待ちキューＳＨＱへ送る（処理工程Ｐ７８）。
【０１０４】
最終オフセットが，最終以外のパケットのペイロード長の加算値より以下である場合（処理工程Ｐ７６，Ｎ），処理工程Ｐ６９以降の処理に移行する。
【０１０５】
さらに，図１６は，２フラグメントリアセンブル出力処理部４１の処理フローである。図１１に示したように，リアセンブル出力待ちキューＲＱにパケットが有れば（処理工程Ｐ８０，Ｙ），パケット読み出し(結合)ヘッダの書換えを行う（処理工程Ｐ８１）。そして，使用バッファを開放する（処理工程Ｐ８２）。
【０１０６】
また，図１７は，ソフトホップ処理部４２のソフトホップ出力処理の動作フローである。ソフトホップ出力待ちキューＳＨＱにパケットが有れば（処理工程Ｐ９０，Ｙ），パケット読み出しエントリーを付加し（処理工程Ｐ９１），使用バッファを開放する（処理工程Ｐ９２）。
【０１０７】
図１８は，本実施の形態例において，上記した３フラグメント以上のパケットに対するソフトホップ処理を行う際の，フラグメント識別情報のソフトウェア処理部８に対する通知例である。エントリー対応の組立管理メモリ４４に，図１８Ａに示すように，エントリー対応組立管理情報を格納し，ソフトホップ判定時に，フラグメント対応に識別ＩＤを付与する。
【０１０８】
さらに，バッファ管理メモリ２０には，図１８Ｂに示すバッファ管理メモリ情報をバッファ対応に格納する。ソフトホップ出力キューへの積み込み前に制御フラグ，フラグメント識別ＩＤを書き込む。
【０１０９】
３フラグメント以上のパケットのソフトホップ処理部４２から出力されるパケットデータは，インターフェース部７のＤＭＡ制御部によりソフトウェア処理部８のバッファメモリにＤＭＡ転送される。さらに，ソフトホップ毎に図１８Ｃに示すソフトホップ報告情報をインターフェース部７に格納し，ソフトウェア処理部８のＣＰＵにより読み出し処理される。
【０１１０】
図１９は，本発明の第２の実施の形態例として，上記３）の方法により３フラグメント以上のパケットに対してリアセンブル処理をハードウェアで行うパケット転送装置の構成を示す図である。
【０１１１】
また上記第１の実施の形態例の方法と組み合わせてフラグメント前パケット長が一定値を超えたパケットについてハードウェアによる低速処理とすることで，さらにハードウェアメモリを効率的に使用することができる。従来の図５の構成と比較して，リアセンブル組み立てバッファメモリを約１／８に削減可能である。
【０１１２】
この第２の実施の形態例である図１９の構成において，２フラグメントパケットリアセンブル出力処理部４１は，先に図９に関連して説明したと同様である。特徴は，バッファ管理メモリ２０の情報に低速処理でのフラグメント判定用のオフセット値を追加している。
【０１１３】
図２０は第２の実施の形態例におけるバッファメモリ２の構成例であり，図２１は３フラグメント以上のパケットのバッファ書込みを説明する図である。さらに，図２２は本実施の形態例における３フラグメント以上のパケットのバッファ制御を説明する図である。
【０１１４】
第２の実施の形態例において，２フラグメントパケットの処理は先に説明した第１の実施の形態例（図１２）で示した処理と同様である。
【０１１５】
３パケット以上にフラグメントされたパケットについては，図２１に示すように，フラグメントパケット毎にバッファに書き込むが，書き込み済みバッファはエントリー毎，受信順にバッファ管理メモリ２０を用いてチェーンされ，低速リアセンブル処理引継ぎキューＬＱに引き継がれ，組立完了後チェーンされた１組のバッファ情報として低速リアセンブル処理部４２ａに引き継がれる。ここで高速処理でのエントリーは解放される。
【０１１６】
図２３〜２５は第２の実施の形態例の検索判定，組立制御処理を表すフローチャートであり，第１の実施の形態例における処理フローである，図１３〜１５に対応する。そして，第２の実施の形態例では，３フラグメント以上のパケットの処理において，ソフトウェア処理部８におけるソフトホップ処理を行わず，低速リアセンブリ組立処理部４２ａでハードウェアにより処理する点が異なる。すなわち，図１３におけるソフトホップ処理工程Ｐ１８〜Ｐ２０，Ｐ２５〜Ｐ２７が，それぞれ，図２３において，低速処理用の処理工程Ｐ１８ａ〜Ｐ１８ｂ，Ｐ２５ａ〜Ｐ２５ｂに置き換えられる。
【０１１７】
同様に図２４において，図１４におけるソフトホップ処理のためのソフトホップ出力待ちキューは無く，低速リアセンブリ組立処理部４２ａで，エントリー単位にチェーン接続され，処理工程Ｐ４１ａ〜４１ｂ，Ｐ５４ａ〜５４ｂ，Ｐ５１ａ〜５１ｂが異なる。また，図２５では図１５との比較において，処理工程Ｐ６３ａ〜６３ｂ，Ｐ６７ａ，Ｐ７０ａ，Ｐ７７ａ〜７８ａ及び，Ｐ７９，Ｐ７９ａが，第１の実施の形態例と相違している。
【０１１８】
図２６は，第２の実施の形態例において，リアセンブル部４における低速リアセンブル処理を表すフローチャートである。低速処理即ち，引き継ぎ処理の有無を判断し，低速処理待ちがあれば（処理工程Ｐ８０，Ｙ），組立管理メモリ４４の低速リアセンブル管理情報より先頭バッファから最終バッファまでのバッファ管理情報からオフセット値を比較してフラグメント順を判定する（処理工程Ｐ８１）。
【０１１９】
ついで，フラグメント前のパケット長を算出して，リアセンブル後のヘッダを作成する（処理工程Ｐ８２）。フラグメント順のバッファメモリ２からパケットを読み出し，先に算出されたリアセンブル後のヘッダを付加してリアセンブルする（処理工程Ｐ８３）。そして，低速アセンブル処理情報引継ぎキューポインタ４７を更新し，使用していたバッファを開放する（処理工程Ｐ８４）。
【０１２０】
ここで，上記実施例において，受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，あるいは３個以上に断片化されたパケットであるかを識別する例について説明した。しかし，本発明の適用はこれに限られない。すなわち，元のパケットから所定数たとえば，３個に断片化されたパケットか，あるいは前記所定数より多くの個数従って，４以上に断片化されたパケットであるかを識別し，前記識別された所定数に断片化されたパケットに対して，予め前記所定数の断片化されたパケットを格納できるバッファを確保し，前記所定数の断片化されたパケットを断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出すようにハードウエア処理することが可能である。
【０１２１】
すなわち，３個に断片化されたパケットである場合は，断片化された先頭パケットか，最終パケットかの識別ができればそれ以外は，中間のパケットであることが容易に識別でき，断片化された順に組立バッファに格納することが可能である。
【０１２２】
さらに，上記実施例説明では，図１に示したＩＰトンネル１００に接続されたノードＡ，Ｂにおけるパケット転送装置を例として説明した。しかし，本発明は，かかるネットワーク構成における適用に限定されるものではない。
【０１２３】
図２７は，本発明の利用可能な適用例を説明する図である。図２７において，第１にＩＰネットワーク（ＩＰ−ＮＷ）に接続されるモバイルＩＰ（Mobile-IP）に適用可能である。モバイルＩＰは，ＩＰネットワーク上で移動端末ＴＡが移動したときにＩＰアドレスの管理と移動先への通信パケットの転送を自動化する手法が規定されている。ホームエージェントＨＡにおいて，移動端末ＴＡのホームアドレスADD1と移動先アドレスADD2が登録管理される。
【０１２４】
さらに，ＩＰv6ではホームエージェントＨＡと移動端末ＴＡ間でカプセル化したデータをＩＰsec(Security Architecture for IP)によりトンネリングする。また，ＩＰv4では外部エージェントＦＡ（Foreign Agent）を介して移動端末ＴＡとホームエージェントＨＡと接続され，外部エージェントＦＡ（Foreign Agent）とホームエージェントＨＡとの間がＩＰsecによりトンネリングされる。
【０１２５】
したがって，図２７においてＩＰv6では本発明の適用において，移動端末ＴＡとホームエージェントＨＡが，ＩＰv4は，外部エージェントＦＡ（Foreign Agent）とホームエージェントＨＡが図１におけるノードＡ，ノードＢにおけるパケット転送装置に対応し，本発明の適用が可能である。
【０１２６】
また，図２７において，端末ＴＡからインターネットＩＮＴを介して，企業イントラネットのゲートウエイＧＷにリモートアクセスするように構成される場合は，端末ＴＡとゲートウエイＧＷ間にＩＰsec(Security Architecture for IP)によりトンネルが張られる。かかる構成では，端末ＴＡとゲートウエイＧＷが，図１の ノードＡ，ノードＢにおけるパケット転送装置に対応し，本発明の適用が可能である。
【０１２７】
さらに，携帯電話等の移動機のユーザにＩＰネットワークサービスを提供するＧＰＲＳ（General Packet Radio Service）では，ネットワーク内で移動する移動機との通信を維持するためのプロトコルとしてＧＴＰ（ＧＰＲＳTunneling Protocol）が採用されている。すなわち，移動機が属する基地局に接続されたＲＮＣ(Radio Network Controller)とＳＧＳＮ（Serving GPRS support Node）との間にトンネルが張られる。移動機が移動して隣のエリアにハンドオーバするとき，新たなエリアのＲＮＣとの間でトンネルの張替えることで通信が維持される。
【０１２８】
さらに，インターネットＩＮＴまたはイントラネットとの接続点であるＧＧＳＮ（Gateway GPRS Support Node）とＳＧＳＮとの間にもトンネルが張られる。移動機の別
のＳＧＳＮの配下にあるエリアに移動するとき，ＲＮＣとＳＧＳＮとの間のみでなく，ＳＧＳＮとＧＧＳＮとの間においてもトンネルの張替えが行われる。
【０１２９】
かかるＧＰＲＳにおいては，ＲＮＣ，ＳＧＳＮ及びＧＧＳＮが，図１におけるノードＡ，ノードＢにおけるパケット転送装置に対応し，本発明の適用が可能である。
【０１３０】
(付記１)
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，
パケットを受信し，
前記受信されたパケットに対し，元のパケットから所定数に断片化されたパケットか，あるいは前記所定数より多くの個数に断片化されたパケットであるかを識別し，
前記識別された所定数に断片化されたパケットに対して，予め前記所定数の断片化されたパケットを格納できるバッファを確保し，前記所定数の断片化されたパケットを断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出す，
ことを特徴とする断片パケット処理方法。
【０１３１】
(付記２)
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，
パケットを受信し，
前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，あるいは，３個以上に断片化されたパケットであるかを識別し，
前記識別された２個に断片化されたパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出す，
ことを特徴とする断片パケット処理方法。
【０１３２】
(付記３)
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，
パケットを受信し，
前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，あるいは，３個以上に断片化されたパケットであるかを識別し，
前記識別された２個に断片化されたパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出し，
３個以上に断片化されたパケットについては断片化の正常性，全フラグメントパケットの受信監視のみを行い，受信パケットをソフトウェア処理部に転送し，前記ソフトウェア処理部で，前記３個以上に断片化されたパケットの再組立を行う
ことを特徴とする断片パケット処理方法。
【０１３３】
(付記４)
付記２または３において，
前記３個以上に断片化されたパケットに対し，組立バッファをチェーン接続して受信順に格納し，全フラグメントパケット受信後に，チェーン情報とチェーン内のフラグメントパケットの前記オフセット値の比較により順序を判定して読み出すことにより，断片化に対する再組立を行う
ことを特徴とする断片パケット処理方法。
【０１３４】
(付記５)
ネットワークを通してパケットデータを送受信するパケット転送装置における断片パケット処理方法において，
パケットを受信し，
前記受信されたパケットに対し，元のパケットから２個に断片化されたパケットで，且つ元のパケット長が所定値以下であるか，あるいは，３個以上に断片化されたパケットであるかを識別し，
前記識別された２個に断片化され，且つ元のパケット長が所定値以下であるパケットに対して，予め前記２個の断片化されたパケットを格納できるバッファを確保し，前記２個の断片化されたパケットを，それぞれのオフセット値を基準に断片化された順に組立バッファに格納し，前記格納された先頭から順に読み出し，
３個以上に断片化されたパケット及び，元のパケット長が所定値以上である２個の断片化されたパケットについては断片化の正常性，全断片化パケットの受信監視のみ行い，受信パケットをソフトウェア処理部に転送し，前記ソフトウェア処理部で，前記３個以上に断片化されたパケット及び，元のパケット長が所定値以上である２個の断片化されたパケットの再組立を行う
ことを特徴とする断片パケット処理方法。
【０１３５】
(付記６)
付記５において，
前記３個以上に断片化されたパケット及び，元のパケット長が所定値以上である２個の断片化されたパケットに対し，組立バッファをチェーン接続して受信順に格納し，全フラグメントパケット受信後に，チェーン情報とチェーン内のフラグメントパケットのオフセット値の比較により順序を判定して読み出すことにより，断片化に対する再組立を行う
ことを特徴とする断片パケット処理方法。
【０１３６】
(付記７)
ネットワークを通してパケットデータを送受信するパケット転送装置において，
パケットの受信部と，
前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，
前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，
前記リアセンブル処理部は，
フラグメントパケットが元のパケットから所定個に断片化されたパケットか，前記所定個より多くに断片化されたパケットかを判定する判定部と，
前記判定された所定個に断片化されたパケットを断片化された順に格納するバッファと，前記所定個より多くに断片化されたパケットをそれぞれ格納する複数のバッファを含むバッファメモリと，
前記バッファに格納された前記所定個の断片化されたパケットを先頭から順に読み出しを行う第１の出力処理部と，
前記所定個より多くに断片化されたパケットについて全断片化パケットの受信監視のみを行い，前記複数のバッファから受信パケットを転送する第２の出力処理部を備え，更に，
前記第２の出力処理部から転送される前記所定個より多くに断片化されたパケットに対する再組立を行うソフトウェア処理部と，
前記第１の出力処理部と，前記ソフトウェア処理部からの再組立されたパケットを多重化して出力するパケット処理部を
有することを特徴とするパケット転送装置。
【０１３７】
(付記８)
ネットワークを通してパケットデータを送受信するパケット転送装置において，
パケットの受信部と，
前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，
前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，
前記リアセンブル処理部は，
フラグメントパケットが元のパケットから２個に断片化されたパケットか，３個以上に断片化されたパケットかを判定する判定部と，
前記判定された２個に断片化されたパケットを断片化された順に格納するバッファと，前記３個以上に断片化されたパケットをそれぞれ格納する複数のバッファを含むバッファメモリと，
前記バッファに格納された前記２個の断片化されたパケットを先頭から順に読み出しを行う第１の出力処理部と，
前記３個以上に断片化されたパケットについて全断片化パケットの受信監視のみを行い，前記複数のバッファから受信パケットを転送する第２の出力処理部を備え，更に，
前記第２の出力処理部から転送される３個以上に断片化されたパケットに対する再組立を行うソフトウェア処理部と，
前記第１の出力処理部と，前記ソフトウェア処理部からの再組立されたパケットを多重化して出力するパケット処理部を
有することを特徴とするパケット転送装置。
【０１３８】
(付記９)
ネットワークを通してパケットデータを送受信するパケット転送装置において，
パケットの受信部と，
前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，
前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，
前記リアセンブル処理部は，
フラグメントパケットが元のパケットから２個に断片化され，且つ元のパケット長が所定値以下であるパケットか，それ以外のパケットかを判定する判定部と，
前記判定された２個に断片化され，且つ元のパケット長が所定値以下であるパケットを断片化された順に格納する第１のバッファと，前記３個以上に断片化されたパケット及び前記２個に断片化され，且つ元のパケット長が所定値以上であるパケットをそれぞれ格納する複数の第２のバッファを含むバッファメモリと，
前記第１のバッファに格納された前記２個の断片化されたパケットを先頭から読み出しを行う第１の出力処理部と，
前記３個以上に断片化されたパケット及び，前記２個に断片化され，且つ元のパケット長が所定値以上であるパケットについて，全断片化パケットの受信監視のみを行い，前記複数の第２のバッファから受信パケットを転送する第２の出力処理部を備え，更に，
前記第２の出力処理部から転送される３個以上に断片化されたパケット及び，前記２個に断片化され，且つ元のパケット長が所定値以上であるパケットに対する再組立を行うソフトウェア処理部と，
前記第１の出力処理部と，前記ソフトウェア処理部からの再組立されたパケットを多重化して出力するパケット処理部を
有することを特徴とするパケット転送装置。
【０１３９】
(付記１０)
請求項８または９において，
前記第２の出力処理部から前記ソフトウェア処理部に転送する断片化パケットに対して，前記リアセンブル部より第２の出力処理部に引き継がれたエントリー番号をもとにしたパケットの識別情報を付与し，前記リアセンブル部でソフトウェア転送用のフラグメントパケットに異常を検出し，かつ一部フラグメントパケットをソフトウェア処理部に転送済みの時，前記リアセンブル部で該当パケットを廃棄するとともに，前記ソフトウェア処理部に対してパケットの識別情報とともに異常検出を通知することを特徴とするパケット転送装置。
【０１４０】
(付記１１)
ネットワークを通してパケットデータを送受信するパケット転送装置において，
パケットの受信部と，
前記受信部により受信されたパケットに対し，元のパケットから２個に断片化されたパケットか，３個以上に断片化されたパケットであるかを識別するフラグメント判定部と，
前記フラグメント判定部により判定された２個に断片化されたパケットに対して，再組立を行うリアセンブル処理部を有し，
前記リアセンブル処理部は，
フラグメントパケットが元のパケットから２個に断片化されたパケットか，３個以上に断片化されたパケットかの判定を行う判定部と，
前記判定された２個に断片化されたパケットを断片化された順に格納するバッファと，前記３個以上に断片化されたパケットをそれぞれ格納する複数のバッファを含むバッファメモリと，
前記バッファメモリのバッファに格納された前記２個の断片化されたパケットを先頭から読み出しを行う第１の出力処理部と，
前記３個以上に断片化されたパケットについて，前記バッファメモリ内で複数バッファ間でチェーンを組んで受信順にバッファに格納する手段を有し，前記バッファに全断片化パケットを格納後，前記バッファ内に格納されたパケットおよびバッファ内のパケット情報はそのまま保存し，バッファチェーン情報を引継ぐ第２の出力処理部とを備え，
前記第２の出力処理部で引き継がれたエントリーごとのバッファチェーン情報とバッファ内のパケット情報を元に断片化順を判定して，断片化順に前記バッファメモリから読み出すことを特徴とするパケット転送装置。
【０１４１】
(付記１２)
請求項１１において，
ネットワークを通して端末間でパケットデータを送受信するパケット転送装置において，
パケットの受信部と，
前記受信部により受信されたパケットに対し，フラグメントパケットか否かの判定と，断片化されたパケットに対してフラグメント以前のパケット毎にエントリーを検索付与するフラグメント判定検索部と，
前記エントリー毎にパケットのリアセンブルを行うリアセンブル処理部を有し，
前記リアセンブル処理部は，
フラグメントパケットが元のパケットから２個に断片化され，且つ元のパケット長が所定値以下であるパケットか，それ以外のパケットかを判定する判定部と，
前記判定された２個に断片化され，且つ元のパケット長が所定値以下であるパケットを断片化された順に格納する第１のバッファと，前記３個以上に断片化されたパケット及び前記２個に断片化され，且つ元のパケット長が所定値以上であるパケットをそれぞれ格納する複数の第２のバッファを含むバッファメモリと，
前記第１のバッファに格納された前記２個の断片化されたパケットを先頭から読み出しを行う第１の出力処理部と，
前記３個以上に断片化されたパケット及び，２個に断片化され，且つ元のパケット長が所定値以上であるパケットについて，前記バッファメモリ内で前記複数の第２のバッファ間でチェーンを組んで受信順に格納する手段を有し，前記複数の第２のバッファに全断片化パケットを格納後，前記バッファ内に格納されたパケットおよびバッファ内のパケット情報はそのまま保存し，バッファチェーン情報を引継ぐ第２の出力処理部とを備え，
前記第２の出力処理部で引き継がれたエントリーごとのバッファチェーン情報とバッファ内のパケット情報を元に断片化順を判定して，断片化順に前記バッファメモリから読み出すことを特徴とするパケット転送装置。
【産業上の利用可能性】
【０１４２】
上記の構成により，本発明により長大パケットに対するアセンブル手段も具備しながら，高速なアセンブル処理を効率的なバッファメモリの使用方法によって実現することにより，全てのフラグメントパケットをリアセンブル可能とする方法及び装置が提供される。よって，産業上寄与するところ大である。
【０１４３】
また，上記実施の形態の実現のため，ソフトウェア処理部に送出するパケットにエントリー情報を付加する機能とハードウェアによる異常検出をソフトウェアに通知する機能を追加することにより実現できる。ただし高速処理のエントリーは高速リアセンブル処理での組立が完了すると解放され新たなフラグメントパケット用に使用されるため，ソフトウェア処理でエントリー番号が重複しないようにハードウェアのエントリー番号にサイクリックに使用されるソフトウェア用の識別子ＩＤを組み合わせて付与する機能が必要である。
【０１４４】
一般的にソフトウェア処理が必要なパケットは他にも存在する（たとえばトンネル間のキー情報の通知等）ため，ソフトウェアへのパケット転送手段およびソフトウェア処理で使用されるメモリについては共用が可能であり，またかかるメモリは先に図６で示したように効率的に使用されるため，全体として効率的な構成でシステム実現が可能である。
【図面の簡単な説明】
【０１４５】
【図１】ネットワークを通して端末間でパケットデータを送受信するシステムを説明する図である。
【図２】ＩＰパケットのフラグメントフォーマット例(ＩＰv6)を示す図である。
【図３】ＩＰパケットのフラグメントフォーマット例(ＩＰv4)を示す図である。
【図４】フラグメント(断片)パケットのリアセンブル処理（Ｓ３）の手順例を示す図である。
【図５】図４におけるリアセンブル処理（Ｓ３）を適用する受信側パケット転送装置の構成例を示す図である。
【図６】図４及び図５におけるリアセンブル処理を説明する図である。
【図７】リアセンブル処理（Ｓ３）を適用する受信側パケット転送装置の他の構成例を示す図である。
【図８】図７におけるリアセンブル処理を説明する図である。
【図９】本発明の第1の実施の形態例を示す図である。
【図１０】第１の実施の形態例のリアセンブル組立バッファメモリ２の構成例を示す図である。
【図１１】第１の実施の形態例による２パケットにフラグメントされたパケットのバッファ格納と組立制御を説明する図である。
【図１２】第１の実施の形態例による，３パケット以上にフラグメントされたパケットのバッファ格納と組立制御を示す図である。
【図１３】第１の実施の形態例のリアセンブル処理における検索結果判定，組立制御処理手順を表すフローチャート(その１)である。
【図１４】第１の実施の形態例のリアセンブル処理における検索結果判定，組立制御処理手順を表すフローチャート(その２)である。
【図１５】第１の実施の形態例のリアセンブル処理における検索結果判定，組立制御処理手順を表すフローチャート(その３)である。
【図１６】リアセンブリ出力処理の動作フローである。
【図１７】ソフトアップ出力処理の動作フローである。
【図１８】第１の実施の形態例において，３フラグメント以上のパケットに対するソフトホップ処理を行わす際の，フラグメント識別情報のソフトウェア処理部に対する通知例である。
【図１９】本発明の第２の実施の形態例のリアセンブル処理を行うパケット転送装置の構成を示す図である。
【図２０】第２の実施の形態例におけるバッファメモリ２の構成例を示す図である。
【図２１】３フラグメント以上のパケットのバッファ書込みを説明する図である。
【図２２】第２の実施の形態例における３フラグメント以上のパケットのバッファ制御を説明する図である。
【図２３】第２の実施の形態例の検索判定，組立制御処理を表すフローチャート(その１)である。
【図２４】第２の実施の形態例の検索判定，組立制御処理を表すフローチャート(その２)である。
【図２５】第２の実施の形態例の検索判定，組立制御処理を表すフローチャート(その３)である。
【図２６】第２の実施の形態例において，リアセンブル部４における低速リアセンブル処理を表すフローチャートである。
【図２７】本発明の利用可能な適用例を説明する図である。
【符号の説明】
【０１４６】
１  フラグメント判定検索部
２  組立バッファメモリ
３  パケット受信部
４  リアセンブル部
５  パケット処理部
６  パケット送信部
７  インターフェース部
８  ソフトウェア処理部
４０  パケット組立管理部
２０  バッファ管理メモリ
４４  組立管理メモリ
４５  リアセンブル出力キューポインタ
４６  ソフトホップ出力キューポインタ
【図１】
2006074726.tif 000003
【図２】
2006074726.tif 000004
【図３】
2006074726.tif 000005
【図４】
2006074726.tif 000006
【図５】
2006074726.tif 000007
【図６】
2006074726.tif 000008
【図７】
2006074726.tif 000009
【図８】
2006074726.tif 000010
【図９】
2006074726.tif 000011
【図１０】
2006074726.tif 000012
【図１１】
2006074726.tif 000013
【図１２】
2006074726.tif 000014
【図１３】
2006074726.tif 000015
【図１４】
2006074726.tif 000016
【図１５】
2006074726.tif 000017
【図１６】
2006074726.tif 000018
【図１７】
2006074726.tif 000019
【図１８】
2006074726.tif 000020
【図１９】
2006074726.tif 000021
【図２０】
2006074726.tif 000022
【図２１】
2006074726.tif 000023
【図２２】
2006074726.tif 000024
【図２３】
2006074726.tif 000025
【図２４】
2006074726.tif 000026
【図２５】
2006074726.tif 000027
【図２６】
2006074726.tif 000028
【図２７】
2006074726.tif 000029