(57)【要約】【課題】  コンテンツを配信するための方法（３００、４００）およびシステム（１２０）を提供する。【解決手段】  キャッシングプロキシ（１２０）において、コンテンツソース（１１０）からコンテンツオブジェクトの第１のバージョンが受信される。コンテンツオブジェクトの第１のバージョンはキャッシングプロキシにおいてトランスコードされ、第２のバージョンが作成される。キャッシングプロキシにおいて第１のバージョンおよび第２のバージョンのうちの少なくとも一方をキャッシュするか否かが決定される。その決定は、キャッシング方法に従って行われ、その後、実施される。
2006506738.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツを配信する方法（４００）であって、
キャッシングプロキシにおいて、コンテンツソースからコンテンツオブジェクトの第１のバージョンを受信することと（３４０）、
前記キャッシングプロキシにおいて前記第１のバージョンをトランスコードし、前記コンテンツオブジェクトの第２のバージョンを作成することと（３５０）、
前記キャッシングプロキシにおいて前記第１のバージョンおよび前記第２のバージョンのうちの少なくとも一方をキャッシュするか否かを決定することであって、第１のキャッシング方法に従って行われる、該決定することと
前記決定を実施することと（３８０）
を含む方法。
【請求項２】
前記キャッシングプロキシにおいて前記第１のバージョンをキャッシュすること（３７０）と、
クライアント装置から前記コンテンツオブジェクトの要求を受信すること（３１０）であって、該クライアント装置は、前記第１のバージョンからトランスコード可能である、前記コンテンツオブジェクトのバージョンに対応する属性を有することと、
前記属性に従って、前記第１のバージョンをトランスコードすること（３５０）と
を含む請求項１に記載の方法。
【請求項３】
前記キャッシングプロキシにおいて、前記第１のバージョンをキャッシュすることと（３７０）、
クライアント装置から前記コンテンツオブジェクトの要求を受信すること（３１０）であって、該クライアント装置は、前記第１のバージョンからトランスコードすることができない前記コンテンツオブジェクトのバージョンに対応する属性を有することと、
前記属性に対応する前記コンテンツオブジェクトのバージョンを、前記コンテンツソースから検索することと（３４０）
を含む請求項１に記載の方法。
【請求項４】
前記キャッシングプロキシにおいて、前記第２のバージョンをキャッシュすること（３８０）
を含む請求項１に記載の方法。
【請求項５】
クライアント装置から前記コンテンツオブジェクトの要求を受信すること（３１０）であって、前記クライアント装置は、前記第２のバージョンからトランスコード可能である前記コンテンツオブジェクトのバージョンに対応する属性を有することと、
前記属性に従って、前記第２のバージョンをトランスコードすることと（３５０）
を含む請求項４に記載の方法。
【請求項６】
前記キャッシングプロキシにおいて、前記第１のバージョンおよび前記第２のバージョンの両方をキャッシュすること（３８０）
を含む請求項１に記載の方法。
【請求項７】
前記コンテンツオブジェクトは、
ビデオデータ
を含む
請求項１に記載の方法。
【請求項８】
前記第１のキャッシング方法とは異なる第２のキャッシング方法を選択すること（３７０）
を含む請求項１に記載の方法。
【請求項９】
前記キャッシングプロキシにおいて、前記トランスコードする前に、前記コンテンツオブジェクトの前記第１のバージョンの一部をバッファリングすること（３４０）
を含む請求項１に記載の方法。
【請求項１０】
前記キャッシングプロキシにおいて、前記トランスコードに続いて、前記コンテンツオブジェクトの前記第２のバージョンの一部をバッファリングすること（３２０）
を含む請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はコンテンツデリバリネットワークに関する。
より具体的には、本発明の実施形態はキャッシングプロキシに関する。
【背景技術】
【０００２】
インターネットにおいてキャッシングが広く用いられる前には、クライアントによって要求されるコンテンツのアイテム（コンテンツオブジェクト）は大抵の場合に元のコンテンツサーバ（コンテンツオブジェクトのソース）によって提供されていた。
コンテンツソースおよびクライアントは典型的には、互いからかなり離れて位置しており、その結果として多くの場合に、応答時間が遅くなり、帯域幅が狭くなり、ロスレートが高くなり、スケーラビリティを欠いていた。
応答時間、帯域幅およびロスレートは、多数のクライアントが、コンテンツソースから１つのオブジェクトを同時に要求しようとするときにも、大きく影響を及ぼされる可能性があった。
【０００３】
コンテンツデリバリネットワークのような種々の形態のキャッシングは、これらの問題のうちのいくつかを克服するのを助けてきた。
一般的に、コンテンツデリバリネットワークは、クライアントの近くにサーバ、さらに具体的にはキャッシングプロキシとも呼ばれるサーバを配置する。
コンテンツオブジェクトは各キャッシングプロキシにおいて複製され、キャッシュされることができる。
クライアントの近くにあるキャッシングプロキシ上にコンテンツをキャッシュすることは、応答時間が短くなる、帯域幅が広くなる、ロスレートが低くなる、スケーラビリティが改善される、ネットワーク（バックボーン）リソースのための要件が緩和されることを含む、数多くの改善に繋がってきた。
【０００４】
コンテンツデリバリネットワークは、コンテンツのサイズがキャッシュのサイズと比べて相対的に小さいときに良好に機能する。
たとえば、ウエブページは一般的に、そのサイズが１メガバイトよりもはるかに小さい。
したがって、各キャッシングプロキシにおいて、この種のコンテンツを実際に複製することができる。
ウエブコンテンツの多数のインスタンスを、大量のメモリ資源を必要とすることなく、あるいは利用可能なメモリのかなりの部分を消費することなく、各キャッシングプロキシ上に記憶することができる。
【０００５】
しかしながら、コンテンツが、サイズが大きく、かつ長時間を要する可能性があるマルチメディアデータを含むときに、キャッシングに問題が生じる可能性がある。
キャッシュが大きい場合であっても、マルチメディアコンテンツの少数のアイテムを保持しただけで、一杯になってしまう可能性がある。
たとえば、ＤＶＤ（デジタルビデオディスク）品質の映像は最大で、サイズが４．７ギガバイト（ＧＢ）および長さが２時間（ＭＰＥＧ(Moving Picture Expert Group)−２圧縮に基づく）に達する場合がある。
結果として、５０ＧＢキャッシュは、ＤＶＤ品質の映像を約１０個しか保持することができない。
したがって、マルチメディアデータの場合、クライアントの近くにあるキャッシングプロキシにおいて多数のＤＶＤ品質の映像を複製し、各映像のコピーを記憶することは実用的な解決策ではない。
非常に大きなメモリが必要とされるようになるか、あるいは少数の映像しか記憶することができないであろう。
一方、中央のソースあるいは限られた数のキャッシングプロキシのみにマルチメディアコンテンツの多数のアイテムを記憶するだけでは、先に記載し
た問題が再び生じる。
【０００６】
上記の問題は、多数の異なるコンテンツオブジェクトがあるだけでなく、各オブジェクトの多数のバージョンがあることを考えるときに、さらに酷くなる。
エンドユーザによって利用される多種多様なタイプのネットワーク接続に対応するために、種々のバージョンが存在する場合がある。
たとえば、各コンテンツオブジェクトが、ダイヤルアップ接続用のあるビットレートと、ブロードバンド接続用の別のビットレートとで符号化される場合がある。
さらに、現時点で利用されている種々のタイプのクライアント装置（たとえば、デスクトップ、ラップトップ、携帯情報端末、携帯電話など）によって提供される種々の能力に対応するために、種々のバージョンが存在する場合がある。
装置の種類が異なると通常は処理および表示能力が異なる。
たとえば、携帯情報端末はストリーミング型の映像を受信し、表示することはできるが、デスクトップの処理および表示能力は持たない。
したがって、携帯情報端末用に、その映像のビットレートが低く／解像度が低いバージョンが作成され、一方、デスクトップは、ビットレートが高く、かつ解像度が高い異なるバージョンを利用する。
一般的に、使用されている種々のタイプのクライアント装置および種々のタイプの接続に対応するために、典型的には各コンテンツオブジェクトの種々のバージョンが存在するであろう。
【０００７】
同じオブジェクトであっても、異なるバージョンが要求される場合には、キャッシングプロキシはオブジェクト要求を個別に処理する。
それゆえ、各キャッシングプロキシは、同じオブジェクトの種々のバージョンを記憶している可能性が高い。
またコンテンツソースにも、同じオブジェクトの種々のバージョンが存在する場合がある。
先に説明されたように、キャッシングプロキシにおいて記憶することは、コンテンツソースにおいて記憶するよりも優れたいくつかの利点を提供する。
しかしながら、いずれの場合でも、記憶空間が非効率的に利用されている。
【０００８】
したがって、エンドユーザに対してコンテンツオブジェクトを配信する、より効率的な方法が望まれる。
本発明の実施形態はそのような改善を提供する。
【特許文献１】米国特許出願公開第２００２／００７４１３号
【特許文献２】米国特許出願公開第２００２／０６５８９９号
【発明の開示】
【課題を解決するための手段】
【０００９】
本発明の実施形態は、コンテンツを配信するための方法およびシステムに関する。
キャッシングプロキシにおいて、コンテンツソースからコンテンツオブジェクトの第１のバージョンが受信される。
コンテンツオブジェクトの第１のバージョンはキャッシングプロキシにおいてトランスコードされ、第２のバージョンが作成される。
キャッシングプロキシにおいて第１のバージョンおよび第２のバージョンのうちの少なくとも一方をキャッシュするか否かが決定される。
その決定は、キャッシング方法に従って行われ、その後、実施される。
【００１０】
本明細書において援用され、かつ本明細書の一部を構成する添付の図面は、本発明の実施形態を例示しており、その記述とともに、本発明の原理を説明するのに有用である。
【００１１】
本明細書において参照される図面は、具体的に述べられる場合を除いて、縮尺どおりに描かれているものと理解されるべきではない。
【発明を実施するための最良の形態】
【００１２】
ここで本発明の種々の実施形態が詳細に参照されることになり、その数々の例が添付の図面に示される。
本発明はこれらの実施形態とともに説明されることになるが、本発明をこれらの実施形態に限定することは意図していないことは理解されよう。
それどころか、本発明は、添付の特許請求の範囲によって規定されるような、本発明の精神および範囲内に含まれる場合がある、代替形態、変更形態および同等形態を網羅することが意図されている。
さらに、本発明の以下の説明では、本発明を完全に理解してもらうために、数多くの具体的な細部が述べられる。
他の事例では、既知の方法、手順、構成要素および回路は、本発明の態様を不必要に曖昧にしないように詳細には説明されていない。
【００１３】
本発明の実施形態は、本明細書において一般的にメディアデータ、マルチメディアデータ、コンテンツあるいはコンテンツオブジェクトと呼ばれる、映像系データ、音声系データ、画像系データ、ウエブページ系データ、グラフィックスデータなどで用いるのに適している。
明瞭かつ簡潔にするために、以下の説明および例は時に、具体的には映像データを取り扱う。
しかしながら、本発明の実施形態は、映像データで用いることに限定されない。
【００１４】
図１は、本発明の一実施形態によるコンテンツを配信するためのネットワークあるいはシステム１００を示す。
システム１００は図示されるもの以外の構成要素を含むことができることは理解されたい。
またシステム１００は、図示される種々の構成要素を２つ以上含むこともできる。
これらの構成要素のそれぞれの機能は後に説明する。
これらの構成要素は、説明される機能以外の機能を実施することができることは理解されたい。
【００１５】
本実施形態では、図示されるように、システム１００の種々の構成要素が互いに通信することができる。
すなわち、本実施形態では、コンテンツソース１１０はキャッシングプロキシ１２０と通信し、キャッシングプロキシはさらに、通信チャネル１２５を介してクライアント装置１３０と通信する。
一般的には、キャッシングプロキシ１２０は典型的には、ネットワークあるいはシステム１００の端に配置され、コンテンツソース１１０に対するトラフィックおよびコンテンツソース１１０からのトラフィックを低減するとともに、クライアント装置１３０によって認識される待ち時間も低減する。
後に明らかになるように、本発明の種々の実施形態によれば、キャッシングプロキシ１２０はトランスコーダの機能を組み込む。
したがって、キャッシングプロキシ１２０はトランスコーディングおよびキャッシングを実行する。
【００１６】
クライアント装置１３０には、コンピュータシステム（ラップトップ、デスクトップあるいはノートブックなど）、ハンドヘルド装置（携帯情報端末など）、携帯電話、あるいは一般的に、ユーザがコンテンツのアイテムにアクセスし、そのアイテムを実行（たとえば表示）できる能力を提供する、別のタイプの装置を用いることができる。
先に述べたように、実際には、キャッシングプロキシ１２０にアクセスする数多くのクライアント装置が存在する場合がある。
異種ネットワークでは、これらのクライアント装置はそれぞれ異なる属性およびプロファイルを有することができる。
これらの属性は、限定はしないが、種々のクライアント装置の表示、電力、通信および計算能力および特性を含む。
【００１７】
通信は構成要素間で直に行うことができるか、あるいは媒介装置あるいはノード（図示せず）を通して間接的に行うことができる。
また通信は有線または無線、あるいは有線および無線の組み合わせを用いることができる。
一実施形態では、通信はワールド・ワイド・ウエブ（あるいはインターネット）上で行われる。
実際には、キャッシングプロキシ１２０の下流に数多くの通信チャネルが存在する場合がある。
異種ネットワークでは、これらの通信チャネル（通信チャネル１２５によって例示される）はそれぞれ種々の属性を有することができる。
たとえば、１つのチャネルが、別のチャネルよりも帯域幅が広い（データ転送速度が高い）という特徴を有することができる。
【００１８】
図２は、本発明の一実施形態によるキャッシングプロキシ１２０によって提供される機能要素を示すブロック図である。
本実施形態では、キャッシングプロキシ１２０は、クライアントインターフェース２１０と、入力バッファ２２０と、トランスコーダ２３０と、キャッシングシステム２４０と、出力バッファ２５０と、サーバインターフェース２６０とを含む。
これらの要素は、図示および説明を明瞭にするために個別に描かれている。
しかしながら、これらの要素がキャッシングプロキシ１２０内に個別の実体として存在しない場合もあることは理解されたい。
たとえば、入力バッファ２２０、キャッシングシステム２４０および出力バッファ２５０は単一のメモリユニットにおいて具現される場合があり、トランスコーダ２３０は、ハードウエア、ファームウエア、あるいはおそくらキャッシングシステムおよびバッファと同じメモリユニット内のコンピュータ読取り可能命令として記憶されるソフトウエアにおいて具現される場合がある。
同様に、クライアントインターフェース２１０およびサーバインターフェース２６０は、個別の要素あるいは同じ要素内のソフトウエア、ファームウエアあるいはハードウエアとして具現される場合がある。
一般的に、本発明の種々の実施形態によれば、キャッシングプロキシ１２０は、図２の種々の要素によって提供される能力および機能を提供する。
さらに、キャッシングプロキシ１２０は、本明細書に説明するものに加えて、他の能力および機能を提供することができる。
【００１９】
本実施形態では、クライアントインターフェース２１０によって、キャッシングプロキシ１２０は、コンテンツソース１１０に対するクライアントとして機能できるようになる。
一実施形態では、クライアントインターフェース２１０はＨＴＴＰ（ハイパーテキスト転送プロトコル）クライアントとして、あるいはＲＴＰ／ＲＴＳＰ（リアルタイムプロトコル／リアルタイムストリーミングプロトコル）クライアントとして機能する。
ある程度同じようにして、サーバインターフェース２６０によって、キャッシングプロキシ１２０は、エンドユーザ（たとえば、クライアント装置１３０）に対するサーバとして機能できるようになる。
一実施形態では、サーバインターフェース２６０は、ＨＴＴＰクライアントとして、あるいはＲＴＰ／ＲＴＳＰクライアントとして機能する。
クライアントインターフェース２１０およびサーバインターフェース２６０とともに他のプロトコルを用いることができる。
【００２０】
本実施形態では、キャッシングプロキシ１２０は、映像を配信するために以下の役割を果たす。
コンテンツソース１１０からリンク（あるいはアップリンク）上でストリーミング型コンテンツが受信される。
そのコンテンツは圧縮（符号化）されても、されなくてもよい。
そのコンテンツは暗号化されても、されなくてもよい。
受信されたストリーム（具体的には、受信されたストリームのある部分）は、入力バッファ２２０にバッファリングされるか、キャッシングシステム２４０にキャッシュされるか、あるいはトランスコーダ２３０に直に送信される場合がある。
また受信されたストリームは、サーバインターフェース２６０を介して、リンク（あるいはダウンリンク）上でクライアント装置１３０に送信される場合もある。
【００２１】
受信されたストリームがバッファリングされる場合には、トランスコーダ２３０が、トランスコードするために、入力バッファ２２０からビットを連続して取り込むであろう。
またトランスコーダ２３０は、トランスコードするために、キャッシングシステム２４０からキャッシュされたオブジェクトを検索することもできる。
トランスコードされたビットは、トランスコーダ２３０からキャッシングシステム２４０に、あるいは出力バッファ２５０に、あるいはサーバインターフェース２６０に送信されることができる。
キャッシングプロキシ１２０は、コンテンツオブジェクトを、入力バッファ２２０、出力バッファ２５０、あるいはトランスコーダ２３０（トランスコードされたバージョンが生成されるとき）のいずれからキャッシュするかを決定することができる。
サーバインターフェース２６０は、出力バッファ２５０から、あるいはキャッシングシステム２４０から（直に、あるいは出力バッファ２５０を介して）、トランスコードされたビットを受信することもできる。
【００２２】
一般的に、ビデオストリームは、たとえばアップリンク、ダウンリンクおよび／またはトランスコーダ２３０の速度に応じて、キャッシングプロキシ１２０を通る多数の異なる経路をとることができる。
多数の異なるストリームをキャッシングプロキシ１２０によって同時に処理することができる。
同時に処理されるが、あるストリームはある処理段階にあり、一方、別のストリームは異なる段階にある場合がある。
【００２３】
トランスコーダ２３０はストリーミングによってコンテンツを処理することになるので、入力バッファ２２０および出力バッファ２５０のサイズは小さくすることができる。
高いビットレートから低いビットレートへのトランスコーディング、高い解像度から低い解像度へのトランスコーディング、あるいは両方の組み合わせを用いることができる。
種々のトランスコーディング方式のうちの任意のものをトランスコーダ２３０によって用いることができる。
一実施形態では、当該技術分野において知られている圧縮領域トランスコーディング方式が用いられる。
圧縮領域トランスコーディングでは、入力映像（典型的には符号化されている）の一部だけが復号化（圧縮解除）される。
動き情報を再利用しながら、圧縮領域においてレート適応化が実行される。
圧縮領域トランスコーディングは、映像が復号化され、トランスコードされ、その後、再符号化される他の方式に対して、トランスコーディング速度を大幅に改善することができる。
【００２４】
トランスコーディングプロセスの速度は、トランスコーディングビットレートによって測定することができ、それは、時間とともにトランスコーダ２３０が生成するビット数（たとえば、ビット／秒）として定義される。
トランスコーディングビットレートがアップリンクあるいはダウンリンク帯域幅のいずれかの最小帯域幅以上である場合、トランスコーダ２３０によって、コンテンツソース１１０からクライアント装置１３０へのコンテンツオブジェクトの配信に遅れは生じないであろう。
【００２５】
ここまでを要約すると、本発明の実施形態によれば、キャッシングプロキシ１２０はトランスコーディングおよびキャッシングを実行し、コンテンツの適応化がネットワークの端の近くで実行されるようにする（たとえば、図１のシステム１００）。
キャッシングプロキシ１２０は、異種ネットワーク（すなわち、種々の属性を有するクライアント装置から構成され、さらに種々のタイプの通信チャネルから構成されるネットワーク）においてエンドユーザを満足させるために、コンテンツオブジェクトを異なるバージョン（あるいは異なる形態）にトランスコードすることができる。
クライアント装置１３０との接続のタイプ（たとえば速度）、およびクライアント装置１３０の属性に応じて、キャッシングプロキシ１２０は、コンテンツソース１１０あるいはキャッシングシステム２４０のいずれかから受信されるコンテンツオブジェクトを（必要に応じて）トランスコードし、コンテンツオブジェクトの適当なバージョンをクライアント装置１３０に配信することができる。
【００２６】
本質的には、キャッシングプロキシ１２０は、記憶に関する負荷がない代わりに、計算に関する負荷をもたらす。
しかしながら、先に説明したように、いくつかの例では、トランスコーディングに関連する計算の負荷によって、コンテンツソース１１０からクライアント装置１３０へのコンテンツオブジェクトの配信に遅れは生じないであろう。
後に明らかになるように、これにより、キャッシングプロキシ１２０上で利用可能なキャッシュ空間をさらに効率的に使用できるようになる。
また、キャッシングプロキシ１２０によって提供されるトランスコーディング能力のために、各コンテンツオブジェクトの種々のバージョンをコンテンツソース１１０において記憶する必要はない。
代わりに、コンテンツソース１１０において１つのバージョン（一般的には、最も高いビットレートのもの）が記憶される。
こうして、コンテンツソース１１０において利用可能なメモリ空間も、さらに効率的に利用される。
【００２７】
先に述べたように、図２のキャッシングプロキシ１２０は、コンテンツオブジェクト（具体的には、あるバージョンのコンテンツオブジェクト）を、入力バッファ２２０、出力バッファ２５０あるいはトランスコーダ２３０（トランスコードされたバージョンが生成されるとき）のいずれからキャッシュするかを決定することができる。
ある特定のコンテンツオブジェクトの種々のバージョンが確かに可能であり、存在する場合がある。
キャッシングプロキシ１２０において、１つあるいは複数のどのバージョンがキャッシングされるべきであるかを判定するために、種々のキャッシング方式あるいは方法を用いることができる。
キャッシングプロキシ１２０は、使用中のキャッシング方式に従って、ある特定のバージョンをキャッシングしないものと判定することができることに留意されたい。
また、キャッシングプロキシ１２０は、あるコンテンツオブジェクトのあるバージョンがコンテンツソース１１０から検索されている間に、アップリンクにおいてパケットロスがあったことを確認することもできるので、たとえば、映像品質に影響を及ぼすほどパケットロスが大きい場合には、そのバージョンをキャッシングしないものと判定することができる。
【００２８】
あるバージョンＸがバージョンＹからトランスコードすることによって獲得できる場合には、バージョンＹはバージョンＸのトランスコード可能なバージョンと呼ぶことができる。
逆に、バージョンＸはバージョンＹのトランスコードバージョンと呼ぶことができる。
ビデオトランスコーディングでは、ビットレートが高いバージョンを、ビットレートが低いバージョンにトランスコードすることができる。
たとえば、６４Ｋｂｐｓ（キロビット／秒）のビットレートの映像を、１２８Ｋｂｐｓのビットレートの同じ映像からトランスコードすることができる。
しかしながら、トランスコードされたバージョンは、トランスコード可能なバージョンに対して、いくらか忠実度を失う場合がある。
図２のキャッシングプロキシ１２０は、１〜Ｎ−１個の忠実度を失ったトランスコードされたバージョンを生成することができる。
ただしＮは可能なバージョンの総数である。
ビデオトランスコーディングの場合、この忠実度損失は、特にビットレート低下が解像度低下に結び付けられるときには、無視できるものと考えられる。
たとえば、１Ｍｂｐｓ（メガビット／秒）においてＣＩＦ（一般交換形式）解像度（３５２×２８８）のビデオクリップがＱＣＩＦ（クォータＣＩＦ、１７６×１４４）の解像度の能力を有する装置に配信されることになるとき、解像度の低下によって、ビットレートが約４分の１に低下するだけである。
【００２９】
クライアント装置１３０が、要求されているコンテンツオブジェクトのある特定のバージョンを指定することができるか（たとえば、ユーザ入力に基づく）、あるいはクライアント装置１３０上に常駐するエージェントソフトウエアが、クライアント装置１３０の能力（接続速度を含む）をキャッシングプロキシ１２０に通知することができる。
前者の場合、クライアント装置１３０の能力および接続のタイプを知っているユーザが、コンテンツオブジェクトのある特定のバージョンを（たとえばメニューから）選択することができる。
後者の場合、キャッシングプロキシ１２０が、クライアント装置１３０の接続のタイプおよび能力に対応するバージョンを選択することができる。
【００３０】
コンテンツオブジェクトのビットレートＢ１、Ｂ２、...、ＢＮのＮ個のバージョンが存在する場合について考えてみる。
ただし、Ｂ１＞Ｂ２＞...ＢＮである。
ビットレートＢＪのバージョンがクライアント装置１３０によって要求されるとき、種々のタイプの応答が可能である。
第１のタイプの応答では、バージョンＢＪは、キャッシングプロキシ１２０のキャッシングシステム２４０から入手できる場合がある。
すなわちバージョンＢＪはコンテンツソース１１０から予め受信されている。
別法では、ＢＪのトランスコード可能なバージョンがコンテンツソース１１０から受信されている場合があり、そのトランスコード可能なバージョンはバージョンＢＪにトランスコードされ、その後、バージョンＢＪがキャッシングシステム２４０にキャッシングされた。
いずれの場合でも、バージョンＢＪはキャッシングプロキシ１２０から入手可能である。
あるコンテンツオブジェクトの要求されたバージョンがキャッシングシステム２４０内に存在する場合は、本明細書において正確なヒットと呼ばれる。
【００３１】
第２のタイプの応答では、バージョンＢＪはキャッシングシステム２４０から入手することができない。
しかしながら、トランスコード可能なバージョン（たとえば、ＢＪよりも高いビットレートを有するバージョンＢＩ）をキャッシングシステム２４０から入手することができる。
すなわち、バージョンＢＩはコンテンツソース１１０から予め受信されている。
別法では、ＢＩのトランスコード可能なバージョンがコンテンツソース１１０から受信されている場合があり、そのトランスコード可能なバージョンはバージョンＢＩにトランスコードされ、その後、バージョンＢＩがキャッシングシステム２４０にキャッシュされた。
いずれも場合でも、バージョンＢＩはキャッシングプロキシ１２０から入手することができる。
したがって、キャッシングプロキシ１２０は、コンテンツソース１１０からバージョンＢＪを受信する（取り込む）代わりに、バージョンＢＩをバージョンＢＪにトランスコードすることができる。
要求されたバージョンがキャッシングシステム２４０内に存在しないが、トランスコード可能なバージョンが存在する場合、それは本明細書においてトランスコードヒットと呼ばれる。
【００３２】
第３のタイプの応答では、要求されたバージョンおよびトランスコード可能なバージョンのいずれもキャッシングシステム２４０から入手することができない。
この場合は、本明細書においてミスと呼ばれる。
この場合、要求されたバージョンあるいは要求されたバージョンのトランスコード可能なバージョンがコンテンツソース１１０から検索される。
キャッシングプロキシ１２０はトランスコーディング機能を提供するので、コンテンツソース１１０は、コンテンツオブジェクトの単一のビットレートバージョン（複数のビットレートが低いバージョンにトランスコードすることができるバージョンを提供するために、最も可能性が高いのは、ビットレートが高いバージョンである）のみを記憶することができる。
【００３３】
キャッシングシステム２４０に、コンテンツオブジェクトの１つあるいは複数のどのバージョンが記憶されるべきかを決定するために、キャッシングプロキシ１２０によって種々のタイプのキャッシング方法あるいは方式が用いられる場合がある。
一実施形態では、各コンテンツオブジェクトの１つのバージョンのみをキャッシングシステム２４０に記憶することができるキャッシング方法が用いられる。
別の実施形態では、キャッシングシステム２４０に各コンテンツオブジェクトの多数のバージョンを記憶することができるキャッシング方法が用いられる。
あるオブジェクトの１つのバージョンのみがキャッシュされるキャッシング方法を最初に説明し、あるオブジェクトの多数のバージョンを記憶するためのキャッシング方法をさらに後に説明する。
【００３４】
各オブジェクトの１つのバージョンのみをキャッシュすることにより、記憶空間が効率的に利用され、より多くのコンテンツオブジェクトを記憶することができる。
しかしながら、そのようなキャッシング方法の難問の１つは、オブジェクトのどのバージョンがキャッシュされるべきであるかを決定することである。
いくつかの例では、キャッシングシステム２４０に最もビットレートが高いバージョンをキャッシュすることが望ましいかもしれないが、これは常に望ましいとは限らないかもしれない。
最もビットレートが高いバージョンをキャッシュする結果として、より頻繁にトランスコードする可能性が高くなるであろう。
また、最もビットレートが高いバージョンをキャッシュすることは、より多くのメモリを消費することになるので、キャッシングシステム２４０を最も効率的に使用することにならない場合もある。
【００３５】
キャッシング方法の一実施形態では、あるコンテンツオブジェクトのバージョンＢＪが要求され、そのバージョンがキャッシングシステム２４０内に存在するとき（たとえば正確なヒット）、キャッシングプロキシ１２０は、そのバージョンのためのアクセス記録をリフレッシュし、そのバージョンがキャッシングシステム２４０に保持される。
アクセス記録は、キャッシュされたバージョンに関連する履歴を記録するために用いられる。
たとえば、アクセス記録は、ある特定のバージョンが要求された各時刻を示すタイムスタンプなどを含むことができる。
アクセス記録は、ある特定のバージョンが何回要求されたかを示す情報も含むことができる。
【００３６】
キャッシングシステム２４０内に、あるコンテンツオブジェクトのバージョンＢＫが存在するが、そのコンテンツオブジェクトのバージョンＢＪが要求されるときにミスが生じる（バージョンＢＪはバージョンＢＫよりも高いビットレートを有するので、バージョンＢＪはバージョンＢＫからトランスコードすることができない）。
本実施形態のキャッシング方法によれば、バージョンＢＫがキャッシングシステム２４０から削除され、バージョンＢＪがコンテンツソース１１０から受信され、バージョンＢＪがキャッシングシステム２４０にキャッシュされる（必ずしもその順序ではない）。
こうして、本実施形態では、ミスの場合に、キャッシングシステム２４０から、ビットレートが低いバージョンが除去され、ビットレートが高いバージョンで置き換えられる。
【００３７】
コンテンツオブジェクトのバージョンＢＫよりもビットレートが高いトランスコード可能なバージョンＢＪがキャッシングシステム２４０内に存在するが、そのコンテンツオブジェクトのバージョンＢＫが要求されるときに、トランスコードヒットが生じる。
本実施形態では、キャッシングプロキシ１２０は、キャッシュされたバージョンＢＪを適当なビットレートＢＫにトランスコードするであろう。
さらに、キャッシングプロキシ１２０は、バージョンＢＪあるいはＢＫのいずれがキャッシュされるかを決定する。
【００３８】
一実施形態では、キャッシングプロキシ１２０は、既にキャッシュされているオブジェクトバージョンＢＪのアクセス記録をリフレッシュし、トランスコードされたバージョンＢＫをキャッシュしない。
別の実施形態では、キャッシングプロキシ１２０は、キャッシングシステム２４０からトランスコード可能なバージョンＢＪを除去し、トランスコードされたバージョンＢＫをキャッシュする。
【００３９】
ここで、キャッシングシステム２４０内に、あるコンテンツオブジェクトの多数のバージョンをキャッシュすることができるキャッシング方法の一実施形態が説明される。
多数のバージョンをキャッシュすることにより、正確なヒットの可能性が高くなるので、トランスコーディングの量を低減することができる。
また、ある特定のコンテンツオブジェクトの複数の異なる形態（バージョン）へのアクセスの局時性が高い場合には、多数のバージョンをキャッシュすることによって、キャッシング効率も高めることができる。
たとえば、多種多様なタイプのクライアント装置（異なる属性を有する）から、相対的に短い時間の間に、ある特定のオブジェクトを得るために相対的に多数の要求を受信する場合がある。
そのような状況では、そのオブジェクトの多数のバージョンがキャッシングシステム２４０内に存在することが望ましいであろう。
【００４０】
キャッシング方法の本実施形態では、ミスがあるときに、キャッシングプロキシ１２０は、コンテンツソース１１０から、要求されたオブジェクトを受信し（取り込み）、必要に応じて、そのオブジェクトを要求されたバージョンにトランスコードし、そのオブジェクトの他のバージョンがキャッシングシステム２４０内に既に存在する場合であっても、そのオブジェクトをキャッシュする。
本実施形態では、トランスコードヒットの場合に、キャッシングプロキシ１２０はトランスコード可能なバージョンを要求されたバージョンにトランスコードし、キャッシングシステム２４０にトランスコードされたバージョンを記憶する。
正確なヒットは、先に説明したように取り扱われる。
すなわち、要求されたオブジェクトバージョンのためのアクセス記録が更新され、そのオブジェクトバージョンがキャッシングシステム２４０に保持される。
【００４１】
上記のキャッシング方法の有効性は、ユーザのアクセス行動およびユーザのネットワーク環境などの要因による可能性がある。
たとえば、キャッシングプロキシ１２０と通信するユーザが類似のネットワーク能力を有するとき、１つのみのオブジェクトバージョンがキャッシュされるキャッシング方法は、多数のオブジェクトバージョンがキャッシュされる方法よりも良好な性能を提供することができる。
クライアントによって主にどの接続帯域幅が用いられるかがわかっているキャッシングプロキシは、その帯域幅に相当するビットレートに適したコンテンツオブジェクトのバージョンのみをキャッシュすることができる。
一方、キャッシングプロキシ１２０が異種ネットワーク（種々のクライアント装置および接続タイプが用いられる）に接続され、かつアクセス行動が強い局時性を示す場合には、多数のオブジェクトバージョンを記憶することによって、オブジェクトの１つのバージョンが記憶されるキャッシング方法よりも結果として性能を高めることができる。
さらに、コンテンツオブジェクトを予め取り込んでおくことによって、あるいはプレフィックスキャッシングを導入することによって（その場合には、待ち時間を少なくするために、オブジェクトの最初の部分が記憶される）、キャッシング方法の有効性を高めることができる。
【００４２】
一実施形態では、キャッシングプロキシ１２０によって種々のキャッシング方法が適応的に用いられる。
たとえば、ユーザの行動に応じてリアルタイムに、別のキャッシング方法よりも優れたキャッシング方法を選択することができる。
その後、アクセス行動が監視される。
アクセス行動が変化する場合に、たとえば、上記の要因に基づいて、キャッシングプロキシ１２０によって異なるキャッシング方法が選択される。
【００４３】
キャッシングシステム２４０が一杯になる場合には必ず、別のオブジェクト（あるいはそのオブジェクトの別のバージョン）のための場所を空けるために、オブジェクトの１つのバージョンを削除する必要があるかもしれない。
この場合には、当該技術分野において知られている種々のキャッシュ置換え方式のうちの任意のものを用いることができる。
これらのキャッシュ置換え方式は、最長未使用時間（ＬＲＵ）方式、最小使用頻度（ＬＦＵ）方式、ＬＲＵ−Ｋ方式、貪欲双対（ＧＤ：Greedy Dual）方式などを含む。
【００４４】
図３は、本発明の一実施形態によるコンテンツを配信するための方法の流れ図３００である。
流れ図３００の具体的なステップが開示されるが、そのようなステップは例示である。
すなわち、本発明の実施形態は、種々の他のステップ、あるいは流れ図３００に記載されるステップの変形を実行するためにも適している。
流れ図３００のステップは、提供されるのとは異なる順序で実行される場合があること、および流れ図３００のステップは全て実行されるとは限らないことは理解されたい。
流れ図３００によって説明される方法の全て、あるいは一部を、たとえば、コンピュータシステムあるいは類似の装置のコンピュータ利用可能媒体内に常駐するコンピュータ読取り可能およびコンピュータ実行可能命令を用いて実施することができる。
一般的には、流れ図３００は、図１および図２のキャッシングプロキシ１２０のような装置によって実施される。
【００４５】
本実施形態において図３のステップ３１０では、クライアント装置からのコンテンツオブジェクト要求がキャッシングプロキシにおいて受信される（たとえば、図１および図２のキャッシングプロキシ１２０およびクライアント装置１３０）。
またキャッシングプロキシは、クライアント装置の属性、およびキャッシングプロキシとクライアント装置との間の接続のタイプも受信するか、あるいは別の方法で知る。
その結果として、キャッシングプロキシは、クライアント装置に送信するためのコンテンツオブジェクトのバージョンを選択することができる。
別法では、クライアント装置からの要求によって、コンテンツオブジェクトのバージョンが特定される場合もある。
【００４６】
本実施形態において図３のステップ３２０では、ステップ３１０において特定されたオブジェクトバージョンがキャッシングプロキシのメモリ（たとえば、図２のキャッシングシステム２４０）にキャッシュされているか否かに関する判定を行うことができる。
ステップ３１０において特定されたオブジェクトバージョンがキャッシュされている場合には、クライアント装置に送信することができる（ステップ３６０）。
そうでない場合には、流れ図３００はステップ３３０に進む。
オプションでは、キャッシングプロキシによってクライアント装置に送信されるのに応じて、オブジェクトバージョンの一部をバッファリングすることができる（たとえば図２の出力バッファ２５０）。
【００４７】
本実施形態において図３のステップ３３０では、ステップ３１０において特定されたオブジェクトバージョンのトランスコード可能なバージョンがキャッシングプロキシのメモリ（たとえば、図２のキャッシングシステム２４０）にキャッシュされているか否かに関する判定を行うことができる。
ステップ３１０において特定されたオブジェクトバージョンのトランスコード可能なバージョンがキャッシュされている場合には、それをトランスコードし（ステップ３５０）、その後、クライアント装置に送信する（ステップ３６０）ことができる。
そうでない場合には、流れ図３００はステップ３４０に進む。
【００４８】
本実施形態において図３のステップ３４０では、ステップ３１０において要求されたオブジェクトバージョン、そのオブジェクトバージョンのトランスコード可能なバージョンのいずれかがコンテンツソース（たとえば図１のコンテンツソース１１０）から受信される。
コンテンツソースによってどのバージョンが提供されるべきかに関する決定は、たとえばアクセス行動に基づいて、キャッシングプロキシが行うことができる。
オプションでは、コンテンツソースから受信されるコンテンツオブジェクトの一部を、キャッシングプロキシによって受信されるのに応じてバッファリングすることができる（たとえば、図２の入力バッファ２２０）。
【００４９】
ステップ３１０において要求されたオブジェクトバージョンが受信された場合には、クライアント装置に送信することができる（ステップ３６０）。
別法では、そのオブジェクトのトランスコード可能なバージョンが受信された場合には、トランスコードして（ステップ３５０）、その後、クライアント装置に送信することができる（ステップ３６０）。
【００５０】
図４は、本発明の一実施形態によるコンテンツをトランスコードし、キャッシュするための方法の流れ図４００である。
流れ図４００において具体的なステップが開示されるが、そのようなステップは例示である。
すなわち、本発明の実施形態は、種々の他のステップ、あるいは流れ図４００に記載されるステップの変形を実行するためにも適している。
流れ図４００のステップは、提供されるのとは異なる順序で実行される場合があること、および流れ図４００のステップは全て実行されるとは限らないことは理解されたい。
流れ図４００によって説明される方法の全て、あるいは一部を、たとえば、コンピュータシステムあるいは類似の装置のコンピュータ利用可能媒体内に常駐するコンピュータ読取り可能およびコンピュータ実行可能命令を用いて実施することができる。
一般的には、流れ図４００は、図１および図２のキャッシングプロキシ１２０のような装置によって実施される。
【００５１】
本実施形態では、図４のステップ３４０および３５０は、上記の図３とともに説明された同じステップと同様である。
すなわち、ステップ３４０では、コンテンツソースから、コンテンツオブジェクトの第１のバージョンがキャッシングプロキシにおいて受信される。
ここでは、第１のバージョンは、第２のオブジェクトバージョンのトランスコード可能なバージョンである。
本明細書において先に記載したように、第２のバージョンは、クライアント装置に提供されることになるバージョンとして特定される。
ステップ３５０では、キャッシングプロキシによって第１のバージョンがトランスコードされて、第２のバージョンが生成される。
【００５２】
本実施形態において図４のステップ３７０では、もしあるなら１つあるいは複数のいずれのバージョンがメモリに（たとえば、図２のキャッシングシステム２４０に）保持されるか、あるいは入れられるべきであるかに関する決定が、キャッシングプロキシによって行われる。
この決定を行うために、キャッシングプロキシによって、先に記載したような種々のキャッシング方法が用いられる場合がある。
実施されるキャッシング方法に応じて、その決定によって、第１のバージョンのみがキャッシュされるか、第２のバージョンのみがキャッシュされるか、第１および第２の両方のバージョンがキャッシュされるか、あるいは第１および第２のバージョンのいずれもキャッシングされない場合がある。
一実施形態では、アクセス行動のような要因に応じて、既に実施されているキャッシング方法とは異なる第２のキャッシング方法に切り替えることができる。
ステップ３８０では、ステップ３７０においてなされた決定がキャッシングプロキシによって実施される。
【００５３】
キャッシュされたオブジェクトバージョンは、クライアント装置からキャッシングプロキシによって受信される後続の要求によって特定されるオブジェクトのトランスコード可能なバージョンとしての役割を果たすことができることに留意されたい。
したがって、キャッシングプロキシ上の利用可能なキャッシュ空間がさらに効率的に利用される。
また、コンテンツソースに対して行われる必要がある要求の数も低減され、コンテンツソースの負荷が小さくなり、利用可能な帯域幅がさらに効率的に利用される。
【００５４】
シミュレーションの結果は、異種ネットワーク条件の場合に、処理しやすい計算上の（トランスコーディングの）負荷で、キャッシング性能を約２０％高めることができることを示す。
これを言い換えると、キャッシングプロキシおよびコンテンツソースの性能が改善され、同じくクライアント装置における遅れが小さくなる。
さらに、トランスコーディングをエンドユーザ（たとえばクライアント装置）の近くで行うことができるので、クライアントとローカル装置（たとえばキャッシングプロキシ）との間のやりとりが改善される。
【００５５】
要約すると、本発明の実施形態は、コンテンツオブジェクトをエンドユーザに配信するより効率的な方法を提供する方法およびシステムに関する。
これらの実施形態によれば、キャッシングプロキシにトランスコーディング能力を追加することにより、クライアント装置およびネットワーク接続が異種であっても柔軟に対処される。
コンテンツソースは、必要に応じてトランスコードすることができるコンテンツオブジェクトの単一の「マスター」コピーを生成するように選択することができ、コンテンツ作成者を解放してコンテンツの作成に集中できるようにする。
【００５６】
こうして、本発明の実施形態が説明されてきた。
本発明は特定の実施形態において説明されてきたが、本発明はそのような実施形態に限定されるものと解釈されるべきではなく、むしろ添付の特許請求の範囲に従って解釈されるべきであることは理解されたい。
【図面の簡単な説明】
【００５７】
【図１】本発明の一実施形態によるコンテンツを配信するためのシステムを示す図である。
【図２】本発明の一実施形態によるキャッシングプロキシによって提供される機能要素を示すブロック図である。
【図３】本発明の一実施形態によるコンテンツを配信するための方法の流れ図である。
【図４】本発明の一実施形態によるデータをトランスコードし、キャッシュするための方法の流れ図である。
【符号の説明】
【００５８】
１１０・・・コンテンツソース，
１２０・・・キャッシングプロキシ，
１３０・・・クライアント装置，
【図１】
2006506738.tif 000003
【図２】
2006506738.tif 000004
【図３】
2006506738.tif 000005
【図４】
2006506738.tif 000006
【国際調査報告】
2006506738.tif 000007
2006506738.tif 000008