(57)【特許請求の範囲】
【請求項１】
送信順に応じた大きさのシーケンス番号が付随されたパケットの受信側に設けられ、今回受信したパケットである対象パケットのシーケンス番号を含むパケット情報が入力される整列回路であって、
前記パケット情報を書き込むための領域を複数順次配列してなる整列バッファと、
前記整列バッファの複数の領域のうちの１つを示す選択信号が入力され、該選択信号に応じて、前記対象パケットの前記パケット情報を前記整列バッファへ書き込む書込回路と、
前記対象パケットについて、前記選択信号を生成して前記書込回路に供する制御回路とを備え、
前記制御回路は、
前記整列バッファの先頭の領域が前記パケット情報を書き込まれていない未書込領域であるときに、前記先頭の領域を示す前記選択信号を生成し、
前記整列バッファの先頭の領域が前記パケット情報を書き込まれた書込済領域であるときに、
前記対象パケットの前記パケット情報から該対象パケットのシーケンス番号を取得すると共に、取得したシーケンス番号より大きいシーケンス番号を含む前記パケット情報が書き込まれた各書込済領域のうちの先頭の領域となる境界領域の検索を、前記整列バッファの先頭から末尾に向かう順で、該書込済領域に書き込まれた前記パケット情報に含まれるシーケンス番号と前記対象パケットのシーケンス番号との比較を順次行うことにより実行し、
前記検索により前記境界領域を検出できたときに、該境界領域を示す前記選択信号を生成する一方、末尾の書込済領域まで前記検索を行っても前記境界領域を検出できなかったときに、最後の書込済領域の次の領域を示す前記選択信号を生成し、
前記書込回路は、
前記選択信号により示される領域を起点にして、前記整列バッファの末尾に向かう方向に、各領域に夫々格納されているデータを１領域分シフトすると共に、前記対象パケットの前記パケット情報を前記選択信号により示される領域に書き込むことを特徴とする整列回路。
【請求項２】
前記書込回路は、
前記整列バッファの複数の領域毎に設けられ、段階的に順次接続された複数の選択回路を有し、
前記複数の選択回路のうちの、
前記選択信号により示される領域より前の領域に対応する各選択回路は、何もせず、
前記選択信号により示される領域より後の領域に対応する各選択回路は、自身に対応する領域に、前段の選択回路に対応する領域に格納されているデータをシフトし、
前記選択信号により示される領域に対応する選択回路は、前記対象パケットの前記パケット情報を該領域に書き込むことを特徴とする請求項１に記載の整列回路。
【請求項３】
各パケットに付随されたシーケンス番号は、該パケットの１つ前に送信されたパケットのシーケンス番号とペイロード長とを加算して得た加算値であり、
前記パケット情報は、当該パケットのペイロード長または該ペイロード長を算出可能な値と、該パケットの前記加算値とのいずれか一方をさらに含み、
前記制御回路は、
前記整列バッファの先頭の領域が書込済領域であるときに行う前記境界領域の検索に際して、検索対象領域の判定をすると共に、検索対象領域に判定した各領域のみを前記検索の対象とし、
前記検索対象領域は、前記整列バッファにおける各連続グループの先頭の領域となるグループ先頭領域であり、
前記連続グループは、
前記整列バッファの先頭の領域以外であり、かつ、１つ前の連続グループの末尾の領域の次の領域である書込済領域と、前記整列バッファの先頭の領域とのいずれか一方に該当する領域を前記グループ先頭領域とし、
前記グループ先頭領域のみ、または、前記グループ先頭領域を起点にして配列順が連続する複数の書込済領域であって、該複数の書込済領域の２つ目の領域からの各領域に夫々書き込まれた前記パケット情報に含まれるシーケンス番号が、該領域の１つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する前記複数の書込済領域により構成されることを特徴とする請求項１または２に記載の整列回路。
【請求項４】
前記制御回路は、
「一致する」と「一致しない」のいずれかを示す連続ビットを前記対象パケットの前記パケット情報に付加してから前記書込回路に出力し、
前記検索対象領域を判定する際に、「一致しない」を示す前記連続ビットを含む前記パケット情報が書き込まれた各書込済領域を前記検索対象領域に判定し、
前記対象パケットの前記パケット情報に前記連続ビットを付加する際に、
前記選択信号により示される領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の１つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する場合において、「一致する」を示す値を前記連続ビットに付与し、
他の場合において、「一致しない」を示す値を前記連続ビットに付与することを特徴とする請求項３に記載の整列回路。
【請求項５】
前記制御回路により生成された１つ以上のポインタを記憶するポインタ記憶回路をさらに有し、
前記制御回路は、
前記検索対象領域を判定する際に、前記ポインタ記憶回路に記憶された各ポインタにより夫々示される書込済領域を前記検索対象領域に判定し、
前記選択信号により示される領域が未書込領域である第１の場合において、
該領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の１つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する第１Ａの場合に、ポインタを生成せず、
前記第１Ａの場合に該当しない第１Ｂの場合に、前記選択信号により示される領域を示すポインタを生成し、
前記選択信号により示される領域が書込済領域である第２の場合において、
該領域からのいずれかの領域を示す全てのポインタを、現在示している領域の次の領域を示すように変更し、
前記選択信号により示される領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の１つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する第２Ａの場合に、ポインタを生成せず、
前記第２Ａの場合に該当しない第２Ｂの場合に、前記選択信号により示される領域を示すポインタを生成することを特徴とする請求項３に記載の整列回路。
【請求項６】
前記制御回路は、
前記第２Ａの場合において、前記選択信号により示される領域に書き込まれた前記パケット情報に含まれるシーケンス番号が、前記対象パケットの前記加算値に一致するときにのみ、前記選択信号により示される領域の次の領域を示すポインタを削除し、
前記第２Ｂの場合において、前記選択信号により示される領域に書き込まれた前記パケット情報に含まれるシーケンス番号が、前記対象パケットの前記加算値に一致するときにのみ、ポンタを生成する代わりに、前記選択信号により示される領域の次の領域を示すポインタを、前記選択信号により示される領域を示すように変更することを特徴とする請求項５に記載の整列回路。
【請求項７】
送信順に応じた大きさのシーケンス番号が付随されたパケットを受信した際に、該パケットを対象パケットとして、シーケンス番号を含むパケット情報を生成するパケット情報生成部と、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラと、
整列回路とを備える受信装置であって、
前記整列回路は、
前記パケット情報を書き込むための領域を複数順次配列してなる整列バッファと、
前記整列バッファの複数の領域のうちの１つを示す選択信号が入力され、該選択信号に応じて、前記対象パケットの前記パケット情報を前記整列バッファへ書き込む書込回路と、
前記対象パケットについて、前記選択信号を生成して前記書込回路に供する制御回路とを備え、
前記制御回路は、
前記整列バッファの先頭の領域が前記パケット情報を書き込まれていない未書込領域であるときに、前記先頭の領域を示す前記選択信号を生成し、
前記整列バッファの先頭の領域が前記パケット情報を書き込まれた書込済領域であるときに、
前記対象パケットの前記パケット情報から該対象パケットのシーケンス番号を取得すると共に、取得したシーケンス番号より大きいシーケンス番号を含む前記パケット情報が書き込まれた各書込済領域のうちの先頭の領域となる境界領域の検索を、前記整列バッファの先頭から末尾に向かう順で、該書込済領域に書き込まれた前記パケット情報に含まれるシーケンス番号と前記対象パケットのシーケンス番号との比較を順次行うことにより実行し、
前記検索により前記境界領域を検出できたときに、該境界領域を示す前記選択信号を生成する一方、末尾の書込済領域まで前記検索を行っても前記境界領域を検出できなかったときに、最後の書込済領域の次の領域を示す前記選択信号を生成し、
前記書込回路は、
前記選択信号により示される領域を起点にして、前記整列バッファの末尾に向かう方向に、各領域に夫々格納されているデータを１領域分シフトすると共に、前記対象パケットの前記パケット情報を前記選択信号により示される領域に書き込み、
前記ＤＭＡコントローラは、
前記整列バッファに書き込まれた複数の前記パケット情報をＤＭＡ転送することを特徴とする受信装置。
【請求項８】
前記書込回路は、
前記整列バッファの複数の領域毎に設けられ、段階的に順次接続された複数の選択回路を有し、
前記複数の選択回路のうちの、
前記選択信号により示される領域より前の領域に対応する各選択回路は、何もせず、
前記選択信号により示される領域より後の領域に対応する各選択回路は、自身に対応する領域に、前段の選択回路に対応する領域に格納されているデータをシフトし、
前記選択信号により示される領域に対応する選択回路は、前記対象パケットの前記パケット情報を該領域に書き込むことを特徴とする請求項７に記載の受信装置。
【請求項９】
各パケットに付随されたシーケンス番号は、該パケットの１つ前に送信されたパケットのシーケンス番号とペイロード長とを加算して得た加算値であり、
前記パケット情報生成部は、前記対象パケットのペイロード長または該ペイロード長を算出可能な値と、該パケットの前記加算値とのいずれか一方をさらに含む前記パケット情報を生成し、
前記制御回路は、
前記整列バッファの先頭の領域が書込済領域であるときに行う前記境界領域の検索に際して、検索対象領域の判定をすると共に、検索対象領域に判定した各領域のみを前記検索の対象とし、
前記検索対象領域は、前記整列バッファにおける各連続グループの先頭の領域となるグループ先頭領域であり、
前記連続グループは、
前記整列バッファの先頭の領域以外であり、かつ、１つ前の連続グループの末尾の領域の次の領域である書込済領域と、前記整列バッファの先頭の領域とのいずれか一方に該当する領域を前記グループ先頭領域とし、
前記グループ先頭領域のみ、または、前記グループ先頭領域を起点にして配列順が連続する複数の書込済領域であって、該複数の書込済領域の２つ目の領域からの各領域に夫々書き込まれた前記パケット情報に含まれるシーケンス番号が、該領域の１つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する前記複数の書込済領域により構成されることを特徴とする請求項７または８に記載の受信装置。
【請求項１０】
前記制御回路は、
前記パケット情報生成部により生成された前記パケット情報に、「一致する」と「一致しない」のいずれかを示す連続ビットを付加してから前記書込回路に出力し、
前記検索対象領域を判定する際に、「一致しない」を示す前記連続ビットを含む前記パケット情報が書き込まれた各書込済領域を前記検索対象領域に判定し、
前記対象パケットの前記パケット情報に前記連続ビットを付加する際に、
前記選択信号により示される領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の１つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する場合において、「一致する」を示す値を前記連続ビットに付与し、
他の場合において、「一致しない」を示す値を前記連続ビットに付与することを特徴とする請求項９に記載の受信装置。
【請求項１１】
前記整列回路は、前記制御回路により生成された１つ以上のポインタを記憶するポインタ記憶回路をさらに有し、
前記制御回路は、
前記検索対象領域を判定する際に、前記ポインタ記憶回路に記憶された各ポインタにより夫々示される書込済領域を前記検索対象領域に判定し、
前記選択信号により示される領域が未書込領域である第１の場合において、
該領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の１つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する第１Ａの場合に、ポインタを生成せず、
前記第１Ａの場合に該当しない第１Ｂの場合に、前記選択信号により示される領域を示すポインタを生成し、
前記選択信号により示される領域が書込済領域である第２の場合において、
該領域からのいずれかの領域を示す全てのポインタを、現在示している領域の次の領域を示すように変更し、
前記選択信号により示される領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の１つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する第２Ａの場合に、ポインタを生成せず、
前記第２Ａの場合に該当しない第２Ｂの場合に、前記選択信号により示される領域を示すポインタを生成することを特徴とする請求項９に記載の受信装置。
【請求項１２】
前記制御回路は、
前記第２Ａの場合において、前記選択信号により示される領域に書き込まれた前記パケット情報に含まれるシーケンス番号が、前記対象パケットの前記加算値に一致するときにのみ、前記選択信号により示される領域の次の領域を示すポインタを削除し、
前記第２Ｂの場合において、前記選択信号により示される領域に書き込まれた前記パケット情報に含まれるシーケンス番号が、前記対象パケットの前記加算値に一致するときにのみ、ポンタを生成する代わりに、前記選択信号により示される領域の次の領域を示すポインタを、前記選択信号により示される領域を示すように変更することを特徴とする請求項１１に記載の受信装置。
【請求項１３】
前記ＤＭＡコントローラは、さらに、
前記対象パケットを受信する度に該対象パケットをＤＭＡ転送することを特徴とする請求項７から１２のいずれか１項に記載の受信装置。
【請求項１４】
前記整列バッファは、
前記パケット情報生成部により生成された前記パケット情報と、該パケット情報に対応する前記対象パケットとが入力され、
前記書込回路は、
前記パケット情報と前記対象パケットを前記整列バッファの同一の領域に書き込み、
前記ＤＭＡコントローラは、
前記整列バッファに書き込まれた複数の前記パケット情報と前記対象パケットをＤＭＡ転送することを特徴とする請求項７から１２のいずれか１項に記載の受信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット、特に伝送順序が保証されない伝送路により伝送されるパケットを受信する装置におけるパケットの並び替え技術に関する。
【背景技術】
【０００２】
近年、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）等のアプリケーションソフトウェア（以下、単に「アプリケーション」ともいう）の登場により、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）をベースとしたパケット通信が普及している。
【０００３】
ＩＰをベースとしたパケット通信では、パケットの転送経路が固定されているわけではないため、輻輳などの要因により、受信装置へのパケットの到達順は、必ずしも送信順と一致するとは限らない。受信したパケットを処理するアプリケーションでは、一般的に、送信順と異なる順序で受信したパケットを受け付けない。
【０００４】
従って、送信装置では、送信する各パケットに対して送信順に応じたシーケンス番号を付加し、受信装置では、受信したパケットをシーケンス番号順に並び替えた後にアプリケーションに渡すことが行われている。
【０００５】
受信装置において、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によりパケットの並替えを行うことが知られている。しかし、近年、多種多様なネットワーク機器の普及に伴い、アプリケーションの処理も多様化する一途を辿り、また、光ファイバー通信網により代表される高速通信インフラの整備に伴い、受信装置側での高速な処理が求められている。
【０００６】
このような背景において、ＣＰＵによりパケットの並替えを行うのでは、パケットを受信する度に、ＣＰＵへの割込みが生じるため、アプリケーションの処理は元より、受信装置全体の制御なども司るＣＰＵには大きな負担をかけてしまい、ひいては受信装置全体の効率がよくないという問題がある。
【０００７】
そのため、ＣＰＵの代わりにハードウェアによりパケットの並替えを担うための技術が種々提案されている。
【０００８】
図２９は、特許文献１における図９に対して符号を変更したものであり、該文献における技術を適用した受信装置側のインタフェースを示す。図２９を参照して特許文献１に開示されたパケット並替技術を説明する。
【０００９】
図２９に示すインタフェースは、並替え制御部１、並替えバッファ４を有する。並替え制御部１には、シーケンス番号分離部２と読出しポインタ用リングカウンタ３が設けられている。
【００１０】
並替え制御部１において、シーケンス番号分離部２は、受信したパケットのヘッダからシーケンス番号を分離すると共に、並替えバッファ４における該パケットの書込み位置を示す書込みポインタを生成する。読出しポインタ用リングカウンタ３は、並替えバッファ４からパケットを読み出す位置を示す読出しポインタを生成する。並替えバッファ４は、書込みに際して、書込部（図示せず）により書込みポインタが示す位置にパケットデータを書き込まれ、読出しに際して、読出部（図示せず）により読出しポインタが示す位置に格納されたパケットデータを出力する。
【００１１】
並替えバッファ４内の番号は、パケットデータを記憶する番地を示し、書込みポインタと読出しポインタの値に対応する。並替えバッファ４内の各番地の記憶領域は、パケットデータを格納するための領域と、該領域内にパケットデータが格納されたか否かを示すストアフラグを格納する領域が含まれる。
【００１２】
並替え制御部１におけるシーケンス番号分離部２は、受信したパケットのシーケンス番号順に書込みポインタを生成し、図示しない書込部は、シーケンス番号分離部２により生成した書込ポインタが示す番地にパケットデータを書き込むと共に、該番地のストアフラグを表示させる。
【００１３】
読出しに際して、読出部は、読出しポインタ用リングカウンタ３を用いて読出しポインタを生成し、そのポインタが示す並替えバッファ４の領域に保持されているストアフラグを検索する。このとき、ストアフラグが表示状態であればパケットが格納されているということになるので、読出部は、該領域に格納されているパケットデータを読み出して出力し、同時にストアフラグを非表示にして次のパケットの記憶領域を検索するために読出しポインタ用リングカウンタ３のカウント値を１進める。こうすることにより、パケットは、シーケンス番号順すなわち送信順に並び替えられて読み出される。
【００１４】
なお、並替えバッファ４の状態が例えば図３０（特許文献１における図１０）に示すようになっているときに読出しを行う場合に、１５５番地までパケットが読み出されるが、１５６番地に書き込むべきパケット、すなわち１５５番地と１５７番地に書き込まれたパケットが未到着のため、読出部がストアフラグを検索し続ける状態になり、読出しが停滞してしまう。
【００１５】
このとき、特許文献１に開示された技術は、読出しの停滞状態の続く時間を計測し、計測した時間が閾値に到達すると、１５６番地に書き込むべきパケットがロスしたと判断し、読出しポインタ用リングカウンタ３を強制的に１インクリメントし、インクリメント後の読出しポインタが示す番地のストアフラグの確認乃至パケットデータの読出しを行う。
【００１６】
図３１は、特許文献２における図１に対して符号を変更したものであり、該文献における技術を適用した通信システムを示す。図３１を参照して特許文献２に開示されたパケット並替技術を説明する。なお、図３１に示すシステムにおいて、通信装置１０と通信装置２０が同様の構成を有するため、通信装置１０について、各機能ブロックの図示及び説明を省略する。また、通信装置２０に関しては、受信時のパケット並替えに関連する機能ブロックのみを詳細に説明する。
【００１７】
通信装置２０は、パケットタイザー回路２１、カウンタ２２、パケット送受信回路２３、パケットアセンブラ回路２４、受信バッファ２５、タイマ２６、リスト２７、順序並替部２８を備える。これらの機能ブロックのうち、パケット送受信回路２３、パケットアセンブラ回路２４、受信バッファ２５、タイマ２６、リスト２７、順序並替部２８は、パケット並替えに関連する。
【００１８】
パケット送受信回路２３は、通信網３０を介して通信装置１０からパケットを受信してパケットアセンブラ回路２４に渡す。受信したパケットのヘッダには、通信装置１０が送信順に応じて追加したシーケンス番号が付加されている。
【００１９】
パケットアセンブラ回路２４は、パケット送受信回路２３からのパケットのデータとシーケンス番号Ｓｃを順序並替部２８に渡す。
【００２０】
受信バッファ２５は、パケットの送信順でパケットのデータが出力できるようにするバッファであり、この受信バッファ２５からアプリケーションなどがデータを取り出すことで様々な処理ことができる。また、受信バッファ２５には、既に到達したパケットの中で送信順が最後のパケットのシーケンス番号Ｓｂも格納されている。
【００２１】
リスト２７は、到達が期待されるパケットのシーケンス番号が列記されるリスト（待ち受けリスト）である。順序並替部２８は、上述した各機能ブロックの制御、パケットの並替え、リスト２７への到達期待パケットの登録などを行う。
【００２２】
図３２と図３３は、特許文献２における図２と図３のフローチャートに対してステップ番号を夫々変更したものである。図３２と図３３を参照して、順序並替部２８の処理を説明する。
【００２３】
順序並替部２８は、パケットアセンブラ回路２４からパケットのデータとシーケンス番号Ｓｃを渡されると、該シーケンス番号Ｓｃと、受信バッファ２５に格納されたシーケンス番号Ｓｂ（既に到達したパケットの中で送信順が最後のパケットのシーケンス番号）と比較する（Ｓ１１、Ｓ１３、Ｓ１５）。
【００２４】
比較の結果、Ｓｃ＝Ｓｂのとき（Ｓ１１：Ｙ）、順序並替部２８は、新たに受信したパケット（シーケンス番号Ｓｃのパケット）が重複したパケットであると判断し、そのデータを受信バッファ２５から削除（破棄）する（Ｓ１２）。
【００２５】
また、Ｓｃ＝Ｓｂ＋１のとき（Ｓ１１：Ｎ、Ｓ１３：Ｙ）、順序並替部２８は、シーケンス番号Ｓｃのパケットがシーケンス番号Ｓｂのパケットに連続したパケットとみなし、シーケンス番号Ｓｃのパケットを、受信バッファ２５のシーケンス番号Ｓｂのパケットのデータの次の記憶領域に格納する（Ｓ１４）。
【００２６】
さらに、Ｓｃ＜Ｓｂのとき（Ｓ１１：Ｎ、Ｓ１３：Ｎ、Ｓ１５：Ｙ）、順序並替部２８は、リスト２７からシーケンス番号Ｓｃを探索する（Ｓ１６）。
【００２７】
そして、リスト２７にシーケンス番号Ｓｃがなければ（Ｓ１６：Ｎ）、順序並替部２８は、シーケンス番号Ｓｃのパケットを破棄する（Ｓ１７）。
【００２８】
また、リスト２７を探索した結果、リスト２７にシーケンス番号Ｓｃがヒットすると（Ｓ１６：Ｙ）、順序並替部２８は、リスト２７から当該のシーケンス番号を削除し（Ｓ１８）、該当するシーケンス番号に対応するタイマ２６の計時動作を解除（停止）し（Ｓ１９）、シーケンス番号Ｓｃに対応する受信バッファ２５の適切な位置に該当するパケットのデータを挿入する（Ｓ２０）。
【００２９】
一方、ステップＳ１５の比較において、Ｓｃ＜Ｓｂではない場合（Ｓ１５：Ｎ）、つまりＳｃ＞（Ｓｂ＋１）であれば、順序並替部２８は、シーケンス番号Ｓｃのパケットを受信バッファ２５へ格納すると共に（Ｓ２１）、Ｓｂ＋２〜Ｓｃ−１のシーケンス番号を持つパケットを待ち受けるため、それらのシーケンス番号を待ち受けパケットのリスト２７に加え（Ｓ２２）、夫々の待ち受けパケットのシーケンス番号についてタイマ２６の計時動作を開始させる（Ｓ２３）。なお、特許文献２の明細書において、ステップＳ２２に対する説明の部分（「００４７」段落）では、リスト２７に「Ｓｂ＋１〜Ｓｃ−１」のシーケンス番号を追加すると書かれており、図３２のフローチャートでは、「Ｓｂ＋２〜Ｓｃ−１」になっているが、図３２のフローチャートに書かれた「Ｓｂ＋２〜Ｓｃ−１」に統一した。
【００３０】
図３３は、タイマ２６がタイムアウトしたときの順序並替部２８の処理を示す。順序並替部２８がタイマ２６の計時動作を開始させてから、ある一定の時間が経過し、タイマ２６がタイムアウトすると（Ｓ３１）、順序並替部２８は、タイマ２６と関連付けられたシーケンス番号をリスト２７から検索する（Ｓ３２）。
【００３１】
検索の結果、該当するシーケンス番号が見つかった場合は（Ｓ３２：Ｙ）、順序並替部２８は、そのシーケンス番号をリスト２７から削除し（Ｓ３３）、該当するパケットを欠落パケットとして扱い、処理を終了する。
【００３２】
また、検索の結果、該当するシーケンス番号が見つからなかった場合（Ｓ３２：Ｎ）、順序並替部２８は、そのまま処理を終了する。
【００３３】
特許文献２における技術によれば、受信順が送信順と異なっても、受信側において、パケットが送信順に並び替えができるとされている。
【先行技術文献】
【特許文献】
【００３４】
【特許文献１】特開２００１−１１１６０８号公報
【特許文献２】特開２００１−１８９７５５号公報
【発明の概要】
【発明が解決しようとする課題】
【００３５】
ＩＥＥＥ８０２．３規格に準拠した通信装置においては、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ／ＩＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等の通信プロトコルが用いられている。
【００３６】
例えば、ＴＣＰ／ＩＰの場合には、パケットのシーケンス番号は、送信順が後になるほど大きな値を有するが、送信順に応じて１ずつインクリメントする値ではない。これについて、図３４〜図３６を参照して、ＴＣＰ／ＩＰパケットの構成から説明する。
【００３７】
図３４は、ＴＣＰ／ＩＰパケットのフォーマットを示す。図示のように、ＴＣＰ／ＩＰパケット５０は、ＩＰヘッダ６０と、ＴＣＰヘッダ７０と、アプリケーションデータとなるペイロード９０を含む。
【００３８】
ＩＰヘッダ６０は、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのネットワーク層に位置するものであり、ネットワークに接続されている装置のアドレッシングや、相互に接続された複数のネットワーク内での通信経路の選定のなどのための情報である。
【００３９】
図３５に示すように、ＩＰヘッダ６０は、パケット長などの情報を示すＩＰパケット情報６１と、送信元ＩＰアドレス６２と、宛先ＩＰアドレス６３を含む。
【００４０】
ＴＣＰヘッダ７０は、ＯＳＩ参照モデルのトランスポート層に位置するものであり、転送されるペイロード９０をどの処理に渡せばいいかなどの情報が含まれている。
【００４１】
図３６に示すように、ＴＣＰヘッダ７０は、送信元のプログラムを識別するための送信元ポート番号７１、宛先のプログラムを識別するための宛先ポート番号７２、送信順を示すシーケンス番号７３、次に受信すべきシーケンス番号を示すアクノリッジメント番号７４、ＴＣＰヘッダ長を示すオフセット７５、将来の拡張のための予備フィールド７６、制御ビットを示すＴＣＰフラグ７７、受信側において受信可能なデータサイズを示すウインドウ７８、ペイロード９０のチェックサムを示すチェックサム７９、緊急を要するデータの格納場所を示すアージェントポイント８０を含む。
【００４２】
シーケンス番号７３は、送信装置間の接続確立時に乱数により初期値（１つ目のパケットのシーケンス番号）が決定される。その後、現在に送信するパケットには、１つ前に送信したパケットのシーケンス番号７３とペイロード長との和であるシーケンス番号が付与される。なお、ペイロード長は、当該パケットのＴＣＰヘッダ７０のペイロード９０のデータ長である。
【００４３】
アクノリッジメント番号７４は、シーケンス番号７３とペイロード長との和である。すなわち、アクノリッジメント番号７４は、次に送信されるパケットのシーケンス番号であり、現在に受信したパケットのシーケンス番号７３が、１つ前に受信したパケットのアクノリッジメント番号７４と一致すれば、現在に受信したパケットは、１つ前に受信したパケットに連続して送信されたパケットである。
【００４４】
ＴＣＰ／ＩＰパケットの送信装置は、送信時に、図３４〜図３６に示す構成のパケットを生成して送信する。すなわち、受信側で受信されたパケットは、分割されて送信されたパケット（以下「分割パケット」ともいう）であれば、そのＴＣＰヘッダには、該パケットのシーケンス番号７３が含まれている。
【００４５】
なお、ＴＣＰプロトコルでは、ペイロード９０の最大長ＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）は定められており、アプリケーションデータは、該ＭＳＳ以下のサイズに分割されて送信される。
【００４６】
ＴＣＰヘッダ７０中のウインドウ７８は、送信先のバッファサイズを示している。送信装置は、ＭＳＳ以下に分割されて送信されるデータの個数がウインドウ７８により示されるウィンドウサイズとなるまで連続してパケットを送出可能であり、ウィンドウサイズに到達した場合は、送信装置は、パケットの送出を一時停止し、受信側からの受信応答検出後、再度、パケットの送信を開始する事となる。
【００４７】
以上の説明から分かるように、ＴＣＰ／ＩＰの場合、シーケンス番号は、送信順が後になるほど大きい値になるが、送信順に応じて１ずつインクリメントする値ではない。また、ペイロードの最大長ＭＳＳが決まっているものの、ペイロード長が固定値ではないため、シーケンス番号の増分値も固定値ではない。
【００４８】
ここで、特許文献１と特許文献２に開示された技術をＴＣＰ／ＩＰの受信装置に適用した場合を考える。
【００４９】
特許文献１に開示された技術は、並替えバッファ４にパケットを書き込む際に、シーケンス番号に応じて書込ポインタを生成し、書込ポインタが示す番地にパケットを書き込む。例えば、図３０に示す並替えバッファ４に対して１５５番地までパケットが書き込まれており、１５６番地からパケットが書き込まれていないと仮定した場合に、新たに受信したパケットのシーケンス番号が１５５に書き込まれたパケットのシーケンス番号に１を加算した値ではない場合に、新たに受信したパケットを、１５６以降のいずれかの番地に書き込むかを決定する必要がある。
【００５０】
シーケンス番号が１ずつインクリメントする場合には、新たに受信したパケットのシーケンス番号と、１５５番地に書き込まれたシーケンス番号との差分の分だけ１５５から後に位置する番地に新たに受信したパケットを書き込めばよいが、ＴＣＰ／ＩＰパケットの場合、シーケンス番号が送信順に応じて１ずつインクリメントするわけではなく、また、増分値も固定ではないため、新たに受信したパケットの書き込むべき位置を決定することができず、適切な書込ポインタをそもそも生成することができない。
【００５１】
そのため、特許文献１に開示された技術は、シーケンス番号が送信順に応じて１ずつインクリメントすることを前提としている技術であり、該技術をＴＣＰ／ＩＰの受信装置に適用すると、本来連続して送信されたパケット同士も、並替えバッファ４上で間隔をおいて書き込まれることになる。
【００５２】
この場合、間隔となった番地に書き込むべきパケットが無いため、特許文献１の技術によれば、読出し時には、パケットロスの判断がなされ、読出しポインタの強制的なインクリメントが行われる。
【００５３】
これでは、並替えバッファ４の有効利用ができない。さらに、一般的に、パケットロスが生じるとＣＰＵへの割込みが生じるため、割込みが多発し、受信装置の処理効率の低下を引き起こしてしまう。
【００５４】
特許文献２に開示された技術も、シーケンス番号が送信順に１ずつインクリメントすることを前提にしたものであり、新たに受信したパケットのシーケンス番号と、過去に受信したパケットのうちの最大なシーケンス番号とが連続しない場合に、この２つのシーケンス番号間の各数値を、今後受信するパケットのシーケンス番号と予測してリスト２７に登録している（図３０におけるＳ１５：Ｎｏ、Ｓ２１〜）。
【００５５】
ＴＣＰ／ＩＰの場合、このような予測がそもそも適正にできない。そのため、特許文献２の技術をＴＣＰ／ＩＰの受信装置に適用すると、存在しないシーケンス番号がリスト２７に多数登録されることになり、タイマ２６によるこれらのシーケンス番号に対応する計時、及び計時結果に応じたタイムアウトの判断などの無駄な処理が発生し、受信装置の処理効率が低下してしまう。
【課題を解決するための手段】
【００５６】
本発明の１つの態様は、送信順に応じた大きさのシーケンス番号が付随されたパケットの受信側における整列回路である。該整列回路は、今回受信したパケットである対象パケットのシーケンス番号を含むパケット情報が入力され、整列バッファと、書込回路と、制御回路を備える。
【００５７】
整列バッファは、パケット情報を書き込むための領域を複数順次配列してなる。
書込回路は、整列バッファの複数の領域のうちの１つを示す選択信号が入力され、該選択信号に応じて、対象パケットのパケット情報を整列バッファへ書き込む。
【００５８】
制御回路は、対象パケットについて、選択信号を生成して書込回路に供する。
具体的には、制御回路は、整列バッファの先頭の領域がパケット情報を書き込まれていない未書込領域であるときに、該先頭の領域を示す選択信号を生成する。
【００５９】
また、制御回路は、整列バッファの先頭の領域がパケット情報を書き込まれた書込済領域であるときに、対象パケットのパケット情報から該対象パケットのシーケンス番号を取得すると共に、取得したシーケンス番号より大きいシーケンス番号を含むパケット情報が書き込まれた各書込済領域のうちの先頭の領域となる境界領域の検索を、整列バッファの先頭から末尾に向かう順で、該書込済領域に書き込まれたパケット情報に含まれるシーケンス番号と対象パケットのシーケンス番号との比較を順次行うことにより実行する。そして、制御回路は、該検索により境界領域を検出できたときに、該境界領域を示す選択信号を生成する一方、末尾の書込済領域まで検索を行っても境界領域を検出できなかったときに、最後の書込済領域の次の領域を示す選択信号を生成する。
【００６０】
書込回路は、選択信号により示される領域を起点にして、整列バッファの末尾に向かう方向に、各領域に夫々格納されているデータを１領域分シフトすると共に、対象パケットのパケット情報を選択信号により示される領域に書き込む。
【００６１】
なお、上記態様の整列回路を装置やシステムに置き換えて表現したもの、該整列回路を備えた受信装置、該受信装置を備えた通信システムなども、本発明の態様としては有効である。
【発明の効果】
【００６２】
本発明にかかる技術によれば、受信順序が保証されず、かつ、シーケンス番号が送信順に応じて１ずつインクリメントする値ではないパケットの受信装置においても、ＣＰＵの代わりに、受信したパケットを送信順に並び替え、受信装置の効率向上を図ることができる。
【図面の簡単な説明】
【００６３】
【図１】本発明の技術にかかる原理を説明するため整列回路を示す図である。
【図２】図１に示す整列回路において、パケットの受信に伴った整列バッファの状態の遷移の例を示す図である。
【図３】図１に示す整列回路の処理を示すフローチャートである。
【図４】図３に示すフローチャートにおける書込処理を示すフローチャートである。
【図５】図１に示す整列回路における書込回路の構成例を示す図である。
【図６】連続ビットに基づいて検索対象領域を判定する手法（第１の手法）を用いる場合に、図１に示す整列回路の処理を示すフローチャートである。
【図７】連続ビットに基づいて検索対象領域を判定する手法（第１の手法）を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その１）。
【図８】連続ビットに基づいて検索対象領域を判定する手法（第１の手法）を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その２）。
【図９】連続ビットに基づいて検索対象領域を判定する手法（第１の手法）を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その３）。
【図１０】ポインタに基づいて検索対象領域を判定する手法（第２の手法）を用いる場合に、図１に示す整列回路の処理を示すフローチャートである。
【図１１】図１０のフローチャートにおけるポインタ生成／変更処理を示すフローチャートである。
【図１２】ポインタに基づいて検索対象領域を判定する手法（第２の手法）を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その１）。
【図１３】ポインタに基づいて検索対象領域を判定する手法（第２の手法）を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その２）。
【図１４】ポインタに基づいて検索対象領域を判定する手法（第２の手法）を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その３）。
【図１５】ポインタに基づいて検索対象領域を判定する第２の手法を改良した手法（第３の手法）を用いる場合に、図１に示す整列回路が行うポインタ生成／変更処理を示すフローチャートである。
【図１６】第３の手法を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その１）。
【図１７】第３の手法を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その２）。
【図１８】第３の手法を用いる場合に、図１に示す整列回路の処理の具体例を示す図である（その３）。
【図１９】本発明の第１の実施の形態にかかる受信装置を示す図である。
【図２０】図１９に示す受信装置におけるトレーステーブルに格納されたコネクション情報の例を示す図である。
【図２１】図１９に示す受信装置における整列回路を示す図である。
【図２２】図１９に示す受信装置の整列バッファとメモリ内におけるパケット情報の格納態様の例を示す図である。
【図２３】図１９に示す受信装置の処理の流れを示すフローチャートである。
【図２４】図２３における書込処理の流れを示すフローチャートである。
【図２５】本発明の第２の実施の形態にかかる受信装置における整列回路を示す図である。
【図２６】本発明の第２の実施の形態にかかる受信装置の整列バッファとメモリ内におけるパケット情報の格納態様の例を示す図である。
【図２７】本発明の第３の実施の形態にかかる受信装置における整列回路を示す図である。
【図２８】本発明の第３の実施の形態にかかる受信装置の整列バッファとメモリ内におけるパケット情報の格納態様の例を示す図である。
【図２９】特許文献１における図９に対応する図である。
【図３０】特許文献１における図１０に対応する図である。
【図３１】特許文献２における図１に対応する図である。
【図３２】特許文献２における図２に対応する図である。
【図３３】特許文献２における図３に対応する図である。
【図３４】ＴＣＰ／ＩＰパケットのフォーマットを示す図である。
【図３５】図３４に示すフォーマットにおけるＩＰヘッダを示す図である。
【図３６】図３４に示すフォーマットにおけるＴＣＰヘッダを示す図である。
【発明を実施するための形態】
【００６４】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。なお、以下の説明において、各整列回路は、パケットの受信装置に設けられたものである。また、受信装置に関して、受信時におけるパケットの並替えについてのみを説明するが、受信装置は、受信時にパケットの並替えのみを行うことではなく、受信機能のみを有するものとも限らない。
【００６５】
本発明の具体的な実施の形態の前に、まず、本発明にかかる技術の原理を説明する。
図１に示す整列回路１００は、パケットの受信装置に設けられ、送信順にパケットを並び替えるためのものである。図示のように、該整列回路１００は、今回受信したパケット（以下「対象パケット」という）のパケット情報ＰＩが入力され、整列バッファ１１０、書込回路２００、制御回路３００を備える。なお、パケット情報ＰＩには、対象パケットのシーケンス番号ＳＮが少なくとも含まれている。
【００６６】
整列バッファ１１０は、複数（「Ｎ＋１」個）の領域が先頭の領域（領域０）から末尾の領域（領域Ｎ）に向かう配列順で配列してなる。これらの領域には、書込回路２００に対象パケットのパケット情報ＰＩを書き込まれる。なお、整列バッファ１１０の複数の領域は、１つのバッファ内の複数の領域であってもよいし、図示の配列順と同様に配列された複数のバッファであってもよい。
【００６７】
書込回路２００は、制御回路３００からから、整列バッファ１１０の複数の領域のうちの１つを示す選択信号ＳＥＬが入力され、選択信号ＳＥＬに応じて、対象パケットのパケット情報ＰＩを整列バッファ１１０書き込む。
【００６８】
制御回路３００は、下記のように選択信号ＳＥＬを生成する。
整列バッファ１１０の先頭の領域（領域０）にパケット情報が書き込まれていない場合には、制御回路３００は、該先頭の領域を示す選択信号ＳＥＬを生成する。なお、以下において、パケット情報が書き込まれていない領域を「未書込領域」という。対して、パケット情報が既に書き込まれた領域を「書込済領域」という。
【００６９】
整列バッファの先頭の領域が書込済領域であるときには、制御回路３００は、対象パケットのパケット情報ＰＩからシーケンス番号ＳＮを抽出して、境界領域の検索を行う。境界領域とは、対象パケットのシーケンス番号より大きいシーケンス番号を含むパケット情報が書き込まれた各書込済領域のうちの先頭の領域である。
【００７０】
制御回路３００は、整列バッファ１１０の先頭から末尾に向かう順で、該書込済領域に書き込まれたパケット情報に含まれるシーケンス番号と対象パケットのシーケンス番号との比較を順次行うことにより境界領域の検索を実行する。そして、制御回路３００は、該検索により境界領域を検出できたときに、該境界領域を示す選択信号ＳＥＬを生成する。一方、最後の書込済領域まで検索を行っても境界領域を検出できなかったときに、制御回路３００は、最後の書込済領域の次の領域を示す選択信号ＳＥＬを生成する。
【００７１】
書込回路２００は、選択信号ＳＥＬにより示される領域を起点にして、整列バッファ１１０の末尾に向かう方向に、各領域に夫々格納されているデータを１領域分シフトすると共に、対象パケットのパケット情報ＰＩを起点の済領域に書き込む。
【００７２】
なお、整列バッファ１１０の領域が書込済領域であるか未書込領域であるかの判断は、従来知られている種々の手法を適用することができる。例えば、各領域内に、該領域にパケット情報ＰＩが書き込まれているか否かを示すストアフラグを設け、該領域内にパケット情報ＰＩが書き込まれたときに、ストアフラグが立つようにする。そして、制御回路３００は、当該領域内のストアフラグを確認することにより該領域が書込済領域か未書込領域かを判断すればよい。
【００７３】
図２を参照して、図１に示す整列回路１００において、パケットの受信に伴った整列バッファ１１０の状態の遷移の例を説明する。
【００７４】
図２において、整列バッファ１１０の各領域を示す四角形の枠のうちの、黒い枠は書込済領域を示し、白い枠が未書込領域を示す。また、整列バッファ１１０の下の数字は、該領域の配列順を示し、数字が小さい領域ほど、先頭に近い領域である。また、書込済領域内の文字は、該領域に書き込まれたパケット情報ＰＩを示す。また、時間軸は、パケットの受信順を示し、時間が後になるほど受信順も後になる。時間軸の左側の数字は、対象パケットの受信タイミングを示し、時間軸の右側の文字は、該タイミングにおいて受信したパケット（対象パケット）のシーケンス番号ＳＮと、該対象パケットに対して制御回路３００が生成した選択信号ＳＥＬを示す。これらについて、以降の各同種の図面においても同様である。
【００７５】
図２に示すように、タイミングｔ１において、整列バッファ１１０の全ての領域が未書込領域である。このときに、シーケンス番号ＳＮが「５」であるパケットが受信され、そのシーケンス番号ＳＮが含まれるパケット情報ＰＩは、整列回路１００に入力される。
【００７６】
制御回路３００は、整列バッファ１１０の先頭となる領域０が未書込領域であるため、領域０を示す選択信号ＳＥＬを生成して書込回路２００に出力する。
【００７７】
書込回路２００は、選択信号ＳＥＬを示す領域０を起点にして、整列バッファ１１０の末尾の領域に向かう方向に１領域分のシフトをすると共に、対象パケットのパケット情報ＰＩ（ここではシーケンス番号ＳＮを示す「５」）を領域０に書き込む。なお、シフトのときに、いずれの領域にもパケット情報が書き込まれていないため、空のデータがシフトされることになる。
【００７８】
タイミングｔ２において、シーケンス番号ＳＮが「１１」である次のパケットが受信され、そのパケット情報ＰＩが整列回路１００に入力される。図示のように、このときに、整列バッファ１１０の領域０に、パケット情報ＰＩ（シーケンス番号ＳＮ＝５）が書き込まれており、領域０が書込済領域である。そのため、制御回路３００は、まず、整列バッファ１１０の先頭から末尾に向かう順で、各書込済領域に書き込まれたシーケンス番号ＳＮと、対象パケットのシーケンス番号ＳＮとの比較を順次行うことにより境界領域の検索を行う。
【００７９】
このときに、書込済領域が領域０のみである、領域０に書き込まれたシーケンス番号ＳＮが対象パケットのシーケンス番号ＳＮ（１１）より小さいため、境界領域が検出できず、制御回路３００は、対象パケットに対して、最後の書込済領域（ここでは領域０）の次の領域（領域１）を示す選択信号ＳＥＬを生成する。
【００８０】
書込回路２００は、対象パケットのパケット情報ＰＩ（シーケンス番号ＳＮを示す「１１」）を、選択信号ＳＥＬにより示される領域１に書き込む。
【００８１】
タイミングｔ３において、シーケンス番号ＳＮが「１」である次のパケットが受信され、そのパケット情報ＰＩが整列回路１００に入力される。図示のように、このときに、整列バッファ１１０の領域０と領域１に、パケット情報ＰＩ（シーケンス番号ＳＮ＝５）とパケット情報ＰＩ（シーケンス番号ＳＮ＝１１）が夫々書き込まれており、領域０が書込済領域である。そのため、制御回路３００は、まず、境界領域の検索を行う。
【００８２】
検索の結果、領域０が境界領域として検出できたため、制御回路３００は、境界領域である領域０を示す選択信号ＳＥＬを生成する
【００８３】
書込回路２００は、領域０を起点にし、整列バッファ１１０の末尾に向かう方向に、各領域に夫々格納されているデータを１領域分シフトすると共に、対象パケットのパケット情報ＰＩ（シーケンス番号ＳＮ＝１）を起点の書込済領域（ここでは領域０）に書き込む。
【００８４】
タイミングｔ４において、シーケンス番号ＳＮが「９」である次のパケットが受信され、そのパケット情報ＰＩが整列回路１００に入力される。図示のように、このときに、整列バッファ１１０の領域０、領域１、領域２に、パケット情報ＰＩ（シーケンス番号ＳＮ＝１）、パケット情報ＰＩ（シーケンス番号ＳＮ＝５）、パケット情報ＰＩ（ＳＮ＝１１）が夫々書き込まれており、領域０が書込済領域である。そのため、制御回路３００は、まず、境界領域の検索を行う。
【００８５】
検索の結果、領域２が境界領域として検索されたため、制御回路３００は、境界領域である領域２を示す選択信号ＳＥＬを生成する
【００８６】
書込回路２００は、領域２を起点にし、整列バッファ１１０の末尾に向かう方向に、各領域に夫々格納されているデータを１領域分シフトすると共に、対象パケットのパケット情報ＰＩ（シーケンス番号ＳＮ＝５）を起点の書込済領域（ここでは領域２）に書き込む。
【００８７】
その結果、整列バッファ１１０の領域０〜領域３に、パケット情報ＰＩ（シーケンス番号ＳＮ＝１）、パケット情報ＰＩ（シーケンス番号ＳＮ＝５）、パケット情報ＰＩ（シーケンス番号ＳＮ＝９）、パケット情報ＰＩ（ＳＮ＝１１）が夫々格納される。
【００８８】
図３は、整列回路１００の処理を示すフローチャートであり、対象パケットのパケット情報ＰＩの受信から該対象パケットのパケット情報ＰＩが整列バッファ１１０に書き込まれるまでの流れを示す。図３において、ステップＳ１０２〜ステップＳ１５０までは、制御回路３００が行う処理であり、ステップＳ１６０は、書込回路２００が行う処理である。
【００８９】
パケット情報を受信すると（Ｓ１００）、制御回路３００は、受信したパケット情報からシーケンス番号ＳＮを抽出する（Ｓ１０２）。
【００９０】
そして、制御回路３００は、整列バッファ１１０の先頭の領域０が書込済領域なのか未書込領域なのかを確認する（Ｓ１０４）。領域０が未書込領域であれば（Ｓ１０４：Ｎｏ）、制御回路３００は、領域０を示す選択信号ＳＥＬを生成して、書込回路２００に出力する（Ｓ１１０、Ｓ１５０）。
【００９１】
ステップＳ１０４における確認の結果、領域０が書込済領域であれば（Ｓ１０４：Ｙｅｓ）、制御回路３００は、境界領域の検索を行う（Ｓ１２０）。境界領域があり、ステップＳ１２０の検索により検出できたときに（Ｓ１２２：Ｙｅｓ）、制御回路３００は、該境界領域を示す選択信号ＳＥＬを生成して書込回路２００に出力する（Ｓ１３０、Ｓ１５０）。
【００９２】
境界領域が無く、ステップＳ１２０における検索を最後の書込済領域まで行っても境界領域を検出できなかった場合に（Ｓ１２２：Ｎｏ）、制御回路３００は、最後の書込済領域の次の領域を示す選択信号ＳＥＬを生成して書込回路２００に出力する（Ｓ１４０、Ｓ１５０）。
【００９３】
書込回路２００は、制御回路３００からのパケット情報ＰＩと選択信号ＳＥＬを受信して、書込処理を行う（Ｓ１６０）。
【００９４】
図４は、図３におけるステップＳ１６０の書込処理を示すフローチャートである。書込回路２００は、まず、選択信号ＳＥＬにより示される領域を起点にして、整列バッファ１１０の末尾に向かう方向に、各領域に格納されたデータを１領域分シフトする（Ｓ１６２）。
【００９５】
そして、書込回路２００は、選択信号ＳＥＬにより示される領域に、対象パケットのパケット情報ＰＩを書き込む（Ｓ１６４）。
【００９６】
以上の説明から分かるように、整列回路１００において、受信された各パケットのパケット情報ＰＩが整列バッファ１１０の先頭の領域から、間隔が開かずに、かつ、シーケンス番号の小さい順に格納される。そのため、整列回路１００を備えた受信装置において、受信されたパケットの読出し時に、整列バッファ１１０の先頭の領域から１つずつインクリメントしながら、該領域に書き込まれたパケット情報に対応するパケットを順次読み出すようにすれば、パケットの読出順は、送信順と同一になる。
【００９７】
なお、受信されたパケットの読出しに関しては、種々な態様が考えられる。
例えば、整列回路１００における整列バッファ１１０を受信バッファとして使用し、受信したパケットそのものをパケット情報ＰＩとして整列回路１００の該当する領域に格納し、読出しに際しては、整列バッファ１１０の先頭領域からパケットを読み出すようにすることができる。
【００９８】
この場合、パケット情報ＰＩがパケットそのものになるため、制御回路３００は、新たな対象パケットを格納する領域を示す選択信号ＳＥＬを生成する度に、既に整列バッファ１１０に格納されたパケットのヘッダを解析してシーケンス番号を抽出する必要がある。
【００９９】
従って、対象パケットのシーケンス番号を含むパケット情報ＰＩと、該パケットのペイロードと共に、整列バッファ１１０の該当する領域に格納することも考えられる。こうすることにより、新たな対象パケットに対して選択信号ＳＥＬを生成する際に、既に整列バッファ１１０に格納されたパケットに対しては、ヘッダの解析をする必要がなく、効率向上を図ることができる。
【０１００】
または、例えば、整列バッファ１１０とは別途に、パケットを一時的に記憶する受信バッファを設け、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）により、受信バッファに格納されたパケットをアプリケーションが使用するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリに一括転送するようにしてもよい。ＤＭＡ転送時には、整列バッファ１１０を参照して、整列バッファ１１０の先頭の領域から１つインクリメントしながら、該領域に書き込まれたパケット情報に対応するパケットを受信バッファから順次出力するようにすればよい。
【０１０１】
このように、図１に示す整列回路１００によれば、受信順序が保証されず、かつ、シーケンス番号が送信順に応じて１ずつインクリメントする値ではないパケットの受信装置においても、ＣＰＵの代わりに、受信したパケットを送信順に並び替え、受信装置の効率向上を図ることができる。
【０１０２】
図５を参照して、図１に示す整列回路１００における書込回路２００の１つの構成例を説明する。
【０１０３】
図５に示す例では、書込回路２００は、整列バッファ１１０の領域毎に設けられ、段階的に順次接続されたＮ個の選択回路（選択回路２１０〜選択回路２１Ｎ）を有する。パケット情報ＰＩと選択信号ＳＥＬは、これらの各選択回路に入力される。
【０１０４】
各選択回路（選択回路２１０〜選択回路２１Ｎ）は、自身に対応する領域と、選択信号ＳＥＬにより示される領域の前後関係に応じて異なる動作をする。
【０１０５】
具体的には、選択信号ＳＥＬにより示される領域より前の領域に対応する各選択回路は、何もしない。
【０１０６】
また、選択信号により示される領域より後の領域に対応する各選択回路は、自身に対応する領域に、前段の選択回路に対応する領域に格納されているデータをシフトして格納する。
【０１０７】
また、選択信号により示される領域に対応する選択回路は、対象パケットのパケット情報ＰＩを該領域に書き込む。
【０１０８】
図５に示す書込回路２００は、図１に示す書込回路２００の処理を簡単に実現できる一例であり、勿論、該書込回路２００を備えた整列回路１００は、図１に示す整列回路１００のときに説明した効果を得ることができる。
【０１０９】
本願発明者は、鋭意研究模索結果、さらに、制御回路３００が行う境界領域の検索（図３におけるステップＳ１２０）を効率よくできる手法を確立した。
【０１１０】
例えば、整列バッファ１１０の先頭の領域（領域０）から、別の領域Ｍ（Ｍ≧１）までの各領域に、送信順が連続する複数のパケットのパケット情報ＰＩが夫々格納されている場合、新たな対象パケットのパケット情報ＰＩの書き込まれる領域は、領域０、または領域Ｍ以降のいずれかの領域（領域Ｍを含む）になるはずであり、領域１から、領域（Ｍ−１）までの各領域になるはずが無い。そのため、まず、領域０を検索対象領域に判定して、領域０を検索対象にして境界領域の検索をし、すなわち、領域０に書き込まれたパケット情報ＰＩに含まれるシーケンス番号ＳＮと、対象パケットのシーケンス番号ＳＮの比較を行うことにより領域０が境界領域であるか否かの判定をする。領域０が境界領域ではないと判定したときに、領域Ｍを検索対象領域に判定して、領域Ｍを検索対象にして境界領域の検索を行うようにすれば、領域１から領域（Ｍ−１）までの各領域を検索対象とした検索をスキップすることができる。
【０１１１】
前述したように、例えばＴＣＰ／ＩＰパケットの場合、各パケットに付随されたシーケンス番号は、該パケットの１つ前に送信されやパケットのシーケンス番号とペイロード長とを加算して得た加算値（以下「Ｗ」で表記する）である。すなわち、過去に受信した各パケットについて、そのパケットのシーケンス番号とペイロード長から、該パケットの次に送信されるパケットのシーケンス番号（上記加算値Ｗ）を算出することができる。なお、ＴＣＰ／ＩＰパケットのヘッダには、該パケットの全長を示す情報（図３５におけるパケット長）が含まれており、ＴＣＰヘッダのヘッダ長が固定長であるため、ＴＣＰ／ＩＰパケットのヘッダからＩＰヘッダ長（図３５におけるレングス）とシーケンス番号とパケット長を取得すれば、下記の式（１）に従って該パケットの次に送信されるパケットのシーケンス番号を算出できる。
【０１１２】
加算値Ｗ
＝パケットのシーケンス番号＋パケット長−ＩＰヘッダ長−ＴＣＰヘッダ長
＝次に送信されるパケットのシーケンス番号                              （１）
【０１１３】
さらに、図３６のときに説明したように、ＴＣＰヘッダ７０には、上記加算値Ｗに該当するアクノリッジメント番号７４が含まれている。
【０１１４】
上記のことに着目して、境界領域の検索を効率よく行うために本願発明者が確立した手法は、下記のように、パケット情報ＰＩと選択信号ＳＥＬの生成、及び検索対象領域の判定を行う。なお、分かりやすいように、図１に示す整列回路１００を利用して説明する。
【０１１５】
まず、パケット情報ＰＩは、シーケンス番号ＳＮに加え、当該パケットのペイロード長または該ペイロード長を算出可能な値と、該パケットの上記加算値Ｗとのいずれか一方を含む必要がある。
【０１１６】
パケット情報ＰＩに上記加算値Ｗを加える場合には、式（１）に従って加算値Ｗを算出するようにしてもよく、上記加算値Ｗと同値であるアクノリッジメント番号７４をヘッダから読み出してそのまま用いてもよい。
【０１１７】
ペイロード長をパケット情報ＰＩに加える場合には、式（２）に従ってペイロード長を算出すればよい。
ペイロード長＝パケット長−ＩＰヘッダ長−ＴＣＰヘッダ長      （２）
【０１１８】
この場合、後に、既に整列バッファ１１０にパケット情報ＰＩが格納されたパケットの加算値Ｗが必要なときに、該パケットのシーケンス番号とペイロード長とを加算すればよい。
【０１１９】
ペイロード長以外の、ペイロード長を算出可能な値をパケット情報ＰＩに加える場合には、例えばパケット長とＩＰヘッダ長を利用すればよい。
【０１２０】
ＴＣＰヘッダ長が固定であるため、この場合、後に、既に整列バッファ１１０にパケット情報ＰＩが格納されたパケットの加算値Ｗが必要なときに、該パケットのシーケンス番号とパケット長とＩＰヘッダ長を読み出して、式（１）に従って加算値Ｗを算出すればよい。
【０１２１】
このように、既に整列バッファ１１０に書き込まれた各パケット情報ＰＩには、該パケットのシーケンス番号ＳＮと、加算値Ｗそのものまたは加算値Ｗを算出可能な値とが含まれるようになる。
【０１２２】
制御回路３００は、整列バッファ１１０の整列バッファの先頭の領域が書込済領域であるときに行う境界領域の検索に際して、検索対象領域の判定をすると共に、検索対象領域に判定した各領域のみを検索対象とする。
【０１２３】
検索対象領域は、整列バッファ１１０における各連続グループの先頭の領域となるグループ先頭領域である。
【０１２４】
また、グループ先頭領域は、整列バッファ１１０の先頭の領域以外であり、かつ、１つ前の連続グループの末尾の領域の次の領域である書込済領域と、整列バッファ１１０の先頭の領域とのいずれか一方に該当する領域である。
【０１２５】
各連続グループは、グループ先頭領域のみ、または、グループ先頭領域を起点にして配列順が連続する複数の書込済領域であって、該複数の書込済領域の２つ目の領域からの各領域に夫々書き込まれたパケット情報ＰＩに含まれるシーケンス番号ＳＮが、領域の１つ前の領域に書き込まれたパケット情報ＰＩから得られる加算値Ｗに一致する上記複数の書込済領域により構成される。
【０１２６】
なお、全ての検索対象領域について、境界領域の検索が行われる訳ではない。例えば、ある検索対象領域（領域Ｂ）より前の検索対象領域（領域Ａ）を対象とした検索の結果、領域Ａが境界領域であると判定されたときに、境界領域の検索が終了するため、領域Ｂを対象とする検索が行われない。
【０１２７】
前に例挙したように、整列バッファ１１０の先頭の領域（領域０）から、別の領域Ｍ（Ｍ≧１）までの各領域に、送信順が連続する複数のパケットのパケット情報ＰＩが夫々格納されている場合、領域１から領域Ｍまでの各領域に書き込まれたパケット情報ＰＩに含まれるシーケンス番号ＳＮが、１つ前の領域に書き込まれたパケット情報ＰＩから得られる加算値Ｗに一致する。
【０１２８】
この場合、制御回路３００は、領域０から領域Ｍまでの各領域を１つの連続グループとし、まず、グループ先頭領域（領域０）を検索対象にして境界領域を検索する。検索の結果、領域０が境界領域であると判定したときに、境界領域の検索を終了する。この場合、領域０が対象パケットを書き込むべき領域に判定される。
【０１２９】
一方、領域０が境界領域ではないと判定したときに、制御回路３００は、領域（Ｍ＋１）が書込済領域であるか否かを確認する。該領域が未書込領域であるときには、境界領域が無いと判定する。この場合においても、領域０が対象パケットを書き込むべき領域に判定される。
【０１３０】
領域（Ｍ＋１）が書込済領域である場合、すなわち、該領域が次の連続グループの先頭の領域である場合、制御回路３００は、グループ先頭領域（領域（Ｍ＋１））を検索対象にして境界領域を検索する。その後の処理に関しては、領域０を検索対象にして境界領域を検索する場合と同様である。
【０１３１】
このように。本願発明者が確立した手法によれば、各連続グループの先頭の領域のみを検索対象領域に判定し、判定した検索対象領域のみを検索対象とするため、対象パケットとシーケンス番号ＳＮを比較される領域の数を減らすことができ、境界領域の検索を効率良く実現する。
【０１３２】
上述した検索対象領域の判定を実現する具体的な手法は、様々考えられる。ここで、「連続ビット」に基づいた手法（第１の手法）、「ポインタ」に基づいた手法（第２の手法）を説明する。ここも、図１に示す整列回路１００の機能ブロックを利用して説明する。また、パケット情報ＰＩには、加算値Ｗが含まれているとする。
【０１３３】
＜第１の手法：連続ビットに基づいた手法＞
この手法では、制御回路３００は、対象パケットのパケット情報ＰＩ（シーケンス番号ＳＮ＋加算値Ｗ）に、連続ビットＣＢを付加してから書込回路２００に出力する。連続ビットＣＢは、「一致する」と「一致しない」のいずれを示す値を有し、例として、「１」が「一致する」を示し、「０」が「一致しない」と示すとする。
【０１３４】
制御回路３００は、検索対象領域を判定する際に、「一致しない」を示す、すなわち値が０である連続ビットＣＢを含むパケット情報ＰＩが書き込まれた各書込済領域を検索対象領域に判定する。
【０１３５】
また、対象パケットのパケット情報ＰＩに連続ビットＣＢを付加する際に、制御回路３００は、選択信号ＳＥＬにより示される領域が整列バッファ１１０の先頭の領域以外であり、かつ、対象パケットのシーケンス番号ＳＮが、選択信号ＳＥＬにより示される領域の１つ前の領域に書き込まれたパケット情報ＰＩから得られる加算値Ｗに一致する場合において、「一致する」を示す値（１）を連続ビットＣＢに付与する。他の場合においては、０を連続ビットＣＢに付与する。
【０１３６】
図６は、第１の手法を適用した場合の整列回路１００の処理を示すフローチャートであり、対象パケットの受信から該対象パケットのパケット情報ＰＩが整列バッファ１１０に書き込まれるまでの流れを示す。図６において、ステップＳ２０２〜ステップＳ２８０までは、制御回路３００が行う処理であり、ステップＳ１６０は、図４に示される、書込回路２００が行う書込処理である。
【０１３７】
図６に示すように、パケットが受信され、該パケットのパケット情報ＰＩが整列回路１００に入力されると（Ｓ２００）、制御回路３００は、パケット情報ＰＩからシーケンス番号ＳＮを抽出する（Ｓ２０２）。
【０１３８】
そして、制御回路３００は、整列バッファ１１０の先頭の領域０が書込済領域なのか未書込領域なのかを確認する（Ｓ２０４、Ｓ２１０）。領域０が未書込領域であれば（Ｓ２１０：Ｎｏ）、制御回路３００は、領域０を示す選択信号ＳＥＬを生成する（Ｓ２４０）。そして、対象パケットの連続ビットＣＢに０を付与し（Ｓ２５０：Ｙｅｓ、Ｓ２７０）、該連続ビットＣＢと、ステップＳ２０２で取得したシーケンス番号ＳＮと加算値Ｗを含むパケット情報ＰＩ、及びステップＳ２２０で生成した選択信号ＳＥＬを書込回路２００に出力する（Ｓ２８０）。
【０１３９】
ステップＳ２１０における確認の結果、領域０が書込済領域であれば（Ｓ２０４、Ｓ２１０：Ｙｅｓ）、制御回路３００は、境界領域の検索を開始する。具体的には、まず、領域０が検索対象領域であるか否かを判定する（Ｓ２２０）。具体的には、領域０に書き込まれたパケット情報ＰＩに含まれる連続ビットＣＢが１と０のいずれであるかを確認する。なお、後の説明で分かるが、領域０に書き込まれるパケット情報ＰＩに含まれる連続ビットＣＢが常に０であるため、制御回路３００は、領域０が検索対象領域であるとし、対象パケットのシーケンス番号ＳＮと領域０に書き込まれたパケット情報に含まれるシーケンス番号ＳＮ（０）を比較する（Ｓ２２０：Ｙｅｓ、Ｓ２３０）。
【０１４０】
対象パケットのシーケンス番号ＳＮがＳＮ（０）より小さければ（Ｓ２３０：Ｙｅｓ）、制御回路３００は、領域０が境界領域であるとして、領域０を示す選択信号ＳＥＬを生成する（Ｓ２４０）。そして、対象パケットの連続ビットＣＢに０を付与し（Ｓ２５０：Ｙｅｓ、Ｓ２７０）、パケット情報ＰＩと選択信号ＳＥＬを書込回路２００に出力する（Ｓ２８０）。
【０１４１】
ステップＳ２３０における比較の結果、対象パケットのシーケンス番号ＳＮがＳＮ（０）より大きいときに（Ｓ２３０：Ｎｏ）、制御回路３００は、領域０が境界領域ではないと判定して、次の領域（領域１）について、ステップＳ２１０からの処理を行う（Ｓ２３２、Ｓ２１０〜）。
【０１４２】
領域１について、制御回路３００は、まず、該領域が書込済領域であるか否かを確認する（Ｓ２１０）。
【０１４３】
領域１が未書込領域であれば（Ｓ２１０：Ｎｏ）、制御回路３００は、領域１を示す選択信号ＳＥＬを生成し（Ｓ２４０）、さらに、対象パケットのシーケンス番号ＳＮが、領域０に書き込まれたパケット情報ＰＩに含まれる加算値Ｗ（０）に一致するか否かを確認する（Ｓ２５０：Ｎｏ、Ｓ２６０）。一致すれば、制御回路３００は、対象パケットの連続ビットＣＢに１を付与し（Ｓ２６０：Ｙｅｓ、Ｓ２６２）、パケット情報ＰＩと選択信号ＳＥＬを書込回路２００に出力する（Ｓ２８０）。
【０１４４】
なお、ステップＳ２６０における確認の結果、一致しない場合に（Ｓ２６０：Ｎｏ）、制御回路３００は、対象パケットの連続ビットＣＢに０を付与し（Ｓ２７０）、パケット情報ＰＩと選択信号ＳＥＬを書込回路２００に出力する（Ｓ２８０）。
【０１４５】
ステップＳ２１０に戻り、領域１が書込済領域である場合（Ｓ２１０：Ｙｅｓ）を説明する。この場合に、制御回路３００は、まず、領域１に書き込まれたパケット情報ＰＩに含まれる連続ビットＣＢに基づいて領域１が検索対象領域であるか否かを確認する（Ｓ２２０）。領域１が検索対象領域である場合、以降の処理は、領域０のときと同様である（Ｓ２２０：Ｙｅｓ、Ｓ２３０〜）
【０１４６】
領域１に書き込まれたパケット情報ＰＩに含まれる連続ビットＣＢが０である場合に、制御回路３００は、領域１が境界領域ではないと判定して、次の領域（領域２）について、ステップＳ２１０からの処理を行う（Ｓ２２０：Ｎｏ、Ｓ２３２、Ｓ２１０〜）。
【０１４７】
このように、境界領域が検出されるまで、または、全ての検索対象領域を検索対象とした検索が完了するまで、検索対象領域の判定と、検索対象領域に判定した領域を検索対象とした検索が繰り返される。そして、境界領域が検出されれば、該境界領域を示す選択信号ＳＥＬの生成と、対象パケットのパケット情報ＰＩに含まれる連続ビットＣＢに１または０の付与がなされる。また、全ての検索対象領域を検索対象とした検索が完了しても境界領域が検出されなかった場合に、最後の書込済領域の次の領域を示す選択信号ＳＥＬの生成と、対象パケットのパケット情報ＰＩに含まれる連続ビットＣＢに１または０の付与がなされる。
【０１４８】
図７〜図９を参照して、第１の手法を適用した整列回路１００による処理の具体例を説明する。これらの図において、星印は、境界領域の検索が最後に実行された領域を示す。
【０１４９】
該例において、シーケンス番号が夫々１、５、９、１１、１７、２０、２４、３０である８つのパケットが送信されたとする。送信順は、小さいシーケンス番号からである。しかし、到着順のシーケンス番号は、「５、１、９、１１、２４、２０、１７、３０」となっている。
【０１５０】
図７に示すように、まず、タイミングｔ１において、シーケンス番号ＳＮが５であるパケットが受信され、そのパケット情報ＰＩが整列回路１００に入力される。制御回路３００は、パケット情報ＰＩから該パケットのシーケンス番号ＳＮを抽出する。整列バッファ１１０の領域０が未書込領域であるため、制御回路３００は、領域０を示す選択信号ＳＥＬを生成すると共に、該パケットの連続ビットＣＢに０を付与する。
【０１５１】
その結果、タイミングｔ２において、次のパケット（シーケンス番号ＳＮ：１）が到着したときに、整列バッファ１１０の領域０に、パケット情報ＰＩに含まれるシーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして、夫々「５」、「９」、「０」が書き込まれている。
【０１５２】
このとき、検索対象領域が領域０のみであり、また、領域０に書き込まれたシーケンス番号ＳＮが対象パケットのシーケンス番号ＳＮの１より大きいため、制御回路３００は、領域０が境界領域であると判定し、領域０を示す選択信号ＳＥＬを生成する。また、対象パケットの連続ビットＣＢに０を付与する。
【０１５３】
その結果、タイミングｔ３において、シーケンス番号ＳＮが９であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして、整列バッファ１１０の領域０には、夫々「１」、「５」、「０」が書き込まれており、領域１には、「５」、「９」、「０」が書き込まれている。
【０１５４】
このとき、領域０と領域１の両方とも検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、領域２を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの９が、領域１に書き込まれた加算値Ｗの９に一致するため、制御回路３００は、対象パケットの連続ビットＣＢに１を付与する。
【０１５５】
その結果、図８に示すように、タイミングｔ４において、シーケンス番号ＳＮが１１であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして、整列バッファ１１０の領域０には、夫々「１」、「５」、「０」が書き込まれており、領域１には、「５」、「９」、「０」が書き込まれており、領域２には、「９」、「１１」、「１」が書き込まれている。
【０１５６】
このとき、領域０と領域１のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、領域３を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの１１が、領域２に書き込まれた加算値Ｗの１１に一致するため、制御回路３００は、対象パケットの連続ビットＣＢに１を付与する。
【０１５７】
その結果、タイミングｔ５において、シーケンス番号ＳＮが２４であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして、さらに、整列バッファ１１０の領域３に、「１１」、「１７」、「１」が書き込まれている。
【０１５８】
このときも、領域０と領域１のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの２４が、領域３に書き込まれた加算値Ｗの１７に一致しないため、制御回路３００は、対象パケットの連続ビットＣＢに０を付与する。
【０１５９】
その結果、タイミングｔ６において、シーケンス番号ＳＮが２０であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして、さらに、整列バッファ１１０の領域４に、「２４」、「３０」、「０」が書き込まれている。
【０１６０】
このとき、領域０、領域１、領域４のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、領域４が境界領域であると判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの２０が、領域４に書き込まれた加算値Ｗの１７に一致しないため、制御回路３００は、対象パケットの連続ビットＣＢに０を付与する。
【０１６１】
その結果、図９に示すように、タイミングｔ７において、シーケンス番号ＳＮが１７であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして整列バッファ１１０の領域４に書き込まれていた「２４」、「３０」、「０」が領域５にシフトされており、領域４には、シーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして、「２０」、「２４」、「０」が書き込まれている。
【０１６２】
このとき、領域０、領域１、領域４、領域５が検索対象領域である。制御回路３００は、領域４まで境界領域の検索を行った結果、領域４が境界領域であると判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの１７が、領域３に書き込まれた加算値Ｗの１７に一致するため、制御回路３００は、対象パケットの連続ビットＣＢに１を付与する。
【０１６３】
その結果、タイミングｔ８において、シーケンス番号ＳＮが３０であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして整列バッファ１１０の領域４と領域５に書き込まれていた情報が夫々領域５、領域６にシフトされており、領域４には、シーケンス番号ＳＮ、加算値Ｗ、連続ビットＣＢとして、「１７」、「２０」、「１」が書き込まれている。
【０１６４】
このとき、領域０、領域１、領域４、領域５、領域６が検索対象領域である。制御回路３００は、領域６まで境界領域の検索を行った結果、境界領域が無いと判定し、領域７を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの３０が、領域６に書き込まれた加算値Ｗの３０に一致するため、制御回路３００は、対象パケットの連続ビットＣＢに１を付与する。
【０１６５】
例えば、図８に示すタイミングｔ６において、整列バッファ１１０の領域０〜領域４が書込済領域であるが、境界領域の検索、すなわち、それに書き込まれたシーケンス番号ＳＮと対象パケットのシーケンス番号ＳＮとの比較がなされたのは、領域０、領域１、領域４のみであり、領域２と領域３がスキップされている。
【０１６６】
このように、本第１の手法によれば、境界領域の検索に際して、夫々の書込済領域について、該領域に書き込まれたパケット情報ＰＩに含まれる連続ビットに基づいて該領域が検索対象領域であるか否かを判定し、検索対象領域に判定した領域のみを検索対象とする。その結果、境界領域の検索が効率良くなる。
【０１６７】
＜第２の手法：ポインタに基づいた手法＞
この手法では、制御回路により生成された１つ以上のポインタＰを記憶するポインタ記憶回路（図示せず）をさらに有する。制御回路３００は、検索対象領域を判定する際に、ポインタ記憶回路に記憶された各ポインタＰにより夫々示される書込済領域を検索対象領域に判定する。
【０１６８】
また、制御回路３００は、対象パケットについて、パケット情報ＰＩに連続ビットＣＢを付加する代わりに、ポインタ生成／変更処理を行う。
【０１６９】
制御回路３００が行うポインタ生成／変更処理は、具体的には、下記のような処理である。
【０１７０】
＜＜第１の場合：選択信号ＳＥＬにより示される領域が未書込領域である＞＞
この第１の場合において、制御回路３００は、選択信号ＳＥＬにより示される領域が整列バッファ１１０の先頭の領域以外であり、かつ、対象パケットのシーケンス番号ＳＮが、該領域の１つ前の領域に書き込まれたパケット情報ＰＩから得られる加算値Ｗに一致する第１Ａの場合に、ポインタを生成しない。
【０１７１】
上記第１Ａの場合に該当しない第１Ｂの場合に、制御回路３００は、選択信号ＳＥＬにより示される領域を示すポインタを生成する。
【０１７２】
＜＜第２の場合：選択信号ＳＥＬにより示される領域が書込済領域である＞＞
この第２の場合において、制御回路３００は、まず、選択信号ＳＥＬにより示される領域からのいずれかの領域を示す全てのポインタを、現在示している領域の次の領域を示すように変更（シフト）する。
【０１７３】
そして、選択信号ＳＥＬにより示される領域が整列バッファ１１０の先頭の領域以外であり、かつ、対象パケットのシーケンス番号ＳＮが、選択信号ＳＥＬにより示される領域の１つ前の領域に書き込まれたパケット情報ＰＩから得られる加算値Ｗに一致する第２Ａの場合には、ポインタを生成しない。
【０１７４】
一方、上記第２Ａの場合に該当しない第２Ｂの場合に、選択信号ＳＥＬにより示される領域を示すポインタを生成する。
【０１７５】
図１０は、第２の手法を適用した場合の整列回路１００の処理を示すフローチャートであり、対象パケットの受信から該対象パケットのパケット情報ＰＩが整列バッファ１１０に書き込まれるまでの流れを示す。図１０において、ステップＳ２０２〜ステップＳ３２０までは、制御回路３００が行う処理であり、ステップＳ１６０は、図４に示される、書込回路２００が行う書込処理である。
【０１７６】
図１０に示すように、図６に示すフローチャートにおけるステップＳ２２２の処理（連続ビットＣＢに基づいた検索対象領域の判定）は、ステップＳ３００になっている。ステップＳ３００において、制御回路３００は、領域ｉを示すポインタがあるか否かに基づいて領域ｉが検索対象領域であるか否かを判定する。
【０１７７】
また、パケット情報ＰＩは、制御回路３００を経由せずに書込回路２００に出力されるため、ステップＳ３１０において、制御回路３００は、選択信号ＳＥＬのみを書込回路２００に出力する。
【０１７８】
また、図６のフローチャートにおける連続ビットＣＢの付与処理は（ステップＳ２５０〜Ｓ２７０）は、図１０において、ステップＳ３２０のポインタ生成／変更処理に変っている。
【０１７９】
他の点に関しては、図６のフローチャートと同様である。
図１１のフローチャートを参照して、図１０のステップＳ３２０におけるポインタ生成／変更処理を説明する。
【０１８０】
制御回路３００は、ポインタ生成／変更処理に際して、まず、選択信号ＳＥＬにより示される領域（領域ｉ）が書込済領域であるか否かを確認する（Ｓ３２２）。領域ｉが未書込領域である場合（Ｓ３２２：Ｎｏ）、すなわち上述した第１の場合においては、下記のように処理を行う。
【０１８１】
領域ｉが整列バッファ１１０の先頭の領域以外であり、かつ、対象パケットのシーケンス番号ＳＮが、領域ｉの１つ前の領域に書き込まれたパケット情報ＰＩから得られる加算値Ｗ（Ｗ（ｉ−１））に一致する場合（第１Ａの場合）（Ｓ３２４：Ｎｏ、Ｓ３３０：Ｙｅｓ）には、ポインタを生成しない。
【０１８２】
一方、他の場合（第１Ｂの場合）（Ｓ３２４：Ｙｅｓ、またはＳ３２４：Ｎｏ、Ｓ３３０：Ｎｏ）においては、制御回路３００は、領域ｉを示すポインタを生成する（Ｓ３２６）。
【０１８３】
領域ｉが書込済領域である場合（Ｓ３２２：Ｙｅｓ）、すなわち上述した第２の場合においては、制御回路３００は、下記のように処理を行う。
【０１８４】
制御回路３００は、まず、領域ｉからのいずれかの領域を示す全てのポインタを、現在示している領域の次の領域を示すようにシフトする（Ｓ３４０）。
【０１８５】
そして、領域ｉが整列バッファ１１０の先頭の領域以外であり、かつ、対象パケットのシーケンス番号ＳＮが、領域ｉの１つ前の領域に書き込まれたパケット情報ＰＩから得られる加算値Ｗ（Ｗ（ｉ−１））に一致する場合（第２Ａの場合）（Ｓ３４２：Ｎｏ、Ｓ３５０：Ｙｅｓ）には、ポインタを生成しない。
【０１８６】
一方、他の場合（第２Ｂの場合）（Ｓ３４２：Ｙｅｓ、またはＳ３４２：Ｎｏ、Ｓ３５０：Ｎｏ）においては、領域ｉを示すポインタを生成する（Ｓ３２６）。
【０１８７】
この第２の手法も、境界領域が検出されるまで、または、全ての検索対象領域を検索対象とした検索が完了するまで、検索対象領域の判定と、検索対象領域に判定した領域を検索対象とした検索が繰り返される。そして、境界領域が検出されれば、該境界領域を示す選択信号ＳＥＬの生成と、ポインタ生成／変更処理が行われる。また、全ての検索対象領域を検索対象とした検索が完了しても境界領域が検出されなかった場合に、最後の書込済領域の次の領域を示す選択信号ＳＥＬの生成と、ポインタ生成／変更処理がなされる。
【０１８８】
図１２〜図１４を参照して、第２の手法を適用した整列回路１００による処理の具体例を説明する。
【０１８９】
該例においても、シーケンス番号が夫々１、５、９、１１、１７、２０、２４、３０である８つのパケットは送信され、到着順のシーケンス番号は、「５、１、９、１１、２４、２０、１７、３０」となっている。
【０１９０】
図１２に示すように、まず、タイミングｔ１において、シーケンス番号ＳＮが５であるパケットが受信され、そのパケット情報ＰＩが整列回路１００に入力される。制御回路３００は、該パケットのシーケンス番号ＳＮを抽出する。整列バッファ１１０の領域０が未書込領域であるため、制御回路３００は、領域０を示す選択信号ＳＥＬを生成すると共に、領域０を示すポインタ（ポインタＰ１）を生成してポインタ記憶回路に格納する。
【０１９１】
その結果、タイミングｔ２において、シーケンス番号ＳＮが１であるパケットが到着したときに、整列バッファ１１０の領域０に、パケット情報ＰＩに含まれるシーケンス番号ＳＮ、加算値Ｗとして、夫々「５」、「９」が書き込まれている。また、領域０を示すポインタＰ１がポインタ記憶回路に記憶されている。
【０１９２】
このとき、検索対象領域がポインタＰ１により示される領域０のみであり、また、領域０に書き込まれたシーケンス番号ＳＮが対象パケットのシーケンス番号ＳＮの１より大きいため、制御回路３００は、領域０が境界領域であると判定し、領域０を示す選択信号ＳＥＬを生成すると共に、領域１を示すようにポインタＰ１をシフトすると共に、領域０を示す新たなポインタ（ポインタＰ２）を生成する。
【０１９３】
その結果、タイミングｔ３において、シーケンス番号ＳＮが９であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして、整列バッファ１１０の領域０には、「１」、「５」が書き込まれており、領域１には、「５」、「９」が書き込まれている。また、ポインタ記憶回路には、領域０と領域１を夫々示すポインタＰ２とポインタＰ１が記憶されている。
【０１９４】
このとき、領域０と領域１の両方とも検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、領域２を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの９が、領域１に書き込まれた加算値Ｗの９に一致するため、制御回路３００は、既にあるポインタの変更も、新たなポインタの生成もしない。
【０１９５】
その結果、図１３に示すように、タイミングｔ４において、シーケンス番号ＳＮが１１であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして、整列バッファ１１０の領域０には、「１」、「５」が書き込まれており、領域１には、「５」、「９」が書き込まれており、領域２には、「９」、「１１」が書き込まれている。また、ポインタ記憶回路には、領域０と領域１を夫々示すポインタＰ２とポインタＰ１が記憶されている。
【０１９６】
このとき、領域０と領域１のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、領域３を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの１１が、領域２に書き込まれた加算値Ｗの１１に一致するため、制御回路３００は、既にあるポインタの変更も、新たなポインタの生成もしない。
【０１９７】
その結果、タイミングｔ５において、シーケンス番号ＳＮが２４であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして、さらに、整列バッファ１１０の領域３に、「１１」、「１７」が書き込まれており、ポインタ記憶回路には、相変わらず、領域０と領域１を夫々示すポインタＰ２とポインタＰ１が記憶されている。
【０１９８】
このときも、領域０と領域１のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの２４が、領域３に書き込まれた加算値Ｗの１７に一致しないため、制御回路３００は、領域４を示す新たなポインタ（ポインタＰ３）を生成してポインタ記憶回路に格納する。
【０１９９】
その結果、タイミングｔ６において、シーケンス番号ＳＮが２０であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして、さらに、整列バッファ１１０の領域４に、「２４」、「３０」が書き込まれており、ポインタ記憶回路には、領域４を示すポインタＰ３が追加されている。
【０２００】
このとき、領域０、領域１、領域４のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、領域４が境界領域であると判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの２０が、領域４に書き込まれた加算値Ｗの１７に一致しないため、制御回路３００は、領域４を示していたポインタＰ３を、領域５を示すようにシフトすると共に、領域４を示す新たなポインタ（ポインタＰ４）を生成してポインタ記憶回路に格納する。
【０２０１】
その結果、図１４に示すように、タイミングｔ７において、シーケンス番号ＳＮが１７であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして整列バッファ１１０の領域４に書き込まれていた「２４」、「３０」が領域５にシフトされており、領域４には、シーケンス番号ＳＮ、加算値Ｗとして、「２０」、「２４」が書き込まれている。また、ポインタ記憶回路には、領域０、領域１、領域４、領域５を夫々示すポインタＰ２、ポインタＰ１、ポインタＰ４、ポインタＰ３が格納されている。
【０２０２】
このとき、領域０、領域１、領域４、領域５が検索対象領域である。制御回路３００は、領域４まで境界領域の検索を行った結果、領域４が境界領域であると判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの１７が、領域３に書き込まれた加算値Ｗの１７に一致するため、制御回路３００は、領域４と領域５を示しいていたポインタＰ４とポインタＰ３を、領域５と領域６を夫々示すようにシフトする。この場合、制御回路３００は、新たなポインタの生成をしない。
【０２０３】
その結果、タイミングｔ８において、シーケンス番号ＳＮが３０であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして整列バッファ１１０の領域４と領域５に書き込まれていた情報が夫々領域５、領域６にシフトされており、領域４には、シーケンス番号ＳＮ、加算値Ｗとして、「１７」、「２０」が書き込まれている。また、ポインタ記憶回路には、領域０、領域１、領域５、領域６を夫々示すポインタＰ２、ポインタＰ１、ポインタＰ４、ポインタＰ３が格納されている。
【０２０４】
このとき、領域０、領域１、領域５、領域６が検索対象領域である。制御回路３００は、領域６まで境界領域の検索を行った結果、境界領域が無いと判定し、領域７を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの３０が、領域６に書き込まれた加算値Ｗの３０に一致するため、制御回路３００は、既にあるポインタの変更も、新たなポインタの生成もしない。
【０２０５】
ポインタに基づいた本第２の手法も、連続ビットに基づいた第１の手法と同様の効果を得ることができる。
【０２０６】
ところで、図７と図１２のタイミングｔ３において、領域１に格納されたパケット情報ＰＩに含まれるシーケンス番号ＳＮが、領域０に格納されたパケット情報ＰＩに含まれる加算値Ｗに一致するにも関わらず、領域１が、領域０と別の連続グループと判定され、領域０と領域１のいずれも検索対象領域になっている。
【０２０７】
この状況は、後の全てのタイミングにおいて同様であり、検索の対象にするべきではない領域１がずっと検索対象領域に判定されている。また、図９と図１４のタイミングｔ７における領域５、タイミングｔ８における領域５と領域６についても同様である。
【０２０８】
この問題を解決し、境界領域の検索をより効率良くするために、本願発明者は、下記の手法を想到した。この手法は、ポインタに基づいた第２の手法を改良したものであり、以下「第３の手法」という。
【０２０９】
該第３の手法は、ポインタ生成／変更処理が上述した第２の手法と異なる点以外、第２の手法と同様である。ここで、該第３の手法におけるポインタ生成／変更処理を説明する。
【０２１０】
図１５は、第３の手法におけるポインタ生成／変更処理を示すフローチャートであり、図１１に示すポインタ生成／変更処理の代わりに、図１０のステップＳ３２０で行われるポインタ生成／変更処理の流れである。なお、図１５において、図１１におけるステップと同様のものについては、同様のステップ番号を付与しており、これらのステップについての説明を省略する。
【０２１１】
図１５に示すように、該第３の手法によるポインタ生成／変更処理では、選択信号ＳＥＬにより示される領域（領域ｉ）が整列バッファ１１０の先頭の領域以外の書込済領域であり、かつ、対象パケットのシーケンス番号ＳＮが、領域ｉの１つ前の領域に書き込まれたパケット情報ＰＩから得られる加算値Ｗ（Ｗ（ｉ−１））に一致する場合（第２Ａの場合）（Ｓ３２２：Ｙｅｓ、Ｓ３４０、Ｓ３４２：Ｎｏ、Ｓ３５０：Ｙｅｓ）において、さらに、領域ｉに書き込まれたパケット情報ＰＩに含まれるシーケンス番号ＳＮが、対象パケットの加算値Ｗに一致するか否かを確認する（Ｓ３５２）。そして、一致する場合にのみ（Ｓ３５２：Ｙｅｓ）、選択信号ＳＥＬにより示される領域の次の領域を示すポインタ（Ｐ（ｉ＋１））を削除する（Ｓ３５４）。一致しない場合には（Ｓ３５２：Ｎｏ）、第２の手法のときと同様に、既にあるポインタに対するこれ以上の変更や、新たなポインタの生成をしない。
【０２１２】
なお、ステップＳ３５４において削除されるポインタＰ（ｉ＋１）は、領域ｉを示していたものであり、ステップＳ３４０において、領域（ｉ＋１）を示すようにシフトされている。
【０２１３】
さらに、該第３の手法は、第２Ｂの場合（Ｓ３２２：Ｙｅｓ、Ｓ３４０、Ｓ３４２：Ｙｅｓ、またはＳ３２２：Ｙｅｓ、Ｓ３４０、Ｓ３４２：Ｎｏ、Ｓ３５０：Ｎｏ）においても、制御回路３００は、さらに、領域ｉに書き込まれたパケット情報ＰＩに含まれるシーケンス番号ＳＮが、対象パケットの加算値Ｗに一致するか否かを確認する（Ｓ３４４）。そして、一致する場合にのみ（Ｓ３４４：Ｙｅｓ）、選択信号ＳＥＬにより示される領域の次の領域を示すポインタ（Ｐ（ｉ＋１））を、領域ｉを示すように変更する（Ｓ３４６）。一致しない場合には（Ｓ３４４：Ｎｏ）、第２の手法のときと同様に、領域ｉを示すポインタを生成する。
【０２１４】
この場合も、ステップＳ３４６において変更されたポインタＰ（ｉ＋１）は、領域ｉを示していたものであり、ステップＳ３４０において、領域（ｉ＋１）を示すようにシフトされている。
【０２１５】
図１６〜図１７を参照して、第３の手法を適用した整列回路１００による処理の具体例を説明する。
【０２１６】
該例においても、シーケンス番号が夫々１、５、９、１１、１７、２０、２４、３０である８つのパケットは送信され、到着順のシーケンス番号は、「５、１、９、１１、２４、２０、１７、３０」となっている。
【０２１７】
図１６に示すように、まず、タイミングｔ１において、シーケンス番号ＳＮが５であるパケットが受信され、そのパケット情報ＰＩが整列回路１００に入力される。制御回路３００は、該パケットのシーケンス番号ＳＮと加算値Ｗを取得する。整列バッファ１１０の領域０が未書込領域であるため、制御回路３００は、領域０を示す選択信号ＳＥＬを生成すると共に、領域０を示すポインタ（ポインタＰ１）を生成するポインタ記憶回路に格納する。
【０２１８】
その結果、タイミングｔ２において、シーケンス番号ＳＮが１であるパケットが到着したときに、整列バッファ１１０の領域０に、パケット情報ＰＩに含まれるシーケンス番号ＳＮ、加算値Ｗとして、夫々「５」、「９」が書き込まれている。また、領域０を示すポインタＰ１がポインタ記憶回路に記憶されている。
【０２１９】
このとき、検索対象領域がポインタＰ１により示される領域０のみであり、また、領域０に書き込まれたシーケンス番号ＳＮが対象パケットのシーケンス番号ＳＮの１より大きいため、制御回路３００は、領域０が境界領域であると判定し、領域０を示す選択信号ＳＥＬを生成する。このとき、制御回路３００は、領域１を示すようにポインタＰ１をシフトするものの、領域０に書き込まれているシーケンス番号ＳＮの５が対象パケットの加算値Ｗの５に一致するため、制御回路３００は、ポインタＰ１を、領域０を示すように戻す。
【０２２０】
その結果、タイミングｔ３において、シーケンス番号ＳＮが９であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして、整列バッファ１１０の領域０には、「１」、「５」が書き込まれており、領域１には、「５」、「９」が書き込まれている。また、ポインタ記憶回路には、領域０を夫々示すポインタＰ１のみが記憶されている。
【０２２１】
そのため、領域０のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、最後の書込済領域（領域１）の次の領域２を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの９が、領域１に書き込まれた加算値Ｗの９に一致するため、制御回路３００は、既にあるポインタの変更も、新たなポインタの生成もしない。
【０２２２】
その結果、図１７に示すように、タイミングｔ４において、シーケンス番号ＳＮが１１であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして、整列バッファ１１０の領域０には、「１」、「５」が書き込まれており、領域１には、「５」、「９」が書き込まれており、領域２には、「９」、「１１」が書き込まれている。また、ポインタ記憶回路には、相変わらず、領域０示すポインタＰ１のみが記憶されている。
【０２２３】
そのため、領域０のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、領域３を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの１１が、領域２に書き込まれた加算値Ｗの１１に一致するため、制御回路３００は、既にあるポインタの変更も、新たなポインタの生成もしない。
【０２２４】
その結果、タイミングｔ５において、シーケンス番号ＳＮが２４であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして、さらに、整列バッファ１１０の領域３に、「１１」、「１７」が書き込まれており、ポインタ記憶回路には、相変わらず、領域０を示すポインタＰ１のみが記憶されている。
【０２２５】
このときも、領域０のみが検索対象領域である。制御回路３００は、境界領域の検索の結果、境界領域が無いと判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの２４が、領域３に書き込まれた加算値Ｗの１７に一致しないため、制御回路３００は、領域４を示す新たなポインタ（ポインタＰ２）を生成してポインタ記憶回路に格納する。
【０２２６】
その結果、タイミングｔ６において、シーケンス番号ＳＮが２０であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして、さらに、整列バッファ１１０の領域４に、「２４」、「３０」が書き込まれており、ポインタ記憶回路には、領域０を示すポインタＰ１と、領域４を示すポインタＰ２が格納されている。
【０２２７】
そのため、領域０、領域４が検索対象領域である。制御回路３００は、境界領域の検索の結果、領域４が境界領域であると判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの２０が、領域４に書き込まれた加算値Ｗの１７に一致しないものの、領域５に書き込まれたシーケンス番号が、対象パケットの加算値Ｗに一致する。従って、制御回路３００は、ポインタＰ２を、一旦領域５を示すようにシフトするものの、領域４を示すように戻す。
【０２２８】
その結果、図１８に示すように、タイミングｔ７において、シーケンス番号ＳＮが１７であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして整列バッファ１１０の領域４に書き込まれていた「２４」、「３０」が領域５にシフトされており、領域４には、シーケンス番号ＳＮ、加算値Ｗとして、「２０」、「２４」が書き込まれている。また、ポインタ記憶回路には、領域０、領域４を夫々示すポインタＰ１、ポインタＰ２が格納されている。
【０２２９】
このとき、領域０、領域４が検索対象領域である。制御回路３００は、領域０に続いて領域４を対象に境界領域の検索を行った結果、領域４が境界領域であると判定し、領域４を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの１７が、領域３に書き込まれた加算値Ｗの１７に一致し、さらに、領域４に書き込まれたシーケンス番号ＳＮが対象パケットの加算値Ｗに一致するため、制御回路３００は、ポインタＰ２を、領域５を示すようにシフトした後に削除する。
【０２３０】
その結果、タイミングｔ８において、シーケンス番号ＳＮが３０であるパケットが到着したときに、シーケンス番号ＳＮ、加算値Ｗとして整列バッファ１１０の領域４と領域５に書き込まれていた情報が夫々領域５、領域６にシフトされており、領域４には、シーケンス番号ＳＮ、加算値Ｗとして、「１７」、「２０」が書き込まれている。また、ポインタ記憶回路には、領域０を示すポインタＰ１のみが格納されている。
【０２３１】
そのため、領域０のみが検索対象領域である。制御回路３００は、領域０を対象にして境界領域の検索を行った結果、境界領域が無いと判定し、最後の書込済領域の次の領域７を示す選択信号ＳＥＬを生成する。また、対象パケットのシーケンス番号ＳＮの３０が、領域６に書き込まれた加算値Ｗの３０に一致するため、制御回路３００は、既にあるポインタの変更も、新たなポインタの生成もしない。
【０２３２】
以上の説明から分かるように、本第３の手法によれば、制御回路３００は、ポインタ生成／変更処理をする際に、選択信号ＳＥＬにより示される領域に書き込まれていたシーケンス番号ＳＮと対象パケットの加算値Ｗとの比較をさらに行い、比較の結果に応じてポインタのシフトや生成などを行う（行わないことも含む）ため、第１の手法と第２の手法より、検索対象領域をより絞ることができ、ひいては、境界領域の検索処理の効率を一層向上させることができる。
【０２３３】
本第３の手法の技術思想を、第１の手法に適用することもできる。この場合、既に整列バッファ１１０に書き込まれたパケット情報ＰＩに含まれる連続ビットＣＢを変更する必要がある。
【０２３４】
以上に説明した本発明の技術的原理を踏まえて、本発明にかかる実施の形態を説明する。
【０２３５】
＜第１の実施の形態＞
図１９は、本発明の第１の実施の形態にかかる受信装置４００を示す図である。受信装置４００は、受信ブロック４０２、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）４０４、ヘッダ解析部４１０、トレーステーブル４２０、計時部４２２、ＤＭＡＣ４３０、パケット情報生成部４４０、バス４５０、ＣＰＵ４６０、メモリ４７０、整列回路５００を備える。
【０２３６】
受信ブロック４０２は、現在到着したパケット（対象パケット）を受信し、ＦＩＦＯ４０４へ転送する。
【０２３７】
ＦＩＦＯ４０４は、受信バッファであり、受信ブロック４０２からの対象パケットを一時的に格納して、ヘッダ解析部４１０、ＤＭＡＣ４３０、パケット情報生成部４４０へ出力する。
【０２３８】
ヘッダ解析部４１０は、ＦＩＦＯ４０４に格納されているパケットに対して逐次ヘッダの抽出を行うと共に、抽出したヘッダをパケット情報生成部４４０に出力する。また、ヘッダ解析部４１０は、抽出したヘッダにシーケンス番号があるか否かを確認し、確認の結果もパケット情報生成部４４０に出力する。さらに、ヘッダ解析部４１０は、対象パケットのヘッダにシーケンス番号が含まれている場合に、該ヘッダに含まれるコネクション情報（後述する）がトレーステーブル４２０に格納されているか否かを判定し、判定の結果、格納されていない場合には、対象パケットのコネクション情報をトレーステーブル４２０に出力する。
【０２３９】
トレーステーブル４２０は、対応するコネクション数分のコネクション情報を格納するエリアを備えており、コネクション毎にコネクションを管理する。図２０は、トレーステーブル４２０に格納されているコネクション情報の例を示す。図示のように、トレーステーブル４２０には、コネクション毎に、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号がコネクション情報として格納されている。
【０２４０】
トレーステーブル４２０は、ヘッダ解析部４１０から転送されてきたコネクション情報に一致するコネクション情報が格納されていないときに、該コネクション情報を新たなコネクション情報として蓄積すると共に、計時部４２２に、該コネクションに対応するタイマ（図示せず）の起動要求を出力する。
【０２４１】
また、トレーステーブル４２０は、計時部４２２からタイマ満了信号を受信すると、該タイマ満了信号に対応するコネクション情報をトレーステーブル４２０から削除する。
【０２４２】
計時部４２２は、トレーステーブル４２０により管理されているコネクション情報毎にタイマ及び受信データ数カウンタ（図示せず）を有する。トレーステーブル４２０から起動要求を受信すると、当該タイマと受信データ数カウンタのカウントを開始する。そして、タイマまたは受信データ数カウンタのカウント値が予め設定された閾値に達したときに、対応するコネクションについて、トレーステーブル４２０の満了信号を出力すると共に、当該タイマまたは受信データ数カウンタを初期化する。
【０２４３】
パケット情報生成部４４０は、ヘッダ解析部４１０からのヘッダ情報から、シーケンス番号ＳＮを含むパケット情報ＰＩを生成する。
【０２４４】
また、パケット情報生成部４４０は、シーケンス番号の有無を示すヘッダ解析部４１０の確認結果に基づいて、シーケンス番号が無い場合には、該対象パケットが分割パケットではないと判定して、作成したパケット情報ＰＩをＤＭＡＣ４３０に出力する。一方、シーケンス番号がある場合には、パケット情報生成部４４０は、作成したパケット情報ＰＩを整列回路５００に出力する。
【０２４５】
整列回路５００は、対応するコネクションの数分搭載されている。分かりやすいように、１つのみを図示及び説明する。
【０２４６】
整列回路５００は、対応するコネクションのパケット情報ＰＩをパケット情報生成部４４０から入力され、シーケンス番号の小さい順にパケット情報ＰＩを並び替えて一時的に保管する。
【０２４７】
また、計時部４２２から、当該コネクションに関するタイマ満了信号が整列回路５００にも入力される。整列回路５００は、この信号を受信すると、一時保管中の全てのパケット情報ＰＩをＤＭＡＣ４３０に出力すると共に、保管中の全てのパケット情報ＰＩを初期化する。
整列回路５００については、後に詳細に説明する。
【０２４８】
ＤＭＡＣ４３０は、ＤＭＡ転送を担うＤＭＡコントローラであり、ＦＩＦＯ４０４からの各パケットを、バス４５０を介してメモリ４７０に転送する。また、ＤＭＡＣ４３０は、パケット情報生成部４４０により生成された、シーケンス番号が無いパケットのパケット情報ＰＩも、バス４５０を介してメモリ４７０に転送する。さらに、ＤＭＡＣ４３０は、整列回路５００からのパケット情報ＰＩも、バス４５０を介してメモリ４７０に転送する。
【０２４９】
バス４５０は、ＤＭＡＣ４３０及びＣＰＵ４６０によるメモリ４７０のアクセスを中継する。
【０２５０】
ＣＰＵ４６０は、受信装置４００全体の制御を行う中央処理装置であり、バス４５０を介してＤＭＡＣ４３０に接続されている。ＣＰＵ４６０、ＤＭＡＣ４３０、メモリ４７０間のデータのやりとりは、通常の情報処理装置における同種のものと同様であり、ここで詳細な説明を省略する。
【０２５１】
メモリ４７０は、例えばＲＡＭ（Ｒａｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、バス４５０を介してＤＭＡＣ４３０とＣＰＵ４６０によりアクセスされる。
【０２５２】
メモリ４７０は、パケット情報エリア４７２と、パケットエリア４７４を備える。ＤＭＡＣ４３０から転送されてきたパケット情報ＰＩは、パケットエリア４７４に格納され、パケットエリア４７４には、ＤＭＡＣ４３０から転送されたパケットを格納する
【０２５３】
図２１を参照して、整列回路５００を説明する。
図２１に示すように、整列回路５００は、シーケンス番号抽出回路５１０、比較器５２０、選択信号生成回路５３０、書込回路２００、整列バッファ５４０、情報抽出部５５０、セレクタ５７０を備える。整列回路５００において、書込回路２００と整列バッファ５４０を除いた他のブロックは、制御回路を構成する。
【０２５４】
パケット情報生成部４４０からのパケット情報ＰＩは、シーケンス番号抽出回路５１０、書込回路２００に入力される。
【０２５５】
シーケンス番号抽出回路５１０は、パケット情報ＰＩから対象パケットのシーケンス番号ＳＮを抽出して比較器５２０に出力する。
【０２５６】
選択信号生成回路５３０は、第１の選択信号ＳＥＬ１を生成してセレクタ５７０に出力し、第２の選択信号ＳＥＬ２を生成して書込回路２００に出力する。第１の選択信号ＳＥＬ１と第２の選択信号ＳＥＬ２は、整列バッファ５４０内の複数のバッファ（バッファ０〜バッファＮ）のいずれかを示す信号である。さらに、第２の選択信号ＳＥＬ２は、「初期化」を示すこともできる。
【０２５７】
書込回路２００は、本発明の原理のときに説明した書込回路２００（図５）であり、第２の選択信号ＳＥＬ２に応じて、パケット情報ＰＩを整列バッファ５４０への書込みを行う。なお、「初期化」を示す第２の選択信号ＳＥＬ２を受信した際に、書込回路２００は、全ての格納データを初期化する。
【０２５８】
整列バッファ５４０は、書込回路２００内の各選択回路に夫々対応するバッファを含み、対応する選択回路と、後述の情報抽出部５５０における相対応の情報抽出回路とに接続されている。
【０２５９】
情報抽出部５５０は、整列バッファ５４０内の各バッファに夫々対応する情報抽出回路（情報抽出回路５６０〜情報抽出回路５６Ｎ）を有する。各情報抽出回路は、対応するバッファにパケット情報ＰＩが書き込まれたとき（更新されたときも含む）に、該バッファに書き込まれたパケット情報ＰＩを読み出して、シーケンス番号ＳＮと、後述するストアフラグＳＦを抽出すると共に、次に該バッファにパケット情報ＰＩが書き込まれるまで、または初期化されるときまで保持する。
【０２６０】
セレクタ５７０は、情報抽出部５５０の各情報抽出回路と接続されており、選択信号生成回路５３０からの第１の選択信号ＳＥＬ１が示すバッファに対応する情報抽出回路により抽出されたシーケンス番号ＳＮとストアフラグＳＦを選択して比較器５２０と選択信号生成回路５３０に夫々出力する。
【０２６１】
比較器５２０は、セレクタ５７０からのシーケンス番号ＳＮと、シーケンス番号抽出回路５１０からのシーケンス番号ＳＮ（対象パケットのシーケンス番号）との大小関係を比較し、結果を選択信号生成回路５３０に出力する。
【０２６２】
選択信号生成回路５３０は、比較器５２０からの比較結果に基づいて、前回の第１の選択信号ＳＥＬ１が示すバッファの次のバッファを示す第１の選択信号ＳＥＬ１を生成してセレクタ５７０に出力するか、第２の選択信号ＳＥＬ２を生成して書込回路２００に出力する。
【０２６３】
図２２は、整列バッファ５４０内の各バッファ、メモリ４７０のパケット情報エリア４７２におけるパケット情報ＰＩの格納態様の例を示す図である。図示のように、パケット情報エリア４７２と各バッファ内に、パケット情報の有無を示すストアフラグと、パケットエリア４７４において、該パケット情報に対応するパケットを格納するアドレスと、シーケンス番号ＳＮとをパケット情報ＰＩとして格納されている。なお、将来的な機能拡張の為の機能拡張用フィールドも備えられている。整列バッファ５４０の各バッファは、このようなパケット情報ＰＩを１つのみ格納し、パケット情報エリア４７２は、複数のパケット情報ＰＩを格納する。
【０２６４】
図２３は、受信装置４００におけるヘッダ解析部４１０、トレーステーブル４２０、ＤＭＡＣ４３０、パケット情報生成部４４０、整列回路５００による処理の流れを示すフローチャートである。
【０２６５】
計時部４２２から当該コネクションのタイマ満了信号を受信しておらず、対象パケットを受信すると（Ｓ４００：Ｎｏ、Ｓ４０２：Ｙｅｓ）、ヘッダ解析部４１０は、ＦＩＦＯ４０４からの該対象パケットのヘッダを解析し、シーケンス番号ＳＮの有無に基づいて分割パケットであるか否かを判定する（Ｓ４０４）。なお、タイマ満了信号は、当該コネクションに対応する整列バッファ５４０におけるパケット情報ＰＩの滞留時間がタイムアウトしたとき、または、データ滞留数がオーバーフローしているときに計時部４２２から出力される。
【０２６６】
ヘッダ解析部４１０は、ステップＳ４０４における判定の結果と、ヘッダをパケット情報生成部４４０に出力する。対象パケットが分割パケットではない場合に（Ｓ４０４：Ｎｏ）、パケット情報生成部４４０は、ヘッダ解析部４１０からのヘッダに基づいてパケット情報ＰＩを生成してＤＭＡＣ４３０に出力し、ＤＭＡＣ４３０は、該パケット情報ＰＩに対応するパケットをパケットエリア４７４にＤＭＡ転送すると共に、該パケット情報ＰＩをパケット情報エリア４７２にＤＭＡ転送する（Ｓ４０６、Ｓ４０８、Ｓ４１０）。
【０２６７】
一方、対象パケットが分割パケットである場合に（Ｓ４０４：Ｙｅｓ）、ヘッダ解析部４１０は、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号を含むコネクション情報と生成し、パケット情報生成部４４０は、パケット情報ＰＩを生成して整列回路５００に出力する（Ｓ４１２、Ｓ４１４）。
【０２６８】
ヘッダ解析部４１０は、ステップＳ４１２で生成したコネクション情報と、トレーステーブル４２０に格納された各コネクション情報とを比較する（Ｓ４１６）。
【０２６９】
トレーステーブル４２０に対象パケットのコネクション情報があれば（Ｓ４２０：Ｙｅｓ）、ヘッダ解析部４１０は、該対象パケットについての処理を終了する。一方、トレーステーブル４２０に対象パケットのコネクション情報がなければ（Ｓ４２０：Ｎｏ）、ヘッダ解析部４１０は、ステップ４１２で生成したコネクション情報をトレーステーブル４２０に出力する。これにより、トレーステーブル４２０は、新しいコネクションのパケットが受信されたとして、該コネクションに対応するタイマを計時部４２２に起動させる（Ｓ４２４）。
【０２７０】
整列回路５００は、パケット情報生成部４４０からパケット情報ＰＩを受信すると、並替処理を行う（Ｓ４３０）。また、ＤＭＡＣ４３０は、当該パケットをパケットエリア４７４にＤＭＡ転送する（Ｓ４７０）。
【０２７１】
計時部４２２からタイマ満了信号が出されると（Ｓ４００：Ｙｅｓ）、ＤＭＡＣ４３０は、整列回路５００の整列バッファ５４０内の全てのパケット情報ＰＩをパケット情報エリア４７２にＤＭＡ転送する（Ｓ４８０）。また、トレーステーブル４２０は、該コネクションに対応するコネクション情報とタイマを初期化する（Ｓ４８２）。
【０２７２】
図２４は、図２３におけるステップＳ４３０の並替処理を示すフローチャートである。タイマ満了信号を受信しておらず、パケット情報生成部４４０からパケット情報ＰＩを受信すると（Ｓ４３２：Ｎｏ、Ｓ４３４：Ｙｅｓ）、シーケンス番号抽出回路５１０は、パケット情報ＰＩからシーケンス番号ＳＮを生成して比較器５２０に出力し（Ｓ４３６）、選択信号生成回路５３０は、バッファ０を示す第１の選択信号ＳＥＬ１を生成してセレクタ５７０に出力する（Ｓ４３８、Ｓ４４０）。セレクタ５７０は、情報抽出部５５０のうちの、バッファ０に対応する情報抽出回路５６０に保持されたシーケンス番号ＳＮ（０）とストアフラグＳＦ（０）を選択して比較器５２０と選択信号生成回路５３０に夫々出力する。
【０２７３】
ストアフラグＳＦ（０）が０であり、すなわちバッファ０が未書込バッファ（以下「未書込領域」ともいう）であるときに（Ｓ４４２：Ｎｏ）選択信号生成回路５３０は、バッファ０を示す第２の選択信号ＳＥＬ２を生成して書込回路２００に出力する（Ｓ４５４）。これを受けて、書込回路２００は、ステップＳ１６０の書込処理をする。ステップＳ１６０の書込処理は、図４に示す通りである。ここで、対象パケットのパケット情報ＰＩは、バッファ０に書き込まれる。
【０２７４】
一方、ステップＳ４４２において、ストアフラグＳＦ（０）が１であり、すなわちバッファ０が書込済バッファ（以下「書込済領域」ともいう）であるときに（Ｓ４４２：Ｙｅｓ）、選択信号生成回路５３０は、境界となるバッファ（境界領域）の検索を開始し、比較器５２０によるバッファ０に格納されているシーケンス番号ＳＮ（０）と、シーケンス番号抽出回路５１０が得た対象パケットのシーケンス番号ＳＮとの比較結果を確認する（Ｓ４５０）。
【０２７５】
バッファ０に書き込まれたシーケンス番号ＳＮ（０）が対象パケットのシーケンス番号ＳＮより大きいときに、選択信号生成回路５３０は、バッファ０が境界領域であると判定し、バッファ０を示す第２の選択信号ＳＥＬ２を生成して書込回路２００に出力する（Ｓ４５０：Ｙｅｓ、Ｓ４５４）。これに応じて、書込回路２００によるパケット情報ＰＩの書込処理がなされる。このとき、バッファ０からの各バッファに格納されたデータは次のバッファにシフトされ、バッファ０には、対象パケットのパケット情報ＰＩが書き込まれる。
【０２７６】
また、情報抽出部５５０の各情報抽出回路は、対応するバッファ内のパケット情報ＰＩを読み出してシーケンス番号ＳＮとストアフラグＳＦを抽出して、保持していたものを更新する。
【０２７７】
ステップＳ４５０において、バッファ０に書き込まれたシーケンス番号ＳＮ（０）が対象パケットのシーケンス番号ＳＮより小さいときには、選択信号生成回路５３０は、バッファ０が境界領域ではないと判定し、次のバッファ（バッファ１）を示す第１の選択信号ＳＥＬ１を生成してセレクタ５７０に出力する（Ｓ４５０：Ｎｏ、Ｓ４５２、Ｓ４４０）。そして、領域１を検索対象とした境界領域の検索が行われる（Ｓ４４２〜）。
【０２７８】
このような処理は、境界領域が検出されるまで、最後の書込済領域を検索対象とした検索がなされるまで繰り返され、パケット情報ＰＩは、整列バッファ５４０内の未書込領域か、いずれかの書込済領域に書き込まれる。未書込領域に書き込まれる場合には、該未書込領域が整列バッファ５４０の先頭のバッファか、最後の書込済領域の次の領域である。また、書込済領域に書き込まれた場合には、該書込済領域に格納されていたシーケンス番号ＳＮが必ず対象パケットのシーケンス番号ＳＮより大きい。また、対象パケットのパケット情報ＰＩを書き込まれた領域の１つ前の領域には、必ず対象パケットのシーケンス番号ＳＮより小さいシーケンス番号ＳＮが書き込まれている。
【０２７９】
なお、タイマ満了信号を受信した際に（Ｓ４３２：Ｙｅｓ）、選択信号生成回路５３０は、整列バッファ５４０内に書き込まれた全てのパケット情報ＰＩのＤＭＡ転送の完了後に、整列バッファ５４０内の各バッファの初期化を指示する第２の選択信号ＳＥＬ２を書込回路２００に出力する。これにより、整列バッファ５４０内の各バッファ、及び情報抽出部５５０内の各情報抽出回路は、初期化される（Ｓ４６０）。
【０２８０】
本実施の形態の整列回路１００は、本発明の原理を具現化したものであり、本発明の原理のときに説明した効果を得ることができる。
【０２８１】
＜第２の実施の形態＞
【０２８２】
本発明の第２の実施の形態も、受信装置である。この受信装置は、図１９に示す受信装置４００と比べ、パケット情報生成部４４０が作成したパケット情報ＰＩには、加算値Ｗ（次に送信されたパケットのシーケンス番号）が含まれる点と、図２１に示す整列回路５００の代わりに、図２５に示す整列回路６００が設けられた点とを除き、受信装置４００と同様であるので、ここで、整列回路６００についてのみ説明する。なお、整列回路６００について、整列回路５００と同様の機能を担う回路に関しては、図２１と同様の符号を付与しており、これらの回路に関しては、説明を省略する。
【０２８３】
整列回路６００は、境界領域の検索を効率良く行うための、連続ビットＣＢに基づいた第１の手法を適用したものである。図２５に示すように、整列回路６００は、選択信号生成回路６３０、情報抽出部６５０、セレクタ６７０が整列回路５００における選択信号生成回路５３０、情報抽出部５５０、セレクタ５７０と夫々異なる点、結合部６１０と比較器６２０がさらに設けられた点以外、整列回路５００と同様である。
【０２８４】
結合部６１０は、パケット情報生成部４４０からのパケット情報ＰＩと、比較器６２０からの連続ビットＣＢとを結合してパケット情報ＰＩＡを得て書込回路２００に出力する。そのため、本第２の実施の形態において、整列バッファ５４０、メモリ４７０のパケット情報エリア４７２におけるパケット情報の格納態様は、図２６に示すようになる。
【０２８５】
図２６に示すように、パケット情報ＰＩＡには、ストアフラグ、シーケンス番号ＳＮに加え、さらに連続ビットＣＢと加算値Ｗが含まれている。なお、加算値Ｗは、前述したように、パケット情報生成部４４０によりパケット情報ＰＩに盛り込んだものである。
【０２８６】
図２５に戻って説明する。
情報抽出部６５０は、各情報抽出回路が、対応するバッファに書き込まれたパケット情報ＰＩＡから、シーケンス番号ＳＮとストアフラグＳＦに加え、さらに、加算値Ｗと連続ビットＣＢを抽出する。それ以外は、情報抽出部５５０と同様である。
【０２８７】
セレクタ６７０は、第１の選択信号ＳＥＬ１により示されるバッファに対応する情報抽出回路が抽出したシーケンス番号ＳＮとストアフラグＳＦを比較器５２０と選択信号生成回路６３０に夫々出力すると共に、さらに、第１の選択信号ＳＥＬ１により示されるバッファに対応する情報抽出回路が抽出した連続ビットＣＢを選択信号生成回路６３０に出力し、第１の選択信号ＳＥＬ１により示されるバッファの１つ前のバッファに対応する情報抽出回路が抽出した加算値Ｗを比較器６２０に出力する。
【０２８８】
選択信号生成回路６３０は、境界領域の検索に際して、セレクタ６７０からの連続ビットＣＢが０であるときにのみ検索を実行し、連続ビットＣＢが１である場合には該領域についての検索をスキップする。また、選択信号生成回路６３０は、第２の選択信号ＳＥＬ２を出力する際に、第２の選択信号ＳＥＬ２により示されるバッファが整列バッファ５４０の先頭のバッファ（バッファ０）以外であるときに、比較指示を示す比較制御信号ｃｔｒを比較器６２０に出力する。他の点に関しては、選択信号生成回路５３０と同様である。
【０２８９】
比較器６２０は、選択信号生成回路６３０から比較制御信号ｃｔｒを受信すると、対象パケットのシーケンス番号ＳＮが、セレクタ６７０からの加算値Ｗに一致するか否かを比較し、一致するときにのみ連続ビットＣＢに１を出力する。なお、このとき、セレクタ６７０からの加算値Ｗは、対象パケットが書き込まれるバッファの１つ前のバッファに格納されている加算値Ｗである。
【０２９０】
結合部６１０は、比較器６２０から連続ビットＣＢを受信すると、該連続ビットＣＢをパケット情報ＰＩに結合してパケット情報ＰＩＡを生成する。なお、比較器６２０から連続ビットＣＢの出力がなく、すなわち連続ビットＣＢが０であるときには、連続ビットＣＢが０であるとしてパケット情報ＰＩに結合する。
【０２９１】
連続ビットＣＢに基づいて境界領域の効率化を図る第１の手法は、上記にて詳しく説明したため、ここでは、さらなる詳細な説明を省略する。
【０２９２】
勿論、本第２の実施の形態の受信装置における整列回路６００は、第１の手法を具現化したものであるため、第１の手法により得られる効果を得ることができる。
【０２９３】
＜第３の実施の形態＞
本発明の第３の実施の形態も、受信装置である。この受信装置は、図１９に示す受信装置４００と比べ、パケット情報生成部４４０が作成したパケット情報ＰＩには、加算値Ｗ（次に送信されたパケットのシーケンス番号）が含まれる点と、図２１に示す整列回路５００の代わりに、図２７に示す整列回路７００が設けられた点とを除き、受信装置４００と同様であるので、ここで、整列回路７００についてのみ説明する。なお、整列回路７００について、整列回路５００と同様の機能を担う回路に関しては、図２１と同様の符号を付与しており、これらの回路に関しては、説明を省略する。
【０２９４】
整列回路７００は、境界領域の検索を効率良く行うための、ポインタに基づいた第３の手法を適用したものである。図２７に示すように、整列回路７００は、比較器７２２、比較器７２４、ポインタ記憶回路７２６をさらに備えた点、抽出回路７１０、選択信号生成回路７３０、情報抽出部７５０、セレクタ７７０が整列回路５００における選択信号生成回路５３０、情報抽出部５５０、セレクタ５７０と夫々異なる点を除き、整列回路５００と同様である。
【０２９５】
図２８は、本第３の実施の形態において、整列バッファ５４０、メモリ４７０のパケット情報エリア４７２におけるパケット情報の格納態様の例を示す。図２８に示すように、パケット情報ＰＩには、ストアフラグ、シーケンス番号ＳＮに加え、さらに加算値Ｗが含まれている。なお、加算値Ｗは、前述したように、パケット情報生成部４４０によりパケット情報ＰＩに盛り込んだものである。
【０２９６】
図２７に戻って説明する。
抽出回路７１０は、パケット情報生成部４４０からのパケット情報ＰＩからシーケンス番号ＳＮを抽出して比較器５２０と比較器７２４に出力する。さらに、抽出回路７１０は、パケット情報ＰＩから加算値Ｗを抽出して比較器７２２に出力する。
【０２９７】
情報抽出部７５０は、各情報抽出回路が、対応するバッファに書き込まれたパケット情報ＰＩから、シーケンス番号ＳＮとストアフラグＳＦに加え、さらに、加算値Ｗを抽出する。それ以外は、情報抽出部５５０と同様である。
【０２９８】
セレクタ７７０は、第１の選択信号ＳＥＬ１により示されるバッファに対応する情報抽出回路が抽出したシーケンス番号ＳＮとストアフラグＳＦを比較器５２０と選択信号生成回路７３０に夫々出力すると共に、さらに、第１の選択信号ＳＥＬ１により示されるバッファの１つ前のバッファに対応する情報抽出回路が抽出した加算値Ｗを比較器７２４に出力する。また、セレクタ７７０は、比較器５２０に出力したシーケンス番号ＳＮを比較器７２２にも出力する。
【０２９９】
選択信号生成回路７３０は、境界領域の検索に際して、ポインタ記憶回路７２６に記憶された各ポインタにより夫々示されるバッファのみを検索対象領域にし、ポインタにより示されていないバッファについての検索をスキップする。また、選択信号生成回路７３０は、第２の選択信号ＳＥＬ２を出力する際に、第２の選択信号ＳＥＬ２により示されるバッファが整列バッファ５４０の先頭のバッファ（バッファ０）以外であるときに、比較指示を示す比較制御信号を比較器７２４に出力し、第２の選択信号ＳＥＬ２により示されるバッファが書込済領域であるときに、比較指示を示す比較制御信号を比較器７２４に出力する。また、比較器７２２と比較器７２４の比較結果に応じてポインタ生成／変更処理（ポインタを生成してポインタ記憶回路７２６への格納、既にあるポインタのシフトなど）を行う。他に関しては、選択信号生成回路５３０と同様である。
【０３００】
比較器７２４は、選択信号生成回路７３０から比較制御信号を受信すると、対象パケットのシーケンス番号ＳＮが、セレクタ７７０からの加算値Ｗに一致するか否かを比較し、比較の結果選択信号生成回路７３０に返送する。なお、このとき、セレクタ７７０からの加算値Ｗは、対象パケットが書き込まれるバッファの１つ前のバッファに格納されている加算値Ｗである。すなわち、比較器７２４の比較結果は、対象パケットのパケット情報ＰＩを書き込まれるバッファの１つ前のバッファに書き込まれたパケット情報ＰＩが、対象パケットの１つ前に送信されたパケットのパケット情報ＰＩであるか否かを示す。
【０３０１】
比較器７２２は、選択信号生成回路７３０から比較制御信号を受信すると、セレクタ７７０からのシーケンス番号ＳＮと、抽出回路７１０からの加算値Ｗを比較し、比較の結果を選択信号生成回路７３０に返送する。なお、このとき、抽出回路７１０からの加算値Ｗは、対象パケットの次に送信されたパケットのシーケンス番号に該当し、セレクタ７７０からのシーケンス番号ＳＮは、第２の選択信号ＳＥＬ２により示される領域に書き込まれていたシーケンス番号であり、対象パケットのパケット情報ＰＩを書き込まれた後には、パケット情報ＰＩを書き込まれたバッファの次のバッファに格納されている。
【０３０２】
すなわち、比較器７２２の比較結果は、対象パケットのパケット情報ＰＩが書き込まれた後に、当該バッファの次のバッファに格納されているパケット情報ＰＩが、対象パケットの１つ後に送信されたパケットのパケット情報ＰＩであるか否かを示す。
【０３０３】
比較器７２２と比較器７２４の比較結果に応じたポインタ生成／変更処理は、第３の手法のときに詳しく説明したので、ここでは、さらなる詳細な説明を省略する。
【０３０４】
勿論、本第３の実施の形態の受信装置における整列回路７００は、第３の手法を具現化したものであるため、第３の手法により得られる効果を得ることができる。
【０３０５】
なお、ポインタに基づいた第２の手法に関しては、上記の説明から簡単に具現化できるため、ここで第２の手法の具体的な実施例を省略する。
【０３０６】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対してさまざまな変更、増減、組合せを行ってもよい。これらの変更、増減、組合せが行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【０３０７】
例えば、第２の実施の形態と第３の実施の形態において、加算値Ｗを直接パケット情報ＰＩに加えているが、加算値Ｗを算出可能であれば、ペイロード長やパケット長などの値であってもよい。
【０３０８】
また、上述した各実施の形態の受信装置は、整列回路５００によりパケット情報の並替えを行い、パケット情報とパケットを別々にＤＭＡ転送しているが、例えば、整列回路５００における整列バッファ５４０を受信バッファとして使用し、パケットそのものの格納順を送信順に並び替えると共に、並替え後に各パケットをメモリ４７０にＤＭＡ転送をするようにしてもよい。
【符号の説明】
【０３０９】
１  並替え制御部  ２  シーケンス番号分離部
３  読出しポインタ用リングカウンタ  ４  並替えバッファ
１０  通信装置  ２０  通信装置
２１  パケットタイザー回路  ２２  カウンタ
２３  パケット送受信回路  ２４  パケットアセンブラ回路
２５  受信バッファ  ２６  タイマ
２７  リスト  ２８  順序並替部
３０  通信網  ５０  ＴＣＰ／ＩＰパケット
６０  ＩＰヘッダ  ６１  ＩＰパケット情報
６２  送信元ＩＰアドレス  ６３  宛先ＩＰアドレス
７０  ＴＣＰヘッダ  ７１  送信元ポート番号
７２  宛先ポート番号  ７３  シーケンス番号
７４  アクノリッジメント番号  ７５  オフセット
７６  予備フィールド  ７７  ＴＣＰフラグ
７８  ウインドウ  ７９  チェックサム
８０  アージェントポイント  ９０  ペイロード
１００  整列回路  １１０  整列バッファ
２００  書込回路  ２１０〜２１Ｎ  選択回路
３００  制御回路  ４００  受信装置
４０２  受信ブロック  ４０４  ＦＩＦＯ
４１０  ヘッダ解析部  ４２０  トレーステーブル
４２２  計時部  ４３０  ＤＭＡＣ
４４０  パケット情報生成部  ４５０  バス
４６０  ＣＰＵ  ４７０  メモリ
４７２  パケット情報エリア  ４７４  パケットエリア
５００  整列回路  ５１０  シーケンス番号抽出回路
５２０  比較器  ５３０  選択信号生成回路
５４０  整列バッファ  ５５０  情報抽出部
５６０〜５６Ｎ  情報抽出回路  ５７０  セレクタ
６００  整列回路  ６１０  結合部
６２０  比較器  ６３０  選択信号生成回路
６５０  情報抽出部  ６７０  セレクタ
７００  整列回路  ７１０  抽出回路
７２２  比較器  ７２４  比較器
７２６  ポインタ記憶回路  ７３０  選択信号生成回路
７５０  情報抽出部  ７７０  セレクタ
ＣＢ  連続ビット  ｃｔｒ  比較制御信号
ＳＥＬ  選択信号  ＳＥＬ１  第１の選択信号
ＳＥＬ２  第２の選択信号  ＰＩ  パケット情報
ＰＩＡ  パケット情報  ＳＦ  ストアフラグ
ＳＮ  シーケンス番号  Ｗ  シーケンス番号とペイロード長の加算値
【図１】
0005788308.tif 000002
【図２】
0005788308.tif 000003
【図３】
0005788308.tif 000004
【図４】
0005788308.tif 000005
【図５】
0005788308.tif 000006
【図６】
0005788308.tif 000007
【図７】
0005788308.tif 000008
【図８】
0005788308.tif 000009
【図９】
0005788308.tif 000010
【図１０】
0005788308.tif 000011
【図１１】
0005788308.tif 000012
【図１２】
0005788308.tif 000013
【図１３】
0005788308.tif 000014
【図１４】
0005788308.tif 000015
【図１５】
0005788308.tif 000016
【図１６】
0005788308.tif 000017
【図１７】
0005788308.tif 000018
【図１８】
0005788308.tif 000019
【図１９】
0005788308.tif 000020
【図２０】
0005788308.tif 000021
【図２１】
0005788308.tif 000022
【図２２】
0005788308.tif 000023
【図２３】
0005788308.tif 000024
【図２４】
0005788308.tif 000025
【図２５】
0005788308.tif 000026
【図２６】
0005788308.tif 000027
【図２７】
0005788308.tif 000028
【図２８】
0005788308.tif 000029
【図２９】
0005788308.tif 000030
【図３０】
0005788308.tif 000031
【図３１】
0005788308.tif 000032
【図３２】
0005788308.tif 000033
【図３３】
0005788308.tif 000034
【図３４】
0005788308.tif 000035
【図３５】
0005788308.tif 000036
【図３６】
0005788308.tif 000037