JP2015507408A - 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法 - Google Patents

効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法 Download PDF

Info

Publication number
JP2015507408A
JP2015507408A JP2014548853A JP2014548853A JP2015507408A JP 2015507408 A JP2015507408 A JP 2015507408A JP 2014548853 A JP2014548853 A JP 2014548853A JP 2014548853 A JP2014548853 A JP 2014548853A JP 2015507408 A JP2015507408 A JP 2015507408A
Authority
JP
Japan
Prior art keywords
packet
alg
tagged
processing
packets
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014548853A
Other languages
English (en)
Other versions
JP5674179B1 (ja
Inventor
ヴェンカタ・サティシュ・クマール・ヴァンガラ
アロック・ミトラ
ロヒット・トリパティ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Application granted granted Critical
Publication of JP5674179B1 publication Critical patent/JP5674179B1/ja
Publication of JP2015507408A publication Critical patent/JP2015507408A/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2585NAT traversal through application level gateway [ALG]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2557Translation policies or rules

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

効率的なNATおよびALG処理のための装置および方法が開示される。例示的な方法は、接続上で受信したパケットに実施されることになるアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットをディープスキャンする動作と、その接続をALGプロセスに関連付ける動作と、追加のパケットのディープスキャニングが回避されるように、前記関連付けに基づいてALGプロセスを受けるために、その接続上で受信した追加のパケットを転送する動作とを含む。

Description

本出願は、一般に、ワイヤレス通信システムの動作に関し、より詳細には、効率的なパケットルーティングに関する。
ネットワークアドレス変換(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 送るための手段

Claims (44)

  1. パケットルーティングのための方法であって、
    選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、前記パケットをディープスキャンするステップと、
    前記選択された接続を、前記選択されたALGプロセスに関連付けるステップと、
    前記関連付けるステップに基づいて前記選択されたALGプロセスを受けるために、前記選択された接続上で受信した追加のパケットを転送するステップであって、前記追加のパケットのディープスキャニングが回避される、転送するステップと
    を含む方法。
  2. 1つまたは複数のALGプロセスにそれぞれ関連付けられた1つまたは複数のルールを識別するルールデータベースを維持するステップと、
    前記選択されたALGプロセスを決定するために、前記1つまたは複数のルールのうちのどれが前記パケットによって満たされるかを決定するステップと
    をさらに含む請求項1に記載の方法。
  3. 前記関連付けるステップが、前記選択された接続を前記選択されたALGプロセスに関連付ける接続データベースを維持するステップを含む、請求項1に記載の方法。
  4. 前記ディープスキャンするステップが、前記パケットに実施されることになる前記選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットヘッダおよびパケットペイロードのうちの少なくとも1つをスキャンするステップを含む、請求項1に記載の方法。
  5. 前記転送するステップが、タグ付きパケットを形成するために、前記パケットおよび前記追加のパケットをALG処理情報でタグ付けするステップを含み、前記ALG処理情報が、実施されることになる前記選択されたALGプロセスを識別する情報を含む、請求項1に記載の方法。
  6. 前記タグ付きパケットを受信するステップと、
    各タグ付きパケットに関連付けられた前記ALG処理情報に基づいて、各タグ付きパケットにいずれかのALG処理が必要であるかどうかを決定するステップと、
    選択されたタグ付きパケットにALG処理が必要であることが決定された場合にALG処理を受けるために、前記選択されたタグ付きパケットを、選択されたALGエンジンにそれぞれ渡すステップと、
    他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るステップと
    をさらに含む請求項5に記載の方法。
  7. 前記渡すステップが、前記選択されたタグ付きパケットを、前記選択されたALGエンジンに関連付けられた選択された入力キューにそれぞれ入力するステップを含む、請求項6に記載の方法。
  8. 前記選択されたALGエンジンから処理されたパケットを受信するステップと、
    前記処理されたパケットを前記NAT処理モジュールに転送するステップと
    をさらに含む請求項6に記載の方法。
  9. 前記受信するステップが、前記選択されたALGエンジンに関連付けられた選択された出力キューから、前記処理されたパケットをそれぞれ受信するステップを含む、請求項8に記載の方法。
  10. パケットルーティングのための装置であって、
    選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、前記パケットをディープスキャンするように構成されたプロセッサと、
    前記選択された接続を、前記選択されたALGプロセスに関連付けるように構成されたデータベースと、
    前記関連付けに基づいて前記選択されたALGプロセスを受けるために、前記選択された接続上で受信した追加のパケットを転送するように構成されたパケット送信器であって、前記追加のパケットのディープスキャニングが回避される、パケット送信部と
    を含む装置。
  11. 前記プロセッサが、
    1つまたは複数のALGプロセスにそれぞれ関連付けられた1つまたは複数のルールを識別するルールデータベースを維持し、
    前記選択されたALGプロセスを決定するために、前記1つまたは複数のルールのうちのどれが前記パケットによって満たされるかを決定するように
    構成されている、請求項10に記載の装置。
  12. 前記データベースが、接続とALGプロセスとの関連を維持するように構成されている、請求項10に記載の装置。
  13. 前記プロセッサが、前記パケットに実施されることになる前記選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットヘッダおよびパケットペイロードのうちの少なくとも1つをディープスキャンするように構成されている、請求項10に記載の装置。
  14. 前記プロセッサが、タグ付きパケットを形成するために、前記パケットおよび前記追加のパケットをALG処理情報でタグ付けするように構成されており、前記ALG処理情報が、実施されることになる前記選択されたALGプロセスを識別する情報を含む、請求項10に記載の装置。
  15. 前記タグ付きパケットを受信するように構成された第1のインターフェースと、
    各タグ付きパケットに関連付けられた前記ALG処理情報に基づいて、各タグ付きパケットにALG処理が必要であるかどうかを決定するように構成された第2のプロセッサと、
    選択されたタグ付きパケットにALG処理が必要であることが決定された場合にALG処理を受けるために、前記選択されたタグ付きパケットを、選択されたALGエンジンにそれぞれ渡すように構成された第2のパケット送信部と、
    他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るように構成された第2のインターフェースと
    をさらに含む請求項10に記載の装置。
  16. 前記第2のパケット送信部が、前記選択されたタグ付きパケットを、前記選択されたALGエンジンに関連付けられた選択された入力キューにそれぞれ渡すように構成されている、請求項15に記載の装置。
  17. 前記選択されたALGエンジンから処理されたパケットを受信するように構成されたパケット受信部と、
    前記処理されたパケットを前記NAT処理モジュールに送るように構成された前記第2のインターフェースと
    をさらに含む請求項15に記載の装置。
  18. 前記パケット受信部が、前記選択されたALGエンジンに関連付けられた選択された出力キューから、前記処理されたパケットをそれぞれ受信するように構成されている、請求項17に記載の装置。
  19. パケットルーティングのための装置であって、
    選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、前記パケットをディープスキャンするための手段と、
    前記選択された接続を、前記選択されたALGプロセスに関連付けるための手段と、
    前記関連付けに基づいて前記選択されたALGプロセスを受けるために、前記選択された接続上で受信した追加のパケットを転送するための手段であって、前記追加のパケットのディープスキャニングが回避される、転送するための手段と
    を含む装置。
  20. 1つまたは複数のALGプロセスにそれぞれ関連付けられた1つまたは複数のルールを識別するルールデータベースを維持するための手段と、
    前記選択されたALGプロセスを決定するために、前記1つまたは複数のルールのうちのどれが前記パケットによって満たされるかを決定するための手段と
    をさらに含む請求項19に記載の装置。
  21. 前記関連付けるための手段が、前記選択された接続を前記選択されたALGプロセスに関連付ける接続データベースを維持するための手段を含む、請求項19に記載の装置。
  22. 前記ディープスキャンするための手段が、前記パケットに実施されることになる前記選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットヘッダおよびパケットペイロードのうちの少なくとも1つをディープスキャンするための手段を含む、請求項19に記載の装置。
  23. 前記転送するための手段が、タグ付きパケットを形成するために、前記パケットおよび前記追加のパケットをALG処理情報でタグ付けするための手段を含み、前記ALG処理情報が、実施されることになる前記選択されたALGプロセスを識別する情報を含む、請求項19に記載の装置。
  24. 前記タグ付きパケットを受信するための手段と、
    各タグ付きパケットに関連付けられた前記ALG処理情報に基づいて、各タグ付きパケットにいずれかのALG処理が必要であるかどうかを決定するための手段と、
    選択されたタグ付きパケットにALG処理が必要であることが決定された場合にALG処理を受けるために、前記選択されたタグ付きパケットを、選択されたALGエンジンにそれぞれ渡すための手段と、
    他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るための手段と
    をさらに含む請求項19に記載の装置。
  25. 前記渡すための手段が、前記選択されたタグ付きパケットを、前記選択されたALGエンジンに関連付けられた選択された入力キューにそれぞれ入力するための手段を含む、請求項24に記載の装置。
  26. 前記選択されたALGエンジンから処理されたパケットを受信するための手段と、
    前記処理されたパケットを前記NAT処理モジュールに転送するための手段と
    をさらに含む請求項24に記載の装置。
  27. 前記受信するための手段が、前記選択されたALGエンジンに関連付けられた選択された出力キューから、前記処理されたパケットをそれぞれ受信するための手段を含む、請求項26に記載の装置。
  28. プロセッサによって実行可能な命令を具体化する、パケットルーティングのための非一時的コンピュータ可読媒体であって、
    前記命令が、前記プロセッサに、
    選択された接続上で受信したパケットに実施されることになる選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、前記パケットをディープスキャンさせ、
    前記選択された接続を、前記選択されたALGプロセスに関連付けさせ、
    前記関連付けに基づいて前記選択されたALGプロセスを受けるために、前記選択された接続上で受信した追加のパケットを転送させ、
    前記追加のパケットのディープスキャニングが回避される、非一時的なコンピュータ可読媒体。
  29. 前記命令が、前記プロセッサに、
    1つまたは複数のALGプロセスにそれぞれ関連付けられた1つまたは複数のルールを識別するルールデータベースを維持させ、
    前記選択されたALGプロセスを決定するために、前記1つまたは複数のルールのうちのどれが前記パケットによって満たされるかを決定させるように
    構成されている、請求項28に記載のコンピュータ可読媒体。
  30. 前記命令が、前記プロセッサに、データベースにおける接続とALGプロセスとの関連を維持させるように構成されている、請求項28に記載のコンピュータ可読媒体。
  31. 前記命令が、前記プロセッサに、前記パケットに実施されることになる前記選択されたアプリケーションレベルゲートウェイ(ALG)プロセスを決定するために、パケットヘッダおよびパケットペイロードのうちの少なくとも1つをディープスキャンさせるように構成されている、請求項28に記載のコンピュータ可読媒体。
  32. 前記命令が、前記プロセッサに、タグ付きパケットを形成するために、前記パケットおよび前記追加のパケットをALG処理情報でタグ付けさせるように構成されており、前記ALG処理情報が、実施されることになる前記選択されたALGプロセスを識別する情報を含む、請求項28に記載のコンピュータ可読媒体。
  33. 前記命令が、前記プロセッサに、
    前記タグ付きパケットを受信させ、
    各タグ付きパケットに関連付けられた前記ALG処理情報に基づいて、各タグ付きパケットにALG処理が必要であるかどうかを決定させ、
    選択されたタグ付きパケットにALG処理が必要であることが決定された場合にALG処理を受けるために、前記選択されたタグ付きパケットを、選択されたALGエンジンにそれぞれ渡させ、
    他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送らせるように
    構成されている、請求項28に記載のコンピュータ可読媒体。
  34. 前記命令が、前記プロセッサに、前記選択されたタグ付きパケットを、前記選択されたALGエンジンに関連付けられた選択された入力キューにそれぞれ渡させるように構成されている、請求項33に記載のコンピュータ可読媒体。
  35. 前記命令が、前記プロセッサに、
    前記選択されたALGエンジンから処理されたパケットを受信させ、
    前記処理されたパケットを前記NAT処理モジュールに送らせるように
    構成されている、請求項33に記載のコンピュータ可読媒体。
  36. 前記命令が、前記プロセッサに、前記選択されたALGエンジンに関連付けられた選択された出力キューから、前記処理されたパケットをそれぞれ受信させるように構成されている、請求項35に記載のコンピュータ可読媒体。
  37. パケットルーティングのための装置であって、
    タグ付きパケットを受信するように構成された第1のインターフェースと、
    各タグ付きパケットに関連付けられたALG処理情報に基づいて、各タグ付きパケットにALG処理が必要であるかどうかを決定するように構成されたプロセッサと、
    選択されたタグ付きパケットにALG処理が必要であることが決定された場合にALG処理を受けるために、前記選択されたタグ付きパケットを、選択されたALGエンジンにそれぞれ渡すように構成されたパケット送信部と、
    他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るように構成された第2のインターフェースと
    を含む装置。
  38. 前記パケット送信部が、前記選択されたタグ付きパケットを、前記選択されたALGエンジンに関連付けられた選択された入力キューにそれぞれ渡すように構成されている、請求項37に記載の装置。
  39. 前記選択されたALGエンジンから処理されたパケットを受信するように構成されたパケット受信部と、
    前記処理されたパケットを前記NAT処理モジュールに送るように構成された前記第2のインターフェースと
    をさらに含む請求項37に記載の装置。
  40. 前記パケット受信部が、前記選択されたALGエンジンに関連付けられた選択された出力キューから、前記処理されたパケットをそれぞれ受信するように構成されている、請求項39に記載の装置。
  41. パケットルーティングのための方法であって、
    タグ付きパケットを受信するステップと、
    各タグ付きパケットに関連付けられたALG処理情報に基づいて、各タグ付きパケットにいずれかのALG処理が必要であるかどうかを決定するステップと、
    選択されたタグ付きパケットにALG処理が必要であることが決定された場合にALG処理を受けるために、前記選択されたタグ付きパケットを、選択されたALGエンジンにそれぞれ渡すステップと、
    他のタグ付きパケットにALG処理が必要でないことが決定された場合に、前記他のタグ付きパケットを、ネットワークアドレス変換(NAT)処理モジュールに送るステップと
    を含む方法。
  42. 前記渡すステップが、前記選択されたタグ付きパケットを、前記選択されたALGエンジンに関連付けられた選択された入力キューにそれぞれ入力するステップを含む、請求項41に記載の方法。
  43. 前記選択されたALGエンジンから処理されたパケットを受信するステップと、
    前記処理されたパケットを前記NAT処理モジュールに転送するステップと
    をさらに含む請求項41に記載の方法。
  44. 前記受信するステップが、前記選択されたALGエンジンに関連付けられた選択された出力キューから、前記処理されたパケットをそれぞれ受信するステップを含む、請求項43に記載の方法。
JP2014548853A 2011-12-19 2012-12-19 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法 Expired - Fee Related JP5674179B1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/330,529 2011-12-19
US13/330,529 US8837474B2 (en) 2011-12-19 2011-12-19 Apparatus and methods for efficient network address translation and application level gateway processing
PCT/US2012/070720 WO2013096504A1 (en) 2011-12-19 2012-12-19 Apparatus and methods for efficient network address translation and application level gateway processing

Publications (2)

Publication Number Publication Date
JP5674179B1 JP5674179B1 (ja) 2015-02-25
JP2015507408A true JP2015507408A (ja) 2015-03-05

Family

ID=47521171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014548853A Expired - Fee Related JP5674179B1 (ja) 2011-12-19 2012-12-19 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法

Country Status (7)

Country Link
US (1) US8837474B2 (ja)
EP (1) EP2795881A1 (ja)
JP (1) JP5674179B1 (ja)
KR (1) KR101530013B1 (ja)
CN (1) CN103999435B (ja)
IN (1) IN2014CN04240A (ja)
WO (1) WO2013096504A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9237240B2 (en) * 2012-11-13 2016-01-12 Obihai Technology, Inc. Communications management and gateway bypassing system
US9391881B2 (en) * 2013-02-20 2016-07-12 Ip Technology Labs, Llc System and methods for dynamic network address modification
US10110561B2 (en) 2014-11-26 2018-10-23 Rockwell Automation Technologies, Inc. Firewall with application packet classifer

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391768B1 (en) * 2003-05-13 2008-06-24 Cisco Technology, Inc. IPv4-IPv6 FTP application level gateway
JP2010166189A (ja) * 2009-01-14 2010-07-29 Nec Corp Ip中継装置、通信システム及びそれらに用いるtcpフロー制御方法
JP2011103566A (ja) * 2009-11-11 2011-05-26 Hitachi Ltd ゲートウェイ装置およびポート番号割当て方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7564860B2 (en) * 2003-05-08 2009-07-21 Samsung Electronics Co., Ltd. Apparatus and method for workflow-based routing in a distributed architecture router
WO2005008981A1 (en) 2003-07-03 2005-01-27 Sinett Corporation Apparatus for layer 3 switching and network address port translation
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
US7460476B1 (en) 2004-10-18 2008-12-02 Ubicom, Inc. Automatic adaptive network traffic prioritization and shaping
WO2006068548A1 (en) 2004-12-21 2006-06-29 Telefonaktiebolaget L M Ericsson (Publ) An arrangement and a method relating to flow of packets in communication systems
US7719966B2 (en) * 2005-04-13 2010-05-18 Zeugma Systems Inc. Network element architecture for deep packet inspection
CN100493049C (zh) 2005-05-10 2009-05-27 中国科学院计算技术研究所 一种用于网络地址转换和协议翻译中的应用层网关的方法
US7580356B1 (en) * 2005-06-24 2009-08-25 Packeteer, Inc. Method and system for dynamically capturing flow traffic data
WO2007123359A2 (en) 2006-04-24 2007-11-01 Ktfreetel Co., Ltd. Interworking system between ip networks using different ip addressing scheme, application layer gateway (alg), stun server, network address translator, interworking method thereof, and sip message routing method thereof
US20080008194A1 (en) * 2006-07-07 2008-01-10 General Instrument Corporation Device, system and method for bypassing application specific data traffic past network routing devices
US7693150B2 (en) * 2006-12-27 2010-04-06 Cisco Technology, Inc. Intelligent ALG functionality in networks supporting endpoints performing network address translation
ATE493828T1 (de) 2007-08-20 2011-01-15 Ericsson Telefon Ab L M Verfahren und vorrichtung zum bereitstellen eines lokalen breakout in einem mobilnetz
US8510466B2 (en) * 2008-03-03 2013-08-13 Verizon Patent And Licensing Inc. Bypassing an application layer gateway
US9013992B2 (en) 2009-09-08 2015-04-21 Wichorus, Inc. Method and apparatus for network address translation
US8942233B2 (en) * 2009-09-08 2015-01-27 Wichorus, Inc. Method and apparatus for performing network address translation
US8499087B2 (en) * 2009-11-30 2013-07-30 At&T Mobility Ii Llc Service-based routing for mobile core network
US8509148B2 (en) * 2010-12-29 2013-08-13 Industrial Technology Research Institute System and method for application layer gateway assisted local IP access at a femto base station by network address translation
US10405235B2 (en) * 2011-09-26 2019-09-03 Qualcomm Incorporated Systems and methods for traffic detection network control

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391768B1 (en) * 2003-05-13 2008-06-24 Cisco Technology, Inc. IPv4-IPv6 FTP application level gateway
JP2010166189A (ja) * 2009-01-14 2010-07-29 Nec Corp Ip中継装置、通信システム及びそれらに用いるtcpフロー制御方法
JP2011103566A (ja) * 2009-11-11 2011-05-26 Hitachi Ltd ゲートウェイ装置およびポート番号割当て方法

Also Published As

Publication number Publication date
KR20140107448A (ko) 2014-09-04
CN103999435B (zh) 2016-01-06
US20130156041A1 (en) 2013-06-20
CN103999435A (zh) 2014-08-20
IN2014CN04240A (ja) 2015-07-17
JP5674179B1 (ja) 2015-02-25
KR101530013B1 (ko) 2015-06-18
EP2795881A1 (en) 2014-10-29
WO2013096504A1 (en) 2013-06-27
US8837474B2 (en) 2014-09-16

Similar Documents

Publication Publication Date Title
US9602428B2 (en) Method and apparatus for locality sensitive hash-based load balancing
US9614755B2 (en) Combined hardware/software forwarding mechanism and method
EP2676411B1 (en) Method and system for classification and management of inter-blade network traffic in a blade server
US8799507B2 (en) Longest prefix match searches with variable numbers of prefixes
US9450780B2 (en) Packet processing approach to improve performance and energy efficiency for software routers
EP3028417B1 (en) Data packet processing
US9535867B2 (en) Method, device, system and storage medium for implementing packet transmission in PCIE switching network
US9614759B2 (en) Systems and methods for providing anycast MAC addressing in an information handling system
RU2523917C2 (ru) Система управления связью и способ управления связью
US9319241B2 (en) Flow-based packet transport device and packet management method thereof
EP1836808B1 (en) Fibre channel forwarding information base
EP3684018B1 (en) Method and network device for handling packets in a network by means of forwarding tables
US9590922B2 (en) Programmable and high performance switch for data center networks
KR20130128461A (ko) 통신 제어 시스템, 스위치 노드 및 통신 제어 방법
WO2016000170A1 (zh) 网络装置执行的数据处理方法和相关设备
US20070253334A1 (en) Switch routing algorithm for improved congestion control & load balancing
KR20240004315A (ko) Smartnic들 내의 네트워크 연결형 mpi 프로세싱 아키텍처
JP5674179B1 (ja) 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法
JP2009260654A (ja) 中継装置およびパケット中継方法
US20090073970A1 (en) System and method for parsing frames
US10616116B1 (en) Network traffic load balancing using rotating hash
US9590897B1 (en) Methods and systems for network devices and associated network transmissions
US9154455B1 (en) Method and system for determining drop eligibility of network information
CN109995658A (zh) 发送、接收以及转发报文的方法和装置
KR20010047546A (ko) 이더넷 스위치에서의 어드레스 서치 장치 및 방법

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20141119

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141218

R150 Certificate of patent or registration of utility model

Ref document number: 5674179

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees