(57)【要約】      （修正有）【課題】効率的に、断片化したデータグラムをフィルタし、断片をルーティングする技術を提供する。【解決手段】各断片化したデータグラムについて、データグラムの断片が受信されると、フィルタリングノードがフィルタパラメータを得る。全てのフィルタパラメータが利用可能な場合、このノードは、フィルタパラメータに１つ又は複数のフィルタを適用して、データグラムのフィルタ結果を取得し、ルーティングテーブル内のエントリにフィルタ結果を格納する。フィルタ結果が利用可能になる時、フィルタ結果に従って、データグラムについて既に受信された全ての断片を処理する。このデータグラムの残りの各断片が受信されると、フィルタ結果に従って、ノードは直ちにこの断片を処理する。最後の断片が受信された時、ノードは、データグラムのためのルーティングテーブルエントリ及びメモリをクリヤする。【選択図】図４
2011066903.tif 000002
【特許請求の範囲】
【請求項１】
データネットワークにおいて断片化したデータグラムを処理する方法であって、
複数の断片として送られるデータグラムのために、少なくとも１つのフィルタパラメータを取得することであって、前記少なくとも１つのフィルタパラメータは、前記複数の断片のうちの少なくとも１つで運ばれ、前記データグラムのための少なくとも１つのフィルタによって使用されることと、
前記少なくとも１つのフィルタパラメータに基づいて、前記データグラムのためのフィルタ結果を取得することと、
前記データグラムのためのフィルタ結果を格納することと、
前記データグラムのためのフィルタ結果に従って、前記データグラムの受信された各断片を処理することとを備える方法。
【請求項２】
前記データグラムはインターネットプロトコル（ＩＰ）データグラムである請求項１の方法。
【請求項３】
前記データグラムの断片を受信することと、
前記データグラムのためのフィルタ結果が利用可能であるかを判定することと、
前記フィルタ結果が未だに利用可能ではないのであれば、前記断片を格納することと、
利用可能であれば、前記フィルタ結果に従って前記断片を処理することとを更に備える請求項１の方法。
【請求項４】
前記データグラムのためのタイマを維持することと、
前記タイマが終了した後、前記データグラムの格納された断片をクリヤすることとを更に備える請求項３の方法。
【請求項５】
データグラム識別子に基づいて、前記データグラムの各断片を識別することを更に備える請求項１の方法。
【請求項６】
前記データグラム識別子は、ソースアドレス、宛先アドレス、識別表示値、及び断片のＩＰヘッダに含まれるプロトコル番号を含む請求項２の方法。
【請求項７】
前記データグラムの断片を受信することと、
前記断片が前記データグラムについて受信された最初の断片であれば、前記データグラムのテーブルエントリを第１のメモリ内に生成することであって、前記テーブルエントリは、前記フィルタ結果を格納するためのフィールドを含んでいることとを更に備える請求項１の方法。
【請求項８】
前記データグラムのテーブルエントリは更に、前記データグラムについて最初の断片が受信されてから経過した時間をカウントするために使用されるタイマを含む請求項７の方法。
【請求項９】
前記データグラムのためフィルタ結果が利用可能でないのであれば、前記受信した断片を第２のメモリに格納することを更に備える請求項７の方法。
【請求項１０】
前記データグラムのテーブルエントリは更に、前記データグラムについて受信された断片を格納するために使用される前記第２のメモリ内の位置に対するポインタ含む請求項９の方法。
【請求項１１】
前記データグラムの複数の断片が受信されたかを判定することと、
前記複数の断片が受信されているのであれば、前記第１のメモリ内のテーブルエントリを削除し、前記データグラムの受信された断片を格納するために使用される前記第２のメモリをクリヤすることとを更に備える請求項９の方法。
【請求項１２】
前記データグラムのためのフィルタ結果を取得することは、
前記少なくとも１つのフィルタパラメータの全てが利用可能であるかを判定することと、
利用可能であれば、前記少なくとも１つのフィルタを前記少なくとも１つのフィルタパラメータに適用し、前記フィルタ結果を取得することとを備える請求項１の方法。
【請求項１３】
前記データグラムのための少なくとも１つのフィルタパラメータを運ぶ少なくとも１つの断片を検出することを更に備える請求項１の方法。
【請求項１４】
前記少なくとも１つのフィルタパラメータは、前記データグラムの最初の断片で運ばれ、前記検出することは、前記データグラムの最初の断片のプロトコルヘッダ内のフィールドの既知の値に基づいて行われる請求項１３の方法。
【請求項１５】
前記少なくとも１つのフィルタパラメータは、ソースアドレス、宛先アドレス、サブネットマスク、ソースポート、宛先ポート、ソースポート範囲、宛先ポート範囲、サービス品質（ＱｏＳ）情報、サービスタイプ、トラフィッククラス、フローラベル、セキュリティ情報、又はこれらの組み合わせを備える請求項１の方法。
【請求項１６】
前記少なくとも１つのフィルタパラメータは、前記ＩＰデータグラムについてソースＩＰアドレス、宛先ＩＰアドレス、サブネットマスク、ソースポート、宛先ポート、ソースポート範囲、宛先ポート範囲、プロトコル番号、ＩＰバージョン４（ＩＰｖ４）のサービスタイプ、ＩＰバージョン６（ＩＰｖ６）のためのトラッフィッククラス、ＩＰｖ６のためのフローラベル、ＩＰＳｅｃセキュリティパラメータインデクス（ＳＰＩ）、又はこれらの組み合わせを備える請求項２の方法。
【請求項１７】
データネットワークにおいて断片化したデータグラムを処理する方法であって、
複数の断片として送られるデータグラムの断片を受信することと、
前記断片が前記データグラムの受信された最初の断片である場合、前記データグラムのためにルーティングテーブル内にエントリを生成することと、
前記データグラムのための少なくとも１つのフィルタパラメータの全てが取得されたかを判定することと、
利用可能である場合には、前記少なくとも１つのフィルタパラメータに少なくとも１つのフィルタを適用し、前記データグラムのためのフィルタ結果を取得することと、
取得された場合には、前記テーブルエントリ内に前記フィルタ結果を格納することと、
前記フィルタ結果がまだ利用可能ではない場合には、前記断片をメモリに格納することと、
利用可能である場合には、前記フィルタ結果に従って前記断片を処理することとを備える方法。
【請求項１８】
データネットワークにおいて断片化したデータグラムを処理するように実施可能な装置であって、
複数の断片として送られるデータグラムのために、少なくとも１つのフィルタパラメータを取得し、
前記少なくとも１つのフィルタパラメータは、前記複数の断片のうちの少なくとも１つで運ばれ、前記データグラムのための少なくとも１つのフィルタによって使用され、
前記少なくとも１つのフィルタパラメータに基づいて、前記データグラムのためのフィルタ結果を取得し、
前記データグラムのためのフィルタ結果に従って、前記データグラムの受信された各断片を処理するように実施可能なプロセッサと、
前記データグラムのためのフィルタ結果を格納するように実施可能な第１のメモリとを備える装置。
【請求項１９】
前記フィルタ結果が利用可能になる前に、前記データグラムの受信された断片を格納するように実施可能な第２のメモリを更に備える請求項１８の装置。
【請求項２０】
前記プロセッサは更に、
前記データグラムの断片を受信し、
前記データグラムのためのフィルタ結果が利用可能であるかを判定し、
前記フィルタ結果が未だに利用可能ではないのであれば、前記断片を前記第２のメモリに格納し、
利用可能であれば、前記フィルタ結果に従って前記断片を処理するように実施可能な請求項１９の装置。
【請求項２１】
前記プロセッサは更に、
前記データグラムの断片を受信し、
前記断片が前記データグラムの受信された最初の断片であれば、前記データグラムのテーブルエントリを前記第１のメモリ内に生成し、前記テーブルエントリは、前記フィルタ結果を格納するためのフィールドを含むように実施可能な請求項１８の装置。
【請求項２２】
前記プロセッサは更に、
前記データグラムの複数の断片が受信されたかを判定し、
前記データグラムの複数の断片が受信されているのであれば、前記データグラムのための前記第１のメモリ内のテーブルエントリをクリヤするように実施可能な請求項２１の装置。
【請求項２３】
前記プロセッサは更に、
前記データグラムの複数の断片が受信されたかを判定し、
前記データグラムの複数の断片が受信されているのであれば、前記データグラムの前記第２のメモリに格納された断片をクリヤするように実施可能な請求項１９の装置。
【請求項２４】
前記プロセッサは更に、
前記データグラムのためのタイマを維持し、
前記タイマが終了した後、前記データグラムの格納された断片をクリヤするように実施可能な請求項１９の装置。
【請求項２５】
請求項１８の装置を備える無線デバイス。
【請求項２６】
データネットワークにおいて断片化したデータグラムを処理するように実施可能な装置であって、
複数の断片として送られるデータグラムのために、少なくとも１つのフィルタパラメータを取得する手段であって、前記少なくとも１つのフィルタパラメータは、前記複数の断片のうちの少なくとも１つで運ばれ、前記データグラムのための少なくとも１つのフィルタによって使用される手段と、
前記少なくとも１つのフィルタパラメータに基づいて、前記データグラムのためのフィルタ結果を取得する手段と、
前記データグラムのためのフィルタ結果を格納する手段と、
前記データグラムのためのフィルタ結果に従って、前記データグラムのために受信された各断片を処理する手段とを備える装置。
【請求項２７】
前記データグラムの断片を受信する手段と、
前記断片が前記データグラムについて受信された最初の断片であれば、前記データグラムのテーブルエントリをメモリ内に生成する手段であって、前記テーブルエントリは、前記フィルタ結果を格納するためのフィールドを含んでいる手段とを更に備える請求項２６の装置。
【請求項２８】
前記データグラムの断片を受信する手段と、
前記データグラムのためのフィルタ結果が利用可能であるかを判定する手段と、
前記フィルタ結果が未だに利用可能ではないのであれば、前記断片を格納する手段と、
利用可能であれば、前記フィルタ結果に従って前記断片を処理する手段と
を更に備える請求項２６の装置。
【請求項２９】
前記データグラムのためのタイマを維持する手段と、
前記タイマが終了した後、前記データグラムの格納された断片をクリヤする手段とを更に備える請求項２６の装置。
【請求項３０】
複数の断片として送られるデータグラムのために、少なくとも１つのフィルタパラメータを取得し、前記少なくとも１つのフィルタパラメータは、前記複数の断片のうちの少なくとも１つで運ばれ、前記データグラムのための少なくとも１つのフィルタによって使用され、
前記データグラムのためのフィルタ結果の格納を開始し、
前記データグラムのためのフィルタ結果に従って、前記データグラムの受信された各断片を処理するようにデバイス内で実施可能な指示を格納するプロセッサ読取可能媒体。
【請求項３１】
前記データグラムの断片を受信し、
前記データグラムのためのフィルタ結果が利用可能であるかを判定し、
前記フィルタ結果が未だに利用可能ではないのであれば、前記断片の格納を開始し、
利用可能であれば、前記フィルタ結果に従って前記断片を処理するように実施可能な指示を更に格納する請求項３０のプロセッサ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ通信に関し、特に、断片化したデータグラムをフィルタし、データネットワーク内にルーティングする技術に関する。
【背景技術】
【０００２】
インターネットプロトコル（ＩＰ）は、データグラムと呼ばれるデータブロックの、パケット交換データネットワーク内のソースから宛先への送信をサポートするプロトコルである。ソース及び宛先は、固定長ＩＰアドレスによって識別されるホストである。ＩＰ用語では、「ノード」とはＩＰを実装するデバイスであり、「ホスト」とは、自己に明示的にアドレスされているＩＰパケットが終了するノードであり。「ルータ」は、自己に明示的にアドレスされていないＩＰパケットをも転送するホストである。宛先へデータを送信するために、ソースは、ＩＰヘッダ及びペイロード部を備えたデータグラムを形成する。ＩＰヘッダは、他のフィールドと同様、ソース及び宛先のＩＰアドレスを含んでいる。その後、ソースは、ソースが宛先のために有しているルーティング情報に基づいて、データグラムをＩＰパケットとして宛先に向けて送る。
【０００３】
以下に述べるように、ノードは、様々な理由でＩＰパケットをフィルタしうる。ＩＰに関しては、「フィルタリング」は、ＩＰパケットのある特性に基づいて、異なるタイプのＩＰパケットを識別する処理である。これらの特性は、ＩＰヘッダ又はペイロード部で運ばれる１つ又は複数のフィルタパラメータによって記述又は定義される。プロトコルスタックでは、ＩＰはネットワークレイヤに存在する。ネットワークレイヤは、トランスポートレイヤの下にあり、トランスポートレイヤは、アプリーケーションレイヤの下にあるオプションセッションレイヤの下にある。データネットワークは、転送制御プロトコル（ＴＣＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、あるいはその他のプロトコルをトランスポートレイヤのために使用しうる。フィルタパラメータは、ＩＰヘッダ、トランスポートレイヤヘッダ（例えばＴＣＰヘッダ）、セッションレイヤヘッダ、アプリケーションレイヤヘッダ、アプリケーションレイヤペイロード等、あるいはこれらの組み合わせによって、全てがデータグラムにカプセル化されて運ばれる。
【０００４】
ＩＰに関しては、「フィルタ」は、異なる値のフィルタパラメータに対して異なる出力を与えるボックスとして理解されるかもしれない。一例として、フィルタは、宛先ＩＰアドレス、及び２３からなるＴＣＰ宛先ポート数に基づいて定義されうる。（ＴＣＰポートは、関連するデータのための論理チャネルを称する。）このフィルタは、その宛先ＩＰアドレスを持つホスト上で動作するテルネットサーバに向けられた全てのＩＰパケットを識別するために使用されうる。一般に、フィルタリングは、フィルタパラメータによって定義される特性に基づいて、あるＩＰパケットを、ＩＰパケットのストリームと区別するために実行されうる。このフィルタリングは、これらの特性を有するＩＰパケットの特別な取り扱いを可能にする。
【０００５】
ＩＰパケットフィルタリングは、ＩＰ断片化が存在する状態ではより魅力的である。ＩＰは、より小さな断片へのデータグラムの断片化をサポートする。例えば、送られるデータグラムが大きすぎて、ネットワークレイヤの下にあるレイヤにおいてプロトコルユニットによって運ぶことができない場合、ＩＰ断片化が使用されうる。この場合、大きなデータグラムは、複数の小さな断片に分割され、各断片はそれぞれ個別のＩＰパケットとして送られうる。断片のＩＰパケットは、これら断片を再集合するために、宛先によって使用される適切なヘッダ情報を含むだろう。
【０００６】
データグラムが複数の断片に分割される場合、フィルタパラメータは、唯一の断片内又は断片のサブセットで運ばれる。これは、ＩＰパケットフィルタリングを複雑にする。例えば、フィルタパラメータは、ＴＣＰヘッダ内のソース番号及び宛先ポート番号かもしれない。それは、一般に、データグラムの最初の断片内で運ばれる。フィルタリングノードが、各ＩＰパケットについて別々にフィルタリングするのであれば、フィルタパラメータの全てを含んでいる訳ではないＩＰパケットは、適切にフィルタされない。フィルタリングノードは、ＩＰパケットフィルタリングを行なうノードであり、ホスト又はルータでありうる。
【０００７】
断片化したデータグラムをフィルタする１つの従来スキームでは、フィルタリングノードは、データグラムの断片の全てをバッファし、全ての断片が受信された後、データグラムを再集合し、再集合されたデータグラムについてフィルタリングを実行し、（必要ならば）データグラムを断片に再断片化し、これら断片を個別のＩＰパケットとして送り出す。この従来のフィルタリングスキームは、いくつかの不都合を持っている。第１に、各データグラムの断片の全てに対する長引くバッファリングは、断片の通常のフローを中断し、その最終宛先へのデータグラムの送信に際し余分な遅延をもたらし、更に不公平なリンク利用をもたらす。第２に、各データグラムの再集合及び再断片化は、フィルタリングノードによる更なる処理を必要とする。フィルタリングノードがルータであれば、この再集合及び再断片化は、ルーティングを非常に非効率的にするであろう。
【０００８】
処理量を低減するために、フィルタリングノードは、データグラムの断片を再集合することなく、断片化されたデータグラムについてのフィルタリングを実行する。しかしながら、ノードは、各データグラムの全ての断片をバッファし、全ての断片が受信された後にのみフィルタする必要があるかもしれない。長引くバッファリングに関連する不都合は、この場合にも当てはまる。
【０００９】
従って、当該技術においては、断片化されたデータグラムを効率的にフィルタし、ルーティングする技術に対するニーズがある。
【発明の概要】
【００１０】
本明細書では、断片化したデータグラムを効率的にフィルタリングし、これらデータグラムの断片をルーティングするための技術が記載される。ユニークなデータグラム識別子によって識別される断片化された各データグラムでは、データグラムの断片が受信されると、フィルタリングノードがデータグラムのためのフィルタパラメータを取得する。データグラム用のフィルタパラメータの全てが利用可能な場合、ノードは、フィルタパラメータに１つ又は複数のフィルタを適用し、データグラムのフィルタ結果を取得し、データグラムについてフィルタ結果をルーティングテーブル内のエントリ（すなわち、ルーティングテーブルエントリ）に格納する。このフィルタ結果（ルーティング決定とも呼ばれる）は、そのデータグラムの全ての断片のために、ノードによって実行されるべき処理を示す。例えば、フィルタ結果は、ノードがデータグラムの断片を高次のレイヤへ渡すべきか、データグラムの宛先へ断片を転送すべきか、データグラムの宛先へ特定の論理リンク又は物理リンクで断片を転送すべきか、データグラムの全ての断片を消去すべきか等を示す。このフィルタ結果は、一般に、特定用途のために設計される１つ又は複数のフィルタに基づいて取得される。
【００１１】
このフィルタ結果を取得する前に、フィルタリングノードは、このデータグラムについて受信された全ての断片を、データ格納に適した任意のメモリである「断片」メモリ内に格納する。フィルタ結果が利用可能になる場合、ノードは、フィルタ結果に従って、データグラムについて既に受信された全ての断片を処理することができる。引き続き、データグラムの残りの各断片が受信されると、データグラムのために格納されたフィルタ結果に従って、ノードは直ちにこの断片を処理することができる。データグラムの最後の断片が受信された時、ノードは、データグラムによって使用された断片メモリの一部をクリヤし、データグラムのためのルーティングテーブルエントリを消去することができる。
【００１２】
本発明の種々の局面及び実施形態が、以下に更に詳細に記載される。
【図面の簡単な説明】
【００１３】
【図１】図１は、データグラム用のＩＰパケットを示す。
【図２】図２は、典型的なデータグラム識別子のフィールドを示す。
【図３】図３は、複数の断片へのデータグラムの断片化を示す。
【図４】図４は、断片化したデータグラムをフィルタし、かつデータグラムの断片をルーティングするためにフィルタリングノードによって実行される処理を示す。
【図５】図５は、断片化したデータグラムのためにタイマを取り扱う処理を示す。
【図６】図６は、断片化したデータグラムのためのルーティングテーブルエントリを示す。
【図７】図７は、フィルタリングノードのブロック図を示す。
【図８】図８は、無線デバイス及び端末機器のブロック図を示す。
【発明を実施するための形態】
【００１４】
本発明の特徴及び本質は、同一参照符号が全体を通じて対応して関連している添付図面と共に説明された場合、詳細な説明からより明白になるだろう。
【００１５】
本明細書において、用語「典型的（exemplary）」は、一例、インスタンス、又は例示として役立つことを意味するために使用される。本明細書で「典型的（exemplary）」と記載される実施形態又は設計は、他の実施形態又は設計に対して好適であるとか、有利であるとか必ずしも解釈される必要はない。
【００１６】
明瞭さのために、以下の説明において、次の用語が使用される。ネットワークレイヤは、高次のレイヤ（例えばトランスポートレイヤ）からデータを受信し、インターネットデータグラム（又は、単にデータグラム）を形成する。また、ネットワークレイヤは、その残りのネットワークインタフェースのうちの１つを経由して処理又は転送するために、そのネットワークインタフェースのうちの１つを経由して他のネットワーク要素からＩＰデータグラムを受信する。データグラムは、ネットワークレイヤにおいて、単一のＩＰパケットとして処理され、送られる。データグラムはまた、複数の断片へ分割されうる。そして、各断片は、ネットワークレイヤにおいて、個別のＩＰパケットとして送られうる。各ＩＰパケットは、断片化してないデータグラム全体用であるか、あるいは断片化されたデータグラムの１つの断片用である。各ＩＰパケットは、ＩＰヘッダ及びペイロード部を含んでいる。
【００１７】
図１は、データグラム用のＩＰパケットを示す。ＩＰパケットは、多くのフィールドを含んでいる。簡略のために、以下には、本開示に関連するフィールドのみを記載している。  
・インターネットヘッダ長（ＩＨＬ）は、ＩＰヘッダ（３２ビットワード単位）の長さを示す。  
・全体長さは、ＩＰヘッダとペイロード部（８ビットオクテット単位）とを含むＩＰパケットの全体長さを示す。  
・識別表示は、データグラムの断片（もしあれば）の再集合を助けるために、ソースホストによって割り当てられた識別表示値を伝える。  
・フラグは、３ビットを含む。ＭＦビットは、データグラムの最後の断片を示すために「０」に設定され、データグラムの引き続く１つ又は複数の断片を示すために「１」に設定される。  
・断片オフセットは、データグラム内の断片の位置を示す。これによって、宛先ホストが、データグラムの断片を適切に再集合できるようになる。  
・生存時間は、データグラムがＩＰデータネットワーク内に残ることを許される最大時間を示す。  
・プロトコルは、ＩＰパケットのペイロード部において使用される次の高次のレイヤプロトコルを示す。  
・ソースアドレスは、ソースホストのＩＰアドレスを伝える。  
・宛先アドレスは、宛先ホストのＩＰアドレスを伝える。  
・ペイロードは、ＩＰパケットのペイロードを伝え、かつ可変長である。
【００１８】
ＩＰパケットフォーマットは、１９８１年９月発行の"Internet Protocol DARPA Internet Program Protocol Specification"と題されたＲＦＣ７９１に記載されている。他のレイヤ用の他のプロトコルもまた、それらのデータユニットのためのフォーマットを定義する。例えば、トランスポートレイヤでは、ＴＣＰによって使用されるフォーマットは、１９８０年９月発行の"Transmission Control Protocol"と題されたＦＲＣ７９３に記載され、ＵＤＰによって使用されるフォーマットは、１９８０年８月発行の"User Datagram Protocol"と題されたＲＦＣ７６８に記載されている。
【００１９】
図２は、ユニークに各データグラムを識別するために使用される典型的なデータグラム識別子２００のフィールドを示す。データグラム識別子２００は、ＩＰヘッダの識別表示フィールド、プロトコルフィールド、ソースアドレスフィールド、及び宛先アドレスフィールドの連結により形成される。ＲＦＣ７９１は、ソースホストに対して、識別表示フィールドを、（１）データグラムのために使用されるプロトコル、宛先ＩＰアドレス、及びソースＩＰアドレスの所定の組み合わせと、（２）データグラムがデータネットワーク内でアクティブである時間との両方にユニークな値に設定するように要求する。所定のデータグラムの全ての断片について、同じ識別表示値が使用される。したがって、これら４つのフィールドについて同じ設定値を持つ全てのＩＰパケットは、同じデータグラムに属するものと見なされうる。一般的な実装では、ソースホストは、データグラムの送信を開始したとき、識別表示フィールドのための値をランダムに選択し、その後、（プロトコルに関わらず）新たなデータグラムを送信するときには常に、識別表示値をインクリメントする。この場合、データグラム識別子は、単に識別表示フィールド、ソースアドレスフィールド、及び宛先アドレスフィールドの組み合わせによって定義されうる。
【００２０】
図３は、データグラムの複数の断片への断片化を示す。オリジナルのデータグラムは、ＩＰヘッダとペイロード部とを備え、低次のレイヤ（例えば、リンクレイヤ）内のデータユニットのデータ伝送能力よりも大きいかもしれない。データグラムのペイロード部が、Ｍ個のオクテットを含んでいる場合、および低次のレイヤ内の各データユニットが、ＩＰヘッダを加えたＬ個のオクテットを運ぶことができる場合、データグラムは
【数１】
2011066903.tif 000003
【００２１】
個の断片に分割されうる。ここで、
【数２】
2011066903.tif 000004
【００２２】
は、ｘの次に高い整数を与えるシーリングオペレータ（ceiling operator）を示す。ＲＦＣ７９１は、データグラムのペイロード部が、８オクテット境界上で分割されることを必要とするので、
【数３】
2011066903.tif 000005
【００２３】
を超える断片がデータグラムに必要とされうる。データグラムは、Ｎ個の断片に分割される。ここでは、断片１乃至Ｎとしてラベルされ、Ｎは
【数４】
2011066903.tif 000006
【００２４】
に等しいか、それよりも大きい。
【００２５】
データグラムを断片化するために、Ｎ個の断片の各々のＩＰヘッダは、データグラムのＩＰヘッダを使用して生成される。全体長さフィールド、断片オフセットフィールド、及びフラグフィールドに対する新たな値が、各断片のＩＰヘッダについて決定される。各断片のＩＰヘッダの残りのフィールドは、データグラムのオリジナルのＩＰヘッダからコピーされる。オリジナルのＩＰヘッダからのオプションは、最初の断片のＩＰヘッダにのみコピーされる。最後に、各断片のＩＰヘッダチェックサムが再計算される。データグラムのペイロード部は、適切な８オクテット境界において、Ｎ個のより小さな部分へ分割される。各断片のペイロード部は、Ｎ個の部分のうちの対応する１つで埋められる。断片１乃至Ｎ−１のうちの各々について、ＩＰヘッダのフラグフィールド内のＭＦビットが「１」に設定され、このデータグラムについて１つ又は複数の断片が続くことが示される。断片ＮのＭＦビットは、「０」に設定され、この断片が、データグラムの最後の断片であることが示される。各断片の断片オフセットフィールドは、データグラム内のペイロード部の開始に対するその断片内のペイロード部の開始位置を示す値に設定される。全体長さフィールドは、断片の長さに設定される。
【００２６】
ソースホストは、データグラムのＮ個の断片を、Ｎ個の個別のＩＰパケットとして、一般には、一度の１つのＩＰパケットをデータネットワークを介して送る。これらのＩＰパケットは、異なる経路で送られるかもしれないので、与えられたノードは、シーケンスをはずれたこれらＩＰパケットを受信するかもしれない。次の説明では、「断片１」は、データグラムの最初の断片を称し、「最初の受信断片」は、このデータグラムについて最初に受信された断片を称する。それは断片１かもしれないし、断片１ではないかもしれない。
【００２７】
フィルタリングノードは、以下のように、断片化されたデータグラムに関するフィルタリングと、これらデータグラムの断片のルーティングとを効率的に行う。断片化された各データグラムについては、データグラムの断片が受信されると、ノードが、データグラムのフィルタパラメータを取得する。データグラムのフィルタパラメータの全てが利用可能になるや否や、このノードは、フィルタパラメータに１つ又は複数のフィルタを適用し、データグラムのフィルタ結果を取得し、このフィルタ結果を、ルーティングテーブル内のエントリ（又は行）に格納する。このフィルタ結果は、データグラムの全ての断片用のノードによって行なわれる処理を示す。このフィルタ結果を取得する前に、ノードは、このデータグラムについて受信された全ての断片を断片メモリ内に格納する。フィルタ結果が利用可能になるや否や、このノードは、フィルタ結果に従って、このデータグラムについて既に受信された全ての断片を処理することができる。データグラムの残りの各断片が引き続き受信されると、このノードは、フィルタ結果に従って直ちに断片を処理することができる。データグラムの最後の断片が受信された時、ノードは、データグラムによって使用された断片メモリ部分をクリヤし、このデータグラムのためのルーティングテーブルエントリを消去することができる。
【００２８】
このルーティング結果が利用可能になる前に、データグラムの断片は、様々な方法によって、断片メモリ内に格納されうる。断片のサイズは、演繹的に知られていないかもしれないし、断片が、シーケンスから外れて受信されるかもしれないので、断片が受信されると、各断片は、個別のバッファに格納されうる。バッファは、必要に応じて割り当てられた適切なサイズを持つ断片メモリの一部でありうる。これによって、断片メモリを効率的に使用することができる。なぜなら、バッファが必要とされる場合、適切なサイズのバッファが割り当てられるからである。メカニズムは、データグラムについて、（１）データグラムのどの断片が受信されているか、（２）受信された断片が格納されているバッファ、（３）もしあればその他の適切な情報を判定するために使用される。このメカニズムは、例えば、当該技術で知られているようなキューリスト、リンクリスト等を用いて実現されうる。次の説明は、断片が個別のバッファに格納されるものと仮定する。しかしながら、断片は、他の方法でも格納され、これも本発明の範囲内である。
【００２９】
一般に、それぞれ断片されたデータグラムのフィルタパラメータは、「目標」（target）断片と称される１つ又は複数の断片で運ばれる。しかしながら、多くのアプリケーションが、例えばＴＣＰ、ＵＣＰ、ＩＣＭＰ等のような上位レイヤプロトコルについて、ＩＰヘッダ及び／又はヘッダで運ばれるフィルタパラメータを使用する。断片の最小のサイズは５７６オクテットであるので、ＩＰヘッダ及び上位レイヤヘッダは、一般に、データグラムの断片１で運ばれる。ＩＰヘッダ及び上位レイヤヘッダで運ばれるフィルタパラメータを使用するアプリケーションの場合、通常はデータグラムの断片１である１つのみの目標断片が一般に存在する。これらのアプリケーションについては、データグラムのフィルタパラメータの全ては、データグラムの断片１から取得されうる。これは一般にデータグラムの最初に受信された断片でもある。そして、この最初に受信された断片に基づいて、フィルタ結果が取得される。このデータグラムのそれに続く全ての断片は、受信されると、バッファを必要とすることなく処理される。
【００３０】
フィルタリングノードは、「古くなった」（stale）データグラムが断片メモリから消去されることを保証するために、各断片化されたデータグラムのためのタイマを使用する。このデータグラムについて最初の断片が受信された時、各データグラムのためのタイマが初期値に設定されうる。この初期値は、例えば、断片のＩＰヘッダ内の生存時間値でありうる。タイマが終了すると、データグラムのルーティングテーブルが削除され、データグラムの断片メモリに格納された全ての断片が消去され、データグラムによって使用される断片メモリ部分をクリヤする。
【００３１】
フィルタリングノードは、断片化されたデータグラムの異なる断片について以下のようなオーバヘッド処理を行いうる。  
・データグラムの最初に受信された断片は、ルーティングテーブル内にデータグラムのエントリを生成し、このデータグラムのためのタイマをスタートさせる。  
・目標断片は、データグラムのフィルタパラメータの全てを取得し、このフィルタパラメータに少なくとも１つのフィルタを適用し、データグラムのフィルタ結果を取得する。  
・データグラムの最後の断片は、データグラムによって使用された断片メモリの部分をクリヤし、データグラムのルーティングテーブルエントリを消去する。
【００３２】
図４は、断片化したデータグラムをフィルタし、かつデータグラムの断片をルーティングするためにフィルタリングノードによって行なわれる処理４００のフロー図を示す。断片化されたデータグラムは、多数の断片からなり、各断片はそれぞれ１つのＩＰパケットとして送られる。したがって、「断片」及び「ＩＰパケット」は、断片化されたデータグラムと同意語である。図４は、１つのＩＰパケットの処理を示す。
【００３３】
先ずフィルタリングノードは、ＩＰパケットを受信する（ブロック４１２）。そしてこのノードは、このＩＰパケットが、断片化されたデータグラムであるかを判定する（ブロック４１４）。これは、ＩＰパケットのＩＰヘッダ内のＭＦビット及び断片オフセットフィールドを調べることにより達成されうる。断片オフセットフィールドが「０」（これは、断片１についてのみ真である）に設定され、ＭＦビットが「０」（このデータグラムに続く断片が存在しないことを示す）に設定されている場合、ＩＰパケットは、断片化されていないデータグラムである。ＩＰパケットが断片化されていないデータグラム（つまり、ブロック４１４の答えが「ＮＯ」）である場合、このノードは、このＩＰパケットに１つ又は複数のフィルタを適用し、このフィルタリングの結果に基づいてＩＰパケットを転送する（ブロック４１６）。そして、ノードは、次のＩＰパケットを処理するためにブロック４１２に戻る。
【００３４】
ブロック４１４において、現在のＩＰパケットが、断片化されたデータグラムであると判定された場合、このＩＰパケットが、このデータグラムについて受信された最初の断片であるかを判定する。この断片は、データグラムの断片１であるかもしれないし、そうではないかもしれない。なぜなら、このノードは、シーケンスからはずれて断片を受信するかもしれないからである（ブロック４２２）。この判定は、（１）例えば、ＩＰパケットの識別表示、プロトコル、ソースアドレス値、及び宛先アドレス値の組み合わせであるデータグラム識別子を取得すること、（２）このデータグラム識別子のルーティングテーブルエントリを調べること、及び（３）データグラム識別子がルーティングテーブルエントリの何れにおいても見つからないのであれば、最初に受信される断片である現在のＩＰパケットを示すことによってなされる。
【００３５】
現在のＩＰパケットが最初に受信される断片であれば、フィルタリングノードは、データグラムの新たなルーティングテーブルエントリを生成し、この新たなルーティングテーブルエントリのフィールドを初期化し、データグラムのためのタイマをスタートさせる（ブロック４２４）。データグラムのルーティングテーブルエントリは、データグラム識別子によってインデクスされる。ルーティングテーブルエントリは、ポインタを含む。これは、データグラムの断片を格納するために使用される断片メモリ位置を示す。次にノードはブロック４３２に進む。
【００３６】
ブロック４２２で判定されたように、現在のＩＰパケットが最初に受信された断片ではない場合、フィルタリングノードは、データグラムのフィルタ結果が、データグラムのルーティングテーブルエントリ内で利用可能であるかを判定する（ブロック４２６）。フィルタ結果が存在する場合、このノードは、フィルタ結果に従ってＩＰパケットを処理／転送し（ブロック４２８）、その後、ブロック４４２に進む。フィルタ結果が利用可能ではない場合、このノードは、現在のＩＰパケットと、このデータグラムの断片でもある既に受信された全てのＩＰパケットとから、データグラムの全てのフィルタパラメータが取得されたかを判定する（ブロック４３２）。全てのフィルタパラメータが取得された訳ではない場合、このノードは、現在のＩＰパケットに断片メモリ内のバッファを割り当て、このバッファ内にＩＰパケットを格納する（ブロック４３８）。そして、このノードは、次のＩＰパケットを処理するためにブロック４１２に戻る。一方、全てのフィルタパラメータが取得された場合、このノードは、フィルタパラメータにフィルタを適用し、データグラムのフィルタ結果を取得し、このフィルタ結果を、データグラムのために生成されたルーティングテーブルエントリに保存する（ブロック４３４）。その後、このノードは、フィルタ結果に従って、既に受信された全てのＩＰパケットに加えて現在のＩＰパケットを処理／転送する。この現在のＩＰパケットもまたこのデータグラムの断片である（ブロック４３６）。その後、このノードはブロック４４２に進む。
【００３７】
図４に示す実施形態では、フィルタリングノードはまた、このデータグラムについてどの断片が受信されたかを追跡し、このデータグラムについて新たな断片が受信された場合にはいつでもこの情報を更新する（ブロック４４２）。このノードは、各断片の断片オフセット（断片オフセットフィールドから取得される）と、各断片のペイロードサイズ（ＩＨＬフィールド及び全体長さフィールド）とに基づいてこの記録維持を行う。そして、このノードは、更新された断片情報に基づいて、データグラムの全ての断片が受信されたかを判定する（ブロック４４４）。（１）データグラムの最後の断片が受信され（最後の断片が、「０」に設定されたＭＦビットを持ち）、（２）データグラムのその他全ての断片も受信された（受信された各断片のペイロードサイズと断片オフセットとに基づいて決定される）のであれば、データグラム全体が受信される。データグラム全体が受信された場合、ノードは、データグラムのルーティングテーブルエントリを削除し、断片メモリから、データグラムの全ての断片を消去する（ブロック４４６）。ブロック４４４，４４６から、ノードは、次のＩＰパケットを処理するためにブロック４１２に戻る。
【００３８】
別の実施形態では、ブロック４４６におけるデータグラムのルーティングテーブルエントリの削除、及びデータグラムによって使用される断片メモリのクリヤの代わりに、フィルタリングノードはブロック４４６において単に、データグラムのためのタイマを終了させる。その後、以下に説明するように、タイマが終了したので、タイマ取扱メカニズムが、ルーティングテーブルエントリを削除し、このデータグラムによって使用される断片メモリをクリヤする。また別の実施形態では、フィルタリングノードは、断片情報の追跡をせず、ブロック４４２、４４４，４４６に示す処理を行なわない。この実施形態の場合、ルーティングテーブルエントリを削除し、タイマが普通に終了する場合に古いデータグラムの断片メモリ内の断片を消去するために、フィルタリングノードは、タイマ取扱メカニズムに依存する。
【００３９】
図４に示すように、データグラムのフィルタパラメータの全てが受信され、データグラムのフィルタ結果が得られるまで、データグラムの断片は、断片メモリ内のバッファ内に一時的に格納される。フィルタパラメータの全てが、データグラムの断片１で運ばれる場合、断片１が受信されるや否や、フィルタ結果を取得することができる。断片がシーケンスからはずれて受信されなければ、断片１は、一般に、データグラムの最初に受信される断片である。この場合、ルーティング遅延及びバッファリング要件は、データグラムのために共に最小化される。更に、断片１は、断片オフセットフィールドの値が０であることによって容易に識別することができる。
【００４０】
フィルタパラメータの全てが断片１で運ばれる訳ではない場合、ルーティング遅延及びバッファリング要件はともに、必要な全てのフィルタパラメータを取得するためにノードによって必要とされる遅延に比例して増加する。更に、フィルタパラメータの全てを取得するために、複数の断片が必要とされる場合、フィルタパラメータもまた、フィルタが適用される時間まで、受信されると一時的に格納される必要があろう。必要なフィルタパラメータを運ぶ目標断片の検出のために、適切な処理が実行される。
【００４１】
（断片をバッファしなければならないことを回避するために）好適には断片１である唯一の断片において利用可能である（フィルタパラメータをバッファしなければならないことを回避するために）ことが期待されるパラメータを使用するために、フィルタを設計することによって効率的なフィルタリングが達成される。フィルタリングノードによって実行されているフィルタリングをソースホストが知っている場合、フィルタリングノードが、出来る限り早く全てのフィルタパラメータを受信できるような方法で、ソースノードは、断片を送る。例えば、ソースノードは、シーケンスを外れて断片を送るかもしれない。この場合、断片は、最初に送られるフィルタパラメータを運ぶ。一般に、ルーティング遅延及びバッファリング要件が可能な程度まで最小化されるようにフィルタが定義され断片が送られる。
【００４２】
データグラムのフィルタ結果が取得されるまで、フィルタリングノードは、バッファにデータグラムの断片をバッファする。いくつかの断片は、（あらゆる理由により）データネットワークを介した移行の間に見落とされるか破損され、ノードに受信されないかもしれない。必要なフィルタパラメータを含む断片が見落とされる場合、データグラムのフィルタ結果は取得されず、断片メモリが、あるメカニズムによってクリヤされないのであれば、クリヤされるまで、このデータグラムについて受信された全ての断片は、断片メモリ内に永久に存在しうる。データグラムのフィルタ結果が得られても、見落とされたあらゆる断片は、データグラム全体を受信できないという結果に終わるだろう。そして、ルーティングテーブルエントリが、あるメカニズムによって削除されなければ、データグラムのルーティングテーブルエントリが永久に保持されるかもしれない。
【００４３】
例えば、断片はデータネットワークによって見落とされるので、データグラムのルーティングテーブルエントリ及び／又はバッファが永久に保持される状況を回避するために、タイマが、各データグラムについて使用されうる。このタイマは、このデータグラムについて最初の断片が受信されたときに初期値に設定される。このノードがルーティングテーブルエントリ又は、このデータグラムについて既に受信されたあらゆる顕著な断片を誤って削除しないように、この初期値は十分大きいべきである。この初期値はまた、識別表示フィールド内の値がまわりを囲むのに要する時間に等しいか、又はそれよりも小さいべきである。これによって、１つのデータグラムについて得られたフィルタ結果が、同じ識別表示値を持つ別のデータグラムに誤って適用されないようになる。この初期値は、例えば、ＩＰヘッダの生存時間フィールド内の値か、又はその他の時間値に設定される。
【００４４】
図５は、断片化したデータグラムのためのタイマを取り扱う処理５００のフローチャートを示す。図４に示すように、このデータグラムについて最初の断片が受信された時、断片化されたデータグラムのためのタイマが設定される。その後、このタイマは、最後の更新から経過した時間量によって更新される（例えば、デクリメントされる）。一旦タイマが終了すれば、データグラムは「古くなっている」と考えられる。そして、このデータグラムについて受信された全ての断片及びそのルーティングテーブルエントリを消去することができる。これは、断片メモリ内の断片化された古いデータグラムの蓄積を防ぐ。
【００４５】
ノードは、例えば定期的に、あるいはイベントによってトリガされた場合に、断片化された各データグラムのためのタイマを更新する。その後、ノードは、任意のデータグラムのためのタイマが終了したかを判定する（ブロック５１４）。判定結果が「ＹＥＳ」である場合、ノードは、タイマが終了した古いデータグラムそれぞれのデータグラム識別子を取得する。その後、ノードは、古いデータグラムそれぞれのルーティングテーブルエントリを削除し、古いデータグラムの断片メモリに格納された全ての断片を破棄する（ブロック５１８）。古い及び／又は不完全なデータグラムを廃棄することは、壊滅的なことではない。なぜなら、高次のレイヤは、例えば失われたデータグラムの再送信を開始するように、適切な補正動作を行うだろうからである。
【００４６】
処理５００は、例えば予め定めた秒毎のように定期的に実行される。処理５００は、例えば受信した各ＩＰパケットの処理後のように、トリガされた場合にも実行される。
【００４７】
図６は、断片化したデータグラムのルーティングテーブル内のテーブルエントリ６００の実施形態を示す。この実施形態では、フィールド６１２はデータグラム識別子を格納する。データグラム識別子は、上述したように、データグラムについて最初に受信される断片のＩＰヘッダのフィールドから形成されうる。ルーティングテーブルエントリは、データグラム識別子によってインデクスされる。フィールド６１４は、データグラムのためのタイマを格納する。これは、ルーティングテーブルエントリが作成された時に予め定めた値に設定され、その後、例えば定期的に、あるいはイベントによってトリガされた場合に更新される。
【００４８】
フィールド６１６は、このデータグラムについて既に受信されたフィルタパラメータを格納する。フィルタパラメータの全てが１つの断片で運ばれる場合、フィルタが適用され、この断片が受信された場合にフィルタ結果が得られる。この場合、フィールド６１６は使用されない。しかしながら、データグラムのフィルタパラメータの全てが複数の断片で運ばれる場合、フィルタパラメータは受信されるとフィールド６１６に格納される。そして、全てのフィルタパラメータが一旦受信されるとフィルタが適用される。フィールド６１６は、図４でブロック４３２中の決定のために調べられるかもしれない。
【００４９】
フィールド６１８は、データグラムのフィルタ結果を格納する。それは、データグラムのフィルタパラメータにフィルタを適用することにより得られる。ルーティングテーブルエントリが生成された場合、フィールド６１８は既知の状態にリセットされ、フィルタ結果がまだ利用可能ではないことが示される。フィールド６１８は、図４のブロック４２６のために、フィルタ結果が利用可能であるかを判定するためにチェックされる。このフィルタ結果は、利用可能であれば、データグラムの全ての断片を処理／転送するために使用される。フィルタ結果は、例えば（１）データグラムの断片を高次のレイヤに渡し、断片を削除するか、断片を宛先ホストへ転送するか、（２）利用可能であれば、例えばインタフェースアドレス及びゲートウェイのような宛先ホストへのルーティング情報、（３）マルチリンクインタフェースのためのリンク識別子、及び（４）ＱｏＳ分類のためのタグ等のような様々なタイプの情報を含みうる。
【００５０】
フィールド６２０は、例えば各断片の断片オフセット及びペイロードサイズのようなデータグラムの断片のための情報を格納する。この断片情報は、図４のブロック４４４のために、データグラム全体が受信されたかを判定するために使用される。フィールド６２０は、ルーティングテーブルエントリが生成された時にクリヤされ、その後、受信した各断片のＭＦビット、断片オフセット、及びペイロードサイズで埋められる。フィールド６２２は、データグラムの断片を格納する断片メモリ内の位置に対するポインタを格納する。
【００５１】
図７は、データグラムをフィルタし、かつ断片をルーティングすることができるノード７００の実施形態のブロック図を示す。ノード７００内では、プロセッサ７２０がＩＰパケットを受信し、受信した各ＩＰパケットを（例えば、図４に示すように）処理する。フィルタ結果が利用可能ではない場合、プロセッサ７２０は、受信した各ＩＰパケットについて、断片メモリ７３０内にＩＰパケットを格納し、フィルタ結果が利用可能である場合、ＩＰパケットを処理／転送する。メインメモリ７２２は、プロセッサ７２０によって使用されるデータ及びプログラムコードを格納する。
【００５２】
断片メモリ７３０は、フィルタ結果が利用可能ではないデータグラムの断片のＩＰパケットを格納する。ルーティングテーブル７３２は、プロセッサ７２０によって現在処理されている各断片化されたデータグラムのためのテーブルエントリを格納する。プロセッサ７２０は、新たに断片化されたデータグラムを受信した場合にはいつでもルーティングテーブル７３２内に新たなエントリを生成する。そして、データグラム全体が受信されたか、あるいはデータグラムのタイマが終了した場合には、テーブルエントリを消去する。時間ソース７３４は、断片化したデータグラムのタイマを更新するために使用されるタイミング情報を提供する。
【００５３】
ノード７００は、例えばデータネットワーク内のルータのように、コアネットワーク内のデバイス又は装置でありうる。ノード７００はまた、データネットワークに接続されたデバイス又は装置でありうる。データネットワークは、有線ネットワーク、無線ネットワーク、あるいはこれら両方のタイプのネットワークの組み合わせかもしれない。
【００５４】
図８は、無線デバイス８１０及び端末機器８５０のブロック図を示す。無線デバイス８１０は、例えば、符号分割多元接続（ＣＤＭＡ）システム及びグローバル移動体通信システム（ＧＳＭ）システムのような１つ又は複数の無線通信システムと通信しうる。ＣＤＭＡシステムは、例えば、ＩＳ−２０００、ＩＳ−８５６、ＩＳ−９５、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）のような１つ又は複数のＣＤＭＡ規格を実装しうる。無線デバイス８１０は、送信パス及び受信パスによる双方向通信を提供することができる。
【００５５】
送信パスの場合、モデムプロセッサ８４０が、無線デバイス８１０によって送信されるデータを処理（例えば、符号化及び変調）し、送信機ユニット（ＴＭＴＲ）８４２へデータチップを与える。送信機ユニット８４２は、このデータチップを調整（例えば、アナログ変換、フィルタ、増幅、及び周波数ダウンコンバート）し、変調信号を生成する。これは、アンテナ８４４を経由して送信される。受信パスの場合、１つ又は複数のシステム内の基地局によって送信された信号は、アンテナ８４４によって受信され、受信機ユニット（ＲＣＶＲ）８４６へ提供される。受信機ユニット８４６は、受信した信号を調整（例えば、フィルタ、増幅、及び周波数ダウンコンバート）し、調整された信号をデジタル化し、復調及び復号のためにデータサンプルをモデムプロセッサ８４０へ提供する。
【００５６】
メインプロセッサ８２０は、様々な機能を実行し、無線デバイス８１０内の処理ユニットの動作を制御する。メインメモリユニット８２２は、メインプロセッサ８２０によって使用されるデータ及びプログラムコードを格納する。入出力（Ｉ／Ｏ）ユニット８３６は、例えば端末機器８５０のような外部エンティティにインタフェースを提供する。バス８３８は、無線デバイス８１０内の様々なユニットを相互接続する。
【００５７】
無線デバイス８１０はまた、フィルタリングノードでもありうる。この場合、断片メモリ８３０は、フィルタ結果が利用可能ではないデータグラムの断片を格納する。ルーティングテーブル８３２は、処理中の断片化されたデータグラムのエントリを格納する。時間ソース８３４は、断片化されたデータグラムのためのタイマを維持するために使用されるタイミング情報を提供する。
【００５８】
端末機器８５０は、例えばラップトップコンピュータ、携帯情報端末（ＰＤＡ）、あるいはその他の電子機器ユニットでありうる。端末機器８５０は、端末機器のための処理を実行するプロセッサ８６０と、プロセッサ８６０によって使用されるデータ及びプログラムコードを格納するメモリ８６２と、例えば無線デバイス８１０のような他のエンティティとの通信をサポートする通信ユニット８６４とを含む。
【００５９】
本明細書に記載の技術は、断片化されたデータグラムを効率的にフィルタすることができる。これは、断片化された受信された各データグラムのフィルタパラメータを集め、データグラムの全てのフィルタパラメータが受信されるや否や、データグラムのために１つ又は複数のフィルタを提供することによって達成される。フィルタは、全ての断片が受信されるのを待つ必要なく、迅速に（例えば、このデータグラムについて最初に受信された断片に）適用されうる。本明細書に記載の技術は、断片を効率的にルーティングすることもできる。これは、データグラムの全てのフィルタパラメータが受信されるや否や、断片化された各データグラムのフィルタ結果を取得し、ルーティングテーブルエントリ内にフィルタ結果を格納し、このデータグラムについて引き続き受信される各断片にフィルタ結果を適用することによって達成される。
【００６０】
本明細書に記載の技術は、各断片が、フィルタリングノードを通り抜ける場合、最小の遅延を経験することを保証する。データグラムの断片によって経験される追加の遅延は、ノードがデータグラムの全てのフィルタパラメータを受信するために費やす時間と同じくらいかもしれない。各断片が受信されるや否や、データグラムの次の断片が処理／転送されうる。
【００６１】
データグラムのフィルタパラメータの全てが断片１で運ばれ、この断片が、ノードによって最初に受信されるのであれば、このノードは、データグラムの断片のうちの何れも格納する必要はない。（例えば、断片１がシーケンスをはずれて受信されるので、あるいはフィルタパラメータが断片１以外の断片で運ばれるので）必要なフィルタパラメータが、次に受信される断片によって運ばれるのであれば、全てのフィルタパラメータが受信されるまで、このノードは、短時間の間、幾つかの断片をバッファする必要がありうる。適切なフィルタ設計によって、断片が順番に受信される一般的な場合については、断片は、ノードによって受信されるや否や処理／転送される。最悪の場合、必要なフィルタパラメータは、このデータグラムについて最後に受信された断片で運ばれ、データグラムの全ての断片は、バッファされ、遅延される必要がある。しかしながら、本明細書に記載の技術の最悪ケースシナリオは、このデータグラムについての全ての断片が受信された後にのみフィルタを適用する従来のフィルタリングスキームのためのノミナルなケースである。
【００６２】
ＩＰパケットフィルタリングは、宛先ＩＰアドレス単独に基づくルーティングが適切ではないかもしれないデータ環境における様々なアプリケーションのために使用されうる。いくつかの典型的なフィルタリングアプリケーションを以下に説明する。
【００６３】
ＩＰパケットフィルタリングは、無線デバイスにおいて、ローカルなソケットアプリケーションをサポートするために使用される。一例として、図８に示すように、無線デバイス（例えば、セルラ電話、無線データカード、又はパケットデータサービスを提供可能な無線モジュール）は、端末機器（例えば、ラップトップコンピュータ）に接続されうる。端末機器は、無線ネットワークを介してＩＰ接続を得るために無線デバイスを使用する。また、無線デバイスは、無線ネットワークから受信されるＩＰパケットを端末機器へ転送する。多くの無線データ通信ネットワーク（例えば、ＣＤＭＡネットワーク）は、一般に、単一のＩＰアドレスを無線デバイスに割り当てる。その後、無線デバイスは、データ通信に使用するために、このＩＰアドレスを端末機器に提供する。この場合、無線デバイスが、このＩＰアドレスを宛先ＩＰアドレスとして備えたＩＰパケットを受信する場合、無線デバイスは、端末機器へこれらのＩＰパケットを転送するだろう。
【００６４】
上述した単純なＩＰアドレスベースのルーティングは、無線デバイスにおいて、ローカルなソケットアプリケーションをサポートしない。そのようなアプリケーションは、例えば、モバイル環境内の無線デバイスへＩＰ接続を提供するために使用されるモバイルＩＰ、位置決めのためのＧＰＳ等を含む。これらのアプリケーションは、関連情報を交換するために無線デバイスと無線ネットワークとの間の相互作用を必要とするかもしれない。したがって、これらアプリケーションの特性によって、端末機器の代わりに、無線デバイス上でアプリケーションを実行することがより適切でありうる。
【００６５】
本明細書に記載のフィルタリング技術及びルーティング技術は、単一のＩＰアドレスを用いて、（１）無線デバイスにおいてローカルソケット上で動作するシステムアプリケーションと、（２）端末機器で動作するエンドユーザアプリケーションとの両方を同時にサポートするために使用されうる。システムアプリケーションのために利用可能であるが、エンドユーザアプリケーションのために利用可能ではないフィルタパラメータを用いて、１つ又は複数のフィルタが定義される。例えば、フィルタパラメータは、エンドユーザアプリケーションではなく、システムアプリケーションによって使用されるＴＣＰポート番号のために定義されうる。その後、フィルタは、データグラムのフィルタ結果を得るために、無線デバイスによって無線ネットワークから受信された各データグラムに適用されるだろう。フィルタ結果は、データグラムが端末機器へ転送されるべきか、無線デバイスにおいてプロトコルスタックへ送られるべきかを示すだろう。従って、ＩＰパケットフィルタリングは、無線デバイス用のＩＰパケットと、端末機器用のＩＰパケットとを区別するために使用されうる。
【００６６】
ＩＰパケットフィルタリングはまた、データネットワークにおける異なるグレードのサービス品質（ＱｏＳ）をサポートするために使用されうる。（例えば、システム及び／又はエンドユーザアプリケーションのための）異なるタイプのトラッフィックデータは、異なるＱｏＳグレードが割り当てられ、異なる論理チャネル上で送信されうる。各データグラムの所望のＱｏＳは、ソースノードによって設定され、フィルタパラメータのセットによって決定されうる。データネットワーク内のＩＰルータは、所望のＱｏＳを提供するため、データグラムにどの論理チャネルが使用されるべきかを決定するために、各データグラムのフィルタパラメータについて動作する予め定めたフィルタを使用しうる。全てのＩＰパケットが、同じＩＰインタフェース上に複数の論理リンクを持っているデバイスに向けられている場合、各データグラムのためにどの論理チャネルを使用すべきかを決定するのに、ＩＰアドレスベースのルーティング単独では十分ではないであろう。データグラム内の１つ又は複数の追加フィールドは、適切な論理チャネルへ異なるＱｏＳグレードを必要とするデータグラムをルーティングするためのフィルタパラメータとして使用されうる。
【００６７】
ＩＰパケットフィルタリングはまた、ブロードキャスト及びマルチキャストを効率的にサポートするために使用されうる。マルチキャストをサポートするために、ノードは、マルチキャストＩＰアドレスによって識別されるマルチキャストグループを連結する。典型的には、マルチキャストＩＰアドレスを備えた全てのＩＰパケットは、これらＩＰパケットが意図されたトランスポートレイヤポート番号に関わらず、全てこのノードに送られる。その後、ノードは、これらのＩＰパケットを処理し、これらＩＰパケットの全てをトランスポートレイヤに渡す。トランスポートレイヤは、望まれないＩＰパケットを廃棄する。望まれないパケットの送信は、無線データネットワークには不適当である。なぜなら、貴重なエアリンクリソースが、望まれないＩＰパケットを送るために使用されるからである。これらＩＰパケットは、無線デバイスによってその後破棄される。無線データネットワーク内のＩＰルータは、ＩＰパケットフィルタリングを使用して、より効率的にマルチキャストをサポートする。フィルタは、トランスポートレイヤポート番号、又はその他のフィルタパラメータに基づいて定義されうる。その後、ＩＰルータは、このフィルタを全てのデータグラムに適用し、ノードによって望まれるデータグラムのみを選択的に転送する。ＩＰパケットフィルタリングは、効率的にブロードキャストをサポートするのと同様の方法で適用されうる。
【００６８】
ＩＰパケットフィルタリングはまた、ＩＰパケットを選択的にログするパケットロギングツールによっても使用される。あるＩＰパケットは、ノードによって受信された多数のＩＰパケットの中からの１つ又は複数のフィルタパラメータに基づいて選択されうる。選択されたＩＰパケットは、後の評価のためにログされうる。ＩＰパケットフィルタリングはまた、ＩＰパケットを選択的に複写し、破損し（corrupting）、及び／又は見落とす（dropping)ことによって様々なネットワーク条件を模擬することにより、ネットワークエミュレータを実現するために使用することもできる。
【００６９】
ＩＰパケットフィルタリングは、データグラムを選択的に処理及び／又は転送する様々なフィルタリングアプリケーションのために使用される。これらフィルタリングアプリケーションの全てについて、本明細書で記載の技術は、断片化したデータグラムについて、効率的にＩＰパケットをフィルタし、ルーティングするために使用される。
【００７０】
ＩＰパケットフィルタリングは、ネットワーク内の様々なデバイスによって行なわれうる。例えば、ＩＰパケットフィルタリングは、無線デバイス、ネットワーク内のルータ（例えば、ＱｏＳを提供するため）、スタンドアロンのデバイス（端末機器に接続されているか、接続されていない）等によって実行されうる。
【００７１】
異なるフィルタアプリケーションは、フィルタパラメータの同じセット又は異なるセット上で作動する異なるフィルタを使用する。上述したように、フィルタパラメータは、ＩＰヘッダ、高次レイヤプロトコルヘッダ（例えばＴＣＰヘッダ）、高次レイヤペイロード等で運ばれうる。いくつかの例として、以下はフィルタパラメータとして使用されうる。（１）ＩＰヘッダからのソースＩＰアドレス、宛先ＩＰアドレス、サブネットマスク、プロトコル番号、ＩＰＳｅｃセキュリティパラメータインデクス（ＳＰＩ）のようなセキュリティ情報、（例えばＩＰｖ４における）サービス種類、（例えばＩＰｖ６における）トラフィッククラス、（例えばＩＰｖ６における）フローラベル等。（２）トランスポートレイヤヘッダからのソースポート、宛先ポート、ソースポート範囲、及び宛先ポート範囲。サブネットマスクは、データネットワーク内のサブネットに使用されうるＩＰアドレスの範囲を指定する。一般に、任意のレイヤ内の任意のヘッダ又はペイロードの何れのフィールドも、フィルタパラメータのために使用されてよい。
【００７２】
本明細書に記載のフィルリング技術及びルーティング技術は、様々な手段によって実施される。例えば、これらの技術は、ハードウェア、ソフトウェア、又はこれらの組み合わせで実施されうる。ハードウェア実装については、フィルタリング及びルーティングを実施するために使用される処理ユニットは、１つ又は複数の特定用途向けＩＣ（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理デバイス（ＤＳＰＤ）、プログラマブル論理デバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＰＦＧＡ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、本明細書で記載の機能を実行するように設計されたその他の電子ユニット、又はこれらの組み合わせの中で実現される。
【００７３】
ソフトウェア実装の場合、フィルタリング技術及びルーティング技術が、本明細書で記載の機能を実行するモジュール（例えば処理、機能等）を用いて実装される。ソフトウェアコードは、メモリユニット（図７のメモリユニット７２２又は図８のメモリユニット８２２）内に格納され、プロセッサ（図７のプロセッサ７２０又は図８のメインプロセッサ８２０）によって実行される。メモリユニットは、プロセッサ内に実装されるか、プロセッサの外部に実装される。プロセッサの外部に実装される場合、当該技術で周知の様々な手段によってプロセッサに通信可能に接続することができる。
【００７４】
開示した実施形態の記述は、当業者をして、本発明の実施又は使用を可能にするために提供される。これらの実施形態への様々な変更は、当業者には明らかであり、本明細書に定義された一般原理は、本発明の精神又は範囲から逸脱することなく他の実施形態に適用されうる。したがって、本発明は、本明細書に示された実施形態に限定されることは意図されておらず、本明細書に記載の原理及び新規の特徴に一致する最も広い範囲が与えられるべきである。
【図１】
2011066903.tif 000007
【図２】
2011066903.tif 000008
【図３】
2011066903.tif 000009
【図４】
2011066903.tif 000010
【図５】
2011066903.tif 000011
【図６】
2011066903.tif 000012
【図７】
2011066903.tif 000013
【図８】
2011066903.tif 000014
【手続補正書】
【提出日】平成22年11月5日(2010.11.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データネットワークにおいて断片化したデータグラムを処理する方法であって、
複数の断片として送られるデータグラムのために、少なくとも１つのフィルタパラメータを取得することであって、前記少なくとも１つのフィルタパラメータは、前記複数の断片のうちの少なくとも１つで運ばれ、前記データグラムのための少なくとも１つのフィルタによって使用されることと、
前記少なくとも１つのフィルタパラメータに基づいて、前記データグラムのためのフィルタ結果を取得することと、
前記データグラムのためのフィルタ結果を格納することと、
前記データグラムのためのフィルタ結果に従って、前記データグラムの受信された各断片を処理することとを備える方法。
【外国語明細書】
2011066903000001.pdf