(57)【特許請求の範囲】
【請求項１】
ネットワーク内で通信するための方法であって、
クライアントからインターネットプロトコル(IP)データパケットの一連のIPフラグメントのうちの1つのインターネットプロトコル(IP)フラグメントを受信するステップと、
前記データパケットの前記IPフラグメントが前記データパケットの順序の第1のIPフラグメントでないことが判定された場合、ネットワークアドレス変換(NAT)テーブル内の前記IPフラグメントに関する部分的なNAT項目を作成するステップであって、前記部分的なNAT項目は前記IPフラグメントに基づく情報のみを含む、前記作成するステップと、
前記IPフラグメントのNATを実行するステップと、
サーバに向かう前記一連のIPフラグメント全体を受信する前に前記データパケットの前記IPフラグメントを送信するステップと
を含む、方法。
【請求項２】
前記一連のIPフラグメント全体を受信する前に前記IPフラグメントを送信するステップは、前記一連のIPフラグメントのうちの第1の順序のIPフラグメントを受信する前に前記IPフラグメントを送信するステップを含む、請求項1に記載の方法。
【請求項３】
前記受信するステップおよび送信するステップは、ソフトウェアアクセスポイント(SoftAP)によって実行される、請求項1に記載の方法。
【請求項４】
前記一連のIPフラグメント全体を受信する前に前記IPフラグメントのネットワークアドレス変換を実行するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記部分的なネットワークアドレス変換項目は、ローカルIPアドレス、ターゲットIPアドレス、グローバルIPアドレス、グローバルポート、およびIP識別子(IP-ID)を含む、請求項1に記載の方法。
【請求項６】
1つのIPフラグメントを受信する前記ステップは、
第1のトラフィックフローを介して、前記IPフラグメントを受信するステップであって、前記IPフラグメントは第1のインターネットプロトコル識別子(IP-ID)を有する、ステップ
であり、ネットワーク内で通信するための前記方法は、
前記第1のトラフィックフローに一意の、前記IPフラグメントに関する第2のIP-IDを生成するステップ
をさらに含み、前記データパケットの前記IPフラグメントを送信する前記ステップは、
前記第2のIP-IDを有する前記IPフラグメントを送信するステップ
である、請求項1に記載の方法。
【請求項７】
前記受信するステップおよび生成するステップは、ソフトウェアアクセスポイント(SoftAP)によって実行される、請求項6に記載の方法。
【請求項８】
ネットワーク内で通信するための装置であって、
クライアントからインターネットプロトコル(IP)データパケットの一連のIPフラグメントのうちの1つのインターネットプロトコル(IP)フラグメントを受信するように構成された受信機と、
前記データパケットの前記IPフラグメントが前記データパケットの順序の第1のIPフラグメントでないことが判定された場合、ネットワークアドレス変換(NAT)テーブル内の前記IPフラグメントに関する部分的なNAT項目を作成し、前記IPフラグメントのNATを実行するためのプロセッサであって、前記部分的なNAT項目は前記IPフラグメントに基づく情報のみを含む、プロセッサと、
サーバに向かう前記一連のIPフラグメント全体を受信する前に前記データパケットの前記IPフラグメントを送信するように構成された送信機と
を含む、装置。
【請求項９】
前記一連のIPフラグメント全体を受信する前に前記IPフラグメントを送信することは、前記一連のIPフラグメントのうちの第1の順序のIPフラグメントを受信する前に前記IPフラグメントを送信することを含む、請求項8に記載の装置。
【請求項１０】
前記装置は、ソフトウェアアクセスポイント(SoftAP)を含む、請求項8に記載の装置。
【請求項１１】
前記プロセッサは、前記一連のIPフラグメント全体を受信する前に前記IPフラグメントのネットワークアドレス変換を実行するようにさらに構成される、請求項8に記載の装置。
【請求項１２】
前記部分的なネットワークアドレス変換項目は、ローカルIPアドレス、ターゲットIPアドレス、グローバルIPアドレス、グローバルポート、およびIP識別子(IP-ID)を含む、請求項8に記載の装置。
【請求項１３】
前記受信機は、第1のトラフィックフローを介して、前記IPフラグメントを受信するように構成され、前記IPフラグメントは第1のインターネットプロトコル識別子(IP-ID)を有し、
前記プロセッサは、前記第1のトラフィックフローに一意の、前記IPフラグメントに関する第2のIP-IDを生成するように構成され、
前記送信機は、前記第2のIP-IDを有する前記IPフラグメントを送信するように構成される
請求項8に記載の装置。
【請求項１４】
前記装置は、ソフトウェアアクセスポイント(SoftAP)を含む、請求項13に記載の装置。
【請求項１５】
ネットワーク内で通信するための装置であって、
クライアントからインターネットプロトコル(IP)データパケットの一連のIPフラグメントのうちの1つのインターネットプロトコル(IP)フラグメントを受信するための手段と、
前記データパケットの前記IPフラグメントが前記データパケットの順序の第1のIPフラグメントでないことが判定された場合、ネットワークアドレス変換(NAT)テーブル内の前記IPフラグメントに関する部分的なNAT項目を作成するための手段であって、前記部分的なNAT項目は前記IPフラグメントに基づく情報のみを含む、前記作成するための手段と、
前記IPフラグメントのNATを実行するための手段と、
サーバに向かう前記一連のIPフラグメント全体を受信する前に前記データパケットの前記IPフラグメントを送信するための手段と
を含む、装置。
【請求項１６】
前記一連のIPフラグメント全体を受信する前に前記IPフラグメントを送信するための手段は、前記一連のIPフラグメントのうちの第1の順序のIPフラグメントを受信する前に前記IPフラグメントを送信するための手段を含む、請求項15に記載の装置。
【請求項１７】
前記装置は、ソフトウェアアクセスポイント(SoftAP)を含む、請求項15に記載の装置。
【請求項１８】
前記一連のIPフラグメント全体を受信する前に前記IPフラグメントのネットワークアドレス変換を実行するための手段をさらに含む、請求項15に記載の装置。
【請求項１９】
前記部分的なネットワークアドレス変換項目は、ローカルIPアドレス、ターゲットIPアドレス、グローバルIPアドレス、グローバルポート、およびIP識別子(IP-ID)を含む、請求項15に記載の装置。
【請求項２０】
1つのIPフラグメントを受信するための前記手段は、
第1のトラフィックフローを介して、前記IPフラグメントを受信するための手段であって、前記IPフラグメントは第1のインターネットプロトコル識別子(IP-ID)を有する、手段
であり、ネットワーク内で通信するための前記装置は、
前記第1のトラフィックフローに一意の、前記IPフラグメントに関する第2のIP-IDを生成するための手段
をさらに含み、前記データパケットの前記IPフラグメントを送信するための前記手段は、
前記第2のIP-IDを有する前記IPフラグメントを送信するための手段
である、請求項15に記載の装置。
【請求項２１】
前記装置は、ソフトウェアアクセスポイント(SoftAP)を含む、請求項20に記載の装置。
【請求項２２】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、実行されるとき、装置に、
クライアントからインターネットプロトコル(IP)データパケットの一連のIPフラグメントのうちの1つのインターネットプロトコル(IP)フラグメントを受信させ、
前記データパケットの前記IPフラグメントが前記データパケットの順序の第1のIPフラグメントでないことが判定された場合、ネットワークアドレス変換(NAT)テーブル内の前記IPフラグメントに関する部分的なNAT項目を作成させ、ただし前記部分的なNAT項目は前記IPフラグメントに基づく情報のみを含み、
前記IPフラグメントのNATを実行させ、
サーバに向かう前記一連のIPフラグメント全体を受信する前に前記データパケットの前記IPフラグメントを送信させる、
コンピュータ可読記憶媒体。
【請求項２３】
前記一連のIPフラグメント全体を受信する前に前記IPフラグメントを送信するステップは、前記一連のIPフラグメントのうちの第1の順序のIPフラグメントを受信する前に前記IPフラグメントを送信するステップを含む、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２４】
前記装置は、ソフトウェアアクセスポイント(SoftAP)を含む、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２５】
前記命令は、実行されるとき、さらに、前記装置に、前記一連のIPフラグメント全体を受信する前に前記IPフラグメントのネットワークアドレス変換を実行させる、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２６】
前記部分的なネットワークアドレス変換項目は、ローカルIPアドレス、ターゲットIPアドレス、グローバルIPアドレス、グローバルポート、およびIP識別子(IP-ID)を含む、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２７】
前記命令は、実行されるとき、前記装置に、
第1のトラフィックフローを介して、前記IPフラグメントを受信させ、前記IPフラグメントは第1のインターネットプロトコル識別子(IP-ID)を有し、
前記第1のトラフィックフローに一意の、前記IPフラグメントに関する第2のIP-IDを生成させ、
前記第2のIP-IDを有する前記IPフラグメントを送信させる、
請求項22に記載のコンピュータ可読記憶媒体。
【請求項２８】
前記装置は、ソフトウェアアクセスポイント(SoftAP)を含む、請求項27に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、通信に関し、より詳細には、ネットワークアドレス変換(NAT)機能を使用してインターネットプロトコル(IP)フラグメント(fragment)を効率的に処理するためのシステム、方法、およびデバイス(ルータなど)に関する。
【背景技術】
【０００２】
通信デバイス(たとえば、モバイルハンドセット、PDA(携帯情報端末)、パーソナルコンピュータ、スマートフォン、サーバ、またはネットワークを介して通信することができる任意の他の電子デバイス)間で様々なタイプの通信(たとえば、ボイス、データ、マルチメディアサービスなど)を提供するために、通信システムが広く配備される。デバイスは、相互接続されたデバイスのネットワークを介して互いにデータを送信/受信することができる。たとえば、クライアントデバイスは、ネットワークを介してサーバデバイスとデータを交換することができる。
【０００３】
デバイスのIPv4アドレスの限定された可用性のために、クライアントデバイスは、ネットワークアドレス変換(NAT)機能を実行するデバイス(本明細書では「NATデバイス」と呼ぶ)などの別のデバイスを介してネットワークにアクセスする可能性がある。NATデバイスは、クライアントデバイス(ローカルエリアネットワーク(LAN)においてグループ化されている可能性がある)のグループにパブリックドメインアクセスを提供する可能性がある。公衆ネットワークにアクセスするために、各クライアントデバイスが公にルーティングの宛先となるそれ自体のIPv4アドレスを有するのではなく、クライアントデバイスのグループ用のNATデバイスに、公にルーティングの宛先となる単一のIPv4アドレスを割り当てる可能性がある。これは、IPv4アドレスの割当ての節約になる。さらに、NATデバイスを使用すれば、すべてのトラフィックがNATデバイスを通るので、すべてのクライアントデバイスを保護するのを助けるセキュリティプロトコルをNATデバイスに確立することが可能になる。
【０００４】
クライアントデバイスがサーバデバイスと通信するために、クライアントデバイスからサーバデバイスに送られるデータは、NATデバイスを介してルーティングされる。サーバがクライアントデバイスと通信するために、サーバデバイスは、NATデバイスにデータを送り、NATデバイスは、クライアントデバイスにデータを送る。
【０００５】
NATデバイスは、クライアントデバイスとサーバデバイスとの間で交換されるデータのネットワークアドレス変換を実行することができる。NATデバイスは、サーバにデータパケットを送る前に、NATを利用して、クライアントデバイスからのデータパケットのインターネットプロトコル(IP)アドレスを変換することができる。同様に、NATデバイスは、クライアントにデータパケットを送る前に、サーバからのデータパケットのIPアドレスを変換することができる。
【０００６】
たとえば、クライアントデバイスは、クライアントデバイスの各々がローカルネットワーク内で通信するために「プライベート」IPアドレスを使用するローカルネットワークの一部である可能性がある。しかしながら、これらのプライベートIPアドレスは、クライアントデバイスが、インターネット上に存在するサーバデバイスなどの、「公衆」ネットワーク上に存在するデバイスと通信することを可能にしない可能性がある。しかしながら、NATデバイスは、パブリックIPアドレスに関連付けられ、公衆ネットワーク上のデバイスと通信することが可能になる可能性がある。したがって、NATデバイスは、プライベートIPアドレスを有するクライアントデバイスから、公衆ネットワーク上のデバイスを宛先とするデータパケットを受信することができる。NATデバイスは、NATデバイスのパブリックIPアドレスを反映し、公衆ネットワーク上のサーバにデータパケットを送るために、データパケットのプライベートIPアドレスを変換することができる。NATデバイス(たとえば、シンメトリックなNATデバイス)は、たとえば、単一のクライアントデバイスからの複数のトラフィックフローを監視するために、トランスポート層ポート情報などの、データパケット内の他の情報をさらに変換することができる。次いで、サーバは、パブリックIPアドレスを使用するNATデバイスに応答して、データパケットを送ることができる。次いで、NATデバイスは、各応答データパケットがどのクライアントデバイスに属するかを判定し、クライアントデバイスの適切なプライベートIPアドレスを有するために応答データパケットを変換しなければならない。
【０００７】
NATデバイスは、NATを実行することができるように、NATを実行し、データパケットをサーバに送る前に、データパケットのすべてのIPフラグメントがクライアントデバイスからNATに到着する前に待機する必要がある可能性があるが、このことは、NATデバイスにおける遅延過誤通信(delay sin communication)およびメモリバッファリング要件の増大につながる可能性がある。このことは、さらに本明細書で説明するように、最初のIPフラグメントが最後にNATデバイスに到着するという、IPフラグメントがNATデバイスに順序が乱れて到着する場合に特に当てはまる可能性がある。
【０００８】
さらに、場合によっては、同じNATデバイスに関連付けられる2つ以上のクライアントデバイスは、IPデータグラムまたはフラグメントに関する同じIP-IDを使用して、これらのデータグラムまたはフラグメントを同じサーバに送る可能性がある。そのような場合、NATがNATデバイスによって実行された後、データグラムまたはフラグメントがサーバに送られ、サーバは、NATデバイスを介して送られた第1のクライアントデバイスおよび第2のクライアントデバイスからのデータグラムまたはフラグメントを区別することができない可能性がある。このことは、通信の非効率性およびエラーにつながる。したがって、NATを実行するシステムおよび方法の向上が必要となる。
【発明の概要】
【課題を解決するための手段】
【０００９】
本発明のシステム、方法およびデバイスはそれぞれ複数の態様を有し、それらのうちの単一のものが単独で、その望ましい属性を担うことはない。以下の特許請求の範囲によって表される本発明の範囲を限定することなく、いくつかの特徴がここで簡単に論じられる。この議論を考慮した後で、また特に「発明を実施するための形態」と題するセクションを読んだ後で、本発明の特徴が、効率的なネットワークアドレス変換(NAT)を含む利点をどのようにして提供するのかが理解されよう。
【００１０】
本開示の一実施形態は、ネットワーク内で通信するための方法を提供する。本方法は、インターネットプロトコル(IP)データパケットの一連のデータパケットフラグメントのうちの1つのデータパケットフラグメントを受信するステップを含む。本方法は、一連のデータパケットフラグメント全体を受信する前にデータパケットフラグメントを送信するステップを含む。
【００１１】
本開示の別の実施形態は、ネットワーク内で通信するための方法を提供する。本方法は、第1のトラフィックフローを介して、第1のインターネットプロトコル識別子(IP-ID)を有するデータパケットフラグメントを受信するステップを含む。本方法は、第1のフローに一意の、データパケットフラグメントに関する第2のIP-IDを生成するステップを含む。本方法は、第2のIP-IDを有するデータパケットフラグメントを送信するステップを含む。
【００１２】
本開示の別の実施形態は、ネットワーク内で通信するための装置を提供する。本装置は、インターネットプロトコル(IP)データパケットの一連のデータパケットフラグメントのうちの1つのデータパケットフラグメントを受信するように構成された受信機を含む。本装置は、一連のデータパケットフラグメント全体を受信する前にデータパケットフラグメントを送信するように構成された送信機を含む。
【００１３】
本開示の別の実施形態は、ネットワーク内で通信するための装置を提供する。本装置は、第1のトラフィックフローを介して、第1のインターネットプロトコル識別子(IP-ID)を有するデータパケットフラグメントを受信するように構成された受信機を含む。本装置は、第1のフローに一意の、データパケットフラグメントに関する第2のIP-IDを生成するように構成されたプロセッサを含む。本装置は、第2のIP-IDを有するデータパケットフラグメントを送信するように構成された送信機を含む。
【００１４】
本開示の別の実施形態は、ネットワーク内で通信するための装置を提供する。本装置は、インターネットプロトコル(IP)データパケットの一連のデータパケットフラグメントのうちの1つのデータパケットフラグメントを受信するための手段を含む。本装置は、一連のデータパケットフラグメント全体を受信する前にデータパケットフラグメントを送信するための手段を含む。
【００１５】
本開示の別の実施形態は、ネットワーク内で通信するための装置を提供する。本装置は、第1のトラフィックフローを介して、第1のインターネットプロトコル識別子(IP-ID)を有するデータパケットフラグメントを受信するための手段を含む。本装置は、第1のフローに一意の、データパケットフラグメントに関する第2のIP-IDを生成するための手段を含む。本装置は、第2のIP-IDを有するデータパケットフラグメントを送信するための手段を含む。
【００１６】
本開示の別の実施形態は、命令を含むコンピュータ可読媒体を提供する。本命令は、実行されるとき、装置に、インターネットプロトコル(IP)データパケットの一連のデータパケットフラグメントのうちの1つのデータパケットフラグメントを受信させる。本命令は、実行されるとき、装置に、一連のデータパケットフラグメント全体を受信する前にデータパケットフラグメントを送信させる。
【００１７】
本開示の別の実施形態は、命令を含むコンピュータ可読媒体を提供する。本命令は、実行されるとき、装置に、第1のトラフィックフローを介して、第1のインターネットプロトコル識別子(IP-ID)を有するデータパケットフラグメントを受信させる。本命令は、実行されるとき、装置に、第1のフローに一意の、データパケットフラグメントに関する第2のIP-IDを生成させる。本命令は、実行されるとき、装置に、第2のIP-IDを有するデータパケットフラグメントを送信させる。
【図面の簡単な説明】
【００１８】
【図１】ネットワークアドレス変換(NAT)デバイスを介した、プライベートネットワークのデバイスの、公衆ネットワークのデバイスとの例示的な相互動作を示す図である。
【図２】部分的なNAT項目を使用してNATを実行するための例示的なプロセスを示すフローチャートである。
【図３】IPフラグメントのIP-IDを、そのIPフラグメントに関連するフローに一意の新規のIP-IDと置き換えるための例示的なプロセス300を示すフローチャートである。
【図４】図1の例示的なNATデバイスの機能ブロック図である。
【図５】図1の別の例示的なNATデバイスの機能ブロック図である。
【図６】図1のさらに別の例示的なNATデバイスの機能ブロック図である。
【発明を実施するための形態】
【００１９】
「例示的な」という言葉は、「例、事例、または例示として役に立つこと」を意味するように本明細書では使用される。「例示的な」として本明細書で説明する任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきでない。以下の説明は、いかなる当業者でも本発明を作成および使用することができるように提示される。以下の説明では、説明のために、詳細が述べられる。本発明が、これらの具体的な詳細を使用することなく実施され得ることを当業者は諒解するであろうことを諒解されたい。他の事例では、不要な詳細により本発明の説明を不明瞭にすることがないように、よく知られている構造およびプロセスは詳述されない。したがって、本発明は、示される実施形態によって限定されるものではなく、本明細書で開示する原理および特徴に一致する最大の範囲を与えられるものである。
【００２０】
本明細書で説明する技法は、符号分割多元接続(CDMA)ネットワーク、時分割多元接続(TDMA)ネットワーク、周波数分割多元接続(FDMA)ネットワーク、直交FDMA(OFDMA)ネットワーク、シングルキャリアFDMA(SC-FDMA)ネットワーク、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、ワイドエリアネットワーク(WAN)、有線ネットワークなどの様々な通信ネットワークに使用され得る。「ネットワーク」および「システム」という用語は、しばしば互換的に使用される。CDMAネットワークは、Universal Terrestrial Radio Access(UTRA)、cdma2000などの無線技術を実装することができる。UTRAは、広帯域CDMA(WCDMA(登録商標))および低チップレート(LCR)を含む。CDMA2000は、IS-2000、IS-95、およびIS-856規格をカバーする。TDMAネットワークは、Global System for Mobile Communications(GSM(登録商標))などの無線技術を実装することができる。OFDMAネットワークは、Evolved UTRA(E-UTRA)、IEEE 802.9、IEEE 802.16、IEEE 802.20、Flash-OFDMなどの無線技術を実装することができる。UTRA、E-UTRA、およびGSM(登録商標)は、Universal Mobile Telecommunication System(UMTS)の一部である。Long Term Evolution(LTE)は、E-UTRAを使用するUMTSの来るべきリリースである。UTRA、E-UTRA、GSM(登録商標)、UMTS、およびLTEは、「第3世代パートナーシッププロジェクト」(3GPP)という名称の組織からの文書に記載されている。cdma2000は、「第3世代パートナーシッププロジェクト2」(3GPP2)という名称の組織からの文書に記載されている。これらの様々な無線技術および規格は、当技術分野で知られている。
【００２１】
シングルキャリア周波数分割多元接続(SC-FDMA)は、シングルキャリア変調および周波数領域等化を利用する。SC-FDMAは、OFDMAシステムと同様の性能、および本質的に同様の全体的な複雑さを有する。SC-FDMA信号は、その一意のシングルキャリア構造のために、より低いピーク対平均電力比(PAPR)を有する。SC-FDMAは、特に、より低いPAPRが送信電力効率に関してモバイル端末に大幅に利益を与えるアップリンク通信において、大きな関心をひいた。それは現在、3GPP Long Term Evolution(LTE)またはEvolved UTRA(E-UTRA)におけるアップリンク多元接続方式に関する作業仮説である。
【００２２】
ネットワークアドレス変換(NAT)を介してインターネットプロトコル(IP)フラグメントの効率的な処理を実行するシステムおよび方法を本明細書で説明する。態様によっては、NATは、SoftAP(ソフトウェアアクセスポイント)デバイスによって実行され得る。本明細書で説明するNATは、NAT項目にトランスポートヘッダ情報を記憶することを含む、「シンメトリック」タイプのNATである可能性がある。
【００２３】
図1は、NATデバイスを介した、プライベートネットワークのデバイスの、公衆ネットワークのデバイスとの例示的な相互動作を示す。図1は、いくつかの通信デバイス102a〜102c(たとえば、モバイルハンドセット、PDA(携帯情報端末)、パーソナルコンピュータ、スマートフォン、サーバ、またはネットワークを介して通信することができる任意の他の電子デバイス)間の通信をサポートするように構成されたプライベートネットワーク(たとえば、LAN、PAN、WANなど)を示す。デバイス102a〜102cは、プライベートネットワークにおいてプライベートIPアドレスを使用して互いに通信することができる。
【００２４】
通信デバイス102a〜102cは、1つまたは複数の有線またはワイヤレスの通信リンクによって相互接続される可能性がある。通信リンクは、以下のタイプの通信リンクのうちの1つまたは複数を含む可能性がある。すなわち、GSM(登録商標)(Global System for Mobile communications)、UMTS(ユニバーサルモバイル通信システム)、UMTS-TDD(UMTS-時分割複信)、CDMA(符号分割多元接続)、CDMA2000、WCDMA(登録商標) (広帯域CDMA)、TDMA(時分割多元接続)、FDMA(周波数分割多元接続)、1xEV-DO(エボリューション・データ最適化)、Wi-Fi、Wi-Max、Bluetooth(登録商標)、またはIEEE 802.11、電話(たとえば、POTS)、ケーブル、Ethernet(登録商標)、PLC(電力線通信)、または光ファイバーリンク、またはデバイス間の接続を可能にする任意の他のリンク。プライベートネットワークは、より多いまたはより少ない通信デバイス102を含むことができ、通信デバイス102間のリンクの異なる構成が存在する可能性があることに留意されたい。
【００２５】
通信デバイス102は、上述の通信リンクなどの、1つまたは複数のワイヤレスおよび/または有線の通信リンクを介して、プライベートネットワークにおいてNATデバイスのプライベートIPアドレスを使用してNATデバイス104と通信するようにさらに構成され得る。NATデバイス104は、上述の通信リンクなどの、1つまたは複数のワイヤレスおよび/または有線の通信リンクを介して、インターネット105などの公衆ネットワークにさらに接続され得る。NATデバイス104は、SoftAP、アクセスポイント、またはクライアントデバイス102から送信されインターネット105上のデバイス(たとえば、サーバまたは他のデバイス)を宛先とするデータパケットのNATを実行するように構成されたいくつかの他の適切なデバイスである可能性がある。たとえば、クライアントデバイス102は、NATデバイス104にルーティングされるサーバ106aおよび/またはサーバ106bに向けてデータパケット(たとえば、IPデータパケット)を送信することができる。データパケットは、データパケットのソースを示すためにデータパケットを送信したクライアントデバイス102のプライベートIPアドレスを含む可能性がある。NATデバイス104は、プライベートネットワークにおいて通信用に使用されるデータパケットのプライベートIPアドレスを、インターネット上で通信用に使用されるパブリックIPアドレスに変換することができる。パブリックIPアドレスは、NATデバイス104に関連付けられたパブリックIPアドレスである可能性がある。NATデバイス104は、プライベートネットワーク上で通信用に使用されるプライベートポート(private port)などのデータパケットのトランスポートレベル情報を、インターネット105上で通信用に使用されるパブリックポート(public port)にさらに変換することができる。NATデバイス104は、クライアントデバイス102から、サーバ106aおよび/または106bなどのインターネット105上のデバイスにデータパケットをさらに送信することができる。サーバ106aおよび/または106bは、データパケットを処理し、クライアントデバイス102を宛先とする応答データパケットをNATデバイス104に送信することができる。NATデバイス104は、応答データパケットのパブリックIPアドレスを、クライアントデバイス102の適切なプライベートIPアドレスに変換し、応答データパケットをクライアントデバイス102に送信することができる。NATデバイス104は、インターネット105上で通信用に使用されるパブリックポートなどのデータパケットのトランスポートレベル情報を、プライベートネットワーク上で通信用に使用されるプライベートポートにさらに変換することができる。
【００２６】
NATデバイス104は、クライアントデバイス102aからの一連のIPフラグメントとしてデータパケットを受信することができる。態様によっては、NATデバイス104は、NATを実行し、データパケットをその宛先、たとえばサーバ106aに送信する前に、データパケットのすべてのIPフラグメントがNATデバイス104に到着するまで待機する。したがって、NATデバイス104は、メモリ内のIPフラグメントが送信されるまで、それらのIPフラグメントを記憶することができる。これは、IPフラグメントに関するNATを実行するのに必要なトランスポートヘッダ情報(ポート変換に必要である場合がある)がデータパケットの第1のIPフラグメントにのみ含まれ、残りのIPフラグメントには含まれないので、発生する可能性がある。したがって、NATデバイス104は、必要なトランスポートヘッダ情報を判定し、データパケットをNATするために、データパケットのすべてのIPフラグメントを受信するまで待機する。NATデバイス104は、データパケットのNAT項目を作成するために、トランスポートヘッダ情報を他の情報とともに使用する。NAT項目は、NATデバイス104のメモリ上にあるNATデータベースに記憶され得る。次いで、データパケットは、サーバ106aに送信される。NAT項目は、応答を適切なクライアントデバイス102に送信するために応答がどのクライアントデバイス102に関連付けられるかを判定するように、サーバ106aからの応答を受信するとき、NATデバイス104によって使用される。NATデバイス104における各NAT項目は、特定のパケットフロー用(たとえば、ローカルIPアドレス、ローカルポート、ターゲットIPアドレス、ターゲットポート、グローバルIPアドレス、グローバルポート、およびIP-IDなどの同じ特性を有するデータパケット用)である可能性がある。したがって、各NAT項目は、特定のIP/トランスポートパケットフローに対応し、それを識別することができる。
【００２７】
いくつかの態様では、NATデバイス104は、データパケットのすべてのIPフラグメント(たとえば、一連のIPフラグメントのうちの第1のIPフラグメント)がNATデバイス104に到着する前にデータパケットをNATするように構成され得る。したがって、NATデバイス104は、IPフラグメントが(たとえば、クライアント102aから)NATデバイス104に到着するとき、IPフラグメントに関するNATを実行し、パケットのすべてのIPフラグメントがNATデバイス104で受信される前にIPフラグメントが宛先デバイス(たとえば、サーバ106a)に送信される。NATデバイス104において、データパケットの一連のIPフラグメント(たとえば、順番にフラグメント1、2、3、および4)のうちの第1のIPフラグメント(たとえば、1)が、他のIPフラグメント(たとえば、2、3、および4)より前に受信される場合、NATデバイス104は、トランスポートヘッダが第1のIPフラグメントに含まれるので、データパケット用の完全なNAT項目を作成する。完全なNAT項目は、ローカルIPアドレス、ローカルポート、ターゲットIPアドレス、ターゲットポート、グローバルIPアドレス、グローバルポート、およびIP-IDなどの情報を含む可能性がある。
【００２８】
データパケットの第1のIPフラグメント(たとえば、1)が受信される前にデータパケットの異なるIPフラグメント(たとえば、2、3、および/または4)がNATデバイス104で受信される場合、NATデバイス104は、トランスポートヘッダからの情報でなく、IPフラグメントに基づいてNATデバイス104が有する情報のみを含む部分的なNAT項目を作成する。たとえば、部分的なNAT項目は、ローカルIPアドレス、ターゲットIPアドレス、グローバルIPアドレス、グローバルポート、およびIP-IDなどの情報を含む可能性がある。しかしながら、部分的なNAT項目は、完全なNAT項目に含まれるローカルポートおよびターゲットポートが欠落している可能性がある。パケットの第1のIPフラグメントが受信されるとき、NATデバイス104は、部分的なNAT項目を更新して完全なNAT項目にする。部分的なNAT項目の使用は、パケットのすべてのIPフラグメントが宛先に受信されるまで、宛先デバイス(たとえば、サーバ106a)が応答しないことに基づけば、問題があるべきでなく、このことは、サーバ106aが応答する時間までに、NATデバイス104は、完全なNAT項目を有することを意味する。態様によっては、サーバ106aは、パケットのIPフラグメントのすべてを受信する前にインターネット制御メッセージプロトコル(ICMP)エラーメッセージを送信する可能性がある。しかしながら、NATデバイス104は、そのようなICMPエラーメッセージをNATし、これらのエラーメッセージを部分的なNAT項目に基づいて適切なクライアントデバイス102に返送することができる。
【００２９】
部分的なNAT項目の使用により、NATデバイス104は、どのIPフラグメントが部分的なNAT項目にマッチする情報を有するかを判定することによって、異なるクライアントデバイス102からの異なるパケットのIPフラグメントを区別することが可能になる。したがって、NATデバイス104は、IPフラグメントおよび応答がどこにルーティングされるべきかに絶えず注意することができる。さらに、部分的なNAT項目により、サーバ106aなどの宛先デバイスから受信したエラー応答を、部分的なNAT項目内の情報に基づいてクライアントデバイス102に正しくルーティングすることが可能になる。
【００３０】
態様によっては、NATデバイス104は、サーバ106aなどの宛先デバイスに送信するために第1のクライアントデバイス102aから第1のIP-IDを有する第1のIPフラグメントを受信することができ、同じ宛先デバイス、すなわちサーバ106aに送信するために第2のクライアントデバイス102bから第1のIP-IDを有する第2のIPフラグメントを受信することもできる。NATデバイス104は、態様によっては、第1のIPフラグメントと第2のIPフラグメントの両方をNATすることができ、その結果、これらはどちらも、サーバ106aに送信されるとき、同じソースアドレスおよび宛先アドレス(ソースアドレスはNATデバイス104アドレスであり、宛先アドレスはサーバ106aアドレスである)を有する。次いで、サーバ106aが第1のIPフラグメントおよび第2のIPフラグメントを受信するとき、サーバ106aは、ソースアドレス、宛先アドレス、およびIPフラグメントの両方の組に関するIP-IDが同じであるとき、これらのIPフラグメントが異なるパケットに関するものであることを区別することができない。このことにより、サーバ106aにエラーがもたらされる。たとえば、サーバ106aは、IPフラグメントの両方の組が同じクライアントデバイス102からのものであり、したがって、同じパケットの一部であると仮定する。サーバ106aは、IPフラグメントの両方の組を使用し、次いで、単一のパケットを再統合しようとする。このことが、再統合エラーをもたらし、サーバ106aにおいてパケットを欠落させる。
【００３１】
態様によっては、IPフラグメントの異なる組が異なるパケットのものであるとサーバ106aが判定することができない問題を解決するために、NATデバイス104は、パケットの元のIP-IDを生成されたIP-IDと置き換える。たとえば、第1のクライアントデバイス102aは、サーバ106aに送信するために、第1のIP-IDを有するデータパケットフラグメントをNATデバイス104に送信することができる。さらに、第2のクライアントデバイス102bは、サーバ106aに送信するために、第1のIP-IDを有するデータパケットフラグメントをNATデバイス104に送信することができる。したがって、NATデバイス104は、第1のクライアント102aからサーバ106aに送信されたデータパケットに一意の第1の新規のIP-ID、および第2のクライアント102bからサーバ106aに送信されたデータパケットに一意の第2の新規のIP-IDを生成することができる。次いで、NATデバイス104は、第1のクライアントデバイス102aに関するIPフラグメントの第1のIP-IDを第1の新規のIP-IDと置き換え、第2のクライアントデバイス102bに関するIPフラグメントの第1のIP-IDを第2の新規のIP-IDと置き換えることができる。NATデバイス104は、昇順に、ランダムに、擬似ランダムに、ハッシュ関数などでIP-IDを選択するなど、任意の適切なアルゴリズムに基づいて新規のIP-IDを選択することができる。第1の新規のIP-IDおよび第2の新規のIP-IDは各々、第1のIP-IDとは異なる可能性がある。そうでない場合、第1の新規のIP-IDまたは第2の新規のIP-IDのいずれか一方は、第1のIP-IDと同じである可能性があり、第1の新規のIP-IDまたは第2の新規のIP-IDの他方は、第1のIP-IDとは異なる可能性がある。したがって、サーバ106aは、第1のクライアントデバイス102aおよび第2のクライアントデバイス102bの各々からデータパケットに関する異なるIP-IDを有するIPフラグメントを受信し、これらを区別することができる。さらに、態様によっては、部分的なNAT項目により、NATデバイス104は、所与のクライアントデバイス102からの所与のパケットに関するすべてのIPフラグメントが同じIP-IDを有する可能性があるとき、どのIP-IDがどのIPフラグメントのために生成されるかに絶えず注意することが可能になる。
【００３２】
上記で説明したように、部分的なNAT項目の使用により、NATデバイス104は、データパケットのIPフラグメントのすべてがNATデバイス104で受信される前にデータパケットのIPフラグメントを送信することが可能になる場合がある。したがって、NATデバイス104は、送信前にIPフラグメントを記憶し/待ち行列に入れる必要がないので、メモリ要件を低減させる可能性がある。さらに、NATデバイス104は、部分的なNAT項目を利用するとき、データパケットのIPフラグメントの再統合/再フラグメンテーションを実行する必要がない可能性がある。したがって、CPUまたはNATデバイス104のプロセッサによって実行される動作の数は、低減される可能性がある。より小さいCPU使用量は、より小さい電力消費量をもたらす可能性もある。加えて、データパケットは、再統合/フラグメンテーションを回避することによって、少ない遅延量で送信され、したがって、NATデバイス104における処理能力を増大させる。
【００３３】
図2は、部分的なNAT項目を使用してNATを実行するための例示的なプロセス200を示すフローチャートである。ブロック205では、NATデバイス104は、クライアントデバイス102からデータパケットのIPフラグメントを受信する。さらに、ブロック207では、NATデバイス104は、NATデバイス104において対応するNAT項目がすでに存在するデータパケットにIPフラグメントが対応するかどうかを判定する。ブロック207において、対応するNAT項目が存在しないとNATデバイス104が判定する場合、プロセス200は、ブロック209に続く。ブロック207において、対応するNAT項目が存在するとNATデバイス104が判定する場合、プロセス200は、ブロック215に続く。
【００３４】
ブロック209では、NATデバイス104は、データパケットのIPフラグメントがデータパケットの順序の第1のIPフラグメントであるかどうかを判定する。ブロック209において、データパケットのIPフラグメントがデータパケットの順序の第1のIPフラグメントであるとNATデバイス104が判定する場合、プロセスはブロック211に続く。ブロック211では、NATデバイス104は、IPフラグメント内のトランスポートヘッダに基づいてIPフラグメントに関する完全なNAT項目を作成する。ブロック209において、データパケットのIPフラグメントがデータパケットの順序の第1のIPフラグメントでないとNATデバイス104が判定する場合、プロセスはブロック213に続く。ブロック213では、NATデバイス104は、IPフラグメントに関する部分的なNAT項目を作成する。次いで、プロセス200はブロック221に続く。
【００３５】
ブロック215では、対応するNAT項目が完全なNAT項目または部分的なNAT項目であるかどうかをNATデバイス104が判定する。対応するNAT項目が部分的なNAT項目であるとNATデバイス104が判定する場合、プロセス200は、ブロック217に続く。対応するNAT項目が完全なNAT項目であるとNATデバイス104が判定する場合、プロセス200は、ブロック221に続く。
【００３６】
ブロック217では、NATデバイス104は、データパケットのIPフラグメントがデータパケットの順序の第1のIPフラグメントであるかどうかを判定する。データパケットのIPフラグメントがデータパケットの順序の第1のIPフラグメントであるとNATデバイス104が判定する場合、プロセス200はブロック219に続く。ブロック219では、NATデバイス104は、IPフラグメント内のトランスポートヘッダに基づいて部分的なNAT項目を完全なNAT項目に変換する。次いで、プロセス200はブロック221に続く。データパケットのIPフラグメントがデータパケットの順序の第1のIPフラグメントでないとNATデバイス104が判定する場合、プロセス200はブロック221に続く。
【００３７】
ブロック221では、NATデバイス104は、IPフラグメントのNATを実行する。NATデバイス104は、ブロック223に続くとき、IPフラグメントをその宛先(たとえば、サーバ106a)に送信する。
【００３８】
図3は、IPフラグメントのIP-IDを、そのIPフラグメントに関連するフローに一意の新規のIP-IDと置き換えるための例示的なプロセス300を示すフローチャートである。ブロック305では、NATデバイス104は、第1のトラフィックフローを介して、第1のIP-IDを有するIPフラグメントを受信する。NATデバイス104は、ブロック310に続くとき、第1のトラフィックフローに一意のIPフラグメントに関する第2のIP-IDを生成する。さらに、ブロック315では、NATデバイス104は、たとえば部分的なNAT項目または完全なNAT項目の一部として、第1のIP-IDの第2のIP-IDへのマッピングを記憶する。次に、ブロック320では、NATデバイス104は、第2のIP-IDを使用してIPフラグメントのNATを実行する。さらに、ブロック325では、NATデバイス104は、IPフラグメントをその宛先(たとえば、サーバ106a)に送信する。
【００３９】
プロセス200および300に様々なステップを加えるか、またはこれらのステップから様々なステップを省略することができることを当業者は認識されたい。さらに、プロセス200および300の様々なステップは、上述のものとは異なる順序で実行され得る。
【００４０】
図4は、図1の例示的なNATデバイス104の機能ブロック図である。NATデバイス104は、本明細書で説明する様々な方法を実装するように構成され得るデバイスの一例である。NATデバイス104は、AP、またはSoftAPとして動作するモバイルフォンなどのコンピューティングデバイスを含み得る。
【００４１】
NATデバイス104は、NATデバイス104の動作を制御するプロセッサ405を含み得る。プロセッサ405は中央処理装置(CPU)と呼ばれることもある。読取り専用メモリ(ROM)とランダムアクセスメモリ(RAM)の両方を含み得るメモリ406は、命令およびデータをプロセッサ405に与える。メモリ406の一部分は不揮発性ランダムアクセスメモリ(NVRAM)をも含み得る。プロセッサ405は、一般に、メモリ406内に記憶されたプログラム命令に基づいて論理および算術演算を実行する。メモリ406中の命令は、本明細書で説明する方法を実装するように実行可能であり得る。
【００４２】
NATデバイス104が送信ノードとして実装または使用されるとき、プロセッサ405は、上記でさらに詳細に説明したように、データを生成し、データを処理し、NATデバイス104の動作を制御するように構成され得る。
【００４３】
NATデバイス104が受信ノードとして実装または使用されるとき、プロセッサ405は、上記でさらに詳細に説明したように、データを生成し、データを処理し、NATデバイス104の動作を制御するように構成され得る。
【００４４】
プロセッサ405は、1つもしくは複数のプロセッサとともに実装される処理システムの構成要素を備え、または構成要素であってよい。1つまたは複数のプロセッサは、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラム可能ゲートアレイ(FPGA)、プログラム可能論理デバイス(PLD)、コントローラ、状態機械、ゲート論理、個別ハードウェア構成要素、専用ハードウェア有限状態機械、または情報の算出もしくは他の操作を実施し得る他のどの適したエンティティのどの組合せを有しても実装され得る。
【００４５】
処理システムは、ソフトウェアを記憶するための機械可読媒体も含み得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などの名称にかかわらず、任意のタイプの命令を意味すると広く解釈されたい。命令は、(たとえば、ソースコード形式、バイナリコード形式、実行可能コード形式、または任意の他の適切なコード形式の)コードを含み得る。命令は、1つまたは複数のプロセッサによって実行されると、処理システムに、本明細書で説明される様々な機能を実行させる。
【００４６】
NATデバイス104は、NATデバイス104と遠隔地との間のデータの送信および受信を可能にするために送信機410および/または受信機414を含み得る、筐体408をも含み得る。送信機410および受信機414は、組み合わされて送受信機415になり得る。アンテナ416は、筐体408に取り付けられ、送受信機415に電気的に結合され得る。NATデバイス104は、(図示しない)複数の送信機、複数の受信機、複数の送受信機、および/または複数のアンテナも含み得る。送信機410は、データをワイヤレスに送信するように構成され得る。受信機414は、データを受信するように構成され得る。
【００４７】
NATデバイス104は、送受信機415によって受信された信号のレベルを検出および定量化するために使用され得る信号検出器418も含み得る。信号検出器418は、総エネルギー、シンボルごとのサブキャリア当たりのエネルギー、電力スペクトル密度および他の信号などの信号を検出し得る。NATデバイス104は、信号を処理する際に使用するためのデジタル信号プロセッサ(DSP)440も含み得る。DSP440は、送信用のパケットを生成するように構成され得る。
【００４８】
NATデバイス104は、いくつかの態様では、ユーザインターフェース444をさらに含み得る。ユーザインターフェース444は、キーパッド、マイクロホン、スピーカ、および/またはディスプレイを備え得る。ユーザインターフェース444は、NATデバイス104のユーザに情報を伝え、および/またはユーザから入力を受信するどの要素または構成要素も含み得る。
【００４９】
NATデバイス104の様々な構成要素は、バスシステム446によって互いに結合され得る。バスシステム446は、データバス、ならびに、たとえばデータバスに加えて、電力バス、制御信号バス、および状態信号バスを含み得る。NATデバイス104の構成要素は、何らかの他の機構を使用して、互いに結合されるか、または互いに入力を受け入れるか、もしくは提供することができることを、当業者は諒解するであろう。
【００５０】
いくつかの別個の構成要素が図4に示されているが、構成要素のうち1つまたは複数は、組み合わされるか、または共通して実装され得ることを当業者は理解するであろう。たとえば、プロセッサ405は、プロセッサ405に関して上述した機能を実装するだけでなく、信号検出器418および/またはDSP440に関して上述した機能を実装するのにも使用され得る。さらに、図4に示される構成要素の各々は、複数の別個の要素を使用して実装され得る。
【００５１】
図4は、NATデバイス104の一例にすぎないことを理解されたい。NATデバイス104は、上記で説明したように、任意の適切な通信デバイスを含むこともでき、データおよび/または命令を記憶するためのメモリ、命令を実行し本明細書で説明する方法を実行するためのプロセッサ、およびデータを通信するための送受信機(または受信機および送信機)、および/または何らかの他の通信インターフェースをさらに含むことができる。
【００５２】
図5は、図1の別の例示的なNATデバイスの機能ブロック図である。デバイス500は、図2に関して説明した様々な動作を実行するための手段505、510、515、および520を含む。
【００５３】
図6は、図1のさらに別の例示的なNATデバイスの機能ブロック図である。デバイス600は、図3に関して説明した様々な動作を実行するための手段606、610、616、および620を含む。
【００５４】
本明細書で「第1の」、「第2の」などの呼称を使用した要素へのいかなる参照も、全体的にそれらの要素の量または順序を限定しないことを理解されたい。むしろ、これらの呼称は、2つ以上の要素の間、または要素の例の間を区別する都合のよい方法として本明細書で使用され得る。したがって、第1のおよび第2の要素への参照は、2つの要素のみがそこで採用され得ること、または何らかの形で第1の要素が第2の要素に先行しなければならないことを意味しない。また、別段に記載されていない限り、1組の要素は1つまたは複数の要素を含む場合がある。加えて、説明または特許請求の範囲に使用される「A、B、またはCのうちの少なくとも1つ」という形式の用語法は、「AもしくはBもしくはC、またはこれらの要素の任意の組合せ」を意味する。
【００５５】
情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることを当業者は理解するであろう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００５６】
本明細書で開示した例に関連して説明した様々な例示的な論理ブロック、モジュール、回路、方法、およびアルゴリズムは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを当業者はさらに諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、方法、およびアルゴリズムを、上記では概してそれらの機能に関して説明してきた。そのような機能をハードウェアとして実装するか、またはソフトウェアとして実装するかどうかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００５７】
本明細書で開示する例に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または、本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで、実装または実行することができる。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSP通信と連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装することもできる。
【００５８】
本明細書で開示する態様に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで具体化されるか、プロセッサによって実行されるソフトウェアモジュールで具体化されるか、またはその2つの組合せで具体化され得る。ソフトウェアモジュール(たとえば、実行可能な命令および関連データを含む)および他のデータは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態のコンピュータ可読記憶媒体などのデータメモリ中に存在し得る。サンプル記憶媒体は、プロセッサが記憶媒体から情報(たとえば、コード)を読み取り、記憶媒体に情報を書き込むことができるように、たとえば、コンピュータ/プロセッサ(便宜上「プロセッサ」として本明細書では呼ぶ場合がある)などのマシンに結合され得る。サンプル記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICはユーザ機器中に存在し得る。代替として、プロセッサおよび記憶媒体は、ユーザ機器中に個別の構成要素として存在し得る。さらに、態様によっては、任意の適切なコンピュータプログラム製品は、本開示の態様のうちの1つまたは複数に関する(たとえば、少なくとも1つのコンピュータによって実行可能な)コードを含むコンピュータ可読媒体を含み得る。態様によっては、コンピュータプログラム製品は、実装材料を含み得る。
【００５９】
1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装する場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、命令もしくはデータ構造の形態の所望のプログラムコードを搬送もしくは記憶するために使用でき、コンピュータによってアクセスできる、任意の他の媒体を含み得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使われる場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フレキシブルディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザで光学的にデータを再生する。したがって、一部の態様において、コンピュータ可読媒体は、非一時的コンピュータ可読媒体(たとえば、有形媒体)を含み得る。さらに、一部の態様において、コンピュータ可読媒体は、一時的コンピュータ可読媒体(たとえば、信号)を含み得る。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【００６０】
開示される例の上記の説明は、いかなる当業者も本発明を作成または使用することができるように提供される。これらの例に対する様々な修正が当業者には容易に明らかになることになり、本明細書に定義する一般原理は、本発明の趣旨または範囲を逸脱することなく他の例に適用され得る。したがって、本発明は、本明細書に示す例に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最大の範囲を与えられるものである。
【符号の説明】
【００６１】
102a  デバイス
102b  デバイス
102c  デバイス
104  NATデバイス
105  インターネット
106a  サーバ
106b  サーバ
405  プロセッサ
406  メモリ
408  筐体
410  送信機
414  受信機
415  送受信機
416  アンテナ
418  信号検出器
440  デジタル信号プロセッサ(DSP)
444  ユーザインターフェース
446  バスシステム
【図１】
0005796135.tif 000002
【図２】
0005796135.tif 000003
【図３】
0005796135.tif 000004
【図４】
0005796135.tif 000005
【図５】
0005796135.tif 000006
【図６】
0005796135.tif 000007