(57)【特許請求の範囲】
【請求項１】
パケットルーティングのための方法であって、
選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、前記パケットをディープスキャンするステップと、
前記ディープスキャンに応答して接続データベース内のエントリを生成するステップであって、前記エントリは前記選択された接続を前記選択されたALGプロセスに関連付ける、ステップと、
前記エントリに基づいて、前記選択された接続上で受信した追加のパケットのディープスキャニングを回避するステップと、
タグ付きパケットを形成するために、前記パケットおよび前記追加のパケットの各々を情報でタグ付けするステップであって、前記タグ付きパケットの各々に関連付けられた前記情報は、前記タグ付きパケットに実施されることになるALGプロセスを示す、ステップと、
前記選択されたタグ付きパケットを、選択されたALGエンジンに関連付けられ選択された入力キューにそれぞれ入力するステップと、
他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るステップとを含む方法。
【請求項２】
1つまたは複数のALGプロセスにそれぞれ関連付けられた1つまたは複数のルールを識別するルールデータベースを維持するステップと、
前記選択されたALGプロセスを決定するために、前記1つまたは複数のルールのうちのどれが前記パケットによって満たされるかを決定するステップと
をさらに含む請求項1に記載の方法。
【請求項３】
接続をALGプロセスに関連付けるために前記接続データベースを維持するステップをさらに含む、請求項1に記載の方法。
【請求項４】
前記ディープスキャンするステップが、前記パケットに実施されることになる前記選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットヘッダおよびパケットペイロードのうちの少なくとも1つをスキャンするステップを含む、請求項1に記載の方法。
【請求項５】
前記選択されたALGエンジンから処理されたパケットを受信するステップと、
前記処理されたパケットを前記NAT処理モジュールに転送するステップと
をさらに含む請求項1に記載の方法。
【請求項６】
前記処理されたパケットを受信するステップが、前記選択されたALGエンジンに関連付けられ選択された出力キューから、前記処理されたパケットをそれぞれ受信するステップを含む、請求項5に記載の方法。
【請求項７】
パケットルーティングのための装置であって、
選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、前記パケットをディープスキャンするとともに、前記選択された接続を前記選択されたALGプロセスに関連付ける接続データベース内のエントリを生成するように構成されたプロセッサであって、前記エントリに基づいて、前記選択された接続上で受信した追加のパケットのディープスキャニングを回避するとともに、タグ付きパケットを形成するために、前記パケットおよび前記追加のパケットの各々を情報でタグ付けするようにさらに構成され、タグ付きパケットの各々に関連付けられた前記情報は、前記タグ付きパケットに実施されることになるALGプロセスを示す、プロセッサと、
前記選択されたタグ付きパケットを、選択されたALGエンジンに関連付けられ選択された入力キューにそれぞれ入力するとともに、他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るように構成されたパケット送信部と
を含む装置。
【請求項８】
前記プロセッサが、
1つまたは複数のALGプロセスにそれぞれ関連付けられた1つまたは複数のルールを識別するルールデータベースを維持し、
前記選択されたALGプロセスを決定するために、前記1つまたは複数のルールのうちのどれが前記パケットによって満たされるかを決定するように
構成されている、請求項7に記載の装置。
【請求項９】
前記データベースが、接続とALGプロセスとの関連を維持するように構成されている、請求項7に記載の装置。
【請求項１０】
前記プロセッサが、前記パケットに実施されることになる前記選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットヘッダおよびパケットペイロードのうちの少なくとも1つをディープスキャンするように構成されている、請求項7に記載の装置。
【請求項１１】
前記選択されたALGエンジンから処理されたパケットを受信するとともに、前記処理されたパケットを前記NAT処理モジュールに送るように構成されたパケット受信部をさらに含む請求項7に記載の装置。
【請求項１２】
前記パケット受信部が、前記選択されたALGエンジンに関連付けられ選択された出力キューから、前記処理されたパケットをそれぞれ受信するように構成されている、請求項11に記載の装置。
【請求項１３】
パケットルーティングのための装置であって、
選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、前記パケットをディープスキャンするための手段と、
前記ディープスキャンに応答して接続データベース内のエントリを生成するための手段であって、前記エントリは前記選択された接続を前記選択されたALGプロセスに関連付ける、手段と、
前記エントリに基づいて、前記選択された接続上で受信した追加のパケットのディープスキャニングを回避するための手段と、
タグ付きパケットを形成するために、前記パケットおよび前記追加のパケットの各々を情報でタグ付けするための手段であって、前記タグ付きパケットの各々に関連付けられた前記情報は、前記タグ付きパケットに実施されることになるALGプロセスを示す、手段と、
前記選択されたタグ付きパケットを、選択されたALGエンジンに関連付けられ選択された入力キューにそれぞれ入力するための手段と、
他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るための手段と
を含む装置。
【請求項１４】
1つまたは複数のALGプロセスにそれぞれ関連付けられた1つまたは複数のルールを識別するルールデータベースを維持するための手段と、
前記選択されたALGプロセスを決定するために、前記1つまたは複数のルールのうちのどれが前記パケットによって満たされるかを決定するための手段と
をさらに含む請求項13に記載の装置。
【請求項１５】
接続をALGプロセスに関連付けるために前記接続データベースを維持するための手段をさらに含む、請求項13に記載の装置。
【請求項１６】
前記ディープスキャンするための手段が、前記パケットに実施されることになる前記選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットヘッダおよびパケットペイロードのうちの少なくとも1つをディープスキャンするための手段を含む、請求項13に記載の装置。
【請求項１７】
前記選択されたALGエンジンから処理されたパケットを受信するための手段と、
前記処理されたパケットを前記NAT処理モジュールに転送するための手段と
をさらに含む請求項13に記載の装置。
【請求項１８】
前記処理されたパケットを受信するための手段が、前記選択されたALGエンジンに関連付けられ選択された出力キューから、前記処理されたパケットをそれぞれ受信するための手段を含む、請求項17に記載の装置。
【請求項１９】
プロセッサによって実行可能な命令を具体化する、パケットルーティングのための非一時的なコンピュータ可読媒体であって、
前記命令が前記プロセッサに、選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、前記パケットをディープスキャンさせ、
前記命令が前記プロセッサに、前記ディープスキャンに応答して接続データベース内のエントリを生成させ、前記エントリは前記選択された接続を前記選択されたALGプロセスに関連付け、
前記命令が前記プロセッサに、前記エントリに基づいて、前記選択された接続上で受信した追加のパケットのディープスキャニングを回避させ、
前記命令が前記プロセッサに、タグ付きパケットを形成するために、前記パケットおよび前記追加のパケットの各々を情報でタグ付けさせ、前記タグ付きパケットの各々に関連付けられた前記情報は、前記タグ付きパケットに実施されることになるALGプロセスを示し、
前記命令が前記プロセッサに、前記選択されたタグ付きパケットを、選択されたALGエンジンに関連付けられ選択された入力キューにそれぞれ入力させ、
前記命令が前記プロセッサに、他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送らせる、非一時的なコンピュータ可読媒体。
【請求項２０】
前記命令が、前記プロセッサに、
1つまたは複数のALGプロセスにそれぞれ関連付けられた1つまたは複数のルールを識別するルールデータベースを維持させ、
前記選択されたALGプロセスを決定するために、前記1つまたは複数のルールのうちのどれが前記パケットによって満たされるかを決定させるように
構成されている、請求項19に記載のコンピュータ可読媒体。
【請求項２１】
前記命令が、前記プロセッサに、前記接続データベースにおける接続とALGプロセスとの関連を維持させるように構成されている、請求項19に記載のコンピュータ可読媒体。
【請求項２２】
前記命令が、前記プロセッサに、前記パケットに実施されることになる前記選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットヘッダおよびパケットペイロードのうちの少なくとも1つをディープスキャンさせるように構成されている、請求項19に記載のコンピュータ可読媒体。
【請求項２３】
前記命令が、前記プロセッサに、
前記選択されたALGエンジンから処理されたパケットを受信させ、
前記処理されたパケットを前記NAT処理モジュールに送らせるように
構成されている、請求項19に記載のコンピュータ可読媒体。
【請求項２４】
前記命令が、前記プロセッサに、前記選択されたALGエンジンに関連付けられ選択された出力キューから、前記処理されたパケットをそれぞれ受信させるように構成されている、請求項23に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、ワイヤレス通信システムの動作に関し、より詳細には、効率的なパケットルーティングに関する。
【背景技術】
【０００２】
ネットワークアドレス変換(NAT)は、ネットワークの使用可能なアドレス空間を拡大するために使用される。一実装形態において、NATモジュールは、データパケットのIP/トランスポートヘッダ情報のみを変換する。ネットワークIP/ポート情報は、NATモジュールによって変換されないので、これは、この情報をデータパケットペイロードにおいてそのピアに伝達するアプリケーションに影響を与える。NATモジュールは、これらのIP/ポートでの着信パケット接続を拒否することがあるので、このことは、ドロップするパケットを招く。
【０００３】
アプリケーションレベルゲートウェイ(ALG)は、アプリケーションペイロードに埋め込まれたIP/ポート情報を、NAT外部IP/ポートに変換することによって、アプリケーション固有のNATトラバーサル(traversal)を可能にする。ALGは、NATモジュールと対話して、着信データ接続を可能にする、または、NATモジュールの背後にあるアプリケーションを外部領域のピアと通信させるのに必要な他の動作を実施することができる。
【０００４】
残念ながら、従来のシステムにおいて、ALGは、アプリケーション固有であり、埋め込まれたIP/ポート情報を探してアプリケーションペイロードを構文解析するときに、大幅な処理の遅延をもたらすことがある。これらの遅延は、NAT処理経路に直接もたらされる場合、すべてのパケットフローに影響を与え、ラウンドトリップタイム(RTT)の過度の増加を招くことがあり、結果としてやはり、全体的なスループットを低下させることになる。加えて、ワイヤレス埋め込みデバイス(またはモバイルルータ)は、CPU帯域幅が限定されており、このことは、NAT処理の増加が包括的なシステムパフォーマンスに影響を与えることになることを含意する。さらに、ALG追加のために増加したNAT処理はまた、モバイルルータにより多くの電力を消費させ、より速いバッテリの消耗および頻繁な充電を招くことになる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、上で説明したような従来のシステムに関連付けられた問題を克服するために、効率的なNATおよびALG処理を提供するシステムを有することが望ましい。
【課題を解決するための手段】
【０００６】
1つまたは複数の例示的な実施形態において、ルータ、たとえばモバイルルータにおけるNAT-ALG処理の効率を向上させるための、装置および方法を含むシステムが提供される。例示的な一実施形態において、特定の接続のパケットを、選択されたALG処理に関連付けるデータベースが維持される。追加のパケットを受信すると、各パケットに必要とされるALG処理がデータベースから容易かつ迅速に決定され、したがって、そのALG処理要件を決定するために、各パケットをディープスキャンし、ALGルールをルックアップする必要性をなくすことができる。各ALGプロセスはまた、その独自の入力/出力キューを含み、したがって、NAT処理効率をさらに増加させる。
【０００７】
一態様において、パケットルーティングのための方法が提供され、方法は、選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットをディープスキャンするステップと、選択された接続を、選択されたALGプロセスに関連付けるステップと、追加のパケットのディープスキャニングが回避されるように、前記関連付けるステップに基づいて選択されたALGプロセスを受けるために、選択された接続上で受信した追加のパケットを転送するステップとを含む。
【０００８】
一態様において、パケットルーティングのための装置が提供され、装置は、選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットをディープスキャンするように構成されたプロセッサと、選択された接続を、選択されたALGプロセスに関連付けるように構成されたデータベースと、追加のパケットのディープスキャニングが回避されるように、前記関連付けに基づいて選択されたALGプロセスを受けるために、選択された接続上で受信した追加のパケットを転送するように構成されたパケット送信部とを含む。
【０００９】
一態様において、パケットルーティングのための装置が提供され、装置は、選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットをディープスキャンするための手段と、選択された接続を、選択されたALGプロセスに関連付けるための手段と、追加のパケットのディープスキャニングが回避されるように、前記関連付けに基づいて選択されたALGプロセスを受けるために、選択された接続上で受信した追加のパケットを転送するための手段とを含む。
【００１０】
一態様において、パケットルーティングのためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットをディープスキャンし、選択された接続を、選択されたALGプロセスに関連付け、追加のパケットのディープスキャニングが回避されるように、前記関連付けに基づいて選択されたALGプロセスを受けるために、選択された接続上で受信した追加のパケットを転送するための、プロセッサによって実行可能な命令を具体化する非一時的なコンピュータ可読媒体を含む。
【００１１】
他の態様は、以下に述べる図面の簡単な説明、発明を実施するための形態、および特許請求の範囲の再検討の後、明らかとなるだろう。
【００１２】
本明細書で説明する上述した態様は、添付の図面と併用する際に、下記の発明を実施するための形態を参照することによって、よりたやすく明らかとなるだろう。
【図面の簡単な説明】
【００１３】
【図１】ルータにおいて使用するための従来のNAT構成を示す図である。
【図２】効率的なNATおよびALG処理のための装置の例示的な実施形態を示す図である。
【図３】例示的なNATルックアップモジュールを示す図である。
【図４】例示的な分類モジュールを示す図である。
【図５】例示的なルールデータベースを示す図である。
【図６】例示的な接続データベースを示す図である。
【図７】増加した効率を提供するために、パケットスキャニング要件およびALGルールのためのテーブルルックアップを削減するNAT処理を実施するための例示的な方法を示す図である。
【図８】パケットの分類および送信のための例示的な方法を示す図である。
【図９】例示的なNATルックアップ装置を示す図である。
【図１０】例示的なパケット分類装置を示す図である。
【図１１】パケットスキャニング要件を削減するNAT処理を実施するための例示的な方法を示す図である。
【図１２】パケットの分類のおよび送信のための例示的な方法を示す図である。
【発明を実施するための形態】
【００１４】
下記の記述は、ルータ、たとえばモバイルルータにおけるNAT-ALG処理の効率を向上させるための、装置および方法を含むシステムについて説明する。システムは、モバイルデバイスとの使用に特によく適しているが、ルータとして動作する任意のタイプのデバイスと使用されてよい。
【００１５】
図1は、ルータにおいて使用するための従来のNAT構成100を示す。構成100は、ローカルエリアネットワーク(LAN)接続104上でパケットを受信し、送信するNAT装置102を含む。NAT装置102は、NATルックアップモジュール106と、1つまたは複数のALGエンジン108と、NAT処理モジュール110とを含む。
【００１６】
動作中、LANから受信したパケットは、NATルックアップモジュール106へと流れ、NATルックアップモジュール106で、パケットは、(もしあれば)どのALG処理が実施されることになるかを決定するためにスキャンされる。たとえば、ALG処理は、パケットをルーティングする際に使用されることになる、パケットのペイロードからの任意のアプリケーション仕様情報を決定するよう動作する。スキャンの後、パケットは次いで、適切なALGエンジン108に渡される。ALGエンジン108による処理の後、パケットは、NAT処理モジュール110へと流れ、NAT処理モジュール110で、パケットのための宛先ルーティングアドレスが決定される。パケットは次いで、ワイドエリアネットワーク(WAN)接続上112上で宛先アドレスに送信される。反対方向に移動するパケットについては、プロセスが逆になる。
【００１７】
NAT構成100は、パケットがNATデータ経路において直接処理されるので、ALG処理を実施するための準最適構成を図示している。ALGエンジンによって処理されているパケットは、着信キューで待っている他のパケットの処理において遅延を引き起こすことがあり、このことは、着信キューの増大を招き、したがって、すべてのパケットのフローのRTTを増加させる。ALG処理タスクが十分な速さでない場合、キューは急速に増大して、パケットドロップの結果となり得る。TCP接続では、これは、考え得るタイムアウトおよびバックオフになり、最終的にはより低いスループットになる。持続的な同期処理もまた、CPUの非効率的な使用を引き起こし、したがって、システムのアイドル時間を削減し、バッテリ消耗を増加させる。
【００１８】
図2は、効率的なNATおよびALG処理のためのシステム200の例示的な実施形態を示す。様々な実装形態において、ALG処理は、LANおよびWWAN処理に対して、または任意のタイプの接続に関連付けられたパケットの処理に対して、対称的/非対称的に置かれてよい。システム200は、ALG処理を非同期にして、少なくとも下記の4つの主要な機能を実施する。
1. パケットルックアップ
2. 分類および非同期パケットハンドリング
3. ペイロード変換
4. パケットルーティング
【００１９】
システム200は、NATルックアップモジュール202と、分類および非同期パケットハンドラ206(「パケットハンドラ」とも呼ばれる)と、NAT処理モジュール212とを含む。システム200はまた、1つまたは複数のALGエンジン208を含み、各ALGエンジンは、関連付けられた入力/出力キュー210を含む。
【００２０】
NATルックアップモジュール202は、固有のアプリケーションに関連付けられたパケットがどのように処理されることになるかについてのルールで初期化される。たとえば、各ALGエンジン208は、ルールデータベースがNATルックアップモジュール202で維持され得るように、ルール情報をNATルックアップモジュール202に提供する。ルールデータベースは、様々なパケットタイプを定義する一組のルールを含み、各組のルールは、関連付けられたパケットタイプを処理するために使用されることになる対応するALGエンジンに関連付けられる。任意の他の入力を使用して、たとえば、ユーザ入力を通して、または他のネットワークエンティティから受信した情報を使用することによって、ルールデータベースを初期化、更新、または維持することができる。
【００２１】
NATルックアップモジュール202はまた、接続データベースを含む。接続データベースは、特定の接続のパケットを、特定のALGエンジンに関連付ける。これにより、特定の接続のパケットを、その接続に関連付けられたパケットごとにディープスキャンする必要なしに、適切なALGエンジンに効率的に渡すことが可能になる。
【００２２】
例示的な動作中、NATルックアップモジュール202は、LAN 204から、ワイヤレスWAN 214にルーティングされることになるパケットを受信する。NATルックアップモジュール202は最初に、受信したパケットが、接続データベースにおいてすでに識別された接続に関連付けられているかどうかを決定する。パケットが接続データベースにおいて識別されたいずれの接続にも関連付けられていない場合、パケットは、新たな接続の第1のパケットとして扱われる。パケットが新たな接続の第1のパケットであると想定すると、パケットは、そのパケットに必要とされるALG処理を決定するためにディープスキャンされる。たとえば、ディープスキャン中、パケットペイロードまたは任意の他のパケット情報が、パケットに関する情報を決定するためにスキャンされる。パケットのディープスキャニングから得られた情報は、そのパケットに必要とされるALG処理のタイプを決定するために、ルールデータベースと相互参照される。次いで接続データベースが更新されて、この特定の接続のパケットを、特定のALGエンジンに関連付ける。パケットは、所望のALG処理を識別する情報でタグ付けされて、次いで適切なALG処理を実施するために、パケットハンドラ206に渡される。
【００２３】
その接続の追加のパケットがNATルックアップモジュール202によって受信されると、パケットを処理するために使用されることになるALGエンジンを決定するために、パケットは接続データベースと照合される。その接続の各追加のパケットは、接続データベースから決定された所望のALG処理を識別する情報でタグ付けされる。また追加のパケットは次いで、適切なALG処理を実施するために、パケットハンドラ206に渡される。したがって、特定の接続の第1のパケットからの情報で接続データベースが更新されると、その接続に関連付けられたすべての他のパケットは、各追加のパケットをディープスキャンする必要なしに、適切なALG処理のために、識別され、パケットハンドラ206に渡されてよい。いくつかのケースでは、パケットは、いずれのALG処理も必要とせず、それらのパケットは、ALG処理が必要でないことを示すようにタグ付けされることになり、それらのパケットは、ルーティングのためにNAT処理モジュールに渡されることになる。このようにして、NATルックアップモジュール202は、様々な接続からのパケットを受信することができ、接続データベースを使用して、各識別された接続の追加のパケットをディープスキャンする必要性を回避しながら、それらのパケットを適切なALG処理へと効率的にルーティングすることができる。
【００２４】
パケットハンドラ206は、ALGエンジン208への/ALGエンジン208からのパケットの流れと、NAT処理モジュール212へのパケットの流れとを調整するよう動作する。パケットハンドラ206は、ALG処理に向かうパケットを受信し、それらのパケットを、所望のALG処理エンジン208に関連付けられた特定のキュー210にルーティングする。例示的な実施形態において、入力および出力キュー210は、ALGエンジンごとに提供される。たとえば、各キューは、先入先出(FIFO: first-in-first-out)キューとして、または任意の他のタイプの適したキューとして構成されてよい。キューは、各エンジンによって処理されることになるパケットのために一時的な記憶を提供し、各エンジンによって処理されたパケットのために一時的な記憶を提供する。個々のキューは、使用するキューがなくて、任意の特定のALG処理が完了するのを待つことをシステムが強制された場合に発生し得るボトルネックを、削減する、または排除するよう動作する。
【００２５】
パケットハンドラ206はまた、キュー210から、ALGエンジン208によって処理されたパケットを受信する。パケットハンドラ206は、これらのパケットを、いずれのALG処理も必要としない、NATルックアップモジュール202からのパケットと組み合わせて、NAT処理モジュール212へと流れるパケットのストリームを形成する。このようにして、パケットハンドラ206は、非同期マルチ処理を実施して、ALGエンジンがパケットを処理するのを可能にし、NAT処理モジュール212へと送信されるパケットのストリームを形成するよう動作する。NAT処理モジュール212は、ワイヤレスWANネットワーク214上のエンティティへの/エンティティからのパケットをルーティングするよう動作する。結果として、システムにおけるボトルネットが削減され、または排除されて、CPUおよびバッテリリソースは、より効率的に利用される。
【００２６】
図3は、例示的なNATルックアップモジュール300を示す。たとえば、NATルックアップモジュール300は、図2に示したNATルックアップモジュール202での使用に適している。NATルックアップモジュール300は、プロセッサ302と、ルールデータベース304と、接続データベース306と、パケット送信部308と、パケット受信部310とを含み、それらのすべてがバス312上で通信するように結合されている。NATルックアップモジュール300は一実装形態にすぎず、他の実装形態も可能であることに留意されたい。
【００２７】
パケット受信部310は、NATルックアップモジュール300がLANなどのネットワークからパケットを受信するのを可能にするよう動作する、ハードウェアおよび/またはソフトウェアを実行するハードウェアを含む。
【００２８】
ルールデータベース304は、受信したパケットのALG処理に関連付けられたルールを、記憶し、取り出し、維持するのを可能にする、任意の適したメモリまたは記憶デバイスを含む。たとえば、初期化プロセス中、各ALGエンジンに関連付けられたルールは、NATルックアップモジュール300に提供され、ルールデータベース304に記憶される。動作中、ルールデータベース304は、特定のパケットに必要とされるALG処理のタイプを決定するために利用される。したがって、ALG処理のタイプは、特定の組のルールを満たす任意のパケットのために決定されてよい。
【００２９】
接続データベース306は、接続/パケットとALG処理エンジンとの関連を記憶し、取り出し、維持するのを可能にする、任意の適したメモリまたは記憶デバイスを含む。接続データベース306は、プロセッサ302によって維持され、接続/パケットとALG処理エンジンとの関連を反映するように継続的に更新される。たとえば、新たな接続に関連付けられた第1のパケットを受信すると、プロセッサ302は、必要とされるALG処理を決定するためにパケットをディープスキャンし、その接続と、必要とされるALG処理との関連を接続データベース306に記憶する。接続データベース306を使用して、その接続で受信した任意の追加のパケットを処理するための適切なALGエンジンが、各追加のパケットをディープスキャンする必要なしに、効率的に決定され、したがって、追加のパケットのディープスキャニングを回避することができる。
【００３０】
パケット送信部308は、NATルックアップモジュール300が、図2に示したパケットハンドラ206などのパケットハンドラにパケットを送信するのを可能にするよう動作する、ハードウェアおよび/またはソフトウェアを実行するハードウェアを含む。
【００３１】
プロセッサ302は、CPU、プロセッサ、ゲートアレイ、ハードウェアロジック、メモリ素子、および/またはソフトウェアを実行するハードウェアのうちの、少なくとも1つを含む。プロセッサ302は、本明細書で説明する機能を実施するために、NATルックアップモジュール300を制御するよう動作する。たとえば、プロセッサ302は、ルールデータベース304に記憶されたルールを受信するために、ALGエンジンと通信するための任意の適切なインターフェースを使用するよう動作する。プロセッサ302はまた、パケット受信部310によって受信された接続ごとの第1のパケットをディープスキャンし、パケットに必要とされるALG処理のタイプをルールデータベース304から決定するよう動作する。プロセッサ302は次いで、接続データベース306を更新して、その接続に関連付けられたパケットが、処理のために決定されたALGエンジンに渡されることになることを示す。さらに、プロセッサ302は、各パケットに適用されることになるALG処理があれば、そのタイプを示す接続データベースからの情報でパケットをタグ付けする。プロセッサ302は次いで、タグ付きパケットを図2に示したパケットハンドラ206などのパケットハンドラに送信するように、パケット送信部308を制御する。NATルックアップモジュール300の動作のより詳細な説明を以下に提供する。
【００３２】
図4は、例示的なパケットハンドラ400を示す。たとえば、パケットハンドラ400は、図2に示したパケットハンドラ206としての使用に適している。パケットハンドラ400は、プロセッサ402と、NATルックアップインターフェース404と、NAT処理インターフェース406と、パケット送信部408と、パケット受信部410とを含み、それらのすべてがバス412上で通信するように結合されている。パケットハンドラ400は一実装形態にすぎず、他の実装形態も可能であることに留意されたい。
【００３３】
NATルックアップインターフェース404は、CPU、プロセッサ、ゲートアレイ、ハードウェアロジック、メモリ素子、および/またはソフトウェアを実行するハードウェアのうちの、少なくとも1つを含む。NATルックアップインターフェース404は、NATルックアップモジュール、たとえば、図2に示したNATルックアップモジュール202、または図3に示したNATルックアップモジュール300との通信を提供する。NATルックアップインターフェース404は、NATルックアップモジュールから、タグ付きパケットを受信するよう動作する。タグ付きパケットは、各パケットに実施されることになるALG処理のタイプを示す。
【００３４】
パケット送信部408は、CPU、プロセッサ、ゲートアレイ、ハードウェアロジック、メモリ素子、および/またはソフトウェアを実行するハードウェアのうちの、少なくとも1つを含む。パケット送信部408は、利用可能なALGエンジンとの通信を提供する。たとえば、ALG処理が必要であるパケットは、所望のALGエンジンに関連付けられた適切なキュー(すなわち、キュー210)に送信される。各キューに入るパケットは、関連付けられたALGエンジンによって、順番に処理されることになる。
【００３５】
パケット受信部410は、CPU、プロセッサ、ゲートアレイ、ハードウェアロジック、メモリ素子、および/またはソフトウェアを実行するハードウェアのうちの、少なくとも1つを含む。パケット受信部410は、利用可能なALGエンジン/キューとの通信を提供する。たとえば、ALGエンジンに関連付けられた適切なキュー(すなわち、キュー210)から、処理されたパケットが受信される。
【００３６】
NAT処理インターフェース406は、パケットハンドラ400が、図2に示したNAT処理モジュール212などのNAT処理モジュールにさらなるルーティングのためにパケットを送信するのを可能にするよう動作する、ハードウェアおよび/またはソフトウェアを実行するハードウェアを含む。
【００３７】
プロセッサ402は、CPU、プロセッサ、ゲートアレイ、ハードウェアロジック、メモリ素子、および/またはソフトウェアを実行するハードウェアのうちの、少なくとも1つを含む。プロセッサ402は、本明細書で説明する機能を実施するために、パケットハンドラ400を制御するよう動作する。たとえば、プロセッサ402は、ALG処理のためにタグ付きパケットを受信するために、インターフェース404を使用してNATルックアップモジュールと通信するよう動作する。プロセッサ402はまた、処理のためのパケットを適切なALGキューに送信するように、パケット送信部408を制御する。プロセッサはまた、ALGキューから処理されたパケットを受信するように、パケット受信部410を制御し、これらの処理されたパケットをNAT処理モジュールに送信するように、NAT処理インターフェース406を制御する。いくつかのケースにおいて、ALG処理が必要でないパケットは、インターフェース404によって受信されてもよい。プロセッサ402は、これらのパケットのためのALG処理を回避し、パケットをNAT処理モジュールに送信するように、NAT処理インターフェース406を制御する。パケットハンドラ400の動作のより詳細な説明を以下に提供する。
【００３８】
NATルックアップモジュール300およびパケットハンドラ400は、別々のエンティティとして説明されているが、これらのモジュールを単一のモジュールまたはエンティティの中に組み合わせることもまた可能であることに留意されたい。さらに、各モジュールの機能は、1つまたは複数の様々な実施形態において所望されるように、再配置または再配分されてもよい。
【００３９】
図5は、例示的なルールデータベース500を示す。たとえば、ルールデータベース500は、図3に示したルールデータベース304を表す。ルールデータベース500は、ルールを識別する3つの列(ルール1〜ルール3)を含み、ルールが満たされるとき、特定のパケットタイプ502を識別する。たとえば、「X」は、関連付けられたルールが満たされていることを示す。したがって、第1のパケットタイプは、いずれのルールも満たさないことを定義され、第4のパケットタイプは、ルール1およびルール2を満たすが、ルール3は満たさないことを定義される。任意の特定のパケットタイプを分類する、または定義するために、より多いまたはより少ないルールが指定されてもよく、ルールの任意の所望の組合せ(AND、OR、NOT、その他)が使用されてもよいことに留意されたい。たとえば、FTPプロトコルパケットのALG処理を定義するために、ルールデータベース500において下記の2つのルールが指定されてもよい。
ルール1  次のプロトコルがTCPであるべきである(AND)
ルール2  TCP宛先ポート21
【００４０】
第4の列504は、各パケットタイプに関連付けられ、かつ各パケットタイプを処理するために使用されることになる、ALGエンジンを識別している。選択されたパケットタイプがALG処理が必要でないことも可能であることに留意されたい。さらに、異なる接続に関連付けられたパケットが、同じ組のルールを満たし、同じALGエンジンによって処理されることもまた可能である。
【００４１】
図6は、例示的な接続データベース600を示す。たとえば、接続データベース600は、図3に示した接続データベース306を表す。接続データベース600は、接続識別子602を提供する第1の列と、各接続識別子に関連付けられたALGエンジン604を提供する第2の列とを含む。
【００４２】
動作中、各接続の第1のパケットを受信すると、新たな接続識別子が、接続データベースの中でその接続に関連付けられる。第1のパケットは次いで、ALG処理要件を決定するためにディープスキャンされる。たとえば、ルールデータベース500は、ディープスキャンから決定された情報と相互参照されて、そのパケットが満たすルール、および関連付けられたALGエンジンを決定する。決定されたALGエンジンは次いで、接続データベース600の中の接続識別子に関連付けられる。したがって、その接続の追加のパケットを受信すると、接続データベース600がアクセスされて、各追加のパケットをディープスキャンする必要なしに、それらのパケットに必要とされるALG処理を効率的に決定する。
【００４３】
選択された接続識別子について、ALG処理要件が存在しないことが可能であることに留意されたい。異なる接続に関連付けられたパケットが、そのパケットを処理するために同じALG処理エンジンが必要であることもまた可能である。たとえば、接続データベース600において、接続1に関連付けられたパケットは、ALG処理を必要とせず、接続2および6に関連付けられたパケットは、同じALGエンジン(すなわち、ALGエンジン1)による処理が必要である。
【００４４】
図7は、増加した効率を提供するために、パケットスキャニング要件およびALGルールのためのテーブルルックアップを削減するNAT処理を実施するための、例示的な方法700を図示する。たとえば、方法700は、図3に示したNATルックアップモジュール300による使用に適している。一実装形態において、プロセッサ302は、1つもしくは複数の組のコードまたは命令を実行して、以下で説明する機能を実施するように、ルックアップモジュール300を制御する。
【００４５】
ブロック702で、ALGルールのデータベースが維持される。たとえば、プロセッサ302は、1つもしくは複数のALGエンジンによって、ユーザ入力によって、または他の手段によって提供されたルールを維持するために、ルールデータベース304を維持する。ルールは、特定のパケットタイプ(すなわち、固有の組のルールを満たすパケット)のパケットを処理するためにどのALGエンジンが使用されることになるかを決定する。ルールデータベース304は、初期化され、次いでALGエンジンの数および/またはタイプが変わるとき、ならびにルールが変わるときに、プロセッサ302によって継続的に更新されてよい。
【００４６】
ブロック704で、パケット/接続のデータベースが維持される。たとえば、プロセッサ302は、接続/パケットと、それらの接続のパケットを処理するために利用されることになるALG処理との関係を維持するために、接続データベース306を維持する。
【００４７】
ブロック706で、パケットが受信され、たとえば、パケットは、LANからWWANへとルーティングするためにNATルックアップモジュール202で受信される。一実装形態において、パケットは、パケット受信部310によって受信され、プロセッサ302に渡される。
【００４８】
ブロック708で、受信したパケットが、接続データベースの中で識別された接続に関連付けられるかどうかについての決定が行われる。たとえば、プロセッサ302は、パケットヘッダまたはパケットもしくは接続に関する他の情報を評価し、この情報を接続データベース306の中の情報と比較することによって、この決定を行う。パケットが接続データベース306の中にない接続に関連付けられる場合、パケットは、新たな接続の第1のパケットであると決定され、方法は、ブロック712へと進む。パケットが接続データベース306の中で識別された接続に関連付けられる場合、パケットは、既存の接続に関連付けられると決定され、方法は、ブロック718へと進む。
【００４９】
ブロック712で、受信したパケットは、ルールデータベース304と相互参照され得るパケットに関する情報を決定するために、ディープスキャンされる。たとえば、プロセッサ302は、パケットをディープスキャンして、そのパケットがルールデータベース304の中のルールのいずれかを満たすかどうかを決定するために使用され得るパケットに関する情報を決定するために、パケットのヘッダ、ペイロード、および/またはパケットの他の態様から、情報を決定する。プロセッサ302は、ディープスキャンからの情報を使用して、ルールデータベース304の中のどのルールがパケットによって満たされるかを決定し、その結果、パケットタイプを決定する。
【００５０】
ブロック714で、パケットに必要とされるALG処理を決定するために、ルールルックアップが実施される。パケットタイプ(すなわち、どのルールが満たされるか)が決定されると、プロセッサ302は、ルールデータベース304からそのパケットに必要とされるALG処理を決定する。
【００５１】
ブロック716で、接続データベースが更新される。パケットのためのALGエンジンが決定されると、接続データベース306の中の新たなエントリが追加され、新たなエントリは、接続を識別し、その接続に関連付けられたパケットを処理するために使用されることになる関連付けられたALG処理を識別する。接続データベース306が新たな接続で更新されると、接続エントリの存続期間の間、その接続に関連付けられた追加のパケットのさらなるディープパケットスキャニングは、実施される必要がない。これは、処理時間を節約し、その接続の追加のパケットのディープスキャニングを回避する。
【００５２】
ブロック718で、パケットは、各パケットに必要とされるALG処理のタイプを識別する接続データベースからの情報でタグ付けされる。たとえば、一実施形態において、接続識別子および関連付けられたALGエンジン識別子が、パケットに追加される。したがって、あらゆるパケットは、そのパケットに必要とされるALG処理を識別する情報でタグ付けされる。ALG処理が必要でない場合、パケットに関連付けられるタグがない、またはALG処理なしを示す固有のタグがパケットに関連付けられるかのいずれかである。
【００５３】
ブロック720で、パケットは処理のために送られる。たとえば、プロセッサ302は、図4に示したパケットハンドラ400などの分類および非同期パケットハンドラにパケットを転送するように、パケット送信部308を制御する。
【００５４】
したがって、方法700は、パケットごとにディープスキャンする必要なしに、ALG処理のためのパケットを受信し、識別するよう動作する。方法700は一実装形態にすぎず、方法700の動作は、他の実装形態が可能であるように、再配置される、または別のやり方で変更されてもよいことに留意されたい。
【００５５】
図8は、非同期分類およびパケットハンドリングのための例示的な方法800を示す。わかりやすくするため、方法800を、パケットハンドラ400を参照して以下で説明する。たとえば、方法800は、パケットの非同期並列およびマルチタスキングALG処理を提供する。たとえば、並列で実施され得る2つのプロセスが示される。これらの非同期処理は、下記を提供する。
1. キューがより敏速に処理されるにつれ、パケットフローのためのRTTを下げ、結果として、キューにおけるパケットドロップの可能性を少なくし、エンド間のスループットが増加する
2. 任意の単一のタスクによるより少ないCPU使用量
3. パケット処理がより小さいユニットに分割されることにより、複数のタスクを並列処理できるので、CPU効率が増加し、システムのアイドル時間が増加し、したがって、バッテリ電力消費が大幅に削減される
【００５６】
一実装形態において、プロセッサ402は、1つもしくは複数の組のコードまたは命令を実行して、以下で説明する機能を実施するように、パケットハンドラ400を制御する。
【００５７】
ブロック802で、第1のプロセスが、NATルックアップモジュールからタグ付きパケットを受信することによって開始される。たとえば、タグ付きパケットは、図2に示したNATルックアップモジュール202、または図3に示したNATルックアップモジュール300から受信される。パケットは、そのパケットに必要とされるALG処理のタイプを示す情報でタグ付けされる、または情報に関連付けられる。パケットはまた、ALG処理が必要でないことをタグ付けされても、または別のやり方でALG処理が必要でないことを示してもよい。
【００５８】
ブロック804で、受信したパケットにALG処理が必要であるかどうかについての決定が行われる。たとえば、プロセッサ402は、パケットタグを調べてALG処理が必要であるか否かを決定し、必要である場合は、どのタイプのALG処理が必要であるかを決定する。パケットタグがALG処理が必要でないことを示す場合、方法は、ブロック810へと進む。パケットタグがALG処理が必要であることを示す場合、方法は、ブロック806へと進む。
【００５９】
ブロック810で、パケットはNAT処理のために送られる。たとえば、パケットは、さらなる処理およびルーティングのために、NAT処理モジュール212に送られる。たとえば、プロセッサ402は、パケットをNAT処理モジュール212に送るように、NAT処理インターフェース406を制御する。
【００６０】
ブロック806で、パケットは、パケットのタグから決定された適切なALGエンジンに転送される。一実施形態において、各ALGエンジンは、入力および出力キューを含み、入力および出力キューは、ALGエンジンが、パケットを受信した順番に、複数の接続に関連付けられたパケットを処理するのを可能にする。ALG処理が完了するのを待っている間、システムはパケット処理を中断する、または遅延させる必要がないので、キューの使用は、NAT処理を解放する。たとえば、選択されたパケットが適切なALGキューに入力されると、選択されたパケットがALGエンジンによって処理されている間に、追加のパケットのハンドリングを続行することができる。このタイプのマルチタスキングは、エンド間のRTTへの影響を削減するのに役立つ。
【００６１】
プロセッサ402は、パケットを適切なALGエンジンキューに送るように、パケット送信部408を制御する。ALGエンジンは、その受信キューにあるパケットを通知され、ALGエンジンがパケットを処理するとき、プロトコル定義に従って、パケットのアプリケーションペイロードを変換する。ALG処理が完了した後、ALGエンジンは、パケットをその出力キューの中に入れる。
【００６２】
ブロック808で、処理の後、処理されたパケットをALGエンジンから受信する、第2のプロセスが開始される。たとえば、処理されたパケットは、パケット受信部410によって受信され、プロセッサ402に渡される。方法は次いで、上で説明したように処理されたパケットがNAT処理のために送られる、ブロック810へと進む。
【００６３】
したがって、方法800は、パケットハンドラによって実施される2つのプロセスを提供する。第1のプロセスでは、NATルックアップモジュールから受信したパケットが、ALG処理のために選択されたALGエンジンに向けられる。第2のプロセスでは、ALG処理されたパケットおよびALG処理が必要でない任意のパケットが、さらなる処理のためにNAT処理モジュールに送信される。方法800は一実装形態にすぎず、方法800の動作は、他の実装形態が可能であるように、再配置される、または別のやり方で変更されてもよいことに留意されたい。
【００６４】
図9は、例示的なNATルックアップ装置900を示す。たとえば、NATルックアップ装置900は、図3に示したNATルックアップモジュール300としての使用に適している。一態様において、NATルックアップ装置900は、本明細書で説明するようなNATルックアップモジュールの態様を提供するように構成された1つまたは複数のモジュールを含む、少なくとも1つの集積回路によって実装される。たとえば、一態様において、各モジュールは、ハードウェアおよび/またはソフトウェアを実行するハードウェアを含む。
【００６５】
NATルックアップ装置900は、第1のモジュールを含み、第1のモジュールは、選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットをディープスキャンするための手段(902)を含み、一態様において、手段は、プロセッサ302を含む。NATルックアップ装置900はまた、第2のモジュールを含み、第2のモジュールは、選択された接続を選択されたALGプロセスに関連付けるための手段(904)を含み、一態様において、手段は、接続データベース306を含む。NATルックアップ装置900はまた、第3のモジュールを含み、第3のモジュールは、前記関連付けに基づいて選択されたALGプロセスを受けるために、選択された接続上で受信した追加のパケットを転送するための手段(906)であって、追加のパケットのディープスキャニングが回避される、転送するための手段(906)を含み、一態様において、手段は、プロセッサ302を含む。
【００６６】
図10は、例示的な分類装置1000を示す。たとえば、分類装置1000は、図4に示した分類モジュール400としての使用に適している。一態様において、分類装置1000は、本明細書で説明したような分類およびパケットハンドラの態様を提供するように構成された1つまたは複数のモジュールを含む、少なくとも1つの集積回路によって実装される。たとえば、一態様において、各モジュールは、ハードウェアおよび/またはソフトウェアを実行するハードウェアを含む。
【００６７】
分類装置1000は、第1のモジュールを含み、第1のモジュールは、タグ付きパケットを受信するための手段(1002)を含み、一態様において、手段は、NATルックアップインターフェース404を含む。分類装置1000はまた、第2のモジュールを含み、第2のモジュールは、各タグ付きパケットに関連付けられたALG処理情報に基づいて、各タグ付きパケットにいずれかのALG処理が必要であるかどうかを決定するための手段(1004)を含み、一態様において、手段は、プロセッサ402を含む。分類装置1000はまた、第3のモジュールを含み、第3のモジュールは、選択されたタグ付きパケットにALG処理が必要であると決定された場合にALG処理を受けるために、選択されたタグ付きパケットを、選択されたALGエンジンにそれぞれ渡すための手段(1006)を含み、一態様において、手段は、パケット送信部408を含む。分類装置1000はまた、第4のモジュールを含み、第4のモジュールは、他のタグ付きパケットにALG処理が必要でないと決定された場合に、他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るための手段(1008)を含み、一態様において、手段は、NAT処理インターフェース406を含む。
【００６８】
図11は、増加した効率を提供するために、パケットスキャニング要件およびALGルールのためのテーブルルックアップを削減するNAT処理を実施するための、例示的な方法1100を図示する。たとえば、方法1000は、図3に示したNATルックアップモジュール300による使用に適している。一実装形態において、プロセッサ302は、1つもしくは複数の組のコードまたは命令を実行して、以下で説明する機能を実施するように、ルックアップモジュール300を制御する。
【００６９】
ブロック1102で、選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットがディープスキャンされる。たとえば、受信したパケットは、ルールデータベース304と相互参照され得るパケットに関する情報を決定するために、ディープスキャンされる。たとえば、プロセッサ302は、パケットをディープスキャンして、そのパケットがルールデータベース304の中のルールのいずれかを満たすかどうかを決定するために使用され得るパケットに関する情報を決定するために、パケットのヘッダ、ペイロード、および/またはパケットの他の態様から、情報を決定する。プロセッサ302は、ディープスキャンからの情報を使用して、ルールデータベース304の中のどのルールがパケットによって満たされるかを決定し、その結果、パケットタイプを決定する。
【００７０】
ブロック1104で、選択された接続が、選択されたALGプロセスに関連付けられ、接続データベースが更新される。パケットのためのALGエンジンが決定されると、接続データベース306の中の新たなエントリが追加され、新たなエントリは、接続を識別し、その接続に関連付けられたパケットを処理するために使用されることになる関連付けられたALG処理を識別する。接続データベース306が新たな接続で更新されると、接続エントリの存続期間の間、その接続に関連付けられた追加のパケットのさらなるディープパケットスキャニングは、実施される必要がない。これは、処理時間を節約し、その接続の追加のパケットのディープスキャニングを回避する。
【００７１】
ブロック1106で、追加のパケットのディープスキャニングが回避されるように、接続データベース306の中の関連に基づいて選択されたALGプロセスを受けるために、選択された接続上で受信した追加のパケットが転送される。たとえば、プロセッサ302は、図4に示したパケットハンドラ400などの分類および非同期パケットハンドラにパケットを転送するように、パケット送信部308を制御する。
【００７２】
したがって、方法1100は、パケットごとにディープスキャンする必要なしに、ALG処理のためのパケットを受信し、識別するよう動作する。方法1100は一実装形態にすぎず、方法1100の動作は、他の実装形態が可能であるように、再配置される、または別のやり方で変更されてもよいことに留意されたい。
【００７３】
図12は、分類およびパケットハンドリングのための例示的な方法1200を示す。わかりやすくするため、方法1200を、パケットハンドラ400を参照して以下で説明する。一実装形態において、プロセッサ402は、1つもしくは複数の組のコードまたは命令を実行して、以下で説明する機能を実施するように、パケットハンドラ400を制御する。
【００７４】
ブロック1202で、NATルックアップモジュールからタグ付きパケットが受信される。たとえば、タグ付きパケットは、図2に示したNATルックアップモジュール202、または図3に示したNATルックアップモジュール300から受信される。パケットは、そのパケットに必要とされるALG処理のタイプを示す情報でタグ付けされる、または情報に関連付けられる。パケットはまた、ALG処理が必要でないことをタグ付けされても、または別のやり方でALG処理が必要でないことを示してもよい。
【００７５】
ブロック1204で、受信したパケットにALG処理が必要であるかどうかについての決定が行われる。たとえば、プロセッサ402は、パケットタグを調べてALG処理が必要であるか否かを決定し、必要である場合は、どのタイプのALG処理が必要であるかを決定する。パケットタグがALG処理が必要でないことを示す場合、方法は、ブロック1208へと進む。パケットタグがALG処理が必要であることを示す場合、方法は、ブロック1206へと進む。
【００７６】
ブロック1206で、パケットは、パケットのタグから決定された適切なALGエンジンに転送される。一実施形態において、各ALGエンジンは、入力および出力キューを含み、入力および出力キューは、ALGエンジンが、パケットを受信した順番に、複数の接続に関連付けられたパケットを処理するのを可能にする。ALG処理が完了するのを待っている間、システムはパケット処理を中断する、または遅延させる必要がないので、キューの使用は、NAT処理を解放する。たとえば、選択されたパケットが適切なALGキューに入力されると、選択されたパケットがALGエンジンによって処理されている間に、追加のパケットのハンドリングを続行することができる。このタイプのマルチタスキングは、エンド間のRTTへの影響を削減するのに役立つ。
【００７７】
プロセッサ402は、パケットを適切なALGエンジンキューに送るように、パケット送信部408を制御する。ALGエンジンは、その受信キューにあるパケットを通知され、ALGエンジンがパケットを処理するとき、プロトコル定義に従って、パケットのアプリケーションペイロードを変換する。ALG処理が完了した後、ALGエンジンは、パケットをその出力キューの中に入れる。
【００７８】
ブロック1208で、パケットはNAT処理のために送られる。たとえば、パケットのためのALG処理が必要でないことが決定された場合、パケットは、さらなる処理およびルーティングのためにNAT処理モジュール212に送られる。たとえば、プロセッサ402は、パケットをNAT処理モジュール212に送るように、NAT処理インターフェース406を制御する。
【００７９】
したがって、方法1200は、NATルックアップモジュールからタグ付きパケットを受信するよう動作する。ALG処理が必要である場合、パケットは、適切なALGエンジンに送られる。ALG処理が必要でない場合、パケットは直接、NAT処理モジュールに送られる。方法1200は一実装形態にすぎず、方法1200の動作は、他の実装形態が可能であるように、再配置される、または別のやり方で変更されてもよいことに留意されたい。
【００８０】
1つまたは複数の例示的な実施形態において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装されてよい。ソフトウェアにおいて実装される場合、機能は、1つもしくは複数の命令またはコードとして、コンピュータ可読媒体上に記憶される、あるいはコンピュータ可読媒体を介して伝送されてよい。コンピュータ可読媒体は、非一時的なコンピュータ記憶媒体と、ある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体の両方を含む。コンピュータ記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってよく、またコンピュータプログラム製品と呼ばれてもよい。限定はせずに例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、もしくは他の光学ディスク記憶デバイス、磁気ディスク記憶デバイスもしくは他の磁気記憶デバイス、あるいは、命令またはデータ構造の形で所望のプログラムコードを搬送する、または記憶するために使用することができ、コンピュータによってアクセスされ得る、任意の他の媒体を含むことができる。また、あらゆる接続が、厳密にはコンピュータ可読媒体と称されてもよい。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから伝送される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用されるとき、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD: compact disc)、レーザーディスク（登録商標）(laser disc)、光学ディスク(optical disc)、デジタル多用途ディスク(DVD: digital versatile disc)、フロッピー（登録商標）ディスク(floppy disk)、およびブルーレイディスク(blu-ray disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、一方ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００８１】
開示された態様の説明は、あらゆる当業者に、本発明の作成または使用を可能にするように提供される。これらの態様に対する様々な変更形態は、それらの当業者にたやすく明らかであってよく、本明細書で定義された包括的な原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に、たとえば、インスタントメッセージングサービスまたは任意の一般的なワイヤレスデータ通信アプリケーションにおいて、適用されてもよい。したがって、本発明は、本明細書で示した態様に限定されるようには意図せず、むしろ、本明細書で開示された原理および新規な特徴と一致する最も広い範囲を与えられることを意図する。「例示的な(exemplary)」という単語は、「例、具体例、または例証としての役割を果たす」ことを意味するように本明細書でもっぱら使用される。「例示的な」として本明細書で説明された任意の態様が、必ずしも他の態様よりも好ましい、または有利であると解釈されるわけではない。
【００８２】
それに応じて、効率的なNATおよびALG処理のための装置および方法の態様が、本明細書で図示され、説明されてきた。本態様の趣旨または本質的な特性から逸脱することなく、本態様に対して様々な変更が行われてもよいことが認識されるだろう。したがって、本明細書の開示および説明は、下記の特許請求の範囲において述べる本発明の範囲を、限定するのではなく、例証することを意図する。
【符号の説明】
【００８３】
100  従来のNAT構成
102  NAT装置
104  LAN接続
106  NATルックアップモジュール
108  ALGエンジン
110  NAT処理モジュール
112  WAN接続
200  システム
202  NATルックアップモジュール
204  LAN
206  分類および非同期パケットハンドラ
208  ALGエンジン
210  入力/出力キュー
212  NAT処理モジュール
214  ワイヤレスWAN
300  NATルックアップモジュール
302  プロセッサ
304  ルールデータベース
306  接続データベース
308  パケット送信部
310  パケット受信部
312  バス
400  パケットハンドラ/分類モジュール
402  プロセッサ
404  NATルックアップインターフェース
406  NAT処理インターフェース
408  パケット送信部
410  パケット受信部
412  バス
500  ルールデータベース
502  パケットタイプ
504  第4の列
600  接続データベース
602  接続識別子
604  ALGエンジン
900  NATルックアップ装置
902  ディープスキャンするための手段
904  関連付けるための手段
906  転送するための手段
1000  分類装置
1002  受信するための手段
1004  決定するための手段
1006  渡すための手段
1008  送るための手段
【要約】
効率的なNATおよびALG処理のための装置および方法が開示される。例示的な方法は、接続上で受信したパケットに実施されることになるアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットをディープスキャンする動作と、その接続をALGプロセスに関連付ける動作と、追加のパケットのディープスキャニングが回避されるように、前記関連付けに基づいてALGプロセスを受けるために、その接続上で受信した追加のパケットを転送する動作とを含む。【図１】
0005674179.tif 000002
【図２】
0005674179.tif 000003
【図３】
0005674179.tif 000004
【図４】
0005674179.tif 000005
【図５】
0005674179.tif 000006
【図６】
0005674179.tif 000007
【図７】
0005674179.tif 000008
【図８】
0005674179.tif 000009
【図９】
0005674179.tif 000010
【図１０】
0005674179.tif 000011
【図１１】
0005674179.tif 000012
【図１２】
0005674179.tif 000013