【文献】
吉川和成,“iOS 4アプリ“真”手法 第2章 マルチタスクのしくみと実装ポイント”,SoftwareDesign,日本,株式会社技術評論社,2010年12月18日,通巻308号(発刊242号),pp.46−47,ISSN 0916−6297
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
ネットワーク接続されたアプリケーションは、典型的に、「最新の状態」であるために、長期接続を維持する能力を必要とする。しかしながら、従来技術では、このことは、可到達性を保証するために接続されたネットワーク・インターフェイス・デバイス(例えば、ネットワーク・インターフェイス・カード)を維持することを犠牲にしている可能性があり、コンピューティングデバイスのリソース使用に悪影響を及ぼす可能性がある。例えば、従来技術は、コンピューティングデバイスのアプリケーションおよびサービスが、ネットワーク・インターフェイス・デバイスに自由にアクセスすることを可能にする。したがって、オペレーティングシステムは、典型的に、ネットワーク・インターフェイス・デバイスがアプリケーションによって使用されている場合、任意の時点で起動しなかった。このことは、アイドル状態が検出されるまで、デバイスが低電力モードに移行するのを妨害する可能性があり、30秒かかる可能性があるため、電源装置、例えば、バッテリ寿命に重大な影響を及ぼす可能性がある。
【0017】
それに応じて、本明細書で説明する技術では、ネットワーク・ブローカ・モジュールと呼ばれるオペレーティング・システム・コンポーネントを使用して、コンピューティングデバイスのネットワーク・インターフェイス・デバイスの使用を調整することができる。例えば、ネットワーク・インターフェイス・デバイスは、起動パターン・マネージャ・モジュールを使用して、コンピューティングデバイスのどのアプリケーションを、必要であれば、ネットワークトラフィックの受信に応じて起動させるかを判断することができる。起動パターン・マネージャ・モジュールは、例えば、事前登録パターンがネットワークトラフィックに存在するかどうかを検出し、そうである場合、対応するアプリケーションを起動することができる。このようにして、起動パターン・マネージャ・モジュールは、ネットワーク接続を活用するアプリケーションが一時停止状態にありながらも、「常にオンラインで、常に接続状態にある(always on/always connected)」ユーザ体験を提供することができる。起動パターン・マネージャ・モジュールのさらなる説明は、
図2から
図4に関連して見ることができる。
【0018】
他の例において、ネットワーク・ブローカ・モジュールは、ネットワーク・デバイス・マネージャ・モジュールの機能を組み込むことができる。ネットワーク・デバイス・マネージャ・モジュールを使用して、例えば、コールバックをモニタリングすることによって、コンピューティングデバイスのアプリケーションと関係するネットワークトラフィックが完了したとモジュールが判断した場合、ネットワーク・インターフェイス・デバイスを低電力モードにすることができる。したがって、オペレーティングシステムのネットワーク・デバイス・マネージャ・モジュール126は、ネットワーク・インターフェイス・デバイスとアプリケーションとの間の中継ぎとして位置付けることができる。中継ぎとして、オペレーティングシステムは、ネットワーキング活動の情報を有することができ、したがって、ネットワーク・インターフェイス・デバイスが低電力モード、例えば、ネットワーク沈黙モード(quiet mode)に入ることができるかどうかを、確定的に識別することができる。ネットワーク・デバイス・マネージャ・モジュールのさらなる説明は、
図5から
図12に関連して見ることができる。
【0019】
さらなる例において、ネットワーク・ブローカ・モジュールは、キープ・アライブ・マネージャ・モジュールの機能を組み込むことができる。キープ・アライブ・マネージャ・モジュールを使用して、アプリケーションが一時停止状態にある間、ネットワーク接続(例えば、通知チャネル)を「キープアライブする」ことができるため、アプリケーションと関連したリソースの使用を少なくすることができる。さらに、キープ・アライブ・マネージャ・モジュールを使用して、ネットワーク・インターフェイス・デバイスを低電力モードにすることができ、ネットワーク接続を維持するために「起動する」ことができるため、ネットワーク・インターフェイス・デバイス自体と関連したリソースの使用を少なくすることができる。キープアライブ間隔を動的に判断するなどの、さまざまな他の機能もまた、キープ・アライブ・モジュールによって組み込むことができ、これらのさらなる説明は、
図13から
図18に関して見ることができる。
【0020】
以下の説明において、本明細書で説明する技術を使用することができる例示的環境について、最初に説明する。次いで、例示セクションを使用して、起動パターン・マネージャ・モジュール、ネットワーク・デバイス・マネージャ・モジュール、およびキープ・アライブ・マネージャ・モジュールの例示的機能を説明する。次いで、上記したセクションから機能を組み込むことができる実施例について説明する。本明細書で説明する技術は、例示的環境における性能に限定されず、例示的環境は、例示的技術の実行に限定されないことは、容易に理解されるであろう。
【0021】
例示的環境
図1は、本明細書で説明するネットワークブローカ技術を使用するよう動作可能である例示的実施態様における環境100の図である。図示した環境100は、処理システム104(例えば、1つまたは複数のプロセッサ、機能ブロック)、メモリ106、電源108、表示デバイス110、および、ネットワーク114を介してネットワーク接続(例えば、通知チャネル)を提供するよう構成された1つまたは複数のネットワーク・インターフェイス・デバイス112を備えるコンピューティングデバイス102を含む。以下の説明において、示される構成要素は、1つまたは複数の構成要素を表すことができ、したがって、単一または複数の形態の構成要素、例えば、単一のネットワーク・インターフェイス・デバイス112および複数のネットワーク・インターフェイス・デバイス112などを区別なく参照することができる。
【0022】
コンピューティングデバイス102は、さまざまな方法で構成することができる。例えば、コンピューティングデバイス102は、デスクトップコンピュータ、モバイルステーション、エンターテインメント機器、表示デバイスに通信可能に結合されたセット・トップ・ボックス、無線電話、およびゲーム機などの、ネットワーク114上で通信することが可能なコンピュータとして構成してもよい。したがって、コンピューティングデバイス102は、相当なメモリならびにプロセッサリソースを有するフル・リソース・デバイス(例えば、パーソナルコンピュータ、ゲーム機)から、限られたメモリ及び/又はプロセッシングリソースを有する低リソースデバイス(例えば、従来型のセット・トップ・ボックス、携帯型ゲーム機)にまで及ぶことができる。さらに、単一のコンピューティングデバイス102が示されるが、コンピューティングデバイス102は、処理を実行するためにビジネスで使用される複数のサーバ(例えば、サーバファーム)、遠隔制御ならびにセット・トップ・ボックスの組み合わせ、および画像取得デバイスならびにゲーム機などの、複数の異なるデバイスで表すことができる。
【0023】
ネットワーク114は、インターネットとして図示されているが、ネットワークは、多種多様な構成を想定することができる。例えば、ネットワーク114は、広域ネットワーク(WAN)、構内ネットワーク(LAN)、またはイントラネットを含むことができるため、ネットワーク・インターフェイス・デバイス112は、有線接続を介して、これらのネットワークにアクセスするよう構成することができる。ネットワーク114は、また、無線広域ネットワーク(WWAN)、無線構内ネットワーク(WLAN)、およびセルラネットワーク(例えば、3G、4G、LTEネットワーク)などの無線技術を介してアクセスするよう構成することができる。ネットワーク・インターフェイス・デバイス112は、物理的デバイスとしても、仮想プライベートネットワークおよびトンネリングなどをサポートするために使用されるような仮想ネットワークデバイスとしても表すことができる。したがって、単一のネットワーク114を示すが、ネットワーク114は、複数のネットワークを表すことができる。
【0024】
コンピューティングデバイス102は、さらに、オペレーティングシステム116を含むものとして図示される。オペレーティングシステム116は、コンピューティングデバイス102で実行可能なアプリケーション118、120に、コンピューティングデバイス102の基礎となる機能を抽出するよう構成される。例えば、オペレーティングシステム116は、コンピューティングデバイス102の処理システム104、メモリ106、電源108(例えば、バッテリまたは有線接続)、及び/又は表示デバイス110機能を抽出することができ、アプリケーション118、120は、この基礎となる機能を実行する「方法」を知ることなく書くことができる。アプリケーション118、120は、例えば、表示デバイス112によって表現および表示されるデータを、この表現をどのように実行することができるかを理解することなく、オペレーティングシステム116に提供することができる。
【0025】
同様に、オペレーティングシステム116は、また、ネットワーク・ブローカ・モジュール122の使用により、アプリケーション118、120へのネットワーク接続機能を抽出することができる。ネットワーク・ブローカ・モジュール122はアプリケーション118、120によるネットワーク・インターフェイス・デバイス112の使用およびネットワーク・インターフェイス・デバイス112自身の動作を管理するための機能を表す。
【0026】
すでに述べたように、ネットワーク・ブローカ・モジュール122は、さまざまな異なる機能を組み込み、この管理を行うことができる。例えば、ネットワーク・ブローカ・モジュール112は、特定のトラフィックパターンを識別すると、アプリケーション118、120の1つまたは複数を起動するよう構成された、起動パターン・マネージャ・モジュール124を組み込むことができる。例えば、特定のトラフィックパターンは、アプリケーションによって予め登録することができるので、パターンが認識されると、起動パターン・マネージャ・モジュール124は、アプリケーション118、120のそれぞれを含む、コンピューティングデバイス102全体を起動させた従来技術とは対照的に、アプリケーション118、120の対応する1つを起動することができる。起動パターン・マネージャ・モジュール124のさらなる説明は、
図2から
図4に関連して見ることができる。
【0027】
ネットワーク・ブローカ・モジュール122は、また、ネットワーク・デバイス・マネージャ・モジュール126を含むものとして図示される。上記のように、このモジュールは、ネットワーク・インターフェイス・デバイス112の動作、およびコンピューティングデバイス102のアプリケーション118、120に対するネットワーク・インターフェイス・デバイス112の可用性を管理するための機能を表す。これには、アプリケーション118、120と関連するネットワークトラフィックが完了したとネットワーク・デバイス・マネージャ・モジュール126が判断した場合、電力消費を抑えるためのモードにネットワーク・インターフェイス・デバイス112を入れることを含むことができる。
【0028】
さらに、ネットワーク・デバイス・マネージャ・モジュール126は、このモードにある間、ネットワーク・インターフェイス・デバイス112を、アプリケーション118、120に対して利用不可能にすることができ、アプリケーション118、120は、ネットワーク・インターフェイス・デバイス112を必要以上に起動することがない。このようにして、ネットワーク・デバイス・マネージャ・モジュール126は、アプリケーション118、120からネットワーク・インターフェイス・デバイスに「ブラックホール(”black hole”)」通信する可能性がある。ネットワーク・デバイス・マネージャ・モジュール126についてのさらなる説明は、
図5から
図12に関連して開始する以下の説明における対応するセクションに関連して見ることができる。
【0029】
ネットワーク・ブローカ・モジュール122はさらに、キープ・アライブ・マネージャ・モジュール128を含むものとして図示される。キープ・アライブ・マネージャ・モジュール128は、一時停止状態にあるアプリケーション118、120に対してさえも、ネットワーク接続を維持するために使用することができる機能を表す。例えば、キープ・アライブ・マネージャ・モジュール128は、ネットワークサービスの1つまたは複数のサーバと通信して、ネットワーク114上で、サービスとコンピューティングデバイス102との間でネットワーク接続をアクティブにし続けることができる。キープ・アライブ・マネージャ・モジュール128は、また、この動作を行うべき間隔を動的に判断するための機能を含むことができ、したがって、さらに、コンピューティングデバイス102のリソースを節約することができる。キープ・アライブ・マネージャ・モジュール128についてのさらなる説明は、
図13から
図18に関連して開始する以下の説明における対応するセクションに関連して見ることができる。
【0030】
ネットワーク・ブローカ・モジュール122ならびに対応する起動パターン・マネージャ・モジュール124、ネットワーク・デバイス・マネージャ・モジュール126、およびキープ・アライブ・マネージャ・モジュール128が、オペレーティングシステム116の一部として図示されるが、この機能は、さまざまな異なる構成要素によって実現することが可能であることは、容易に理解されるであろう。そのような構成要素の例には、スタンドアロンアプリケーション、およびサードパーティ製プラグインなどがある。
【0031】
一般に、本明細書で説明するいずれの機能も、ソフトウェア、ファームウェア、ハードウェア(例えば、固定ロジック回路)、またはそれらの実施態様の組み合わせを使用して実現することができる。本明細書で使用する「モジュール」、「機能」、および「ロジック」という用語は、一般に、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを意味する。ソフトウェア実施の場合、モジュール、機能、またはロジックは、プロセッサ(例えば、単一CPUまたは複数CPU)で実行される場合、特定のタスクを実行するプログラムコードを意味する。プログラムコードは、1つまたは複数のコンピュータ読取り可能メモリデバイスに格納することができる。以下で説明するネットワークブローカ技術の特徴は、プラットフォーム独立型であり、本技術は、さまざまなプロセッサを有するさまざまな市販のコンピューティングプラットフォームで実現することができることを意味する。
【0032】
例えば、コンピューティングデバイス102は、また、コンピューティングデバイス102のハードウェアに、例えば、プロセッサ、および機能ブロックなどの動作を実行させる構成要素(例えば、ソフトウェア)を含むことができる。例えば、コンピューティングデバイス102は、コンピューティングデバイス、より詳しくは、コンピューティングデバイス102のハードウェアに動作を実行させる命令を保持するよう構成することができる、コンピュータ読取り可能媒体を含むことができる。したがって、命令は、動作を実行するようハードウェアを構成するために機能し、このようにして、機能を実行するようハードウェアの変形をもたらす。命令は、コンピュータ読取り可能媒体によって、さまざまな異なる構成品を通じて、コンピューティングデバイス102に提供することができる。
【0033】
コンピュータ読取り可能媒体のそのような構成の1つに、信号搬送媒体があり、したがって、命令(例えば、搬送波)を、コンピューティングデバイスのハードウェアに、ネットワークを介するなどして伝送するよう構成される。コンピュータ読取り可能媒体は、また、コンピュータ読取り可能ストレージ媒体として構成することができ、その場合、信号搬送媒体ではない。コンピュータ読取り可能ストレージ媒体の例には、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、光学ディスク、フラッシュメモリ、ハードディスクメモリ、および、磁気的、光学的ならびに他の技術を使用して、命令ならびに他のデータを格納可能な他のメモリデバイスがある。
【0034】
起動パターン・マネージャ・モジュール
図2は、
図1のネットワーク・ブローカ・モジュール122の起動パターン・マネージャ・モジュール124の例示的動作を示す例示的実施態様におけるシステム200の図である。すでに述べたように、従来技術には、アプリケーションが到達可能な実際に動作中のプロセスが含まれた。したがって、比較的長く動作しているネットワーク接続の使用を必要とするアプリケーションは、任意の時点でデータを送信および受信することができ、バッテリ寿命などの、コンピューティングデバイス102のリソースに直接影響を与える可能性があった。
【0035】
しかしながら、この例において、オペレーティングシステム116は、ネットワーク・ブローカ・モジュール122を使用して、「常にオンラインで、常に接続状態にある」ユーザ体験をサポートすることができる。この例において、体験は、ネットワーク通信で必要とされる特定のアプリケーションを起動するために使用することができる起動パターン・マネージャ・モジュール124の使用を通じてサポートされる。
【0036】
例えば、起動パターン・マネージャ・モジュール124は、特定のアプリケーション118、120が示すトラフィックパターン202を、アプリケーション118、120が登録することを可能にすることができる。例えば、アプリケーション118は、アプリケーション120に対して登録されたトラフィックパターンとは異なるトラフィックパターン202を登録することができる。それに応じて、起動パターン・マネージャ・モジュール124は、トラフィックパターン202に対してネットワークトラフィック204をモニタリングし、対応するアプリケーション118、120を起動することができる。
【0037】
例えば、アプリケーション開発者は、オペレーティングシステム116のネットワーク・ブローカ・モジュール122とのコントラクト(contract)を、ある種のイベントおよびこれらのイベントのそれぞれに対して実行されるコールバックを指示するよう定めてもよい。その場合、ネットワーク・ブローカ・モジュール122は、そのトラフィックパターン202を登録したアプリケーション118、120の1つまたは複数に対応する、ネットワーク114を介してネットワーク・インターフェイス・デバイス112によって受信されたデータの特定パターンを「組み込む」ことができる。
【0038】
それに応じて、ネットワーク・ブローカ・モジュール122の起動パターン・マネージャ・モジュール124は、アプリケーション118に対するトラフィックパターンで記載した着信パケットの受信の際に、オペレーティングシステム116に割り込むことができる。さらに、オペレーティングシステム116は、登録したコールバック・エントリー・ポイントで、一時停止状態からアプリケーション118を起動し、パケットをアプリケーション118に示すことができる。このようにして、起動パターン・マネージャ・モジュール124は、事前承認された遠隔エンドポイントからの着信パケットについて、一時停止中のアプリケーションを作動させるための技術をサポートすることができる。さらに、このことは、物理的ネットワーク・インターフェイス・デバイス112が着信パケットのフィルタリングをサポートしない場合でさえも、オペレーティングシステム116が、あるパターンを組み込むことを可能にし、それにより、オペレーティングシステム115が入力パケットをフィルタリングすることを可能にする。
【0039】
アプリケーション118、120は、また、コンピューティングデバイス102のリソース使用の効率を向上するよう構成することができる。例えば、アプリケーション118は、別々に実行することができる異なる部分を形成するよう誘導することができる。アプリケーション118に対するこのことについて示した例は、アプリケーション118に対するユーザインターフェイスの生成で必要とされる機能などの、アプリケーション118の他の機能208とは別に、ネットワーク機能206の誘導を含む。
【0040】
したがって、上記の例に連続して、ネットワーク・ブローカ・モジュール122は、特定のトラフィックパターン202に一致するパケットを示し、アプリケーション118のユーザインターフェイスを生成する際に必要なアプリケーション118のコードをリハイドレート(rehydrate)することなく、アプリケーションコードの特定のコールバックを実行するなどの、アプリケーション118のネットワーク機能206を起動することができる。したがって、アプリケーション118は、データパケット、およびキープアライブを開始した遠隔エンドポイントなどに対してリソース効率の良い方法で、遠隔サーバからネットワークトラフィック204に応答するよう構成することができる。アプリケーション118のイベントハンドラの分離などの、アプリケーション118を誘導するさまざまな他の例もまた、想定される。
【0041】
起動パターン・マネージャ・モジュール124は、また、アプリケーション118、120に通信するためのデータを融合するための技術をサポートすることができ、さらに、トラフィックパターン202によって指示することができる。例えば、起動パターン・マネージャ・モジュール124は、ネットワーク・インターフェイス・デバイス112で、ネットワーク114を介して、さまざまな異なる通知チャネルを介して、データを受信することができる。このデータをアプリケーション118、120に「すぐに」通信する代わりに、起動パターン・マネージャ・モジュール124は、規定した間隔でアプリケーション118、120に通信するためのこのデータを融合してもよい。
【0042】
したがって、アプリケーション118、120を実行する際に使用されるコンピューティングデバイス102のリソースは、これらのリソースが使用されるとき、およびその方法をさらに節約するために共に使用することができる。例えば、アプリケーション118に対するデータを受信し、アプリケーション118を起動し、パケットをアプリケーション118に通信し、次いで、アプリケーション120に対して受信したパケットに対してこのことを繰り返す代わりに、これらのパケットはキャッシュされ、次いで、回送されてもよい。
【0043】
1つまたは複数の実施態様において、起動パターン・マネージャ・モジュール124は、また、ユーザログインについての情報を活用することができる。例えば、起動パターン・マネージャ・モジュール124は、コンピューティングデバイス102にアクティブにログインしたユーザに対するトラフィックパターン202を使用することができるが、他のユーザに対しては使用せず、最後にログインしたユーザに対するパターンなどを使用することができる。当然、アクティブであろうとなかろうと、ログインした各ユーザに対してパターンが使用される実施形態などの、他の実施態様もまた想定される。
【0044】
したがって、オペレーティングシステムは、コンピューティングデバイスのネットワーク・インターフェイス・デバイスを介して受信した着信パケットの識別に応じて、一時停止中のアプリケーションの少なくとも一部を起動するための技術をサポートするよう構成することができることを説明した。これらの技術についてのさらなる説明は、以下の手順および実施例に関連して見ることができる。
【0045】
トラフィックパターンの認識をアプリケーションの少なくとも一部を一時停止状態から動作状態に遷移するために使用する、例示的実施態様における手順300を示す。本手順の態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現することができる。本手順は、1つまたは複数のデバイスによって実行される動作を明示するブロックのセットとして示され、各ブロックによる動作を実行するために示される順序に必ずしも限定されない。以下の説明の部分では、
図1の環境100および
図2のシステム200を参照する。
【0046】
トラフィックパターンは、コンピューティングデバイスで実行するために構成されたアプリケーションに対応して登録される(ブロック302)。例えば、トラフィックパターン202は、起動パターン・マネージャ・モジュール124のAPIとの相互通信などを通じて、アプリケーション118のインストール中に、アプリケーション118によって登録することができる。さらに、トラフィックパターン202を使用して、特定パケット、コールバックの識別、特定遠隔エンドポイントの識別などの、さまざまな異なる性質のネットワークトラフィック204について説明することができる。
【0047】
アプリケーションが一時停止状態である間のネットワークトラフィックにおけるトラフィックパターンの認識に応じて、アプリケーションの少なくとも一部は、一時停止状態から動作状態に遷移される(ブロック304)。アプリケーション118は、さまざまな異なるファクタのため、一時停止状態に置かれる可能性がある。例えば、オペレーティングシステム116は、フォーカスが他のアプリケーションに移った場合、アプリケーション118を一時停止状態に置くよう構成することができる。フォーカスは、アプリケーションのユーザインターフェイスを最小にすること、デスクトップ・ユーザ・インターフェイスにおける前景からのユーザインターフェイス(例えば、ウィンドウ)の移動、およびイマーシブ(immersive)環境におけるアプリケーション118のユーザインターフェイスからの他への移動などによって移ることができる。したがって、オペレーティングシステム116は、ユーザ相互通信のために直接利用することができないアプリケーションの実行を一時停止することによって、コンピューティングデバイス102のリソースを節約することができる。
【0048】
すでに述べたように、起動パターン・マネージャ・モジュール124は、ネットワークトラフィック204からのトラフィックパターン202を認識し、アプリケーション118(例えば、ネットワーク機能206ではなく他の機能208)の少なくとも一部を動作状態に遷移し、識別されたネットワークトラフィック204を処理することができる。したがって、起動パターン・マネージャ・モジュール124は、ネットワークトラフィック204が関係する特定のアプリケーション118およびアプリケーション118の特定の部分でさえも遷移することができる。起動パターン・マネージャ・モジュール124の使用についての他の例は、以下の図に関連して見ることができる。
【0049】
図4は、トラフィックパターンの認識を使用してアプリケーションの少なくとも一部を起動する、例示的実施態様における手順400を示す。本手順の態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現することができる。本手順は、1つまたは複数のデバイスによって実行される動作を明示するブロックのセットとして示され、各ブロックによる動作を実行するために示される順序に必ずしも限定されない。以下の説明の部分では、
図1の環境100および
図2のシステム200を参照する。
【0050】
コンピューティングデバイスのネットワーク・インターフェイス・デバイスによって受信されたネットワークトラフィックは、モニタリングされる(ブロック402)。例えば、コンピューティングデバイス102は、VPNおよびトンネリングなどをサポートするための仮想デバイスとして実現される、物理的デバイスとして構成することができる、ネットワーク・インターフェイス・デバイス112でネットワークトラフィックを受信することができる。
【0051】
トラフィックパターンは、モニタリングされたネットワークトラフィックにおいて認識される(ブロック404)。上記のように、パケットおよび送信側エンティティなど、さまざまな異なるトラフィックパターンを認識することができる。このトラフィックパターンから、認識されたトラフィックパターンに対応するコンピューティングデバイスのアプリケーションが識別される(ブロック406)。例えば、1つまたは複数のアプリケーションは、起動パターン・マネージャ・モジュール124に事前登録され、特定のネットワークトラフィックを受信することができる。この識別に応じて、ネットワーク機能206およびアプリケーション118の全体など、識別されたアプリケーションの少なくとも一部が起動される(ブロック408)。起動パターン・マネージャ・モジュール124の例示的動作のさらなる説明は、実施例に関連して見ることができる。
【0052】
ネットワーク・デバイス・マネージャ・モジュール
図5は、
図1のネットワーク・ブローカ・モジュール122のネットワーク・デバイス・マネージャ・モジュール126の例示的動作を示す例示的実施態様におけるシステム500の図である。すでに述べたように、オペレーティングシステム116のネットワーク・ブローカ・モジュール122、したがって、ネットワーク・デバイス・マネージャ・モジュール126は、ネットワーク・インターフェイス・デバイス112とアプリケーション118、120との間の中継ぎとして位置付けることができる。中継ぎとして、オペレーティングシステム116は、ネットワーキング活動の情報を有することができ、したがって、ネットワーク・インターフェイス・デバイス112が低電力モード、例えば、ネットワーク沈黙モードに入ることができるかどうかを、確定的に識別することができる。
【0053】
例えば、ネットワーク・デバイス・マネージャ・モジュール126を使用して、例えば、コールバックをモニタリングすること、および最後のコールバックが完了したときを判断することによって、コンピューティングデバイスのアプリケーションを含むネットワークトラフィック502が完了したとモジュールが判断した場合、ネットワーク・インターフェイス・デバイス112を低電力モードにすることができる。したがって、ネットワークトラフィック502は、この例において、アプリケーション118、120からの出力トラフィックを含む。
【0054】
それに応じて、ネットワーク・デバイス・マネージャ・モジュール126は、ネットワーク・インターフェイス・デバイス112を、高電力モード504から低電力モード5066に遷移させることができる。その名前が意味するように、これらのモードは、そのモードにある間、ネットワーク・インターフェイス・デバイス112によって消費される電力量によって区別される。一例において、高電力モード504は、ネットワーク・インターフェイス・デバイス112によるデータの伝送および受信を可能にするよう構成される。この実施例において、低電力モード506は、ネットワーク・インターフェイス・デバイス112の伝送機能を一時的に動作不能にすることで電力消費を抑えるよう構成される。したがって、アウトバウンド動作が抑制され、したがって、単に起動パターンが組み込まれるために、システムに影響する可能性のあるトラフィックが起動パターンと一致するか、またはシステムがキープアライブ動作などのアウトバウンド(outbound)動作を開始するための時間を算出する場合のパケットに限定されることを意味する。さまざまな他の例もまた、想定される。
【0055】
このようにして、ネットワーク・デバイス・マネージャ・モジュール126は、ネットワーク・インターフェイス・デバイス112の使用がアウトバウンドトラフィックのためにもはや要求されなくなる場合を先に判断することができ、それに応じて、30秒程度の非動作期間の検出に左右される従来技術とは対照的に対応することができる。したがって、中継ぎとしてのオペレーティングシステム116を位置付けることによってもたらされるネットワークトラフィック502の情報を使用して、コンピューティングデバイス102のリソースを節約することができる。
【0056】
ネットワーク・デバイス・マネージャ・モジュール126は、また、所望の期間、ネットワーク・インターフェイス・デバイス112に対して低電力モード506を保ち、及び/又は維持するための技術をサポートすることができる。すでに述べたように、従来技術は、アプリケーション118、120の、ネットワーク・インターフェイス・デバイス112への自由なアクセスを可能にし、その結果、コンピューティングデバイス102のリソースについて悪影響を及ぼす可能性があった。それに応じて、アプリケーション118、120とネットワーク・インターフェイス・デバイス112との間の中継ぎとして、ネットワーク・デバイス・マネージャ・モジュール126を位置付けることは、高電力および低電力モード504、506を管理するために使用することができる。
【0057】
例えば、ネットワーク・デバイス・マネージャ・モジュール126は、「ブラックホール化」技術をサポートし、アプリケーション118、120によるネットワーク・インターフェイス・デバイス112への、低電力モード506にある間のアクセスを制限することができる。これは、ネットワーク・インターフェイス・デバイス112を利用不可能にする、アプリケーション118、120からネットワーク・インターフェイス・デバイス112へのパケットの通信をブロックする、低電力モード506の間にアプリケーション118、120にエラーコードを戻す、およびドロップされたパケットイベントを知らせるなどの、さまざまな方法で実行することができる。したがって、ネットワーク・デバイス・マネージャ・モジュール126は、低電力モード506から高電力モード504にネットワーク・インターフェイス・デバイス112を起動するためのアプリケーション118、120の能力を制限することができ、それにより、コンピューティングデバイス102のリソースを節約することができる。
【0058】
ネットワーク・デバイス・マネージャ・モジュール126は、また、複数の異なるネットワーク・インターフェイス・デバイス112の使用を、ネットワーク・インターフェイス・デバイス112のいずれが所定の時点でアクセスされることを可能にするかを管理することによって、管理するための技術をサポートすることができる。例えば、コンピューティングデバイス102は、モバイル通信デバイス(例えば、無線電話)として構成することができ、Wi−Fiおよびセルラ(例えば、3G、4G、LTE)ネットワーク上で通信するよう構成されたネットワーク・インターフェイス・デバイス112を含むことができる。
【0059】
Wi−Fiに対するネットワーク・インターフェイス・デバイス112が高電力モードにある例において、ネットワーク・デバイス・マネージャ・モジュール126は、セルラネットワークに対するネットワーク・インターフェイス・デバイス112を、低電力モードにすることができる。さらに、セルラネットワークと相互通信しようとするアプリケーションを、代わりに、Wi−Fiネットワークに経路付けても良い。このようにして、ネットワーク接続マネージャモジュール126は、アプリケーション118、120が、「不適切な」ネットワーク・インターフェイス・デバイス112と通信することを防ぐことができ、それにより、デバイスを起動することなく、コンピューティングデバイス102のリソースを節約することができる。
【0060】
ネットワーク・デバイス・マネージャ・モジュール126は、また、低電力モードにある間、接続を維持するよう構成することができる。例えば、アプリケーション118、120及び/又はオペレーティングシステム116のサービスは、アクセスポイントとの接続を維持するために、レイヤ2接続を維持することを要求することができる。これには、アクセスポイントと通信するために、規定された間隔で、低電力モード506から周期的に起動することを含むことができる。同じように、レイヤ3接続もまた、同様の技術を使用して維持され、サーバが規定された間隔でアドレスをリフレッシュするよう構成された場合などに対して、HTTPサーバと通信することによってIPアドレスを維持することができる。ネットワーク接続の維持についてのさらなる説明は、以下の説明における「キープアライブ」セクションで見ることができる。
【0061】
図6は、ネットワーク・デバイス・マネージャ・モジュール126の例示的動作を示す例示的実施態様における他のシステム600の図である。このシステム600は、オペレーティングシステム116がネットワーク・インターフェイス・デバイス112の管理を補助するために使用することができるアーキテクチャの実施例である。
【0062】
ネットワーク・デバイス・マネージャ・モジュール126は、この例においては、ndis.sys602に存在するロジックコンポーネントとして実現することができ、ネットワーク・インターフェイス・デバイス112に対する電力モードの制御を担う。ネットワーク・デバイス・マネージャ・モジュール126は、アダプタ毎のNID動作状態(例えば、NIC動作状態)を明らかにして、ネットワーク・インターフェイス・デバイス112上のきめ細やかな電力制御をサポートするよう構成することができる。
【0063】
NID動作状態は、基準カウンタを使用して実現することができる。カウンタが0に達すると、ネットワーク・デバイス・マネージャ・モジュール126は、ネットワーク・インターフェイス・デバイス112を、低電力状態に遷移させることができる。カウンタが、0から1にインクリメントされると、NDIS602は、ネットワーク・インターフェイス・デバイス112を高電力状態、すなわち、「作動(”working”)」電力状態に移すことができる。
【0064】
図示したように、オペレーティングシステム116のコンポーネントを使用して、例えば、プライベートIOCTLをNDIS602に送信することによって、さまざまな目的のために、基準カウンタをインクリメント及び/又はデクリメントすることができる。1つまたは複数の実施態様において、電力依存コーディネータ(PDC、power dependency coordinator)606と通信するWCM604は、「長い」時間、例えば、ネットワーク動作期間の全期間、NID動作基準を保持することを可能にする単独コンポーネントである。他のコンポーネントのそれぞれは、単一動作、例えば、IPアドレス更新の期間、NID動作基準をとることが可能とされる。
【0065】
WCM604は、PDC606によって生成されたネットワーク沈黙入口/出口イベントをリッスンし、インターフェイス選択ロジックに従って、NIC動作状態にそれらを変換するよう構成することができる。WCM604は、NDIS602がネットワーク・インターフェイス・デバイス112の電源を切ることを防ぐように、アダプタ到達の際に基準をとることができる。
【0066】
WWAN608は、NIC動作基準を使用して、媒体特定機能、例えば、位置センササービスにより要求される位置走査機能の選択を可能にすることができる。WLAN610は、NIC動作基準を使用して、IHV提供サービスによって制御されたベンダ特定機能などの、媒体特定動作を選択することができる。DHCP612クライアントを使用して、ネットワーク沈黙モード中に、IPアドレスを更新することができ、したがって、この動作中、NID動作基準を保持し、ネットワーク・インターフェイス・デバイス112の可用性を保証することができる。TCP/IP614は、NID動作基準カウンタを使用して、この動作中に、D0においてネットワーク・インターフェイス・デバイス112を保持し、ネットワーク沈黙モード中に、IPv6ステートレスアドレス自動設定616をリフレッシュすることができる。NDIS602は、アダプタ初期化中、および各ネットワーク・インターフェイス・デバイス112が起動信号を生成した際に、一時的(例えば、3秒)NIC動作基準を使用することができる。したがって、タイムアウト期限切れによってネットワーク・インターフェイス・デバイス112の使用を他のいずれのコンポーネントも要求しない場合、ネットワーク・デバイス・マネージャ・モジュール126は、ネットワーク・インターフェイス・デバイス112を低電力状態に遷移することができる。
【0067】
図7は、ネットワーク・インターフェイス・デバイスの沈黙遷移を示す例示的実施態様700である。実施態様700は、
図6のNDIS602および電力マネージャ702ならびにミニポート/バス704を備える。NDIS602は、NID動作基準カウンタが0になると、この電力遷移動作を実行する。NID沈黙遷移の間、NDIS602は、ネットワーク・インターフェイス・デバイス112を、電力マネージャ702に対してアイドル状態であると報告する可能性があり、デバイスに対してDxIRPを要求する前に、確認を待つ。
【0068】
図8は、ネットワーク・インターフェイス・デバイスの動作遷移を示す例示的実施態様800である。実施態様800は、
図6のNDIS602および
図7の電力マネージャ702ならびにミニポート/バス704を備える。図示した例において、NDIS602は、NID動作基準カウンタが0から1になると、電力遷移動作を実行する。NDIS602は、電力マネージャ702からデバイス動作状態を要求し、「電力要求コールバック」を待つことができる。このコールバックから、NDIS602は、デバイスに対してD0IRPを要求する。D0IRP完了時に、NDIS602は、更新電力状態をミニポート/バス704ドライバに通信する前に、「動作状態コールバック」を待つ。
【0069】
図9は、システムスリープ遷移を示す例示的実施態様900である。実施態様900も、また、
図6のNDIS602および
図7の電力マネージャ702ならびにミニポート/バス704を備える。システムスリープ遷移の間、NDIS602は、デバイスに対し、電力マネージャ702により、電力フレームワーク管理を一時停止し、DxIRPを要求する前に確認を待つ。
【0070】
図10は、システム再開遷移を示す例示的実施態様1000である。実施態様900も、また、
図6のNDIS602および
図7の電力マネージャ702ならびにミニポート/バス704を備える。システム再開遷移の間、NDIS602は、ネットワーク・インターフェイス・デバイス112に対し、D0IRPを要求し、電力フレームワーク動作を、D0IRP完了時に、電力マネージャ702によって再開させる。
【0071】
図11は、ネットワークトラフィックが完了し、ネットワーク・インターフェイス・デバイスがオペレーティングシステムによって低電力モードに遷移したと判断する、例示的実施態様における手順1100を示す。本手順の態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現することができる。本手順は、1つまたは複数のデバイスによって実行される動作を明示するブロックのセットとして示され、各ブロックによる動作を実行するために示される順序に必ずしも限定されない。以下の説明の部分において、
図1の環境および
図5から
図10のシステムならびに例示的実施態様を参照する。
【0072】
オペレーティングシステムによって、コンピューティングデバイスの1つまたは複数のアプリケーションと関連するネットワークトラフィックが完了したと判断される(ブロック1102)。この判断は、さまざまな方法で行うことができる。例えば、ネットワーク・デバイス・マネージャ・モジュール126は、アプリケーション118、120およびネットワーク・インターフェイス・デバイス112に関係するアウトバウンドおよびインバウンドトラフィックをモニタすることができる。したがって、ネットワーク・デバイス・マネージャ・モジュール126は、回答が要求に対していつもたらされたか、例えば、コールバックがいつ完了したかを判断することができる。このようにして、ネットワーク・デバイス・マネージャ・モジュール126は、各動作が、所定の「アイドル」期間を待つことなく、いつ完了したかを判断することができる。
【0073】
本判断に応じて、ネットワーク・インターフェイス・デバイスは、オペレーティングシステムによってネットワーク・インターフェイス・デバイスの電力消費を抑えるためのモードに遷移させる(ブロック1104)。前記例から続いて、ネットワーク・デバイス・マネージャ・モジュール126は、ネットワークトラフィック502が完了したと判断することができ、したがって、ネットワーク・インターフェイス・デバイス112を、電力消費を抑えるモード、例えば、低電力モード506にすることができる。
【0074】
ネットワーク・デバイス・マネージャ・モジュール126は、また、このモードと共に使用するためのさまざまな機能を提供することができる。例えば、ネットワーク・デバイス・マネージャ・モジュール126は、ネットワーク・インターフェイス・デバイス112に、オペレーティングシステムによって、電力消費を抑えるモードの間、無線アクセスポイントとの接続を維持させることができる(ブロック1106)。したがって、この例において、ネットワーク・インターフェイス・デバイス112は、すでに述べたように、レイヤ2接続を維持することができる。他の例において、ネットワーク・デバイス・マネージャ・モジュール126は、ネットワーク・インターフェイス・デバイス112に、オペレーティングシステムによって、電力消費を抑えるモードの間、インターネットプロトコル(IP)アドレスを維持させることができる(ブロック1108)。したがって、この例において、ネットワーク・インターフェイス・デバイス112は、ネットワーク・インターフェイス・デバイス112のIPアドレスをリフレッシュするために、レイヤ3接続を維持することができる。さまざまな他の例もまた、想定される。
【0075】
ネットワーク・インターフェイス・デバイスは、また、事前登録された通知の受信時に起動するよう構成することができる(ブロック1110)。例えば、ネットワーク・インターフェイス・デバイス112が低電力モード506にある場合でさえも、ネットワーク・インターフェイス・デバイス112は、通信、例えば、インバウンドパケットを受信するよう構成することができる。これらの通知は、事前登録することができ、特定の通知により、ネットワーク・インターフェイス・デバイス112をネットワーク沈黙モードから起動させ、通信を生じさせた特定のエンドポイントを指示するなど、オペレーティングシステム116と通信させる。実施例に関連して説明したように、データに格納された特定の4個のタプル(tuple)パターンなどの、さまざまな他の種類の事前登録もまた想定される。
【0076】
図12は、ネットワーク・インターフェイス・デバイスが、低電力モードの間、アプリケーションに利用不可能にされる、例示的実施態様における手順1200を示す。本手順の態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現することができる。本手順は、1つまたは複数のデバイスによって実行される動作を明示するブロックのセットとして示され、各ブロックによる動作を実行するために示される順序に必ずしも限定されない。以下の説明の部分において、
図1の環境および
図5から
図10のシステムならびに例示的実施態様を参照する。
【0077】
ネットワーク・インターフェイス・デバイスが高電力モードにある場合、オペレーティングシステムによって、ネットワーク・インターフェイス・デバイスが、コンピューティングデバイスの1つまたは複数のアプリケーションに対して利用可能になる(ブロック1202)。例えば、ネットワーク・デバイス・マネージャ・モジュール112は、データを送受信するために、ネットワーク114を使用して、通信のために利用できるように、ネットワークインターフェイス112を表示することができる。
【0078】
ネットワーク・インターフェイス・デバイスが低電力モードにある場合、オペレーティングシステムによって、ネットワーク・インターフェイス・デバイスが、コンピューティングデバイスの1つまたは複数のアプリケーションに利用不可能になる(ブロック1204)。例えば、ネットワーク・デバイス・マネージャ・モジュール126は、アプリケーション118、120によって必要とされるネットワークトラフィックが完了したという判断に応じるなどの場合に、ネットワーク沈黙モードを実行し、電力消費を抑えることができる。この沈黙モードは、定義された時間を有することができ、イベントに応じるなどにより、終了することができる。この利用不可能性は、アプリケーション118、120が、この時間の間、ネットワーク・インターフェイス・デバイス112を「起動する」ことができないよう、上記した「ブラックホール」技術の使用を含むことができる。
【0079】
ネットワーク・インターフェイス・デバイスが利用不可能である間、他のネットワーク・インターフェイス・デバイスが、1つまたは複数のアプリケーションに対して利用可能になる(ブロック1206)。すでに述べたように、コンピューティングデバイス102は、複数のネットワーク・インターフェイス・デバイスを備えることができる。それに応じて、ネットワーク・デバイス・マネージャ・モジュール126は、ただ1つのネットワーク・インターフェイス・デバイス112をインターネット接続のために利用可能にするなど、コンピューティングデバイスのリソースを節約するために、それらのデバイスを、高電力モードまたは低電力モードに置くよう管理することができる。
【0080】
例えば、ネットワーク・デバイス・マネージャ・モジュール126は、ルーティング技術を使用して、「不適切な」ネットワーク・インターフェイス・デバイス112の不要な起動を防ぐことができる。前記例に続いて、利用不可能にされたネットワーク・インターフェイス・デバイスを使用する通信のために指定された1つまたは複数のアプリケーションから受信したデータが、他のネットワーク・インターフェイス・デバイスに経路付けられる(ブロック1208)。例えば、これを用いて、Wi−Fiデバイスなどの動作状態のネットワーク・インターフェイス・デバイスに自動的に経路付けられる非動作状態であるセルラ・ネットワーク・インターフェイス・デバイスを使用する通信に対し、アプリケーション118によって意図されたデータを経路付けることができる。
【0081】
したがって、オペレーティングシステムは、電力消費を抑えるモードにあるネットワーク・インターフェイス・デバイスに、コンピューティングデバイスの1つまたは複数のアプリケーションによるアクセスを制限する技術をサポートするよう構成することができる。さらに、ネットワーク・インターフェイス・デバイスは、特定のエンドポイントからのプッシュ通知などの通知の受信に応答して、そのモードから起動するよう構成される。ネットワーク接続の維持についてのさらなる説明は、以下のセクションに関連して見ることができる。
【0082】
キープ・アライブ・マネージャ・モジュール
図13は、
図1のネットワーク・ブローカ・モジュール122のキープ・アライブ・マネージャ・モジュール128の例示的動作を示す例示的実施態様におけるシステム1300の図である。キープ・アライブ・マネージャ・モジュール128は、ネットワーク114上の通知チャネルを維持するためのネットワーク・ブローカ・モジュール122の機能を表す。例えば、キープ・アライブ・マネージャ・モジュール128を使用して、アプリケーション118、120と、エンドポイント1306、例えば、ネットワークサービスのサーバとの間の通知チャネル開口を保つために十分な、ネットワーク通信1304間の間隔を定義するキープアライブ間隔1302を算出することができる。したがって、キープアライブ間隔1302は、ネットワーク114を介して、例えば、1つまたは複数の通知チャネルを介して、通信の状態を維持するため、通信の周波数を描くよう算出することができる。
【0083】
ネットワーク・ブローカ・モジュール112は、さまざまな異なる通知チャネルを管理することができる。例えば、アプリケーション118は、電子メール通信をサポートするよう構成することができ、したがって、電子メール・サービス・エンドポイントと相互通信するよう構成することができる。アプリケーション118は、また、インスタントメッセージングをサポートするよう構成することができ、したがって、他のエンドポイント(例えば、インスタント・メッセージング・サービスのサーバ)と通信することができる。したがって、単一アプリケーション118で、複数の通知チャネルをサポートすることができる。さらに、アプリケーション118、120は、また、異なる通知チャネルを使用して、同じエンドポイントと通信することができる。したがって、キープ・アライブ・マネージャ・モジュール128は、ネットワーク114を介する通信を含む、さまざまな異なる通知チャネルを扱うことができる。
【0084】
さらに、キープ・アライブ・マネージャ・モジュール128は、さまざまな方法でキープアライブ間隔1302を算出することができる。そのような実施態様の1つにおいて、キープアライブ間隔1302は、アプリケーション118が、例えば、通知チャネルを介して通信するエンドポイント1306のサーバタイムアウト間隔に基づき、算出することができる。例えば、サーバタイムアウト間隔は、エンドポイント1306と相互通信するよう構成されたアプリケーションによって指定された既知のタイムアウトに基づき、キープ・アライブ・マネージャ・モジュール128によって決定することができる。
【0085】
例えば、アプリケーション118は、ソーシャル・ネットワーク・サービスなどの、特定のエンドポイントと相互通信するよう構成することができる。したがって、このアプリケーションは、タイムアウトのサーバタイムアウト間隔の「知識」でコード化することができ、アプリケーション118は、そのエンドポイントで通知チャネルを維持するよう構成することができ、例えば、通信が送信され、エンドポイント1306で状態を維持することができる。したがって、この例において、キープ・アライブ・マネージャ・モジュール128は、アプリケーション118自身からこの間隔を決定することができる。事前にエンドポイント1306のサーバタイムアウト間隔を決定するなど、他の例もまた想定され、(例えば、障害検出および再調整によって)コンピューティングデバイスとエンドポイント1306との間のモニタリングされた相互作用などに基づくことができる。
【0086】
他のそのような実施態様において、キープアライブ間隔1302は、ネットワーク114の中継デバイス1308を扱うため、ネットワークタイムアウト間隔を使用して算出することができる。例えば、ネットワーク・インターフェイス・デバイスとエンドポイント1306との間のネットワーク接続は、ネットワークアドレス変換デバイス、プロキシ、ファイヤウォール、および無線アクセスポイントなどの、さまざまな中継デバイス1308を含むことができる。ネットワークタイムアウト間隔は、さまざまな方法で、キープ・アライブ・マネージャ・モジュール128によって決定することができる。
【0087】
例えば、キープ・アライブ・マネージャ・モジュール128は、そのような決定に対して利用可能になるテストデバイスなどの、「既知の」もしくは「長く知られる(known−to−be−long)」サーバタイムアウト間隔を有するエンドポイントと、ネットワーク114および対応する中継デバイス1308を介して接続することができる。キープ・アライブ・マネージャ・モジュール128は、この既知のエンドポイントとの接続をモニタリングして、中継デバイス1308をいつ「タイムアウトさせるか」を判断することができ、したがって、中継デバイス1308のネットワークタイムアウト間隔を決定することができる。このネットワークタイムアウト間隔は、キープアライブ間隔1302を算出する際に使用するために、キープ・アライブ・マネージャ・モジュール128によって保存することができる。例えば、このネットワークタイムアウト間隔は、ネットワーク・インターフェイス・デバイス112がネットワーク114にアクセスする特定のネットワークに対して特有のものとして保存することができる。
【0088】
1つまたは複数の実施態様において、キープアライブ間隔1302は、エンドポイント1306のサーバタイムアウト間隔、中継デバイス1308のネットワークタイムアウト間隔、および両方の間隔に基づいて算出することができる。例えば、キープアライブ間隔1302は、キープ・アライブ・マネージャ・モジュール128によって算出され、通知チャネルを維持する際に、コンピューティングデバイス102のリソースを効率的に使用することができる。例えば、キープ・アライブ・マネージャ・モジュール128は、ネットワークタイムアウト間隔が15秒であり、サーバタイムアウト間隔が20秒であると決定することができる。したがって、キープ・アライブ・マネージャ・モジュール128は、15秒間隔でネットワーク・インターフェイス・デバイス112を起動して、エンドポイント1306と通信することができるため、エンドポイント1306と中継デバイス1308とを動作状態に保つことができる。したがって、この例において、キープ・アライブ・マネージャ・モジュール128は、15秒および20秒間隔でネットワーク・インターフェイス・デバイス112を起動することを避けることができるが、どちらのデバイスも状態を維持することができる。
【0089】
したがって、単一ネットワークタイムアウト値を算出することができ、これらの値の最小値(例えば、ベースラインフロア)は、同時発生の「キープアライブ」がいつ送信されるかを描く融合時間を計算するために算出される。したがって、ネットワークタイムアウト間隔は、複数のサーバ接続に適用することができる。
【0090】
さらに、1つまたは複数の実施態様は、失われているネットワーク接続を扱うことができる。ネットワークは、不統一である可能性があり、接続は、時に消失する可能性がある。それが起こると、サーバへの永続接続が断たれる可能性がある。したがって、これらの実施態様は、ネットワークが再び利用可能になるときを自動的に検出する能力を使用することができる。例えば、Wi−Fiネットワークで、「ネットワーク・リスト・オフロード」を介しておよびオペレーティングシステム自体を介してなどの効果的な方法で、このことは、ハードウェアまたはファームウェアで実行することができる。したがって、オペレーティングシステムは、アプリケーションのこのクラスに、コールバックルーチンを介して、ネットワークの存在を通知することができ、次いで、これらのアプリケーションは、接続、例えば、プッシュ通知サーバへの長期接続を再確立することができる。したがって、融合通知が実行され、複数の通信アプリケーションで通信を再確立することができ、ローカル・コンピューティング・リソースの使用を最適化するため、およびネットワーク・インターフェイス・デバイスのリソースの使用を最適化するために使用することができる。
【0091】
本技術は、また、キープ・アライブ・マネージャ・モジュール128によって、アプリケーション118、120を扱うために使用することができる。例えば、キープ・アライブ・マネージャ・モジュール128は、アプリケーション118、120によって送信される通信をバッチ処理し、通知チャネルを維持するよう構成することができる。したがって、前述のように、キープアライブ間隔1302は、コンピューティングデバイス102のリソース、例えば、電源108を効果的に使用するよう構成することができる。
【0092】
例えば、キープ・アライブ・マネージャ・モジュール128は、アプリケーション118が、10秒間隔で「キープアライブ」通信を開始するよう構成されること、およびアプリケーション120が、8秒間隔で「キープアライブ」通信を開始するよう構成されることを決定することができる。したがって、キープ・アライブ・マネージャ・モジュール128は、通信を行うために、アプリケーション118、120の両方に対して、8秒間隔で、ネットワーク・インターフェイス・デバイス112を起動することができる。このようにして、キープ・アライブ・マネージャ・モジュール128は、さまざまなエンドポイント1306への通知チャネルに対して「キープアライブ」を開始したアプリケーション118、120を融合し、電力および他のリソースを節約することができる。したがって、キープ・アライブ・マネージャ・モジュール128は、さまざまなファクタでキープアライブ間隔1302を基にすることができ、キープアライブ間隔1302を調整することもでき、さらに、その説明は、以下の図面に関連して見ることができる。
【0093】
図14は、
図13のキープアライブ間隔を算出および調整する例示的実施態様を示す例示的実施態様におけるシステム1400の図である。すでに述べたように、中間ネットワークデバイスによる通知チャネルの維持は、ネットワーク114にアクセスするアプリケーション118、120の問題とすることができる。従来技術は、状態を保護するために、パケットを送信/受信するための間隔を定義したハードコーディングされた値を必要とした。しかしながら、本明細書で説明する技術では、動的キープアライブ間隔が、例えば、所与の遠隔接続先へのテスト接続を使用して、コンピューティングデバイス102自体でのアプリケーション118、120の実行を通じて、および、ネットワークとサーバタイムアウト間隔の使用を通じてなどにより算出される。
【0094】
図14のシステム1400は、
図13のキープアライブ間隔1302を調整する一例を示す。この例において、初期に算出されたキープアライブ間隔は、T=T(max)として、初期段階で設定される(ブロック1402)。次いで、基準ポイントは、現在のTより低くなるよう試みられる(ブロック1404)。これは、T(min)のW(min)のポーリングを含むことができ、ここでのWは、ポーリング間の再接続時間を表す(ブロック1406)。これは、また、TがVずつインクリメントされ、T(max)でキャップ(cap)された積極的チューニングを含むことができ(ブロック1408)、ここで、Vは、積極的チューニングのインクリメントを表す。システム1400は、また、値がV/Yずつインクリメントされる微細チューニングを含むことができ、ここで、Yは、積極的インクリメントの1/Yを意味する。これらの値は、T−検出値およびT(LKG)が絶対時間である定常状態を判断するために活用することができる。図において、Zは実行したリトライの数を表し、ネットワークエラーに対処するために設定することができ、Xは、成功したキープアライブ(KA)の数を表す。キープ・アライブ・マネージャ・モジュール128の動作についてのさらなる説明は、以下の手順に関連して見ることができる。
【0095】
図15は、キープアライブ間隔を算出して、1つまたは複数の通知チャネルを維持するために使用する例示的実施態様における手順1500である。本手順の態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現することができる。本手順は、1つまたは複数のデバイスによって実行される動作を明示するブロックのセットとして示され、各ブロックによる動作を実行するために示される順序に必ずしも限定されない。以下の説明の部分において、
図1の環境および
図13から
図14のシステムならびに例示的実施態様を参照する。
【0096】
キープアライブ間隔は、コンピューティングデバイスのオペレーティングシステムによって算出される(ブロック1502)。
図13および
図14に関して説明したように、キープアライブ間隔は、ネットワークタイムアウト間隔およびサーバタイムアウト間隔に基づく、および複数のアプリケーション118、120に対するキープアライブ通信スケジューリングに基づくなど、さまざまな方法で算出することができる。
【0097】
キープアライブ間隔を使用して、コンピューティングデバイスの1つまたは複数のアプリケーションとネットワークとの間の、1つまたは複数の通知チャネルを維持する(ブロック1504)。例えば、キープ・アライブ・マネージャ・モジュール128は、ネットワーク通信をモニタして、通知チャネルを介して、データを送信および受信することができる。1つまたは複数の通知チャネルが、ネットワーク通信1304と関係することなく、キープアライブ間隔に達した場合、キープ・アライブ・マネージャ・モジュール128は、各エンドポイント1306と通信することによって、チャネルを維持することができる。
【0098】
キープアライブ間隔は、また、オペレーティングシステムによる、キープアライブ間隔のモニタリングされた使用に基づき、調整することができる(ブロック1506)。例えば、キープ・アライブ・マネージャ・モジュール128は、通知チャネルが、ネットワークもしくはサービスタイムアウト間隔に達したために機能しなくなったと判断することができる。次いで、キープ・アライブ・マネージャ・モジュール128は、キープアライブ間隔1302を「少なく」調整し(例えば、間隔によって定義された時間量を減らす)、チャネルがタイムアウトする時間の観測された量より少ない時間量に調整することができる。当然、
図14に関連して説明したように、キープアライブ間隔1302を増やすなど、他の例もまた想定される。
【0099】
図16は、キープアライブ間隔を算出して、アプリケーションからキープアライブ通信をバッチ処理する例示的実施態様における手順1600である。本手順の態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現することができる。本手順は、1つまたは複数のデバイスによって実行される動作を明示するブロックのセットとして示され、各ブロックによる動作を実行するために示される順序に必ずしも限定されない。以下の説明の部分において、
図1の環境および
図13から
図14のシステムならびに例示的実施態様を参照する。
【0100】
ネットワークを介して各エンドポイントを有する通知チャネルを維持するよう指定された1つまたは複数のサーバタイムアウト間隔について、コンピューティングデバイスで実行可能な複数のアプリケーションのそれぞれに対して判断する(ブロック1602)。例えば、キープ・アライブ・マネージャ・モジュール128は、各エンドポイントを有する通知チャネルを維持するため、各アプリケーションによって使用されるサーバタイムアウト間隔を判断するために、アプリケーション118、120を試験することができる。
【0101】
キープアライブ間隔は、複数のアプリケーションのそれぞれに対する1つまたは複数のサーバタイムアウト間隔から算出される(ブロック1604)。
図13に関連して説明したように、キープ・アライブ・マネージャ・モジュール128は、さまざまなサーバタイムアウト間隔に対するリソース使用の効率に基づいて、キープアライブ間隔1302を決定することができる。次いで、キープアライブ間隔を使用して、通知チャネルを維持するために指定されたネットワーク・インターフェイス・デバイスを起動することができる(ブロック1606)。例えば、キープ・アライブ・マネージャ・モジュール128は、ネットワーク・インターフェイス・デバイス112が低電力モードにある間、ネットワーク通信1304が、通信チャネルのいずれに対しても発生しなかったと判断することができる。それに応じて、キープ・アライブ・マネージャ・モジュール128は、ネットワーク・インターフェイス・デバイス112を起動して、キープアライブ間隔1302で各エンドポイント1306と通信し、コンピューティングデバイス102のリソースを効率的に使用することができる。さまざまな他の例もまた、上記のように、および以下の実施例に関連してさらに説明するように、想定される。
【0102】
実施例
図17および
図18は、
図1のネットワーク接続ブローカ122の実施例を示すシステム1700、1800である。
図1に関連してすでに述べたように、システム・オン・チップ型デバイスにおける「接続状態スタンバイ(connected standby)」と呼ばれるシステム状態のサポートは、「常にオンラインで、常に接続状態にある」(AOAC)ユーザ体験を可能にするための機会を提供することができる。例えば、アプリケーションは、「インフォーカス」でない場合、例えば、前景にない場合、一時停止することができる。結果として、ネットワーク114およびネットワーク・インターフェイス・デバイス112は、「ネットワーク沈黙モード」(netqm)に入る可能性がある。このモードでは、オペレーティングシステム116は、L2接続およびL3識別情報が維持されることを保証する間、デバイスからの発信パケットを防ぐことができる。コンポーネントからの指示は、沈黙モードを出るための電力依存コーディネータ(PDC)と称された。ネットワーク114接続と関係するタスクの完了時に、ネットワーク・ブローカ・モジュール122は、ネットワーク・インターフェイス・デバイス112を、再び、ネットワーク沈黙モードにして、PDCが出口イベントを示すまで、この状態のままでいさせることができる。
【0103】
この設計を含むシステム1700の概要が、
図17に示される。本図は、チャット・アプリケーション1702に対する接続および他のブックキーピングを扱うよう構成された、軽量チャットスタブ1704を含む、チャットアプリケーション(例えば、ネットワーク114を介してチャットするために構成されたもの)を示す。チャットアプリケーション1702は、また、比較的「重量のある」チャットUI1706を備え、アプリケーション1702の一部は、チャットスタブ1704によって表される軽量接続スタブから分離される。これは、アプリケーション1702の機能を誘導するために使用することができるさまざまな技術の1つである。
【0104】
プロセス・ライフタイム・マネージャ1708は、また、アプリケーション1702のライフサイクルを管理するための機能を示すものとして図示される。言い換えると、アプリケーション1702が、ユーザフォーカスから離れてタスクを課されると(例えば、背景へ移動)、PLM1708は、チャットUI1706を終了し、メモリ内でチャットスタブ1704を一時停止することができる。
【0105】
システム1700は、上記したように、関心イベントがアプリケーション1702に対して発生すると、チャットスタブ1704をリハイドレートするための機構を備える、カーネル・ブローカ・インフラストラクチャを活用することができる。このようにして、コンピューティングデバイスのリソースは節約することができ、例えば、コンピューティングデバイス102のCPUは、沈黙モードに入り、入力メッセージが起動を誘引するまで、およびカーネルブローカが周期的動作のためにシステムを起動するまでなど、それまでこのモードに留まることができる。
【0106】
ネットワーク接続ブローカ(NCB)1710(
図1のネットワーク・ブローカ・モジュール122に対応してもよいし、しなくてもよい)は、起動パターンマネージャ1712およびキープ・アライブ・マネージャ1714として表される、さまざまな機能を使用することができる。起動パターンマネージャ(WPM)1712は、アプリケーション1702が、ネットワークイベント時に「リハイドレート」する、例えば、特定パターンの検出時に起動することができることを保証するよう構成される。
【0107】
キープ・アライブ・マネージャ1714は、通知チャネルが、例えば、プッシュ通知の入力がクラウドサービスから到達できるよう、アプリケーション1702に対して維持されることを保証するよう構成される。例えば、アプリケーション1702は、作業アイテムを
図18のBI1802に登録することができ、それにより、アプリケーション1702が、キープアライブ動作に関心があることをオペレーティングシステム116に知らせることができる。次いで、オペレーティングシステム116は、出力パケット動作が、事前定義された時間の間、例えば、数秒の間、許可されることを指示するため、コールバックを登録したアプリケーション1702を起動する、適切な融合キープアライブ間隔を判断することができる。BI1802は、CPUおよびメモリリソースの点から「サンドボックス」作業アイテムとすることができる。このことは、アプリケーション1702に、各エンドポイント(例えば、「クラウド内の」サービス)に、周期的な「キープアライブ」を実行させ、可到達性を維持することができる。このことは、また、「キープアライブ」の過多によるリソースの非効率的な使用に対して、アプリケーションの能力を限定するために使用することができる。
【0108】
オペレーティングシステムは、通知サービス(例えば、Windows(登録商標)通知サービス)と共に使用して、すでに述べたように、動的キープアライブ間隔を決定することができる。例えば、動的キープアライブ間隔は、4分間隔で保守的に開始し、接続がなお維持される値にインクリメントする間隔によって定義される時間量を倍にする「指数バックオフ」として実施することができる。通知サービスは、この目的のためにテスト接続を使用して、動的間隔を決定することができる。1つまたは複数の実施態様において、他の実施態様もまた想定されるが、キープ・アライブ・マネージャ1714は、接続スタンバイもしくはActive/ONになるアプリケーション状態もしくはシステムを区別しない。
【0109】
起動パターンマネージャ1712は、ネットワーク・インターフェイス・カード(NIC)1716などの、ネットワーク・インターフェイス・デバイスに対する適切な起動パターンを組み込むための機能を表す。起動パターンマネージャ1712は、NIC1716を、ネットワーク沈黙モードエントリー時に、「ウェイクオンLAN(“Wake on LAN”)」モードに移行させることができる。例えば、NIC1716は、起動パターンのセットに一致した場合、NIC1716が着信パケットを受け入れ、送達するよう構成された、D3モードに遷移することができる。そうであれば、NIC1716を、動作状態に遷移させることができる。起動パターンは、各起動可能接続に対する“<SrcAddr,DstAddr,SrcPort,DstPort,TransportProtocol>”などの、さまざまなソースから送達することができる。1つまたは複数の実施態様において、NIC1716は、そのようなパケットのロスが、VoIPなどの特徴をサポートするアプリケーションに対するリアルタイム応答に影響を及ぼす可能性があるため、(破棄/削除に対立して)プロトコルスタックに起動させる着信パケットを通過させる。
【0110】
ランタイムAPIサーフェスもまた、オペレーティングシステム116によって提供されるキープアライブおよび遠隔起動機能を利用するよう構成された、アプリケーションに表示することができる。ライブラリを使用して、アプリケーションで、以下を含むさまざまな機能を実行することができる。
・通知チャネルの作成指示(例えば、BeginSetup)
・通知チャネルのセットアップ完了指示(例えば、EndSetup)
・分単位で所望のキープアライブ間隔を設定(例えば、ServerKeepAliveIntervalTime)
・キープ・アライブ・イベントおよび遠隔起動イベントに対するBackground Taskハンドラの登録
・キープアライブ間隔が十分ではなかったことをシステムに指示(例えば、DecreaseKeepAliveInterval)
【0111】
通知システムは、断続的に実行しているinboxコンポーネントとして実現することができるので、キープ・アライブ・イベントに対し実行される起動アイテムコードを、アクティベーションプロキシ方法によってトリガすることができる。アクティベーションプロキシは、ランタイムライブラリの内部に隠すことができ、プライベートAPIを通じてアクティベートすることができる。NCBサービスチェックを使用して、処理の保全性レベルをチェックすることができる。プロキシは、WNFイベントを作成し、WNFイベントメッセージに対するWNFチャネルをリッスンする。通知サービスのためのバックグラウンド・タスク・ハンドラは、(BiSignalEventを呼び出すNCBサービス/TCPIP.sysの結果として)BIがWNFイベントメッセージを発行した場合、プロキシによって起動することができる。
【0112】
ランタイムAPIライブラリは、LRPCを使用して、IPヘルパーサービス内でホストされたNCBサブサービス(Ncbsvc.dll)と通信し、NCBにキープアライブ時間を提供し、キープアライブおよび起動イベントのためのイベントネームを受信することができる。次いで、ランタイムAPIは、ブローカインフラストラクチャAPIを呼び出し、アプリケーション提供のコールバックと、ブローカインフラストラクチャ提供のイベントとを関連付けることができる。
【0113】
図18のシステム1800は、オペレーティングシステム116の残りの部分に伝えるためにNCBサービス1806によって使用される実際の通信インターフェイスを隔離するよう構成された、NCBレジスタ1804を備える。例えば、ランタイムAPIによって使用されるRPCは、NCBレジスタ内で隔離することができる。レジスタは、RPCサーバエンドポイントを開放し、アプリケーションをリッスンすることができる。アプリケーションは、このRPCエンドポイントに接続するため、上記したランタイムライブラリを使用することができる。
【0114】
同様に、実際のBI1802APIアクセスは、図示したように、NCBレジスタ1804の内部に隠すことができる。これにより、キープ・アライブ・マネージャ1714を、アーキテクチャ変更から隔離することができる。NCBレジスタ1804は、BI1802APIを呼び出し、「キープアライブ」および「起動」イベントを作成することができる。NCBレジスタ1804の他の部分は、WPM1808と通信することに関係し得る。
【0115】
キープ・アライブ・プロバイダ・インターフェイス1810は、WNSを、キープ・アライブ間隔プロバイダとして登録することを可能にするよう構成され、LRPCを使用して、WNSと通信することができる。WNSは、キープ・アライブ・プロバイダ・インターフェイス1810によって登録されたコールバックを使用して、キープアライブ間隔推定値を提供することができる。
【0116】
キープ・アライブ・プロバイダ・インターフェイス1810は、NLMキャッシュライブラリ1812内に、ネットワーク単位(NLM ID)を基準として、推定値をキャッシュすることができる。NLMキャッシュは、キープ・アライブ・プロバイダ・インターフェイスとDAサイトマネージャとの間で共通とすることができるライブラリを通じてアクセスすることができる。
【0117】
キープ・アライブ・マネージャ1714は、キープ・アライブ・プロバイダからキープアライブ間隔推定値を要求するよう構成することができる。タイマ(融合させてもよい)は、“SetThreadPoolTimer”APIを使用して作成することができる。時間は、T_WNSおよびT_APPの最小値として設定することができる。アプリケーションによって要求されたキープアライブ間隔である。
【0118】
キープ・アライブ・タイマが切れた場合、キープ・アライブ・マネージャ1714は、NCBレジスタ1804を呼び出すことによって、キープ・アライブ・イベントを報知することができる。次いで、NCBレジスタ1804は、BI1802APIを呼び出し、スケジュールされる作業アイテムをトリガすることができる。
【0119】
アプリケーションは、提供された間隔が非常に長かったというヒントをNCBに提供することができる。このことは、アプリケーションIDおよび通知チャネルIDと共に使用され、上記したNLMキャッシュライブラリ1812を使用して、ネットワーク単位を基準として、再びキャッシュに格納することができる。
【0120】
通知チャネルを識別するためのモデルは、処理(ループバックを除く)毎にそれぞれ確立されたTCP接続が、NCBによる通知チャネルとして扱われる間、処理全体のタイムスパンを表す“Start/Done”モデルに基づくことができる。しかしながら、Start/Doneタイムスパンは、1つの“NCContext”と一括して称される、そのスパンの間に生成される各接続に適用する、パラメータの単一セットを有する。典型的には、NCContextとTCP接続との間の1対1の関係が発生することに留意されたい。しかしながら、Start/Doneモデルは、この関係を保証しないため、この設計は、単一NCContextスパンに対応する複数TCP接続が存在することができるという仮定のもとで、動作することができる。このスパンは、処理ID、レジスタによって作成ならびに使用されるオペーク(opaque)NCContextID(イベント報知中にBIに通される、したがって、appにとって有意である)、オプションのオペーク通知チャネルID、およびオプションの遠隔起動ブローカイベントを含むタプルによって識別することができる。
【0121】
NCBレジスタ1804は、WPMに、Start(PID、NCContextID、AppNCID、BrokeredEvent)およびDone()(例えば、NCContextを設定、および消去)を指示するよう構成することができる。NCBレジスタ1804は、また、実際のアプリケーション処理PIDが、Start/Doneタイムスパン中に、完全な形で残る(例えば、リサイクルされない)ことを保証することができる。NCBレジスタ1804は、クライアント処理で参照するRPC APIを使用することによって、これを達成することができる。
【0122】
NCBは、NSI1814を介して、WPM1808にStartおよびDoneを指示することができる。WPMは、この目的のために、(ポート予約NSIオブジェクトと同様とすることができる)INET NSIオブジェクトを示すことができる。NCBは、NSIセットコマンドを使用して、アクティブNCContext(例えば、Start)を設定、およびアクティブNCContext(例えば、Done)を消去することができる。1つまたは複数の実施態様において、所与の時点で、所与の処理に対して、単一のアクティブNCContextがある。
【0123】
所与の処理によって確立されたTCP接続は、その処理に対して、(存在するならば)現在アクティブなNCContextを引き継ぐことができる。NCContextが引き継がれると、引き継いでいるTCP接続にアタッチされたままにすることができる。NCBが(例えば、以前アクティブだったものを消去した後で)処理のために新しいアクティブなNCContextを設定すると、新しい接続が新しいNCContextを引き継ぐことができ、以前のNCContextを引き継いだ接続は、影響を受けないままにすることができる。(1つまたは複数のTCP接続によって)引き継がれたNCContextは、NSI1814を使用することによっても、NCBサービス1806によって消去することができる。NCContextが消去された場合、WPM1808は、関連する遠隔起動ブレーカ・イベントを報知することを停止することができる(だが、組み込まれた起動パターンは、通信が切断されるまで、そのまま残る)。
【0124】
WPM1808は、NCBサービス1806によって制御された、いくつかの処理毎の状態(例えば、アクティブな、引き継がれたNCContext)の経過を追うことができるため、アプリケーション終了として状態(NCContext)を適切にクリーンアップするNCBサービス1806に依存することがある。しかしながら、NCBサービス1806処理は、異常にクラッシュ/終了するかもしれない可能性がある。適切なクリーンアップを実行するために、WPM1808は、TCPソケット(バインドおよび接続されない)を作成し、NCB制御ソケットとしてマークするため、ソケットでプライベート・オプションを設定するNCBによって、NCBサービス処理終了の指示を受信することができる。オブジェクトマネージャは、処理が終了すると、(ソケットを含む)ハンドルを適切に閉じるので、ソケット・ハンドル・クロージャは、TCPのエンドポイント・クローズ・ルーチンを起動させる。次いで、TCPは、NCB制御ソケットを閉じる際に、NCContextのそれぞれをクリーンアップすることができる。
【0125】
上記したように、(tcpip.sysにおけるTCPモジュールで実現することができる)起動パターン・マネージャ(WPM)1808は、NCContextの経過を追うよう構成することができる。TCPは、処理のテーブルおよびNCBサービス1806によって設定された関連NCContextを保つことができる。1つまたは複数の実施態様において、所与の処理に対して、1つまたは0の「アクティブな」NCContextがあり、所与の処理に対して、1つまたは複数の「引き継がれた」NCContextが存在することができる。TCPは、NCBサービスが実行されている単一システムアカウントが、NCContextを設定/消去することができるよう構成することができる。
【0126】
1つまたは複数の実施態様において、NCContextは、「アクティブ」であるための1つの基準カウント、および各引き継ぎ接続のための1つの基準カウントを有する。すなわち、NCContextは、アクティブではなく、接続によって引き継がれてもいなかった場合、削除することができる。
【0127】
接続がNCContextを引き継いだ場合、WPM1808は、NICが起動パターンをサポートする場合、起動パターン組み込みのためのNSI1814方法を介して、ネットワーク・インターフェイス・デバイスまで、接続の4個のタプルから作られる起動パターンを組み込むことができる。WPM1808は、起動パターンが、各アクティブNCContextに対する所与の接続に対して、良好に組み込まれなかったかどうかの経過を追うことができる。アクティブNCContextが、“Done”コール中にNCBサービスによって消去される前に、NCBサービス1806は、そのNCContextに対してNSIgetを発行し、この起動パターン取り出し状態を照会し、その情報(例えば、システムが、そのNCContextと関連した接続に対する起動パターンの組み込みに失敗したかどうか)を、アプリケーションに戻すことができる。
【0128】
ブローカ遠隔起動イベントでNCContextを引き継いだ各TCP接続に対し、TCPは、データ指示(例えば、アップコールまたは受信完了)が、入力データのため、その接続で、TCPによって作られた場合はいつでも、ブローカ遠隔起動イベントを報知することができる。TCPが遠隔起動イベントを報知すると、遠隔起動イベントがNCBサービス1806によってリセットされるまで、そのNCContextでのさらなる報知を無効にする(例えば、取り除く)ことができる。NCBサービス1806は、アプリケーションの遠隔起動コールバックが、コールバックを呼び出したNCBルーチンに制御を返すと、遠隔起動イベントをリセットする。
【0129】
NLで扱うSIO_ADDRESS_LIST_SORT ioctlは、また、その処理に対するアクティブNCContextが存在する間、Ioctlが処理によって発行されているかどうかを意識するよう変更することができ、そうである場合、ソートロジックは、トンネルインターフェイスより、ネイティブインターフェイス上のアドレスを選ぶことができる。
【0130】
WPM1808は、また、ルータによってアドバタイズされたIPv6サブネット・プレフィックスを使用することによって形成されるIPv6アドレスに対する残りの有効なライフタイムを追跡するために、タイマを保つことができる。ルータ・アドバタイズメントが、起動可能低電力状態でNICによって失われた可能性のある場合、IPv6プレフィックス・タイムアウトは、タイムアウト発生前に、明示的ルータ要請を介してリフレッシュすることができ、そうでなければ、L3識別情報は、場合によっては、確実には保護されない可能性がある。WPM1808は、NDIS APIを使用して、NICが「留まる」(例えば、システム内の何かによって保持される任意のNIC動作基準を有さないため、D3に移らない)ことを保証するために、ルータ要請を実施することができる、ネットワーク・インターフェイスで「NIC動作基準」を取得することができる。
【0131】
例示的システムおよびデバイス
図19は、
図1を参照して説明したようなコンピューティングデバイス102を含む例示的システム1900を示す。例示的システム1900は、パーソナルコンピュータ(PC)、テレビジョンデバイス、及び/又はモバイル・デバイスでアプリケーションを実行する場合、シームレスなユーザ体験のためのユビキタス環境を可能にする。サービスおよびアプリケーションは、アプリケーションを使用しながら、ビデオゲームをプレイしながら、およびビデオを見ながらなどの間に、あるデバイスから次のデバイスへ遷移する場合に、ユーザ体験を共通にするために、3つすべての環境で実質的に同様に動作する。
【0132】
例示的システム1900において、複数のデバイスが、中央コンピューティングデバイスを通じて、相互接続される。中央コンピューティングデバイスは、複数のデバイスに対してローカルとすることができ、または、複数のデバイスから遠隔に設置することができる。一実施形態において、中央コンピューティングデバイスは、ネットワーク、インターネット、または他のデータ通信リンクを通じて複数のデバイスに接続された1つまたは複数のサーバコンピュータのクラウドとしてもよい。一実施形態において、この相互接続アーキテクチャは、複数のデバイス間で配信される機能が、複数のデバイスのユーザに共通でシームレスな体験を提供することを可能にする。複数のデバイスのそれぞれは、異なる物理的要件および能力を有することができ、中央コンピューティングデバイスは、プラットフォームを使用して、デバイスに適合して、さらにすべてのデバイスに共通する体験をデバイスに配信することを可能にする。一実施形態において、ターゲットデバイスのクラスが作成され、体験は、デバイスの汎用クラスに適合される。デバイスのクラスは、物理的特徴、使用の種類、またはデバイスの他の共通特性によって定義してもよい。
【0133】
さまざまな実施態様において、コンピューティングデバイス102は、コンピュータ1902、モバイル1904、およびテレビジョン1906などのさまざまな異なる構成を使用すると仮定することができる。これら構成のそれぞれは、一般に異なる構成および性能を有する可能性があるデバイスを備え、したがって、コンピューティングデバイス102は、異なるデバイス・クラスの1つまたは複数に従って構成することができる。例えば、コンピューティングデバイス102は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、およびネットブックなどを含むデバイスのコンピュータ1902クラスとして実現することができる。
【0134】
コンピューティングデバイス102は、また、携帯電話、ポータブル音楽プレイヤ、ポータブル・ゲーム・デバイス、タブレットコンピュータ、およびマルチスクリーンコンピュータなどのモバイル・デバイスを含むデバイスのモバイル1904クラスとして実現することができる。コンピューティングデバイス102は、また、カジュアルな視聴環境における一般的により大型なスクリーンを有するか、または接続されたデバイスを含むデバイスのテレビジョン1906クラスとして実現することができる。それらのデバイスは、テレビジョン、セット・トップ・ボックス、およびゲーム機などを含む。本明細書で説明される技術は、コンピューティングデバイス102のこれらのさまざまな構成によってサポートすることができ、本明細書で説明される技術の具体例に限定されない。これは、コンピューティングデバイス102上のネットワーク・ブローカ・モジュール122、起動パターン・マネージャ・モジュール124、ネットワーク・デバイス・マネージャ・モジュール126、およびキープ・アライブ・マネージャ・モジュール128を内蔵して使用することにより示される。この機能のすべてまたは一部は、また、以下に記載されるように、「クラウド上」に分散してもよい。
【0135】
クラウド1908は、コンテンツ・サービス1912のためのプラットフォーム1910を含む、及び/又はプラットフォーム1910を表す。プラットフォーム1910は、クラウド1908のハードウェア(例えば、サーバ)およびソフトウェア・リソースの基礎をなす機能を抽出する。コンテンツ・サービス1912は、コンピュータ・プロセッシングがコンピューティングデバイス102から離れたサーバで実行される間、使用することが可能であるアプリケーション及び/又はデータを含むことができる。コンテンツ・サービス1912は、インターネット上の、及び/又は、セルラもしくはWi−Fiネットワークなどの加入者ネットワークを通じてのサービスとして提供することができる。
【0136】
プラットフォーム1910は、コンピューティングデバイス102を他のコンピューティングデバイスと接続するためのリソースおよび機能を抽出することができる。プラットフォーム1910は、また、リソースのスケーリングを抽出して、プラットフォーム1910を介して実現されるコンテンツ・サービス1912に対して生じる要求に対応するスケールのレベルを提供するよう動作することができる。それに応じて、相互接続されたデバイスの実施形態において、本明細書で説明する機能に関する機能の実施態様は、システム1900全体に分散してもよい。例えば、本機能は、コンピューティングデバイス102で、およびクラウド1908の機能を抽出するプラットフォーム1910を介して、部分的に実現することができる。
【0137】
図20は、本明細書で説明する技術の実施形態を実現するための
図1および
図19を参照して説明したような任意の種類のコンピューティングデバイスとして実現することが可能な例示的デバイス2000のさまざまなコンポーネントを示す。デバイス2000は、デバイス・データ2004(例えば、受信データ、受信中のデータ、一斉送信のためにスケジュールされたデータ、データのデータ・パケットなど)の有線及び/又は無線通信を可能にする通信デバイス2002を含む。デバイス・データ2004または他のデバイス・コンテンツは、デバイス、デバイスに格納されたメディアコンテンツ、及び/又はデバイスのユーザと関連した情報の構成設定を含むことができる。デバイス2000に格納されたメディアコンテンツは、任意の種類のオーディオ、ビデオ、及び/又は画像データを含むことができる。デバイス2000は、ユーザ選択可能入力、メッセージ、音楽、テレビ・メディア・コンテンツ、録音されたビデオコンテンツ、および任意のコンテンツ及び/又はデータ・ソースから受信した任意の他の種類のオーディオ、ビデオ及び/又は画像データなどの、任意の種類のデータ、メディアコンテンツ、及び/又は入力を受信することが可能な1つまたは複数のデータ入力2006を備える。
【0138】
デバイス2000は、また、シリアル及び/又はパラレル・インターフェイス、無線インターフェイス、任意の種類のネットワークインターフェイス、モデムの任意の1つまたは複数として、および任意の他の種類の通信インターフェイスとして実現することが可能な通信インターフェイス2008を含む。通信インターフェイス2008は、デバイス2000と、他の電子的デバイス、コンピューティングデバイス、ならびに通信デバイスが、デバイス2000とデータを通信する通信ネットワークとの間の接続及び/又は通信リンクを提供する。
【0139】
デバイス2000は、さまざまなコンピュータ実行可能命令を処理して、デバイス2000の動作を制御し、さらに、本明細書で説明する技術の実施形態を実現する、1つまたは複数のプロセッサ2010(例えば、任意のマイクロプロセッサおよび制御器など)を含む。あるいは、またはさらに、デバイス2000は、一般に2012で識別されるプロセッシング回路ならびに制御回路と関連して実現される、ハードウェア、ファームウェア、もしくは固定ロジック回路の任意の1つもしくは組み合わせを用いて実現することができる。図示しないが、デバイス2000は、デバイス内のさまざまな構成要素と結合するシステム・バスまたはデータ転送システムを含むことができる。システムバスは、メモリバスもしくはメモリ制御器、周辺バス、ユニバーサル・シリアル・バス、及び/又は任意のさまざまなバス構造を使用するプロセッサバスもしくはローカルバスなどの、異なるバス構造の任意の1つもしくは組み合わせを含むことができる。
【0140】
デバイス2000は、また、1つまたは複数のメモリ部品などの、コンピュータ読取り可能媒体2014を備え、その例には、ランダム・アクセス・メモリ(RAM)、不揮発性メモリ(例えば、リード・オンリー・メモリ(ROM)、フラッシュ・メモリ、EPROM、EEPROMなどの任意の1つまたは複数)、およびディスク・ストレージ・デバイスがある。ディスク・ストレージ・デバイスは、ハードディスク・ドライブ、記録可能及び/又は書き換え可能コンパクト・ディスク(CD)、および任意の種類のデジタル多用途ディスク(DVD)などの、任意の種類の磁気もしくは光学ストレージ・デバイスとして実現することができる。デバイス2000は、また、大容量ストレージ媒体デバイス2016を備えることができる。
【0141】
コンピュータ読取り可能媒体2014は、データ・ストレージ機構を提供して、デバイス・データ2004、さまざまなデバイスアプリケーション2018、およびデバイス2000の動作態様に関連した任意の他の種類の情報及び/又はデータを格納する。例えば、オペレーティングシステム2020は、コンピュータ読取り可能媒体2014でコンピュータ・アプリケーションとして保持され、プロセッサ2010で実行することができる。デバイス・アプリケーション2018は、デバイスマネージャ(例えば、制御アプリケーション、ソフトウェアアプリケーション、信号処理ならびに制御モジュール、特定のデバイスにネイティブであるコード、特定のデバイスに対するハードウェアアブストラクション層など)を含むことができる。デバイスアプリケーション2018は、また、任意のシステム構成要素またはモジュールを含み、本明細書で説明する技術の実施形態を実現する。この例において、デバイスアプリケーション2018は、ソフトウェアモジュール及び/又はコンピュータアプリケーションとして示した、インターフェイスアプリケーション2022ならびに入力/出力モジュール2024を含む。入力/出力モジュール2024は、タッチスクリーン、トラックパッド、カメラ、およびマイクロフォンなどの入力を取得するよう構成されたデバイスとのインターフェイスを提供するよう使用されるソフトウェアを表す。あるいは、またはさらに、インターフェイスアプリケーション2022および入力/出力モジュール2024は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせとして実現することができる。さらに、入力/出力モジュール2024は、ビジュアル入力およびオーディオ入力をそれぞれ取得するための別々のデバイスなどの、複数の入力デバイスをサポートするよう構成してもよい。
【0142】
デバイス2000は、また、オーディオデータをオーディオシステム2028にもたらす、及び/又は、ビデオデータを表示システム2030にもたらす、オーディオ及び/又はビデオ入力−出力システム2026を備える。オーディオシステム2028及び/又は表示システム2030は、オーディオ、ビデオ、ならびに画像データを処理、表示、及び/又は、そうでなければ表現する任意のデバイスを含むことができる。ビデオ信号およびオーディオ信号は、RF(無線周波数)リンク、S−ビデオリンク、複合ビデオリンク、コンポーネント・ビデオ・リンク、DVI(デジタル・ビデオ・インターフェイス)、アナログオーディオ接続、または他の同様の通信リンクを介して、オーディオデバイスに、及び/又は及び/又は表示デバイスに、デバイス2000から通信することができる。一実施形態において、オーディオシステム2028及び/又は表示システム2030は、デバイス2000に対する外部コンポーネントとして実現される。あるいは、オーディオシステム2028及び/又は表示システム2030は、例示的デバイス2000の一体型コンポーネントとして実現される。
【0143】
結論
本発明は、構造的特徴及び/又は方法論的動作に特有の言語で説明してきたが、添付の特許請求の範囲で定義される本発明は、記載した特定の特徴または動作に必ずしも限定されないことを理解すべきである。むしろ、特定の特徴および行為は、特許請求する本発明を実現する例示的形態として開示される。