(57)【特許請求の範囲】
【請求項１】
内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にする方法であって、前記内部ネットワークがネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離され、前記方法は、
モバイルデバイス上で実行しているプロキシにおいて、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトすることであって、前記モバイルデバイスがセルラーネットワークに結合されており、前記通信が、第１のプロトコルに適合して、前記モバイルデバイス上で実行しているクライアントアプリケーションから前記ターゲットピアに送られ、前記第１のプロトコルは、ＳＴＵＮを使用して２つのターゲットピアのうちの前記ターゲットピアがＮＡＴの後ろにあるかどうかを決定するための、前記２つのターゲットピア間のプロトコル交換である、インターセプトすることと、
前記プロキシにおいて、前記第１のプロトコルとは異なるプレゼンスプロトコルに関連付けられたレジストリに登録することであって、前記セルラーネットワークの事業者が、１つまたは複数の登録されたプロキシにプレゼンスサービスを提供し、前記プレゼンスサービスが、前記プレゼンスプロトコルに関連付けられる、登録することと、
前記プレゼンスサービスを介して前記プロキシにおいて、前記ターゲットピアが前記セルラーネットワークを介して到達可能であるかどうかを決定することと、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、前記プレゼンスプロトコルにおいて前記クライアントアプリケーションと通信するための要求を前記セルラーネットワーク上で前記ターゲットピアに送ることと、
前記ターゲットピアが前記セルラーネットワーク上で到達可能でないと決定されたとき、前記第１のプロトコルにおいて前記クライアントアプリケーションと通信するための要求を前記ターゲットピアに送ることと
を備える、方法。
【請求項２】
前記クライアントアプリケーションがブラウザである、請求項１に記載の方法。
【請求項３】
前記ターゲットピアに送るための１つまたは複数の呼を前記クライアントアプリケーションから前記第１のプロトコルにおいて受信することと、
前記受信された呼のうちの１つまたは複数を廃棄することと
をさらに備える、請求項１に記載の方法。
【請求項４】
前記モバイルデバイスが、スマートフォン、タブレット、ラップトップ、または携帯情報端末である、請求項１に記載の方法。
【請求項５】
前記第１のプロトコルが、前記モバイルデバイスから前記ターゲットピアへの１つまたは複数の経路を発見することと、互いに対して前記１つまたは複数の経路に優先度を割り当てることとを含む、請求項１に記載の方法。
【請求項６】
前記第１のプロトコルが、前記モバイルデバイスの外部インターネットプロトコル（ＩＰ）アドレスを発見するための第３のプロトコルによる通信を送ることを含む、請求項５に記載の方法。
【請求項７】
前記第３のプロトコルがＴＵＲＮである、請求項６に記載の方法。
【請求項８】
前記第１のプロトコルが、前記２つのターゲットピア間の永続的接続を確立するための第３のプロトコルによる通信を送ることを含む、請求項５に記載の方法。
【請求項９】
前記第３のプロトコルがＴＵＲＮである、請求項８に記載の方法。
【請求項１０】
前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定され、
前記方法は、
前記ターゲットピアに送られているキープアライブメッセージのレートを決定することと、
前記ターゲットピアに送られているキープアライブメッセージの前記レートを変調することと
をさらに備え、ここにおいて、前記変調することが、キープアライブメッセージをインターセプトすることと、前記インターセプトされたキープアライブメッセージのうちの１つまたは複数を廃棄することとを含む、請求項１に記載の方法。
【請求項１１】
前記第１のプロトコルが対話型通信確立（ＩＣＥ）である、請求項１に記載の方法。
【請求項１２】
プロキシが前記モバイルデバイス上に常駐するかどうかを要求する通信を受信することと、
前記プロキシが前記モバイルデバイス上に常駐することを示す通信を送ることと
をさらに備える、請求項１に記載の方法。
【請求項１３】
前記プロキシが、事前に指定されたＩＰアドレスを割り当てられる、請求項１に記載の方法。
【請求項１４】
前記プロキシが、前記モバイルデバイス上で使用するために予約されたＩＰアドレスを割り当てられる、請求項１に記載の方法。
【請求項１５】
前記セルラーネットワークがＬＴＥネットワークである、請求項１に記載の方法。
【請求項１６】
内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするためのシステムであって、前記内部ネットワークがネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離され、前記システムは、
モバイルデバイス上で実行可能なインターセプトモジュールと、ここにおいて、前記インターセプトモジュールが、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトし、ここにおいて、前記モバイルデバイスがセルラーネットワークに結合されており、前記通信が、第１のプロトコルに適合し、前記モバイルデバイス上で実行しているクライアントアプリケーションから前記ターゲットピアに送られ、前記第１のプロトコルは、ＳＴＵＮを使用して２つのターゲットピアのうちの前記ターゲットピアがＮＡＴの後ろにあるかどうかを決定するための、前記２つのターゲットピア間のプロトコル交換である、
前記第１のプロトコルとは異なるプレゼンスプロトコルに関連付けられたレジストリに登録するプロキシと、ここにおいて、前記セルラーネットワークの事業者が、１つまたは複数の登録されたプロキシにプレゼンスサービスを提供し、前記プレゼンスサービスが、前記プレゼンスプロトコルに関連付けられる、
前記モバイルデバイス上で実行可能な通信モジュールと、ここにおいて、前記通信モジュールは、前記ターゲットピアが前記セルラーネットワークを介して到達可能であるかどうかを決定し、前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、前記通信モジュールのネットワークが、前記プレゼンスプロトコルにおいて前記クライアントアプリケーションと通信するための要求を前記セルラーネットワーク上で前記ターゲットピアに送り、前記ターゲットピアが前記セルラーネットワーク上で到達可能でないと決定されたとき、前記通信モジュールが、前記第１のプロトコルにおいて前記クライアントアプリケーションと通信するための要求を前記ターゲットピアに送る、
を備える、システム。
【請求項１７】
前記インターセプトモジュールが、前記ターゲットピアに送るための１つまたは複数の呼を前記クライアントアプリケーションから前記第１のプロトコルにおいて受信し、前記受信された呼のうちの１つまたは複数を廃棄する、請求項１６に記載のシステム。
【請求項１８】
前記モバイルデバイスが、スマートフォン、タブレット、ラップトップ、または携帯情報端末である、請求項１６に記載のシステム。
【請求項１９】
前記インターセプトモジュールが、前記モバイルデバイスから前記ターゲットピアへの１つまたは複数の経路を発見し、互いに対して前記１つまたは複数の経路に優先度を割り当てる、請求項１６に記載のシステム。
【請求項２０】
前記インターセプトモジュールが、前記２つのターゲットピア間の永続的接続を確立するための第３のプロトコルによる通信を送る、請求項１６に記載のシステム。
【請求項２１】
前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、前記インターセプトモジュールが、前記ターゲットピアに送られているキープアライブメッセージのレートを決定し、前記ターゲットピアに送られているキープアライブメッセージの前記レートを変調し、ここにおいて、前記インターセプトモジュールが、キープアライブメッセージをインターセプトし、前記インターセプトされたキープアライブメッセージのうちの１つまたは複数を廃棄する、請求項１６に記載のシステム。
【請求項２２】
モバイルデバイス上で実行しているプロキシにおいて、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトすることであって、前記モバイルデバイスがセルラーネットワークに結合されており、前記通信が、第１のプロトコルに適合して、前記モバイルデバイス上で実行しているクライアントアプリケーションから前記ターゲットピアに送られ、前記第１のプロトコルは、ＳＴＵＮを使用して２つのターゲットピアのうちの前記ターゲットピアがＮＡＴの後ろにあるかどうかを決定するための、前記２つのターゲットピア間のプロトコル交換である、インターセプトすることと、
前記プロキシにおいて、前記第１のプロトコルとは異なるプレゼンスプロトコルに関連付けられたレジストリに登録することであって、前記セルラーネットワークの事業者が、１つまたは複数の登録されたプロキシにプレゼンスサービスを提供し、前記プレゼンスサービスが、前記プレゼンスプロトコルに関連付けられる、登録することと、
前記プレゼンスサービスを介して前記プロキシにおいて、前記ターゲットピアが前記セルラーネットワークを介して到達可能であるかどうかを決定することと、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、前記プレゼンスプロトコルにおいて前記クライアントアプリケーションと通信するための要求を前記セルラーネットワーク上で前記ターゲットピアに送ることと、
前記ターゲットピアが前記セルラーネットワーク上で到達可能でないと決定されたとき、前記第１のプロトコルにおいて前記クライアントアプリケーションと通信するための要求を前記ターゲットピアに送ることと
を備える動作を実行するためのコンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体。
【請求項２３】
内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするための装置であって、前記内部ネットワークがネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離され、前記装置は、
ターゲットピアとのリアルタイム通信接続を開始するための発信ピアからの通信をモバイルデバイスにおいてインターセプトするための手段と、前記モバイルデバイスがセルラーネットワークに結合されており、前記通信が、第１のプロトコルに適合し、前記モバイルデバイス上で実行しているクライアントアプリケーションから前記ターゲットピアに送られ、前記第１のプロトコルは、ＳＴＵＮを使用して２つのターゲットピアのうちの前記ターゲットピアがＮＡＴの後ろにあるかどうかを決定するための、前記２つのターゲットピア間のプロトコル交換である、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であるかどうかを決定するための手段と、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、プレゼンスプロトコルにおいて前記クライアントアプリケーションと通信するための要求を前記セルラーネットワーク上で前記ターゲットピアに送るための手段と、
前記ターゲットピアが前記セルラーネットワーク上で到達可能でないと決定されたとき、前記第１のプロトコルにおいて前記クライアントアプリケーションと通信するための要求を前記ターゲットピアに送るための手段と
を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]本出願は、その全体がともに参照により本明細書に組み込まれる、２０１３年９月１３日に出願された米国仮特許出願第６１／８７７，９１４号の優先権を主張する、２０１４年６月１２日に出願された米国非仮特許出願第１４／３０３，３２４号の優先権を主張する。
【０００２】
[0002]本開示は、一般にネットワーク通信に関し、より詳細には、モバイルデバイスにおけるネットワーク通信に関する。
【背景技術】
【０００３】
[0003]ＷｅｂＲＴＣ（ウェブリアルタイム通信：Web Real-Time Communications）は、ＪａｖａＳｃｒｉｐｔ（登録商標）アプリケーションプログラミングインターフェース（ＡＰＩ）を介してリアルタイム通信機能をウェブブラウザに追加することを目的とするオープンなプロジェクト（an open project）である。ＷｅｂＲＴＣは、プラグイン、ダウンロード、またはインストールを必要とすることなしに、ウェブ上でリッチなリアルタイムマルチメディアアプリケーションを書く能力をウェブアプリケーション開発者に提供する。たとえば、ＷｅｂＲＴＣは、（たとえば、同じデバイス上の、同じプライベートネットワーク中の、両方とも別個のファイアウォールの後ろにある（both behind distinct firewalls）などの）複数のターゲットピアの相対ロケーションにかかわらず、複数のブラウザベースのアプリケーション間のピアツーピアリアルタイム通信を可能にし得る。
【０００４】
[0004]ＷｅｂＲＴＣは、インターネットプロトコル（ＩＰ）ベースの通信セッションにおける複数のターゲットピアが、それらの間の最も良好な可能なメディア経路を発見することを可能にする、対話型通信確立（ＩＣＥ：Interactive Communication Establishment）と呼ばれる技法を採用する。これは、ＩＣＥ実装形態が、ネットワークアドレス変換（ＮＡＴ：Network Address Translation）のタイプまたは２つのターゲットピアの間にあり得るファイアウォールの事前知識を必要としないＮＡＴトラバーサル（traversal）のためのターンキー・ソリューションであるという点で有用であり得る。
【０００５】
[0005]ＩＣＥは、ＮＡＴのためのセッション・トラバーサル・ユーティリティ（ＳＴＵＮ：Session Traversal Utilities for NAT）およびトラバーサル・ユージング・リレー・アラウンドＮＡＴ（ＴＵＲＮ：Traversal Using Relays Around NAT）プロトコルを活用する。ＳＴＵＮは、ターゲットピアが、それがＮＡＴトラバーサルボックスの後ろにあるかどうかをＩＰベースのプロトコルによって発見することができるそのＩＰベースのプロトコルである。オープンなインターネットにおいて知られているサーバとコンタクトを取り、応答を受信することによって、ターゲットピアは、それ自体のＩＰアドレスを、ＳＴＵＮサーバがＳＴＵＮメッセージのための発信ＩＰアドレス（originating IP address）として検出したＩＰアドレスと比較することができる。このようにして、ターゲットピアは、それがＮＡＴの後ろにある（is behind a NAT）かどうかを迅速に決定することができる。
【０００６】
[0006]一例では、（ピアとしても知られる）複数のターゲットピアのうちの１つによって公衆インターネット上の知られているＳＴＵＮサーバにＳＴＵＮ要求メッセージが送られる。ＳＴＵＮサーバのＩＰアドレスは、ピアによってアプリオリに知られ得るか、または（たとえば、ドメインネームシステム（ＤＮＳ）サービスの助けをかりて）発見可能である。ＳＴＵＮサーバがピアからＳＴＵＮ要求を受信したとき、ＳＴＵＮサーバは、発信ＩＰアドレスを含むＳＴＵＮ応答メッセージを返送する。ＮＡＴがピアとＳＴＵＮサーバとの間に存在した（たとえば、ピアがプライベートネットワーク上にある）場合、ＳＴＵＮ応答メッセージ中のＩＰアドレスは、それのプライベートネットワーク上のピアのＩＰアドレスに一致しない。この種類のメッセージングはＮＡＴトラバーサルの問題を部分的に解決するにすぎない。ＮＡＴは、ピアのプライベートＩＰアドレスと、ピアのためにＮＡＴによって公衆インターネットにおけるすべての宛先に与えられたＩＰアドレスとの間に１対１のマッピングが存在するという点で、サーバ反射的（server-reflexive）であり得る。しかしながら、多くのＮＡＴは対称的であり、公衆インターネット上のピアの宛先ＩＰアドレスの各々についてピアのためのユニークなＩＰアドレスマッピングがある。したがって、単純なＩＰアドレス発見を越える機構が必要とされた。その結果、ＴＵＲＮプロトコルが開発された。
【０００７】
[0007]ＴＵＲＮは、ＮＡＴされたピアとの間でトラフィックを中継する公衆インターネット上のＴＵＲＮサーバをセットアップすることによって、インターネット上の任意の他のターゲットピアからのトラフィックを受信するＮＡＴされたピアの問題を解決する。たとえば、発信ピア（originating peer）は、メッセージ完全性を保証するための必要なフィールドを通常用いないで「TURN Allocate」要求を最初に送る。それに応じて、ＴＵＲＮサーバは、将来のメッセージングのための必要な値（たとえば、ハッシングのためのノンス（nonce））をもつ「Allocate Error」メッセージを送り、それの後、発信ピアが、必要なメッセージ完全性をもつ「TURN Allocate」メッセージを再送し、「TURN Allocate」応答を受信することができ、ここで、ＮＡＴされたピアは、ＮＡＴの後ろのそれの存在を決定するだけでなく、他のピアとの通信をセットアップするために使用され得るＴＵＲＮサーバからの中継されたＩＰアドレスを割り振られ得る。
【０００８】
[0008]ＩＣＥは、２つのピアが、ＮＡＴの存在下でそれらの間の最も良好な可能なメディア経路をネゴシエートすることができるように、ＳＴＵＮおよびＴＵＲＮの使用を中心とするフレームワークを提供する。それらとコンタクトを取るために使用され得るＩＰアドレスおよびポートの各ピアの検出に基づいて、ＩＰアドレス／ポートの「候補ペア」がＩＣＥクライアント指定の優先度（ICE client-specified priority）に関してテストされ、ランク付けされる。ＩＣＥ規格は優先度付けのための例示的なアルゴリズムを提供する。その結果、ＩＣＥは、プロトコル（たとえば、セッション記述プロトコル（ＳＤＰ））に基づいて複数のピア間の通信セッションのパラメータをネゴシエートするためのオファー／応答機構（an offer/answer mechanism）を定義する。
【発明の概要】
【０００９】
[0009]本開示はネットワーク通信に関する。モバイルデバイスのための通信を容易にするための方法、システム、および技法が提供される。
【００１０】
[0010]一実施形態によれば、内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にする方法は、モバイルデバイス上で実行しているプロキシにおいて、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトすることを含む。モバイルデバイスはセルラーネットワークに結合され、内部ネットワークはネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離される。本方法はまた、ターゲットピアがセルラーネットワークを介して到達可能であるかどうかを決定することを含む。本方法は、ターゲットピアがセルラーネットワークを介して到達可能であると決定されたとき、第１のプロトコルにおいて通信するための要求をセルラーネットワーク上でターゲットピアに送ることをさらに含む。
【００１１】
[0011]別の実施形態によれば、内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするためのシステムは、モバイルデバイス上で実行可能なインターセプトモジュールを含む。内部ネットワークはネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離され、モバイルデバイスはセルラーネットワークに結合される。インターセプトモジュールは、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトする。本システムはまた、モバイルデバイス上で実行可能な通信モジュールを含む。通信モジュールは、ターゲットピアがセルラーネットワークを介して到達可能であるかどうかを決定し、ターゲットピアがセルラーワークを介して到達可能であると決定されたとき、通信モジュールのネットワークが、第１のプロトコルにおいて通信するための要求をセルラーネットワーク上でターゲットピアに送る。
【００１２】
[0012]別の実施形態によれば、コンピュータ可読媒体は、モバイルデバイス上で実行しているプロキシにおいて、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトすることと、モバイルデバイスがセルラーネットワークに結合され、ターゲットピアがセルラーネットワークを介して到達可能であるかどうかを決定することと、ターゲットピアがセルラーネットワークを介して到達可能であると決定されたとき、第１のプロトコルにおいて通信するための要求をセルラーネットワーク上でターゲットピアに送ることとを含む動作を実行するためのコンピュータ実行可能命令を記憶している。
【００１３】
[0013]別の実施形態によれば、内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするための装置は、ターゲットピアとのリアルタイム通信接続を開始するための発信ピアからの通信をモバイルデバイスにおいてインターセプトするための手段を含む。モバイルデバイスはセルラーネットワークに結合され、内部ネットワークはネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離される。本装置はまた、ターゲットピアがセルラーネットワークを介して到達可能であるかどうかを決定するための手段を含む。本装置は、ターゲットピアがセルラーネットワークを介して到達可能であると決定されたとき、第１のプロトコルにおいて通信するための要求をセルラーネットワーク上でターゲットピアに送るための手段をさらに含む。
【００１４】
[0014]本明細書の一部をなす添付の図面は、本発明の実施形態を示し、説明とともに、実施形態の原理について説明するようにさらに働く。図面において、同様の参照番号は、同等であるかまたは機能的に類似する要素を示し得る。要素が最初に現れる図面は、概して、対応する参照番号中の最も左の桁によって示される。
【図面の簡単な説明】
【００１５】
【図１】[0015]一実施形態による、ターゲットピアと内部ネットワーク内に位置するモバイルデバイスとを含むシステムを示すブロック図。
【図２】[0016]一実施形態による、内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするためのシステムを示すブロック図。
【図３】[0017]一実施形態による、部分的な呼セットアップ・シグナリング図。
【図４】[0018]一実施形態による、内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするための方法を示す簡略フローチャート。
【図５】[0019]一実施形態による、デジタル信号プロセッサを含むワイヤレスデバイスを示すブロック図。
【詳細な説明】
【００１６】
Ｉ．概説
ＩＩ．例示的なシステムアーキテクチャ
ＩＩＩ．例示的な方法
ＩＶ．例示的なワイヤレスデバイス
Ｉ．概説
【００１７】
[0020]以下の開示は、本開示の異なる特徴を実装するための、多くの異なる実施形態または例を与えることを理解されたい。いくつかの実施形態は、これらの具体的な詳細の一部または全部なしに実施され得る。本開示を簡略化するために、構成要素、モジュール、および構成の特定の例について以下で説明する。これらは、もちろん、例にすぎず、限定するものではない。
【００１８】
[0021]現在規格化されているＷｅｂＲＴＣ技術は、ウェブ開発者が複数のブラウザ間でピアツーピア感覚でリアルタイム通信を確立することを可能にする。ＷｅｂＲＴＣは、２つのピア間の２方向リアルタイム通信機能を提供するアプリケーションである。現在のＷｅｂＲＴＣ仕様は、ＮＡＴのトラバーサル（traversal）のためのＩＣＥ規格に対する依存性を有する。セルラーネットワーク上での展開シナリオを仮定すれば、ＷｅｂＲＴＣのコンテキストにおけるＩＣＥセッションは、モバイルデバイスのバッテリー寿命に影響を及ぼし、不要なオーバージエア・トランザクション（over-the-air transactions）を生じ得る非効率性を生じ得る。
【００１９】
[0022]特に、ＩＣＥは、特にセルラーコンテキストにおいて動作するとき、より詳細には、ＩＰマルチメディア・サブシステム（ＩＭＳ）対応コアネットワークと相互動作するとき、潜在的に問題になり得る。たとえば、潜在的な問題は、ＳＤＰベースのオファー／応答機構が、（オーバージエアの、および無線アクセスネットワーク（ＲＡＮ）内の両方の）セルラーネットワーク容量に関してそれら自体の関連するコストを有する、かなりの数のオーバージエア・メッセージング・トランザクションを生じることがあることである。別の潜在的な問題は、（ＩＭＳを含む）多くの既存のボイスオーバーＩＰ（ＶｏＩＰ）ターゲットピアがＩＣＥをサポートしないことである。別の潜在的な問題は、ＩＣＥがＳＴＵＮバインディングプロシージャ（STUN binding procedure）に基づくキープアライブ機構（keep-alive mechanisms）を可能にすることである。アプリケーションベースのキープアライブ機構は、ネットワーク効率コストを有するだけでなく、モバイルデバイスのバッテリー寿命を潜在的に限定することがあることがよく知られている。別の潜在的な問題は、ＷｅｂＲＴＣに関して、ユーザが何らかの理由でアプリケーション（たとえば、ブラウザ）をシャットダウンした場合、ＩＣＥコンテキストが潜在的に失われ得、オファー／応答交換が新たに開始しなければならないことがあることである。別の潜在的な問題は、両方のピアがファイアウォールの後ろにないとき、ＩＣＥが効率を提供しないことであり、これは、ハンドセット間通信（handset-to-handset communications）の場合、一般的である。さらに、ＩＣＥは、本質的に単一の候補ペアしかない場合でも、メディア検査を依然として実装し得る。これは非限定的な潜在的な問題のリストである。
【００２０】
[0023]本開示は、複数のＷｅｂＲＴＣピア間の効率的な通信を保証するために、ブラウザ発信ＩＣＥプロシージャ（browser-originated ICE procedures）、および事業者展開ネットワーク（an operator-deployed network）によって提供されるレバレッジサービス（leverage services）（たとえば、プレゼンス）を仲介する、モバイルデバイス上で実行可能なプロキシ、および関連する機能を使用するための技法を提供する。
【００２１】
[0024]簡潔のために、本開示は、ＷｅｂＲＴＣについて、複数のアプリケーション間のリアルタイム通信を可能にする技術であるものとして説明し、ＩＣＥについて、ＮＡＴトラバーサル技術（たとえば、ＳＴＵＮおよびＴＵＲＮ）を使用して複数のリモートピアを接続する技術であるものとして説明することがあるが、これは限定するものではなく、これらの能力を提供する他の技術が本開示の範囲内に入ることを理解されたい。  
ＩＩ．例示的なシステムアーキテクチャ
【００２２】
[0025]図１は、一実施形態による、ターゲットピアと内部ネットワーク１０２内に位置するモバイルデバイスとを含むシステム１００を示すブロック図である。
【００２３】
[0026]内部ネットワーク１０２は、たとえば、セルラーネットワークであり得る。内部ネットワーク１０２はネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離される。モバイルデバイス１０４、１０６、１０８、および１１０は、内部ネットワーク１０２に結合され、各々とおよび／または外部ネットワーク中にあるターゲットピアと通信し得る。モバイルデバイスの例は、スマートフォン、携帯情報端末（ＰＤＡ）、タブレット、およびラップトップである。他のモバイルデバイスが本開示の範囲内に入る。
【００２４】
[0027]システム１００は、ハードウェア、ソフトウェア、またはその両方の組合せで実装され得るファイアウォール１２０を含む。ターゲットピア１２２は、ファイアウォール１２０の後ろにあるものとして示されている。無認可のインターネットユーザが、たとえば、ネットワーク１１２に接続された、イントラネットなど、プライベートネットワークにアクセスすることを防ぐために、ファイアウォールが頻繁に使用される。
【００２５】
[0028]ネットワーク１１２は、様々な構成を含み、インターネット、ワールドワイドウェブ、イントラネット、仮想プライベートネットワーク、ワイドエリアネットワーク、ローカルネットワーク、１つまたは複数の会社に独占的な（proprietary to）通信プロトコルを使用するプライベートネットワーク、セルラーおよび他のワイヤレスネットワーク、インターネットリレーチャットチャネル（ＩＲＣ：Internet relay chat channel）、インスタントメッセージング、簡易メール転送プロトコル（ＳＭＴＰ）、イーサネット（登録商標）、ＷｉＦｉ（/登録商標）およびＨＴＴＰ、ならびに上記の様々な組合せを含む様々なプロトコルを使用し得る。ネットワーク１１２はＳＩＰをサポートし得る。一例では、ネットワーク１１２はロングタームエボリューション（ＬＴＥ（登録商標））ネットワークを含む。ＬＴＥネットワークは、ワイヤレスブロードバンド技術であり、ＩＰに基づくそれのアーキテクチャを有する。
【００２６】
[0029]ファイアウォール１２０は、ルールのセットおよび他の基準に基づいて（たとえば、ターゲットピア１２２への）ネットワーク送信を許可または拒否するように構成される。イントラネットに出入りするすべてのメッセージは、各メッセージを検査し、指定されたセキュリティ基準を満たさないものをブロックする、ファイアウォール１２０を通過する。ファイアウォール１２０は、ＮＡＴ機能を実装することによってネットワークの後ろのホストを保護するための機能を有し得る。ファイアウォールは、ＲＦＣ１９１８において定義されているプライベートアドレスを、ファイアウォールの後ろで保護されるホストに与える。
【００２７】
[0030]図２は、一実施形態による、内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするためのシステム２００を示すブロック図である。内部ネットワークは、ＮＡＴによって１つまたは複数の外部ネットワークから分離され得る。
【００２８】
[0031]システム２００は、ブラウザ２０２などのクライアントアプリケーションと、プロキシ２０４とを実行することが可能なモバイルデバイス１１０を含む。ブラウザ２０２は、ウェブページにアクセスし、それをモバイルデバイス１１０のディスプレイ上に表示することが可能であり得る。ブラウザ２０２はまた、音声およびビデオコーディング、ならびにモバイルデバイス上で実行しているターゲットアプリケーションとのリアルタイムでの通信を確立することが可能であり得る。一例では、ブラウザ２０２およびターゲットアプリケーションは、それぞれ、モバイルデバイス上で実行しているブラウザであり、このブラウザはリアルタイムで互いに通信する。そのような例では、モバイルデバイス１１０のユーザは、ユーザが、呼を発する（place a call）ためにウェブページによって与えられるオプションをクリックすることを可能にするウェブページにブラウザを向け得る。ユーザは、たとえば、ブラウザのアドレスバー中にウェブページのユニフォームリソースロケーション（ＵＲＬ）を打ち込むか、またはウェブページを提供することをサーバに行わせるハイパーリンクを選択することによって、ウェブページにブラウザを向け得る。ブラウザは、電話回線を使用せずに呼を発し得る。そうではなく、ブラウザは、呼を発するためにターゲットピアとのネットワーク１１２上での接続を確立し得る。一例では、ネットワーク１１２はインターネットであり、ブラウザ２０２は、呼を発するためにインターネットを介してＩＰ接続をセットアップする。
【００２９】
[0032]一実施形態では、ブラウザ２０２は、呼を発するためにＷＲＴＣ技術を使用する。上記で説明したように、ＷＲＴＣは、欠点を有し得るＩＣＥを使用する。たとえば、ＩＣＥは、「重い」プロトコルであり、接続を確立するために複数の往復メッセージングの使用を伴う。プロキシ２０４は、セルラー接続により良く適合するように通信を最適化するためになど、モバイルデバイス１１０とターゲットピアとの間の通信を容易にするために使用され得る。たとえば、ＷｅｂＲＴＣコンテキストにおけるプロキシ２０４は、ブラウザ２０２から発生するＩＣＥメッセージングを仲介し、同時に、事業者ファイアウォール内にあるものとしてプロキシ２０４がすでに検出した他のターゲットピアへの接続性を確立するために、使用され得る。プロキシ２０４は、プロキシ２０４がその上で実行しているモバイルデバイス１１０がＮＡＴによって１つまたは複数の外部ネットワークから分離されるかどうかを決定することが可能である。一例では、プロキシ２０４は、モバイルデバイス１１０がＮＡＴによって１つまたは複数の外部ネットワークから分離されるかどうかを決定するためにＩＣＥを使用しない。そうではなく、プロキシ２０４は、モバイルデバイス１１０がＮＡＴによって１つまたは複数の外部ネットワークから分離されることを知るように事前構成され得る。したがって、ＩＣＥメッセージがモバイルデバイス１１０とターゲットピアとの間で往復して送られることは不要であり得る。
【００３０】
[0033]図３に、一実施形態による、部分的な呼セットアップ・シグナリング図３００を示す。図３００は、プロキシ２０４とのＩＣＥベースの呼発信（an ICE-based call origination）を示し、ターゲットピアがファイアウォールの後ろにないと仮定する。
【００３１】
[0034]一例では、ブラウザ２０２はモバイルデバイス１１０上で実行しており、ユーザは、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２をホストするウェブサイトにブラウザを向ける。ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、プロキシ２０４がモバイルデバイス１１０上で実行しているかどうかを検出し、プロキシ２０４と通信するように構成された、ＪａｖａＳｃｒｉｐｔアプリケーションであり得る。図３では、呼「呼発信（call origination）（ターゲットのＳＩＰ  ＵＲＩ）」が、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２からプロキシ２０４に対して生成され、ブラウザによって与えられた最小量の接続性を使用し得る。たとえば、ブラウザは、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２が、たとえば、ＷｅｂＳｏｃｋｅｔまたはＸＭＬＨｔｔｐＲｅｑｕｅｓｔを使用してプロキシ２０４に発信呼を発する（place the origination call）ことを可能にするために、ベース接続性をもつパイプ（a pipe with base connectivity）を与え得る。ブラウザ２０２は、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２が、プロキシ２０４にパケットを送り、それからパケットを受信し、パケットがプロキシ２０４によって正常に受信されたかどうかをＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２に通知することを可能にし得る。
【００３２】
[0035]一例では、ウェブサイトプロバイダは、プロキシ２０４の機能が実現されることを可能にするために、サードパーティ（たとえば、プロキシ２０４のプロバイダ）からのＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２を与えられる。モバイルデバイス１１０のユーザが呼を発することを希望する場合、ユーザは、ウェブサイトにブラウザ２０２を向けるか、またはＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２をホストするウェブサイトにリダイレクトされ得る。別の例では、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２はモバイルデバイス１１０上にプレインストールされる。
【００３３】
[0036]ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、プロキシ２０４がモバイルデバイス１１０上にインストールされているかどうかを検出するために、呼「呼発信（ターゲットのＳＩＰ  ＵＲＩ）」を送り得る。一例では、プロキシ２０４は、事前指定されたＩＰアドレスを割り当てられる。事前指定されたＩＰアドレスは、デバイス（たとえば、モバイルデバイス１１０）上でのローカル使用のために予約されたＩＰアドレスであり得る。一例では、ＩＰアドレスは１２７．０．０．１である。プロキシ２０４は、プロキシがモバイルデバイス１１０上に常駐するかどうかを要求する通信を受信し得、プロキシがモバイルデバイス１１０上に常駐することを示す通信を送り得る。
【００３４】
[0037]一例では、プロキシ２０４がモバイルデバイス１１０上にインストールされていることをＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２が検出したとき、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、プロキシ２０４のサービスを要求するためにプロキシ２０４に直接コンタクトを取る。ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、プロキシ２０４への接続を確立し、プロキシ２０４と通信するようにブラウザ２０２に命令し得る。一例では、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、プロキシ２０４がブラウザ２０２と同じデバイス上で実行していることをブラウザ２０２に通知しない。ブラウザ２０２から受信された呼に応答して、プロキシ２０４は、以下で説明するように、ブラウザ２０２に関する限り、有効なエンドポイントを模倣し得る。
【００３５】
[0038]プロキシ２０４がモバイルデバイス１１０上にインストールされているか否かにかかわらず、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、ＲＴＣＰｅｅｒＣｏｎｎｅｃｔｉｏｎオブジェクトを初期化するために、呼「Ｎｅｗ  ＲＴＣＰｅｅｒＣｏｎｎｅｃｔｉｏｎ（“ｉｃｅＳｅｒｖｅｒｓ”：［｛“ｕｒｌ”：”ｓｔｕｎ：１２７．０．０．１：３４７８”｝］）をブラウザ２０２に送り得る。ＲＴＣＰｅｅｒＣｏｎｎｅｃｔｉｏｎオブジェクトが初期化されると、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は別の呼「ｃｒｅａｔｅＯｆｆｅｒ（）」をブラウザ２０２に送り得る。ブラウザ２０２は、次いで、ＮＡＴの存在下でモバイルデバイス１１０とターゲットピアとの間の最も良好な可能なメディア経路をネゴシエートするためにＩＣＥを使用し得る。
【００３６】
[0039]円３０６中に示されているように、ブラウザ２０２は呼「TurnAllocateRequest（メッセージ完全性なし）」をプロキシ２０４に送り、プロキシ２０４は呼「TurnAllocateRequest（メッセージ完全性なし）」を受信する。プロキシ２０４は応答「TurnAllocateError（ナンスを含む）」をブラウザ２０２に送り、ブラウザ２０２は応答「TurnAllocateError（ノンスを含む）」を受信する。ブラウザは別の呼「TurnAllocateRequest（メッセージ完全性を含む）」をプロキシ２０４に送り、プロキシ２０４は呼「TurnAllocateRequest（メッセージ完全性を含む）」を受信する。プロキシ２０４は応答「TurnAllocate（サーバ反射的アドレス、中継されたＩＰおよびポート）」を送り、ブラウザ２０２は応答「TurnAllocate（サーバ反射的アドレス、中継されたＩＰおよびポート）」を受信する。
【００３７】
[0040]ブラウザ２０２が円３０６中のＩＣＥメッセージング呼を実行したとき、ブラウザ２０２はプロキシ２０４からの応答をシグナリングする有効なリターンを期待する。円３０６中の呼は、プロキシ２０４によってマスクされ得る無駄なＴＵＲＮメッセージングを示す。一実施形態では、プロキシ２０４は、複数のＴＵＲＮメッセージを受信するが、それらをオーバージエアで送らない。プロキシ２０４は、呼をセットアップするために、オーバージエアで最小量の情報を送り得る。一実施形態では、プロキシ２０４は、ターゲットピアに送るための呼をブラウザ２０２からＴＵＲＮプロトコルにおいて受信し、これらの呼のうちの１つまたは複数を廃棄する。そうではなく、プロキシ２０４は、ターゲットピアとのリアルタイム通信を開始するために、ターゲットピアに SIP invite を送ることを決定し得る。
【００３８】
[0041]一例では、プロキシ２０４は、それが、たとえば、SIP invite をターゲットピアに送り、ＳＩＰを使用してターゲットピアと通信することによって、無駄なシグナリングをなくし得るように、ＷｅｂＲＴＣセッションをプロキシ２０４に向けるための要求を送る。ユーザは、ＷｅｂＲＴＣ接続（たとえば、規格におけるピア接続）をセットアップすることと、ＩＣＥメッセージングがプロキシ２０４を通るように、ＷｅｂＲＴＣセッションを、たとえば、ＩＰアドレス１２７．０．０．１に向けることと、を行うために、ブラウザ２０２においてＡＰＩを呼び出し得る。これは、ブラウザ２０２が提供することができないことがある最適化をプロキシ２０４が提供するので、有利であり得る。たとえば、ブラウザ２０２は、モバイルデバイス１１０がどのように（たとえば、セルラー接続またはＷｉＦＩを介して）ネットワークに結合されるかを決定することができないことがあり、また、モバイルデバイス１１０がＮＡＴの後ろにあるかどうかを決定することができないことがある。したがって、２つのピアがそれらの間の最も良好な可能なメディア経路をネゴシエートすることができるようにＩＣＥを使用するのではなく、プロキシ２０４は発信ピア（originating peer）からターゲットピアにＳＩＰ招待を送り得る。
【００３９】
[0042]プロキシ２０４は、リアルタイム通信接続を開始するために、ブラウザ２０２からターゲットピアへの通信をインターセプトし得る。プロキシ２０４は、これらのタイプの通信のためにモバイルデバイス１１０上でリッスンし得る。プロキシ２０４は、ターゲットピアがセルラーネットワーク１０２を介して到達可能であるかどうかを決定し得る。一例では、ターゲットピアはセルラーネットワーク１０２の加入者であり、プロキシ２０４は、プロキシ２０４がセルラーネットワーク上にあり、セルラーネットワークの事業者が、プロキシ２０４が使用するプレゼンスサービス（a presence service）を有するので、ターゲットピアがセルラーネットワーク１０２を介して到達可能であるかどうかを決定することが可能であり得る。ターゲットピアがセルラーネットワークを介して到達可能であると決定されたとき、プロキシ２０４は、ＩＣＥとは異なるプロトコルを使用して通信するための要求をセルラーネットワーク上でターゲットピアに送り得る。一例では、そのプロトコルはＳＩＰであるが、他のシグナリング通信プロトコルが使用され得る。
【００４０】
[0043]ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２が、プロキシ２０４がモバイルデバイス１１０上にインストールされていることを検出したとき、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、ＷｅｂＲＴＣを使用してターゲットピアとの呼をセットアップすることを希望し得る。一例では、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、ターゲットピアの番号を有し、「呼発信」呼を使用してウェブソケットを通してその番号を送る。プロキシ２０４は、ターゲットピアがネットワーク１１２上にあるかどうかを検出し得る。ターゲットピアがネットワーク１１２上にある場合、プロキシ２０４はターゲットピアに直接にメッセージをルーティングし得る。説明したように、プロキシ２０４は、ターゲットピアに円３０６中に示されたＴＵＲＮメッセージを送るのではなく、ＳＩＰを使用してターゲットピアと通信し得る。
【００４１】
[0044]一実施形態では、プロキシ２０４はＳＩＰレジストリに登録する。事業者ＳＩＰレジストラ（an operator SIP registrar）は、早期の呼受付け／拒否を与えるために活用され得、ターゲットピアが現在登録されていない場合、ターゲットピアのネットワーク起動のページングをトリガするために使用され得る。呼発信は、事業者提供のピア証明書（たとえば、ＳＩＰユニフォームリソース識別子（ＵＲＩ））を活用することができる。説明したように、プロキシ２０４は、ＴＵＲＮサーバを模倣し、その結果、不要なＴＵＲＮシグナリングまたはＩＣＥ接続性検査がオーバージエアで進むことを防ぎ得る。このようにして、プロキシ２０４は、オーバージエアで不要なデータを送ることを回避し、したがって、モバイルデバイス１１０に電力を供給するバッテリーのバッテリー寿命を最適化し得る。
【００４２】
[0045]さらに、周期的なＩＣＥ接続性検査はキープアライブ機構（a keep-alive mechanism）としても使用され得る。モバイルデバイス上のアプリケーション対応（この場合、ブラウザ対応）キープアライブ機構は、それらの実装形態に基づく知られている問題を有する。プロキシ２０４は、ＩＣＥベースのキープアライブデータ（ICE-based keep-alive data）を変調し、ブロックさえし得る。一例では、プロキシ２０４は、ターゲットピアに送られているキープアライブメッセージ（keep-alive messages）のレートを決定し、ターゲットピアに送られているキープアライブメッセージのレートを変調する。レートを変調することは、１つまたは複数のキープアライブメッセージをインターセプトすることと、インターセプトされたキープアライブメッセージのうちの１つまたは複数を廃棄することと含み得る。
【００４３】
[0046]ターゲットピアは、ＳＩＰ招待を受け付けるかまたは拒否することによって、プロキシ２０４に応答し得る。ターゲットピアは、プロキシ２０４と同様のプロキシを実行していることもしていないこともある。ターゲットピアがプロキシ２０４と同様のプロキシを実行していない場合、メッセージは、ターゲットピア上で実行しているアプリケーションにルーティングされ得、プロキシ２０４は、ターゲットピア上で実行しているアプリケーションと通信し得る。ターゲットピアがプロキシを実行している場合、プロキシ２０４およびターゲットピア上で実行している他のプロキシは互いに直接通信し得、それらの対応するブラウザから出て来るほとんどすべてのメッセージをドロップし得る。２つのプロキシはＳＩＰメッセージングを介して通信し得る。
【００４４】
[0047]プロキシ２０４は、それがターゲットピアについて有する情報に基づいてメッセージを廃棄し得る。たとえば、ターゲットピアがファイアウォールの外側に位置するとき、プロキシ２０４は上記で説明したものと同じ程度の効率を与えることが可能でないことがある。ターゲットピアがファイアウォールの外側に位置するとき、プロキシ２０４は、どのようにターゲットピアに直接到達すべきかを知らないことがある。したがって、プロキシ２０４は、どのようにターゲットピアに到達すべきかを決定する（たとえば、どんなＩＰアドレスがファイアウォールの外側でそのターゲットピアにブロードキャストされているかを決定する）ためのＴＵＲＮメッセージを送り、ターゲットピアに到達するためのリレーチャネルをファイアウォールの外側にセットアップし得る。最悪の場合、プロキシ２０４は、ＩＣＥメッセージングをピアに伝えるにすぎないことがあり、これは、ターゲットピアが事業者ファイアウォールの外側にある場合に起こり得る。オーバージエアで進むブラウザ発信トラフィック（browser originated traffic）を制限している間にＩＭＳコアネットワーク能力（たとえば、ピアプレゼンス検出）が活用され得るような非効率性が、ＩＣＥの場合存在する。
【００４５】
[0048]さらに、ターゲットピアがセルラーネットワーク上で到達可能でないと決定されたとき、プロキシ２０４は、ＩＣＥを使用して通信するための要求をターゲットピアに送る。たとえば、ターゲットピアはローミングしていることがある。
【００４６】
[0049]別の例では、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２が、プロキシ２０４がモバイルデバイス１１０上にインストールされていないことを検出したとき、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、通信を容易にするために任意のプロキシを利用することなしにブラウザ２０２とのＷｅｂＲＴＣ接続を確立する。そのような例では、ブラウザ２０２は、円３０６中に示されているように、特定の言及した呼を送り、特定の言及した呼を受信し得る。ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２が、たとえば、ＩＰアドレス１２７．０．０．１にあるオブジェクトとの接続をセットアップすることができないというメッセージをブラウザ２０２から受信し得、このメッセージに基づいて、ＷｅｂＲＴＣＪａｖａＳｃｒｉｐｔＡｐｐ３０２は、プロキシ２０４がモバイルデバイス１１０上にインストールされていないと決定し得る。
【００４７】
[0050]上記で説明し、ここでさらに強調するように、図１〜図３は例にすぎず、特許請求の範囲を過度に限定するべきではない。  
ＩＩＩ．例示的な方法
【００４８】
[0051]図４は、一実施形態による、内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするための方法４００を示す簡略フローチャートである。一実施形態では、内部ネットワークはネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離される。方法４００は、限定するものではなく、他の適用例において使用され得る。
【００４９】
[0052]方法４００はブロック４１０〜４３０を含む。ブロック４１０において、モバイルデバイス上で実行しているプロキシにおいて、ターゲットピアとのリアルタイム通信接続を開始するための通信がインターセプトされ、モバイルデバイスはセルラーネットワークに結合される。一例では、プロキシ２０４は、モバイルデバイス１１０上で実行しており、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトし、ここで、モバイルデバイス１１０はセルラーネットワークに結合される。
【００５０】
[0053]ブロック４２０において、ターゲットピアがセルラーネットワークを介して到達可能であるかどうかが決定される。一例では、プロキシ２０４が、ターゲットピアがセルラーネットワークを介して到達可能であるかどうかを決定する。ブロック４３０において、ターゲットピアがセルラーネットワークを介して到達可能であると決定されたとき、第１のプロトコルにおいて通信するための要求がセルラーネットワーク上でターゲットピアに送られる。一例では、ターゲットピアがセルラーネットワークを介して到達可能であると決定されたとき、プロキシ２０４は、第１のプロトコルにおいて通信するための要求をセルラーネットワーク上でターゲットピアに送る。
【００５１】
[0054]また、上記で説明したブロック４１０〜４３０の前に、それらの間に、またはそれらの後に追加のプロセスが実行され得ることを理解されたい。また、本明細書で説明する方法４００のブロックのうちの１つまたは複数は、必要に応じて省略されるか、組み合わせられるか、または異なるシーケンスにおいて実行され得ることを理解されたい。  
ＩＶ．例示的なワイヤレスデバイス
【００５２】
[0055]図５は、一実施形態による、デジタル信号プロセッサを含むワイヤレスデバイス５００を示すブロック図である。ワイヤレスデバイス５００は、内部ネットワーク内に位置するワイヤレスデバイス５００とターゲットピアとの間の通信を容易にするための複数の命令を処理するために、デジタル信号プロセッサ（ＤＳＰ）５０１などのプロセッサを含み、ここで、内部ネットワークは、ＮＡＴによって１つまたは複数の外部ネットワークから分離される。一例では、ＤＳＰ５０１は方法４００に従って命令を処理する。モバイルデバイス１１０はワイヤレスデバイス５００として実装され得る。
【００５３】
[0056]図５はまた、ＤＳＰ５０１とディスプレイ５３２とに結合されたディスプレイコントローラ５３０を示す。コーダ／デコーダ（コーデック）５３４もＤＳＰ５０１に結合され得る。スピーカー５３６およびマイクロフォン５３８がコーデック５３４に結合され得る。さらに、ワイヤレスコントローラ５４０がＤＳＰ５０１とワイヤレスアンテナ５４８とに結合され得る。一実施形態では、ＤＳＰ５０１、ディスプレイコントローラ５３０、メモリ５５０、コーデック５３４、およびワイヤレスコントローラ５４０は、システム・イン・パッケージまたはシステムオンチップデバイス５５６中に含まれる。
【００５４】
[0057]一実施形態では、入力デバイス５３０および電源５６０はシステム・オン・チップ・デバイス５５６に結合される。その上、一実施形態では、図５に示されているように、ディスプレイ５３２、入力デバイス５３０、スピーカー５３６、マイクロフォン５３８、ワイヤレスアンテナ５４８、および電源５６０は、システム・オン・チップ・デバイス５５６の外部にある。ディスプレイ５３２、入力デバイス５３０、スピーカー５３６、マイクロフォン５３８、ワイヤレスアンテナ５４８、および電源５６０の各々は、インターフェースまたはコントローラなど、システム・オン・チップ・デバイス５５６の構成要素に結合され得る。ワイヤレスデバイスのユーザは、マイクロフォン５３８に話をするか、またはディスプレイ５３２を介して他のユーザを見ることによって、別のユーザと通信し得る。
【００５５】
[0058]さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、構成、モジュール、回路、およびステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップを、上記では概して、それらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈されるべきではない。
【００５６】
[0059]本明細書で開示した実施形態に関して説明した方法のステップは、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその２つの組合せで実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、プログラマブル読取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ（登録商標））、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、または当技術分野で知られている他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが、記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は特定用途向け集積回路（ＡＳＩＣ）中に存在し得る。ＡＳＩＣはコンピューティングデバイスまたはユーザ端末中に存在し得る。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末中に個別構成要素として存在し得る。
【００５７】
[0060]開示した実施形態の前述の説明は、当業者が開示した実施形態を製造または使用することを可能にするために与えたものである。これらの実施形態への様々な変更は当業者には容易に明らかになり、本明細書で定義した原理は本開示の範囲から逸脱することなく他の実施形態に適用され得る。したがって、本開示は、本明細書に示した実施形態に限定されるものではなく、以下の特許請求の範囲によって定義される原理および新規の特徴に一致する可能な最も広い範囲を与えられるべきである。したがって、本開示は特許請求の範囲のみによって限定される。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にする方法であって、前記内部ネットワークがネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離され、前記方法は、
モバイルデバイス上で実行しているプロキシにおいて、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトすることと、前記モバイルデバイスがセルラーネットワークに結合されている、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であるかどうかを決定することと、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、第１のプロトコルにおいて通信するための要求を前記セルラーネットワーク上で前記ターゲットピアに送ることとを備える、方法。
［Ｃ２］  前記通信が、前記モバイルデバイス上で実行しているクライアントアプリケーションから送られる、Ｃ１に記載の方法。
［Ｃ３］  前記クライアントアプリケーションがブラウザである、Ｃ２に記載の方法。
［Ｃ４］  前記ターゲットピアに送るための１つまたは複数の呼を前記クライアントアプリケーションから第２のプロトコルにおいて受信することと、前記第２のプロトコルが前記第１のプロトコルとは異なる、
前記受信された呼のうちの１つまたは複数を廃棄することとをさらに備える、Ｃ２に記載の方法。
［Ｃ５］  前記モバイルデバイスが、スマートフォン、タブレット、ラップトップ、または携帯情報端末である、Ｃ１に記載の方法。
［Ｃ６］  前記ターゲットピアが前記セルラーネットワーク上で到達可能でないと決定されたとき、前記第１のプロトコルとは異なる第２のプロトコルにおいて前記ターゲットピアと通信するための要求を送ることをさらに備え、前記第２のプロトコルは、２つのターゲットピアのうちのターゲットピアがネットワークアドレス変換（ＮＡＴ）の後ろにあるかどうかを決定するための、前記２つのターゲットピア間のプロトコル交換である、Ｃ１に記載の方法。
［Ｃ７］  前記第２のプロトコルが、前記モバイルデバイスから前記ターゲットピアへの１つまたは複数の経路を発見することと、互いに対して前記１つまたは複数の経路に優先度を割り当てることとを含む、Ｃ６に記載の方法。
［Ｃ８］  前記第２のプロトコルが、前記モバイルデバイスの外部インターネットプロトコル（ＩＰ）アドレスの表現を発見するための第３のプロトコルによる通信を送ることを含む、Ｃ７に記載の方法。
［Ｃ９］  前記第３のプロトコルがＳＴＵＮである、Ｃ８に記載の方法。
［Ｃ１０］  前記第２のプロトコルが、前記２つのターゲットピア間の永続的接続を確立するための第３のプロトコルによる通信を送ることを含む、Ｃ７に記載の方法。
［Ｃ１１］  前記第３のプロトコルがＴＵＲＮである、Ｃ１０に記載の方法。
［Ｃ１２］  前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定され、前記方法は、
前記ターゲットピアに送られているキープアライブメッセージのレートを決定することと、
前記ターゲットピアに送られているキープアライブメッセージの前記レートを変調することとをさらに備え、ここにおいて、前記変調することが、キープアライブメッセージをインターセプトすることと、前記インターセプトされたキープアライブメッセージのうちの１つまたは複数を廃棄することとを含む、Ｃ１に記載の方法。
［Ｃ１３］  前記ターゲットピアが前記セルラーネットワーク上で到達可能でないと決定されたとき、対話型通信確立（ＩＣＥ）を使用して通信するための要求を前記ターゲットピアに送ることをさらに備える、Ｃ１に記載の方法。
［Ｃ１４］  プロキシが前記モバイルデバイス上に常駐するかどうかを要求する通信を受信することと、
前記プロキシが前記モバイルデバイス上に常駐することを示す通信を送ることとをさらに備える、Ｃ１に記載の方法。
［Ｃ１５］  前記プロキシが、事前に指定されたＩＰアドレスを割り当てられる、Ｃ１に記載の方法。
［Ｃ１６］  前記プロキシが、前記モバイルデバイス上で使用するために予約されたＩＰアドレスを割り当てられる、Ｃ１に記載の方法。
［Ｃ１７］  前記セルラーネットワークがＬＴＥネットワークである、Ｃ１に記載の方法。
［Ｃ１８］  内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするためのシステムであって、前記内部ネットワークがネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離され、前記システムは、
モバイルデバイス上で実行可能なインターセプトモジュールと、ここにおいて、前記インターセプトモジュールが、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトし、ここにおいて、前記モバイルデバイスがセルラーネットワークに結合されている、
前記モバイルデバイス上で実行可能な通信モジュールと、ここにおいて、前記通信モジュールは、前記ターゲットピアが前記セルラーネットワークを介して到達可能であるかどうかを決定し、前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、前記通信モジュールのネットワークが、第１のプロトコルにおいて通信するための要求を前記セルラーネットワーク上で前記ターゲットピアに送る、を備える、システム。
［Ｃ１９］  前記通信が、前記モバイルデバイス上で実行しているクライアントアプリケーションから送られる、Ｃ１８に記載のシステム。
［Ｃ２０］  前記インターセプトモジュールが、前記ターゲットピアに送るための１つまたは複数の呼を前記クライアントアプリケーションから第２のプロトコルにおいて受信し、前記受信された呼のうちの１つまたは複数を廃棄し、ここにおいて、前記第２のプロトコルが前記第１のプロトコルとは異なる、Ｃ１９に記載のシステム。
［Ｃ２１］  前記モバイルデバイスが、スマートフォン、タブレット、ラップトップ、または携帯情報端末である、Ｃ１８に記載のシステム。
［Ｃ２２］  前記ターゲットピアが前記セルラーネットワーク上で到達可能でないと決定されたとき、前記インターセプトモジュールが、前記第１のプロトコルとは異なる第２のプロトコルにおいて前記ターゲットピアと通信するための要求を送り、ここにおいて、前記第２のプロトコルは、２つのターゲットピアのうちのターゲットピアがネットワークアドレス変換（ＮＡＴ）の後ろにあるかどうかを決定するための、前記２つのターゲットピア間のプロトコル交換である、Ｃ１８に記載のシステム。
［Ｃ２３］  前記インターセプトモジュールが、前記モバイルデバイスから前記ターゲットピアへの１つまたは複数の経路を発見し、互いに対して前記１つまたは複数の経路に優先度を割り当てる、Ｃ２２に記載のシステム。
［Ｃ２４］  前記インターセプトモジュールが、前記２つのターゲットピア間の永続的接続を確立するための第３のプロトコルによる通信を送る、Ｃ２２に記載のシステム。
［Ｃ２５］  前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、前記インターセプトモジュールが、前記ターゲットピアに送られているキープアライブメッセージのレートを決定し、前記ターゲットピアに送られているキープアライブメッセージの前記レートを変調し、ここにおいて、前記インターセプトモジュールが、キープアライブメッセージをインターセプトし、前記インターセプトされたキープアライブメッセージのうちの１つまたは複数を廃棄する、Ｃ１８に記載のシステム。
［Ｃ２６］  モバイルデバイス上で実行しているプロキシにおいて、ターゲットピアとのリアルタイム通信接続を開始するための通信をインターセプトすることと、前記モバイルデバイスがセルラーネットワークに結合されている、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であるかどうかを決定することと、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、第１のプロトコルにおいて通信するための要求を前記セルラーネットワーク上で前記ターゲットピアに送ることとを備える動作を実行するためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体。
［Ｃ２７］  内部ネットワーク内に位置するモバイルデバイスとターゲットピアとの間の通信を容易にするための装置であって、前記内部ネットワークがネットワークアドレス変換（ＮＡＴ）によって１つまたは複数の外部ネットワークから分離され、前記装置は、
ターゲットピアとのリアルタイム通信接続を開始するための発信ピアからの通信をモバイルデバイスにおいてインターセプトするための手段と、前記モバイルデバイスがセルラーネットワークに結合されている、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であるかどうかを決定するための手段と、
前記ターゲットピアが前記セルラーネットワークを介して到達可能であると決定されたとき、第１のプロトコルにおいて通信するための要求を前記セルラーネットワーク上で前記ターゲットピアに送るための手段とを備える、装置。
【図１】
0006293902.tif 000002
【図２】
0006293902.tif 000003
【図３】
0006293902.tif 000004
【図４】
0006293902.tif 000005
【図５】
0006293902.tif 000006