(57)【要約】  本発明は、クライアントにおいて、コンテンツを潜在的に提供し得る１つ以上のサーバーからこのコンテンツを受けることを容易にするシステムを提供する。クライアントは、このコンテンツのリクエストをディレクトリサーバーに送ることから始める。このリクエストに応答して、クライアントは、ディレクトリサーバーからコンテンツを潜在的に提供し得る候補サーバーのリストを受ける。一旦クライアントがこの候補サーバーのリストを受けると、クライアントは、このコンテントについて、１つ以上の候補サーバーにリクエストを送り、そして、次に、この１つ以上の候補サーバーからコンテンツを受ける。
2005525611.tif 000002
【特許請求の範囲】
【請求項１】
クライアントにおいて、コンテンツを潜在的に提供し得る１つ以上のサーバーからコンテンツを受けるための方法であって：
該コンテンツが位置し得る場所についての情報を記憶するディレクトリサーバーに対し、該コンテンツのリクエストを送るステップ；
該リクエストに応答して、該コンテンツを潜在的に提供し得る候補サーバーのリストを含む、該ディレクトリサーバーからの応答を受けるステップ；
該コンテンツに対する該候補サーバーのリストの少なくとも１つの候補サーバーにリクエストを送るステップ；および
少なくとも１つの候補サーバーから該コンテンツを受けるステップ、を包含する、方法。
【請求項２】
前記少なくも１つの候補サーバーからコンテンツを受けるステップが、複数の候補サーバーから該コンテンツの一部分を受けること、および前記クライアントにおいて該一部分を組み立てることを包含する、請求項１に記載の方法。
【請求項３】
前記ディレクトリサーバーにフィードバックを送るステップをさらに包含する請求項１に記載の方法であって、該フィードバックが、以下を示す前記コンテンツのマップを含み得る、方法：
前記クライアントによって受けられた該コンテンツの一部分；
該クライアントによって現在受けられている該コンテンツの一部分；および
該クライアントによって受けられなかった該コンテンツの一部分。
【請求項４】
前記ディレクトリサーバーにフィードバックを送るステップをさらに包含する請求項１に記載の方法であって、該フィードバックが、候補サーバーのステータス情報を含み得、これが：
所定の候補サーバーの可用性；
該所定の候補サーバーの性能インディケータ；および
前記クライアントから該所定の候補サーバーへの経路のトレース、を示し得る、方法。
【請求項５】
前記ディレクトリサーバーにコンテンツのリクエストを送るステップが、さらに：
前記クライアントが既に有する該コンテンツの一部分を示す該コンテンツのマップ；および
該クライアントのローカルＩＰアドレス、を送ることを包含する、請求項１に記載の方法。
【請求項６】
請求項１に記載の方法であって：
前記クライアントにおいて、第２のクライアントから、該第２のクライアントに前記コンテンツを送るリクエストを受けるステップ；および
該リクエストに応答して、該コンテンツを該第２のクライアントに送るステップ、をさらに包含する、請求項１に記載の方法。
【請求項７】
前記コンテンツを第２のクライアントに送るステップが、該コンテンツが前記クライアントによって受けられている間に起こる、請求項６に記載の方法。
【請求項８】
前記候補サーバーのリストが、候補サーバーの完全リストのサブセットである、請求項１に記載の方法。
【請求項９】
前記候補サーバーの完全リストのさらなるサブセットを要求するリクエストを前記ディレクトリサーバーに送るステップをさらに包含する、請求項８に記載の方法。
【請求項１０】
前記候補サーバーのリストが、前記コンテンツのオリジナルソースを含むオリジナルサーバーを含む、請求項１に記載の方法。
【請求項１１】
前記コンテンツが、前記候補サーバーのリスト中のある候補サーバーから入手可能でない場合の請求項１に記載の方法において、該候補サーバーから該コンテンツを受けることを再び試みる前に、設定時間待つステップをさらに包含する、方法。
【請求項１２】
前記設定時間が、前記クライアントが前記候補サーバーのリスト中のある候補サーバーからの前記コンテンツを受けることに成功しない毎に増加する、請求項１１に記載の方法。
【請求項１３】
前記コンテンツが、前記候補サーバーのリスト中のある候補サーバーから所定時間に入手可能でなかった場合の請求項１１に記載の方法において、該候補サーバーのリストから該候補サーバーを除くステップをさらに包含する、方法。
【請求項１４】
前記候補サーバーのリスト中のある候補サーバーが特定の性能基準に合致しない場合の請求項１１に記載の方法において、該候補サーバーのリストから該候補サーバーを除くステップをさらに包含する、方法。
【請求項１５】
クライアントに配給様式でコンテンツを送る方法であって：
ディレクトリサーバーにおいて、該クライアントからのコンテンツのリクエストを受けるステップ；
該クライアントに、該コンテンツを潜在的に提供し得る候補サーバーのリストを含む応答を送るステップ；および
該コンテンツに対する該候補サーバーのリストに、該クライアントを、該クライアントがその他のクライアントからの次の該コンテンツのリクエストのための該コンテンツのサーバーとして作用し得るように追加するステップ、を包含する、方法。
【請求項１６】
前記候補サーバーのリストが、ネットワーク基準によって記憶される請求項１５に記載の方法であって、所定のクライアントのネットワーク基準が：
該所定のクライアントの外部ＩＰアドレスと同一の外部ＩＰアドレス；
該所定のクライアントの自律システム（ＡＳ）と同一であるか、またはトポロジー的に近いＡＳ；および
該所定のクライアントのＩＰ／２０ネットワークと同一であるＩＰ／２０ネットワーク、を含み得る、方法。
【請求項１７】
前記候補サーバーのリストをソートすることを容易にするために、ボーダーゲートウェイプロトコル（ＢＧＰ）情報を受けるステップをさらに包含し、前記クライアントにトボロジー的に最も近い候補サーバーが、該候補サーバーのリスト中により高く出現する、請求項１６に記載の方法。
【請求項１８】
前記クライアントからコンテンツのリクエストを受けるステップが：
該クライアントが既に有する該コンテンツの一部分を示す該コンテンツのマップを受けること；
該リクエスト中に該クライアントが明確に含められる、該クライアントのローカルＩＰアドレスを受けること；および
該クライアントの外部ＩＰアドレスを受けることをさらに包含する、請求項１５に記載の方法。
【請求項１９】
前記候補サーバーのリストが、候補サーバーの完全リストのサブセットである、請求項１５に記載の方法。
【請求項２０】
前記候補サーバーのリストが、前記コンテンツのオリジナルサーバーを含む、請求項１５に記載の方法。
【請求項２１】
前記候補サーバーのリストからの候補サーバーが、ファイアウォールの後にある場合の請求項１５に記載の方法であって、該候補サーバーに、該候補サーバーが該ファイアウォールを通じて該クライアントとのコミュニケーションセッションを開始させるリクエストを送るステップをさらに包含する、方法。
【請求項２２】
前記候補サーバーのリストからのある候補サーバーおよび前記クライアントが、ファイアウォールの後にある場合の請求項１５に記載の方法であって、該候補サーバーおよび該クライアントに、該候補サーバーおよび該クライアントが、それらの個々のファイアウォールを通じて互いにメッセージを同時に送り、該候補サーバーと該クライアントとの間のコミュニケーションセッションを開始させるリクエストを送るステップをさらに包含する、方法。
【請求項２３】
前記ディレクトリの報告サーバーにおいて、前記クライアントからのフィードバックを収集するステップをさらに包含する、請求項１５に記載の方法。
【請求項２４】
コンピューターにより実行されるとき、該コンピューターに、クライアントにおいて、コンテンツを潜在的に提供し得る１つ以上のサーバーから該コンテンツを受ける方法を実行させる命令を記憶する、コンピューター読み取り可能な記憶媒体であって、該方法が、以下：
該コンテンツが位置し得る場所についての情報を記憶するディレクトリサーバーに対し、該コンテンツのリクエストを送るステップ；
該リクエストに応答して、該コンテンツを潜在的に提供し得る候補サーバーのリストを含む、該ディレクトリサーバーからの応答を受けるステップ；
該コンテンツに対する該候補サーバーのリストから、少なくとも１つの候補サーバーにリクエストを送るステップ；および
少なくとも１つの候補サーバーから該コンテンツを受けるステップ、を包含する、命令。
【請求項２５】
前記少なくも１つの候補サーバーから該コンテンツを受けるステップが、複数の候補サーバーから該コンテンツの一部分を受けること、および前記クライアントにおいて該一部分を組み立てることを包含する、請求項２４に記載のコンピューター読み取り可能な記憶媒体。
【請求項２６】
前記方法が、前記ディレクトリサーバーにフィードバックを送るステップをさらに包含し、該フィードバックが、以下を示す前記コンテンツのマップを含み得る、請求項２４に記載のコンピューター読み取り可能な記憶媒体：
前記クライアントによって受けられた該コンテンツの一部分；
該クライアントによって現在受けられている該コンテンツの一部分；および
該クライアントによって受けられなかった該コンテンツの一部分。
【請求項２７】
前記方法が、前記ディレクトリサーバーにフィードバックを送るステップをさらに包含し、該フィードバックが、候補サーバーのステータス情報を含み得、これが：
所定の候補サーバーの可用性；
該所定の候補サーバーの性能インディケータ；および
前記クライアントから該所定の候補サーバーへの経路のトレースを示し得る、請求項２４に記載のコンピューター読み取り可能な記憶媒体。
【請求項２８】
前記ディレクトリサーバーにコンテンツのリクエストを送るステップが、さらに：
前記クライアントが既に有する該コンテンツの一部分を示す該コンテンツのマップ；および
該クライアントのローカルＩＰアドレスを送ることを包含する、請求項２４に記載のコンピューター読み取り可能な記憶媒体。
【請求項２９】
前記方法が：
前記クライアントにおいて、第２のクライアントから、該第２のクライアントに前記コンテンツを送るリクエストを受けるステップ；および
該リクエストに応答して、該コンテンツを該第２のクライアントに送るステップをさらに包含する、請求項２４に記載のコンピューター読み取り可能な記憶媒体。
【請求項３０】
前記コンテンツを第２のクライアントに送るステップが、該コンテンツが前記クライアントによって受けられている間に起こる、請求項２８に記載のコンピューター読み取り可能な記憶媒体。
【請求項３１】
前記候補サーバーのリストが、候補サーバーの完全リストのサブセットである、請求項２４に記載のコンピューター読み取り可能な記憶媒体。
【請求項３２】
前記方法が、前記候補サーバーの完全リストのさらなるサブセットを要求するリクエストを前記ディレクトリサーバーに送るステップをさらに包含する、請求項３１に記載のコンピューター読み取り可能な記憶媒体。
【請求項３３】
前記候補サーバーのリストが、前記コンテンツのオリジナルソースを含むオリジナルサーバーを含む、請求項２４に記載のコンピューター読み取り可能な記憶媒体。
【請求項３４】
前記コンテンツが、前記候補サーバーのリスト中のある候補サーバーから入手可能でない場合の請求項２４に記載のコンピューター読み取り可能な記憶媒体であって、前記方法が、該候補サーバーから該コンテンツを受けることを再び試みる前に、設定時間待つステップをさらに包含する、記憶媒体。
【請求項３５】
前記設定時間が、前記クライアントが前記候補サーバーのリスト中の任意の候補サーバーからの前記コンテンツを受けることに成功しない毎に増加する、請求項３４に記載のコンピューター読み取り可能な記憶媒体。
【請求項３６】
前記コンテンツが、前記候補サーバーのリスト中のある候補サーバーから所定時間に入手可能でなかった場合の請求項３４に記載のコンピューター読み取り可能な記憶媒体であって、前記方法が、該候補サーバーのリストから該候補サーバーを除くステップをさらに包含する、記憶媒体。
【請求項３７】
前記候補サーバーのリスト中のある候補サーバーが特定の性能基準に合致しない場合の請求項３４に記載のコンピューター読み取り可能な記憶媒体であって、前記方法が、該候補サーバーのリストから該候補サーバーを除くステップをさらに包含する、記憶媒体。
【請求項３８】
コンピューターによって実行されるとき、該コンピューターに、クライアントに配給様式でコンテンツを送る方法を実行させる命令を記憶するコンピューター読み取り可能な記憶媒体であって、該方法が：
ディレクトリサーバーにおいて、該クライアントからのコンテンツのリクエストを受けるステップ；
該クライアントに、該コンテンツを潜在的に提供し得る候補サーバーのリストを含む応答を送るステップ；および
該コンテンツに対する該候補サーバーのリストに、該クライアントを、該クライアントがその他のクライアントからの次の該コンテンツのリクエストのための該コンテンツのサーバーとして作用し得るように追加するステップを包含する、コンピューター読み取り可能な記憶媒体。
【請求項３９】
前記候補サーバーのリストが、ネットワーク基準によって記憶され、所定のクライアントのネットワーク基準が：
該所定のクライアントの外部ＩＰアドレスと同一の外部ＩＰアドレス；
該所定のクライアントの自律システム（ＡＳ）と同一であるか、またはトポロジー的に近いＡＳ；および
該所定のクライアントのＩＰ／２０ネットワークと同一であるＩＰ／２０ネットワーク、を含み得る、請求項３８に記載のコンピューター読み取り可能な記憶媒体。
【請求項４０】
前記方法が、前記候補サーバーのリストをソートすることを容易にするために、ボーダーゲートウェイプロトコル（ＢＧＰ）情報を受けるステップをさらに包含し、前記クライアントにトボロジー的に最も近い候補サーバーが、該候補サーバーのリスト中により高く出現する、請求項３９に記載のコンピューター読み取り可能な記憶媒体。
【請求項４１】
前記クライアントからコンテンツのリクエストを受けるステップが：
該クライアントが既に有する該コンテンツの一部分を示す該コンテンツのマップを受けること；
該リクエスト中に該クライアントが明確に含められる、該クライアントのローカルＩＰアドレスを受けること；および
該クライアントの外部ＩＰアドレスを受けることをさらに包含する、請求項３８に記載のコンピューター読み取り可能な記憶媒体。
【請求項４２】
前記候補サーバーのリストが、候補サーバーの完全リストのサブセットである、請求項３８に記載のコンピューター読み取り可能な記憶媒体。
【請求項４３】
前記候補サーバーのリストが、前記コンテンツのオリジナルサーバーを含む、請求項３８に記載のコンピューター読み取り可能な記憶媒体。
【請求項４４】
前記候補サーバーのリストからのある候補サーバーが、ファイアウォールの後にある場合の請求項３８に記載のコンピューター読み取り可能な記憶媒体であって、前記方法が、該候補サーバーに、該候補サーバーが該ファイアウォールを通じて該クライアントとのコミュニケーションセッションを開始させるリクエストを送るステップをさらに包含する、記憶媒体。
【請求項４５】
前記候補サーバーのリストからのある候補サーバーおよび前記クライアントが、ファイアウォールの後にある場合の請求項３８に記載のコンピューター読み取り可能な記憶媒体であって、前記方法が、該候補サーバーおよび該クライアントに、該候補サーバーおよび該クライアントが、それらの個々のファイアウォールを通じて互いにメッセージを同時に送り、該候補サーバーと該クライアントとの間のコミュニケーションセッションを開始させるリクエストを送るステップをさらに包含する、記憶媒体。
【請求項４６】
前記方法が、前記ディレクトリサーバーの報告サーバーにおいて、前記クライアントからのフィードバックを収集するステップをさらに包含する、請求項３８に記載のコンピューター読み取り可能な記憶媒体。
【請求項４７】
クライアントにおいて、コンテンツを潜在的に提供し得る１つ以上のサーバーからコンテンツを受けるための装置であって：
該コンテンツが位置し得る場所についての情報を記憶するディレクトリサーバーに対し、該コンテンツのリクエストを送るように構成されたリクエストメカニズム；
該コンテンツを潜在的に提供し得る候補サーバーのリストを含む、該ディレクトリサーバーからの応答を受けるように構成された受信メカニズム；
該コンテンツに対する該候補サーバーのリストから、少なくとも１つの候補サーバーにリクエストを送るように構成された第２のリクエストメカニズム；および
該少なくとも１つの候補サーバーから該コンテンツを受けるように構成された、第２の受信メカニズム、を備える、装置。
【請求項４８】
前記第２の受信メカニズムが、複数の候補サーバーから前記コンテンツの一部分を受け、そして前記クライアントにおいて該一部分を組み立てるように構成された、請求項４７に記載の装置。
【請求項４９】
前記ディレクトリサーバーにフィードバックを送るように構成されたフィードバックメカニズムをさらに備える、請求項４７に記載の装置であって、該フィードバックが、以下を示す前記コンテンツのマップを含み得る、方法：
前記クライアントによって受けられた該コンテンツの一部分；
該クライアントによって現在受けられている該コンテンツの一部分；および
該クライアントによって受けられなかった該コンテンツの一部分。
【請求項５０】
前記ディレクトリサーバーにフィードバックを送るように構成されたフィードバックメカニズムをさらに備える請求項４７に記載の装置であって、該フィードバックが、候補サーバーのステータス情報を含み得、これが：
該所定の候補サーバーの可用性；
所定の候補サーバーの性能インディケータ；
および前記クライアントから該所定の候補サーバーへの経路のトレース、を示し得る、装置。
【請求項５１】
前記リクエストメカニズムが、前記コンテンツのリクエストとともに：
前記クライアントが既に有する該コンテンツの一部分を示す該コンテンツのマップ；および
該クライアントのローカルＩＰアドレスを、前記ディレクトリサーバーに送るようにさらに構成された請求項４７に記載の装置。
【請求項５２】
前記クライアントにおいて、第２のクライアントから、該第２のクライアントに前記コンテンツを送るリクエストを受けるように構成された共有メカニズム；および
該コンテンツを該第２のクライアントに送るように構成されたサーバーメカニズムをさらに備える、請求項４７に記載の装置。
【請求項５３】
前記サーバーメカニズムが、前記コンテンツが前記クライアントによって受けられている間に前記コンテンツを前記第２のクライアントに送るようにさらに構成されている、請求項５２に記載の装置。
【請求項５４】
前記候補サーバーのリストが、候補サーバーの完全リストのサブセットである、請求項４７に記載の装置。
【請求項５５】
前記リクエストメカニズムが、前記候補サーバーの完全リストのさらなるサブセットを要求するリクエストを前記ディレクトリサーバーに送るようにさらに構成されている、請求項５４に記載の装置。
【請求項５６】
前記候補サーバーのリストが、前記コンテンツのオリジナルソースを含むオリジナルサーバーを含む、請求項４７に記載の装置。
【請求項５７】
前記コンテンツが、前記候補サーバーのリスト中のある候補サーバーから入手可能でない場合の請求項４７に記載の装置であって、前記リクエストメカニズムが、該候補サーバーから該コンテンツを受けることを再び試みる前に、設定時間待つようにさらに構成されている、装置。
【請求項５８】
前記設定時間が、前記クライアントが前記候補サーバーのリスト中の任意の候補サーバーからの前記コンテンツを受けることに成功しない毎に増加する、請求項５７に記載の装置。
【請求項５９】
前記リクエストメカニズムが、前記コンテンツが前記候補から所定時間に入手可能でなかった場合に、前記候補サーバーのリストから該候補サーバーを除くようにさらに構成されている、請求項５７に記載の装置。
【請求項６０】
前記リクエストメカニズムが、前記候補サーバーが特定の性能基準に合致しない場合に、前記候補サーバーのリストから該候補サーバーを除くようにさらに構成されている、請求項５７に記載の装置。
【請求項６１】
クライアントに配給様式でコンテンツを送る装置であって：
ディレクトリサーバーにおいて、該クライアントからのコンテンツのリクエストを受けるように構成された受信メカニズム；
該クライアントに、該コンテンツを潜在的に提供し得る候補サーバーのリストを含む応答を送る送信メカニズム；および
該コンテンツに対する該候補サーバーのリストに、該クライアントを、該クライアントがその他のクライアントからの次の該コンテンツのリクエストのための該コンテンツのサーバーとして作用し得るように追加するよう構成されたディレクトリメカニズム、を備える、装置。
【請求項６２】
ネットワーク基準によって前記候補サーバーのリストをソートように構成されたソートメカニズムをさらに備える請求項６１に記載の装置であって、ここで所定のクライアントのネットワーク基準が：
該所定のクライアントの外部ＩＰアドレスと同一の外部ＩＰアドレス；
該所定のクライアントの自律システム（ＡＳ）と同一であるか、またはトポロジー的に近いＡＳ；および
該所定のクライアントのＩＰ／２０ネットワークと同一であるＩＰ／２０ネットワーク、を含み得る、装置。
【請求項６３】
前記候補サーバーのリストをソートすることを容易にするために、ボーダーゲートウェイプロトコル（ＢＧＰ）情報を受けるようにさらに構成され、前記クライアントにトボロジー的に最も近い候補サーバーが、該候補サーバーのリスト中により高く出現する、請求項６２に記載の装置。
【請求項６４】
前記受信メカニズムが：前記クライアントが既に有する前記コンテンツの一部分を示す該コンテンツのマップを受けるよう；
該リクエスト中に該クライアントが明確に含められる、該クライアントのローカルＩＰアドレスを受けるよう；および
該クライアントの外部ＩＰアドレスを受けるようにさらに構成されている、請求項６１に記載の装置。
【請求項６５】
前記候補サーバーのリストが、候補サーバーの完全リストのサブセットである、請求項６１に記載の装置。
【請求項６６】
前記候補サーバーのリストが、前記コンテンツのオリジナルサーバーを含む、請求項６１に記載の装置。
【請求項６７】
前記候補サーバーのリストからのある候補サーバーが、ファイアウォールの後にある場合の請求項６１に記載の装置であって、前記送信メカニズムが、該候補サーバーに、該候補サーバーが該ファイアウォールを通じて該クライアントとのコミュニケーションセッションを開始させるリクエストを送るようにさらに構成されている、装置。
【請求項６８】
前記候補サーバーのリストからのある候補サーバーおよび前記クライアントが、ファイアウォールの後にある場合の請求項６１に記載の装置であって、該候補サーバーおよび該クライアントに、該候補サーバーおよび該クライアントが、それらの個々のファイアウォールを通じて互いにメッセージを同時に送り、該候補サーバーと該クライアントとの間のコミュニケーションを開始させるリクエストを送るようにさらに構成されている、装置。
【請求項６９】
前記ディレクトリサーバーのために前記クライアントからのフィードバックを収集するように構成されているロギングサーバーを備える、請求項６１に記載の装置。
【請求項７０】
クライアントにおいて、コンテンツを潜在的に提供し得る１つ以上のサーバーからコンテンツを受けるための手段であって：
そこに該コンテンツが位置し得る場所についての情報を記憶するディレクトリサーバーに対し、該コンテンツのリクエストを送るための送信手段；
該コンテンツを潜在的に提供し得る候補サーバーのリストを含む、該ディレクトリサーバーからの応答を受けるための受信手段；
該コンテンツに対する該候補サーバーのリストから、少なくとも１つの候補サーバーにリクエストを送るための第２の送信手段；および
該少なくとも１つの候補サーバーから該コンテンツを受けるための第２の受信手段、を備える、手段。
【請求項７１】
クライアントに配給様式でコンテンツを送るための手段であって：
ディレクトリサーバーにおいて、該クライアントからのコンテンツのリクエストを受けるための受信手段；
該クライアントに、該コンテンツを潜在的に提供し得る候補サーバーのリストを含む応答を送るための送信手段；および
該コンテンツに対する該候補サーバーのリストに、該クライアントを、該クライアントがその他のクライアントからの次の該コンテンツのリクエストのための該コンテンツのサーバーとして作用し得るように追加するための付加手段、を備える、手段。
【請求項７２】
コンピューターにより実行されるとき、該コンピューターに、クライアントにおいて、コンテンツを潜在的に提供し得る１つ以上のサーバーから該コンテンツを受ける方法を実行させる命令を含む、オペレーティングシステムであって、該方法が、以下：
そこに該コンテンツが位置し得る場所についての情報を記憶するディレクトリサーバーに対し、該コンテンツのリクエストを送るステップ；
該リクエストに応答して、該コンテンツを潜在的に提供し得る候補サーバーのリストを含む、該ディレクトリサーバーからの応答を受けるステップ；
該コンテンツに対する該候補サーバーのリストから、少なくとも１つの候補サーバーにリクエストを送るステップ；および
該少なくとも１つの候補サーバーから該コンテンツを受けるステップ、を包含する、オペレーティングシステム。
【請求項７３】
コンピューターにより実行されるとき、該コンピューターに、クライアントに配給様式でコンテンツを送るための方法を実行させる命令を含むオペレーティングシステムであって、該方法が：
ディレクトリサーバーにおいて、該クライアントからのコンテンツのリクエストを受けるステップ
該クライアントに、該コンテンツを潜在的に提供し得る候補サーバーのリストを含む応答を送るステップ；および
該コンテンツに対する該候補サーバーのリストに、該クライアントを、該クライアントがその他のクライアントからの次の該コンテンツのリクエストのための該コンテンツのサーバーとして作用し得るように追加するステップを包含する、オペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（背景）
（発明の分野）
本発明は、コンピューターネットワークに関する。より詳細には、本発明は、コンピューターネットワークを通るコンテンツの配給送達を容易にする方法および装置に関する。
【背景技術】
【０００２】
（関連技術）
ブロードバンドコミュニケーションの爆発は、インターネットを支援し、マチルメディアおよび高品質ビデオの生きた配給機構になった。ブロードバンドの前には、従来のモデムは、ビデオが要求する大きなファイルサイズには遅すぎた。今や、よりブロードバンドコミュニケーションをもつ人々が増加し、そしてなおより大きなコンテンツのアイテムを要求しており、バンド幅およびサーバー利用は、急速に、配給エンドに対する妨害となってきている。いくつかの事例では、臨時の事件が、人々がそれら事件のビデオを見るためにオンラインニュースサイトに群がるとき、それに架空の停止をもたらした。
【０００３】
いくつかの企業は、この問題を、サーバーファームおよびクラスターを創製することにより解決することを試みた。これらは、需要の日常的なピークの取り扱いにおいては有効であり、そしてフォールト寛容のレベルを創製するが、全体では、臨時事件から生じる需要を取り扱うことでは有効ではない。
【０００４】
増加したブロードバンドにともなう別の問題は、サービスプロバイダーに対する増加
したバンド幅のコストである。インターネットは、多くのより小さなネットワークから構成され、それらは、それらの間の協定を守っている。代表的には、プロバイダーは、それらのネットワークの外側を通過する情報について、より多くを支払わなければならない。同様に、代表的には、それらが要求する情報のレベルが増加するときより多くを支払わなければならない。
【０００５】
これらの問題を、ピアツーピア（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）配給コンテンツ送達ネットワークを創製することにより軽減する試みがなされた。これらのネットワークでは、先にダウンロードされたコンテンツのピアが、次にコンテンツを要求するその他のピアのコンテンツに対する可能なサーバーになる。これらのコンテンツ送達ネットワークは、情報が当初公開されたサーバーファームから離れて移動する往来を承継するが、それらは新たな問題を創製した。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
古典的なピアツーピアネットワークにおける最大の問題の１つは、性能である。極めてしばしば、クライアントがコンテンツをダウンロードするために辿るピアは限られたバンド幅をもち、そしてネットワークに関してトポロジー的に遠い。この場合、クライアントエンドにおけるダウンロード回数は、実際に、増大し得、そしてバンド幅コストも同様に増加し得る。なぜなら、往来が、より多くのネットワークを辿らなければならないからである。
【０００７】
配給コンテンツ送達ネットワークにともなう別の主要な問題は、コンテンツのローカルサーチャーから生じる増大したローカル往来である。ネットワークに対するクライアントが増加するほどローカルサーチャーが増加する。これらの配給ネットワークが成長するにつれ、それらは、実際に、全体ネットワークのより小さなサブセットに分解または分割する。
【０００８】
必要なのは、現存する配給コンテンツ送達ネットワークにともなう問題なくしてネットワークを通るコンテンツの配給送達を容易にするための方法および装置である。
【課題を解決するための手段】
【０００９】
（要約）
本発明の１つの実施形態は、クライアントにおいて、コンテンツを潜在的に提供し得る１つ以上のサーバーからこのコンテンツを受けることを容易にするシステムを提供する。クライアントは、ディレクトリサーバーにコンテンツのリクエストを送ることで始める。このリクエストに応答して、このクライアントは、ディレクトリサーバーからこのコンテンツを潜在的に提供し得る候補サーバーのリストを受ける。一旦、クライアントが候補サーバーのリストを受けると、クライアントは、１つ以上の候補サーバーにコンテンツのリクエストを送り、そして次に１つ以上の候補サーバーからこのコンテンツを受ける。
【００１０】
この実施形態の改変例では、クライアントは、複数の候補サーバーからコンテンツの一部分を受ける。次いで、クライアントは、種々の部分からコンテンツをアセンブルする。
【００１１】
この実施形態の改変例では、クライアントは、サーバーに、クライアントにおけるコンテンツの現在のステータスを示すフィードバックを送る。このフィードバックは、このクライアントが受けたコンテンツの部分；クライアントが現在受けているコンテンツの部分；およびクライアントが受けていないコンテンツの部分を特定する。
【００１２】
この実施形態の改変例では、クライアントは、サーバーに、クライアントにおいて維持されている候補サーバーのためのステータス情報を含むフィードバックを送る。このフィードバックは、所定の候補サーバーの可用性、所定の候補サーバーの性能指標、およびクライアントから所定の候補サーバーへの経路のトレースを含み得る。
【００１３】
この実施形態の改変例では、ディレクトリサーバーに上記コンテンツのリクエストを送る工程は、クライアントが既に有するコンテンツの部分を示すコンテンツのマップを送ることを含む。さらに、Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ（ＮＡＴ）デバイスの後に位置しているクライアントにとって、リクエストを送ることはまた、クライアントの内部アドレスを送ることを含む。
【００１４】
この実施形態の改変例では、クライアントは、第２のクライアントから、この第２のクライアントにコンテンツを送るリクエストを受ける。このリクエストに応答して、クライアントは、コンテンツを第２のクライアントに送る。
【００１５】
この実施形態のさらなる改変例では、クライアントは、このクライアントが候補サーバーからコンテンツの一部分をなお受けている間に、第２のクライアントに、コンテンツの一部分を送る。
【００１６】
この実施形態の改変例では、候補サーバーのリストは、候補サーバーの完全リストのサブセットである。
【００１７】
この実施形態のさらなる改変例は、クライアントは、ディレクトリサーバーに、候補サーバーの完全リストのさらなるサブセットを要求するリクエストを送る。
【００１８】
この実施形態の改変例では、候補サーバーのリストは、コンテンツのオリジナルソースを含むオリジンサーバーを含む。候補サーバーのリストはまた、ミラーサーバーを含み、これは、オリジンサーバーと性能が類似しているが、コンテンツのオリジナルソースのコピーを含んでいる。
【００１９】
この実施形態の改変例では、コンテンツが候補サーバーのリスト中の候補サーバーから入手可能でない場合、クライアントは、候補サーバーからコンテンツを受けることを再び試みる前に、設定時間待機する。
【００２０】
この実施形態のさらなる改変例では、上記設定時間は、クライアントが任意の候補サーバーからコンテンツを受けることに成功しない場合毎に増加する。
【００２１】
この実施形態のさらなる改変例では、コンテンツが、所定の時間の間に候補サーバーのリスト中の候補サーバーから入手可能でない場合、この候補サーバーは、候補サーバーのリストから除かれる。
【００２２】
この実施形態のさらなる改変例では、候補サーバーが特定の性能基準に合致しない場合、この候補サーバーは、候補サーバーのリストから除かれる。
【００２３】
本発明の１つの実施形態は、配給様式でクライアントにコンテンツを送ることを容易にするシステムを提供する。このシステムは、ディレクトリサーバーにおいて、コンテンツに対するリクエストをクライアントから受けることで開始する。次いで、このディレクトリサーバーは、クライアントに応答を送る。この応答は、コンテンツを潜在的に提供し得る候補サーバーのリストを含む。このディレクトリサーバーはまた、このクライアントを、このコンテンツのための候補サーバーのリストに追加し、その結果、このクライアントは、他のクライアントからの次のリクエストのためのコンテンツのサーバーとして作用し得る。
【００２４】
この実施形態の改変例では、候補サーバーのリストが、ネットワーク基準によってソートされる。所定のクライアントに対するネットワーク基準は、複数のクライアントがＮＡＴデバイスの後にある場合、所定のクライアントの外部ＩＰアドレスと同一である外部アドレス、所定のクライアントの自律システム（ＡＳ）と同一であるかまたはトポロジー的に緊密であるＡＳ、および所定のクライアントのＩＰ／２０ネットワークと同一であるかまたはトポロジー的に緊密であるＩＰ／２０ネットワークを含み得る。この実施形態のさらなる改変例では、システムが、より広いゲートウェイプロトコル（ＢＧＰ）情報を受け、候補サーバーのリストをソートすることを容易にし、その結果、クライアントにトポロジー的に最も緊密である候補サーバーが、候補サーバーのリスト中により高く出現する。この候補サーバーのリストはまた、候補サーバーのロード推定または候補サーバーの性能推定のようなその他の基準によってソートされ得ることに注目のこと。
【００２５】
本実施形態の改変例では、クライアントからコンテンツのリクエストを受ける工程は：クライアントが既に有するコンテンツの部分を示すコンテンツのマップを受けること、クライアントがリクエスト中に明確に含められるクライアントのローカルＩＰアドレスを受けること；およびクライアントの外部ＩＰアドレスを受けることをさらに包含する。
【００２６】
この実施形態の改変例では、候補サーバーのリストは、候補サーバーの完全リストのサブセットである。
【００２７】
この実施形態の改変例では、候補サーバーのリストは、コンテンツのオリジンサーバーを含む。
【００２８】
この実施形態の改変例では、候補サーバーのリストからの候補サーバーが、ファイアウォールの後にある場合、ディレクトリサーバーは、候補サーバーに、この候補サーバーがファイアウォールを通じてリクエストするクライアントとのコミュニケーションセッションを開始させるクスエストを送る。
【００２９】
この実施形態の改変例では、候補サーバーのリストからの候補サーバーおよびクライアントが両者ともファイアウォールの後にある場合、ディレクトリサーバーが、候補サーバーおよびクライアントが、それらの個々のファイアウォールを通じて互いにメッセージを同時に送り、候補サーバーとクライアントとの間のコミュニケーションを開始させるリクエストを、候補サーバーおよびクライアントに送る。
【００３０】
この実施形態の改変例では、システムは、ディレクトリサーバーが候補サブセット選択プロセスを容易する、クライアントからのフィードバックを収集することを容易にするロギングサーバーを含む。
【発明を実施するための最良の形態】
【００３１】
（詳細な説明）
以下の説明は、任意の当業者が本発明を作製および使用するために提示され、そして特定の適用およびその要求の文脈で提供される。開示された実施形態に対する種々の改変は、当業者に容易に明らかであり、そして本明細書に規定される一般的な原理は、本発明の思想および範囲を逸脱することなく、その他の実施形態および適用に適用され得る。従って、本発明は、示された実施形態に制限されることは意図されず、本明細書に開示された原理および特徴と整合する最も広い範囲と一致されるべきである。
【００３２】
この詳細な説明で記載されるデータ構造およびコードは、代表的には、コンピューター読み取り可能な記憶媒体上に記憶され、これは、コンピューターシステムによる使用のためのコードおよび／またはデータを記憶し得る任意のデバイスまたは媒体であり得る。これは、制限されないで、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディクス）およびＤＶＤ（デシタル多目的ディスクまたはデジタルビデオディスク）、伝達媒体中に具現化されるコンピューター指示信号（その上で信号が調整されるキャリア波ありまたはなし）のような磁気および光学的記憶デバイスを含む。例えば、この伝達媒体は、インターネットのようなコミュニケーションネットワークを含み得る。
【００３３】
（配給コンピューターシステム）
図１は、本発明の実施形態による配給コンピューターシステム１００を示す。配給コンピューターシステム１００は、ピア１０１およびピア１０２を含む。ピア１０１およびピア１０２は、一般に、コンピューター能力を含み、かつネットワークを通って通信するための機構を含む任意のノードを含み得る。ピア１０１および１０２は、クライアントとして、および他のクライアントにコンテンツを潜在的に供し得る候補サーバーして作用し得ることに注目のこと。図１はまた、ディレクトリサーバー１０４、１０６および１０８、ロギングサーバー１１０、およびオリジンサーバー１１２を含む。サーバー１０４、１０６、１０８、１１０および１１２は、一般に、コンピューターおよび／またはデータ記憶リソースについて、クライアントからのリクエストをサービスするための機構を含むコンピューターネットワーク上に任意のノードを含み得る。
【００３４】
本発明の１つの実施形態では、ピア１０１は、コンテンツのリクエストをディレクトリサーバー１０４に送る。ディレクトリサーバー１０４は、このリクエストを、ディレクトリサーバー１０６またはディレクトリサーバー１０８に送るか、または再配向し得る。次いで、ディレクトリサーバー１０４は、次に、ピア１０１に可能な候補のリストを返送する。任意の時間にピアがコンテンツのリクエストを行い、次いで、このピアはコンテンツの可能な候補サーバーとなり、そして他のクライアントに送られる潜在的な候補サーバーのリスト中に出現し得ることに注目のこと。この候補サーバーのリスト、必要に応じて、コンテンツのオリジナルソースを含むオリジンサーバー１１２を同定し得る。次いで、ピア１０１は、このリストを用いてピア１０２からコンテンツをリクエストする。ピア１０１はまた、ロギングサーバー１１０に、それが有するコンテンツの一部分およびそれがダウンロードを試みたサーバーのような、フィードバック情報を返送する。次いで、ロギングサーバー１１０は、このフィードバック情報を、ピア１０１からディレクトリサーバー１０４に送る。ディレクトリサーバー１０４は、この情報を、コンテンツの後のリクエストに応答するために用いる。
【００３５】
（ディレクトリサーバーアーキテクチャー）
図２は、本発明の実施形態による、ディレクトリサーバー１０４のアーキテクチャーを示す。ディレクトリサーバー１０４は、品目２１２を含む。品目２１２は、公開されたコンテンツのアイテムのための可能な候補のリストを含む。リクエストするピア２１６の１つがコンテンツ用のディレクトリサーバー１０４にリクエストを提示するとき、ＡＳＮ検索モジュール２０８が、このピアがメンバーである自律システム（ＡＳ）の自律システム数（ＡＳＮ）を決定する。
【００３６】
ディレクトリサーバー１０４は、一致セット２００中のアイテムを基に、品目２１２の優先付けたリストのセットを維持している。これらのアイテムは、ＡＳＮ２０２、ＩＰ／２０ネットワーク２０４、およびＩＰアドレス２０６を含む。ＩＰ／２０ネットワークは、２０バイトからなる共通のＩＰアドレスプレフィクスを共有するノードのコレクションであることに注目のこと。さらに、外部ＩＰアドレスは、Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ（ＮＡＴ）または類似のデバイスにより割り当てられたＩＰアドレスを含み得、そしてホストの内部ＩＰアドレスとは異なり得る。サーバー検索モジュール２１０は、ピアの外部ＩＰアドレス２０６を決定し、そして品目２１２中にこの情報を配置する。候補サーバーが、ピアの外部ＩＰアドレスと同一の外部ＩＰアドレスを有する場合、そのときは、それは、このピアにトポロジー的に緊密である可能性が高い。同様に、それが、ピアと同じＩＰ／２０ネットワークのメンバーである場合、そのときは、それはまた、このピアに相対的にトポロジーが緊密である可能性が高い。
【００３７】
サーバー準備モジュール２１４は、リクエストするピア２１６により報告されたフィードバック情報を受け（サーバー準備報告）、そして品目２１２をアップデートする。品目エイジャー２１８は、ディレクトリサーバー１０４が特定の時間内に候補サーバーからなにもない場合、品目２１２から候補を除く。
【００３８】
（ファイアウォールをもつネットワーク）
図３は、本発明の実施形態による、ファイアウォールをもつネットワークを示す。図３において、ピア１０１は、ファイアウォール３００の後に位置し、そしてピア１０２は、ファイアウォール３０２の後に位置する。さらにピア１０１およびピア１０２の両者は、それらの個々のファイアウォールを通じてディレクトリサーバー１０４と通信する。このコミュニケーションの間に、ピア１０１は、ディレクトリサーバー１０４からコンテンツをリクエストする。次に、ディレクトリサーバー１０４は、ピア１０２を含む候補サーバーのリストをピア１０１に送る。ピア１０１は、次いで、Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ（ＵＤＰ）を経由してコンテンツに対するリクエストをピア１０２に送る。ディレクトリサーバー１０４はまた、コンテンツをピア１０１に送るリクエストピア１０２に送る。ピア１０２は、パケットをＵＤＰを経由してピア１０１に送る。（一般に、ＵＤＰの代わりにその他のコネクショクレスプロトコルが用いられ得ることに注目のこと）。ピア１０１からピア１０２へのリクエスト、およびピア１０２からピア１０１へのパケットは、コネクションレスプロトコルを経由して送られたので、それらは、ファイアウォール３００および３０２中に、ピア１０１とピア１０２との間に確立されるべきコネクション３０４を可能にするポートを開放する。
【００３９】
（コンテンツリクエストの属性）
図４は、本発明の実施形態による、コンテンツリクエストの属性を示す。入来するリクエスト４００は、以下の属性を含む：内部ＩＰアドレス４０２；外部ＩＰアドレス４０４、およびＭＯＩＤ４０８。ＭＯＩＤ４０８は、コンテンツが公開されるとき割り当てられるこのコンテンツの特有の識別子であることに注目のこと。内部ＩＰアドレス４０２は、ノードで割り当てられたＩＰアドレスであり、そして外部ＩＰアドレス４０４は、Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ（ＮＡＴ）または類似のデバイスのＩＰアドレスである。ＮＡＴデバイスの人気とともに、ＮＡＴで可能にされたＬＡＮにおけるピアが異なる内部ＩＰアドレスおよび同一の外部アドレスを有することは非常に一般的である。リクエスト者のＡＳについてＡＳＮを決定するためにコンテンツリクエストを分析することもまた可能である。ＡＳＮは、ノードが属する自律システム（ＡＳ）の識別子である。
【００４０】
（ディレクトリサーバー品目）
図５は、本発明の実施形態による、図２からのディレクトリサーバー品目２１２を示す。品目２１２は、すべてのコンテンツのリスト、およびディレクトリサーバー１０４によって知られるコンテンツの可能な候補サーバーを含む。品目２１２はまた、コンテンツを同定するＭＯＩＤ４０８、コンテンツの候補サーバーを同定するノード５０２、および過去にこの候補サーバーがもつと報告されたコンテンツの切片を同定するレンジセット５０４を含み、ノード５０２は、標準的なＰＫＩ技法を用いて同定される。
【００４１】
（初期コンテンツリクエスト）
図６は、本発明の実施形態による、初期コンテンツリクエストのプロセッシングを示す。このシステムは、コンテンツがリクエストされるとき開始し、そしてピア１０１は、コンテンツの任意の部分を有していない（ステップ６００）。
【００４２】
最初に、ピア１０１は、ディレクトリサーバー１０４に、ファイルダウンロードリクエストを空のレンジセットとともに送る（ステップ６０２）。次に、ディレクトリサーバー１０４は、品目２１２からサーバー検索を実施し、そしてコンテンツのために候補サーバーの優先付けたリストを生成する（ステップ６０４）。次いで、ディレクトリサーバー１０４は、上記優先付けたリストからピア１０１に、トップのｎ候補サーバーを戻す（ステップ６０６）。最後に、ディレクトリサーバー１０４は、品目２１２中に、ピア１０１を、コンテンツの可能な後の候補サーバーとして記録する（ステップ６０８）。
【００４３】
（次期コンテンツリクエスト）
図７は、本発明の実施形態による、次期コンテンツリクエストのプロセッシングを示す。このシステムは、ピア１０１がファイルの一部分を受けるが、ファイルに対する特定数の候補サーバーを捨てたとき開始する（ステップ７００）。
【００４４】
最初に、ピア１０１は、ファイルダウンロードリクエストを、アップデートされたレンジセットおよび試みられたサーバーのリストを含むディレクトリサーバー１０４に送る（ステップ７０２）。次に、ディレクトリサーバー１０４は、品目２１２からサーバー検索を実施し、そしてピア１０１のために候補サーバーの優先付けたリストを生成する（ステップ７０４）。次いで、ディレクトリサーバー１０４は、先に試みられたサーバーをフィルターにかけ、そしてこの優先付けたリストからトップｎ候補サーバーをピア１０１に戻す（ステップ７０６）。最後に、ディレクトリサーバー１０４は、ピア１０１の品目２１２中にコンテンツのファイルレンジセットをアップデートする（ステップ７０８）。
【００４５】
（品目エイジング）
図８は、本発明の実施形態による、品目エイジングのプロセスを示す。ピア１０１は、ディレクトリサーバー１０４に、ピア１０１上で利用可能であるコンテンツのファイルレレンジセットを含む、サーバー準備レポートを周期的に送る（ステップ８００）。本発明の１つの実施形態では、ピア１０１は、ディレクトリサーバー１０４に情報を提供するロギングサーバー１１０にサーバー準備レポートを送ることに注目のこと。一旦ディレクトリサーバー１０４が、この新たな情報を有すると、ディレクトリサーバー１０４は、品目２１２をアップデートし、新たな情報により特定される任意の変化を反映する（ステップ８０２）。本発明の別の実施形態では、ピア１０１は、ディレクトリサーバー１０４にサーバー準備レポートを直接送る。周期的に、ディレクトリサーバー１０４は、予め特定された時間内にサーバー準備レポートを送らなかったピアをエイジアウトする（ａｇｅ  ｏｕｔ）（ステップ８０４）。
【００４６】
（インプリメンテーションの詳細）
このセクションは、本発明の実施形態による、データ（媒体対象物）の配給を支配する方針の概説を提供する。このセクションに記載のインプリメンテーションの詳細は、例示であって、本発明を制限することは意味しないことに注目のこと。
【００４７】
（ピアの概説）
クライアント（ピア）のバックエンドは、フロントエンドにより処理されたメタデータおよびユーザーリクエストに基づいて、ローディングおよびサービシングを取り扱う。それは、ローディングに、そしてサービシングに特定の数のトレッド（ｔｈｒｅａｄ）（例えば、各々１２）を従事させる。このようなローダーまたはサーバーは各々、１つのコネクションを支持し得る。スロットリングの不在下では、このピアは、サーバーをこの限界まで受容し、そして行われるべき作業がある場合、この限界までローダーコネクションを確立する。
【００４８】
ピアは、リクエストを受け、コンテンツをロードする。対象物は、優先度を割り当てる。より高い優先度の対象物が、より低い優先度の対象物に優先してロードされる。より高い優先度の対象物に関して行われるべき作業があり、そして利用可能なローダーがない場合、最も低い優先度のローダーが予め空にされ、そしてより高い優先度対象物に再割り当てされる。本発明の１つの実施形態では、各タイプのファイルについてファイル優先度が存在し、そしてさらに、このファイルに対してサーバーとして作用し得る各ピアについてピア優先度が存在する。
【００４９】
対象物は、以下のように優先付けられる：
１．フロントエンドによって「最前面（ｆｏｒｅｇｒｏｕｎｄ）」としてマークされた対象物は、ユーザーの現在の活動と関連する。これらの最前面対象物は、ユーザーの現在の活動と直接関連しない、バックグラウンドとマークされた対象物（例えば、予約により自動的に押される対象物）より先行する順位をとる。
２．そうでなければ、対象物は、最初に入来し、最初にサーブされて優先付けられる。
【００５０】
ピアは、ロードリクエストを、候補サーバーまたは標的のセットに変形する。これらは、コンテンツの可能なソースであり、そして最初に「対象物優先度」（「ファイル優先度」とも称される）によって、そして次に、標的優先度（「ローダー優先度」とも称される）によって優先付けられる。フリーのローダーは、最高の優先度の利用可能な標的を引き受ける。（これに対する例外は、同じ対象物に対する任意のその他の利用可能な標的またはローディング標的が存在する場合、レンジリクエストを支持しない標的が引き受けられないことである）。一般に、標的は、複数のローダーによっては決して引き受けられない。
【００５１】
リクエストされた対象物は、フロントエンドにより、既知または未知のいずれかとしてマークされる。それが未知である場合、そのときは、このリクエストは、ｈｔｔｐ（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）またはｆｔｐ（ｆｉｌｅ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）ｕｒｌ（ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｌｏｃａｔｏｒ）を提供する。そのｕｒｌを表すいくつかの標的（例えば４、または結合が不具である場合１）が創製される。対象物が既知である場合、そのときは、１つの標的が創製され、さらなる標的を提供すると予期されるディレクトリサーバーを表す。ディレクトリサーバーにより戻された標的は、すべてがディレクトリサーバー自身の標的優先度より大きい標的優先度でラベルされる。
【００５２】
ローディング対象物のための標的は、ローディング、利用可能、後退（ｂａｃｋｅｄ  ｏｆｆ）、悪いマーク（ｍａｒｋｅｄ  ｂａｄ）のいずれかである。フロントエンドが停止し、そして対象物のローディングを再開する場合、その標的にすべてはエラーで終わる。後退標的は、後に、特定された時間に、再び利用可能になる。繰り返される後退は、最大（例えば、１／４、１、４、１６、および６４分）までの、より長い時間間隔のためである。この後退間隔は、成功したローディングよりリセットされる。ディレクトリサーバーは、たとえそれが標的を戻すときでさえ（これはその後退間隔をリセットする）１分の後退で開始する。
【００５３】
（ディレクトリサーバーの概説）
ディレクトリサーバー１０４は、媒体対象物の標的に対するリクエストを受ける。このリクエストは、リクエスト者に既に既知である標的のリストを含む。ディレクトリサーバー１０４は、未だ既知でない標的のリストを、標的優先度とそれらに接触するために必要な情報とともに戻す。
【００５４】
ディレクトリサーバー１０４が対象物について知るものがない場合、そのときは、リクエスト者に、５秒待ち、そして再試行するように告げる。その一方、それは、その対象物に関する情報についてメタデータサーバーに接触する。このメタデータサーバーは、コンテンツのオリジナルソースを含む、すべての公開されたコンテンツに関する情報を含む。これに失敗した場合、それは、所定の時間この失敗を記憶し（例えば２分）、そしてその対象物に対する標的をリクエストする任意のピアに、それが見出されないことを告げる。（これは、ピアがダウンロードを抑制するようにする。）このメタデータフェッチが成功する場合、そのときは、ディレクトリサーバー１０４は、標的として戻り得る１つ以上のオリジンサーバーを学習する。
【００５５】
ディレクトリサーバー１０４が、リクエスト者に可能な標的を提供する場合、そのときは、それは、リクエスト者に可能な標的のそのセットを付加する。リクエスト者は、所定の時間後（例えば、２時間、またはリクエスト者がネットワークから出ることを選択した場合直ちに）にこのセットから切れる。ディレクトリサーバー標的セットを新鮮に維持するために、ピアは、それらが供給し得る対象物を周期的（例えば１時間）に報告する。
【００５６】
（ディレクトリサーバー応答処理）
既知対象物について戻された標的（ピアおよびオリジン）のリストは、以下のように決定される（低減する順位のため）：
１．標的がリクエスト者によって既知として報告される場合、そのときは、それは戻されない。
２．戻された標的を生じる目的物に対するリクエスト者からの各リクエストがカウントされる。最後の満たされたリクエストから十分な時間が経過した場合（約３０分といえる）、そのときは、このカウントはリセットされる。このカウントが５００以上である場合、戻されるピア標的はない。これは、ピアおよびディレクトリサーバーを、過剰のリクエストから保護する。
３．多くても、予備決定された数の標的が戻される。
４．エイジアウトされたピアは戻されない。
５．ピアの各々の戻りが（任意の対象物の標的として）カウントされる。ピアがディレクトリサーバー１０４を訪れるとき、このカウントは、活性サービングトレッドのピアの現在の数にリセットされる。
６．最高の優先度の標的が戻される。
７．オリジンがピアより低い優先度で割り当てられる。
８．ピアは２の基礎優先度を有する。それらが、ゼロでない戻りカウントを有する場合、そのときは、それらの基礎優先度は、１／戻りカンウトである。（これは、ロードを配給する。）
９．それがリクエスト者と同じ外部ＩＰアドレスを有する場合、ピア優先度が３３０（＝１０（３２＋１））だけ増やされる。そうでなければ、ピア優先度は、それが、その外部ＩＰアドレスの最初の２０ビット（構成可能）をリクエスト者と共有する場合、２１０（＝１０（２０＋１））だけ増やされる。そうでなければ、ピア優先度は、それが、リクエスト者と同じ（ゼロでない）ＡＳＮにある場合、１０（＝１０（０＋１））だけ増やされる（ローカルソースを好む）。
【００５７】
（ピアローダーの概説）
ファイルの切片を受ける機構であるピアローダーは、標的の１つのレンジから、一度にデータをリクエストする。このレンジサイズは、リクエストオーバーヘッドが小さくなる程に十分大きく、しかし、ピアが、ローダー可用性および性能を変化させることに迅速に適合し得るに十分小さい必要がある。ローダーは、このレンジの１つの読み取りレンジを一度に読み取る。スロットリングを容易にする、この読み取りレンジ範囲は、予期されたサイズで１秒でダウンロード可能であり、そして１０秒のタイムアウトを有する。エラーおよびその他のローダー退去状態が、各読み取りレンジ後にチェックされ、そしてこの読み取りは、このダウンロードが終了またはキャンセルされる場合に中断可能である。リクエストレンジサイズは、より大きな１２８ｋＢおよびこの読み取りレンジでキャップされる。
【００５８】
（レンジアロケーション）
レンジリクエストを支持しない標的は、最初に必要なレンジを効率的に要求する。任意のその他の標的は、好適なオフセットで開始するレンジについて要求され、そしてサイズキャップ、ＥＯＦ、またはローダーに既にロードされたか、または割り当てられた次にレンジで停止する。ローダーが別のローダーに割り当てられたレンジに到達する場合、それは、予め空にされている。（このローダーはこの標的を諦め、これは、その他のローダーに利用可能にされる。）ダウンロードの残量がほとんどないとき、ローダーは、同じレンジをすべてロードし得る（ダウンロードを終了するための競争）。
【００５９】
好適なオフセットを見出すために、ローダーは、最初、候補レンジのセットを生成し、次いで、このセットからレンジを選択する。この候補レンジのセットは、空でない以下の最初のものであり得る：
１．標的が有し、しかもその他の不完全ローディング標的のすべてが有さない、割り当てられていないバイトのセット（従って、ピアは、その「近傍」とは異なるレンジを仕上げる。）；
２．割り当てられておらず、しかも標的が有するバイトのセット；
３．割り当てられていないバイトのセット；および
４．別のローダーに割り当てられているバイトのセット。
【００６０】
次に、そのレンジのセットからの選択されたレンジは以下のいずれかである：
１．標的から受けた最後のレンジと連続している；
２．未知の最大サイズのセットの末端において、開放末端のレンジである部分；
・オフセットは、このレンジの開始から３２＊の距離にある（レンジサイズキャップ）。（これは、ＥＯＦが見出されるまで、ステップアウトすることによりファイルが如何に遠く伸びるかを発見するためである。）
３．レンジセットにおける最大レンジの部分；
・オフセットは、全サイズレンジについてその後に十分なバイトが存在する場合、またはレンジバイトが別のローダーに割り当てられる場合、このレンジの中央にある。（ローダーが、互いから可能な限り遠く離れてそれらのロードを開始することを試す場合、そのときは、それらが、その他の誰かによって既にロードされた特定物にぶつかる前に連続的により良好にロードし得る。）
・そうでなければ、オフセットは、このレンジの最初にある。（従って、レンジは、非効率的に小サイズに分割されない。）
（エラー）
Ｉ／Ｏエラーは、後退（ｂａｃｋｏｆｆ）を引き起こす。例外は、ピア標的に対する連結が作製できないときである；これは、標的を悪いマーク（ｍａｒｋｅｄ  ｂａｄ）にする。標的が、一貫しないファイルサイズを報告する場合であるか、または目的物ファイルを有さないか、もしくはロードを許可しないことは、そのときは、標的は悪いマークである。ディレクトリサーバーがそのような報告に戻る場合、そのときは、ダウンロードは中止される。
【００６１】
すべてのファイルは、ブロック署名のセットから構成される署名を有する。ダウンロードの間に、各１ＭＢブロックは、それが終了されるときチェックされる。ブロックチェックが失敗する場合、そのときは、それに寄与する任意のピア標的は悪いマークである。ブロックがオリジンにより完全に供給される場合、そのときは、ダウンロードは中止される。
【００６２】
後退エラーはまた、プアサービスによって引き起こされ得る。プアサービスは、２分間にバイトがないとして、または２分後にすべてのローダーがビジーであり、そして対象物について利用可能な標的が存在し、そしてこのローダーが、この目的物のローダーについて平均バンド幅の３分の１未満または２５０バイト／秒を得ている場合として規定され得る。
【００６３】
１０秒より大きい停止リクエスト、またはディレクトリサーバーからの停止リクエストは、休止よりもむしろ後退として（ローダーは標的を諦める）取り扱われる。
【００６４】
（ピアサーバーの概説）
ピアがネットワークから脱退するか、または対象物を知らないか、またはそのコピーが悪い場合、そのときは、それは対象物を供しない。そうでなければ、それは、署名チェックされ（ブロック署名が存在した場合）、しかもリクエスト者がリクエストした、それがもつ最大連続レンジのバイトを供する。署名チェッキングは、ブロックのチェックサムを算出すること、およびそれを信用されたソースからのクリプト化（ｅｎｃｒｙｐｔｅｄ）チェックサムと比較することを含む。このようなバイトが存在しない場合、そのときは、サーバーは、リクエスト者に５秒間の停止を告げ、そして次に再試行する。サーバーは、それが何バイトを有するのかをリクエスト者に報告し、その結果、次のリクエストがより良好に知らされる。サーバーが対象物をなおロードしている場合、そのときは、それは、リクエスト者を、その標的のリストに追加する。（サーバーは、リクエスト者が有する何バイトがリクエストの一部分としてなのかを学習する）。
【００６５】
（インプメンテーションノート）
各ピア、およびディレクトリサーバーは、インメモリーデータベース、または対象物および標的の品目を維持する。この品目は、対象物エントリー（ＭＯ）のセット、ピアおよびオリジンエントリーのセット（Ｎｏｄｅ）、およびピアまたはオリジン（ＭＯＮｏｄｅ）上の対象物の状態に関する情報をもつエントリーのセットである。各エントリーは、関連するエントリーに関する情報を含む。例えば、Ｎｏｄｅは、ＩＰアドレスおよびポートのような接触情報を含み、ＭＯＮｏｄｅは、対象物ファイルのどの部分がピアまたはオリジン上で利用可能であるかを記録するレンジセットを含む。この品目はまた、アクセスを早くするための種々の基準によりソートされたこれらセットのサブセットを維持する。ディレクトリサーバーは、終了したエントリーをゆっくり取り除く。ピアは、ダウンロードが終了またはキャンセルされるとき、標的エントリーを取り除き、そして対象物が削除されるとき対象物エントリーを取り除く。
【００６６】
本発明の実施形態の先行する記載は、例示および説明のみの目的で提示されている。それらは、消尽されているか、または本発明を開示の形態に制限することは意図されていない。従って、多くの改変および変形が当業者に明らかである。さらに、上記の開示は、本発明を制限する意図はない。本発明の範囲は、添付の請求項により規定される。
【図面の簡単な説明】
【００６７】
【図１】図１は、本発明の実施形態に従う、配給システムを図示する。
【図２】図２は、本発明の実施形態に従う、ディレクトリアーキテクチャーを図示する。
【図３】図３は、本発明の実施形態に従う、ファイアウォールをもつネットワークを図示する。
【図４】図４は、本発明の実施形態に従う、コンテンツリクエストの属性を図示する。
【図５】図５は、本発明の実施形態に従う、ディレクトリサーバー品目を図示する。
【図６】図６は、本発明の実施形態に従う、初期コンテンツリクエストのプロセッシングを図示する。
【図７】図７は、本発明の実施形態に従う、次のコンテンツリクエストのプロセッシングを図示する。
【図８】図８は、本発明の実施形態に従う、品目のエイジングを図示する。
【図１】
2005525611.tif 000003
【図２】
2005525611.tif 000004
【図３】
2005525611.tif 000005
【図４】
2005525611.tif 000006
【図５】
2005525611.tif 000007
【図６】
2005525611.tif 000008
【図７】
2005525611.tif 000009
【図８】
2005525611.tif 000010
【国際調査報告】
2005525611.tif 000011
2005525611.tif 000012
2005525611.tif 000013