(57)【特許請求の範囲】
【請求項１】
プロセッサデバイスで、第１のソフトウェアアプリケーションに関連付けられる第１の情報を受信することと、
前記第１の情報に基づいて、複数の利用可能なアプリケーションタイプから第１のアプリケーションタイプを選択することと、
前記第１のアプリケーションタイプに基づいて、前記第１のアプリケーションのネットワークとの通信を規制することと、
前記第１の情報が、前記第１のアプリケーションに関連付けられるウィンドウがアクティブウィンドウであると示すかどうか、に基づいて、前記第１のアプリケーションについての通信を規制することと
を備える、方法。
【請求項２】
通信を規制することが、前記第１のアプリケーションについての通信帯域幅を帯域幅制限に規制することを備え、前記帯域幅制限が、前記第１のアプリケーションタイプに基づく、請求項１に記載の方法。
【請求項３】
通信を規制することが、
前記第１のアプリケーションタイプに基づいて優先レベルを決定することと、
複数のバイトを前記ネットワークに伝送順序で通信することであって、前記伝送順序が前記優先レベルに基づくことと
を備える、請求項１に記載の方法。
【請求項４】
通信を規制することが、
前記第１のアプリケーションタイプに基づいて、パケットについてのペイロードサイズを決定することと、
前記ペイロードサイズを有する前記パケットを形成することと、
前記パケットを前記ネットワークに通信することと
を備える、請求項１に記載の方法。
【請求項５】
プロセッサデバイスで、第２のソフトウェアアプリケーションに関連付けられる第２の情報を受信することと、
前記第１の情報に基づいて、第２のアプリケーションタイプを決定することと、
前記第２のアプリケーションタイプに基づいて、前記第２のアプリケーションの前記ネットワークとの通信を規制することと
をさらに備える、請求項１に記載の方法。
【請求項６】
前記第１のアプリケーションの通信を規制することが、前記第１のアプリケーションの通信を第１の帯域幅に規制することを備え、前記第２のアプリケーションの通信を規制することが、前記第２のアプリケーションの通信を第２の帯域幅に規制することを備え、前記第２の帯域幅は前記第１の帯域幅とは異なる、請求項５に記載の方法。
【請求項７】
前記第１のアプリケーションの通信を規制することが、前記第１のアプリケーションについての第１の優先レベルを決定することを備え、前記第２のアプリケーションの通信を規制することが、前記第２のアプリケーションについての第２の優先レベルを決定することと、複数のパケットを前記ネットワークに伝送順序で通信することとを備え、前記伝送順序が前記第１の優先レベルと前記第２の優先レベルとに基づく、請求項５に記載の方法。
【請求項８】
プロセッサデバイスで、ソフトウェアアプリケーションに関連付けられる情報を受信することと、
前記情報に基づいて、アプリケーションタイプを決定することと、
前記アプリケーションタイプに基づいて、ワイヤレスネットワークパラメータを設定することと、
前記ワイヤレスネットワークパラメータに基づいて、ワイヤレスネットワークと通信することと、
前記情報が、前記アプリケーションに関連付けられるウィンドウがアクティブウィンドウであると示すかどうか、に基づいて、前記アプリケーションについての通信を規制することと
を備える、方法。
【請求項９】
前記ワイヤレスネットワークパラメータを設定することが、前記アプリケーションタイプに基づいてネットワークスキャニング頻度を設定することを備える、請求項８に記載の方法。
【請求項１０】
前記ワイヤレスネットワークパラメータを設定することが、前記アプリケーションタイプに基づいてネットワーク承認頻度を設定することを備える、請求項８に記載の方法。
【請求項１１】
前記ワイヤレスネットワークパラメータを設定することが、サービス品質（ＱＯＳ）フィールドを有する複数のパケットを形成することと、前記アプリケーションタイプに基づいて値を前記ＱＯＳフィールドに格納することと、前記複数のパケットを前記ワイヤレスネットワークに通信することとを備える、請求項８に記載の方法。
【請求項１２】
前記ワイヤレスネットワークパラメータを設定することが、ネットワークインターフェースが利用可能なワイヤレスチャネルをスキャンする頻度を設定することを備える、請求項８に記載の方法。
【請求項１３】
前記ワイヤレスネットワークパラメータを設定することが、ネットワークインターフェースが利用可能なワイヤレスアクセスポイントをスキャンする頻度を設定することを備える、請求項８に記載の方法。
【請求項１４】
前記ワイヤレスネットワークパラメータを設定することが、前記ワイヤレスネットワークと通信することに関連付けられる待ち時間期間を設定することを備える、請求項８に記載の方法。
【請求項１５】
前記ワイヤレスネットワークパラメータを設定することが、第１のアプリケーションについての第１のネットワーク承認頻度、および第２のアプリケーションについての第２のネットワーク承認頻度を設定することを備え、前記第１のネットワーク承認頻度が前記第２のネットワーク承認頻度とは異なる、請求項８に記載の方法。
【請求項１６】
前記第１の承認頻度を設定することが、前記第１のアプリケーションによって通信された情報について、前記ネットワークからのどの承認も決定されないようにパラメータを設定することを備える、請求項８に記載の方法。
【請求項１７】
プロセッサデバイスに結合された第１のポートと、
ネットワークに結合された第２のポートと、
前記プロセッサデバイスで実行しているアプリケーションについてのアプリケーションタイプを選択し、前記アプリケーションタイプに基づいて前記アプリケーションの前記ネットワークとの通信を規制し、前記アプリケーションに関連付けられるウィンドウがアクティブウィンドウであるか否かに基づいて、前記アプリケーションについての通信を規制するように構成された制御モジュールと
を備える、ネットワークインターフェースデバイス。
【請求項１８】
前記制御モジュールが、前記第１のアプリケーションタイプに基づいて、前記第１のアプリケーションについての帯域幅制限を設定することによって通信を規制するように構成されている、請求項１７に記載のネットワークインターフェースデバイス。
【請求項１９】
前記制御モジュールが、
前記第１のアプリケーションタイプに基づいて優先レベルを決定することと、
複数のバイトを前記ネットワークに伝送順序で通信することであって、前記伝送順序が前記優先レベルに基づくことと
によって通信を規制するように構成されている、請求項１７に記載のネットワークインターフェースデバイス。
【請求項２０】
前記制御モジュールが、
前記第１のアプリケーションタイプに基づいて、パケットについてのペイロードサイズを決定することと、
前記ペイロードサイズを有する前記パケットを形成することと、
前記パケットを前記ネットワークに通信することと
によって通信を規制するように構成されている、請求項１７に記載のネットワークインターフェースデバイス。
【請求項２１】
前記制御モジュールは、前記第１の情報が、前記第１のアプリケーションに関連付けられるウィンドウがアクティブウィンドウであると示すかどうか、に基づいて、通信を規制するように構成されている、請求項２０に記載のネットワークインターフェースデバイス。
【請求項２２】
請求項１乃至１６のうちのいずれか一項に記載の方法をコンピュータに実行させるプログラム。
【請求項２３】
請求項１乃至１６のうちのいずれか一項に記載の方法をコンピュータに実行させるプログラムを記録したコンピュータ読取可能な記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はコンピュータネットワークに関し、より詳細には、コンピュータネットワークのためのネットワーク通信パラメータを設定することに関する。
【背景技術】
【０００２】
通信ネットワークは、電子デバイス間で様々な情報を転送するために使用されている。しかし、通信ネットワークを介して転送される情報量が増加するにつれて、ネットワークを調節する通信バックボーンにストレスがかかり、情報転送に望ましくない遅延を引き起こすことがある。これは、良くないユーザエクスペリエンスをもたらす場合がある。たとえばユーザは、他のネットワークノードへの転送を待つ間にしばらくの間ネットワークノードでパケットが保留されるためにユーザが情報転送における遅延を感知できる、ネットワークラグを経験することがある。さらに、ネットワークラグおよび他のネットワーク転送問題は、ゲームアプリケーション、音声通信アプリケーションなどの様々なアプリケーションに影響を与える場合がある。
【０００３】
添付の図面を参照することにより、本開示をよりよく理解することができ、本開示の多数の特徴および利点が当業者に明らかになるであろう。
【図面の簡単な説明】
【０００４】
【図１】本開示の一実施形態による通信システムのブロック図。
【図２】本開示の他の実施形態による通信システムのブロック図。
【図３】本開示の一実施形態による、図１のコンピュータデバイスのディスプレイのブロック図。
【図４】本開示の一実施形態による通信システムのブロック図。
【図５】本開示の一実施形態による、ネットワークへの通信パケットの方法の流れ図。
【図６】本開示の一実施形態によるコンピュータデバイスのブロック図。
【発明を実施するための形態】
【０００５】
図１〜６は、ネットワークとインターフェースする１つまたは複数のコンピュータデバイスで実行されているアプリケーションのタイプに基づいて、ネットワークインターフェースでネットワーク通信パラメータを設定するための技術を示している。したがって、たとえばネットワークインターフェースは、アプリケーションタイプに基づいて、実行しているアプリケーションごとに通信帯域幅、優先順位、またはそれらの組合せを設定できる。アプリケーションタイプに基づいてアプリケーションごとにネットワーク通信パラメータを設定することによって、アプリケーションはより効率的にネットワークと通信できるようになる。たとえば、より広い帯域幅を必要とするが比較的高いレイテンシで十分に実行できるアプリケーションは、パケットを合体させることやジャンボフレームを使用することなどによって帯域幅をより効率的に使用できるのに対して、比較的低い帯域幅と低いレイテンシとを必要とするオンラインゲームなどの他のアプリケーションは、ネットワークにより迅速に情報を通信するために、帯域幅に対して効率性が低い場合がある。したがって両方のアプリケーションは、ラグなどのネットワーク問題を減らせばネットワークとより効率的に通信できるようになる。
【０００６】
他の実施形態では、ワイヤレスネットワークインターフェースのためのネットワークパラメータは、インターフェースに関連付けられるコンピュータデバイスで実行されているアプリケーションのタイプに基づいて設定される。調整できるワイヤレスネットワークパラメータの例には、ネットワークアクセスポイントスキャニング頻度、ネットワーク承認頻度、ワイヤレスネットワークに通信されるワイヤレスパケットにおけるサービス品質（ＱＯＳ）フィールドの設定、ネットワークチャネルスキャニング頻度などがある。したがって、たとえばコンピュータデバイスでゲームアプリケーションが実行されていることをネットワークインターフェースが決定すると、ネットワークインターフェースはコンピュータデバイスが固定式である可能性が高いと決定でき、したがってインターフェースはネットワークへの新しいアクセスポイントをスキャンする頻度を減らす。それによってネットワークインターフェースは通信オーバーヘッドを減らし、ネットワークとの通信効率を改善する。
【０００７】
図１を参照すると、本開示の一実施形態による通信システム１００のブロック図が示されている。通信システム１００は、コンピュータデバイス１０２、ネットワーク１１０、および遠隔ノード１５０を含む。コンピュータデバイス１０２および遠隔ノード１５０は、それぞれネットワーク１１０に結合されている。ネットワーク１１０は、コンピュータデバイス１０２と遠隔ノード１５０との間の情報通信のための物理層と論理層とを提供する。したがってネットワーク１１０は、それぞれのパケット内に含まれるアドレス情報によってネットワークノード間でパケットを通信するように構成されたパケット交換ネットワークでよい。したがってネットワーク１１０は、関連するアドレス情報によってパケットを他のノードにルーティングするように構成された、ルータ、サーバ、ゲートウェイ、およびそれらの組合せなどのルーティングデバイスを有するノードのサブセットを備える複数のノードで構成される。したがって、パケットは宛先ノードに到達するまで一連のノードにルーティングされる。
【０００８】
ネットワーク１１０は１つまたは複数のサブネットワークを含むことができ、それぞれのサブネットワークは、インターネットなどのワイドエリアネットワーク、およびローカルエリアネットワークなどでよいことが理解されよう。パケットは、それぞれのパケットに関連付けられるアドレス情報によってサブネットワーク間でルーティングされる。さらに、異なるサブネットワークは異なる通信メディアを使用して情報を転送できることが理解されよう。たとえばネットワーク１１０は、ワイヤレスネットワークと有線ネットワークの両方と、それらの組合せとを含むことができる。
【０００９】
遠隔ノード１５０は、ネットワーク１１０を介して通信されるべきパケットのソースおよび宛先であるネットワークノードである。したがって、遠隔ノード１５０はクライアントサーバ構成におけるサーバ、およびピアツーピアネットワークにおいて構成されたコンピュータデバイスなどでよい。したがって、遠隔ノード１５０は、指定された機能を実行するためにネットワーク１１０に情報を提供する、およびそこから情報を受信する、１つまたは複数のアプリケーションを実行するように構成されている。
【００１０】
コンピュータデバイス１０２は、デスクトップ、ラップトップ、サーバ、ハンドヘルドコンピュータデバイス、セルラー式電話、またはネットワーク１１０を介して遠隔ノードと通信するように構成された他のデバイスである。したがって、コンピュータデバイス１０２はプロセッサ１０５とネットワークインターフェース１３０とを含む。プロセッサ１０５は、プログラムの指定された機能を実行するためにアプリケーションおよび他のプログラムを実行するように構成された、汎用またはアプリケーション専用のプロセッサデバイスである。図１に示された例では、プロセッサ１０５が、アプリケーション１２０および１２１と、ライブラリ１２２と、アプリケーションアナライザ１２５とを実行する。それらについては以下でさらに説明する。
【００１１】
ネットワークインターフェース１３０は、プロセッサ１０５からネットワーク１１０への通信のための物理層および論理層インターフェースを提供する、ネットワークインターフェースカードなどのデバイスである。したがって、ネットワークインターフェース１３０は、帯域幅および優先順位制御モジュール１３１を含むいくつかのプログラムを実行するプロセッサ１１５を含む。さらに、ネットワークインターフェース１３０は、プロセッサ１０５で実行しているそれぞれのアプリケーションに割り当てられる帯域幅および優先順位を設定するために帯域幅および優先順位制御モジュール１３１によって使用される、アプリケーション情報１３３と構成情報１３４とを格納する。本明細書で使用されるように、アプリケーションに割り当てられる帯域幅は、１つまたは複数の遠隔ノードにバイトが提供される、またはそこからバイトが受信されるレートを指す。特に、遠隔ノードからバイトが受信されるレートはダウンロード帯域幅と呼ばれ、遠隔ノードにバイトが提供されるレートはアップロード帯域幅と呼ばれる。アプリケーションに関連付けられる優先順位は、他のアプリケーションに関連して、アプリケーションによって提供されたバイト、またはアプリケーションをターゲットとしたバイトが、それぞれネットワークまたはアプリケーションに提供される、順序および方法を指す。特に、アップロード優先順位は、アプリケーションによって提供されたバイトがネットワーク１１０に通信される相対的順序および方法を指し、ダウンロード優先順位はネットワーク１１０から受信された、およびアプリケーションをターゲットとしたバイトがアプリケーションに提供される相対的順序および方法を指す。
【００１２】
ネットワークインターフェース１３０は、それぞれのアプリケーションに割り当てられた帯域幅および優先順位が確実に十分であるようにするために、アプリケーションごとに帯域幅および優先順位を調節できる。たとえば、ネットワークインターフェース１３０は、アプリケーションから受信したネットワーク１１０に提供するためのバイトを格納するためのアップロードバッファ（図示せず）と、ネットワーク１１０から受信したバイトを格納するためのダウンロードバッファ（図示せず）とを含むことができる。ネットワークインターフェース１３０が関連バッファからバイトを取得する順序およびレートと、ネットワークインターフェース１３０が取得したバイトをパケット化して、結果として得られるパケットをネットワークに提供する（アップロードパケットのために）方法と、ネットワークインターフェース１３０がアプリケーションにバイトを提供する（ダウンロードパケットのために）順序とによって、アプリケーションの優先順位および帯域幅が決定される。したがって、ネットワークインターフェース１３０は、それぞれのアプリケーションに割り当てられた帯域幅と優先順位とを満たすための順序およびレートで、それぞれのバッファからバイトを取得することができる。これは、アプリケーション１２０が、アプリケーション１２１に対して比較的高いアップロード帯域幅を、およびアプリケーション１２１に対して比較的低いアップロード優先順位を割り当てられている例を参照すればよりよく理解されよう。したがって、ネットワークインターフェース１３０は、指定された単位時間（通信間隔と呼ばれる）にわたって、アプリケーション１２１に関連付けられるアップロード帯域幅の限界に達するまで、アプリケーション１２０に関連付けられるバイトを取得するよりも前に、アップロードバッファからアプリケーション１２１に関連付けられるバイトを取得することになる。アップロード帯域幅の限界に達すると、ネットワークインターフェース１３０は、指定された時間にわたってアプリケーション１２１のためのパケットを取得することをやめ、アプリケーション１２０の帯域幅の限界に達するまで、アプリケーション１２０に関連付けられるパケットを取得する。次いで、ネットワークインターフェース１３０は、それぞれのアプリケーションに関連付けられる優先順位および帯域幅を強化するために、連続通信間隔にわたって取得処理を繰り返す。他の実施形態では、ネットワークインターフェース１３０は、アプリケーション１２１についての全てのペンディング情報を通信すると、アプリケーション１２０に関連付けられるバイトをネットワークに通信する前に、一定の期間、またはプログラム可能な期間待つことができる。それによって、ネットワークインターフェース１３０は、アプリケーション１２１がより多くの送るべきデータを有するかどうかを決定する。
【００１３】
他の実施形態では、ネットワークインターフェース１３０は、アプリケーションに関連付けられる優先順位に基づいて、そのアプリケーションに関連付けられるパケットについてのペイロードサイズを決定できる。したがって、たとえばネットワークインターフェース１３０は、アプリケーションの優先順位が低ければ低いほど、それだけアプリケーションから受信したそれぞれのパケット内に含めることができるバイトが多いことを決定できる。したがって、特定のアプリケーションのためのパケットを形成するために、ネットワークインターフェース１３０は、アプリケーションについての指定されたペイロードサイズに達するまでアップロードバッファからバイトを取得して、取得したバイトをペイロードとして有するパケットを形成できる。ある実施形態では、それぞれの通信間隔の間、ネットワークインターフェース１３０はアプリケーションについての対応する優先順位に基づいてアプリケーションごとにペイロードサイズを決定する。優先順位において、ネットワークインターフェース１３０は、そのアプリケーションについて決定されたパケットサイズに基づいてアプリケーションごとにパケットを形成する。一旦アプリケーションについての帯域幅限度に達すると、または特定のアプリケーションについて送るべき情報がもうない場合、ネットワークインターフェース１３０は次に優先順位が低いアプリケーションに進む。この処理は通信間隔ごとに繰り返される。
【００１４】
ネットワークインターフェース１３０は、アプリケーションタイプに基づいてアプリケーションごとに優先順位および帯域幅を決定するように構成されている。特に、アプリケーションアナライザ１２５は、プロセッサ１０５で実行しているアプリケーションの名前を決定するように構成されたモジュールである。たとえば、アプリケーションアナライザ１２５は、プロセッサ１０５で実行しているオペレーティングシステムによって提供された処理情報、タスク情報、または他の情報にアクセスすることによってアプリケーション名を決定できる。アプリケーションアナライザ１３０は、それぞれのアプリケーションによってアクセスされているのは、ライブラリ１２２などの何のソフトウェアライブラリ、デバイスドライバ、オペレーティングシステムリソース、または他のルーチン、プログラム、およびリソースかを決定することもできる。アプリケーションアナライザ１２５は、アプリケーション名などのアプリケーションタイプと、アクセスされたライブラリおよび他のリソースなどとを示す情報を、アプリケーション情報１３３としてネットワークインターフェース１３０に提供する。
【００１５】
帯域幅および優先順位制御モジュール１３１は、アプリケーション情報１３３と構成情報１３４とに基づいて、アプリケーションごとに帯域幅および優先順位を決定する。構成情報１３４は、プログラム可能情報または固定情報、あるいはそれらの組合せであり、そのアプリケーションに関連付けられる情報に基づいてアプリケーションが特定のタイプのアプリケーションである可能性を示す。したがって、構成情報１３４は、そのアプリケーションに関連付けられるアプリケーション名とアプリケーションタイプとのリストを含むことができる。たとえば、構成情報１３４は、特定の名前を有するアプリケーションはオンラインゲームアプリケーションであることを示すことができる。構成情報１３４は、アプリケーションによってアクセスされるライブラリおよび他のリソース、またはそれらの組合せに基づいて、アプリケーションが特定のタイプのアプリケーションである可能性を示すこともできる。たとえば、構成情報１３４は、特定のセットのライブラリと、デバイスドライバと、他のリソースとにアクセスするアプリケーションは、ビデオストリーミングアプリケーションである可能性が高いことを示すことができる。
【００１６】
さらに、構成情報１３４は、特定のタイプのそれぞれのアプリケーションに割り当てられるべき帯域幅の量と優先順位のレベルとを示すことができる。たとえば、構成情報１３４は、ビデオストリーミングアプリケーションなどの、ネットワーク１１０を介して大量のビデオ情報を受信すると予想されるアプリケーションは、比較的高いダウンロード帯域幅と比較的低いダウンロード優先順位とを割り当てられるべきであることを示すことができる。逆に、構成情報１３４は、テキストチャットプログラムなどの、大量の情報を受信することは予想されないが低い通信レイテンシが所望されるアプリケーションは、比較的低いダウンロードおよびアップロード帯域幅と、比較的高いアップロードおよびダウンロード優先順位とを割り当てられるべきであることを示すことができる。
【００１７】
構成情報１３４は、グラフィカルユーザインターフェースまたは他のインターフェースプログラムを介して、ユーザによって調整され得る。したがって、ユーザは、異なるタイプのプログラムに割り当てられた優先順位および帯域幅を調整でき、またプログラムは指定されたタイプのプログラムであることを示す情報を調整できる。したがって、たとえば、ユーザは最近インストールされたプログラムの名前は、そのプログラムが特定のタイプのプログラムであることを示していることを示すことができ、またアプリケーションタイプに割り当てられた相対的優先順位および帯域幅を調整することもできる。ある実施形態では、ユーザは関連するアップロードおよびダウンロード優先順位を個々に調整でき、また関連するアップロードおよびダウンロード帯域幅を個々に調整できる。したがってユーザは、特定のプログラムタイプに比較的高いアップロード優先順位、比較的低いダウンロード優先順位、比較的低いアップロード帯域幅、比較的高いダウンロード帯域幅、または他の何らかの組合せが割り当てられていることを示すことができる。
【００１８】
帯域幅および優先順位制御モジュールは、アプリケーション情報１３３と構成情報１３４とを比較して、アプリケーション１２０と１２１とにそれぞれ関連付けられるアプリケーションタイプを決定し、決定されたタイプに基づいてアプリケーションごとに優先順位および帯域幅を割り当てる。ある実施形態では、構成情報１３４は、ネットワークゲームプログラム、テキストチャットプログラム、ビデオチャットプログラム、ビデオストリーミングプログラムなどの、複数の利用可能なアプリケーションタイプを格納するデジタルファイルを含む。帯域幅および優先順位制御モジュール１３１は、それぞれについて、それぞれのアプリケーションに関連付けられるアプリケーション情報１３３に基づいて、複数の利用可能なタイプからそれぞれのアプリケーションタイプを選択する。それに応じて、ネットワークインターフェース１３０は、対応するアプリケーションについて選択されたアプリケーションタイプに基づいてアプリケーションごとに通信を管理する。帯域幅および優先順位制御モジュール１３１は、アプリケーションによって所望される帯域幅および優先順位の量についてのアプリケーションからの静的表示のみに依存するのではなく、プロセッサ１０５によって提供される動的アプリケーション情報に自動的に基づいて、アプリケーションタイプを選択し、関連する優先順位および帯域幅を決定することが理解されよう。これにより、ネットワークインターフェース１３０は、適切な優先順位または帯域幅レベルを要求するためにそれぞれのプログラムを構成することをユーザに求めずに、実行しているアプリケーションごとに帯域幅および優先順位を柔軟に割り当てることができるようになる。たとえば、ネットワークインターフェース１３０は、たとえプログラム名が特定のアプリケーションタイプとして指定されていなくても、あるいはプログラム自体が特定の優先順位または帯域幅を要求していなくても、アプリケーションが特定のタイプのアプリケーションであることを、アプリケーションによってアクセスされるライブラリまたは他のリソースに基づいて動的に決定して、そのタイプに基づいて帯域幅および優先順位を割り当てることができる。さらに、たとえプログラムが特定の帯域幅または優先レベルを要求しても、ネットワークインターフェース１３０はその要求に応じずに、構成情報１３４によって示されたアプリケーションのタイプに基づいて帯域幅および優先順位を割り当てることができる。
【００１９】
一実施形態では、ネットワークインターフェース１３０は、アプリケーションタイプに基づいて、ネットワーク１１０に通信するためにアプリケーションによって提供された１つまたは複数のバイトを通信から除外できることを決定できる。たとえば、ゲームアプリケーションについて、アプリケーションは、他の同様の定期的アップデート情報とともに、ゲーム世界におけるプレイヤーキャラクターについての定期的な位置アップデートを提供できる。これらの位置アップデートはゲームアプリケーションによって頻繁に提供されるものと予想されるので、ネットワーク１１０に位置アップデートを通信することを定期的に拒否することは、ユーザにゲームエクスペリエンスに影響を与えずに済む。したがって、アプリケーションがゲームアプリケーションであると決定することに応じて、ネットワークインターフェース１３０は、ゲームアプリケーションによってアップロードバッファから提供された１つまたは複数のバイトを、その１つまたは複数のバイトをネットワーク１１０に通信せずに定期的に削除できる。同様に、ネットワークインターフェース１１０は、指定されたタイプのアプリケーションのために、ダウンロードバッファからのバイトを、それらのバイトに関連付けられるターゲットのアプリケーションにそれらのバイトを通信せずに定期的に削除する。それによって、ネットワークインターフェース１３０は、ユーザエクスペリエンスに悪影響を及ぼさずに指定されたタイプのアプリケーションについての通信効率を改善できる。
【００２０】
図２を参照すると、本開示の一実施形態による通信ネットワーク２００のブロック図が示されている。通信ネットワーク２００は、ネットワーク１１０と、コンピュータデバイス２０２および２０３と、ルータ２３９とを含む。ルータ２３９は、コンピュータデバイス２０２および２０３と、ネットワーク１１０との両方に接続されている。それぞれのコンピュータデバイス２０２および２０３は、それぞれがネットワーク１１０を介して遠隔ノード（図示せず）と通信するアプリケーションを実行するという点で、図１のコンピュータデバイス１０２と同様に構成されている。したがって、たとえば、コンピュータデバイス２２０がアプリケーション２２１と２２２とを実行し、コンピュータデバイス２０３がアプリケーション２２３と２２４とを実行する。コンピュータデバイス２０２および２０３は、それぞれのコンピュータデバイスで実行しているアプリケーションに関連付けられるアプリケーション情報を決定するために、それぞれが図１のアプリケーションアナライザ１２５と同様に構成されたアプリケーションアナライザ（それぞれ、アプリケーションアナライザ１２５およびアプリケーションアナライザ１２７）も含む。
【００２１】
ルータ２３９は、パケットを受信して、パケットによって示されたアドレス情報に基づいてそれぞれのパケットを他のノードにルーティングするように構成されたデバイスである。図示された実施形態では、ルータ２３９は、ネットワーク１１０とコンピュータデバイス２０２および２０３との間にインターフェースを提供する。特にルータ２３９は、コンピュータデバイス２０２および２０３から受信したパケットを、ネットワーク１１０を介して宛先遠隔ノードにルーティングし、またネットワーク１１０から受信したパケットを、それぞれの対応する受信パケットに関連付けられるアドレス情報に基づいてコンピュータデバイス２０２および２０３のうちの１つまたは両方にルーティングする。
【００２２】
ルータ２３９は、帯域幅制御モジュール２３０と、構成情報２３４と、アプリケーション情報２４０とを含み、それぞれは図１の対応するモジュールと同様に構成されている。さらに、ルータ２３９はパケットバッファ２５５と、通信ファブリック２７０とを含む。通信ファブリック２７０は、ルータ２３９が受信したパケットを適切な宛先にルーティングできるようにする、スイッチングファブリックなどの物理的インターフェースを提供する。パケットバッファ２５５は、コンピュータデバイス２０２および２０３、またはネットワーク１１０のいずれかから受信したパケットを含む、受信パケットを格納する。帯域幅制御モジュール２３０は、コンピュータデバイス２０２および２０３で実行しているそれぞれのアプリケーションのタイプに関連付けられる帯域幅および優先順位に基づいてルーティングするために、バッファ２５５からのパケットを通信ファブリック２７０に提供する。それによって、ルータ２３０は、図１のネットワークインターフェース１３０と同様の方法でアプリケーションタイプに基づいてパケット通信の帯域幅および優先順位の制御を提供する。しかし、ルータ２３９はコンピュータデバイス２０２と２０３の両方に帯域幅および優先順位を割り当てることができる。したがって、たとえばルータ２３９で、アプリケーションタイプに基づいてアプリケーション２２３に割り当てられるものよりも多くの帯域幅およびより高い優先順位を、アプリケーションタイプに基づいてアプリケーション２２０に割り当てることができる。ルータ２３９が異なるコンピューティングデバイスでアプリケーションタイプに基づいてアプリケーションについての帯域幅および優先順位を制御できるようにすることにより、全体的なネットワーク効率を改善できる。たとえば、ルータ２３９は、それぞれのアプリケーションに関連付けられるアプリケーションタイプを識別することによって、あるコンピュータデバイスの低レイテンシアプリケーションを、他のコンピュータデバイスの高レイテンシアプリケーションよりも優先させることができる。それによって、ルータ２３９はルータに接続された全てのコンピュータデバイスについての通信効率を高めることができる。
【００２３】
ネットワークインターフェース１３０とルータ２３９の両方は、どのアプリケーションがアクティブであるかに基づいて、それぞれのアプリケーションに動的に割り当てられた相対的優先順位および帯域幅を調整することもできる。これは、本開示の一実施形態によるコンピュータデバイス１０２のディスプレイを示している図３を参照すればよりよく理解できるであろう。図３は、コンピュータデバイス１０２のディスプレイに表示されたウィンドウ３０２および３０４を示している。それぞれのウィンドウ３０２および３０４は異なるアプリケーションに関連付けられる。ユーザは、ウィンドウ上をクリックすることによって、または他のユーザ入力によって、ウィンドウのうちの１つをアクティブウィンドウとして選択する。ユーザがウィンドウ３０２をアクティブウィンドウにしたと決定することに応じて、プロセッサ１０５はアクティブアプリケーションを示すためにアプリケーション情報１３３にアップデートを提供する。それに応じて、帯域幅および優先順位制御モジュール１３０は、現在アクティブであるアプリケーションに割り当てられた帯域幅、優先順位、またはその両方を変更できる。たとえば、帯域幅および優先順位制御モジュール１３０は、アクティブウィンドウ３０２に関連付けられるアプリケーションの相対的優先順位および帯域幅を増やして、ウィンドウ３０４に関連付けられるアプリケーションの相対的優先順位および帯域幅を減らすことができる。その後ユーザがウィンドウ３０４をアクティブウィンドウとして選択すると、帯域幅および優先順位制御モジュールは、それに応じてアプリケーションの相対的優先順位および帯域幅を調整する。どのアプリケーションがアクティブウィンドウに関連付けられているかに基づいて優先順位と帯域幅とを調整することによって、ネットワークインターフェース１３０は、ユーザと対話しているアプリケーションについての通信効率を改善して、ユーザエクスペリエンスを改善できる。
【００２４】
図４を参照すると、本開示の一実施形態による通信システム４００のブロック図が示されている。通信システム４００は、コンピュータデバイス４０２と、ネットワーク４１０と、遠隔ノード４５０とを含む。コンピュータデバイス４０２と遠隔ノード４５０とは、それぞれネットワーク４１０に結合されている。コンピュータデバイス４０２は、ネットワーク４１０を介して遠隔ノードと通信するように構成されたデスクトップ、ラップトップ、サーバ、ハンドヘルドコンピュータデバイス、セルラー式電話、または他のデバイスである。したがってコンピュータデバイス４０２は、プロセッサ４０５とワイヤレスネットワークインターフェース４３０とを含む。プロセッサ４０５は、アプリケーション４２０および４２１と、ライブラリ４２２と、アプリケーションアナライザ４２５とを実行する。
【００２５】
ワイヤレスネットワークインターフェース４３０は、プロセッサ４０５とネットワーク４１０との間にワイヤレスインターフェースを提供するように構成されたデバイスである。したがって、ワイヤレスネットワークインターフェース４３０は、プロセッサ４０５に物理層および論理層インターフェースを提供する。特にワイヤレスネットワークインターフェース４３０は、いくつかの機能を実行して、ネットワーク４１０へのアクセスを提供する。たとえば、ワイヤレスネットワークインターフェースは、ネットワークスキャニング、ネットワーク承認、ネットワーク４１０に通信されるワイヤレスパケットにおけるサービス品質（ＱＯＳ）フィールドの設定、ネットワークチャネルスキャニングなどを提供できる。ネットワークスキャニングは、現在使用しているアクセスポイントよりも、コンピュータデバイス４０２のより近くにワイヤレスアクセスポイントがあるかどうかを決定するために定期的にスキャンして、アクセスがより近くのアクセスポイントを経由するように通信をスイッチする、ワイヤレスネットワークインターフェース４３０を指す。ワイヤレスネットワークインターフェースがアクセスポイントをスキャンする頻度はネットワークスキャニング頻度と呼ばれる。ネットワーク承認は、ネットワーク４１０が承認をインターフェースに通信したかどうかを定期的に決定してネットワークへの接続が維持されたことを示す、ワイヤレスネットワークインターフェース４３０を指す。たとえば、ワイヤレスネットワークインターフェース４３０は、ネットワーク４１０に通信されるＮ個のパケットごとに、承認がネットワークから受信されたかどうかを決定するように構成され得る。Ｎは構成可能な整数値である。ワイヤレスネットワークインターフェース４３０が、承認が受信されたかどうかを決定する頻度（Ｎの値によって示される）はネットワーク承認頻度と呼ばれる。ネットワークチャネルスキャニングは、異なるワイヤレスネットワークチャネルにスイッチすることによってネットワーク４１０への接続を確立できるか、または改善できるかどうかを定期的に決定する、ワイヤレスネットワークインターフェース４３０を指す。ワイヤレスネットワークインターフェース４３０がワイヤレスネットワークチャネルをスキャンする頻度はネットワークチャネルスキャニング頻度と呼ばれる。ネットワークスキャニング、チャネルスキャニング、承認、およびネットワークへのワイヤレスアクセスを提供する他の処理は、ワイヤレスネットワークパラメータの例である。
【００２６】
図４に示されたそれぞれのモジュールは、図１の対応するモジュールと同様に動作する。さらに、ネットワークインターフェース４３０は、構成情報４３４およびアプリケーション情報４３３に基づいてワイヤレスネットワークパラメータを調整するように構成された、ワイヤレス制御モジュール４３１を含む。特にワイヤレス制御モジュール４３１は、アプリケーション情報４３３と構成情報４３４とを比較してアプリケーション４２０および４２１に関連付けられるアプリケーションタイプを決定し、それに応じてワイヤレスネットワークパラメータを調整する。したがって、無線制御モジュール４３１は、実行されているアプリケーションのタイプに基づいて、ネットワークスキャニング頻度、ネットワーク承認頻度、ネットワークに通信されたあらゆるパケットのＱＯＳフィールドの値、チャネルスキャニング頻度、または他の何らかのネットワークパラメータを調整できる。たとえば、ワイヤレス制御モジュール４３１がアプリケーション４２０および４２１は両方ともゲームアプリケーションであると決定し、ユーザは動き回りそうになく、したがってワイヤレスアクセスポイントを変更することによって利益を得ることはなさそうであることを示す場合、ワイヤレス制御モジュール４３１はネットワークスキャニング頻度を減らすことができる。これにより、プロセッサ４１５での通信オーバーヘッドの量が減少して通信効率が改善する。同様に、ユーザがゲームプログラムと対話している場合はコンピュータデバイスの環境が変化することはなさそうなので、チャネルスキャニングはあまり望ましくない場合がある。ワイヤレス信号強度が強く、パケット損失がわずかである場合、ワイヤレス制御モジュールはパケット承認を切ることもでき、それによってレイテンシおよび／またはスループットを改善できる。
【００２７】
さらに、アプリケーションが開始または停止されると、どのアプリケーションが実行されているかについての変更がアプリケーション情報４３３で反映される。したがって、ワイヤレス制御モジュール４３１は、実行されているアプリケーションが変更するにつれて、ワイヤレスネットワークパラメータを動的に調整して、実行しているアプリケーションのあらゆる特定のセットにより効率の高い通信を提供できる。
【００２８】
ある実施形態では、ワイヤレス制御モジュール４３１は、ワイヤレスネットワークパラメータを、アプリケーションごとに、またはアプリケーションタイプごとに設定できる。したがって、たとえばワイヤレス制御モジュール４３１は、ネットワーク承認頻度を第１のアプリケーション（またはアプリケーションタイプ）についてはある値に、第２のアプリケーション（またはアプリケーションタイプ）については他の第２の値に設定できる。例示のために、ワイヤレス制御モジュールは、承認を検査するためのゲームタイプアプリケーションについてのネットワーク承認頻度を１００パケットごとに設定して、ビデオチャットプログラムについてのネットワーク承認頻度を２パケットごとに設定できる。したがって、ゲームアプリケーションによって提供されてネットワーク４１０に通信されるパケットについて、ネットワークインターフェース４３０は１００パケットごとに承認を検査することになる。ビデオチャットアプリケーションによって提供されてネットワーク４１０に通信されるパケットについては、ネットワークインターフェース４３０は２パケットごとに承認を検査することになる。ある実施形態では、ワイヤレス制御モジュール４３１は、指定されたアプリケーションタイプについてはネットワークインターフェース４３０が承認を全く検査しないように承認頻度を設定できる。
【００２９】
図５は、本開示の一実施形態による、実行しているアプリケーションのセットについての帯域幅および優先順位を設定する方法の流れ図を示している。ブロック５０２で、ルータまたはネットワークインターフェースカードなどのネットワークインターフェースデバイスが、コンピュータデバイスで実行されているアプリケーションのタイプを決定する。ブロック５０４で、ネットワークインターフェースデバイスが、対応する関連アプリケーションタイプに基づいてアプリケーションごとに通信優先順位を決定する。ブロック５０６で、ネットワークインターフェースデバイスが、対応する関連アプリケーションタイプに基づいてアプリケーションごとに帯域幅を決定する。ブロック５０８で、ネットワークインターフェースデバイスが、それぞれの実行しているアプリケーションによって提供された、またはそれらをターゲットとするバイトを含む集合がある、バイトの集合を受信する。ブロック５１０で、ネットワークインターフェースデバイスが、それぞれのアプリケーションに割り当てられた優先順位および帯域幅に基づいてバイトを通信する（アップロードされるべきバイトについてはネットワークに、またはダウンロードされたバイトについてはアプリケーションに、のいずれか）順序を決定する。ブロック５１２で、ネットワークに通信され得るバイト、またはネットワークから受信されたバイトに基づいてパケットが作成され、帯域幅制御エンジンに通信される。
【００３０】
図６を参照すると、コンピュータデバイス６０４の特定の実施形態のブロック図が示されている。コンピュータデバイス６０４はプロセッサ６７０とメモリ６６０とを含む。メモリ６６０はプロセッサ６７０にアクセスできる。プロセッサ６７０はマイクロプロセッサ、マイクロコントローラなどでよい。メモリ６６０はコンピュータ可読メディアであり、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリでもよく、ハードディスクまたはフラッシュメモリなどの不揮発性メモリでもよい。
【００３１】
メモリ６６０は、プログラム６５０とオペレーティングシステム６０７とを格納する。プログラム６５０およびオペレーティングシステム６０７は、本明細書に記載した方法のうちの１つまたは複数を実装するためにプロセッサ６７０を操作するための命令を含む。記述した方法を実装するべきプロセッサを操作するために、アプリケーションなどの他のプログラムもメモリ６６０に格納できる。
【００３２】
上述の主題は例示的なものと見なされるべきであり、限定的なものと見なされるべきではない。添付の特許請求の範囲は、本発明の真の精神および範囲内のこのような全ての修正形態、拡張、および他の実施形態をカバーすることを意図する。たとえば、プロセッサ１０５を含むコンピュータデバイス１０２の他のモジュールは、帯域幅および優先順位制御モジュール１３１の実行を含む、ネットワークインターフェース１３０の１つまたは複数の機能を実行できる。したがって、法の許す最大限の範囲において、本発明の範囲は、以下の特許請求の範囲のおよびそれらの同等物の最も広い許容可能な解釈によって決定されるべきであり、上述の詳細な説明によって減縮または限定されるべきではない。
なお、以下に、出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］プロセッサデバイスで、第１のソフトウェアアプリケーションに関連付けられる第１の情報を受信することと、
前記第１の情報に基づいて、複数の利用可能なアプリケーションタイプから第１のアプリケーションタイプを選択することと、
前記第１のアプリケーションタイプに基づいて、前記第１のアプリケーションのネットワークとの通信を規制することとを備える、方法。
［Ｃ２］通信を規制することが、前記第１のアプリケーションについての通信帯域幅を帯域幅制限に規制することを備え、前記帯域幅制限が前記第１のアプリケーションタイプに基づく、Ｃ１に記載の方法。
［Ｃ３］通信を規制することが、
前記第１のアプリケーションタイプに基づいて優先レベルを決定することと、
複数のバイトを前記ネットワークに伝送順序で通信することであって、前記伝送順序が前記優先レベルに基づくこととを備える、Ｃ１に記載の方法。
［Ｃ４］通信を規制することが、
前記第１のアプリケーションタイプに基づいて、パケットについてのペイロードサイズを決定することと、
前記ペイロードサイズを有する前記パケットを形成することと、
前記パケットを前記ネットワークに通信することとを備える、Ｃ１に記載の方法。
［Ｃ５］前記第１の情報が、前記第１のアプリケーションに関連付けられるウィンドウはアクティブウィンドウであると示すかどうかに基づいて、前記第１のアプリケーションについての通信を規制することをさらに備える、Ｃ１に記載の方法。
［Ｃ６］プロセッサデバイスで、第２のソフトウェアアプリケーションに関連付けられる第２の情報を受信することと、
前記第１の情報に基づいて、第２のアプリケーションタイプを決定することと、
前記第２のアプリケーションタイプに基づいて、前記第２のアプリケーションの前記ネットワークとの通信を規制することとをさらに備える、Ｃ１に記載の方法。
［Ｃ７］前記第１のアプリケーションの通信を規制することが、前記第１のアプリケーションの第１の帯域幅への通信を規制することを備え、前記第２のアプリケーションの通信を規制することが、前記第２のアプリケーションの第２の帯域幅への通信を規制することを備え、前記第２の帯域幅は前記第１の帯域幅とは異なる、Ｃ６に記載の方法。
［Ｃ８］前記第１のアプリケーションの通信を規制することが、前記第１のアプリケーションについての第１の優先レベルを決定することを備え、前記第２のアプリケーションの通信を規制することが、前記第２のアプリケーションについての第２の優先レベルを決定すること、および複数のパケットを伝送順序で前記ネットワークに通信することを備え、前記伝送順序が前記第１の優先レベルと前記第２の優先レベルとに基づく、Ｃ６に記載の方法。
［Ｃ９］プロセッサデバイスで、ソフトウェアアプリケーションに関連付けられる情報を受信することと、
前記情報に基づいてアプリケーションタイプを決定することと、
前記アプリケーションタイプに基づいてワイヤレスネットワークパラメータを設定することと、
前記ワイヤレスネットワークパラメータに基づいてワイヤレスネットワークと通信することとを備える、方法。
［Ｃ１０］前記ワイヤレスネットワークパラメータを設定することが、前記アプリケーションタイプに基づいてネットワークスキャニング頻度を設定することを備える、Ｃ９に記載の方法。
［Ｃ１１］前記ワイヤレスネットワークパラメータを設定することが、前記アプリケーションタイプに基づいてネットワーク承認頻度を設定することを備える、Ｃ９に記載の方法。
［Ｃ１２］前記ワイヤレスネットワークパラメータを設定することが、品質サービス（ＱＯＳ）フィールドを有する複数のパケットを形成することと、前記アプリケーションタイプに基づいて値を前記ＱＯＳフィールドに格納することと、前記複数のパケットを前記ワイヤレスネットワークに通信することとを備える、Ｃ９に記載の方法。
［Ｃ１３］前記ワイヤレスネットワークパラメータを設定することが、ネットワークインターフェースが利用可能なワイヤレスチャネルをスキャンする頻度を設定することを備える、Ｃ９に記載の方法。
［Ｃ１４］前記ワイヤレスネットワークパラメータを設定することが、ネットワークインターフェースが利用可能なワイヤレスアクセスポイントをスキャンする頻度を設定することを備える、Ｃ９に記載の方法。
［Ｃ１５］前記ワイヤレスネットワークパラメータを設定することが、前記ワイヤレスネットワークと通信することに関連付けられるバックオフ時間を設定することを備える、Ｃ９に記載の方法。
［Ｃ１６］前記ワイヤレスネットワークパラメータを設定することが、第１のアプリケーションについての第１のネットワーク承認頻度、および第２のアプリケーションについての第２のネットワーク承認頻度を設定することを備え、前記第１のネットワーク承認頻度が前記第２のネットワーク承認頻度とは異なる、Ｃ９に記載の方法。
［Ｃ１７］前記第１の承認頻度を設定することが、前記第１のアプリケーションによって通信された情報について、前記ネットワークからのどの承認も決定されないようにパラメータを設定することを備える、Ｃ９に記載の方法。
［Ｃ１８］プロセッサデバイスに結合された第１のポートと、
ネットワークに結合された第２のポートと、
前記プロセッサデバイスで実行しているアプリケーションについてのアプリケーションタイプを選択し、前記アプリケーションタイプに基づいて前記アプリケーションの前記ネットワークとの通信を規制するように構成された制御モジュールとを備える、ネットワークインターフェースデバイス。
［Ｃ１９］前記制御モジュールが、前記第１のアプリケーションタイプに基づいて、前記第１のアプリケーションについての帯域幅制限を設定することによって通信を規制するように構成されている、Ｃ１８に記載のネットワークインターフェースデバイス。
［Ｃ２０］前記制御モジュールが、
前記第１のアプリケーションタイプに基づいて優先レベルを決定することと、
複数のバイトを前記ネットワークに伝送順序で通信することであって、前記伝送順序が前記優先レベルに基づくこととによって通信を規制するように構成されている、Ｃ１８に記載のネットワークインターフェースデバイス。
［Ｃ２１］前記制御モジュールが、
前記第１のアプリケーションタイプに基づいて、パケットについてのペイロードサイズを決定することと、
前記ペイロードサイズを有する前記パケットを形成することと、
前記パケットを前記ネットワークに通信することとによって通信を規制するように構成されている、Ｃ１８に記載のネットワークインターフェースデバイス。
［Ｃ２２］前記第１の情報が、前記第１のアプリケーションに関連付けられるウィンドウはアクティブウィンドウであると示すかどうかに基づいて、前記制御モジュールが通信を規制するように構成されている、Ｃ２１に記載のネットワークインターフェースデバイス。
【図１】
0005450811.tif 000002
【図２】
0005450811.tif 000003
【図３】
0005450811.tif 000004
【図４】
0005450811.tif 000005
【図５】
0005450811.tif 000006
【図６】
0005450811.tif 000007