(57)【要約】受信部と、受信したパケットがフラグメントパケットであるか否かを判定し、フラグメントパケットである場合、先頭フラグメントパケットであるか否かを判定するパケット判定部と、パケットの情報検索用にあらかじめ登録された検索データとフラグメントパケットの同一フラグメント識別に用いる検索データとを同一検索アドレス上で使用する検索制御部と、組み立て処理部と、を備え、前記検索制御部は、受信したパケットが先頭フラグメントパケットである場合、フラグメント識別子を抽出し前記フラグメント識別子をパケットの情報検索用にあらかじめ登録された検索データと同一検索アドレス上に検索データとして登録し、受信したパケットが中間又は最終フラグメントパケットである場合、フラグメント識別子を抽出し該フラグメント識別子を検索対象データとして検索を行い前記フラグメント識別子が同一のフラグメントパケット同士を組み合わせる、通信装置とした。
2008126228.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してパケットデータを送受信する通信装置であって、
パケットを受信する受信部と、
受信したパケットがフラグメントパケットであるか否かを判定し、前記パケットがフラグメントパケットである場合、先頭フラグメントパケットであるか中間又は最終フラグメントパケットであるかを判定するパケット判定部と、
パケットの情報検索用にあらかじめ登録された検索データと、フラグメントパケットの同一フラグメント識別に用いる検索データと、を同一検索アドレス上で使用する検索制御部と、
フラグメント識別子が同一のフラグメントパケットを１つのパケットに組み立てる組み立て処理部と、を備え、
前記検索制御部は、
受信したパケットが先頭フラグメントパケットである場合、
前記先頭フラグメントパケットからフラグメント識別子を抽出し、前記フラグメント識別子を、パケットの情報検索用にあらかじめ登録された検索データと同一検索アドレス上に検索データとして登録し、
受信したパケットが中間又は最終フラグメントパケットである場合、
前記中間又は最終フラグメントパケットのフラグメント識別子を抽出し、該フラグメント識別子を検索対象データとして検索を行い、前記フラグメント識別子が同一のフラグメントパケット同士を組み合わせる、通信装置。
【請求項２】
前記検索制御部は、
受信したパケットが中間又は最終フラグメントパケットである場合、
前記中間又は最終フラグメントパケットのフラグメント識別子と同一のフラグメント識別子が検索できないとき、前記中間又は最終フラグメントパケットを保持し、再度、前記中間又は最終フラグメント識別子を検索対象データとして検索を行う、請求項１に記載の通信装置。
【請求項３】
前記検索制御部は、
受信したパケットが中間又は最終フラグメントパケットである場合、
前記中間又は最終フラグメントパケットのフラグメント識別子と同一のフラグメント識別子が検索できない回数を計数し、所定回数を超えた場合、前記保持した中間又は最終フラグメントパケットを廃棄する、請求項２に記載の通信装置。
【請求項４】
前記検索制御部は、
受信したパケットが先頭フラグメントパケットである場合、
シーケンス番号を加算して第１の領域に記憶し、
受信したパケットが中間・最終フラグメントパケットである場合、
前記シーケンス番号を第２の領域に記憶し、
前記中間又は最終フラグメントパケットのフラグメント識別子と同一のフラグメント識別子が検索できないとき、
前記第１の領域に記憶したシーケンス番号を読み出して、前記第２の領域に記憶したシーケンス番号と比較し、両番号が異なる場合は、前記中間又は最終フラグメントパケットのフラグメント識別子を検索対象データとして再検索を行い、前記比較したシーケンス番号が一致した場合は、新たな先頭フラグメントパケットの受信を待って再検索を行う、
請求項２に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
ネットワークを介してパケットデータを送受信する通信装置であって、分割（フラグメント）して送受信されるフラグメントパケットのリアセンブル処理を行う通信装置に関する。
【背景技術】
【０００２】
ネットワークの高速化に伴い、通信装置においてルート情報等の検索処理を高速で行うためのＣＡＭ（Content Addressable Memory）の使用が一般的になっている。ＣＡＭは、検索対象のデータを入力してあらかじめ登録してあるテーブル内に該当データがあれば、そのアドレス（Ｅｎｔｒｙ番号）を出力するものである。ＣＡＭは、一般的に外部のＳＲＡＭ（Static Random Access Memory）と組み合わせてＥｎｔｒｙ番号からＳＲＡＭに登録してあるルート情報等を読み出して通知する。これにより、ハードウェアによる高速の検索処理が可能となる。特に、登録したデータから検索対象データをダイナミックに指定できるＴ−ＣＡＭ（Ternary CAM）を使用すれば、受信パケットの種類により検索データの対象を指定した検索が可能である。【０００３】
例えば、ＩＰｖ４(ＵＤＰ（User Datagram Protocol）)パケットのルート検索を行う場合、あらかじめＣＡＭに登録してあるDestination IP Address＋Source IP Address＋Protocol＋Source Port＋Destination Portデータで検索を行い、一致したＥｎｔｒｙ番号をもとにあらかじめＥｎｔｒｙ対応で格納してあるパケット処理情報等を読み出し通知し、その情報によりルート処理、ＱｏＳ（Quality of Service）制御等を行う。【０００４】
一方、フラグメント化されたパケットを高速でリアセンブルする場合、ネットワークより複数のフラグメントパケットを同時多重で受信する場合があるため、同一フラグメントパケットの識別をＣＡＭを利用して行うことが有効である。【０００５】
図１６は、従来のフラグメントパケットのリアセンブル処理を行う通信装置の構成例を示す図である。【０００６】
図１７は、ＩＰｖ４パケット（ＵＤＰパケット）のフラグメントフォーマットの例を示す図である。図１７は、データを３パケットにフラグメント化する例である。【０００７】
図１７において、３パケットにフラグメント化する場合、ＩＰｖ４ヘッダを有するデータは、長さＬ１のデータ１、長さＬ２のデータ２、長さＬ３のデータ３に分割される。それぞれのデータに、ＩＰｖ４ヘッダが付加される。また、先頭のデータには、ＵＤＰヘッダも付加される。【０００８】
図１８は、ＩＰｖ４ヘッダの構成例を示す図である。ＩＰｖ４ヘッダは、Total Length（全長）、ＩＤ（Identification）、Ｄフラグ（Don't fragmentフラグ）、Ｍフラグ（More Fragment（継続）フラグ）、Fragment Offset（フラグメントオフセット値）、Protocol、Source IP Address、Destination IP Address等を備える。【０００９】
Ｄフラグは、フラグメントパケットであるか否かを識別するフラグである。Ｄフラグが、Ｄ＝０である場合はフラグメントパケットではない（通常パケットである）、Ｄ＝１である場合はフラグメントパケットである、ことを意味する。【００１０】
Ｍフラグは、継続パケットが存在するか否かを識別するフラグである。Ｍフラグが、Ｍ＝０である場合は継続パケットが存在しない、Ｍ＝１である場合は継続パケットが存在する、ことを意味する。つまり、あるパケットのＩＰｖ４ヘッダの、ＤフラグがＤ＝１であり、かつ、ＭフラグがＭ＝０である場合は、そのパケットは最終フラグメントパケットであることを意味する。【００１１】
フラグメントオフセット値は、ペイロードデータの開始位置の先頭パケットのヘッダからの大きさを表す。フラグメントオフセット値が０である場合、先頭フラグメントパケットであることを意味する。【００１２】
ＩＤ（Identification）は、データを識別する固有の情報である。同一のデータからフラグメント化されたデータには、同一のＩＤが付加される。【００１３】
図１９は、ＩＰｖ４ヘッダのＭフラグ及びフラグメントオフセット値と、パケットの種類との関係を示す図である。例えば、Ｍ＝１かつＦ.Ｏ.（Fragment Offset、フラグメントオフセット値）＝０である場合は、先頭フラグメントパケットである。Ｍ＝０かつＦ.Ｏ.＝０である場合は通常パケットであるが、通常パケットであるか否かは、Ｄフラグによって判断される。【００１４】
図２０は、ＵＤＰヘッダの構成例を示す図である。ＵＤＰヘッダは、Source Port、Destination Port、Length、Checksumを備える。【００１５】
通信装置のパケット受信部１１０で受信された受信パケットに対して、フラグメント判定部１２０は、フラグメントパケットか否か、及びフラグメントパケットの種類の判定を行う。フラグメントパケットか否か、及びフラグメントパケットの種類の判定は次のように行うことができる。【００１６】
フラグメント判定部１２０は、ＩＰｖ４ヘッダのＤフラグ（Don't fragmentフラグ)でフラグメントパケットか否かを判定する。フラグメント判定部１２０は、ＩＰｖ４ヘッダのＭフラグ(More Fragment（継続）フラグ)で最終フラグメントパケットかを判定する。また、フラグメントパケット判定部１２０は、ＩＰｖ４ヘッダがＭ＝１かつFragment Offset＝０であるときは、そのパケットは先頭フラグメントパケットであると判定する。【００１７】
複数の送信先から同時多重で受信されるフラグメントパケットの同一フラグメントパケットの識別は、ＩＰｖ４ヘッダのＩＤ（Identification）とSource IP Addressを使用して行うことが可能である。【００１８】
フラグメントパケット検索制御部１３２は、フラグメントパケット内のＩＤとSource IP Addressを検索データとしてＣＡＭ１３４を検索する。フラグメントパケット検索結果判定部１３４は、検索一致時、後続フラグメントパケットとしてＥｎｔｒｙ番号通知することにより、同一フラグメントパケットを識別し、パケットを蓄積する。フラグメントパケットはネットワーク内で順序逆転が発生する場合があるため、組み立て制御部１３８は、フラグメントオフセット値に従ってフラグメントパケットを組み立てることにより、リアセンブル処理（組み立て処理）を行う。【００１９】
組み立て制御部１３８でフラグメントパケットをリアセンブル処理したのち、検索制御部１４０は、フラグメントパケット以外のパケットと同様にルート検索を行う。パケット処理部１６０は、検索制御部１４０のルート検索結果情報により、ルーティング、ＱｏＳ制御等のパケット処理を行う。
【特許文献１】特開２００６−７４７２６号公報
【特許文献２】特開平１０−２８５２３４号公報
【特許文献３】特開平５−２０７０４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
図１６に示すような通信装置では、通常のルート検索とリアセンブル処理用検索を別々に行っているため、各々Ｅｎｔｒｙを持つ必要があり、必要なＣＡＭの容量が大きくなり、また検索制御部も大きくなるという欠点があった。【００２１】
そこで、本発明は、簡易な構成でフラグメントパケットのリアセンブル処理を行う通信装置を提供することを課題とする。
【課題を解決するための手段】
【００２２】
本発明は、上記課題を解決するために、以下の手段を採用する。【００２３】
即ち、本発明は、
ネットワークを介してパケットデータを送受信する通信装置であって、
パケットを受信する受信部と、
受信したパケットがフラグメントパケットであるか否かを判定し、
前記パケットがフラグメントパケットである場合、
先頭フラグメントパケットであるか中間又は最終フラグメントパケットであるかを判定するパケット判定部と、
パケットの情報検索用にあらかじめ登録された検索データと、フラグメントパケットの同一フラグメント識別に用いる検索データと、を同一検索アドレス上で使用する検索制御部と、
フラグメント識別子が同一のフラグメントパケットを１つのパケットに組み立てる組み立て処理部と、
を備え、
前記検索制御部は、
受信したパケットが先頭フラグメントパケットである場合、
前記先頭フラグメントパケットからフラグメント識別子を抽出し、前記フラグメント識別子を、パケットの情報検索用にあらかじめ登録された検索データと同一検索アドレス上に、検索データとして登録し、
受信したパケットが中間又は最終フラグメントパケットである場合、
前記中間又は最終フラグメントパケットのフラグメント識別子を抽出し、該フラグメント識別子を検索対象データとして検索を行い、前記フラグメント識別子が同一のフラグメントパケット同士を組み合わせる、
通信装置とした。【００２４】
またフラグメントパケットの順序逆転により、先頭フラグメントパケットによるフラグメント識別子の登録が行われる前に、中間・最終フラグメントパケットを受信した場合、中間・最終フラグメントパケットの検索が行えないという問題に対応するため、中間・最終フラグメントパケットの検索で検索不一致となった場合、先頭フラグメントパケットが受信されるのを待って再度中間・最終フラグメントパケットの検索を行う、通信装置とした。【００２５】
本発明によれば、フラグメントパケットの同一フラグメント識別用の検索処理を、パケットの他の情報検索処理と共通の検索データで行うことができる。
【発明の効果】
【００２６】
本発明によれば、簡易な構成でフラグメントパケットのリアセンブル処理をする通信装置を提供することができる。
【図面の簡単な説明】
【００２７】
【図１】図１は、実施形態のリアセンブル処理をする通信装置を示す図である。
【図２】図２は、実施形態の通信装置の処理フローの例（１）を示す図である。
【図３】図３は、実施形態の通信装置の処理フローの例（２）を示す図である。
【図４】図４は、実施形態の通信装置の処理フローの例（３）を示す図である。
【図５】図５は、実施形態の通信装置の処理フローの例（４）を示す図である。
【図６】図６は、実施形態の通信装置の処理フローの例（５）を示す図である。
【図７】図７は、実施形態の通信装置の処理フローの例（６）を示す図である。
【図８】図８は、実施形態の通信装置の処理フローの例（７）を示す図である。
【図９】図９は、先頭フラグメントパケット受信時の再検索処理のための処理フローの例を示す図である。
【図１０】図１０は、中間、最終フラグメントパケット受信時の再検索処理のための処理フローの例を示す図である。
【図１１】図１１は、再検索処理の実行時の処理フローの例を示す図である。
【図１２】図１２は、ＣＡＭの使用例を示す図である。
【図１３】図１３は、ＣＡＭの使用例を示す図である。
【図１４】図１４は、ＣＡＭの使用例を示す図である。
【図１５】図１５は、ＣＡＭの使用例を示す図である。
【図１６】図１６は、従来のリアセンブル処理を行う通信装置を示す図である。
【図１７】図１７は、ＩＰｖ４パケット（ＵＤＰパケット）のフラグメントフォーマットの例を示す図である。
【図１８】図１８は、ＩＰｖ４ヘッダの例を示す図である。
【図１９】図１９は、ＩＰｖ４ヘッダのＭフラグ及びフラグメントオフセット値と、パケットの種類との関係を示す図である。
【図２０】図２０は、ＵＤＰヘッダの例を示す図である。
【符号の説明】
【００２８】
１００      通信装置
１１０      パケット受信部
１２０      フラグメント判定部
１３２      フラグメントパケット検索制御部
１３４      ＣＡＭ（Content Addressable Memory）
１３６      フラグメント検索結果判定部
１３８      組み立て制御部
１４０      検索制御部
１４２      ＣＡＭ（Content Addressable Memory）
１４４      ＳＲＡＭ（Static Random Access Memory）
１５０      組み立て制御部
１６０      パケット処理部
１７０      パケット送信部
【発明を実施するための最良の形態】
【００２９】
以下、図面を参照して本発明の実施形態について説明する。実施形態の構成は本発明の例示であり、本発明の技術的範囲は実施形態の構成に限定されるものではない。【００３０】
〔実施形態〕
〈構成〉
図１は、本実施形態の通信装置のブロック構成例を示す図である。【００３１】
本実施形態の通信装置１００は、パケット受信部１１０、フラグメント判定部１２０、検索制御部１４０、ＣＡＭ（Content Addressable Memory）１４２、ＳＲＡＭ（Static Random Access Memory）１４４、組み立て制御部１５０、パケット処理部１６０、パケット送信部１７０を備える。【００３２】
パケット受信部１１０は、他の通信装置から送信されるパケットを受信する。パケット受信部１１０は、受信したパケットをフラグメント判定部１２０へ送る。【００３３】
フラグメント判定部１２０は、受信したパケットが、フラグメントパケットであるか否かを判定する。フラグメント判定部１２０は、受信したパケットのＩＰｖ４ヘッダのＤ（Don't Fragment）フラグを確認する。【００３４】
フラグメント判定部１２０は、Ｄフラグを確認した結果、Ｄ＝１である場合は当該パケットがフラグメントパケットであると判断する。また、フラグメント判定部１２０は、Ｄフラグを確認した結果、Ｄ＝０である場合は当該パケットがフラグメントパケットでない（通常パケットである）と判断する。【００３５】
検索制御部１４０は、組み立てエリア、パケット対応の制御エリア、検索制御エリアを有する。【００３６】
検索制御部１４０は、フラグメント判定部１２０から、フラグメント判定結果と、受信したパケットを受信する。【００３７】
検索制御部１４０は、受信パケットがフラグメントパケットでない（通常パケットである）場合、検索データである、Source IP address、Destination IP address、Protocol、UDP Source Port、UDP Destination Portを当該パケットから抽出し、ＣＡＭ１４２に対して検索要求を行う。【００３８】
検索制御部１４０は、検索結果によりＨｉｔしたＥｎｔｒｙ（エントリー）がある場合、Ｅｎｔｒｙ対応のパケット処理情報をＳＲＡＭ１４４より取り出し、パケット対応の制御エリアに格納する。検索制御部１４０は、ＨｉＴしたＥｎｔｒｙがない（Ｍｉｓｓ  Ｈｉｔである）場合、当該パケットを破棄する。【００３９】
検索制御部１４０は、受信パケットが先頭フラグメントパケットである場合、検索データである、Source IP address、Destination IP address、Protocol、UDP Source Port、UDP Destination Portを当該パケットから抽出し、ＣＡＭ１４２に対して検索要求を行う。【００４０】
検索制御部１４０は、検索結果によりＨｉｔしたＥｎｔｒｙがある場合、Ｅｎｔｒｙ対応のパケット処理情報をＳＲＡＭ１４４から取り出して、パケット対応の制御エリアに格納する。検索制御部１４０は、ＨｉｔしたＥｎｔｒｙがない（Ｍｉｓｓ  Ｈｉｔである）場合、当該パケットを破棄する。また、Ｍｉｓｓ  Ｈｉｔの場合、当該パケットを破棄せず上位の制御部に通知する処理方法としてもよい。【００４１】
検索制御部１４０は、ＨｉｔしたＥｎｔｒｙがある場合、ＨｉｔしたＥｎｔｒｙへの受信パケットのＩＰｖ４のＩＤ（Identification）の登録を行う。また、ＨｉｔしたＥｎｔｒｙ対応にフラグメントパケット制御エリアを設定し、先頭フラグメントパケット受信フラグ、パケットペイロードサイズを格納する。【００４２】
検索制御部１４０は、受信パケットが中間、最終フラグメントパケットである場合、受信パケットからSource IP AddressとＩＤ情報を抽出して、ＣＡＭ１４２に対して検索要求を行う。検索制御部１４０は、検索結果により、ＨｉｔしたＥｎｔｒｙがある場合、Ｅｎｔｒｙ対応にフラグメントオフセット値に従いペイロードを組み立てエリアに格納してリアセンブル処理を行う。【００４３】
検索制御部１４０は、検索結果によりＨｉｔしたＥｎｔｒｙがない場合は、再検索処理を行う。検索制御部１４０は、パケットロス等により先頭フラグメントパケットが受信できない場合のために、再検索の回数をカウントし、カウントオーバー時に、当該パケットを破棄する。【００４４】
検索制御部１４０は、検索結果によりＨｉｔしたパケットが中間フラグメントパケットである場合、パケットペイロードサイズを加算する。検索制御部１４０は、最終フラグメントパケットが受信済みであれば、格納してある最終フラグメントパケットのＯｆｆｓｅｔ値とパケットペイロードサイズ加算値とを比較する。検索制御部１４０は、比較結果が一致した場合、全フラグメントパケットが受信済みであると判断し、組み立て制御部１５０に処理を引き継ぐ。パケットペイロード加算値には、最終フラグメントパケット以外のパケットペイロードサイズが加算されている。【００４５】
検索制御部１４０は、最終フラグメントパケット未受信、又は、最終フラグメントパケットのフラグメントオフセット値とパケットペイロードサイズ加算値とが一致しなければ、後続フラグメントパケットの受信待ちをする。【００４６】
検索制御部１４０は、検索結果によりＨｉｔしたパケットが最終フラグメントパケットの場合、格納してある最終フラグメントパケット以外のパケットペイロード加算値と最終フラグメントオフセット値を比較する。検索制御部１４０は、検索結果が一致すれば全フラグメントパケット受信済みと判断し、組み立て制御部１５０へ処理を引き継ぐ。【００４７】
検索制御部１４０は、最終フラグメントパケットのフラグメントオフセット値とパケットペイロードサイズ加算値とが一致しなければ、後続フラグメントパケットの受信待ちをする。【００４８】
ここでは、ＵＤＰパケットの処理について説明しているが、他のパケットでも同様に検索制御、フラグメントパケットのリアセンブル処理が可能である。【００４９】
組み立て制御部１５０は、検索制御部１４０で処理された一連のフラグメントパケット（ＩＤ及びSource IP Addressが一致するフラグメントパケット）を、組み立てエリアから読み出してリアセンブルする。組み立て制御部１５０は、リアセンブルしたパケットをパケット処理部１６０へ送る。【００５０】
パケット処理部１６０は、通常パケットを検索制御部１４０から受信し、また、リアセンブルされたフラグメントパケットを組み立て制御部１５０から受信する。パケット処理部１６０は、検索制御部１４０からの、ルート等の検索結果情報により、ルーティング、ＱｏＳ（Quality of Service）制御などのパケット処理を行う。【００５１】
パケット送信部１７０は、パケット処理部１６０で処理したパケットの他の通信装置への送信を行う。【００５２】
〈動作例〉
以下、本実施形態の検索制御部の処理フローを詳しく説明する。【００５３】
図２、図３、図４、図５、図６、図７及び図８は、本実施形態の検索制御部の処理フローを示す図である。【００５４】
フラグメント判定部１２０から受信パケット及びフラグメント判定結果が入力されると、検索制御部１４０は、受信パケットがフラグメントパケットか否かを判断する。フラグメント判定部１２０では、受信パケットのＩＰｖ４ヘッダのＤフラグを確認して、フラグメントパケットか否かを判断している。ＤフラグがＤ＝１である場合は、当該パケットがフラグメントパケットであると、ＤフラグがＤ＝０である場合は、当該パケットがフラグメントパケットではない（通常パケットである）と判断される。検索制御部１４０は、この判定結果を用いて、受信パケットがフラグメントパケットか否かを判断する（図２：Ｓ１００４）。【００５５】
（通常パケット）
受信パケットがフラグメントパケットではない（通常パケットである）と判断された場合（図２：Ｓ１００４；ＮＯ）、検索制御部１４０は、受信パケットのＩＰｖ４ヘッダからSource IP address、Destination IP address、及び、Protocolを、ＵＤＰヘッダからSource Port、及び、Destination Portを抽出する（図３：Ｓ２００２）。検索制御部１４０は、Source IP address、Destination IP address、Protocol、Source Port、Destination Portを検索対象にして、ＣＡＭ１４２に対して検索要求をする（図３：Ｓ２００４）。【００５６】
図１２は、ＣＡＭの使用例を示す図である。ＣＡＭ１４２には、あらかじめ、少なくともSource IP address、Destination IP address、Protocol、Source Port、Destination Portが登録されている。通常パケットの場合、Source IP address、Destination IP address、Protocol、Source Port及びDestination Portが、検索対象となる。【００５７】
検索制御部１４０は、ＣＡＭ１４２から検索結果を受信する。検索の結果、ＨｉｔしたＥｎｔｒｙがあった場合（図３：Ｓ２００６；ＹＥＳ）、ＳＲＡＭ１４４に格納されている当該パケットのパケット処理情報を取得し、当該情報をパケット対応の制御エリアに格納する（図３：Ｓ２０１２）。検索制御部１４０は、当該パケットをパケット処理部１６０へ送る。当該パケットは、パケット処理部１６０でパケット処理される（図３：Ｓ２０５０）。【００５８】
また、検索の結果、ＨｉｔしたＥｎｔｒｙがなかった場合（図３：Ｓ２００６；ＮＯ）、当該パケットは、通信装置１００にとって必要ないパケットであるとして廃棄される（図３：Ｓ２００８）。なお、当該パケットを破棄せず、上位の制御部に通知する処理方法としてもよい。【００５９】
（先頭フラグメントパケット）
図２に戻って、受信パケットがフラグメントパケットであると判断された場合（図２：Ｓ１００４；ＹＥＳ）、検索制御部１４０は、当該パケットが先頭フラグメントパケットか否かを判断する（図２：Ｓ１００６）。検索制御部１４０は、当該パケットのＩＰｖ４ヘッダのフラグメントオフセット値を確認する。検索制御部１４０は、フラグメントオフセット値が０である場合、当該パケットが先頭フラグメントパケットであると判断する。また、検索制御部１４０は、フラグメントオフセット値が０でない場合、当該パケットが中間または最終フラグメントパケットであると判断する。【００６０】
検索制御部１４０は、受信パケットが先頭フラグメントパケットであると判断した場合（図２：Ｓ１００６；ＹＥＳ）、受信パケットのＩＰｖ４ヘッダからSource IP address、Destination IP address、及び、Protocolを、ＵＤＰヘッダからSource Port、及び、Destination Portを抽出する（図４：Ｓ３００２）。これは、受信パケットが通常パケットであると判断した場合と同様である。先頭フラグメントパケットは、ＩＰｖ４ヘッダ及びＵＤＰヘッダを有しているので、これらの情報を抽出することができる（図１７、図１８、図２０）。【００６１】
検索制御部１４０は、Source IP address、Destination IP address、Protocol、Source Port、Destination Portを検索対象にして、ＣＡＭ１４２に対して、検索要求をする（図４：Ｓ３００４）。【００６２】
図１３は、ＣＡＭの使用例を示す図である。先頭フラグメントパケットの場合、通常パケットの場合と同様に、Source IP address、Destination IP address、Protocol、Source Port及びDestination Portが検索対象となる。【００６３】
検索制御部１４０は、ＣＡＭ１４２から検索結果を受信する。検索の結果、ＨｉｔしたＥｎｔｒｙがなかった場合（図４：Ｓ３００６；ＮＯ）、検索制御部１４０は、当該パケットは必要ないパケットであるとして廃棄する（図４：Ｓ３００８）。なお、通常パケットと同様に、当該パケットを破棄せず、上位の制御部に通知する処理方法としてもよい。この場合、リアセンブル後に上位の制御部に通知される。【００６４】
また、検索の結果、ＨｉｔしたＥｎｔｒｙがあった場合（図４：Ｓ３００６；ＹＥＳ）、検索制御部１４０は、受信パケットのＩＰｖ４ヘッダのＩＤを抽出し、ＨｉｔしたＥｎｔｒｙに登録する（図４：Ｓ３０１０）。【００６５】
検索制御部１４０は、ＳＲＡＭ１４４に格納されている当該パケットのパケット処理情報を取得し、当該情報をパケット対応の制御エリアに格納する（図５：Ｓ３０１２）。また、検索制御部１４０は、ＨｉｔしたＥｎｔｒｙにフラグメント制御エリアを設定する。検索制御部１４０は、フラグメント制御エリアに、先頭フラグメント受信フラグ、パケットペイロードサイズを格納する（図５：Ｓ３０１４）。【００６６】
検索制御部１４０は、先頭フラグメントパケットのＵＤＰヘッダ及びデータを組み立てエリアの先頭のアドレス位置に書き込む（図５：Ｓ３０１６）。また、検索制御部１４０は、先頭フラグメントパケットのＩＰｖ４ヘッダを、組み立てエリアのヘッダ格納部に格納する。【００６７】
検索制御部１４０は、先頭フラグメントパケットの後続のフラグメントパケットの到着を待機する（図５：Ｓ３０２０）。【００６８】
（中間、最終フラグメントパケット）
図２に戻って、受信パケットが先頭フラグメントパケットでないと判断した場合（図２：Ｓ１００６；ＮＯ）、検索制御部１４０は、受信パケットのＩＰｖ４ヘッダからSource IP address、及び、ＩＤを抽出する（図６：Ｓ４００２）。受信パケットが先頭フラグメントパケットではない場合、当該パケットは、中間フラグメントパケット又は最終フラグメントパケットである。検索制御部１４０は、Source IP address、及び、ＩＤを検索対象にして、ＣＡＭ１４２に対して検索要求をする（図３：Ｓ４００４）。【００６９】
図１４及び図１５は、ＣＡＭの使用例を示す図である。中間、最終フラグメントパケットの場合、Source IP address、及び、ＩＤが、検索対象となる。中間、最終フラグメントパケットに対応する先頭フラグメントパケットが未着の場合、ＩＤが登録されていない（図１４）。一方、中間、最終フラグメントパケットに対応する先頭フラグメントパケットが既着の場合は、ＩＤが登録されている（図１５）。【００７０】
検索制御部１４０は、ＣＡＭ１４２から検索結果を受信する。検索の結果、ＨｉｔしたＥｎｔｒｙがあった場合（図６：Ｓ４００６；ＹＥＳ）、ＣＡＭ１４２から、Ｈｉｔ  Ｅｎｔｒｙを通知される（図６：Ｓ４０１０）。この場合、受信パケット（中間、最終フラグメントパケット）に対応する先頭フラグメントパケットが既着であることを意味する。【００７１】
検索制御部１４０は、受信パケットのＩＰｖ４ヘッダからフラグメントオフセット値を抽出し、当該フラグメントオフセット値に対応した組み立てエリアのアドレス位置に受信パケットのデータを書き込む（図６：Ｓ４０１２）。また、検索制御部１４０は、受信パケットのＩＰｖ４ヘッダを、組み立てエリアのヘッダ格納部に格納する。【００７２】
検索制御部１４０は、受信パケットが最終フラグメントパケットか否かを判断する（図７：Ｓ４０１４）。検索制御部１４０は、当該パケットのＩＰｖ４ヘッダのＭフラグを確認する。検索制御部１４０は、ＭフラグがＭ＝０である場合、当該パケットが最終フラグメントパケットであると判断する。また、検索制御部１４０は、ＭフラグがＭ＝１である場合、当該パケットが最終フラグメントパケットではない（中間フラグメントパケットである）と判断する。【００７３】
受信パケットが最終フラグメントパケットである場合（図７：Ｓ４０１４；ＹＥＳ）、検索制御部１４０は、フラグメント制御エリアに、最終フラグメント受信フラグ、最終フラグメントパケットのＩＰｖ４ヘッダのフラグメントオフセット値を格納する（図７：Ｓ４０１６）。検索制御部１４０は、全フラグメントパケットを受信したか否かを判断する（図７：Ｓ４０２６）。【００７４】
受信パケットが中間フラグメントパケットである場合（図７：Ｓ４０１４；ＮＯ）、検索制御部１４０は、フラグメント制御エリアのパケットペイロードサイズに、当該パケットのパケットペイロードサイズを加算する（図７：Ｓ４０２２）。フラグメント制御エリアのパケットペイロードサイズには、受信済みのフラグメントパケットのパケットペイロードサイズの合計が格納される。検索制御部１４０は、最終フラグメントパケットが受信済みか否かを判断する（図７：Ｓ４０２４）。検索制御部１４０は、フラグメント制御エリアの最終フラグメント受信フラグを確認して、最終フラグメントパケットが受信済みか否かを判断する。検索制御部１４０は、最終フラグメントパケットが受信済みでない場合（図７：Ｓ４０２４；ＮＯ）、後続フラグメントパケットを待つ（図７：Ｓ４０２０）。検索制御部１４０は、最終フラグメントパケットが受信済みである場合（図７：Ｓ４０２４；ＹＥＳ）、全フラグメントパケットを受信したか否かを判断する（図７：Ｓ４０２６）。【００７５】
検索制御部１４０は、全フラグメントパケットを受信したか否かを判断する（図７：Ｓ４０２６）。検索制御部１４０は、フラグメント制御エリアの、最終フラグメントパケットのフラグメントオフセット値と、パケットペイロードサイズとを比較する。最終フラグメントパケットのフラグメントオフセット値は、最終フラグメントパケットを除く全フラグメントパケットのサイズと同じである。また、フラグメント制御エリアのパケットペイロードサイズは、最終フラグメントパケット以外のフラグメントパケットのパケットペイロードサイズの合計である。従って、最終フラグメントパケットのフラグメントオフセット値とパケットペイロードサイズとが一致するときは、全フラグメントパケットが受信されたと判断される。【００７６】
検索制御部１４０は、全フラグメントパケットが未だ受信されていない場合（図７：Ｓ４０２８；ＮＯ）、後続フラグメントパケットを待つ（図７：４０２０）。検索制御部１４０は、全フラグメントパケットが受信された場合（図７：Ｓ４０２８；ＹＥＳ）、検索制御処理を終了し、組み立て処理へ移される（図７：Ｓ４０５０）。【００７７】
図６に戻って、検索の結果、ＨｉｔしたＥｎｔｒｙがなかった場合（図６：Ｓ４００６；ＮＯ）、受信パケットに対応する先頭フラグメントパケットが未着である。検索制御部１４０は、当該受信パケットを保持する。【００７８】
検索制御部１４０は、当該受信パケットのＭｉｓｓＨｉｔカウントを加算する（図８：Ｓ４３０２）。検索制御部１４０は、当該受信パケットのＭｉｓｓＨｉｔカウントが、所定値を超えているか否かを判断する（図８：Ｓ４３０４）。当該所定値を超えている場合（図８：Ｓ４３０４；ＹＥＳ）、検索制御部１４０は、当該受信パケットに対応する先頭フラグメントパケットがパケットロス等により受信できないものとして当該受信パケットを破棄する（図８：Ｓ４３０８）。先頭フラグメントパケットが到着しないと、フラグメントパケットの組み立て処理が行えないからである。【００７９】
検索制御部１４０は、ＭｉｓｓＨｉｔカウントが、所定値を超えていない場合（図８：Ｓ４３０４；ＮＯ）、再検索をする（図８：Ｓ４３０６）。【００８０】
なお、ＣＡＭに対しての検索要求は、検索キューに一旦検索要求を入力することにより検索キューの先頭から順に実行される構成とすることができる。再検索時においても、検索キューに再検索要求を入力することにより再検索が可能となる。【００８１】
〈実施形態の作用効果〉
本実施形態の通信装置によると、ルート検索等の通常検索が必要な装置に対して、フラグメントパケットの同一フラグメント識別用の検索処理を、ルート検索等の処理と共通の検索制御、エントリーで行うことができる。また、フラグメントパケットの受信順序逆転が起こっても、同一フラグメントの識別、リアセンブルが可能となる。【００８２】
本実施形態の通信装置によれば、高価なＣＡＭ、検索制御部の効率的使用が可能となり、簡素化、コストダウン、小型化が図れる。また、フラグメント識別用、ルート検索用の処理を同時の行うため、処理能力の向上も図れる。【００８３】
〔変形例〕
〈再検索処理〉
図８のステップＳ４３０６の再検索処理についての変形例を、図面を使用して説明する。以下に説明する以外の構成については、上述した実施形態の構成と同様である。【００８４】
（先頭フラグメントパケット受信時）
図９は、先頭フラグメントパケット受信時の再検索処理のための処理フローの例を示す図である。【００８５】
検索制御部１４０は、先頭フラグメントパケットを受信（Ｓ６００２）し、先頭フラグメントパケットの検索要求を検索キューに入力する。（Ｓ６００４）。【００８６】
検索制御部１４０は、先頭フラグメントパケットシーケンスＮｏを、カウントアップ（加算）して所定のエリアに格納（記憶）する（Ｓ６００６）。【００８７】
検索制御部１４０は、再検索キューにフラグメント検索要求があるか否かを確認する（Ｓ６００８）。検索処理部１４０は、再検索キューにフラグメント検索要求がある場合（Ｓ６００８；ＹＥＳ）は、その再検索キューを検索キューに繋ぐ（Ｓ６０１０）。これにより、先頭フラグメントパケットが受信されると、再検索キューにあるフラグメント検索要求が実行される。【００８８】
検索制御部１４０は、他の検索処理に移行する。（Ｓ６０２０）
（中間、最終フラグメントパケット受信時）
図１０は、中間、最終フラグメントパケット受信時の再検索処理のための処理フローの例を示す図である。【００８９】
検索制御部１４０は、中間、最終フラグメントパケットを受信（Ｓ７００２）し、中間、最終フラグメントパケットのフラグメント検索要求を検索キューに入力する。（Ｓ７００４）。【００９０】
検索制御部１４０は、先頭フラグメントパケットシーケンスＮｏを読み取り、検索制御エリアに格納（記憶）する（Ｓ７００６）。【００９１】
検索制御部１４０は、他の検索処理を行う（Ｓ７０１０）。【００９２】
（再検索実行処理）
図１１は、再検索処理の実行時の処理フローの例を示す図である。【００９３】
検索制御部１４０は、中間、最終フラグメントパケットを受信（Ｓ８００２）し、先頭フラグメントパケットが未受信であって、ＭｉｓｓＨｉｔカウントアップした場合（Ｓ８００４）において（図８のステップＳ４３０２及びステップＳ４３０４に相当）、先頭フラグメントパケットシーケンスＮｏを読み取る（Ｓ８００８）。【００９４】
検索制御部１４０は、ステップＳ８００８で読み取った先頭フラグメントシーケンスＮｏ（Ａ）と検索制御エリアに格納した先頭フラグメントシーケンスＮｏ（Ｂ）を比較する（Ｓ８０１０）。【００９５】
検索制御部１４０は、上記Ａと上記Ｂとを比較して、異なる場合（Ｓ８０１０；ＹＥＳ）、新たな先頭フラグメントパケットが受信されていると判断する。検索制御部１４０は、直ちに、フラグメント検索要求を検索キューに入力する。（Ｓ８０３０）。【００９６】
検索制御部１４０は、上記Ａと上記Ｂとを比較して、同じ場合（Ｓ８０１０；ＮＯ）、
新たな先頭フラグメントパケットが受信されていないと判断する。検索制御部１４０は、
再検索キューにフラグメント検索要求を入力して待機する。【００９７】
〈変形例の作用効果〉
本変形例の再検索処理を有する通信装置によると、フラグメントパケットの受信順序逆転が起こっても、再検索処理により検索処理能力を極力低下させることなく、同一フラグメントの識別、リアセンブルが可能となる。【００９８】
本変形例の再検索処理を有する通信装置によれば、ハードウェアの小型化を実現した上で、フラグメントパケットのリアセンブルを高速で行うことができる。
【図１】
2008126228.tif 000003
【図２】
2008126228.tif 000004
【図３】
2008126228.tif 000005
【図４】
2008126228.tif 000006
【図５】
2008126228.tif 000007
【図６】
2008126228.tif 000008
【図７】
2008126228.tif 000009
【図８】
2008126228.tif 000010
【図９】
2008126228.tif 000011
【図１０】
2008126228.tif 000012
【図１１】
2008126228.tif 000013
【図１２】
2008126228.tif 000014
【図１３】
2008126228.tif 000015
【図１４】
2008126228.tif 000016
【図１５】
2008126228.tif 000017
【図１６】
2008126228.tif 000018
【図１７】
2008126228.tif 000019
【図１８】
2008126228.tif 000020
【図１９】
2008126228.tif 000021
【図２０】
2008126228.tif 000022
【手続補正書】
【提出日】平成21年10月15日(2009.10.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークを介してパケットデータを送受信する通信装置であって、
パケットを受信する受信部と、
受信したパケットがフラグメントパケットであるか否かを判定し、前記パケットがフラグメントパケットである場合、先頭フラグメントパケットであるか中間又は最終フラグメントパケットであるかを判定するパケット判定部と、
パケットの情報検索用にあらかじめ登録された検索データと、フラグメントパケットの同一フラグメント識別に用いる検索データと、を同一検索アドレス上で使用する検索制御部と、
フラグメント識別子が同一のフラグメントパケットを１つのパケットに組み立てる組み立て処理部と、を備え、
前記検索制御部は、
受信したパケットが先頭フラグメントパケットである場合、
前記先頭フラグメントパケットからフラグメント識別子を抽出し、前記フラグメント識別子を、パケットの情報検索用にあらかじめ登録された検索データと同一検索アドレス上に検索データとして登録し、
受信したパケットが中間又は最終フラグメントパケットである場合、
前記中間又は最終フラグメントパケットのフラグメント識別子を抽出し、該フラグメント識別子を検索対象データとして検索を行い、前記フラグメント識別子が同一のフラグメントパケット同士を組み合わせる、通信装置。
【請求項２】
前記検索制御部は、
受信したパケットが中間又は最終フラグメントパケットである場合、
前記中間又は最終フラグメントパケットのフラグメント識別子と同一のフラグメント識別子が検索できないとき、前記中間又は最終フラグメントパケットを保持し、再度、前記中間又は最終フラグメント識別子を検索対象データとして検索を行う、請求項１に記載の通信装置。
【請求項３】
前記検索制御部は、
受信したパケットが中間又は最終フラグメントパケットである場合、
前記中間又は最終フラグメントパケットのフラグメント識別子と同一のフラグメント識別子が検索できない回数を計数し、所定回数を超えた場合、前記保持した中間又は最終フラグメントパケットを廃棄する、請求項２に記載の通信装置。
【請求項４】
前記検索制御部は、
受信したパケットが先頭フラグメントパケットである場合、
シーケンス番号を加算して第１の領域に記憶し、
受信したパケットが中間・最終フラグメントパケットである場合、
前記シーケンス番号を第２の領域に記憶し、
前記中間又は最終フラグメントパケットのフラグメント識別子と同一のフラグメント識別子が検索できないとき、
前記第１の領域に記憶したシーケンス番号を読み出して、前記第２の領域に記憶したシーケンス番号と比較し、両番号が異なる場合は、前記中間又は最終フラグメントパケットのフラグメント識別子を検索対象データとして再検索を行い、前記比較したシーケンス番号が一致した場合は、新たな先頭フラグメントパケットの受信を待って再検索を行う、
請求項２に記載の通信装置。
【請求項５】
ネットワークを介してパケットデータを送受信する通信方法であって、
パケットを受信し、
受信したパケットがフラグメントパケットであるか否かを判定し、前記パケットがフラグメントパケットである場合、先頭フラグメントパケットであるか中間又は最終フラグメントパケットであるかを判定し、
パケットの情報検索用にあらかじめ登録された検索データと、フラグメントパケットの同一フラグメント識別に用いる検索データと、を同一検索アドレス上で使用し、
フラグメント識別子が同一のフラグメントパケットを１つのパケットに組み立て、
受信したパケットが先頭フラグメントパケットである場合、
前記先頭フラグメントパケットからフラグメント識別子を抽出し、前記フラグメント識別子を、パケットの情報検索用にあらかじめ登録された検索データと同一検索アドレス上に検索データとして登録し、
受信したパケットが中間又は最終フラグメントパケットである場合、
前記中間又は最終フラグメントパケットのフラグメント識別子を抽出し、該フラグメント識別子を検索対象データとして検索を行い、前記フラグメント識別子が同一のフラグメントパケット同士を組み合わせる、通信方法。
【国際調査報告】
2008126228.tif 000023
2008126228.tif 000024
2008126228.tif 000025