(57)【要約】【課題】  ネットワークへのデータストリームの許容の制御。【解決手段】  より受動的なテストからより能動的なテストに遷移する一連のテストにおける適切な判定は、ネットワークデータ経路上へのデータストリームの許容を制御する。より受動的なテストはプロミスキャスモードおよびパケット対テストを含むことができる。より受動的なテストの結果が、データストリームがネットワークデータ経路を輻輳状態に遷移させる可能性が低減することを示した場合、輻輳の可能性をより正確に決定するためにネットワークデータ経路を能動的にプローブできる。診断用データパケットのトレインは輻輳させる危険性を大幅に低減させた診断用データ転送速度で送信される。目標データパケットのトレインは要求されたアプリケーション転送データ速度で送信される。指定された遅延閾値内に受信された目標データパケット数が遅延閾値で受信された診断用データパケット数と比較される。【選択図】  図２
2004266840.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの送信側データリンクと１つの受信側データリンクとを含むコンピュータネットワークデータ経路を介して受信コンピュータシステムに接続可能なネットワークである送信コンピュータシステムで、前記コンピュータネットワークデータ経路に含まれる前記データリンクをいずれも輻輳させずにアプリケーションのデータストリームを前記送信コンピュータシステムから前記受信コンピュータシステムに配信できるか否かを判定する方法において、
要求されたアプリケーションのデータ転送速度を、前記送信コンピュータシステムから前記受信コンピュータシステムへの前記アプリケーションのデータストリームの配信を要求するアプリケーションから受信する動作であって、前記要求されたアプリケーションのデータ転送速度は前記アプリケーションのデータストリームの配信中に消費される帯域幅の推定値を表す動作と、
前記送信側データリンク上の送信側のデータ負荷を受動的に検出する動作と、
前記送信側のデータ負荷に基づいて、前記送信側データリンク上の使用可能な帯域幅容量が前記要求されたアプリケーションのデータ転送速度でデータのストリームをサポートするために十分であることを計算する動作と、
前記受信コンピュータシステムまたは中間のコンピュータシステムに配信するために前記コンピュータネットワークデータ経路上に第１のパケット対のデータパケットを送信する動作と、
前記第１のパケット対のデータパケットの送信後に、前記受信コンピュータシステムまたは前記中間のコンピュータシステムに配信するために前記コンピュータネットワークデータ上に対応する第２のパケット対のデータパケットを送信する動作であって、前記第２のパケット対のデータパケットは前記第１のパケット対のデータパケットと同じサイズである動作と、
前記コンピュータネットワークデータ経路の前記ボトルネックデータリンク上の前記使用可能な帯域幅容量が前記要求されたアプリケーションのデータ転送速度でデータのストリームを受信するには十分であるという指示を受信する動作と、
プロービングデータパケットのトレインを、前記要求されたアプリケーションのデータ転送速度で前記アプリケーションのデータストリームを送信することをシミュレーションするように構成するために送信パラメータを特定する動作と、
前記コンピュータネットワークデータ経路上に前記アプリケーションのデータストリームを送信することをシミュレーションするために前記特定された送信パラメータに従ってプロービングデータパケットのトレインを一時的に送信する動作と、
データプロービングパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクのいずれも輻輳状態に遷移させなかったという指示を受信する動作と
を備えることを特徴とする方法。
【請求項２】
アプリケーションからアプリケーションのデータ転送速度を受信する動作であって、前記要求されたアプリケーションのデータ転送速度が前記アプリケーションのデータストリームの配信中に消費される前記帯域幅の推定値を表す前記動作は、アプリケーションのデータ転送速度が、ユニバーサルデータグラムプロトコルデータストリームの配信中に消費される前記帯域幅を推定する動作を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記送信側データリンク上の前記使用可能な帯域幅容量が前記アプリケーションの要求されたデータ転送速度でデータのストリームをサポートするために十分であることを計算する前記動作は、ユーザが選択した許容可能なローディング値に基づいて前記送信側データリンク上での前記使用可能な帯域幅容量を計算する動作を含むことを特徴とする請求項１に記載の方法。
【請求項４】
プロービングデータパケットのトレインを構成するために送信パラメータを特定する前記動作は、ユーザインターフェースで入力されたユーザが選択した送信パラメータを特定する動作を含むことを特徴とする請求項１に記載の方法。
【請求項５】
受信側のデータ負荷を受動的に検出するための命令を受信側コンピュータシステムに送信する動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記受信側データリンク上の前記使用可能な帯域幅容量は前記要求されたアプリケーションのデータ転送速度でデータのストリームをサポートするには十分であるという指示を受信する動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記コンピュータネットワークデータ経路上に前記要求されたアプリケーションのデータ転送速度で前記アプリケーションのデータストリームを送信する動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記送信側データリンクと前記受信側データリンクは同一データリンクであることを特徴とする請求項１に記載の方法。
【請求項９】
少なくとも１つの送信側データリンクと１つの受信側データリンクとを含むコンピュータネットワークデータ経路を介して受信コンピュータシステムに接続可能なネットワークである送信コンピュータシステムで、前記コンピュータネットワークデータ経路に含まれる前記データリンクをいずれも輻輳させずにアプリケーションのデータストリームを前記送信コンピュータシステムから前記受信コンピュータシステムに配信できるか否かを判定する方法において、
要求されたアプリケーションのデータ転送速度を、前記送信コンピュータシステムから前記受信コンピュータシステムへの前記アプリケーションのデータストリームの配信を要求するアプリケーションから受信する動作であって、前記要求されたアプリケーションのデータ転送速度は前記アプリケーションのデータストリームの配信中に消費される帯域幅の推定値を表す動作と、
前記送信側データリンクが前記アプリケーションのデータストリームを受信するために十分な使用可能な帯域幅を有するか否かを判定するためにプロミスキャスモード測定を実行するステップと、
前記コンピュータネットワークデータ経路の前記ボトルネックデータリンクが前記アプリケーションのデータストリームを受信するために十分な使用可能な帯域幅容量を有するか否かを判定するためにパケット対テストを開始するステップと、
前記ボトルネックデータリンク上の前記使用可能な帯域幅容量が前記要求されたアプリケーションのデータ転送速度でデータのストリームを受信するには十分であるという指示を受信する動作と、
前記アプリケーションのデータストリームが前記コンピュータネットワークデータ経路上に配信される場合に前記コンピュータネットワークデータ経路が輻輳状態に遷移するか否かを判定するために、プロービングデータパケットのトレインによって前記コンピュータネットワークデータ経路を能動的にプローブするステップと、
プロービングデータパケットの前記トレインは前記コンピュータネットワークデータ経路の前記データリンクのいずれも輻輳状態に遷移させなかったという指示を受信する動作と
を含むことを特徴とする方法。
【請求項１０】
少なくとも１つの受信側データリンクと１つの送信側データリンクとを含むコンピュータネットワークデータ経路を介して送信コンピュータシステムに接続可能なネットワークである受信コンピュータシステムで、前記コンピュータネットワークデータ経路に含まれる前記データリンクをいずれも輻輳させずにアプリケーションのデータストリームを前記送信コンピュータシステムから前記受信コンピュータシステムに配信できるか否かを判定する方法において、
前記受信側データリンク上の受信側のデータ負荷を受動的に検出する動作と、
前記受信側のデータ負荷に基づいて、前記受信側データリンク上の使用可能な帯域幅容量を計算する動作と、
前記受信側データリンク上の前記使用可能な帯域幅容量を前記送信コンピュータシステムに示す動作と、
第１のパケット対のデータパケットを第１の受信時刻に前記コンピュータネットワークデータ経路から受信する動作と、
第２のパケット対のデータパケットを第２の受信時刻に前記コンピュータネットワークデータ経路から受信する動作と、
少なくとも前記第１の受信時刻と前記第２の受信時刻との差に基づいて、前記コンピュータネットワークデータ経路の前記ボトルネックデータリンク上の前記使用可能な帯域幅容量を計算する動作と、
前記ボトルネックデータリンク上の前記使用可能な帯域幅容量を前記送信コンピュータシステムに示す動作と、
アプリケーションのデータ転送速度でアプリケーションのデータストリームをシミュレーションするためにパケットを前記コンピュータネットワークデータ経路上に送信した前記送信コンピュータシステムからプロービングデータパケットのトレイン内の前記プロービングデータパケットの少なくとも一部を受信する動作と、
プロービングデータパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクのいずれも輻輳状態に遷移させなかったことを計算する動作と、
プロービングデータパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクのいずれも輻輳状態に遷移させなかったことを前記送信コンピュータシステムに示す動作と
を備えることを特徴とする方法。
【請求項１１】
前記受信側のデータ負荷に基づいて、前記受信側データリンク上の使用可能な帯域幅容量を計算する前記動作が、ユーザが選択した許容可能なローディング値に基づいて前記受信側データリンクの前記使用可能な帯域幅容量を計算する動作を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
少なくとも前記第１の受信時刻と前記第２の受信時刻との差に基づいて、前記ボトルネックデータリンク上の前記使用可能な帯域幅容量を計算する前記動作は、パケット対アルゴリズムに従って送信されたパケット対のデータパケットのトレインに含まれる複数のパケット対のデータパケットの前記受信時刻に基づいて前記ボトルネック帯域幅を計算する動作を含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
送信側コンピュータシステムから受信側のデータ負荷を受動的に検出するための命令を受信する動作をさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記コンピュータネットワークデータ経路から前記要求されたアプリケーションのデータ転送速度で前記アプリケーションのデータストリームを受信する動作をさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１５】
前記送信側データリンクと前記受信側データリンクは同一データリンクであることを特徴とする請求項１０に記載の方法。
【請求項１６】
少なくとも１つの受信側データリンクと１つの送信側データリンクとを含むコンピュータネットワークデータ経路を介して送信コンピュータシステムに接続可能なネットワークである受信コンピュータシステムで、前記コンピュータネットワークデータ経路に含まれる前記データリンクをいずれも輻輳させずにアプリケーションのデータストリームを前記送信コンピュータシステムから前記受信コンピュータシステムに配信できるか否かを判定する方法において、
前記受信側データリンク上での前記使用可能な帯域幅容量を決定するためにプロミスキャスモード測定に参加するステップと、
前記受信側データリンク上の前記使用可能な帯域幅容量を前記送信コンピュータシステムに示す動作と、
前記コンピュータネットワークデータ経路の前記ボトルネックデータリンク上の前記使用可能な帯域幅容量を決定するためにパケット対テストに参加するステップと、
前記ボトルネックデータリンク上の前記使用可能な帯域幅容量を前記送信コンピュータシステムに示す動作と、
前記アプリケーションのデータストリームが前記コンピュータネットワークデータ経路の前記データリンクのいずれも輻輳状態に遷移させないか否かを判定するために前記コンピュータネットワークデータ経路の能動的なプロービングに参加するステップと、
プロービングデータパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクをいずれも輻輳状態に遷移させなかったことを前記送信コンピュータシステムに示す動作と
を備えることを特徴とする方法。
【請求項１７】
少なくとも１つの送信側データリンクと１つの受信側データリンクを含むコンピュータネットワークデータ経路を介して受信コンピュータシステムに接続可能なネットワークである送信コンピュータシステムであって、前記コンピュータネットワークデータ経路が前記コンピュータネットワークデータ経路の前記ボトルネックリンクの前記帯域幅を表すボトルネック帯域幅を有する送信コンピュータシステムで、要求されたデータ転送速度で前記コンピュータネットワークデータ経路上にアプリケーションのデータストリームを配信することによって前記コンピュータネットワークデータ経路に含まれる前記データリンクのいずれかが輻輳状態に遷移するか否かを判定するために前記コンピュータネットワークデータ経路を能動的にプローブする方法において、
診断用データパケットのトレインを前記ボトルネック帯域幅の指定された分数で前記コンピュータネットワークデータ経路上に送信する動作であって、前記ボトルネック帯域幅の前記指定された分数が他のデータストリームを劣化させる可能性が大幅に低減された診断用データ転送速度を表す動作と、
前記アプリケーションのデータストリームの送信を他のデータストリームを劣化させる可能性を低減する方法でシミュレーションできるように前記コンピュータネットワークデータ経路上に前記要求されたデータ転送速度で目標データパケットのトレインを一時的に送信する動作と、
目標データパケットの前記トレインが前記コンピュータネットワークデータ経路に含まれる前記データリンクのいずれかを輻輳させるか否かを示す比較の結果を受信する動作と
を備えることを特徴とする方法。
【請求項１８】
診断用データパケットのトレインを前記ボトルネック帯域幅の指定された分数で前記コンピュータネットワークデータ経路上に送信する前記動作は、診断用データパケットの一連のトレインに含まれる診断用データパケットの複数のトレインの１つである診断用データパケットのトレインを送信する動作であって、診断用データパケットの前記複数のトレイン内の診断用データパケットの各トレインの送信はプロービングトレイン間隔によって分離される動作を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記コンピュータネットワークデータ経路上に前記要求されたアプリケーションのデータ転送速度で目標データパケットのトレインを一時的に送信する前記動作は、目標データパケットの一連のトレインに含まれる目標データパケットの複数のトレインの１つである目標データパケットのトレインを送信する動作であって、目標データパケットの前記複数のトレイン内の目標データパケットの各トレインの送信がプロービングトレイン間隔で分離される動作を含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
パケット対テストから前記ボトルネック帯域幅を計算する動作をさらに備えることを特徴とする請求項１７に記載の方法。
【請求項２１】
前記ボトルネック帯域幅と前記要求されたアプリケーションのデータ転送速度とに基づいて、中間の診断用データパケットのトレインを中間の診断用データ速度で前記受信コンピュータシステムに送信すべきか否かを判定する動作であって、前記中間の診断用データ速度は前記診断用データ速度よりも大きく、前記要求されたアプリケーションのデータ転送速度よりも小さい動作をさらに備えることを特徴とする請求項１７に記載の方法。
【請求項２２】
中間の診断用データパケットのトレインを前記中間の診断用データ速度で送信する動作をさらに備えることを特徴とする請求項２１に記載の方法。
【請求項２３】
データパケットの前記トレインを構成するためにユーザが選択した送信パラメータを前記送信コンピュータシステムのユーザインターフェースから受信する動作をさらに備えることを特徴とする請求項１７に記載の方法。
【請求項２４】
少なくとも１つの送信側データリンクと１つの受信側データリンクとを含むコンピュータネットワークデータ経路を介して送信コンピュータシステムに接続可能なネットワークである受信コンピュータシステムであって、前記コンピュータネットワークデータ経路が前記コンピュータネットワークデータ経路の前記ボトルネックリンクの前記帯域幅を表すボトルネック帯域幅を有する受信コンピュータシステムで、要求されたデータ転送速度で前記コンピュータネットワークデータ経路上にアプリケーションのデータストリームを配信することによって前記コンピュータネットワークデータ経路に含まれる前記データリンクのいずれかが輻輳状態に遷移するか否かを判定するために前記コンピュータネットワークデータ経路を能動的にプローブする方法において、
前記送信コンピュータシステムから前記受信コンピュータシステムに送信された診断用データパケットのトレインに含まれる前記診断用データパケットの少なくとも一部を受信する動作であって、他のデータストリームを劣化させる可能性を大幅に低減するために前記診断用パケットは前記ボトルネック帯域幅の分数で受信される動作と、
遅延した診断用データパケット数を前記受信した診断用パケットから特定する動作と、
他のデータストリームを劣化させる可能性を低減する方法で前記アプリケーションのデータストリームの送信をシミュレーションするために、前記送信コンピュータシステムから前記受信コンピュータシステムに一時的に送信された目標データパケットのトレインに含まれる前記目標パケットの少なくとも一部を受信する動作と、
遅延した目標データパケット数を前記受信した目標データパケットから特定する動作と、
目標データパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクのいずれかを輻輳させたか否かを判定するために、遅延した目標データパケット数を遅延した診断用データパケット数と比較する動作と
を備えることを特徴とする方法。
【請求項２５】
前記送信コンピュータシステムから前記受信コンピュータシステムに送信された診断用データパケットのトレインに含まれる前記診断用データパケットの少なくとも一部を受信する前記動作は、診断用データパケットの一連のトレインに含まれる診断用データパケットの複数のトレインの１つである診断用データパケットのトレインから診断用データパケットを受信する動作を含むことを特徴とする請求項２４に記載の方法。
【請求項２６】
遅延した診断用データパケット数を前記受信した診断用データパケットから特定する前記動作は、受信遅延閾値内で受信されなかった診断用データパケットを特定する動作を含むことを特徴とする請求項２４に記載の方法。
【請求項２７】
前記送信コンピュータシステムから前記受信コンピュータシステムに一時的に送信された目標パケットのトレインに含まれる前記目標データパケットの少なくとも一部を受信する動作は、目標データパケットの一連のトレインに含まれる目標データパケットの複数のトレインの１つである目標データパケットのトレインから目標データパケットを受信する動作を含むことを特徴とする請求項２４に記載の方法。
【請求項２８】
遅延した目標データパケット数を前記受信した目標データパケットから特定する前記動作は、受信遅延閾値内で受信されなかった目標データパケットを特定する動作を含むことを特徴とする請求項２４に記載の方法。
【請求項２９】
遅延した目標データパケット数を遅延した診断用データパケット数と比較する前記動作は、受信遅延内に受信した目標データパケットのパーセンテージを前記受信遅延で受信した診断用データパケット数と比較する動作を含むことを特徴とする請求項２４に記載の方法。
【請求項３０】
前記送信コンピュータシステムから中間の診断用データ転送速度で前記受信コンピュータに送信された中間の診断用データパケットのトレインに含まれる前記中間の診断用データパケットの少なくとも一部を受信する動作であって、前記中間の診断用データ転送速度はボトルネック帯域幅の前記分数よりも大きく、前記アプリケーションのデータストリームのアプリケーションのデータ転送速度よりも小さい動作をさらに含むことを特徴とする請求項２４に記載の方法。
【請求項３１】
少なくとも１つの送信側データリンクと１つの受信側データリンクとを含むコンピュータネットワークデータ経路を介して受信コンピュータシステムに接続可能なネットワークである送信コンピュータシステムで使用し、前記コンピュータネットワークデータ経路に含まれる前記データリンクのいずれかを輻輳させずにアプリケーションのデータストリームを前記送信コンピュータシステムから前記受信コンピュータシステムに配信することができるか否かを判定する方法を実施するためのコンピュータプログラム製品であって、
要求されたアプリケーションのデータ転送速度を、前記送信コンピュータシステムから前記受信コンピュータシステムへの前記アプリケーションのデータストリームの配信を要求するアプリケーションから受信するためのコンピュータ実行可能命令であって、前記要求されたアプリケーションのデータ転送速度は前記アプリケーションのデータストリームの配信中に消費される前記帯域幅の推定値を表すコンピュータ実行可能命令と、
前記送信側データリンク上の送信側のデータ負荷を受動的に検出するためのコンピュータ実行可能命令と、
前記送信側のデータ負荷に基づいて、前記送信側データリンク上の使用可能な帯域幅容量が前記要求されたアプリケーションのデータ転送速度でデータのストリームをサポートするために十分であることを計算するためのコンピュータ実行可能命令と、
前記受信コンピュータシステムまたは中間のコンピュータシステムに配信するために前記コンピュータネットワークデータ経路上に第１のパケット対のデータパケットを送信するためのコンピュータ実行可能命令と、
前記第１のパケット対のデータパケットの送信後に、前記受信コンピュータシステムまたは前記中間のコンピュータシステムに配信するために前記コンピュータネットワークデータ上に対応する第２のパケット対のデータパケットを送信するためのコンピュータ実行可能命令であって、前記第２のパケット対のデータパケットは前記第１のパケット対のデータパケットと同じサイズであるコンピュータ実行可能命令と、
前記コンピュータネットワークデータ経路の前記ボトルネックデータリンク上の前記使用可能な帯域幅容量が前記要求されたアプリケーションのデータ転送速度でデータのストリームを受信するには十分であるという指示を受信するためのコンピュータ実行可能命令と、
プロービングデータパケットのトレインを、前記要求されたアプリケーションのデータ転送速度で前記アプリケーションのデータストリームを送信することをシミュレーションするように構成するために送信パラメータを特定するためのコンピュータ実行可能命令と、
前記コンピュータネットワークデータ経路上に前記アプリケーションのデータストリームを送信することをシミュレーションするために前記特定された送信パラメータに従ってプロービングデータパケットのトレインを一時的に送信するためのコンピュータ実行可能命令と、
データプロービングパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクのいずれも輻輳状態に遷移させなかったという指示を受信するためのコンピュータ実行可能命令と
を記憶している１つまたは複数のコンピュータ可読媒体を備えることを特徴とするコンピュータプログラム製品。
【請求項３２】
前記１つまたは複数のコンピュータ可読媒体が物理記憶媒体を含むことを特徴とする請求項３１に記載のコンピュータプログラム製品。
【請求項３３】
少なくとも１つの受信側データリンクと１つの送信側データリンクとを含むコンピュータネットワークデータ経路を介して送信コンピュータシステムに接続可能なネットワークである受信コンピュータシステムで使用し、前記コンピュータネットワークデータ経路に含まれる前記データリンクをいずれも輻輳させずにアプリケーションのデータストリームを前記送信コンピュータシステムから前記受信コンピュータシステムに配信できるか否かを判定する方法を実施するためのコンピュータプログラム製品であって、
前記受信側データリンク上の受信側のデータ負荷を受動的に検出するためのコンピュータ実行可能命令と、
前記受信側のデータ負荷に基づいて、前記受信側データリンク上の使用可能な帯域幅容量を計算するためのコンピュータ実行可能命令と、
前記受信側データリンク上の前記使用可能な帯域幅容量を前記送信コンピュータシステムに示すためのコンピュータ実行可能命令と、
第１のパケット対のデータパケットを第１の受信時刻に前記コンピュータネットワークデータ経路から受信するためのコンピュータ実行可能命令と、
第２のパケット対のデータパケットを第２の受信時刻に前記コンピュータネットワークデータ経路から受信するためのコンピュータ実行可能命令と、
少なくとも前記第１の受信時刻と前記第２の受信時刻との差に基づいて、前記コンピュータネットワークデータ経路の前記ボトルネックデータリンク上の前記使用可能な帯域幅容量を計算するためのコンピュータ実行可能命令と、
前記ボトルネックデータリンク上の前記使用可能な帯域幅容量を前記送信コンピュータシステムに示すためのコンピュータ実行可能命令と、
アプリケーションのデータ転送速度でアプリケーションのデータストリームをシミュレーションするためにパケットを前記コンピュータネットワークデータ経路上に送信した前記送信コンピュータシステムからプロービングデータパケットのトレイン内の前記プロービングデータパケットの少なくとも一部を受信するためのコンピュータ実行可能命令と、
プロービングデータパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクのいずれも輻輳状態に遷移させなかったことを計算するためのコンピュータ実行可能命令と、
プロービングデータパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクのいずれも輻輳状態に遷移させなかったことを前記送信コンピュータシステムに示すためのコンピュータ実行可能命令と
を記憶している１つまたは複数のコンピュータ可読媒体を備えることを特徴とするコンピュータプログラム製品。
【請求項３４】
前記１つまたは複数のコンピュータ可読媒体は物理記憶媒体を含むことを特徴とする請求項３３に記載のコンピュータプログラム製品。
【請求項３５】
アプリケーションのデータストリームを前記コンピュータネットワークデータ経路上に配信することによって前記ネットワークデータ経路が輻輳状態に遷移するか否かを判定するためにコンピュータネットワークデータ経路を能動的にプローブするよう構成されたコンピュータシステムであって、
１つまたは複数の処理装置と、
診断用データパケットのトレインを前記ボトルネック帯域幅の指定された分数で前記コンピュータネットワークデータ経路上に送信し、前記ボトルネック帯域幅の前記指定された分数は他のデータストリームを劣化させる可能性が大幅に低減された診断用データ転送速度を表し、
前記アプリケーションのデータストリームの送信を他のデータストリームを劣化させる可能性が低減される方法でシミュレーションできるように前記コンピュータネットワークデータ経路上に前記要求されたデータ転送速度で目標データパケットのトレインを一時的に送信し、
目標データパケットの前記トレインが前記コンピュータネットワークデータ経路に含まれる前記データリンクのいずれかを輻輳させるか否かを示す比較の結果を受信するように構成された送信側プロービングモジュールを記憶している１つまたは複数のコンピュータ可読媒体と
を備えることを特徴とするコンピュータシステム。
【請求項３６】
アプリケーションのデータストリームを前記コンピュータネットワークデータ経路上に配信することによって前記ネットワークデータ経路が輻輳状態に遷移するか否かを判定するためにコンピュータネットワークデータ経路を能動的にプローブするよう構成されたコンピュータシステムであって、
１つまたは複数の処理装置と、
前記送信コンピュータシステムから前記受信コンピュータシステムに送信された診断用データパケットのトレインに含まれる前記診断用データパケットの少なくとも一部を受信し、他のデータストリームを劣化させる可能性を大幅に低減するために前記診断用パケットが前記ボトルネック帯域幅の分数で受信され、
遅延した診断用データパケット数を前記受信した診断用パケットから特定し、
前記アプリケーションのデータストリームの送信を他のデータストリームを劣化させる可能性を低減する方法でシミュレーションするために、前記送信コンピュータシステムから前記受信コンピュータに一時的に送信された目標データパケットのトレインに含まれる前記目標パケットの少なくとも一部を受信し、
遅延した目標データパケット数を前記受信した目標データパケットから特定し、
目標データパケットの前記トレインが前記コンピュータネットワークデータ経路の前記データリンクのいずれかを輻輳させたか否かを判定するために、遅延した目標データパケット数を遅延した診断用データパケット数と比較するように構成された受信側プロービングモジュールを記憶している１つまたは複数のコンピュータ可読媒体と
を備えることを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク通信技術に関し、より詳細には、ネットワーク上へのデータストリームの許容を制御する機構に関する。
【背景技術】
【０００２】
コンピュータネットワークは、１つのコンピュータまたはデバイス（以下、どちらも「コンピューティングシステム」と称する）が電子データを使用する別のコンピューティングシステムとネットワークを介して通信することを可能にすることによって通信し、情報にアクセスする能力を強化してきた。コンピューティングシステム間で電子データを転送する場合、電子メッセージは、電子データに対して動作するプロトコルスタックをしばしば通過することになる。開放型システム間相互接続（「ＯＳＩ」）モデルは、プロトコルスタックを実施するためのネットワーク接続フレームワークの一例である。
【０００３】
ＯＳＩモデルは、電子データの転送に関する動作を、データ転送プロセスの所定の動作を実行するようにそれぞれが指定されている７つの別個の「層」に細分する。プロトコルスタックは場合によっては各層を実行することができるが、多くのプロトコルスタックはネットワークを介して電子データを転送する際に使用するために選択的な層のみを実施する。電子データがコンピューティングシステムから送信される場合、その電子データはアプリケーション層から発信され、中間のより低い層に、次いでネットワークに渡される。電子データは、ネットワークから受信されると、物理層に入り、中間のより高い層に渡され、次いで最終的にアプリケーション層で受信される。
【０００４】
最上層であるアプリケーション層は、アプリケーションとエンドユーザのプロセスをサポートすることを担当している。大部分のプロトコルによって組み込まれた中間の層は、アプリケーションのデータを低位層に配信するためにトランスポート層セグメントに多重化し、トランスポート層セグメントをアプリケーションに配信するためにアプリケーションのデータに逆多重化するよう最低限機能するトランスポート層である。ユーザデータグラムプロトコル（「ＵＤＰ」）は、アプリケーションとネットワークの間での適合した転送のためのデータの多重化／逆多重化をするだけの、トランスポート層で実施されるプロトコルの一例である。トランスポート層で実施されるもう１つの共通プロトコルは伝送制御プロトコル（「ＴＣＰ」）である。これは、アプリケーション層に対して終端間エラーリカバリ、再順序付け、およびフロー制御という機能も提供することができるコネクション型プロトコルである。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
適切に構成されたネットワーク上でも、ハードウェアコンポーネントの故障、ソフトウェアのエラー、リンクノイズまたは干渉、ネットワークの輻輳など、不利なネットワーク状況によってデータ損失が時々生じる場合がある。多くの場合、不利なネットワーク状況の発生は、ネットワークを介して電子データを送信することを希望するユーザにとって未知である。さらに、ユーザが不利なネットワーク状況に気付いた場合であっても、その不利な状況を修正することはしばしばユーザの制御範囲を超えている。したがって、電子データがネットワークを介して送信される場合、常にある程度はデータ損失の可能性を伴う。幸いなことに、ＴＣＰの機能は、多くの不利なネットワーク状況によって生じるデータ損失を補償し、修正することができる。したがって、ＴＣＰは、テキストとグラフィックの両方を有するウェブページを転送する場合など、データの信頼性のある転送が希望される場合には特に有用である。
【０００６】
しかし、ＴＣＰの機能を実現するために、受信および送信バッファ、輻輳制御パラメータ、ならびにシーケンスおよび確認番号（acknowledgment number）パラメータのような所定の状態情報を各ＴＣＰ接続に対して維持する必要がある。状態情報の維持はコンピューティングシステム資源（例えば、システムメモリ）を消費し、そうでなければこれらの資源を使用することができるユーザのプロセスに対してこれらの資源を無効とする。したがって、データの信頼性のある転送が重要でない場合、ネットワークを介して電子データを送信する際にアプリケーションはコンピューティングシステム資源を節約するために代わりにＵＤＰを使用することができる。
【０００７】
ＵＤＰは、コンピューティングシステム間でオーディオ／ビデオデータ（以下、「Ａ／Ｖデータ」と称する）を安定した連続的なストリーム（しばしば「ストリーミング」と称される）として転送するには特に適している。Ａ／Ｖデータの出力は、通常、以前に受信したＡ／Ｖデータをリフレッシュすることを含んでいるので、Ａ／ＶデータストリームからのＡ／Ｖデータのある程度の損失（例えば、多くのネットワークにおける固有のデータ損失）は重要ではない。例えば、ビデオフレーム用のビデオデータが受信されていない場合、表示画面には一瞬ちらつきが生じる場合があるが、更新されたビデオデータが受信されると表示画面はリフレッシュされる。したがって、ホームネットワーク、ローカルエリアネットワーク、およびワイドエリアネットワーク環境でのコンピューティングシステム間でＡ／Ｖデータストリームを転送するためにＵＤＰは頻繁に使用される。
【０００８】
残念ながら、ＵＤＰは輻輳制御に関して内蔵機構を有しない。したがって、Ａ／Ｖデータストリームを転送するためにＵＤＰを使用するコンピューティングシステムは、通常、ネットワーク輻輳によってＡ／Ｖデータストリームの送信が劣化する時点を検出することはできない。同様に、Ａ／Ｖデータストリームを転送するためにＵＤＰを使用するコンピューティングシステムは、通常、そのＡ／Ｖデータストリームが他のＡ／Ｖデータストリームを劣化させるネットワーク輻輳の原因となる時点を検出することができない。したがって、Ａ／Ｖデータストリームは他の既存のＡ／Ｖデータストリームと共にネットワーク上に送信することができ、これによってすべてのＡ／Ｖデータストリームの品質は劣化する。
【０００９】
例えば、１０メガビット／秒（「Ｍｂｐｓ」）のイーサネット（登録商標）ハブが既存の６Ｍｂｐｓの高品位テレビジョンデータストリームをサポートし、もう１つの６Ｍｂｐｓの高品位テレビジョンデータストリームが開始される場合、どちらのデータストリームも高い遅延、ジッター、およびパケット損失を被る場合がある。さらに、ＵＤＰの伝送速度は、アプリケーションがデータを生成する速度およびソースの機能（ＣＰＵ、クロック速度など）によってのみ制約されるので、複数のＡ／Ｖデータストリームに任意の所与の時点において高いデータ転送速度でデータを転送させることは稀ではない。ＴＣＰは輻輳制御機構を有するが、ＴＣＰ輻輳制御機構は、Ａ／Ｖデータストリームを送信するアプリケーションのようなリアルタイムのアプリケーションには適さない。ＴＣＰ輻輳制御機構は、送信コンピューティングシステムと受信コンピューティングシステムの間の１つまたは複数のデータリンクが過度に輻輳した場合にデータ転送速度を低下させる。しかし、データ転送速度の低下は、ある程度のパケット損失は許容できるものの最低限のデータ転送速度を必要とするリアルタイムのアプリケーションを大幅に劣化させる可能性がある。
【００１０】
さらに、ネットワークが輻輳すると、１つのＡ／Ｖデータストリームは不均衡な帯域幅量（一般に、「イーサネット（登録商標）のキャプチャ効果」と称される）を得る場合がある。したがって、新しいＡ／Ｖデータストリームは既存のＡ／Ｖデータストリームから帯域幅を「引継ぐ」可能性がある。このため、既存のＡ／Ｖデータストリームの既存のユーザには不満が残る場合がある。新しいＡ／Ｖデータストリームを開始したユーザは、既存のＡ／Ｖデータストリームを劣化させることを能動的に希望していない場合がある。しかし、開始したユーザには、新しいＡ／Ｖストリームを開始する前にそのネットワークが両方のＡ／Ｖストリームをサポートすることができるか否かを判定する方法がない場合がある。
【００１１】
さらに、ネットワーク管理者はＡ／Ｖデータストリームを制限するか、またはＡ／Ｖデータストリームが消費することのできるネットワーク帯域幅の量を限定する機構を持たない場合がある。Ａ／Ｖデータストリームから消失したデータは通常は回復されないので、多くのネットワークは、他のタイプのデータよりも優先順位の高いＡ／Ｖデータストリームを本質的に提供する。したがって、ネットワークリンクで輻輳が発生した場合、Ａ／Ｖデータストリームは優先順位が高いために帯域幅を提供される場合がある。輻輳中にＡ／Ｖデータストリームに提供される帯域幅は他の非ストリーミンデータに使用可能な帯域幅を低下させる可能性があり、これによって非ストリーミングデータの転送が劣化することになる。例えば、Ａ／Ｖデータストリームとウェブページの両方を適切に送信するには帯域幅の容量が十分でない場合、Ａ／Ｖデータストリームの送信が、ウェブページの送信を遅延または場合によっては妨害さえすることがある。
【００１２】
したがって、ネットワーク上へのデータストリームの許容を制御するシステム、方法、およびコンピュータプログラム製品が有利である。
【課題を解決するための手段】
【００１３】
従来技術の上記の問題点は、本発明の原理によって克服される。本発明は、ネットワーク上へのデータストリームの許容を制御する方法、システム、およびコンピュータプログラム製品を対象としている。送信コンピュータシステムは、少なくとも１つの送信側データリンクと１つの受信側データリンクとを含む１つまたは複数のデータリンクを有するネットワークデータ経路を介して受信コンピュータシステムに接続可能なネットワークである。送信コンピュータシステムは、要求されたアプリケーションのデータ転送速度を、送信コンピュータシステムから受信コンピュータシステムへのアプリケーションのデータストリームの配信を要求するアプリケーションから受信する。
【００１４】
送信コンピュータシステムは送信側のデータ負荷を受動的に検出する。使用可能な送信側の帯域幅を計算するには、送信側のデータ負荷を１０メガビット／秒（「Ｍｂｐｓ」）など、許容可能な送信側データリンク許容量から差し引く。使用可能な送信側の帯域幅が要求されたアプリケーションのデータ転送速度よりも大きい場合、使用可能な送信側の帯域幅はそのアプリケーションのデータストリームを受信するには十分であると見なされる。ネットワーク構成に応じて、送信側コンピュータシステムはまた、使用可能な受信側の帯域幅を計算するための命令を受信側コンピュータシステムに送信する。使用可能な受信側の帯域幅が要求されたアプリケーションのデータ転送速度よりも大きい場合、使用可能な受信側の帯域幅はそのアプリケーションのデータストリームを受信するには十分であると見なされる。使用可能な送信側の帯域幅に応じ、かつ十分であるとされる使用可能な受信側の帯域幅にも適宜応じて、送信コンピュータシステムはさらに能動的なテストを開始する。
【００１５】
送信コンピュータシステムは第１のパケット対（packet-pair）のデータパケットを、次いで第２のパケット対のデータパケットを、どちらもネットワークデータ経路を介して受信コンピュータシステムに送信する。受信コンピュータシステムは、第１の受信時刻に第１のパケット対のデータを、第２の受信時刻に第２のパケット対のデータパケットを受信する。少なくとも第１の受信時刻と第２の受信時刻での差に基づいて、ネットワークデータ経路のボトルネック帯域幅が推定される。ボトルネック帯域幅が要求されたアプリケーションのデータ転送速度よりも大きい場合、使用可能なネットワークデータ経路の帯域幅はそのアプリケーションのデータストリームを受信するには十分であると見なされる。十分とされる使用可能なネットワークデータ経路の帯域幅に応じて、送信コンピュータシステムはさらに能動的なテストを開始する。
【００１６】
送信コンピュータシステムは、要求されたアプリケーションのデータ転送速度でのアプリケーションのデータストリームの送信をシミュレーションするためにデータパケットのトレインを構成するためのパラメータを特定する。送信コンピュータシステムは、アプリケーションのデータストリームの送信をシミュレーションするために特定されたパラメータに従って一時的にデータパケットのトレインを送信する。受信コンピュータシステムは、パケットのトレインのデータパケットの少なくとも一部を受信する。受信コンピュータシステムは、データパケットのトレインがネットワークデータ経路を輻輳状態に遷移させないと推測する。
【００１７】
一部の実施形態では、送信コンピュータシステムは、最初に診断用データパケットのトレインを、推定されたボトルネック帯域幅の指定された分数（例えば、１／１００）でネットワークデータ経路上に送信する。推定されたボトルネック帯域幅の指定された分数は、ネットワークデータ経路上での輻輳の原因となる可能性を大幅に低減させた診断用データ転送速度を表す。受信コンピュータシステムは、診断用データパケットの少なくとも一部を受信する。受信した診断用データパケットから、受信コンピュータシステムは遅延した診断用データパケット数を特定する（例えば、指定された時間閾値後に受信した診断用データパケット）。
【００１８】
この場合、送信コンピュータシステムは、要求されたアプリケーションのデータ転送速度でネットワークデータ経路上に目標データパケットのトレインを一時的に送信する。目標データパケットのトレインは、ネットワークデータ経路上の輻輳の原因となる可能性を減らす方法でアプリケーションのデータストリームの送信をシミュレーションするために一時的に送信される。受信コンピュータシステムは、目標データパケットの少なくとも一部を受信する。受信された目標データパケットから、受信コンピュータシステムは遅延した目標データパケット（例えば、指定された時間閾値後に受信した目標データパケット）の数を特定する。
【００１９】
受信コンピュータシステムは、遅延した目標データパケット数を遅延した診断用データパケット数と比較する。遅延した目標データパケット数が遅延した診断用データパケット数の指定の遅延したパケット閾値内である場合、そのアプリケーションのデータストリームはネットワークデータ経路上での輻輳の原因とはならないと判定される。受信コンピュータシステムは、この比較の結果を送信コンピュータシステムに送信する。したがって、送信コンピュータシステムはアプリケーションのデータストリームをネットワークデータ経路上に送信する。
【００２０】
本発明の更なる機能および利点を以下の説明で述べる。これらの一部はこの説明から明らかになろうし、また本発明の実施によって知ることができよう。本発明の機能および利点は、首記の特許請求の範囲で特に指摘した機器および組合せによって理解し、得ることができる。本発明のこれらおよび他の機能は、以下の説明および特許請求の範囲からより十分に明らかになろうし、また以下で説明するように本発明の実施によって知ることができよう。
【発明を実施するための最良の形態】
【００２１】
本発明の上記および他の利点および特徴が得られるように説明するために、上記で概説した本発明のより詳細な説明を、添付の図面に示された具体的な実施形態を参照することによって行う。これらの図面は本発明の典型的な実施形態のみを示しており、本発明の範囲を限定するものと見なされるべきではないということを理解して、本発明を添付の図面を使用して更なる具体性および詳細をもって記述し、説明する。
【００２２】
本発明の原理は、ネットワーク上へのデータストリームの許容を制御することを提供する。より受動的なテストからより能動的なテストに遷移する一連のテストにおける適切な判定は、ネットワークデータ経路上へのデータストリームの許容を制御する。より受動的なテストは、ネットワークデータ経路の送信側データリンクでの、また適宜ネットワークデータ経路の受信側データリンクでのプロミスキャスモード測定を含むことができる。送信側データリンクおよび／または受信側データリンクがアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅を有しない場合、テストは停止し、そのアプリケーションのデータストリームはネットワーク上には送信されない。一方、送信側データリンク、および適宜受信側データリンクがそのアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅を有する場合、パケット対テストおよび／または能動ネットワークプロービングのようなより能動的なテストが実行される。
【００２３】
ネットワークデータ経路のボトルネック帯域幅を計算するために、適宜、パケット対テストが実行される。ボトルネック帯域幅が、アプリケーションのデータストリームをサポートするために十分でない場合、テストは停止し、そのアプリケーションのデータストリームはネットワーク上には送信されない。一方、ボトルネック帯域幅がアプリケーションのデータストリームをサポートするために十分である場合、能動ネットワークプロービングのような、より能動的なテストが実行される。
【００２４】
アプリケーションのデータストリームがネットワークデータ経路上に送信される場合、適宜、アプリケーションのデータストリームがネットワークデータ経路上の輻輳の原因となる可能性を特定するためにネットワークデータ経路が能動的にプローブされる（例えば、データパケットのトレインを送信することにより）。輻輳の原因となる可能性が増大した場合、アプリケーションのデータストリームはそのネットワーク上には配信されない。一方、輻輳の原因となる可能性が低減したことが特定された場合、アプリケーションのデータストリームはそのネットワークデータ経路上に配信することができる。
【００２５】
本発明の範囲内の実施形態は、記憶したコンピュータ実行可能命令またはデータ構造を搬送しまたは有するコンピュータ可読媒体を含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータシステムによってアクセス可能ないかなる使用可能な媒体であってもよい。限定ではなく一例として、このようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光学ディスク記憶のような物理記憶媒体、磁気ディスク記憶または他の磁気記憶装置、もしくは所望のプログラムコード手段をコンピュータ実行可能命令、コンピュータ可読命令、またはデータ構造の形式で搬送または記憶するために使用することができ、かつ汎用または専用コンピュータシステムによってアクセスすることができるいかなる他の媒体をも含むことができる。
【００２６】
本明細書および特許請求の範囲では、「ネットワーク」は、コンピュータシステムおよび／またはモジュールの間で電子データを転送することを可能にする１つまたは複数のデータリンクであると定義される。ネットワークまたは他の通信接続（ハードワイヤード、無線、またはハードワイヤードと無線の組合せのいずれか）を介して情報がコンピュータシステムに転送される場合、その接続はコンピュータ可読媒体であると適切に見なされる。したがって、いかなるこのような接続でもコンピュータ可読媒体と適切に称される。上記の組合せは、コンピュータ可読媒体の範囲内にも含まれるべきである。コンピュータ実行可能命令は、例えば、汎用コンピュータシステムまたは専用コンピュータシステムに所定の機能または一群の機能を実行させる命令およびデータを含む。コンピュータ実行可能命令は、バイナリ、アセンブリ言語のような中間フォーマット命令、または場合によってはソースコードであってよい。
【００２７】
本明細書および特許請求の範囲では、「コンピュータシステム」は、電子データ上で動作を実行するために共同して機能する、１つまたは複数のソフトウェアモジュール、１つまたは複数のハードウェアモジュール、またはこれらの組合せであると定義される。例えば、コンピュータシステムの定義は、パーソナルコンピュータのハードウェアコンポーネント、並びにパーソナルコンピュータのオペレーティングシステムのようなソフトウェアモジュールを含む。モジュールの物理的なレイアウトは重要ではない。コンピュータシステムは、ネットワークを介して結合される１つまたは複数のコンピュータを含むことができる。同様に、内部モジュール（メモリおよびプロセッサなど）が電子データに対して動作を実行するために共同して機能する場合、コンピュータシステムは単一の物理装置（携帯電話またはパーソナルデジタルアシスタント「ＰＤＡ」など）を含むことができる。
【００２８】
本明細書および特許請求の範囲では、「データストリーム」は、転送されたデータの部分を受信した通りに出力することができるように（データストリームが完了する前に受信される場合でも）、安定した連続的なストリームで転送されるデータであると定義される。データストリームは、受信コンピュータシステムで出力するために送信コンピュータシステムから配信されるオーディオおよび／またはビデオデータストリーム（例えば、オーディオ／ビデオ「Ａ／Ｖ」データストリーム）であってよい。データストリームは、生のラジオまたはテレビジョン放送データのデータストリームのような生のデータストリームであってよい。同様に、データストリームは、記憶したモーションピクチャエキスパートグループ（「ＭＰＥＧ」）ファイルが選択された場合に生じるデータストリームのように、送信コンピュータシステムで記憶されているファイルが受信コンピュータシステムに転送される場合に生じる場合がある。データストリームに含まれるデータは、そのデータの出力後に受信コンピュータシステムで保存しても保存しなくてもよい。データストリームは、ユーザデータグラムプロトコル（「ＵＤＰ」）、リアルタイムトランスポートプロトコル（「ＲＴＰ」）、およびリアルタイムストリーミングプロトコル（「ＲＴＳＰ」）のような幅広い種類のプロトコルまたはプロトコルの組合せを使用して転送することができる。
【００２９】
本明細書および特許請求の範囲では、「データ転送速度」は、データがデータリンク上に、データリンクを介して転送され（または転送されることになっており）、もしくはデータリンクから受信される速度であると定義される。データ転送速度は、メガビット／秒（「Ｍｂｐｓ」）およびメガバイト／秒（「ＭＢｐｓ」）のような様々な異なる単位で測定することができる。例えば、アプリケーションモジュール２０２は、オーディオデータストリームを２Ｍｂｐｓのデータ転送速度でコンピュータシステム２２１に（データリンク２７２、２７１を介して）送信させることができる。データストリームがデータリンク上に送信される前に、アプリケーションモジュールは、ネットワークプロービングモジュールに対して推定されたデータストリームのピークのデータ転送速度を示すことができる。
【００３０】
本明細書および特許請求の範囲では、「データハブ」は、他のコンピュータシステムに対する共通接続点（有線または無線）として機能し、受信したデータパケットをハブのすべてのポートから送出することによって、接続されたコンピュータシステム間で電子データを転送するコンピュータシステムであると定義される。すなわち、データパケットがデータハブの１つのポートで受信される場合、そのデータハブはそのパケットをデータハブの他のポートすべてにコピーする。その結果、データハブに接続された１つのデータリンクから受信したデータパケットは、その後、そのデータハブに接続された他のデータリンクすべてに転送される。例えば、データリンク２７１を介してデータハブ２５０で受信したデータパケットは、その後、データリンク２７１、２７２、２７３、および２７７に送信される。
【００３１】
本明細書および特許請求の範囲では、「データスイッチ」は、他のコンピュータシステムに対して共通の接続点（有線または無線）として機能し、受信したデータパケットをデータパケットに含まれる宛先アドレスに対応するポートから送出することによって、接続されたコンピュータシステム間で電子データを転送するコンピュータシステムであると定義される。すなわち、データパケットがデータスイッチの１つのポートで受信されると、そのデータスイッチはデータパケットの宛先アドレス（例えば、インターネットプロトコル（「ＩＰ」）アドレス）を読み取り、そのデータパケットを宛先アドレスに対応するポートに送信する。その結果、１つのデータリンクから受信したデータパケットは、その後、宛先アドレスに関連付けられた宛先コンピュータシステムにより近接したデータリンクに転送される。
【００３２】
宛先コンピュータシステムにより近接したデータリンクは、宛先コンピュータシステムに接続されたデータリンクであってよい。例えば、データスイッチ２５５は、コンピュータシステム２５１に対応する宛先アドレスを有するデータパケットを受信することができる。したがって、データスイッチ２５５は、データリンク２７９上にデータパケットを送信することができる。一方、宛先コンピュータシステムにより近接したデータリンクは、送信コンピュータシステムと宛先コンピュータシステムとの間の中間のデータリンクであってよい。例えば、コンピュータシステム２１１は、コンピュータシステム２４１に関連付けられた宛先アドレスにデータパケットを送信することができる。したがって、データハブ２５０は、データリンク２７７（並びにデータリンク２７１、２７２、２７３）上にデータパケットを反復する。データスイッチ２５５は、データリンク２７７からデータパケットを受信し、データパケットの宛先アドレスを読み取ることができる。したがって、データスイッチ２５５は、データパケットをデータリンク２７８に送信することができる（データスイッチ２６０がデータリンク２７８からデータパケットを受信して、そのデータパケットをデータリンク２７６に送信することができた後）。
【００３３】
当業者ならば、本発明が、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロコンピュータベースの、またはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、ページャなどを含めて多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境で実施することができる。本発明は、（ハードワイヤードデータリンク、無線データリンク、またはハードワイヤードデータリンクと無線データリンクの組合せによって）ネットワークを介してリンクされるローカルおよび遠隔コンピュータシステムがどちらもタスクを実行する場合、分散型システム環境でも実施することができる。分散型システム環境では、プログラムモジュールは、ローカルおよび遠隔記憶装置の両方に配置することができる。
【００３４】
図１および以下の解説は、本発明を実施することができる適切なコンピューティング環境の簡潔かつ一般的な説明を提供することを意図している。必須ではないが、本発明は、コンピュータシステムによって実行されるプログラムモジュールのようなコンピュータ実行可能命令の一般的な状況で説明することにする。一般に、プログラムモジュールは、特定タスクを実行し、または特定抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連データ型、およびプログラムモジュールは、本明細書で開示する方法の動作を実行するためのプログラムコード手段の例を表す。
【００３５】
図１を参照すると、本発明を実施するためのシステム例は、処理装置１２１、システムメモリ１２２、およびシステムメモリ１２２を含む様々なシステムコンポーネントを処理装置１２１に結合するシステムバス１２３を含むコンピュータシステム１２０の形式をとる汎用コンピューティング装置を含んでいる。処理装置１２１は、本発明の機能を含めてコンピュータシステム１２０の機能を実施するように設計されたコンピュータ実行可能命令を実行することができる。システムバス１２３は、メモリバスまたはメモリコントローラを含む複数のタイプのバス構造、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスのいずれかであってよい。システムメモリは、読み取り専用メモリ（「ＲＯＭ」）１２４およびランダムアクセスメモリ（「ＲＡＭ」）１２５を含む。起動時などにコンピュータシステム１２０内の素子間で情報の転送を支援する基本ルーチンを含む基本入出力システム（「ＢＩＯＳ」）１２６は、ＲＯＭ１２４に記憶することができる。
【００３６】
コンピュータシステム１２０は、磁気ハードディスク１３９から読み取り、またこれに書き込むための磁気ハードディスク１２７、取り外し可能な磁気ディスク１２９から読み取り、またこれに書き込むための磁気ディスクドライブ１２８、およびＣＤ−ＲＯＭまたは他の光媒体のような取り外し可能な光ディスク１３１から読み取り、またこれに書き込むための光ディスクドライブ１３０も含むことができる。磁気ハードディスクドライブ１２７、磁気ディスクドライブ１２８、および光ディスクドライブ１３０は、それぞれハードディスクドライブインターフェース１３２、磁気ディスクドライブインターフェース１３３、および光ドライブ１３４インターフェースによってシステムバス１２３に接続される。これらドライブおよびこれらの関連するコンピュータ可読媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶をコンピュータシステム１２０に提供する。本明細書に記載の実施例は磁気ハードディスク１３９、取り外し可能な磁気ディスク１２９および取り外し可能な光ディスク１３１を使用しているが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどを含めてデータを記憶するための他のタイプのコンピュータ可読媒体を使用することができる。
【００３７】
１つまたは複数のプログラムモジュールを含むプログラムコード手段は、オペレーティングシステム１３５、１つまたは複数のアプリケーションプログラム１３６、他のプログラムモジュール１３７、およびプログラムデータ１３８を含めて、ハードディスク１３９、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４またはＲＡＭ１２５に記憶することができる。ユーザは、コマンドおよび情報をキーボード１４０、ポインティングデバイス１４２、またはマイクロフォン、ジョイスティック、ゲームパッド、スキャナのような他の入力装置（図示せず）を介してコンピュータシステム１２０に入力することができる。これらおよび他の入力装置は、システムバス１２３に結合された入出力インターフェース１４６を介して処理装置１２１に接続することができる。入出力インターフェース１４６は、シリアルポートインターフェース、ＰＳ／２インターフェース、パラレルポートインターフェース、ユニバーサルシリアルバス（「ＵＳＢ」）インターフェース、または電気電子技術者協会（「ＩＥＥＥ」）１３９４インターフェース（すなわち、ＦｉｒｅＷｉｒｅインターフェース）のような幅広い種類の異なるインターフェースのどれでも論理的に表し、場合によっては異なるインターフェースの組合せを論理的に表すことができる。
【００３８】
モニタ１４７または他の表示装置もビデオインターフェース１４８を介してシステムバス１２３に接続される。スピーカ１６９または他のオーディオ出力装置もオーディオインターフェース１４９を介してシステムバス１２３に接続される。プリンタのような他の周辺出力装置（図示せず）もコンピュータシステム１２０に接続することができる。
【００３９】
コンピュータシステム１２０は、事務所規模または企業規模のコンピュータネットワーク、ホームネットワーク、イントラネット、および／またはインターネットのようなネットワークに接続される。コンピュータシステム１２０は、そのようなネットワークを介した遠隔コンピュータシステム、遠隔アプリケーション、および／または遠隔データベースのような外部ソースとデータを交換することができる。
【００４０】
コンピュータシステム１２０は、コンピュータシステム１２０が外部ソースからデータを受信し、かつ／または外部ソースにデータを送信するネットワークインターフェース１５３を含む。図１に示すように、ネットワークインターフェース１５３は、データリンク１５１を介した遠隔コンピュータシステム１８３とのデータの交換に役立つ。ネットワークインターフェース１５３は、ネットワークインターフェースカードおよび対応するネットワークドライバインターフェース規約（「ＮＤＩＳ」）スタックのような１つまたは複数のソフトウェアおよび／またはハードウェアモジュールを論理的に表すことができる。データリンク１５１は、ネットワークの部分（例えば、イーサネット（登録商標）セグメント）を表し、遠隔コンピュータシステム１８３はネットワークのノードを表す。例えば、遠隔コンピュータシステム１８３は、データストリームをコンピュータシステム１２０に送信する送信コンピュータシステムであってよい。一方、遠隔コンピュータシステム１８３は、送信されたデータストリームをコンピュータシステム１２０から受信する受信コンピュータシステムであってよい。
【００４１】
同様に、コンピュータシステム１２０は、コンピュータシステム１２０が外部ソースからデータを受信し、外部ソースにデータを送信する入出力インターフェース１４６を含む。入出力インターフェース１４６はデータリンク１５９を介してモデム１５４（例えば、標準型モデム、ケーブルモデム、またはデジタル加入者回線（「ＤＳＬ」モデム））に結合され、これによってコンピュータシステム１２０は外部ソースからデータを受信し、かつ／またはこれにデータを送信する。図１に示すように、入出力インターフェース１４６およびモデム１５４は、データリンク１５２を介した遠隔コンピュータシステム１９３とのデータの交換に役立つ。データリンク１５２はネットワークの部分を表し、遠隔コンピュータシステム１９３はネットワークのノードを表す。例えば、遠隔コンピュータシステム１９３は、データストリームをコンピュータシステム１２０に送信する送信コンピュータシステムであってよい。一方、遠隔コンピュータシステム１９３は、コンピュータシステム１２０から送信されたデータストリームを受信する受信コンピュータシステムであってよい。
【００４２】
図１は本発明に適した動作環境を表すが、本発明の原理は適宜適切な修正を加えて本発明の原理を実施することができるいかなるシステムにでも使用することができる。図１に示した環境は、説明のみを意図しており、本発明の原理を実施することができる幅広い種類の環境の小部分すら表すものではない。
【００４３】
本発明によれば、アプリケーションモジュール、ネットワークインターフェースモジュール、およびプロービングモジュールは、データパケット、送信パラメータ、およびデータストリームを含めて関連するデータと同様に、コンピュータシステム１２０に関連付けられたコンピュータ可読媒体のどれにでも記憶し、またそこからアクセスすることができる。例えば、そのようなモジュールの部分および関連するプログラムデータの部分を、システムメモリ１２２に記憶するためにオペレーティングシステム１３５、アプリケーションプログラム１３６、プログラムモジュール１３７、および／またはプログラムデータ１３８に含めることができる。
【００４４】
磁気ハードディスク１３９のような大容量記憶装置がコンピュータシステム１２０に結合されている場合、そのようなモジュールおよび関連するプログラムデータもその大容量記憶装置に記憶することができる。ネットワーク接続環境では、コンピュータシステム１２０に関連して示されたプログラムモジュールまたはその一部を、遠隔コンピュータシステム１８３および／または遠隔コンピュータシステム１９３に関連付けられたシステムメモリおよび／または大容量記憶装置のような遠隔記憶装置に記憶することができる。そのようなモジュールの実行は、上述のように分散型環境で行うことができる。
【００４５】
図２は、ネットワーク上へのデータストリームの許容を制御することに役立つネットワークアーキテクチャ２００の一例を示す。ネットワークアーキテクチャ２００には、コンピュータシステム２０１、２１１、２２１、２３１、２４１、および２５１が含まれる。コンピュータシステム２０１、２１１、および２２１は、それぞれ対応するデータリンク２７２、２７３、および２７１によってデータハブ２５０に接続される。コンピュータシステム２０１、２１１、および２２１は、電子データを送信し電子データを受信するためにそれぞれ対応するネットワークインターフェースモジュール２０３、２１３、および２２３を含む。
【００４６】
データハブ２５０はデータリンク２７７によってデータスイッチ２５５に接続されている。同様に、コンピュータシステム２５１はデータリンク２７９によってデータスイッチ２５５に接続されている。コンピュータシステム２５１は、電子データを送信し電子データを受信するためのネットワークインターフェースモジュール２５３を含む。データスイッチ２５５は、データリンク２７８によってデータスイッチ２６０に接続されている。コンピュータシステム２３１および２４１は、それぞれ対応するデータリンク２７５および２７６によってデータスイッチ２６０に接続されている。コンピュータシステム２３１および２４１は、それぞれ電子データをデータスイッチ２６０に送信し、電子データをそこから受信するための対応するネットワークインターフェースモジュール２３３および２４３を含む。
【００４７】
データストリーム（例えば、ＵＤＰデータストリーム）は、ネットワークアーキテクチャ２００のコンピュータシステム間およびネットワークアーキテクチャ２００のコンピュータシステムとネットワークアーキテクチャ２００外部のコンピュータシステム（図示せず）との間で転送することができる。ネットワークアーキテクチャ２００のコンピュータシステムは、データストリームが別のコンピュータシステムの対応する受信アプリケーションに転送されることを要求する１つのコンピュータシステムでの送信アプリケーションの結果としてデータストリームを転送することができる。例えば、アプリケーションモジュール２１２は、アプリケーションモジュール２４２にアプリケーションのデータストリームの転送を要求することができる。その結果、ネットワークインターフェースモジュール２１３は、適切なアプリケーションのデータを含んでおり、コンピュータシステム２４１に対応する宛先アドレス（例えば、ＩＰアドレス）を有するデータストリームをデータリンク２７３上に送信することができる。ネットワークインターフェースモジュール２４３は、送信されたデータストリームをデータリンク２７６から受信し、そこに含まれているアプリケーションのデータをアプリケーション２４２に配信させることができる。
【００４８】
非ストリーミングデータは、ネットワークアーキテクチャ２００のコンピュータシステム間およびネットワークアーキテクチャ２００のコンピュータシステムとネットワークアーキテクチャ２００外部のコンピュータシステムとの間で転送することもできる。例えば、コンピュータシステム２５１は、データを非ストリーミングによる方法で他のコンピュータシステムに転送するサーバであってよい。別のコンピュータシステムがコンピュータシステム２５１に記憶されているファイルを要求する場合、ネットワークインターフェースモジュール２５３は、要求されたファイルを含んでおり、要求側コンピュータシステムの宛先アドレスを有するデータパケットを送信することにより応答することができる。例えば、アプリケーションモジュール２２２は、コンピュータシステム２５１に記憶されているウェブページを要求するウェブブラウザであってよい。したがって、コンピュータシステム２５１は、コンピュータシステム２２１に配信するためにデータリンク２７９上に要求されたウェブページを転送することにより応答することができる。ネットワークインターフェースモジュール２５３は、ウェブページを含むＨＴＴＰメッセージ（例えば、１つまたは複数の通信制御プロトコル（「ＴＣＰ」）セグメントとして）をコンピュータシステム２２１に送信することによって、要求されたウェブページの送信に役立つことができる。ネットワークインターフェースモジュール２２３は、データリンク２７１からウェブページを受信し、そのウェブページをアプリケーションモジュール２２２に配信させることができる。
【００４９】
したがって、ネットワークアーキテクチャ２００のデータリンクは、ストリーミングおよび非ストリーミングデータがデータリンクを介して転送されることによるデータ負荷の変動を経験する場合がある。データがデータリンク上に送信されると、そのデータリンクの帯域幅の一部が消費され、それによってそのデータリンクの使用可能な帯域幅は減る。反対に、データリンクからデータが除去されると（例えば、ファイル転送完了後、またはデータストリーム終了後）、そのデータリンクの帯域幅の一部は解放され、それによってそのデータリンクの使用可能な帯域幅は増える。
【００５０】
図３Ａおよび３Ｂは、送信コンピュータシステムがネットワークデータ経路を輻輳せずにアプリケーションのデータストリームを受信コンピュータシステムに配信することができると推定するための方法３００の一例である流れ図を示す。方法３００を、ネットワークアーキテクチャ２００に示すコンピュータシステムに関して説明する。
【００５１】
方法３００は、要求されたアプリケーションのデータ転送速度を受信する動作を含む（動作３０１）。動作３０１は、送信コンピュータシステムから受信コンピュータシステムへのアプリケーションのデータストリームの配信を要求するアプリケーションから、要求されたアプリケーションのデータ転送速度を受信することを含むことができる。例えば、プロービングモジュール２０４は、アプリケーションモジュール２０２がコンピュータシステム２０１からコンピュータシステム２２１またはコンピュータシステム２３１に配信されることを要求しているアプリケーションのデータストリームに対するアプリケーションのデータ転送速度を受信することができる。要求されたアプリケーションのデータ転送速度は、データストリームの送信中に使用されるべきピーク転送率であってよい。
【００５２】
方法３００は、プロミスキャス（promiscuous）モード測定を実行するための機能的な結果志向ステップを含む（ステップ３１２）。ステップ３１２は、プロミスキャスモード測定を実行する結果を達成するためのいかなる対応する動作でも含むことができる。しかし、図３に示した例では、ステップ３１２は、送信側のデータ負荷を受動的に検出する対応する動作を含む（動作３０２）。動作３０２は、送信側データリンクの送信側のデータ負荷を受動的に検出することを含むことができる。
【００５３】
送信側コンピュータシステムは、データストリームを送信すべき送信コンピュータシステムであってよい。例えば、アプリケーションモジュール２０２からの要求されたアプリケーションのデータ速度の受信に応答して、プロービングモジュール２０４は、データリンク２７２を介して転送されるすべてのデータパケットを受信するようネットワークインターフェースモジュール２０３を構成することができる。少なくともデータパケットが受信される周波数と受信したデータパケットのサイズとに基づいて、プロービングモジュール２０４は、データリンク２７２上のデータ負荷を推定することができる。コンピュータシステム２０１はデータハブ２５０に接続されているので、データリンク２７２上のデータ負荷はデータリンク２７１、２７２、２７３および２７７上で送信中のすべてのデータパケットから計算される。例えば、コンピュータシステム２２１は第１のデータストリームをコンピュータシステム２１１に３Ｍｂｐｓで転送し、第２のデータストリームをデータスイッチ２５５に（例えば、コンピュータシステム２３１への配信のために）２Ｍｂｐｓで転送していてよい。したがって、データリンク２７２上のデータ負荷は少なくとも５Ｍｂｐｓとなる。
【００５４】
別法として、送信側コンピュータシステムは、送信コンピュータシステムと共に共通データハブに接続されているコンピュータシステムであってよい。例えば、コンピュータシステム２０１（送信コンピュータシステム）はデータ経路２９１を介してデータストリームをコンピュータシステム２３１に送信する場合、プロービングモジュール２０４はプロービングモジュール２２４に送信側のデータ負荷を受動的に検出するための命令を送信することができる。したがって、プロービングモジュール２２４は、データリンク２７１を介して転送されるすべてのデータパケットを受信するようネットワークインターフェースモジュール２２３を構成することができる。データハブ２５０はすべての接続されたデータリンクからすべての他の接続されているデータリンク（データリンク２７１、２７２、２７３、および２７７）にデータパケットを送信するので、データリンク２７１上のデータ負荷はデータリンク２７２上のデータ負荷と同じになる。
【００５５】
データ負荷の受動的な検出は、データリンク上にデータパケットをまったく送信せずに行うことができる。例えば、プロービングモジュール２０４は、データリンク２７２上にデータパケットをまったく送信せずにデータリンク２７２上のデータ負荷を検出することができる。したがって、データリンク２７２上のデータ負荷の受動的な検出がデータハブ２５０を介して転送中の他のデータを劣化させる危険性は大幅に削減される。
【００５６】
ステップ３１２は、送信側データリンクの使用可能な帯域幅容量が十分であると計算することに対応する動作も含む（動作３０３）。動作３０３は、検出された送信側のデータ負荷に基づいて、送信側データリンクで使用可能な帯域幅容量が要求されたアプリケーションのデータ転送速度でデータストリームを受信するために十分であるということを計算することを含むことができる。データリンクに対する使用可能な帯域幅容量は等式１に従って計算することができる。  
使用可能なリンク帯域幅＝［（許容可能なローディング）・（リンク容量）］−データリンク負荷                                                                等式１
【００５７】
許容可能なローディング（Acceptable_Loading）は、データストリームが消費することのできる使用可能な帯域幅のパーセンテージを表すためにネットワーク管理者またはユーザの希望で選択することのできる値である。データストリームに対する低減された使用可能な帯域幅を許可することが希望される場合、許容可能なローディング値を低減することができる。例えば、データリンクの容量の３０％をデータストリームのために使用することが希望される場合、許容可能なローディング値「．３」を選択することができる。一方、データストリームのために増加した使用可能な帯域幅を許可することが希望される場合、許容可能なローディング値を増加させることができる。例えば、データリンクの容量の９０％をデータストリームのために使用することが希望される場合、許容ローディング値を「．９」にセットすることができる。データリンクの全容量をデータストリームのために使用することが希望される場合、許容ローディング値を「１」にセットすることができる。許容ローディング値は、データリンクを輻輳させずにデータストリームのためにデータリンクの容量をできるだけ多く使用するよう選択することができる。一方、使用可能な帯域幅の一部の量を非ストリーミングデータの送信用に消費するよう許容可能なローディング値を選択することができる。
【００５８】
リンク容量（Link_Capacity）は、データリンク（例えば、データリンク２７２）の定格データ容量を（例えば、Ｍｂｐｓで）表す値である。リンク容量は、イーサネット（登録商標）（ＩＥＥＥ８０２．３標準）、または無線（ＩＥＥＥ８０２．１１標準）のような、データリンクを実施するために使用される技術によって異なる場合がある。さらに、特定の技術の実施態様は異なる定格データ容量を有する場合がある。例えば、イーサネット（登録商標）データリンクは、定格データ容量、１０Ｍｂｐｓ、１００Ｍｂｐｓ、または１，０００Ｍｂｐｓ（ギガビット）であってよい。同様に、ＩＥＥＥ８０２．１１データリンクは、定格データ容量、１１Ｍｂｐｓ、５．５Ｍｂｐｓ、２Ｍｂｐｓ、または１Ｍｂｐｓであってよい。しかし、本発明は上記ネットワーク技術および定格データ容量に限定されないということを理解されたい。当業者には、本明細書を検討すれば、本発明を実施する際には、上記のネットワーク技術および定格データ容量に加えて幅広い種類のネットワーク技術および定格データ容量を使用することができるということが明らかになろう。
【００５９】
データリンク負荷（Data_Link_Load）は、送信（または受信）側のデータリンク上の受動的に検出された送信（または受信）側のデータ負荷のような、データリンク上のデータ負荷を表す値である。
【００６０】
等式１の値は、使用可能なリンク帯域幅（Available_Link_Bandwidth）の値を計算するために等式１の算術演算子に従って結合することができる。すなわち、データリンク負荷値は、許容可能なローディング値にリンク許容値を乗じた積から差し引かれる。例えば、データリンク２７２は、リンク容量値が１０Ｍｂｐｓ、データリンク負荷値が２Ｍｂｐｓであってよい。さらに、ネットワーク管理者またはネットワークアーキテクチャ２００のユーザが、データリンク２７２のために許容可能なローディング値として「．７」を選択している場合がある。したがって、本実施例では、データリンク２７２のための使用可能なリンク帯域幅値は［（．７）・（１０Ｍｂｐｓ）］−２Ｍｂｐｓまたは５Ｍｂｐｓに等しくなる。
【００６１】
送信側データリンクに対する計算された使用可能なリンク帯域幅値が、要求されたアプリケーションのデータ転送速度よりも小さい場合、この送信側データリンクは、要求されたアプリケーションのデータ速度でアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅容量を有していないと見なされる。直前の実施例を参照すると、データリンク２７２は、５Ｍｂｐｓよりも大きい、いかなるデータ速度でアプリケーションのデータストリームを受信するために十分な使用可能な帯域幅を有しているとは見なされない。データリンクのリンク容量よりも大きいデータ転送速度全体（すなわち、データリンクのデータ負荷総計）でデータリンクを介してデータを転送することを許可することにより、データリンクを輻輳させる可能性は増大する。したがって、データリンクが要求されたアプリケーションのデータ速度をサポートするために十分な使用可能な帯域幅容量を有しない場合、アプリケーションのデータストリームはデータリンク上に送信されず、テストを終了することができる。有益な結果として、データリンクを輻輳させる可能性の増大したデータストリームがデータリンク上に送信されることが防止される。
【００６２】
一方、送信側データリンクに対して計算された使用可能なリンク帯域幅値が要求されたアプリケーションのデータ転送速度よりも大きい（または等しい）場合、送信側データリンクは、要求されたアプリケーションのデータ速度でアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅容量を有していると見なされる。直前の実施例を参照すると、データリンク２７２は、５Ｍｂｐｓと同等またはこれより低いいかなるアプリケーションのデータ速度でもサポートするために十分な使用可能な帯域幅を有していると見なされる。データリンクのリンク容量と同等またはこれより低いデータ転送速度全体でデータリンクを介してデータを転送することを許可することによって、データリンクを輻輳させる可能性は減少する。したがって、要求されたアプリケーションのデータ速度をデータリンクがサポートできる場合、アプリケーションのデータストリームがネットワークデータ経路を輻輳させる可能性をより正確に決定するために、パケット対テストおよび／または能動ネットワークプロービングのようなより能動的なテストを実行することができる。
【００６３】
ネットワーク構成に応じて、送信側コンピュータシステムは受信側コンピュータシステムに受信側のデータ負荷を受動的に検出するための命令を送信することもできる（動作３０４）。送信側データリンク（例えば、データリンク２７２）および受信側データリンク（例えば、データリンク２７１）は同じデータハブ（例えば、データハブ２５０）に接続され、同じリンク容量および許容可能なローディング値を有していてよい。したがって、送信側データリンクと受信側データリンクの両方に対して使用可能なローカル帯域幅を検出することは冗長であると見なされる場合がある。したがって、これらのネットワーク構成では、送信コンピュータシステムは受信側コンピュータシステムに命令を送信しなくてよい。例えば、アプリケーションモジュール２０２がアプリケーションモジュール２２２にデータストリームの送信を要求する場合、プロービングモジュール２０４はプロービングモジュール２２４に命令を送信しなくてよい。
【００６４】
一方、送信側データリンク（例えば、データリンク２７２）および受信側データリンク（例えば、データリンク２７５）はスイッチによって分離され、かつ／またはリンク容量が異なり、かつ／または許容可能なローディング値が異なるネットワークデータ経路（例えば、データ経路２９１）の終端にある。したがって、送信側データリンクと受信側データリンクの両方に対する使用可能なローカル帯域幅を検出することは冗長であるとは見なされない場合がある。したがって、これらのネットワーク構成では、送信コンピュータシステムは受信側コンピュータシステムに命令を送信することができる。例えば、アプリケーションモジュール２０２がデータストリームの送信をアプリケーションモジュール２３２に要求した場合、プロービングモジュール２０４はプロービングモジュール２３４に命令を送信することができる。
【００６５】
方法３００は、受信コンピュータシステムがプロミスキャスモード測定に参加するための機能的な結果志向ステップを適宜含む（ステップ３２４）。ステップ３２４は、プロミスキャスモード測定に参加する結果を達成するためのいかなる対応する動作をも含むことができる。しかし、図３に示した例では、ステップ３２４は、受信側コンピュータシステムが受信側のデータ負荷を受動的に検出することに対応する動作を含む（動作３１４）。動作３１４は、受信側データリンクでの受信側のデータ負荷を受動的に検出することを含むことができる。受信側コンピュータシステムは、データストリームを受信すべき受信コンピュータシステムであってよい。例えば、コンピュータシステム２３１がデータ経路２９１を介してコンピュータシステム２０１からデータストリームを受信すべき場合、プロービングモジュール２３２は、データリンク２７５を介して転送されたすべてのデータパケットを受信するようネットワークインターフェースモジュール２３３を構成することができる。
【００６６】
別法として、受信側コンピュータシステムは、受信コンピュータシステムと共に共通データハブに接続されているコンピュータシステムであってよい。例えば、コンピュータシステム２３１（送信コンピュータシステム）がデータ経路２９１を介してコンピュータシステム２０１（受信コンピュータシステム）にデータストリームを送信すべき場合、プロービングモジュール２３４はプロービングモジュール２２４に受信側のデータ負荷を受動的に検出するための命令を送信することができる。したがって、プロービングモジュール２２４は、データリンク２７１を介して転送されるすべてのデータパケットを受信するようネットワークインターフェースモジュール２２３を構成することができる。データハブ２５０はすべての接続されたデータリンクからすべての他の接続されたリンク（データリンク２７１、２７２、２７３、および２７７）にデータパケットをコピーするので、２７１上のデータ負荷はデータリンク２７２上のデータ負荷と同じになる。
【００６７】
ステップ３２４は、使用可能な受信側帯域幅容量を計算することに対応する動作を含む（動作３１５）。動作３１５は、検出された受信側のデータ負荷に基づいて受信側コンピュータシステムが受信側データリンクの使用可能な帯域幅容量を計算することを含むことができる。受信側コンピュータシステムは、等式１に従って受信側のデータ負荷を計算することができる。方法３００は、送信コンピュータシステムに対して使用可能な受信側の帯域幅容量を示す動作を含む（動作３１６）。動作３１６は、受信側コンピュータシステムが送信コンピュータシステムに対して受信側データリンクの使用可能な帯域幅を示すことを含むことができる。例えば、コンピュータシステム２３１がコンピュータシステム２０１からデータストリームを受信すべき場合、コンピュータシステム２３１は、コンピュータシステム２０１に対してデータリンク２７５の使用可能な帯域幅容量を示すことができる。
【００６８】
方法３００は、受信側データリンクの使用可能な帯域幅容量が十分であるという指示を受信する送信側コンピュータシステムの動作を含む（動作３０５）。動作３０５は、受信側データリンクの使用可能な帯域幅容量の指示を受信側コンピュータシステムから受信することを含むことができる。受信側データリンクに対する（例えば、等式１に従って）計算された使用可能なリンク帯域幅値が要求されたアプリケーションのデータ転送速度よりも小さい場合、受信側データリンクは、要求されたアプリケーションのデータ速度でアプリケーションのデータストリームをサポートするには十分な使用可能な帯域幅容量を有していないと見なされる。したがって、適宜、アプリケーションのデータストリームは送信されず、テストを終了することができる。一方、受信側データリンクに対して計算された使用可能なリンク帯域幅値が、要求されたアプリケーションのデータ転送速度よりも大きい（または等しい）場合、受信側データリンクは、要求されたアプリケーションのデータ速度でアプリケーションのデータストリームをサポートするために十分に使用可能な帯域幅容量を有していると見なされる。したがって、アプリケーションのデータストリームがネットワークデータ経路を輻輳させる可能性をより正確に決定するために、適宜、パケット対テストおよび／または能動的なネットワークプロービングのようなより能動的なテストを実行することができる。
【００６９】
方法３００は、パケット対テストを開始するための機能的な結果志向ステップを含む（ステップ３１３）。ステップ３１３は、パケット対テストを開始する結果を達成するためのいかなる対応する動作をも含むことができる。しかし、図３に示した実施例では、ステップ３１３は、第１のパケット対のデータパケットを送信することに対応する動作を含む（動作３０６）。動作３０６は、送信側コンピュータシステムが、受信側コンピュータシステムに配信するためにネットワークデータ経路上に第１のパケット対のデータパケットを送信することを含むことができる。例えば、コンピュータシステム２０１はコンピュータシステム２３１とパケット対テストを開始することができる。したがって、コンピュータシステム２０１は、コンピュータシステム２３１に配信するために第１のパケット対のデータパケットをデータ経路２９１上に送信することができる。
【００７０】
ステップ３１３は、第２のパケット対のデータパケットを後で送信することに対応する動作も含む（動作３０７）。動作３０７は、送信側コンピュータシステムが、受信側コンピュータシステムに配信するためにネットワークデータ経路上に対応する第２のパケット対のデータパケットを送信することを含むことができる。第２のパケット対のデータパケットは、第１のパケット対のデータパケットに近いサイズ、または場合によっては同一サイズである。送信時間間隔（例えば、非同期送信コマンド間の時間間隔）は、第１のパケット対のデータパケットと第２のパケット対のデータパケットの送信を分離することができる。送信時間間隔の値は、パケット対のデータパケットがネットワークデータ経路のボトルネックリンクでキューに入っている可能性が大幅に増加するほど十分に小さくてよい。
【００７１】
別法として、パケット対のデータパケットは中間の送信コンピュータシステムから送信することができる。例えば、送信側プロミスキャスモード測定の結果は、送信側データリンクがアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅容量を有していることを示す場合がある。したがって、送信側データリンクを介した送信パケット対のデータパケットは冗長である場合がある。例えば、データリンク２７２（すなわち、データリンク２７７も）がアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅容量を有することが示されている場合、パケット対のデータパケットをデータスイッチ２５５から送信することができる。
【００７２】
方法３００は、受信側コンピュータシステムがパケット対テストに参加するための機能的な結果志向ステップを含む（ステップ３２５）。ステップ３２５は、パケット対テストに参加する結果を達成するためのいかなる対応する動作でも含むことができる。しかし、図３に示した例では、ステップ３２５は、第１のパケット対のデータパケットの対応する動作を含む（動作３１７）。動作３１７は、第１の受信時刻でネットワークデータ経路から第１のパケット対のデータパケットを受信する受信側コンピュータシステムを含むことができる。ステップ３２５は、第２のパケット対のデータパケットを受信することに対応する動作も含む（動作３１８）。動作３１８は、第２の受信時刻でネットワークデータ経路から第２のパケット対のデータパケットを受信する受信側コンピュータシステムを含むことができる。
【００７３】
別法として、パケット対のデータパケットを中間の受信コンピュータシステムで受信することができる。例えば、受信側プロミスキャスモード測定の結果は、受信側データリンクがアプリケーションのデータストリームを受信するために十分な使用可能な帯域幅を有していることを示すことができる。したがって、受信側データリンクを介してパケット対のデータパケットを受信することは冗長である場合がある。例えば、データリンク２７５がアプリケーションのデータストリームを受信するために十分な使用可能な帯域幅を有するということが示された場合、パケット対のデータパケットをデータスイッチ２６０で受信することができる。
【００７４】
ステップ３２５は、ボトルネックリンクの使用可能な帯域幅容量を計算することに対応する動作を含む（動作３１９）。動作３１９は、少なくとも第１の受信時刻と第２の受信時刻との間の差に基づいてネットワークデータ経路のボトルネックデータリンク上の使用可能な帯域幅容量を計算することを含むことができる。方法３００では受信側で行われるものとして示したが、受信側または中間の受信コンピュータシステムが受信されたボトルネックッデータに基づいてボトルネック帯域幅を計算する送信側または中間の送信コンピュータシステムにボトルネックデータ（第１および第２の受信時刻を含めて）を送信することができる。
【００７５】
ネットワークデータ経路のボトルネック帯域幅は少なくとも等式２によって推定することができる。  
ボトルネック帯域幅＝パケットサイズ／（第２の受信時刻−第１の受信時刻）  等式２
【００７６】
パケットサイズは、第１のパケット対のデータパケットと第２のパケット対のデータパケットのサイズを表す値である。第１のパケット対のデータパケットと第２のパケット対のデータパケットが同一サイズでない場合、この値は、第１のパケット対のデータパケットのサイズと第２のパケット対のデータパケットのサイズの平均を表す場合がある。第１の受信時刻は、第１のパケット対のデータパケットが受信側コンピュータシステムまたは中間の受信コンピュータシステムで受信された時刻を表す値である。同様に、第２の受信時刻は、第２のパケット対のデータパケットが受信側コンピュータシステムまたは中間の受信コンピュータシステムで受信された時刻を表す値である。
【００７７】
ボトルネック帯域幅値を計算するために等式２の算術演算子に従って等式２の値を結合することができる。すなわち、パケットサイズ値は、第１の受信時刻値から第２の受信時刻値を差し引いた差で割られる。例えば、コンピュータシステム２３１は、０９：５６：０５．２３４でパケットサイズ値３２，７６８ビット（４，０９６バイト）のデータ経路２９１を介して第１のパケット対のデータパケットを受信することができる（第１の受信時刻値）。その後、コンピュータシステム２３１は、０９：５６：０５．２５０でパケットサイズ値３２，７６８ビットのデータ経路２９１を介して第２のパケット対のデータパケットを受信することができる（第２の受信時刻値）。したがって、本実施例では、推定されたボトルネック帯域幅値は３２，７８６ビット／（．２５０秒−．２３４秒）と等しいかまたは約２Ｍｂｐｓである。
【００７８】
送信側コンピュータシステムまたは中間の送信コンピュータシステムは、ネットワークデータ経路を介して受信側コンピュータシステムまたは中間の受信コンピュータシステムに送信される、サイズが不変の連続したデータパケット（各データパケットは不変のパケット対の送信時間間隔によって分離される）のパケット対のトレインの第１および第２のパケット対のデータパケットを含むことができる。ネットワークデータ経路に対するボトルネック帯域幅を計算するために、レシーバーオンリーパケットペア（「ＲＯＰＰ」）アルゴリズム、レシーバーベースパケットペア（「ＲＢＰＰ」）アルゴリズム、およびセンダーベースパケットペア（「ＳＢＰＰ」）アルゴリズムのような様々な異なるパケット対アルゴリズムのいずれかを実施するためにパケット対のトレインの送信を使用することができる。データ経路２９１に対するボトルネック帯域幅値を計算するために、これらのパケット対アルゴリズムのどれでも（または、他のパケット対アルゴリズムのどれでも）実施することができる。プロービングモジュール２０４、２２４、および／または２３４のようなプロービングモジュールを、パケット対アルゴリズムを実施するために適切な機能性によって構成することができる。パケット対アルゴリズムの精度を高めるために、ヒストグラムのようなパケット対フィルタリング技術を使用することができる。
【００７９】
一部の実施形態では、中間の送信コンピュータシステムは、少なくとも第１および第２のパケット対のデータパケットを中間の受信コンピュータシステムに送信する。例えば、プロミスキャスモード測定の結果は、送信側データリンクと受信側データリンクの両方がアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅容量を有することを示すことができる。したがって、これらのデータリンクを介した送信および受信パケット対のデータパケットは冗長である場合がある。例えば、データリンク２７１およびデータリンク２７６がアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅容量を有することが示されている場合、パケット対のデータパケットをデータスイッチ２５５からデータスイッチ２６０に送信することができる。したがってこの場合、データスイッチ２５５またはデータスイッチ２６０は、データリンク２７８に対するボトルネック帯域幅を計算することができる。
【００８０】
方法３００は、送信コンピュータシステムに対して使用可能なボトルネック帯域幅を示す動作を含む（動作３２０）。動作３２０は、受信側コンピュータシステムまたは中間の受信コンピュータシステムが送信側コンピュータシステムまたは中間の送信コンピュータシステムに対して使用可能なボトルネック帯域幅容量を示すことを含むことができる。方法３００は、ボトルネックデータリンク上の使用可能な帯域幅容量が十分であるという指示を受信する動作を含む（動作３０８）。動作３０８は、送信側コンピュータシステムまたは中間の送信コンピュータシステムが、ボトルネックデータリンクの使用可能な帯域幅容量は要求されたアプリケーションのデータ転送速度でデータストリームをサポートするために十分であるという指示を受信することを含むことができる。
【００８１】
一部の実施形態では、指定されたボトルネックローディング値（例えば、．２、．７など）は、データストリームが消費できるボトルネック帯域幅容量を制限する。指定されたボトルネックローディング値はネットワーク管理者またはユーザの希望に従って選択することができる。データストリームに対して低減したボトルネック帯域幅を許可することが希望される場合、指定されたボトルネックローディング値を低減することができる。例えば、データストリームに対してネットワークデータ経路のボトルネック帯域幅の２０％を許可するために、使用可能なボトルネック帯域幅値を計算するためにボトルネック帯域幅値に指定されたボトルネックローディング値「．２」を乗じることができる。
【００８２】
一方、データストリームに対して増加したボトルネック帯域幅を許可することが希望される場合、指定されたボトルネックローディング値を増加させることができる。例えば、データストリームに対してネットワークデータ経路のボトルネック帯域幅の７０％を許可するために、使用可能なボトルネック帯域幅値を計算するためにボトルネック帯域幅値に指定されたボトルネックローディング値「．７」を乗じることができる。データストリームに対してネットワークデータ経路のボトルネック帯域幅のすべてを許可することが希望される場合、指定されたボトルネックローディング値を「１」にセットすることができる。ネットワークデータ経路を輻輳させずにできるだけ多くのボトルネック帯域幅を使用するために、指定されたボトルネックローディング値が選択されることができる。一方、非ストリーミングデータの送信用にボトルネック帯域幅の一部の量を消費するように、指定されたボトルネックローディング値を選択することができる。
【００８３】
計算されたボトルネック帯域幅値（または、適宜、計算された使用可能なボトルネック帯域幅値）が要求されたアプリケーションのデータ転送速度よりも小さい場合、そのネットワークデータ経路は要求されたアプリケーションのデータ転送速度でアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅容量を有していないと見なされる。したがって、アプリケーションのデータストリームはネットワークデータ経路上に送信されず、テストを終了することができる。有益な結果として、ネットワークデータ経路を輻輳させる可能性が増大したデータストリームがネットワークデータ経路上に送信されることが防止される。
【００８４】
一方、ネットワークデータ経路に対して計算されたボトルネック帯域幅値（または、適宜、計算された使用可能なボトルネック帯域幅値）が要求されたアプリケーションのデータ転送速度よりも大きい（または等しい）場合、ネットワークデータ経路は、要求されたアプリケーションのデータ速度でアプリケーションのデータストリームをサポートするために十分な使用可能な帯域幅容量を有するものと見なされる。その結果、アプリケーションのデータストリームがネットワークデータ経路を輻輳させる可能性をより正確に決定するために、能動ネットワークプロービングのようなより能動的なテストを実行することができる。
【００８５】
方法３００は、ネットワークデータ経路を能動的にプローブするために機能的な結果志向のステップを含む（ステップ３１４）。ステップ３１４は、ネットワークデータ経路を能動的にプローブする結果を達成するためのいかなる対応する動作も含むことができる。しかし、図３に示した例では、ステップ３１４は、アプリケーションのデータストリームをシミュレーションするために送信パラメータを特定することに対応する動作を含む（動作３０９）。動作３０９は、送信コンピュータシステムが、要求されたアプリケーションのデータ転送速度でのアプリケーションのデータストリームの送信をシミュレーションするようデータパケットのトレインを構成するための送信パラメータを特定することを含むことができる。
【００８６】
例えば、送信コンピュータシステムは、プロービングデータパケットサイズ値、トレイン値当たりパケット数（packets per trains value）、プロービングデータパケット間隔値、およびプロービングトレイン間隔値を特定することができる。プロービングデータパケットサイズ値は、プロービングデータパケットのトレインに含まれるプロービングデータパケットのサイズ（例えば、ビットまたはバイト）を表す。例えば、プロービングデータパケットサイズ値４，０９６は、プロービングデータパケットのトレインに含まれるプロービングデータパケットが４，０９６ビットまたは４，０９６バイト（３２，７６８ビット）のサイズを有すべきことを表すことができる。トレイン値当たりパケット数は、プロービングデータパケットのトレインに含まれるべきプロービングデータパケット数を表す。例えば、トレイン当たりパケット数の値１０は、１０個のプロービングデータパケットがプロービングデータパケットのトレインに含まれるべきことを表すことができる。プロービングデータパケット間隔値は、プロービングデータパケットのトレイン内の連続するプロービングデータパケットの送信間の時間間隔（例えば、ミリ秒）を表す。例えば、プロービングデータパケット間隔値１は、プロービングデータパケットのトレイン内のプロービングデータパケットが１ミリ秒ごとに送信されるべきことを表すことができる。
【００８７】
プロービングトレイン間隔値は、プロービングデータパケットの一連のトレイン内のプロービングデータパケットの連続するトレイン間の時間間隔（例えば、ミリ秒）を表す。例えば、プロービングトレイン間隔値９０は、プロービングデータパケットの連続するトレインが９０ミリ秒ごとに送信されるべきことを表すことができる。プロービングデータパケットの連続するトレインをプロービングトレイン間隔値によって分離することによって、データハブおよびデータスイッチでの（キューに入っているデータパケットを少なくともプロービングトレイン間隔時間で配信させることが許可されるような）キャプチャ効果が低減される可能性がある。これによりプロービングデータパケットのトレインのいずれかがネットワークデータ経路上で送信中の他のデータ（データストリームまたは非ストリーミングデータ）を劣化させる可能性が低減される。
【００８８】
ステップ３１４は、特定された送信パラメータに従いパケットのトレインを一時的に送信することに対応する動作を含む（動作３１０）。動作３１０は、送信コンピュータシステムが、ネットワークデータ経路上へのアプリケーションのデータストリームの送信をシミュレーションするために、特定された送信パラメータに従いプロービングデータパケットのトレインを一時的に送信することを含むことができる。例えば、プロービングモジュール２０４は、要求されたアプリケーションのデータ転送速度でのアプリケーションのデータストリームの送信をシミュレーションするために、データ経路２９１上にプロービングデータパケットのトレインを一時的に送信することができる。
【００８９】
方法３００は、ネットワークデータ経路の能動的なプロービングに参加するための機能的な結果志向ステップを含む（ステップ３２６）。ステップ３２６は、ネットワークデータ経路の能動的なプロービングに参加する結果を達成するためのいかなる対応する動作でも含むことができる。しかし、図３に示した例では、ステップ３２６は、アプリケーションのデータ転送速度でアプリケーションのデータストリームをシミュレーションするプロービングパケットのトレインからプロービングパケットを受信することに対応する動作を含む（動作３２１）。動作３２１は、要求されたアプリケーションのデータ転送速度でアプリケーションのデータストリームをシミュレーションするためにパケットをネットワークデータ経路上に送信した送信コンピュータシステムから受信コンピュータシステムがプロービングデータパケットのトレイン内のプロービングパケットの少なくとも一部を受信することを含むことができる。例えば、プロービングモジュール２３４は、プロービングモジュール２０４によって送信されたプロービングデータパケットのトレインからプロービングデータパケットを受信することができる。
【００９０】
ステップ３２６は、プロービングデータパケットのトレインがネットワークデータ経路を輻輳させなかったことを計算することに対応する動作を含む（動作３２２）。動作３２２は、受信側コンピュータシステムが、プロービングデータパケットのトレインがネットワークデータ経路のデータリンクのいずれも輻輳状態に遷移させなかったことを計算することを含むことができる。例えば、プロービングモジュール２３４は、プロービングモジュール２０４から受信したプロービングパケットのトレインがデータ経路２９１（すなわち、データリンク２７２、２７７、２７８、および２７５）のどのデータリンクも輻輳状態に遷移させなかったことを計算することができる。
【００９１】
方法３００は、プロービングパケットのトレインがネットワークデータ経路を輻輳させなかったことを送信コンピュータシステムに示す動作を含む（動作３２３）。動作３２３は、受信側コンピュータシステムが、プロービングデータパケットのトレインはネットワークデータ経路のデータリンクをいずれも輻輳状態に遷移させなかったことを送信側コンピュータシステムに示すことを含むことができる。例えば、プロービングモジュール２３４は、データ経路２９１上で受信したプロービングデータパケットのトレインがデータ経路２９１を輻輳させなかったことをプロービングモジュール２０４に示すことができる。
【００９２】
方法３００は、プロービングデータパケットのトレインがネットワークデータ経路を輻輳させなかったという指示を受信する動作を含む（動作３１１）。動作３１１は、プロービングデータパケットのトレインはネットワークデータ経路のどのデータリンクも輻輳状態に遷移させなかったという指示を送信側コンピュータシステムが受信側コンピュータシステムから受信することを含むことができる。例えば、プロービングモジュール２０４は、プロービングデータパケットのトレインがデータ経路２９１を輻輳させなかったという指示をプロービングモジュール２３４から受信することができる。
【００９３】
一部の実施形態では、データストリームがネットワークデータ経路を輻輳させる可能性は、様々なデータ転送速度で送信されたデータパケットのトレインに関連付けられたキューに入っている遅延を比較することによって決定される。図４は、特定されたキューに入っている遅延に基づく輻輳の可能性を推定するための方法４００の一例である流れ図を示す。図５は、キューに入っている遅延に１０Ｍｂｐｓのイーサネット（登録商標）リンクに対して提案された負荷を対比した一例であるグラフ５００を示している。図６Ａは、データストリームがプローブされたネットワークデータ経路を輻輳状態に遷移させる可能性が低減されたことを示す、受信したデータパケットの受信時刻遅延閾値からの分散に対するパーセンテージの一例であるグラフ６００を示している。図６Ｂは、データストリームがプローブされたネットワークデータ経路を輻輳状態に遷移させる可能性が増加したことを示す、受信したデータパケットの受信時刻遅延閾値からの分散に対するパーセンテージの一例であるグラフ６５０を示している。方法４００を、ネットワークアーキテクチャ２００およびグラフ５００、６００および６５０に示したコンピュータシステム関して説明する。
【００９４】
一例であるグラフ５００では、キューに入っている遅延を縦軸（「Ｙ軸」）に、提案された負荷を横軸（「Ｘ軸」）に示す。グラフ５００は、リンク容量１０Ｍｂｐｓのイーサネット（登録商標）リンク上を特定の提案された負荷（例えば、４Ｍｂｐｓ）で移動するデータパケットが特定のキューに入っている遅延（例えば、２ミリ秒未満）を経験することを示す。提案された負荷が増大するが、キューに入っている遅延は提案された負荷がニー領域５０１に遷移するまで比較的不変に保たれる。次いで、ニー（ｋｎｅｅ）領域５０１内の提案されたある負荷でキューに入っている遅延が劇的に増加し始める。
【００９５】
例えば、キューに入っている遅延は、提案された負荷７Ｍｂｐｓ（２ミリ秒未満のキューに入っている遅延）と提案された負荷９Ｍｂｐｓ（約１０ミリ秒のキューに入っている遅延）の間の５倍以上に増加する。したがって、グラフ５００が示すように、提案された負荷がリンク容量よりも少ない場合でさえ、より大きなキューに入っている遅延が発生する可能性はある。キューに入っている遅延が増加するとデータパケットはさらに長い時間間隔にわたりイーサネット（登録商標）に残り、これがイーサネット（登録商標）リンクを輻輳状態に遷移させる可能性がある。したがって、イーサネット（登録商標）リンクは、提案された負荷がリンク容量よりも少ない場合でさえデータストリームには適切でない場合がある。グラフ５００はキューに入っている遅延を１０Ｍｂｐｓのイーサネット（登録商標）リンクに対して提案された負荷に対する対比を示しているが、１００Ｍｂｐｓのイーサネット（登録商標）リンクとＩＥＥＥ８０２．１１リンクのような幅広い種類の他のタイプのデータリンクが提案された負荷が増加するに従い同様のキューに入っている遅延の増加を経験する場合があることを理解されたい。
【００９６】
図４を参照すると、方法４００は、診断用データパケットのトレインを送信する動作を含む（動作４０１）。動作４０１は、送信コンピュータシステムが診断用パケットのトレインをネットワークデータ経路上にボトルネック帯域幅値（例えば、パケット対テストによって推定される）の指定された分数（例えば、１パーセント）で送信することを含むことができる。例えば、プロービングモジュール２０４は、診断用データパケットのトレインをデータ経路２９１上にデータ経路２９１のボトルネック帯域幅の分数（例えば、１／１００、または１／５０）で送信することができる。ボトルネック帯域幅の指定された分数は、ネットワークデータ経路を輻輳させるか、さもなければネットワークデータ経路上を送信中のデータを劣化させる可能性を大幅に低減する診断用データ速度を表す。例えば、ボトルネック帯域幅５Ｍｂｐｓのネットワークデータ経路を介して診断用データパケットのトレインを送信する場合、５０キロビット／秒（「Ｋｂｐｓ」）の診断用データ速度を使用することができる。送信コンピュータシステムは、診断用データパケットが送信された時刻を示す、各診断用データパケットのタイムスタンプを含むことができる。
【００９７】
方法４００は、診断用データパケットの少なくとも一部を受信する動作を含む（動作４０４）。動作４０４は、受信コンピュータシステムが、送信コンピュータシステムから受信コンピュータシステムに送信される診断用データパケットのトレインに含まれる診断用データパケットの少なくとも一部を受信することを含むことができる。例えば、プロービングモジュール２３４は、プロービングモジュール２０４から送信される診断用データパケットのトレインの診断用データパケットの少なくとも一部を受信することができる。
【００９８】
方法４００は、受信した診断用データパケットから遅延した診断用データパケット数を特定する動作を含む（動作４０５）。例えば、プロービングモジュールは、プロービングモジュール２０４から受信した診断用データパケットから遅延した診断用データパケットを特定することができる。データパケットに対する計算されたキューに入っている遅延が指定された受信時間遅延閾値よりも大きい場合、そのデータパケットは「遅延した」ものと見なされる。キューに入っている遅延は等式３に従って計算することができる。  
ＱＤｉ＝パケットｉの遷移時間−全受信パケット中最小遷移時間              等式３
【００９９】
パケットｉの遷移時間は、特定の受信したデータパケットに対する（有線による）遷移時間を表す値である。パケットｉの遷移時間は、データパケットが受信された時刻からそのデータパケットが送信された時刻を引いた差に等しい。データパケットが受信された場合、Ｒ時刻パックは受信時刻を表すために使用することのできる値である。データパケットが送信された時刻は、そのデータパケットに含まれるタイムスタンプから特定することができる。Ｔ時刻パックはデータパケットが送信された時刻を表すために使用することのできる値である。データパケットのトレインからデータパケットが受信された場合、各受信したデータパケットの送信時刻と受信時刻が特定され、適切に表される。遷移時間（Ｒ時刻パック−Ｔ時刻パック）は各受信されたデータパケットに対して計算される。全受信パケット中最小遷移時間は、すべての計算された遷移時間中最小の遷移時間を表す値である。
【０１００】
等式３の値を、特定データパケットに対してキューに入っている遅延を表すＱＤｉ値を計算するために等式３の算術演算子に従って結合することができる。全受信パケット中最小遷移時間値を差し引くことによって、ＱＤｉ値は正規化され、送信側コンピュータシステムと受信側コンピュータシステムでのクロック値の差が補償される。したがって、クロックが不正確であるためにデータパケットに対する遷移時間が不正確または負になったとしても、等式３を依然として使用することができる。表１は、８つのデータパケットに対して可能な送信時刻および受信時刻（時：分：秒）の一例を示している。
【０１０１】
【表１】
2004266840.tif 000003
【０１０２】
表１に示すように、データパケット３は、８つのデータパケットに対する全受信パケット中最小遷移時間値５．０５２秒に関連付けられている。遷移時間の列に「見かけ上の遷移時間」という見出しが付いているのは、クロックが不正確であることで遷移時間が実際の遷移時間とかなり異なって表示される可能性があるからである。受信遅延閾値は、管理者またはユーザが適切であると選択する事実上いかなる閾値であってもよい。一部の実施形態では、受信遅延閾値は（例えば、非同期送信の間の）送信時間間隔に等しい。表１では、送信時間間隔は２ミリ秒である。
【０１０３】
等式３に従い、各データパケットに対するＱＤｉをパケットの見かけ上の遷移時間から５．０５２引いた差を取ることによって計算することができる。例えば、パケット７に対するＱＤｉは５．０５４秒−５．０５２秒、すなわち２ｍｓである。２ミリ秒のＱＤｉが２ミリ秒の送信時間間隔未満またはこれと同じなので、パケット７は遅延したパケットとは見なされない。一方、パケット５は４ミリ秒のＱＤｉを有しており、４ミリ秒は２ミリ秒よりも長いのでこれは遅延したパケットであると見なされる。
【０１０４】
方法４００は、目標データパケットのトレインを送信する動作を含む（動作４０２）。動作４０２は、送信コンピュータシステムが要求されたデータ転送速度（例えば、アプリケーションモジュールによって要求されるなどの）でコンピュータネットワークデータ経路上に目標データパケットのトレインを一時的に送信することを含むことができる。キャプチャ効果の増大を低減するために目標パケットのトレインを比較的短い時間間隔で送信することができる。したがって、要求されたデータ転送速度を他のデータストリームを劣化する可能性を低減した方法でシミュレーションすることができる。送信コンピュータシステムは、その目標パケットが送信された時刻を示す、各目標データパケット中のタイムスタンプを含むことができる。
【０１０５】
方法４００は、目標データパケットの少なくとも一部を受信する動作を含む（動作４０６）。動作４０６は、受信コンピュータシステムが、送信コンピュータシステムから受信コンピュータシステムに送信された目標データパケットのトレインに含まれるデータパケットの少なくとも一部を受信することを含むことができる。例えば、プロービングモジュール２３４は、プロービングモジュール２０４から送信された目標データパケットのトレイン内の目標データパケットの少なくとも一部を受信することができる。
【０１０６】
方法４００は、受信した目標データパケットから遅延した目標データパケット数を特定する動作を含む（動作４０７）。例えば、プロービングモジュール２３４は、プロービングモジュール２０４から受信した目標データパケットから遅延した目標データパケットを特定することができる。プロービングモジュール２３４は、遅延した目標データパケットを等式３に従って特定することができる。
【０１０７】
方法４００は、遅延した目標データパケット数を遅延した診断用データパケット数と比較する動作を含む（動作４０８）。動作４０８は、受信コンピュータシステムが、目標データパケットのトレインがネットワークデータ経路を輻輳させたか否かを判定するために、遅延した目標データパケット数を遅延した診断用データパケット数と比較することを含むことができる。例えば、プロービングモジュール２３４は、プロービングモジュール２０４から送信された遅延した目標データパケット数をプロービングモジュール２０４から送信された遅延した診断用データパケット数と比較することができる。
【０１０８】
遅延した目標データパケット数が遅延した診断用データパケット数の指定された遅延したパケット閾値内である場合、アプリケーションのデータストリームの配信がプローブされたネットワークデータ経路を輻輳状態に遷移させる可能性は低下する。遅延したパケット閾値は、データパケット数であってもデータパケットのパーセンテージであってもよく、アプリケーションのデータストリームがネットワークを輻輳させるより堅実な、またはあまり堅実でない推定を表すよう変更することができる。
【０１０９】
例えば、データストリームがネットワークを輻輳させないより堅実な推定が希望される場合、３％など、より低い遅延したパケット閾値をセットすることができる。したがって、ネットワークデータ経路が輻輳する可能性が低下したことを目標データパケットのトレインが示すには、受信遅延閾値内で受信した目標データパケット数が受信遅延閾値内で受信した診断用データパケット数よりも３％だけ少なければよい。一方、データストリームがネットワークを輻輳させないあまり堅実でない推定が希望される場合、１２％など、より大きな遅延したパケット閾値をセットすることができる。したがって、目標データパケットのトレインがネットワークデータ経路が輻輳する可能性が低下したことを示すには、受信遅延閾値内で受信した目標データパケット数が受信遅延閾値内で受信した診断用データパケット数よりも１２％だけ少なければよい。
【０１１０】
図６Ａを参照すると、一例であるグラフ６００は、プローブされたネットワークデータ経路に対して遅延閾値６０１内で受信した目標データパケットと診断用データパケットのパーセンテージを示す。受信遅延閾値６０１より遅延の少ないデータパケット（診断用と目標の両方）は許容可能な遅延を有しているものと見なされる。反対に、受信遅延閾値６０１よりも遅延の大きいデータパケットは許容不可能な遅延であると見なされる。一例であるグラフ６００では、受信したパケットのパーセンテージを縦軸（「Ｙ軸」）に、受信遅延閾値６０１との時間の差を横軸（「Ｘ軸」）に示す。一例であるグラフ６００は、推定されたデータ転送速度が２Ｍｂｐｓのデータストリームがネットワークデータ経路を輻輳状態に遷移させるか否かを判定するために、データ負荷が４Ｍｂｐｓのネットワークデータ経路（例えば、データ経路２９１）を能動的にプローブする結果を示している。
【０１１１】
診断用トレインのＹ切片は、受信遅延閾値６０１内で受信した診断用データパケットのパーセンテージを表す。図から分かるように、診断用データパケットの約９０％は許容可能な遅延内で受信された。目標トレインのＹ切片は、受信遅延閾値６０１内で受信した目標データパケットのパーセンテージを表す。図から分かるように、目標データパケットの約９０％が許容可能な遅延内で受信された。目標データパケットと診断用データパケットの同様のパーセンテージが許容可能な遅延内で受信されたので、目標データパケットのパーセンテージは診断用データパケットのパーセンテージの遅延パケット閾値内であると見なされる可能性がある。したがって、一例であるグラフ６００は、データストリームは２Ｍｂｐｓというアプリケーションのデータ転送速度ではプローブされたネットワークデータ経路を輻輳させる可能性がないことを示す。したがって、２Ｍｂｐｓのデータストリームをプローブされたネットデータ経路上に送信することを許可することができる。
【０１１２】
遅延した目標データパケット数が遅延した診断用データパケット数の指定された遅延したパケット閾値内でない場合、アプリケーションのデータストリームの配信がプローブされたネットワークデータ経路を輻輳状態に遷移させる可能性は増大することになる。図６Ｂを参照すると、一例であるグラフ６５０は、プローブされたネットワークデータ経路から受信遅延閾値６０１内で受信された目標データパケットと診断用データパケットのパーセンテージを表している。受信遅延閾値６０１よりも遅延の少ない（診断用と目標の両方の）データパケットは、許容可能な遅延であると見なされる。反対に、受信遅延閾値６０１よりも遅延の大きいデータパケットは許容不可能な遅延であると見なされる。一例であるグラフ６５０では、受信したパケットのパーセンテージを縦軸（「Ｙ軸」）に、受信遅延閾値６０１との差を横軸（「Ｘ軸」）に示した。一例であるグラフ６５０は、データ転送速度が７Ｍｂｐｓであると推定されたデータストリームがネットワークデータ経路を輻輳状態に遷移させるか否かを判定するために、データ負荷が４Ｍｂｐｓのネットワークデータ経路（例えば、データ経路２９１）を能動的にプローブした結果を表している。
【０１１３】
診断用トレインのＹ切片は、受信遅延閾値６０１内に受信された診断用データパケット数を表している。図から分かるように、診断用データパケットの約９０％は遅延閾値６０１内に受信されたものである。目標トレインのＹ切片は、遅延閾値６０１内に受信された目標データパケット数を表している。図から分かるように、目標データパケットの約１５％は遅延閾値６０１内に受信されたものである。目標データパケットのパーセンテージと許容可能な遅延内で受信された診断用データパケットのパーセンテージとは大幅に変動するので、目標データパケットのパーセンテージは診断用データパケットのパーセンテージの遅延したパケット閾値内であると見なされる可能性はない。したがって、一例であるグラフ６５０は、アプリケーションのデータ転送速度７Ｍｂｐｓではデータストリームはプローブされたネットワークデータ経路を輻輳させる可能性がないことを示している。したがって、７Ｍｂｐｓのデータストリームをプローブされたネットワークデータ経路上に送信することを防止することができる。有益な結果として、ネットワークデータ経路を輻輳させる可能性が増大したデータストリームがネットワークデータ経路上に送信されることはない。
【０１１４】
（例えば、１０Ｍｂｐｓ、１００Ｍｂｐｓなどのデータリンクを有する）ネットワークデータ経路の構成に応じて、許容可能な遅延内で（例えば、受信遅延閾値６０１以前に）受信された目標データパケットの特定のパーセンテージは、そのパーセンテージだけを検討した場合、必ずしも輻輳の信頼できる指示を提供できるわけではない。例えば、１０Ｍｂｐｓのネットワークデータリンク上では、遅延閾値内で目標データパケットの７５％を受信するということは輻輳を示さない受信パーセンテージと見なすことができる。一方、１００Ｍｂｐｓのネットワークデータリンク上では、遅延閾値内で目標データパケットの７５％を受信するということは輻輳を示す受信パーセンテージと見なすことができる。しかし、送信側コンピュータシステムおよび／または受信側コンピュータシステムが目標データパケットが送信される前にネットワークデータ経路の構成を認識する方法はない場合がある。例えば、送信側コンピュータシステムと受信側コンピュータシステムを（ボトルネックリンクを含む）１つまたは複数の中間のデータリンクによって分離することができる。
【０１１５】
上述のように、ネットワークデータ経路を輻輳させる可能性が大幅に低減されたデータ速度で診断用パケットのトレインを送信することができる。したがって、ネットワークデータ経路が輻輳する可能性がない場合、ネットワークデータ経路に対して遅延したパケットの許容可能な閾値を示すために診断用パケットのトレインを使用することができる。さらに、送信側コンピュータシステムと受信側コンピュータシステムがネットワークデータ経路の輻輳に関する事前情報を有しない場合でさえ、遅延したパケットの許容可能な閾値を特定することができる。したがって、データストリームをネットワークデータ経路上に送信できるか否かを判定する前に、送信側コンピュータシステムと受信側コンピュータシステムがネットワークデータ経路構成を意識する必要はない。さらに、（ネットワークデータ経路の構成だけに基づいて判定するのとは対照的に）遅延した目標データパケットのパーセンテージを遅延したパケットの許容可能な閾値と比較することによって、より信頼性のある判定を行うことができる。
【０１１６】
方法４００は、比較の結果を送信する動作を含む（動作４０９）。動作４０９は、受信コンピュータシステムが、目標データパケットのキューに入っている遅延を診断用データパケットと比較した結果を送信コンピュータシステムに送信することを含むことができる。例えば、プロービングモジュール２３４は比較の結果をプロービングモジュール２０４に送信することができる。方法４００は、比較の結果を受信する動作を含む（動作４０３）。動作４０３は、送信コンピュータシステムが、目標データパケットのキューに入っている遅延を診断用データパケットと比較した結果を受信コンピュータシステムから受信することを含むことができる。例えば、プロービングモジュール２０４は比較の結果をプロービングモジュール２３４から受信することができる。結果が適切である場合、アプリケーションモジュール２０２はアプリケーションのデータストリームを要求されたアプリケーションのデータ速度でアプリケーション２３２に送信することができる。
【０１１７】
一部の実施形態では、診断用データパケットのトレインの送信後に、中間の診断用データパケットのトレインが送信コンピュータシステムから受信コンピュータシステムに送信される。中間の診断用データパケットのトレインは中間の診断用データ速度で送信される。中間の診断用データ速度は診断用データ速度よりは大きいが、要求されたアプリケーションのデータ速度よりは小さい。要求されたアプリケーションのデータ速度が診断用のデータ速度と比較して大きい場合、診断用データ速度と要求されたアプリケーションのデータ速度の間の一部の中間の診断用データ速度での潜在的な輻輳を決定すると有利な場合がある。例えば、ネットワークデータ経路に対する使用可能なボトルネック帯域幅値が７０Ｍｂｐｓである場合がある。したがって、診断用データ速度７００Ｍｂｐｓを選択することができる。要求されたアプリケーションのデータ転送速度が６０Ｍｂｐｓである場合、７００Ｋｂｐｓと６０Ｍｂｐｓの間の中間の診断用データ速度、例えば２０または３０Ｍｂｐｓでの潜在的な輻輳を決定すると有利である。
【０１１８】
受信した中間の診断用データパケットに対するキューに入っている遅延が受信した診断用パケットに対するキューに入っている遅延と比較される。遅延した中間の診断用データパケット数が遅延した診断用データパケット数の指定された遅延したパケット閾値内にない場合、中間の診断用データ速度でのデータストリームの配信がプローブされたネットワークデータ経路を輻輳状態に遷移させる可能性は増大する。したがって、より高い要求されたアプリケーションのデータ速度でのデータストリームも、プローブされたネットワークデータ経路を輻輳状態に遷移させる可能性がある。したがって、能動的プロービングは、要求されたアプリケーションのデータ転送速度で能動的にプローブせずに終了することができる。有益な結果として、プローブされたネットワークデータ経路を輻輳させる可能性が増大したデータストリームの送信がプローブされたネットワークデータ経路上に送信されることはない。
【０１１９】
一方、遅延した中間の診断用データパケット数が遅延した診断用データパケット数の指定された遅延したパケット閾値内である場合、中間の診断用データ速度でのデータストリームの配信がプローブされたネットワークデータ経路を輻輳状態に遷移させる可能性は低減する。したがって、要求されたアプリケーションのデータ転送速度で能動的プロービングを続行することができる。
【０１２０】
潜在的なネットワークデータ経路の輻輳に関する判断の信頼性を高めるために、ネットワークデータ経路を能動的にプローブするようデータパケットの数連のトレイン（診断用、中間の診断用、または目標）を送信することができる。最初に、ネットワークデータ経路を輻輳させる可能性を大幅に低減させたデータ転送速度に関連付けられたキューに入っている遅延を特定するために、診断用パケットの一連のトレインが送信される。その後、中間の診断用データ転送速度に関連付けられたキューに入っている遅延を特定するために、中間の診断用データパケットの一連のトレインが適宜送信される。次いで、要求されたアプリケーションのデータ転送速度に関連付けられたキューに入っている遅延を特定するために、目標データパケットの一連のトレインが送信される。
【０１２１】
一連のデータパケットの各トレインをプロービングトレイン間隔で分離することができる。プローブされたネットワークデータ経路上でのキャプチャ効果を低減させるようプロービングトレイン間隔を選択することができる。例えば、１ミリ秒のプロービングデータパケット間隔で送信された１０個のデータパケットのトレイン（すなわち、合計送信時間１０ミリ秒）をプロービングトレイン間隔９０ミリ秒で分離することができる。したがって、１００ミリ秒の間隔は一連のデータパケットのトレイン内の連続したトレインに対する送信の開始を分離する。これによって、ネットワークデータ経路をプローブするために使用される負荷は、要求されたアプリケーションのデータ速度の１０％まで効果的に低減される。
【０１２２】
ネットワーク管理者またはユーザは、所望の信頼性と効果に従って一連のトレイン内のトレイン数を選択することができる。より大きな信頼性が希望される場合、一連のトレイン数を増加させることができ、それによってキューに入っている遅延を計算するためのさらなるサンプルは提供される。一方、より大きな効果が希望される場合、一連のトレイン数を低減させることができ、それによってネットワークデータ経路のプローブを完了するための時間は低減される。
【０１２３】
一部の実施形態では、プロービングモジュール（例えば、プロービングモジュール２０４、２２４、または２３４）は、ネットワーク管理者またはユーザが本明細書に記載のパラメータに対して所望の値を選択かつ／または入力できるように、コンピュータシステムにユーザインターフェースを提供する。ユーザインターフェースはネットワーク管理者またはユーザが入力装置を用いて選択することができるパラメータ値のリストを提供する場合がある。同様に、ユーザインターフェースは、ネットワーク管理者またはユーザが入力装置を用いて値を入力することができるラベル付けされたフィールドを提供する場合がある。例えば、ネットワーク管理者またはユーザは、ユーザインターフェースを介して、送信側データリンクおよび／または受信側データリンクに対する所望の許容可能なローディング値と、データストリームに使用可能な帯域幅を限定するためにロードする所望の指定されたボトルネックとを選択または入力することができる。同様に、ネットワーク管理者またはユーザは、ネットワークデータ経路を能動的にプローブするためにデータパケットのトレインおよびデータパケットの複数系列のトレインを構成するパラメータを選択または入力することができる。
【０１２４】
本発明は、その趣旨または本質的な特性から逸脱せずに他の具体的な形式で実施することができる。上記の実施形態はすべての点に関して説明のみを目的としたものであり限定的なものではないと見なされるべきである。したがって、本発明の範囲は、上記の説明ではなく特許請求の範囲によって示される。特許請求の範囲の意味の範囲内および均等の範囲内に含まれるすべての変更は本発明に包含されるものと見なされるべきである。
【図面の簡単な説明】
【０１２５】
【図１】本発明の原理に適した動作環境を説明する図である。
【図２】ネットワーク上へのデータストリームの許容の制御に役立つネットワークアーキテクチャの一例を示す図である。
【図３Ａ】ネットワークデータ経路を輻輳させずに送信コンピュータシステムが受信コンピュータシステムにアプリケーションのデータストリームを配信することができると推定する方法の一例としての流れ図を示す図である。
【図３Ｂ】ネットワークデータ経路を輻輳させずに送信コンピュータシステムが受信コンピュータシステムにアプリケーションのデータストリームを配信することができると推定する方法の一例としての流れ図を示す図である。
【図４】特定されたキューに入っている遅延に基づいてネットワークデータ経路の輻輳の可能性を推定するための方法の一例としての流れ図である。
【図５】キューに入っている遅延と１０メガビット／秒のイーサネット（登録商標）リンクに提示された負荷とを対比した一例を示す特性図である。
【図６Ａ】データストリームがプローブされたネットワークデータ経路を輻輳させる可能性が低減されたことを示す、受信遅延閾値からの分散に対する受信したデータパケットのパーセンテージの一例を示す特性図である。
【図６Ｂ】データストリームがプローブされたネットワークデータ経路を輻輳させる可能性が増大したことを示す、受信遅延閾値からの分散に対する受信したデータパケットのパーセンテージの一例を示す特性図である。
【符号の説明】
【０１２６】
２０１  コンピュータシステム
２１１  コンピュータシステム
２２１  コンピュータシステム
２３１  コンピュータシステム
２４１  コンピュータシステム
２５１  コンピュータシステム
２０２  アプリケーションモジュール
２１２  アプリケーションモジュール
２２２  アプリケーションモジュール
２３２  アプリケーションモジュール
２４２  アプリケーションモジュール
２０３  ネットワークインターフェースモジュール
２１３  ネットワークインターフェースモジュール
２２３  ネットワークインターフェースモジュール
２３３  ネットワークインターフェースモジュール
２４３  ネットワークインターフェースモジュール
２５３  ネットワークインターフェースモジュール
２０４  プロービングモジュール
２２４  プロービングモジュール
２３４  プロービングモジュール
２５０  データハブ
２５５  データスイッチ
２６０  データスイッチ
【図１】
2004266840.tif 000004
【図２】
2004266840.tif 000005
【図３Ａ】
2004266840.tif 000006
【図３Ｂ】
2004266840.tif 000007
【図４】
2004266840.tif 000008
【図５】
2004266840.tif 000009
【図６Ａ】
2004266840.tif 000010
【図６Ｂ】
2004266840.tif 000011