JP4711586B2 - ネットワークを介してデータを転送するためのシステム及び方法 - Google Patents

ネットワークを介してデータを転送するためのシステム及び方法 Download PDF

Info

Publication number
JP4711586B2
JP4711586B2 JP2001560080A JP2001560080A JP4711586B2 JP 4711586 B2 JP4711586 B2 JP 4711586B2 JP 2001560080 A JP2001560080 A JP 2001560080A JP 2001560080 A JP2001560080 A JP 2001560080A JP 4711586 B2 JP4711586 B2 JP 4711586B2
Authority
JP
Japan
Prior art keywords
network
data
level
utilization
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2001560080A
Other languages
English (en)
Other versions
JP2003527800A (ja
Inventor
ムチ アレッサンドロ
エー.シャー ダーシャットクーマー
ジョーゼフ ムーア ブライアン
エス.ロバーツ ジェフリー
スコット エバンス スティーブン
ディー.ゾラン マイケル
エフ.レウス エドワード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/505,735 external-priority patent/US7437428B1/en
Priority claimed from US09/783,407 external-priority patent/US6920110B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2003527800A publication Critical patent/JP2003527800A/ja
Application granted granted Critical
Publication of JP4711586B2 publication Critical patent/JP4711586B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/15Flow control; Congestion control in relation to multipoint traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/022Capturing of monitoring data by sampling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Description

【0001】
(発明の分野)
本発明は、コンピュータ・ソフトウェアに関し、より詳細には、インターネットなどのネットワークを介してデータを転送するためのシステムおよび方法に関する。
【0002】
(発明の背景)
1つまたは複数のクライアント・マシンがネットワークを介して1つまたは複数のサーバと通信するコンピュータ・システムは、一般的な構成である。例えば、様々なサーバとの通信のためにインターネットに接続された数百万のパーソナル・コンピュータ(PC)が存在する。これらのPCユーザの多くは、インターネットを介して遠隔サーバからソフトウェアをダウンロードすることによって彼等自身のPC上に新しいソフトウェアまたは更新されたソフトウェアを獲得する。
【0003】
インターネットなどのネットワークを介して新しいソフトウェアや更新されたソフトウェアなどのデータをPCにアップロードおよびダウンロードする従来の方法は、ダウンロード中にPCユーザが、インターネットをブラウズする能力、または他の仕方でネットワークを介して通信する能力を妨げる。PCに関して処理速度が増大するにもかかわらず、ユーザのブラウズ体験にとっての重要なボトルネックとなっているのが、インターネットに対する帯域幅である。従来のダウンロードは、通常、ダウンロードが完了するまで、ユーザの使用可能通信帯域幅の100%を占有するため、ユーザは、ダウンロード中、その他のタスクのためにネットワークを利用することができない。さらに、ダウンロードが何らかの理由で(例えば、ネットワーク接続が失われて)中断された場合、ファイルの開始からダウンロードを再開することが必要である可能性があり、これにより、相当なネットワーク・リソースが浪費される。他の従来のダウンロード・ソフトウェアは、ユーザが、指定時間にダウンロードをスケジュールできるようにする。いずれにしても、インターネットなどのネットワークを介してソフトウェアをダウンロードするための従来の方法は、ユーザが、他のネットワーク活動に関わる能力をひどく制限する。
【0004】
ソフトウェア更新を提供することは、ユーザのPCの問題を修正し、パフォーマンスを向上させるため、PCユーザにとって有益である。さらに、ソフトウェア・ベンダには、製品サポート・コールの数が減少することで利益があり、その結果、この減少は、そうでなければベンダが、そのようなコールを扱うために割り振る可能性がある相当なリソースを低減する。
【0005】
本出願人は、「WINDOWS(登録商標) UPDATE」の商標の下で、オペレーティング・システム製品のMICROSOFT WINDOWS(登録商標)ファミリに関連するソフトウェア更新サービスを提供している。「WINDOWS(登録商標) UPDATE」インターネットWebサイトにアクセスすることにより、MICROSOFT WINDOWS(登録商標)ユーザは、インターネットを介して自らのシステムを評価させ、クリティカルなソフトウェア更新とクリティカルでないソフトウェア更新(例えば、修正またはパッチ)をともにダウンロードすることができる。ユーザのPC上に既にロードされてはいない入手可能な更新が存在すると判定されたとき、そのような更新が入手可能であるとユーザに通知され、ユーザは、インターネットを介してダウンロードするために更新の1つまたは複数を選択するよう促される。これは、ユーザにソフトウェア更新を提供するための便利な方法であるが、そのようなダウンロードは、他のネットワーク活動を妨げる可能性がある。さらに、多くのユーザは、自主的に「WINDOWS(登録商標) UPDATE」Webサイトにナビゲートして、自身のPCに対するオペレーティング・システム更新をダウンロードすることをしない可能性が高い。したがって、クリティカルな更新をまだダウンロードしていないユーザは、自身のPCで問題に遭遇する可能性がより高く、問題が生じたときにベンダの製品サポートを呼び出す可能性が高い。
【0006】
したがって、ネットワークを介してソフトウェア更新をダウンロードし、他のネットワーク活動に対する妨げが最小限に抑えるようにするための有効な方法が必要とされている。1つの可能な解決策は、単にネットワーク帯域幅を増大させることである。ただし、帯域幅をより大きくすることは、高価であり、従来、帯域幅の増大に連れてユーザ要求も増大している。したがって、技術の進歩とともに可用帯域幅が増大するにしても、ユーザ要求の対応する増大のため、他のネットワーク活動の妨げをなくす必要が存在することに変わりはない。
【0007】
(発明の概要)
一態様では、本発明は、ネットワークを介してデータ集合を転送する方法を対象とする。この方法は、実際のネットワーク帯域幅使用率のレベルをモニタするステップと、実際の使用率のモニタされたレベルの最大値を識別するステップとを備える。次に、この方法は、使用率についてモニタされたレベルの最大値の相関的要素として使用率についてのしきい値レベルを計算する。実際のレベルが、しきい値レベルより低い場合、そのデータの集合の少なくとも一部分が、ネットワークを介して受信される。
【0008】
本発明の別の態様は、第1のデータ・フィールドおよび第2のデータ・フィールドを含むデータ構造を記憶しているコンピュータ可読媒体を対象とする。第1のデータ・フィールドは、実際のネットワーク帯域幅使用率のモニタされたレベルの最大を表すデータを含む。第2のデータ・フィールドは、それを下回ると、他のネットワーク活動を妨げることなくネットワークを介してデータを転送することができるネットワーク帯域幅使用率のしきい値レベルを表すデータを含む。第2のデータ・フィールドは、モニタされる最大レベルの相関的要素としてしきい値レベルを計算することにより、第1のデータ・フィールドから導出される。
【0009】
本発明のさらに別の態様は、ネットワークを介するデータの転送を管理するためのコンピュータ実行可能構成要素を有するコンピュータ可読媒体に関する。第1の構成要素は、ネットワーク接続に関して実際の帯域幅使用率をモニタし、使用率のモニタされたレベルの最大値を識別する帯域幅モニタ構成要素である。第2の構成要素は、第1の構成要素によって識別されたモニタされた使用率のモニタされたレベルの最大値の相関的要素として使用率のしきい値レベルを計算するしきい値計算構成要素である。第3の構成要素は、実際の帯域幅使用率のレベルが使用率のしきい値レベルを下回っているとき、ネットワークを介するデータの転送を管理する転送管理構成要素である。
【0010】
本発明のさらに別の態様は、ネットワークを介するクライアント・プロセスとサーバ・プロセスの間における通信の方法を対象とする。この方法は、ファイルを識別し、サーバ・プロセスがネットワークを介してそのファイルの第1のセグメントをダウンロードすることを要求する第1のダウンロード要求、をサーバ・プロセスに対して発行することを含む。また、この方法は、サーバ・プロセスにより、ファイルの第1のセグメントをダウンロードすることも含む。次に、この方法は、実際のネットワーク帯域幅使用率がしきい値レベルを下回っているならば、そのファイルに関連付けられたダウンロード要求で、サーバ・プロセスがネットワークを介してそのファイルのさらなるセグメントをダウンロードすることを要求するさらなるダウンロード要求をサーバ・プロセスに発行する。この方法は、サーバ・プロセスにより、ファイルのさらなるセグメントをダウンロードすることをさらに含む。最後に、この方法は、サーバ・プロセスがネットワークを介してファイルの各セグメントのダウンロードを完了するまで、さらなるダウンロード要求を発行するステップと、さらなるセグメントをダウンロードするステップとを繰り返すことを含む。
【0011】
本発明の代替の実施形態では、ある態様は、ネットワークを介してデータの集合を転送する方法を対象とする。この方法は、実際のネットワーク帯域幅使用率のレベルをモニタするステップと、実際の使用率のモニタされたレベルの平均を識別するステップとを含む。次に、この方法は、現在の活動および帯域幅しきい値との相関的要素として転送されるべきデータ・ブロックのサイズを計算する。次に、計算されたサイズのブロックが、ダウンロードされる。
【0012】
本発明の代替の実施形態の別の態様は、第1のデータ・フィールドおよび第2のデータ・フィールドを含むデータ構造を記憶しているコンピュータ可読媒体を対象とする。第1のデータ・フィールドは、ネットワーク使用率のサンプル時刻に対応するタイムスタンプを表すデータを含む。第2のデータ・フィールドは、ネットワーク・アダプタを通過したバイトの総数を表すデータを含む。
【0013】
本発明の代替の実施形態のさらに別の態様は、ネットワークを介するデータの転送を管理するためのコンピュータ実行可能構成要素を有するコンピュータ可読媒体に関する。第1の構成要素は、ネットワーク接続に関して実際の帯域幅使用率のレベルをモニタし、使用率のモニタされたレベルの平均を識別する帯域幅モニタ構成要素である。第2の構成要素は、第1の構成要素によって識別された使用率のレベルの平均の相関的要素として、使用率に基づいて転送されるべきブロック・サイズを計算する転送ブロック・サイズ計算構成要素である。第3の構成要素は、計算されたブロック・サイズでネットワークを介するデータの転送を管理する転送管理構成要素である。
【0014】
本発明の代替の実施形態のさらに別の態様は、ネットワーク速度計算とデータ・ブロック・サイズ計算を連続的にリファインする(refine 改良する)方法を対象とする。この方法は、間隔をおいてネットワーク使用(network usage)をサンプリングするステップと、いくつかのサンプルにわたって獲得された速度の移動平均(moving average)を計算するステップとを含む。平均計算において、最新のサンプルにより大きい重みを与える。ネットワークのサンプリング間隔は、ネットワークの速度に基づいて調整される。
【0015】
本発明を添付の図面を参照してより詳細に説明する。
【0016】
(発明の詳細な説明)
本発明は、インターネットなどのネットワークを介してデータを転送するためのシステムおよび方法を提供する。
【0017】
図1は、本発明を実施することが可能である適切なコンピュータ・システム環境の例を示している。このコンピュータ・システム環境は、適切なコンピュータ環境の一例に過ぎず、本発明の使用または機能性の範囲に関する限定を全く示唆するものではない。また、コンピュータ環境が、例としての動作環境において示す構成要素のどれか1つ、または組み合わせに関連するどのような依存性または要件も有するものと解釈すべきではない。
【0018】
本発明は、他の多数の汎用または特殊目的のコンピュータ・システム環境またはコンピュータ・システム構成で動作する。本発明とともに使用するのに適している可能性がある周知のコンピュータ・システム、コンピュータ環境、および/またはコンピュータ構成の例には、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド装置またはラップトップ装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、プログラマブル家庭用電化製品、ネットワークPC、ミニ・コンピュータ、メイン・フレーム・コンピュータ、前述のシステムまたは装置の任意のものを含む分散コンピュータ環境等が含まれるが、それらには限定されない。
【0019】
本発明は、コンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的コンテキストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。また、本発明は、タスクが、通信網を介してリンクされた遠隔処理装置によって実行される分散コンピュータ環境で実施することも可能である。分散コンピュータ環境では、メモリ記憶装置を含むローカルのコンピュータ記憶媒体と遠隔のコンピュータ記憶媒体の両方の中にプログラム・モジュールを配置することが可能である。
【0020】
図1を参照すると、本発明を実施するための例としてのシステムが、コンピュータ20の形態で汎用コンピュータ装置を含む。コンピュータ20の構成要素には、処理装置22、システム・メモリ24、およびシステム・メモリを含む様々なシステム構成要素を処理装置22に結合するシステム・バス26が含まれるが、それらには限定されない。システム・バス26は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャのどれかを使用するローカル・バスを含むいくつかのタイプのバス構造のどれであることも可能である。例として、限定するものではなく、そのようなアーキテクチャには、インダストリ・スタンダード・アーキテクチャ(Industry Standard Architecture)(ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture(MCA)バス、エンハンスト(Enhanced)ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(Video Electronics Standards Association)(VESA)ローカル・バス、およびメザニン(Mezzanine)バスとしても知られるペリフェラル・コンポーネント・インターコネクト(Peripheral Component Interconnect)(PCI)バスが含まれる。
【0021】
コンピュータ20は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ20によってアクセスされることが可能な任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、取外し可能な媒体と取外し不可能な媒体がともに含まれる。例として、限定するものではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、またはその他のデータなどの情報の記憶のために任意の方法または任意の技術で実装される不揮発性と揮発性の媒体、取外し可能な媒体と取外し不可能な媒体がともに含まれる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュ・メモリ、またはその他のメモリ技術、CD−ROM、デジタル・バーサタイル・ディスク(DVD)またはその他の光ディスク・ストーレッジ、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を記憶するのに使用することが可能であり、コンピュータ20によってアクセスされることが可能な他の任意の媒体が含まれるが、それらには限定されない。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構としてコンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを実現し、任意の情報送付媒体を含む。「変調されたデータ信号」という用語は、その特性の1つまたは複数が、情報を信号に符号化するような仕方で設定された、または変更された信号を意味する。例として、限定するものではなく、通信媒体には、有線網または直接有線接続などの有線媒体、および音響媒体、RF媒体、赤外線媒体、およびその他の無線媒体(wireless media)などの無線媒体が含まれる。以上のどの組み合わせも、コンピュータ可読媒体の範囲に含まれるべきものである。
【0022】
システム・メモリ24は、読取り専用(ROM)28およびランダム・アクセス・メモリ(RAM)30などの揮発性メモリおよび/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。始動中などにコンピュータ20の中の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力/出力システム32(BIOS)は、通常、ROM28の中に記憶される。RAM30は、通常、処理装置22にとって即時にアクセス可能であり、かつ/または現在、操作されているデータおよび/またはプログラム・モジュールを含む。例として、限定するものではなく、図1は、オペレーティング・システム46、アプリケーション・プログラム48、その他のプログラム・モジュール50、およびプログラム・データ52を示す。
【0023】
また、コンピュータ20は、他の取外し可能/取外し不可能な、揮発性/不揮発性のコンピュータ記憶媒体を含むことも可能である。単に例として、図1は、取外し不可能な不揮発性磁気媒体に対する読取り、または書込みを行うハード・ディスク・ドライブ34、取外し不可能な不揮発性磁気媒体38に対する読取り、または書込みを行う磁気ディスク・ドライブ36、およびCD ROMまたはその他の光媒体などの取外し可能な不揮発性光ディスク42に対する読取り、または書込みを行う光ディスク・ドライブ40を示す。例としての動作環境において使用するのが可能であるその他の取外し可能/取外し不可能な、揮発性/不揮発性のコンピュータ記憶媒体には、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、デジタル・ビデオ・テープ、ベルヌーイ(Bernoulli)カートリッジ、ソリッドステートRAM、ソリッドステートROM等が含まれるが、それらには限定されない。ハード・ディスク・ドライブ34、磁気ディスク・ドライブ36、および光ディスク・ドライブ40は、通常、スモール・コンピュータ・システム・インターフェース(Small Computer System Interface)(SCSI)44でシステム・バス26に接続される。別法では、ハード・ディスク・ドライブ34、磁気ディスク・ドライブ36、および光ディスク・ドライブ40は、それぞれ、ハード・ディスク・ドライブ・インターフェース、磁気ディスク・ドライブ・インターフェース、および光ドライブ・インターフェースによってシステム・バス26に接続されることが可能である。
【0024】
前述し、図1に示したドライブおよびドライブに関連するコンピュータ記憶媒体は、コンピュータ20に関するコンピュータ可読命令、データ構造、プログラム・モジュール、およびその他のデータのストーレッジを提供する。図1では、例えば、ハード・ディスク・ドライブ34が、オペレーティング・システム46、アプリケーション・プログラム48、その他のプログラム・モジュール50、およびプログラム・データ52を記憶するものとして示されている。以上の構成要素は、オペレーティング・システム46、アプリケーション・プログラム48、その他のプログラム・モジュール50、およびプログラム・データ52と同一である、またはそれらとは異なるのが可能であることに留意されたい。ユーザは、キーボード54、およびマウス、トラック・ボール、またはタッチ・パッドと一般に呼ばれるポインティング・デバイス56などの入力装置を介してコンピュータ20にコマンドおよび情報を入力することができる。その他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライト・ディッシュ、スキャナ等が含まれることが可能である。以上の入力装置およびその他の入力装置は、しばしば、システム・バスに結合されたユーザ入力インターフェース58またはシリアル・ポート・インターフェ60を介して処理装置22に接続されるが、パラメータ・ポート、ゲームポート、またはユニバーサル・シリアル・バス(USB)などのその他のインターフェースおよびバス構造によって接続されることも可能である。モニタ61またはその他の表示装置も、ビデオ・アダプタ62などのインターフェースを介してシステム・バス26に接続される。モニタ61に加えて、コンピュータは、出力周辺インターフェースを介して接続することができるスピーカやプリンタなどのその他の周辺出力装置を含むことも可能である。
【0025】
コンピュータ20は、遠隔コンピュータ64などの1つまたは複数の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境で動作することが可能である。遠隔コンピュータ64は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、またはその他の一般的ネットワーク・ノードであることが可能であり、メモリ記憶装置だけを図1で示したが、通常、コンピュータ20に関連して前述した要素の多く、またはすべてを含む。図1に描いた論理接続は、ローカル・エリア・ネットワーク(LAN)66、およびワイド・エリア・ネットワーク(WAN)68を含むが、その他のネットワークを含むことも可能である。そのようなネットワーク環境は、オフィス、企業全体のコンピュータ・ネットワーク、イントラネット、およびインターフェースで一般的である。
【0026】
LANネットワーク環境で使用されるとき、コンピュータ20は、ネットワーク・インターフェース、つまりアダプタ70を介してLAN66に接続される。WANネットワーク環境で使用されるとき、コンピュータ20は、通常、インターネットなどのWAN68を介して通信を確立するためのモデム72またはその他の手段を含む。内部または外部にあることが可能なモデム72は、シリアル・ポート・インターフェース60または他の適切な機構を介してシステム・バス26に接続されることが可能である。ネットワーク化された環境では、コンピュータ20に関連して描いたプログラム・モジュール、またはプログラム・モジュールの部分を遠隔メモリ記憶装置の中に記憶することが可能である。例として、限定するものではなく、図1は、メモリ装置64上に常駐するものとして遠隔アプリケーション・プログラム48を示している。示すネットワーク接続は、例としてのものであり、コンピュータ間で通信リンクを確立する他の手段も使用できることが理解されよう。
【0027】
コンピュータ20の他の多数の内部構成要素は示していないが、そのような構成要素および相互接続は周知であることが、当分野の技術者には理解されよう。したがって、コンピュータ20の内部構成に関するさらなる詳細は、本発明に関連して開示する必要がない。
【0028】
オペレーティング・システム46、アプリケーション・プログラム48、およびデータ52などのプログラム・モジュールは、ROM28、RAM30、ハード・ディスク・ドライブ34、磁気ディスク・ドライブ36、または光ディスク・ドライブ40を含むことが可能なメモリ記憶装置を介してコンピュータ20に提供されることが、当分野の技術者には理解されよう。好ましくは、ハード・ディスク・ドライブ34を使用して、オペレーティング・システム46およびアプリケーション・プログラム48を含むデータ52およびプログラムを記憶する。
【0029】
コンピュータ20をオンにしたとき、またはリセットしたとき、ROM28の中に記憶されているBIOS32が、ハード・ディスク・ドライブ34からRAM30の中にオペレーティング・システムをロードするように処理装置22に命令する。オペレーティング・システム46がRAM30の中にロードされると、処理装置22が、オペレーティング・システム・コードを実行して、オペレーティング・システム46のユーザ・インターフェースに関連するビジュアル要素が、モニタ61上に表示されるようにする。アプリケーション・プログラム48がユーザによって開かれたとき、プログラム・コードおよび関係のあるデータが、ハード・ディスク・ドライブ34から読み取られ、RAM30の中に記憶される。
【0030】
図2を参照すると、本発明を実施するための例としてのシステムが、参照番号74によって一般的に示されている。システム74は、ネットワーク80(例えば、インターネット)にアクセスするためにPC76などのクライアント・マシンおよびモデムなどの通信装置78を含む。また、サーバ82も従来の仕方でネットワーク80に接続されている。PC76およびモデム78は、ネットワーク80を介してサーバ82との接続を確立して、クライアントとサーバの間におけるデータの転送を円滑にする。
【0031】
図3に提示するシステム84は、図2のシステム74と同様であり、イントラネットなどのリンク88を介して互いに接続されている第1のクライアント86Aおよび第2のクライアント86Bをシステム84が含むことだけが異なっている。システム74と同様に、通信装置78(例えば、モデム)が、第1のクライアント86Aとネットワーク80の間で接続を確立する。したがって、クライアント86A、86Bは、ネットワーク80を介してサーバ82とデータを交換することができる。
【0032】
本発明は、図2および3に示すシステム74、84に対する可能な多数の変形形態を包含することが、当分野の技術者には容易に理解されよう。もちろん、任意の数のクライアント・マシンおよびサーバ・マシンをネットワーク80に(直接または間接的に)接続することができる。例えば、システム84が、2つ以上のクライアント・マシンを含み、その1つが、その他のマシンのためのプロキシとして動作することが可能である。その場合、クライアント・マシンは、イントラネットを介して互いに接続されていることが可能であり、またプロキシ・マシンの中のネットワーク・カードは、T1回線を介してネットワーク80にリンクされたルータに接続されていることが可能である。さらに、ネットワーク80は、インターネット、または他の任意の公衆網または私設網であることが可能である。さらに、通信装置78は、PC76の一部であること、または独立のハードウェア装置であることが可能である。
【0033】
本発明の一適用例では、クライアント・マシンは、PC76であり、装置78は、56Kbps(キロビット/秒)モデムであり、ネットワーク80は、インターネットであり、またサーバ82は、PCのオペレーティング・システムのためのソフトウェア更新をダウンロードするためのインターネットを介してアクセス可能なWebサイトである。図4を参照すると、曲線90は、ある期間中、インターネットにアクセスするクライアントPCに関する実際のネットワーク帯域幅使用率のレベルを表している。曲線90は、TないしTで上昇し、ユーザが最初にインターネットにアクセスした際に通常、生じるネットワーク活動の一時的な上昇を反映する。次に、Tにおけるネットワーク活動の短い低下の後、クライアントの実際の使用率は、再び劇的に上昇してTでピークに達する。このピークは、Webページをダウンロードすること、または電子メール・メッセージを開くことなどの、クライアントによって開始されるあらゆる数の可能な処理を表していることが可能である。クライアント・マシンにおけるユーザがWebページまたは電子メール・メッセージを読んでいる間、または、場合により、インターネットを介して音楽を聴いている間、実際のネットワーク使用率は、TないしTで相当により低いレベルにまで低下する。
【0034】
ないしTに示す(図4)比較的低い実際のネットワーク帯域幅使用率のレベルは、ときとして、「ネットワーク・アイドル状態」と呼ばれる。この概念は、PCユーザが現在、キーボードまたはマウスを使用していないときに生じる「マシン・アイドル状態」とは異なる。マシンが、ある期間にわたってアイドル状態に留まる場合、スクリーン・セーバが起動される可能性がある。しかし、ネットワーク使用率は、マシンがアイドル状態にあるのと同時に(例えば、ダウンロード中)、高い可能性があり、またマシンがアイドル状態にないときに、ネットワーク・インターフェースが、「アイドル状態」にある可能性がある。したがって、本発明は、ネットワーク使用率が比較的低いときに、ネットワークを介してソフトウェア更新などのデータの集合を転送することを目的とする。このデータ転送は、ユーザにはトランスペアレントであるものとされ、またユーザのマシンが、この転送中にアイドル状態にある必要はない。このデータ転送は、ビデオ・ゲームをすること、または音楽MP3ファイル、eBook等をダウンロードすることなどのPC上のユーザの処理によって開始された活動に関連することも、容易に可能である。さらに、転送されるデータは、テキスト、イメージ、および/またはオーディオ・データを含むことが可能である。また、本発明は、クライアントからサーバへのアップロードに、またはコンピュータ間の他のデータ通信にも同様に適用可能である。
【0035】
図7に関連して以下に説明するとおり、本発明は、曲線90(図4)で表される実際の使用率のレベルをモニタ(測定)し、それを下回ると、クライアントとサーバの間におけるデータの転送が、その他のネットワーク活動を妨げる可能性が低い、使用率のしきい値レベルを計算する。好ましい実施形態では、しきい値レベルは、実際のネットワーク使用率の検出されるレベルの最大値のおよそ33%に等しい。図4に示すとおり、しきい値レベルは、参照番号92で一般的に示され、ゼロに初期設定される。ネットワーク活動は、周期的にサンプリングされ、新しい最大値が識別されるたびに毎回、新しいしきい値レベルが計算される。Tで実際の帯域幅使用レベルが、新しい最大値である15Kbpsであり、したがって、しきい値92は、5Kbpsに設定される。実際の帯域幅使用レベルがTで再びサンプリングされ、30Kbpsの別の新しい最大値が識別される。したがって、新しいしきい値92が計算されて10Kbpsになる。
【0036】
におけるように、実際の使用レベル90が、しきい値レベル92を下回って低下したとき、データの短い転送は、その他のネットワーク活動をそれほど妨げないはずである。データの転送は、実際の使用率がしきい値レベルを下回ったのを最初に検出した時点で即時に開始することが可能である。ただし、ユーザをより尊重するという意味でより保守的な手法は、低い使用率が少なくとも2回、連続して生じたのを検出してからダウンロードを開始することである。いずれにしても、Tで45Kbpsの新しい最大値が検出され、これにより、15Kbpsの更新されたしきい値レベルの計算がトリガされる。したがって、Tで何らかのデータ転送が開始された場合には、その転送は、Tで即時にサスペンドされることになる。Tで、実際の使用率90が再び、しきい値レベル92を下回って低下する。今度は、実際の使用レベル90は、TないしTで、15Kbpsのしきい値レベルを下回る5〜10Kbpsの間に留まる。したがって、ネットワークを介するデータの転送は、この期間中、その他のネットワーク活動を妨げないことになる。
【0037】
本発明のクライアントの好ましいアーキテクチャを図5に提示している。クライアント94が、更新クライアント96、更新エンジン98、更新ダウンローダ100、および更新アプレット102を含む。クライアント94は、好ましくは、HTTP(ハイパー・テキスト転送プロトコル)リンクである一対のリンク106、108を介して更新Webサイト104を介するなどしてサーバに接続される。更新クライアント96は、ユーザのための通知および個人化オプション(personalization options)を担う。更新エンジン98は、更新サイト104との内容対話(content interaction)、ならびにソフトウェア更新の、検出、インストール、およびログ記録、を制御する。更新ダウンローダ100は、パケット・バックグラウンド・ダウンロード/スロットリング(packet background downloading/throttling)、および着信パケット待ち行列管理を実施することを担う。更新アプレット102は、ユーザに対する更新通知の構成(configuration)、およびユーザとの他の対話を決定する。バックエンド内容(backend content)およびカタログが、更新サイト104から入手可能である。
【0038】
本発明は、図6に示すデータ構造110を利用する。データ構造110は、実際の帯域幅使用率の識別されたレベルの最大値を含む第1のフィールド112と、使用率のしきい値レベルを含む第2のフィールド114とを含む。図4に示すとおり、識別された最大レベルとしきい値レベルはともに、実際の使用率のレベルに応じて、時間の経過につれて変化する傾向がある。前述したとおり、しきい値レベルは、実際の使用の識別されたレベルの最大値の相関的要素として計算される。したがって、新しい最大レベルが検出されるたびに毎回、新しいしきい値レベルが計算される。
【0039】
図7は、本発明の好ましい実施形態による、ネットワークを介してデータを選択的に転送するためのコンピュータ・プログラム、を表す流れ図を提示している。このプログラムは、ある所定の条件が存在するときにステップ120で開始される。通常、プログラムを開始する前にクライアントPCが、「オン」にされ、ネットワークに接続されていなければならない。プログラムがPCとネットワークの間で接続を確立することも可能であろうが、いくらかのPCユーザは、自身のモデムが自らネットワークをダイアル呼出しする予期しない音で驚かされる可能性がある。また、クライアントが別のネットワーク(例えば、私設網(private network))に接続されており、したがって、クライアントが私設網から接続解除し、インターネットに再接続するまで、Webサーバに対するアクセスが可能でないことも可能である。サーバに「ping(TCP/IPにおける最も基本的で、かつ重要なコマンド)」を行い、サーバから確認応答を受信することによってクライアントとサーバが同一のネットワークに接続されていることを確認することができる。当分野の技術者は、所与の状況でどの事前条件が適切であるかを容易に判定することができる。
【0040】
クライアントがサーバと同一のネットワークに接続されると、実際のネットワーク帯域幅使用率のレベルが、ステップ122で獲得される。図4に示すとおり、実際の使用率は、周期的に(例えば、5秒毎に)サンプリングされる。好ましくは、サンプリングは、クライアントとネットワークの間の通信インターフェースにおいて所与の期間(例えば、1秒間)にわたって着信パケットの数および発信パケットの数を記録しておくことによって行われる。「WINDOWS(登録商標)98」オペレーティング・システムを実行するPCの場合、この情報は、「iphlpapi.dll」におけるGetIfEntry関数を使用して入手可能である。
【0041】
比較的大きなファイルが、ネットワーク・インターフェースにおいて実際のネットワーク帯域幅使用のレベルを測定するためのより正確な基準を提供する。例えば、測定のオーバーヘッドが相当なものであり、小さいファイルは可用帯域幅を飽和させないため、200バイトのファイルに関してダウンロード時間を正確に測定するのは困難である。したがって、本発明は、好ましくは、使用率の実際のレベルの測定が、少なくとも4KBのサイズのファイルの転送速度に基づく場合にだけ、使用率の最大レベルを更新する。
【0042】
好ましくは、特にシステム74より複雑なシステムにおいて、正確なモニタを確実にするために、「バーチャル装置」のそれぞれが1つ1つ列挙される。本明細書で使用する「バーチャル装置」という用語は、モデム(ケーブル・モデムおよびISDNモデムを含む)、ネットワーク・カード、およびDSL(デジタル加入者回線)などの、デバイス・ドライバを有する任意のネットワーク装置を指す。2チャネルISDNモデムの各チャネルは、本発明に関しては、別個のバーチャル装置と見なされる。
【0043】
重要なことには、実際のネットワーク帯域幅使用率のレベルは、単にネットワーク装置の定格のスループット、つまり記載のスループットを当てにするのではなく、モニタ(測定)される。定格値は、実際のところ、モデムによって達せられる最大スループットが記載のスループットより小さく、各ネットワーク・セッションごとに異なる可能性があるため、信頼できない。電話接続の品質などの不確定要素により、通常、56Kbpsモデムに関して50Kbpsを下回る最大可用帯域幅がもたらされる。
【0044】
さらに、定格値は、クライアントがプロキシによってネットワークに接続されている場合、正確であると見なすことができない。システム84では、第1のクライアント86Aと第2のクライアント86Bの間でイントラネット88を介するピア・ツー・ピア接続が存在し、また、第1のクライアント86Aは、モデム78によってネットワーク80にリンクされている。56Kbpsモデムおよび10Mbpsのイントラネットを想定すると、モデム78は、ネットワーク80に対するボトルネックである。したがって、第1のクライアント86Aが、40Kbpsのネットワーク帯域幅を利用しており、同時に第2のクライアント86Bが、5Kbpsだけの帯域幅を使用する場合、他方のクライアントのネットワーク活動を低下させることなくどちらかのクライアントにサーバ82から、データの集合(例えば、ソフトウェア更新)をダウンロードするのに利用できる十分なネットワーク帯域幅が存在しないことになる。さらに、第2のクライアント86Bが10Mbpsの最大スループットを有する、または第2のクライアント86Bはネットワーク・インターフェースの5Kbpsだけを使用しているため、第2のクライアント86Bが相当な帯域幅が利用可能であると想定するのは正確でないことになる。この場合、遠隔アクセスのケースでは、第2のクライアント86Bに関する実際の帯域幅使用率のレベルは、RAS(遠隔アクセス・サービス)装置テーブルから獲得することができる。したがって、各仮想装置において実際のスループットをモニタすることは、セッション間の構成(configuration)の変更に有利に適合し、したがって、より信頼できる手法である。
【0045】
図7を再び参照すると、実際の使用で検出されるレベルの最大値が、ゼロに初期設定される。次に、ステップ124で、実際の使用率が現行の最大値を上回っているかどうかが判定される。上回っていない場合、実際の使用率が、ステップ122で再びサンプリングされる。ただし、実際の使用率が、現行の最大値を上回る場合には、ステップ126で、新しい最大値が現行の実際のレベルに等しく設定される。次に、ステップ128で、しきい値レベルが、最大値との関係で計算される。しきい値は、ゼロに初期設定され、新しい最大値が検出されるたびに毎回、新しいしきい値が計算される。一般的に、しきい値レベルは、検出される最大レベルのおよそ5%〜80%までのどのようなレベルであることも可能である。ただし、インターネット適用例に関して現行で好ましいしきい値は、検出される最大レベルのおよそ33%である。新しいしきい値レベルが計算されると、ステップ122で実際の使用率が再びサンプリングされる。
【0046】
本発明は、ネットワーク接続が所与の期間中にビジー状態である時間のパーセンテージなどの他の何らかのパラメータではなく、1秒当りのキロビットの実際のネットワーク帯域幅のパーセンテージとして、しきい値レベルを計算することに留意されたい。例えば、1時間が経過するなかで75%の時間、ネットワーク接続を利用しているクライアント・マシンは、必ずしも、可用帯域幅の75%を使用していない。実際、クライアントPCにおけるユーザが、単にWebページを読んでいる、電子メールを読んでいる、音楽等を聞いている場合、実際の帯域幅使用率のレベルは、最大可用帯域幅をはるかに下回る可能性が高い。クライアント・レベルで実施される本発明は、ハードウェア・レベルで帯域幅を制限するための方法(例えば、ソケット)とは、根本的に異なることが、当分野の技術者には理解されよう。
【0047】
実際のネットワーク帯域幅使用率のレベルは、ステップ122で獲得されるごとに、現行のしきい値レベルに対する比較も行われる。ステップ130で、実際の使用率がしきい値レベルを下回っているかどうかが決定される。下回っている場合、サーバから入手可能なソフトウェア更新(または、他のデータの集合)を、ネットワークを介してクライアントにダウンロードすることができる。クライアントの他のあらゆる現在または将来のネットワーク活動に対する妨げを最小限に抑えるため、ダウンロードは、好ましくは、いくつかのセグメントで、ソフトウェア更新をダウンロードすることによって行われる。したがって、ステップ132で、ファイルの1つのセグメントが、サーバからクライアントにダウンロードされる。第1のセグメントをダウンロードした後、クライアントのネットワーク活動が増大する場合、ファイル全体のダウンロードは、実際の使用率が低下して再びしきい値レベルを下回るまでサスペンドすることができる。ただし、ネットワークが、長期間にわたってアイドル状態にある場合、ネットワークを介してダウンロードするファイルのセグメントを次第により大きくすることにより、ダウンロードを加速させることができる。
【0048】
カウント装置が、本発明の好ましい実施形態において提供されて、次第に、より大きなファイル・セグメントをダウンロードするのを容易にする。例えば、図7のステップ132で、ファイルの8KBのセグメントを最初に転送することにより、インターネットを介してサーバからクライアントに144KBのファイルをダウンロードすることができる。8KBなどの小さいセグメントは、短い期間中にパイプラインの100%を使用し、セグメント間の実際の使用率を頻繁にモニタすることを可能にするため、効果的なデフォルトであることが判明している。ユーザが、8KBのブロックのダウンロード中にURL(ユニフォーム・リソース・ロケータ)上でクリックした場合でさえ、ユーザに対する目立った遅延は存在しない。さらに、中断が生じた場合、損失する可能性があるのは、せいぜい8KBである。
【0049】
ステップ134で、ファイル全体がダウンロードされたかどうかが判定される。8KBのブロックは144KBのファイルの第1のセグメントであるため、ファイル全体は、ダウンロードされておらず、ゼロに初期設定されているカウンタが、ステップ136で「1」に増分(increment)される。カウンタは、中断なしに連続的にダウンロードされたセグメント数の経過を記録し、それゆえ、ネットワーク活動が低いままである限り、セグメントのサイズを増大させることができる。例として、カウンタが「2」に等しい場合、セグメントのサイズを16KBに増大させることが可能であり、カウンタが「4」に等しい場合、セグメントのサイズを32KBに増大させることが可能である。これにより、ネットワーク活動がしきい値レベルを下回ったままであるという条件付きで、小さな8KBのセグメント18個ではなく、7つの次第に大きくなるセグメントで144KBのファイルをダウンロードすることが可能になる。より大きいセグメントは、ダウンロードするのにより長い時間がかかり、したがって、実際の使用率がモニタされる頻度がより低くなることになるが、この手法は、低いネットワーク活動が延長されたすべての期間を利用する。通常、ヘッダが各セグメントに付け加えられる、したがって、より少ない個数のより大きいセグメントを転送することは、ネットワークを介して転送されるヘッダの総数を減少させるので、ネットワーク・オーバーヘッドも低減する。現在、56Kbpsモデムを使用する場合に推奨される最大のセグメントは、64KBのセグメントである。
【0050】
ステップ136でカウンタを増分した後、ステップ122および130が繰り返される。実際の使用レベルが、もはやしきい値レベルを下回っていない場合、ステップ138で、ファイルのダウンロードがサスペンドされ、カウンタがクリアされる(すなわち、ゼロに設定される)。次に、ステップ122で、実際の使用率が再びサンプリングされる。ダウンロードがサスペンドされた場合、そのダウンロードが、サスペンドされたポイントから再開される。しかし、実際の使用率がしきい値レベルを下回ったままである場合、ステップ132で、次のセグメントがダウンロードされ、ファイル全体がダウンロードされたことがステップ134で決定されるまでプロセスが繰り返される。ファイル全体がダウンロードされたことが決定された場合、ステップ140でカウンタがクリアされ、ステップ142でループが終了する。
【0051】
本発明の漸進的ダウンロード(progressive download)の特徴は、いくらかの既存のサーバの限界を克服するために、フィルタリングまたは同様の技法を必要とする可能性がある。漸進的ダウンロードは、FTP(ファイル転送プロトコル)レベルで一般に利用可能であったが、HTTP1.1サーバが利用可能になるまでは、HTTPレベルでは利用可能でなかった。前述したとおり、本発明は、8KBのファイル・セグメントをデフォルトとするバイト範囲手法を利用する。第1のセグメントに関して、「0〜7999」のバイト範囲が、クライアントからのダウンロード要求において指定され、「8000〜15999」の範囲が、第2のセグメントに関するダウンロード要求において指定され、以下同様である。ただし、HTTP1.0サーバに遭遇した場合、要求のバイト範囲部分は失われることになり、ファイル全体が一度にダウンロードされることになる。この問題を回避する一方策は、ISAPI(インターネット・サーバ・アプリケーション・プログラミング・インターフェース)フィルタを使用して、HTTP1.0プロキシを介してHTTP1.1のバイト要求を促すことである。この場合、HTTP1.0サーバに遭遇した場合でも、バイト範囲情報が失われない。
【0052】
もちろん、セグメントの好ましいサイズ、つまり好ましいバイト範囲は、モデムの速度などの要因に基づいて劇的に異なる可能性がある。前述の例(例えば、8KBのデフォルト・セグメント・サイズ)は、多数のユーザが、56Kbpsモデムを使用してネットワークにアクセスするという想定に基づく。しかし、多数のユーザが、28Kbpsモデムを使用してネットワークにアクセスするものと想定するのが適切である可能性がある。その場合、好ましいデフォルト・セグメント・サイズは、8KBではなく、4KBになる。同様に、漸次のより大きいセグメントは、16KBおよび32KBではなく、8KBおよび16KBになる。様々なその他のセグメント・サイズの使用も本明細書によって企図されることが、当分野の技術者には認められよう。
【0053】
本発明の別の実施形態では、長いダウンロード中の実際の帯域幅使用率のモニタに、そのようなダウンロードの前または後における実際の帯域幅使用率のモニタに対してよりも大きい重みを与えることが可能である。つまり、所定数のセグメントが連続的にダウンロードされた場合、そのセグメントのそれぞれに関する平均使用レベルを新しい「最大」レベルとして採用することができる。例えば、セグメントの所定数が10である場合、10の連続するセグメントのダウンロード中における平均使用レベルが、その平均レベルが前の最大値を下回る場合でさえ、その前の最大レベルを置き換えることになる。さらに、11のセグメントが連続的にダウンロードされた場合、セグメント2〜11に関して平均レベルが計算され、したがって、10のダウンロードの移動平均が、新しい最大レベルと新しいしきい値レベルの両方を決定する。
【0054】
最大レベルを識別するために移動平均を使用することは、有都合良く、測定の正確さを損なうことなく、変化するネットワーク・トラフィック条件に応答してしきい値レベルに対する動的な増加または減少を提供する。好ましくは、最大レベルは、別の長いダウンロードが行われるまで、最新の移動平均(所定数のセグメントの)にとどめ置かれる。言い換えれば、長いダウンロードに基づく最大レベルの方が、ダウンロードに先立って測定された最初の最大レベルよりも正確な可用帯域幅の反映であると考えられる。同様に、独立したセグメントのダウンロードは、可用帯域幅の正確な反映を提供しない可能性がある。移動平均に関する連続するダウンロードの数を記録に留めておくため、図7で参照するもののようなカウンタを使用することができる。
【0055】
本発明の別の実施形態を以下に図8〜10に関連して説明する。図10を参照すると、本発明のさらなる実施形態が、曲線804(図8)によって表される実際のネットワーク使用率のレベルをモニタし、クライアントとサーバの間におけるデータの転送がその他のネットワーク活動を妨げる可能性が低いように、所定の間隔(Tn−1〜T)(図8)内で転送することができるデータ・ブロックのサイズを計算する。ブロックは、転送されるべきデータの集合全体の一部分、またはデータの他の独立した有用な単位を表す。このさらなる実施形態は、ブロック・サイズを計算し、ネットワーク速度推定についてリファインすることにより、固定されたしきい値を利用していつデータを転送するかを決定する前述した実施形態と対比して、ネットワークの可用帯域幅をより十分に利用する。
【0056】
実際には、例として、限定するものではなく、図8は、本発明のさらなる実施形態からのいくつかの概念を示す。図8に示すとおり、サンプリング時刻は、Tで一般的に示され、また間隔Tn−1〜Tは、1秒間などの値に初期設定される。図8で、TとTの間隔(808)の間の外部使用率曲線804の下の領域(エリア1)が、本発明以外のプロセスによって転送されたバイトの総数を表す。観察されたネットワーク・スループット802、外部使用率曲線804、およびTとTの間隔(808)で画定された領域(エリア2)が、ブロック・サイズとして割り当てることができる可能性のあるバイト量を表す。示すとおり、ネットワーク・スループット802および外部使用率804は、時間の経過とともに変動し、これにより、可用帯域幅を十分に利用するため、ブロック・サイズの再計算が必要となる。ネットワーク活動が、各間隔中の様々な時点でサンプリングされる。次に、サンプリング間隔は、図4〜7の実施形態とは対照的に、固定値に維持されるのではなく、判定されたネットワーク速度およびネットワーク使用率に応答して調整される。これにより、ネットワークに合せて最適化されていないブロック・サイズを使用することから生じるCPUのオーバーヘッドおよびネットワークのオーバーヘッドが低減される。
【0057】
この実施形態は、3つの構成要素を含む。ネットワーク・インターフェース・ハードウェアを介して送受信されるバイト数に関するデータを収集するネットワーク・インターフェース構成要素が存在する。グローバル速度、ダウンロード速度、および空き帯域幅を判定するネットワーク速度計算機構成要素が存在する。最後に、速度構成要素によって計算された値を使用してブロック・サイズおよびダウンロード間隔サイズを計算するデータ・ブロック・ダウンロード構成要素が存在する。
【0058】
このさらなる実施形態によって使用されるアルゴリズムを以下に詳述する。この場合も、以下のアルゴリズムの中の参照内容は、例としてのものであることに留意されたい。というのは、このアルゴリズムは、データのアップロードにも同様に適用可能だからである。
【0059】
この実施形態は、各時間間隔を2つの段階、ダウンロード・フェーズおよびアイドル・フェーズに分割する。ダウンロード・フェーズ中、ソフトウェアは、サーバからデータ・ブロックをダウンロードする。アイドル・フェーズ中、ソフトウェアは、ネットワークを他のアプリケーションに明け渡す。
【0060】
この実施形態のネットワーク・モニタ構成要素は、所与の時点でネットワーク・インターフェースを通過したバイト数を記録するカウンタに対するアクセスを有する。カウンタの2つの読取りの間の差が、その2つの読取りの間の時間中に転送されたバイト数を示す。
【0061】
各時間間隔(Tn−1〜T)中、ネットワーク・モニタ構成要素は、次の3つの時点、(1)ダウンロード・フェーズの開始でもある間隔の開始、(2)ダウンロード・フェーズの終了、および(3)間隔の終了、でシステム・クロックおよび転送バイト・カウンタをサンプリングする。ダウンロード構成要素は、間隔の長さ、ダウンロードされるブロックのサイズ、およびダウンロード・フェーズの予期される継続時間を記録する。間隔の終了時に、ネットワーク速度構成要素が、以下のとおり自らの速度推定値を更新する。
【0062】
1.間隔中にブロックがダウンロードされた場合、ダウンロード速度は、
最新速度=(ブロック・サイズ+ネットワーク・ヘッダ・サイズ)/時点2における時刻−時点1における時刻)
として計算され、平均ダウンロード速度が更新される。本実施形態は、次の数式を使用する
サンプル・カウントを3に設定して、
1−1.新ダウンロード速度=旧ダウンロード速度(サンプル・カウント−1)/サンプル・カウント、
1−2.新ダウンロード速度=新ダウンロード速度+(最新速度/サンプル・カウント)、
ただし、他の多数の数式を代りに使用することも可能である。このことは、ダウンローダが計算するその他の平均値についても当てはまる。平均ダウンロード速度により、ブロック・ダウンロード構成要素が、次の間隔のダウンロード・フェーズ中に完了可能なブロック・サイズを選択することができるようになる。
【0063】
2.構成要素が、グローバル速度に達するダウンロード・フェーズ中のネットワーク使用率を以下のとおり測定する。
転送バイト=(時点2におけるバイト−時点1におけるバイト)
ダウンロード・フェーズの長さ=(時点2における時刻−時点1における時刻)
最新グローバル速度=転送バイト/ダウンロード・フェーズの長さ
これが、ダウンローダの開始から最初の間隔である場合、グローバル速度は、最新グローバル速度に設定される。
そうでなれば、
if 最新グローバル速度<グローバル速度/2
then グローバル速度=(グローバル速度0.9)
最新グローバル速度は、平均ダウンロード速度に関して使用するのと同じアルゴリズムによってグローバル速度に平均される。グローバル速度は、ネットワーク・インターフェースの合計スループットの推定値として使用される。
【0064】
3.以下のとおり、間隔全体にわたってネットワーク使用率を測定し、ダウンローダの外部のソースからの部分を計算し、空きパーセンテージを計算する。
転送バイト=(時点3におけるバイト−時点1におけるバイト)−(ブロック・サイズ+オーバーヘッド)実際の間隔の長さ=(時点3における時刻−時点1における時刻)
外部使用率=転送バイト/実際の間隔の長さ
空きパーセンテージ=100(1−外部使用率/グローバル速度)
ブロック・ダウンローダ構成要素が、空きパーセンテージを使用して後続のダウンロード間隔のダウンロード・フェーズとアイドル・フェーズの相対的長さを選択する。さらなる実施形態は、外部活動の増大に対する備えとして空きパーセンテージを80%に制限し、他の同様なポリシーも可能である。
【0065】
さらなる実施形態は、図1〜7のように固定値を使用するのではなく、ネットワーク速度およびネットワーク使用率に応じてサンプリング間隔の継続時間を調整する。これにより、ネットワークに合せて最適化されていないブロック・サイズを使用することから生じるCPUのオーバーヘッドおよびネットワークのオーバーヘッドが低減される。例えば、多くの実施形態において、非常に大きいブロック・サイズを使用することは、法外な量のメモリをバッファとして専用にすることを必要とする。反対に、データを一連の非常に小さいブロックとして送信することは、余分のネットワーク・ヘッダ・フィールドおよびネットワーク・プロトコル確認応答を必要とするので、リソースを浪費する可能性がある。ネットワーク帯域幅を十分に利用し、ネットワーク・トラフィックに対する妨げを最小限に抑えるブロック・サイズを導出することが、このさらなる実施形態の利点である。適切なブロック・サイズを決定することに関与するいくつかのステップおよび構成要素が存在する。
【0066】
さらなる例示のため、図8に関連して、ダウンローダのメモリによって規定されるブロック・サイズの上限が、30Kbである、すなわち、ダウンローダが、ディスクに書き込むのを必要とするまでに、30Kbのデータを保持することができるものと想定する。デフォルトの間隔の継続時間が、1秒間であり、間隔T〜Tに対して計算されたブロック・サイズが、最大値を超える35Kbであるものとさらに想定する。このため、本発明のアルゴリズムは、最大値を下回るようにブロック・サイズを縮小するため、次の間隔T〜Tの継続時間を短縮する。この例示を続けると、間隔T〜Tが、例えば、0.8秒間に短縮された場合、ブロック・サイズの限度内である28Kbの計算されたブロック・サイズがもたらされる。したがって、次の間隔T〜T(820)も1秒間ではなく、0.8秒間に設定される。様々な間隔値および他のブロック・サイズの限度の使用も本発明によって企図されることが、当分野の技術者には理解されよう。反対に、計算されたサイズが、所与の間隔中に転送するのに非効率的なデータ・サイズであると判定されているデフォルトの下限を下回る場合、そのブロック・サイズは、小さすぎると考えられる。この場合、ダウンローダは、最小サイズをダウンロードし、次に、1つまたは複数の間隔中、何もダウンロードしないのを選択すること、または間隔の長さを増大させるのを選択することが可能である。
【0067】
いくつかの保守的手法がこのさらなる実施形態においてとられ、可用ネットワーク帯域幅をより十分に利用しながら、許容可能なシステム応答性レベルをサポートする。任意の数の多かれ少なかれ保守的な手法が、本発明によって使用されることが可能であり、企図されることが、当分野の技術者には理解されよう。より具体的には、最新サンプルにより大きい重みを付けたグローバル速度およびダウンロード速度に関する平均を使用することにより、サンプリングされたネットワーク・データの平滑化が達せられる。移動平均を計算する際に、最新サンプルは、新しい合計の30%に相当し、前の値が、70%に相当する。最新値を前の平均値で薄めるこの特定の方法を使用しているが、他の実施形態も、ネットワーク活動におけるスパイクからの回復を可能にする同じ結果を達することになる。例えば、最新の10のサンプルを保持し、次に、毎回、すべての保存されたサンプルおよび新しく獲得されたサンプルを使用して平均を再計算することで、同じ結果が達せられることになる。行われる別の手法は、平均使用速度の1/2を下回ると判定されたグローバル速度に関わる。この場合、この低下は、帯域幅が突然、失われたのではなく、クライアントが活動していないことの結果であると考えられる。したがって、新たに判定されたグローバル速度値は、平均値には導入されない。というのは、導入すると、帯域幅平均値を不当に低下させることになるからである。ただし、グローバル速度平均値は、帯域幅が実際に変化した場合、10%のような値だけ、わずかに低下する。そのような帯域幅変化の例は、地域における雷雨のために電話回線の雑音が突然、増加した場合であろう。行われるさらに別の保守的手法は、他のアプリケーションのために少し余裕を残すため、80%のような値に空きパーセンテージを制限することに関する。
【0068】
本発明のさらなる実施形態は、図9に示すデータ構造900を利用する。データ構造900は、実際の帯域幅使用率の識別されたレベルが調べられた時刻を含む第1のフィールド912と、ネットワーク・インターフェースを通るバイトの総数を含む第2のフィールド914と、アダプタによって送信または受信されたバイトの単調に増加するカウンタとを含む。図8に示すとおり、タイムスタンプとバイト・カウントはともに、実際の使用率802に応じて、各サンプリングで異なる。これらの値の連続する測定を引き算することにより、間隔期間、および間隔期間中に転送されたバイトの数が得られる。
【0069】
図10は、本発明のさらなる実施形態によるネットワークを介してデータを選択的に転送するためのコンピュータ・プログラムを表す流れ図を提示している。このプログラムは、ある所定の条件が存在するとき、ステップ1000で開始される。クライアントがサーバと同じネットワークに接続されると、ステップ1002で、ブロック・サイズ、空きパーセンテージ、およびサンプリング間隔が、デフォルト値に初期設定される。図8に示すとおり、実際の使用率が周期的に(例えば、毎秒)サンプリングされる。好ましくは、前述したとおり、サンプリングは、クライアントとネットワークの間の通信インターフェースにおいて間隔サンプリング期間の重要な時点(例えば、間隔の開始、ブロック転送の終了、および間隔の終了)で着信バイトの数および発信バイトの数を記録しておくことによって行われる。
【0070】
図10を再び参照すると、ブロック・サイズ、空きパーセンテージ、および間隔に関する初期設定された値に基づき、ステップ1004で、ブロック・ダウンロードおよびネットワーク・データ収集が行われる。次に、ステップ1006で、ネットワーク速度関連要素、すなわち、ダウンロード速度、グローバル速度、および空きパーセンテージが、適宜にリファインされ、更新される。次に、ステップ1008で、ネットワーク速度関連要素との関係でブロック・サイズが計算される。一般的に、ブロック・サイズは、通信パケット・ヘッダのサイズからダウンローダに割り振られたメモリのサイズまでのどのサイズであることも可能である。インターネット適用例に関する現行で好ましい最小ブロック・サイズは、ブロック・データとして500バイト、またHTTP要求および応答パケット・ヘッダとして500バイトのおよそ1000バイトである。サイズが計算されると、ステップ1004で、実際の使用率が再び計算される。
【0071】
ステップ1006で、ダウンロード速度の平均およびグローバル速度が計算され、ネットワーク空きパーセンテージ値も計算される。図8に関連して前述したとおり、このプロセス中、観察されたグローバル速度が、平均グローバル速度の許容可能な範囲内にあるかどうか、また空きパーセンテージが、帯域幅値の所定の最大分数値を下回るかどうかが判定される。本発明のさらなる実施形態では、観察されたグローバル速度は、新しい平均グローバル速度の計算に含められるには、平均グローバル速度の1/2を上回らなければならない。そうでなければ、新しい平均値は、前の平均グローバル速度の90%に決定される。空きパーセンテージに関して、本発明のさらなる実施形態では、計算される空きパーセンテージが80%を超えないことが必要とされるのが可能である。
【0072】
サーバから入手可能なソフトウェア更新(または他のデータの集合)をネットワークを介してクライアントにダウンロードすることができる。前述したとおり、クライアントの他のあらゆる現在または将来のネットワーク活動に対する妨げを最小限に抑えるため、ダウンロードは、好ましくは、ブロックとも呼ばれるいくつかのセグメントでソフトウェア更新をダウンロードすることによって行われる。したがって、ステップ1004で、ファイルの1つのセグメントが、サーバからクライアントにダウンロードされる。第1のセグメントをダウンロードした後、クライアントのネットワーク活動が増大した場合、このさらなる実施形態は、ブロック・サイズが前述した最小値を下回らない限り、より小さいブロックをダウンロードする。しかし、ネットワークがアイドル状態になった場合、ステップ1006の次の反復が、ブロック・サイズを適切に増大させる。
【0073】
ステップ1008で、計算されるブロック・サイズが、下限値および上限値によって限定される。下限は、余りにも小さいので、その特定の間隔中に何も行わない方がより効率的であるようなサイズである。計算されるブロック・サイズが、2つの連続する間隔中にこの限界を下回った場合、ステップ1010で示すとおり、間隔のサイズが増分され、この第2の間隔中、ブロックが全くダウンロードされない。計算されるブロック・サイズが、新たに増分された間隔中に下限を下回ったままである場合、ブロック・サイズは、「ビジー・ブロック・サイズ」に設定され、間隔は、デフォルトの間隔値に設定される。ビジー・ブロック・サイズは、最小限のダウンロードが行われるのを可能にして、1)ダウンロードプロセス中に何らかの漸進が行われ、2)サーバが余りにも遅く、計算されるブロック・サイズがダウンローダの最小値まで決して上昇しない状況に本発明が対処することができ、3)ダウンロードのプロセスが、推定ネットワーク速度についてリファインする(refinement)のを可能にするようにする値である。最大限度を超えるブロック・サイズは、計算されるブロック・サイズを限度内に保つことができるように間隔の短縮をもたらす。
【0074】
本発明は、制限するものではなく、例示するものである例としての実施形態に関連して説明してきた。例えば、PCのオペレーティング・システムに関するソフトウェア更新をダウンロードするコンテキストにおいて、本発明を説明してきた。ソフトウェア更新は、同様に、PC上のビデオ・ゲームに対する更新などの他の多くのタイプのソフトウェアに関わることも容易に可能である。さらに、ダウンロードされるデータは、テキスト、イメージ、および/またはオーディオ・データを含むことが可能である。また、本発明は、クライアントからサーバへのアップロードにも同様に適用可能である。
【0075】
本発明の代替の実施形態は、図面を含む本明細書を吟味することにより、本発明が関係する分野の技術者には明白になろう。したがって、本発明の範囲は、以上の説明によってではなく、頭記の特許請求の範囲によって定義される。
【図面の簡単な説明】
【図1】 本発明を実施する際に使用するのに適したコンピュータ・システム環境を示すブロック図である。
【図2】 ネットワークを介してサーバと通信するクライアント・マシンを含むシステムを示すブロック図である。
【図3】 図2と同様であるが、第1のクライアント・マシンおよび第2のクライアント・マシンがイントラネットを介して互いに接続されているのを示すブロック図である。
【図4】 曲線が、実際のネットワーク帯域幅使用率を示し、また破線が、本発明に従って計算された使用率のしきい値レベルを表す、時間経過におけるネットワーク帯域幅使用率を示す図である。
【図5】 本発明によるクライアント・マシンのアーキテクチャを示すブロック図である。
【図6】 本発明によるデータ構造を示すブロック図である。
【図7】 本発明に従ってネットワークを介してデータを転送するためのコンピュータ・プログラムを表すフローチャートである。
【図8】 実線の曲線が、実際のネットワーク帯域幅使用率を表し、また破線の曲線が、クライアントとサーバの間の観察された転送速度、および本発明のさらなる実施形態によるネットワークを介するデータ・フロー速度を表す、時間経過におけるネットワーク帯域幅使用率を示す図である。
【図9】 本発明のさらなる実施形態によるデータ構造を示すブロック図である。
【図10】 本発明のさらなる実施形態によるネットワークを介してデータを転送するためのコンピュータ・プログラムを表す流れ図である。

Claims (26)

  1. ローカルのコンピュータ装置とリモートのコンピュータ装置との間のネットワークを介してデータの集合を転送する方法であって、
    前記ローカルのコンピュータ装置にネットワーク接続を与える通信インターフェースにおいて所与の期間にわたって転送される1つまたは複数のデータの集合についてのデータのサイズを周期的にサンプリングすることによって前記通信インターフェースの実際のネットワーク帯域幅使用率のレベルをモニタ(測定)するステップと、
    モニタされたレベルの最大値を識別するステップであって、前記モニタされたレベルの最大値は、前記通信インターフェースの実際のネットワーク帯域幅使用率についてモニタされたレベルの中の最大値であり、前記通信インターフェースにより転送される前記1つまたは複数のデータの集合がデータのサイズについて現行のしきい値を上回るときに識別されて、前記現行のしきい値は、ゼロに初期設定され、新しい最大値が検出されるたびに毎回、新しいしきい値が計算される、識別するステップと、
    使用率についてモニタされたレベルの前記最大値の相関的要素(function)として使用率についてのしきい値レベルを計算するステップと、
    前記実際の使用率のレベルが前記使用率についてのしきい値レベルを下回っているという決定に基づき前記ローカルのコンピュータ装置と前記リモートのコンピュータ装置との間の前記ネットワークを介して前記データの集合の少なくとも一部分を受信するステップと
    を備えることを特徴とする方法。
  2. クライアントが、前記ネットワークを介して前記データをサーバから受信することを特徴とする請求項1に記載の方法。
  3. 前記モニタするステップは、前記クライアントと前記ネットワークの間のインターフェースにおいて行われることを特徴とする請求項2に記載の方法。
  4. 前記ネットワークは、インターネットであることを特徴とする請求項1に記載の方法。
  5. 前記使用率についてのしきい値レベルは、前記モニタされたレベルの最大値の所定パーセンテージに等しいことを特徴とする請求項1に記載の方法。
  6. 前記データの集合は、ソフトウェア更新を備えることを特徴とする請求項1に記載の方法。
  7. 前記データの集合の一部分が受信されるたびに毎回、少なくとも前記モニタするステップを繰り返すステップをさらに備えることを特徴とする請求項1に記載の方法。
  8. 前記受信するステップは、前記実際の使用率のレベルが前記使用率についてのしきい値レベルを下回っているとき、前記ネットワークを介して前記データの集合の、複数の個別の部分を別々に受信するステップを含むことを特徴とする請求項7に記載の方法。
  9. 前記ネットワークを介して前記データの個別の部分が受信されるたびに毎回、カウンタを増分するステップをさらに備え、前記データの前記個別の部分のサイズは前記カウンタの値の相関的要素であることを特徴とする請求項8に記載の方法。
  10. 前記ネットワークを介して前記データの前記複数の個別の部分のすべてを受信した後、前記カウンタをクリアするステップをさらに備えることを特徴とする請求項9に記載の方法。
  11. 前記実際の使用率のレベルが前記使用率についてのしきい値レベルを上回るようになった場合、前記カウンタをクリアするステップをさらに備えることを特徴とする請求項9に記載の方法。
  12. 前記実際の使用率のレベルが前記使用率についてのしきい値レベルを上回るようになった場合、前記データの個別の部分の前記受信をサスペンドするステップをさらに備えることを特徴とする請求項8に記載の方法。
  13. 前記実際の使用率のレベルが前記使用率についてのしきい値レベルを下回るようになったとき、前記サスペンドの時点から前記データの個別の部分の前記受信を再開するステップをさらに備えることを特徴とする請求項12に記載の方法。
  14. 前記データの集合が受信されるたびに毎回、前記モニタするステップを繰り返すステップと、
    前記データの集合の受信中、使用率の最大レベルを識別するステップと、
    前記データの集合の受信中に識別された使用率の前記最大レベルの相関的要素として、前記データの集合に関する使用率についてのしきい値レベルを計算するステップと
    をさらに備えることを特徴とする請求項1に記載の方法。
  15. 前記識別するステップは、前記データの集合の受信中、前記モニタするステップを所定の回数繰り返した後、前記データの集合に関する使用率の平均レベルを計算することによって前記データの集合の受信中に使用率の前記最大レベルを推定するステップを含むことを特徴とする請求項14に記載の方法。
  16. 前記実際の使用率のレベルが前記データの集合に関する使用率についてのしきい値レベルを下回っている場合、前記ネットワークを介して前記データの集合の少なくとも一部分を受信するステップをさらに備えることを特徴とする請求項14に記載の方法。
  17. 前記実際の使用率のレベルが前記データの集合に関する使用率についてのしきい値レベルを下回っている場合、前記ネットワークを介して第2のデータ集合の少なくとも一部分を受信することをさらに備えることを特徴とする請求項14に記載の方法。
  18. 請求項1に記載の前記ステップを行うためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
  19. メモリと、オペレーティング・システムと、中央プロセッサとを有するコンピュータ・システムであって、前記プロセッサは、請求項18に記載の前記コンピュータ可読媒体上に記憶された前記命令を実行するように動作可能であることを特徴とするシステム。
  20. クライアント・マシンが前記クライアント・マシンのユーザについての他のネットワーク活動に関わる能力を妨げることなしに前記ネットワークを介して前記データを受信することを特徴とする請求項1に記載の方法。
  21. 前記データは、他のあらゆるネットワーク活動を妨げることなしに前記ネットワークを介して受信されることを特徴とする請求項1に記載の方法。
  22. ローカルのコンピュータ装置とリモートのコンピュータ装置との間のネットワークを介するデータの転送を管理するためのコンピュータ実行可能構成要素を有するコンピュータ読み取り可能な記録媒体であって、
    データのサイズについて所定のしきい値を上回るデータの集合に対して所与の期間にわたって転送される着信データおよび発信データの量を周期的にサンプリングすることによって前記ローカルのコンピュータ装置のネットワーク接続に関して実際の帯域幅使用率のレベルをモニタし、前記ローカルのコンピュータ装置のネットワーク接続に関する実際の帯域幅使用率についてモニタされたレベルの中の最大値である、モニタされたレベルの最大値を識別する帯域幅モニタ構成要素と、
    前記帯域幅モニタ構成要素によって識別された、使用率のモニタされたレベルの最大値の相関的要素として使用率のしきい値レベルを計算するしきい値計算構成要素と、
    前記実際の帯域幅使用率のレベルが前記使用率のしきい値レベルを下回っているとき、前記ローカルのコンピュータ装置と前記リモートのコンピュータ装置との間の前記ネットワークを介してデータの転送を管理する転送管理構成要素と
    を備えることを特徴とする媒体。
  23. 前記ネットワーク接続は、クライアント・マシンと前記ネットワークの間のインターフェースであることを特徴とする請求項22に記載のコンピュータ可読媒体。
  24. 前記使用率のしきい値レベルは、前記モニタされる最大レベルの所定のパーセンテージとして計算されることを特徴とする請求項22に記載のコンピュータ可読媒体。
  25. ネットワークを介してクライアント・プロセスとサーバ・プロセスの間で通信する方法であって、
    (a)ファイルを識別し、前記クライアント・プロセスに関する他のネットワーク活動を妨げることなしに前記ネットワークを介してデータを転送できるよりも低いしきい値レベルを前記クライアント・プロセスに関する実際のネットワーク帯域幅使用率が下回るときに前記サーバ・プロセスが前記ネットワークを介して前記クライアント・プロセスへ前記ファイルの第1のセグメントを転送することを要求する第1のダウンロード要求、を前記サーバ・プロセスに対して発行するステップであって、前記しきい値レベルはモニタされたレベルの最大値の相関的要素として計算され、前記モニタされたレベルの最大値はサイズについて所定のしきい値を上回るデータの集合に対して所与の期間にわたって転送される着信データおよび発信データの量を周期的にサンプリングすることによって識別される前記クライアント・プロセスに関する実際のネットワーク帯域幅使用率についてモニタされたレベルの中の最大値である、第1のダウンロード要求を発行するステップと、
    (b)前記ファイルの前記第1のセグメントを、前記サーバ・プロセスから受信するステップと、
    (c)前記ファイルに関連付けられ、前記実際のネットワーク帯域幅使用率が前記しきい値レベルを下回っているときに前記ネットワークを介して前記ファイルのさらなるセグメントを前記サーバ・プロセスが転送することを要求するさらなるダウンロード要求、を前記サーバ・プロセスに対して発行するステップと、
    (d)前記ファイルの前記さらなるセグメントを、前記サーバ・プロセスから受信するステップと、
    (e)前記サーバ・プロセスが前記ネットワークを介して前記ファイルの各セグメントの転送を完了するまで、ステップ(c)および(d)を繰り返すステップと
    を備えることを特徴とする方法。
  26. ネットワークとコンピュータとの間のデータ転送を前記コンピュータが調節する方法であって、
    所与の期間にわたって前記ネットワークと前記コンピュータとの間に転送される着信データおよび発信データの量を周期的にサンプリングすることによって前記ネットワークと前記コンピュータとの間に伝達されるデータの量の使用率をモニタするステップと、
    前記ネットワークと前記コンピュータとの間に伝達されるデータの量の使用率の中の最大値を繰り返し決定するステップと、
    前記ネットワークと前記コンピュータとの間に伝達されるデータの量の使用率の中の最大値に基づきデータ通信の使用率のしきい値を繰り返し計算するステップと、
    前記データ通信の使用率のしきい値および前記ネットワークと前記コンピュータとの間に伝達されるデータの量の使用率に基づき前記ネットワークと前記コンピュータとの間に転送されるデータをサスペンドするか再開するかを繰り返し決定することにより、前記データの転送をサスペンドするまたは再開するステップと
    を備えることを特徴とする方法。
JP2001560080A 2000-02-16 2001-02-16 ネットワークを介してデータを転送するためのシステム及び方法 Expired - Lifetime JP4711586B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US09/505,735 2000-02-16
US09/505,735 US7437428B1 (en) 2000-02-16 2000-02-16 System and method for transferring data over a network
US09/783,407 US6920110B2 (en) 2001-02-14 2001-02-14 System and method for transferring data over a network
US09/783,407 2001-02-14
PCT/US2001/004885 WO2001061944A1 (en) 2000-02-16 2001-02-16 System and method for transferring data over a network

Publications (2)

Publication Number Publication Date
JP2003527800A JP2003527800A (ja) 2003-09-16
JP4711586B2 true JP4711586B2 (ja) 2011-06-29

Family

ID=27055235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001560080A Expired - Lifetime JP4711586B2 (ja) 2000-02-16 2001-02-16 ネットワークを介してデータを転送するためのシステム及び方法

Country Status (6)

Country Link
EP (2) EP1256212B1 (ja)
JP (1) JP4711586B2 (ja)
AT (1) ATE338406T1 (ja)
AU (2) AU2001238419A1 (ja)
DE (1) DE60122676T2 (ja)
WO (2) WO2001061945A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8272020B2 (en) * 2002-08-17 2012-09-18 Disney Enterprises, Inc. System for the delivery and dynamic presentation of large media assets over bandwidth constrained networks
JP4651912B2 (ja) * 2003-01-27 2011-03-16 Necインフロンティア株式会社 インタネット電話システム、呼接続制御装置及びそれに用いる端末連携方法並びにそのプログラム
WO2005026978A2 (de) * 2003-09-11 2005-03-24 Siemens Aktiengesellschaft Verfahren zur ratenbestimmung durch einen zeitlich gewichteten gleitenden durchschnitt
EP1668860A1 (de) * 2003-09-29 2006-06-14 Siemens Aktiengesellschaft Verfahren zur bereitstellung von leistungsmerkmalen bei bedarf
DE102004013438A1 (de) * 2004-03-18 2005-10-13 Siemens Ag Verfahren zur Ratenbestimmung durch einen zeitlich gewichteten gleitenden Durchschnitt
US7603473B2 (en) * 2005-07-15 2009-10-13 Microsoft Corporation Background network bandwidth sharing behind gateway devices
EP1936517A1 (en) * 2006-12-19 2008-06-25 Alcatel Lucent Method for distributing non real-time media in a non real-time media distribution system, a related system, a related media server and media client
US9078072B2 (en) * 2013-10-07 2015-07-07 Bose Corporation Audio distribution
US9596281B2 (en) * 2014-03-18 2017-03-14 Qualcomm Incorporated Transport accelerator implementing request manager and connection manager functionality
US11184447B2 (en) * 2019-05-14 2021-11-23 Swiftly Systems, Inc. Systems and methods for efficient transmission of catalog data
CN112887146A (zh) * 2021-01-28 2021-06-01 杭州迪普科技股份有限公司 网络节点升级方法、装置与电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05153154A (ja) * 1991-11-28 1993-06-18 Nippon Telegr & Teleph Corp <Ntt> チヤネル帯域管理処理方式
JPH09512678A (ja) * 1994-04-28 1997-12-16 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 通信ネットワーク用サービス提供システム
JPH11261632A (ja) * 1998-03-06 1999-09-24 Chokosoku Network Computer Gijutsu Kenkyusho:Kk 帯域割当制御方法
JPH11511574A (ja) * 1995-08-22 1999-10-05 バックウェブ 遠隔地のネットワークと局地のコンピュータとの間の情報を伝送し、表示する方法及び装置
JP2002510891A (ja) * 1998-03-30 2002-04-09 ジェネシス・テレコミュニケーションズ・ラボラトリーズ・インコーポレーテッド あるメディアタイプから他のメディアタイプに電話呼を変換する機能を有するインターネットプロトコルメッセージ通信の要求に応じた帯域幅の管理

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701292A (en) * 1995-12-04 1997-12-23 Lucent Technologies Inc. Method and apparatus for controlling data transfer rates of data sources in asynchronous transfer mode-based networks
US6963923B1 (en) * 1997-02-10 2005-11-08 International Business Machines Corporation Method for file transfer restarts using standard internet protocol
WO2000001123A1 (en) * 1998-06-30 2000-01-06 Sun Microsystems, Inc. Congestion control in reliable multicast protocol

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05153154A (ja) * 1991-11-28 1993-06-18 Nippon Telegr & Teleph Corp <Ntt> チヤネル帯域管理処理方式
JPH09512678A (ja) * 1994-04-28 1997-12-16 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 通信ネットワーク用サービス提供システム
JPH11511574A (ja) * 1995-08-22 1999-10-05 バックウェブ 遠隔地のネットワークと局地のコンピュータとの間の情報を伝送し、表示する方法及び装置
JPH11261632A (ja) * 1998-03-06 1999-09-24 Chokosoku Network Computer Gijutsu Kenkyusho:Kk 帯域割当制御方法
JP2002510891A (ja) * 1998-03-30 2002-04-09 ジェネシス・テレコミュニケーションズ・ラボラトリーズ・インコーポレーテッド あるメディアタイプから他のメディアタイプに電話呼を変換する機能を有するインターネットプロトコルメッセージ通信の要求に応じた帯域幅の管理

Also Published As

Publication number Publication date
JP2003527800A (ja) 2003-09-16
AU2001238419A1 (en) 2001-08-27
EP1256212A1 (en) 2002-11-13
AU2001238326A1 (en) 2001-08-27
WO2001061944A1 (en) 2001-08-23
ATE338406T1 (de) 2006-09-15
EP1256212B1 (en) 2006-08-30
DE60122676D1 (de) 2006-10-12
EP1720304A2 (en) 2006-11-08
DE60122676T2 (de) 2007-09-06
WO2001061945A1 (en) 2001-08-23
WO2001061944A8 (en) 2001-11-01

Similar Documents

Publication Publication Date Title
US7325068B2 (en) Method and system for managing data transfer over a network
US7437428B1 (en) System and method for transferring data over a network
US10594608B2 (en) System for bandwidth optimization with initial congestion window determination
US7840646B2 (en) Learned upload time estimate module
JP4711586B2 (ja) ネットワークを介してデータを転送するためのシステム及び方法
US6772217B1 (en) Internet backbone bandwidth enhancement by initiating an additional data stream when individual bandwidth are approximately equal to the backbone limit
US7568030B2 (en) Monitoring thread usage to dynamically control a thread pool
US7720989B2 (en) Electronic device and base station for maintaining a network connection
CA2498311C (en) System and method for maintaining a network connection
US7076544B2 (en) Caching techniques for streaming media
US6247050B1 (en) System for collecting and displaying performance improvement information for a computer
US8239564B2 (en) Dynamic throttling based on network conditions
WO2018094654A1 (zh) 一种vpn传输隧道调度方法、装置以及vpn客户端服务器
US20020165970A1 (en) System and method for intelligent bit rate and buffer selection
KR100812211B1 (ko) 스트리밍을 이용한 애플리케이션 제공 시스템 및 방법
JP2002535879A (ja) 通信ネットワークリンク上でのアクセスについてユーザに課金するためのデータを生成する方法および装置
JP2003516586A (ja) コンテンツ収集
JP3780913B2 (ja) レスポンス計測における計測モジュールを配布するアクセス管理システム、及びアクセス管理プログラム
KR20060108605A (ko) 네트워크를 통해 원격 적재되는 애플리케이션 서비스 방법및 시스템
CN117896371A (zh) 一种云存储配额限速下载方法及装置
Huang et al. Phatpackets for Data Transport within an HPC Network.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071206

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100430

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100802

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110126

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110322

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250