(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023135657
(43)【公開日】2023-09-28
(54)【発明の名称】エニーキャストCDNルーティングにおけるローカルプリファレンス
(51)【国際特許分類】
H04L 67/1021 20220101AFI20230921BHJP
H04L 67/288 20220101ALI20230921BHJP
H04L 67/563 20220101ALI20230921BHJP
【FI】
H04L67/1021
H04L67/288
H04L67/563
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023040473
(22)【出願日】2023-03-15
(31)【優先権主張番号】17/695,581
(32)【優先日】2022-03-15
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.SMALLTALK
(71)【出願人】
【識別番号】504399716
【氏名又は名称】ディズニー エンタープライゼス インコーポレイテッド
(74)【代理人】
【識別番号】100101502
【弁理士】
【氏名又は名称】安齋 嘉章
(72)【発明者】
【氏名】エリック シー フレデリック
(72)【発明者】
【氏名】ロバート ジー コラントゥオーニ
(57)【要約】 (修正有)
【課題】要求されたオブジェクトをユーザに配信するために使用するコンテンツ配信ネットワーク(CDN)内のキャッシュを選択するためのロードバランサを識別する方法、サーバ及び非一時的なコンピュータ可読媒体を提供する。
【解決手段】方法は、ユーザデバイスが、DNSルックアップを実行して、CDN内の複数のロードバランサのエニーキャストIPアドレスを識別し、エニーキャストIPアドレスを使用してエニーキャストルーティングを開始し、最も近いロードバランサを自動的に識別する。識別されたロードバランサは、キャッシュを選択すると、ユーザデバイスとのエニーキャスト接続を閉鎖し、HTTPリダイレクトを使用して、選択したキャッシュへのユニキャスト経路をユーザデバイスに提供する。次に、ユーザデバイスは、キャッシュとのユニキャスト接続を確立して、オブジェクトを取得(例えば、ストリーミング)する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
コンテンツ配信ネットワーク(CDN)に関連付けられたロードバランサとCDNからのオブジェクトを要求するユーザデバイスとの間にエニーキャスト接続を確立する工程と、
ロードバランサにおいて、CDN内の複数のキャッシュから第1キャッシュを選択して、1つ以上のロードバランシング基準に基づいてオブジェクトに対する要求を満たす工程と、
ロードバランサからユーザデバイスにHTTPリダイレクトを送信し、エニーキャスト接続を閉鎖する工程を含み、HTTPリダイレクトは、ユーザデバイスと第1キャッシュの間のユニキャスト接続を確立して、第1キャッシュからオブジェクトを取り出すための情報を含む方法。
【請求項2】
ロードバランサは、CDNに関連付けられた複数のロードバランサの1つであり、複数のロードバランサの各々は、同じエニーキャストIPアドレスを有する、請求項1に記載の方法。
【請求項3】
複数のロードバランサ及び複数のキャッシュが異なる地理的領域に分散され、複数のロードバランサのうちの少なくとも1つ及び複数のキャッシュのうちの少なくとも1つが地理的領域の各々に共存する、請求項2に記載の方法。
【請求項4】
エニーキャスト接続を確立することは、ユーザデバイスがドメインネームシステム(DNS)ルックアップを実行し、ロードバランサとエニーキャスト接続を確立するために使用されるエニーキャストIPアドレスを識別した後に実行される、請求項2に記載の方法。
【請求項5】
ロードバランサは、ネットワークを介してユーザデバイスまでの全ての複数のロードバランサの最短経路を有する、請求項2に記載の方法。
【請求項6】
エニーキャスト接続は、ネットワーク内の基礎となるルーティングプロトコルに依存して最短経路を識別する、請求項5に記載の方法。
【請求項7】
HTTPリダイレクトは、HTTP応答ステータスコード302を含む、請求項1に記載の方法。
【請求項8】
ロードバランサでのエニーキャスト接続中に、オブジェクトへのフルパスとユーザデバイスのIPアドレスを受信する、請求項1に記載の方法。
【請求項9】
1つ以上のコンピュータプロセッサの操作によって実行されると、オペレーションを実行するコンピュータプログラムコードを含む非一時的なコンピュータ可読媒体であって、オペレーションは、
CDNに関連付けられたロードバランサとCDNからのオブジェクトを要求するユーザデバイスとの間にエニーキャスト接続を確立する工程と、
ロードバランサにおいて、CDN内の複数のキャッシュから第1キャッシュを選択して、1つ以上のロードバランシング基準に基づいてオブジェクトに対する要求を満たす工程と、
ロードバランサからユーザデバイスにHTTPリダイレクトを送信し、エニーキャスト接続を閉鎖する工程を含み、HTTPリダイレクトは、ユーザデバイスと第1キャッシュの間のユニキャスト接続を確立して、第1キャッシュからオブジェクトを取り出すための情報を工程を含む、コンピュータ可読媒体。
【請求項10】
ロードバランサは、CDNに関連付けられた複数のロードバランサの1つであり、複数のロードバランサの各々は、同じエニーキャストIPアドレスを有する、請求項9に記載の非一時的なコンピュータ可読媒体。
【請求項11】
複数のロードバランサ及び複数のキャッシュが異なる地理的領域に分散され、複数のロードバランサのうちの少なくとも1つ及び複数のキャッシュのうちの少なくとも1つが地理的領域の各々に共存する、請求項10に記載の非一時的なコンピュータ可読媒体。
【請求項12】
エニーキャスト接続を確立することは、ユーザデバイスがドメインネームシステム(DNS)ルックアップを実行し、ロードバランサとエニーキャスト接続を確立するために使用されるエニーキャストIPアドレスを識別した後に実行される、請求項10に記載の非一時的なコンピュータ可読媒体。
【請求項13】
ロードバランサは、ネットワークを介してユーザデバイスまでの全ての複数のロードバランサの最短経路を有する、請求項10に記載の非一時的なコンピュータ可読媒体。
【請求項14】
HTTPリダイレクトは、HTTP応答ステータスコード302を含む、請求項9に記載の非一時的なコンピュータ可読媒体。
【請求項15】
サーバであって、
プロセッサと、
プロセッサの作用により実行されると、オペレーションを実行するコンピュータプログラムコードを格納するメモリを含み、オペレーションは、
サーバとCDNからのオブジェクトを要求するユーザデバイスとの間にエニーキャスト接続を確立する工程と、
CDN内の複数のキャッシュから第1キャッシュを選択して、1つ以上のロードバランシング基準に基づいてオブジェクトに対する要求を満たす工程と、
ユーザデバイスにHTTPリダイレクトを送信し、エニーキャスト接続を閉鎖する工程を含み、HTTPリダイレクトは、ユーザデバイスと第1キャッシュの間のユニキャスト接続を確立して、第1キャッシュからオブジェクトを取り出すための情報を工程を含む、サーバ。
【請求項16】
サーバは、CDNに関連付けられた複数のサーバの1つであり、複数のサーバの各々は、同じエニーキャストIPアドレスを有する、請求項15に記載のサーバ。
【請求項17】
複数のサーバ及び複数のキャッシュが異なる地理的領域に分散され、複数のサーバのうちの少なくとも1つ及び複数のキャッシュのうちの少なくとも1つが地理的領域の各々に共存する、請求項16に記載のサーバ。
【請求項18】
エニーキャスト接続を確立することは、ユーザデバイスがドメインネームシステム(DNS)ルックアップを実行し、サーバとエニーキャスト接続を確立するために使用されるエニーキャストIPアドレスを識別した後に実行される、請求項16に記載のサーバ。
【請求項19】
サーバは、ネットワークを介してユーザデバイスまでの全ての複数のサーバの最短経路を有する、請求項16に記載のサーバ。
【請求項20】
HTTPリダイレクトは、HTTP応答ステータスコード302を含む、請求項15に記載のサーバ。
【発明の詳細な説明】
【背景】
【0001】
コンテンツディストリビューション/デリバリ(配信)ネットワーク(CDN)は、キャッシュが地理的に分散した大規模なネットワークである。これらのキャッシュは、ビデオやその他のWebコンテンツ(一般に、「オブジェクト」と称する)を視聴者に配信する。オブジェクトをユーザに配信するために使用する最適なキャッシュを選択するのは難しい作業である。ほとんどのCDNは通常、2つの手法を使用して、オブジェクトの配信に使用する最適なキャッシュを特定する。第1に、ドメインネームシステム(DNS)ロードバランシング(負荷分散)を使用して、最適なキャッシュを選択することができる。DNSサーバが最適なキャッシュを選択すると、CDNはキャッシュ(又はキャッシュクラスタ)のIPアドレスを使用して、ユーザからのDNSルックアップに応答する。しかし、DNSロードバランシングには幾つかの課題がある。第1に、真のクライアントIPアドレス(ジオロケーション/マッピングに使用される)は、多くの場合、CDNのDNSサーバには表示されない。代わりに、DNSサーバは、ユーザが使用するインターネットサービスプロバイダ(ISP)のリゾルバ(又は、更に悪いことに、クラウドベースのパブリックDNSリゾルバ)のIPアドレスを認識する。真のクライアントIPアドレスがなければ、キャッシュのローカリゼーションはより困難になる。更に、DNSルックアップには、要求されているコンテンツに関する情報が含まれていない。従って、CDNは、キャッシュのローカリゼーション中にアセットレベルのロードバランシングポリシーを使用することができない。例えば、アセットレベルポリシーでは、コンテンツが既にキャッシュにあることがわかっている特定のキャッシュ又はクラスターをターゲットにすることができる。最後に、有効期限(TTL)が非常に短い場合でも、ロードバランサ(負荷分散装置)の応答がある程度キャッシュされる。これはロードが高い場合には有効であるが、最終的にはDNSサーバがユーザの場所を特定する能力が低下する。
【0002】
ユーザに最も近いキャッシュを選択するために使用される第2の戦略は、エニーキャストルーティングである。エニーキャストでは、多くのホストが同じIPアドレスをアドバタイズすることができる。レイヤー3スイッチ又はルータは、ホップごとに、パケットの最小コスト経路を決定する。これにより、クライアントが最も近いロジカルCDNキャッシュにローカライズされる。しかし、ルーティングの変更により、パケットが別のホストに配信されると、接続がリセットされる危険性があるため、接続が中断される可能性がある。エニーキャストは、従来、ユーザデータグラムプロトコル(UDP)、又はエクストリームショートライブドトランスミッション制御プロトコル(TCP)接続に使用されてきた。
【図面の簡単な説明】
【0003】
上記の態様が達成され、詳細に理解できるように、添付図面を参照することにより、上記で簡単に要約した、本明細書に記載の実施形態のより具体的な説明を行うことができる。
【0004】
ただし、添付図面は典型的な実施形態を示しており、従って限定と見なされるべきではないことに留意すべきである。他の同等に有効な実施形態が考えられる。
【
図1】一実施形態による、通信システムのブロック図である。
【
図2】一実施形態による、CDNからオブジェクトを取得するためのタイミングチャートである。
【
図3】一実施形態による、ロードバランサを識別するためエニーキャストルーティングを使用するフローチャートである。
【
図4】一実施形態による、地理的に分散されたロードバランサ及びキャッシュを有するCDNを示す。
【
図5】一実施形態による、HTTPリダイレクトを使用してCDNキャッシュへのユニキャスト経路をユーザデバイスに提供するロードバランサを示す。
【詳細な説明】
【0005】
本明細書の実施形態はCDNについて説明する。ここで、エニーキャストルーティングが使用され、オブジェクトをユーザに配信するために使用するCDN内のキャッシュを選択するためのロードバランサ(トラフィックルータとも称される)を特定する。一実施形態では、ユーザはDNSルックアップを実行して、CDN内の複数のロードバランサのエニーキャストIPアドレスを特定する。次に、ユーザは、エニーキャストIPアドレスを使用してエニーキャストルーティングを開始し、エニーキャストIPアドレスを共有する複数のロードバランサの中で最も近いロジカルロードバランサを自動的に特定することができる。好都合なことに、ロードバランサは、オブジェクト(例えば、映画、テレビ番組、ライブパフォーマンス等)のフルパスだけでなく、ユーザデバイスのIPアドレスも見れる。これは、実際のユーザIPがDNS要求を行うリゾルバの背後に隠され、DNSルックアップが要求されているオブジェクトを示さない多くのタイプのDNSルックアップとは異なる。この情報を使用して、ロードバランサはユーザデバイスの正確な場所を特定し、1つ以上のロードバランシング基準を使用して最適なCDNキャッシュを選択することができる。
【0006】
キャッシュが選択されると、ロードバランサはユーザデバイスとのエニーキャスト接続を閉鎖し、HTTPリダイレクト(例えば、HTTP応答ステータスコード302等)を使用し、ユーザデバイスに選択したキャッシュへのユニキャスト経路を提供することができる。その後、ユーザデバイスはキャッシュとのユニキャスト接続を確立し、オブジェクトを取得することができる。好都合なことに、ロードバランサへのエニーキャスト接続はしばしば非常に短く(例えば、100~300ミリ秒)、ネットワーク障害(例えば、回線の切断、切断されたルータ等)によってエニーキャストルートが他のロードバランサに変更される可能性を低減する。ロードバランシングが完了すると、ユーザデバイスはHTTPリダイレクトにより提供されるユニキャスト経路を使用し、キャッシュを取得する。これは通常、はるかに長い接続(例えば、セグメントの転送に5~8秒)であり、エニーキャストルーティングによって引き起こされる潜在的なネットワーク障害の影響を受けない。このように、本明細書の実施形態は、DNSルックアップよりも正確な情報を提供する最も近いロードバランサを自動的に特定するエニーキャストルーティングの利点を享受すると共に、ユニキャスト接続を使用してCDNキャッシュからオブジェクトを取得し、ネットワーク障害に対するエニーキャスト接続を使用することの影響を避けることができる。
【0007】
図1は一実施形態による通信システム100のブロック図である。システム100は、ユーザデバイス105、DNSサーバ130、ネットワーク150(例えば、インターネット等のパブリックネットワーク)、エッジサーバ155、CDN170、及びストリーミングサーバ190を含む。ユーザデバイス105は、CDN170内のキャッシュ180からオブジェクト185を取り出すことができる任意のデバイスであってもよい。この実施形態では、ユーザデバイス105はディスプレイ125を含み、CDN170(例えば、スマートフォン、タブレット、ラップトップ、スマートテレビ等)からのメディアプレゼンテーションを表示(例えば、出力)することができる。しかし、他の実施形態では、ユーザデバイス105はディスプレイを含まなくてもよく、代わりに、出力デバイス(テレビ等)に結合されたストリーミングプレーヤー又はメディアプレーヤーであってもよい。
【0008】
いずれの場合にも、ユーザデバイス105はプロセッサ110及びメモリ115を含む。プロセッサ110は、任意の数のプロセスコアを含むことができる任意の数のプロセス要素を表す。一般に、プロセッサ110は、メモリ115に格納されたプログラミング命令を取り出し、実行する。メモリ115は、揮発性メモリ要素、不揮発性メモリ要素、及びそれらの組み合わせを含むことができる。具体的には、メモリ115は、オブジェクト185を選択し、CDN170から取り出すことができるストリーミングアプリケーション120(例えば、ソフトウェアアプリケーション)を含む。例えば、ストリーミングアプリケーション120は、複数の異なるメディアプレゼンテーション(例えば、映画、ライブイベント、テレビエピソード等)をリストするグラフィカルユーザインターフェース(ディスプレイ125又は個別の電子デバイス(例えば、テレビ)を使用)を出力することができる。次いで、ユーザはインターフェースを使用し、特定のメディアプレゼンテーションを選択し、ユーザデバイス105又は接続された出力デバイスで見ることができる。
【0009】
ユーザがメディアプレゼンテーションを選択したことに応答して、ユーザデバイス105は、メディアプレゼンテーションに対応するユニフォームリソースロケーション(URL)を求める要求をストリーミングサーバ190に送信することができる。ストリーミングサーバ190は、CDN170に格納されている各々のオブジェクト(例えば、メディアプレゼンテーション)ごとに異なるオブジェクトURL195を格納することができる。オブジェクトURL195は、メディアプレゼンテーションのネーム(例えば、HTTP://...AdventureShowEpisode1Season2..等)を含むことができる。このようにして、ストリーミングサーバ190内のURL195は、ユーザによって要求されたメディアプレゼンテーション(又は他のオブジェクト)にアクセスするためのURLを提供する。
【0010】
次に、ユーザデバイス105は、オブジェクトURL195を使用してDNSルックアップを実行することができる。DNSルックアップは、オブジェクトURL195をネットワーク150で使用することができるIPアドレスに変換し、要求されたメディアプレゼンテーションを取り出す(又はストリーミングする)場所を識別する。この場合、システム100は複数のDNSサーバ130を含むが、他の実施形態では、1つのDNSサーバ130のみを含むことができる。ユーザデバイス105はユニキャストルーティング又はエニーキャストルーティングのいずれかを使用して、DNSルックアップを実行するためにDNSサーバ130を識別することができる。エニーキャストルーティングを使用する利点は、ネットワーク150を介してユーザデバイス105への最短ルートでDNSサーバ130を自動的に識別でき、DNSルックアップの実行に使用される時間を潜在的に短縮できることである。しかし、本明細書の実施形態では、ユニキャストルーティングを使用してDNSルックアップを実行することも可能である。
【0011】
DNSサーバ130は、DNSルックアップに応答して、IPアドレスをユーザデバイス105に提供する。しかし、オブジェクトを検索するためにユーザデバイスにキャッシュ180へのIPアドレスを提供するのではなく、幾つかの実施形態では、DNSサーバ130はエニーキャストIPアドレスをエッジサーバ155に提供する。より具体的には、DNSサーバ130はエニーキャストIPアドレスをエッジサーバ155内にホストされたロードバランサ160(例えば、ソフトウエアアプリケーション)に到達するように提供する。一実施形態では、エッジサーバ155の各々は、同じエニーキャストIPアドレスを有する。従って、DNSサーバ130がエニーキャストIPアドレスをユーザデバイス105に提供すると、そのアドレスを用いたエニーキャストルーティングの実行は、ユーザデバイス105への最短経路で、エッジサーバ155及びロードバランサ160を自動的に識別する。即ち、エニーキャストルーティングは基礎となるルーティングプロトコル(例えば、ボーダーゲートウェイプロトコル(BGP)等)を用い、同じエニーキャストIPアドレスの複数のネットワークデバイス(例えば、エッジサーバ155)の1つへの最短経路を識別する。
【0012】
次に、エニーキャストルーティングから識別されたエッジサーバ155内のロードバランサ160は、1つ以上のロードバランシング基準を使用して、要求されたメディアプレゼンテーション(例えば、オブジェクト185)を配信するのに最適なキャッシュ180を決定することができる。本明細書の実施形態は特定のロードバランシング基準に限定されない。非限定的な例には、識別されたエッジサーバ155と同じ場所にある(又は最も近い)キャッシュ180を使用すること、特定のキャッシュ180のロードが確実に閾値を超えないこと、最小量の要求が各々のキャッシュ180に確実に送信されること、保守のために間もなく取り除かれるキャッシュ180から要求をルーティングしないこと等を含む。
【0013】
キャッシュ180を選択するため、エッジサーバ155でDNSサーバ130ではなくロードバランサ160を使用することには幾つかの利点がある。1つの利点は、ユーザデバイス105とロードバランサ160の間のTCP通信は、ユーザデバイス105とロードバランサ160の間のDNSルックアップより多くの情報を有する。例えば、ロードバランサ160への通信は要求されたオブジェクト185へのフルパスを含むことができるが、DNSルックアップはこの情報を有しない。従って、ロードバランサ160はユーザが要求しているオブジェクト185を認識し、それに応じてキャッシュ180を選択することができるが、この情報はDNSサーバからは隠されている。例えば、CDN170内の幾つかのキャッシュ180は要求されたオブジェクトを有することができるが、他のキャッシュは有しない場合がある。
【0014】
更に、ユーザデバイス105からロードバランサ160へのHTTP通信はユーザデバイス105の真のIPアドレスを含むことができるが、DNSルックアップは、リゾルバ(ユーザデバイス105の地理的位置にない又は近接しない場合がある)のIPアドレスを含むことができる。従って、キャッシュ180を選択するときにロードバランサ160によって実行されるジオロケーション機能は、DNSサーバ130によって実行されるジオロケーション機能よりも正確であることができる。
【0015】
上述のように、ユーザデバイス105とロードバランサ160の間の通信は、ユーザデバイス105に最も近いロードバランサ160を自動的に識別するエニーキャスト接続とすることができる。また、上述のように、エニーキャスト接続は、接続を変更する可能性があるネットワーク障害の影響を受けやすい。例えば、回線が切断されたり、ルータが保守のために停止したりすることにより、最短経路が、例えばロードバランサ160Aからロードバランサ160Bに変わることがある。この場合、ロードバランサ160Bは、ユーザデバイス105によってロードバランサ160Aに既に提供された情報のいずれも有しないため、プロセスをリピート又はリセットしなければならない。しかし、ロードバランサ160とユーザデバイス105の間の通信は、単一のHTTP要求/応答ペア(TCPハンドシェーク、TLKハンドシェーク((オプション)、HTTP要求/応答自体を含むことができる)を交換するデバイスにより典型的に非常に短い(例えば、200~300ミリ秒)。ロードバランサ160及びユーザデバイスは、5~10個のTCPセグメントの間で交換することができる。従って、ユーザデバイス105とロードバランサ160の間のエニーキャスト接続中にネットワーク障害が発生するリスクは小さい。
【0016】
ロードバランサ160が、ユーザデバイス105が要求したオブジェクト185(例えば、要求されたメディアプレゼンテーション)を取得又はストリーミングするために使用するキャッシュ180を選択すると、ロードバランサ160は、HTTPリダイレクトをユーザデバイス105に送信することができる(例えば、ステータスコード302を含むHTTP応答)。これにより、ユーザデバイス105が選択されたキャッシュ180にリダイレクトされる。別の言い方をすれば、ロードバランサ160はエニーキャスト接続を閉鎖し、ユーザデバイス105をキャッシュ180にリダイレクトする。HTTPリダイレクトはユニキャストを含むことができ、これにより、ユーザデバイス105は、HTTPリダイレクトに応答してキャッシュ180へのユニキャスト接続を確立することができる。302ステータスコードを使用するHTTPリダイレクトについて説明したが、実施形態はこれに限定されず、現在又は将来の任意のリダイレクトHTTP機構(例えば、301ステータスコード又はAlt-Svc)を使用することができる。
【0017】
ユーザデバイス105とキャッシュ180の間の接続は、オブジェクト185を検索するために、ユーザデバイス105とキャッシュ180の間のユニキャスト接続を使用するユーザデバイス105とロードバランサ160の間の接続よりも、通常、はるかに長いので、エニーキャスト接続の脆弱性を回避する。即ち、ユーザデバイス105とキャッシュ180の間のユニキャスト経路に沿ってネットワーク障害が発生した場合、ユーザデバイス105は、ネットワーク150を介した異なるルート又は経路を使用するにもかかわらず、依然として同じキャッシュ180に接続する。従って、ユーザデバイス105とロードバランサ160の間のエニーキャスト接続により、システム100は、ジオロケーションを実行するためDNSサーバ130に依存するよりも正確に、ユーザデバイス105に最も近いロードバランサ160を自動的に識別することができる。更に、HTTPリダイレクトを使用して、ロードバランサ160とのエニーキャスト接続を閉鎖し又は終了し、選択されたキャッシュ180へのユニキャスト接続を確立することにより、オブジェクト185を取得又はストリーミングするために長いエニーキャスト接続を使用するリスクを回避することができる。
【0018】
図1は、キャッシュ180のみがCDN170内にあることを示すが、他の実施形態では、DNSサーバ130及びエッジサーバ155は、ロードバランサ160と共に、CDN170の一部とみなすことができる。
【0019】
更に、ストリーミングサーバ190、DNSサーバ130、エッジサーバ155、及びキャッシュ180は、本明細書に列挙された機能を実行するために、1つ以上のプロセッサ、メモリ、ソフトウェアアプリケーション、入出力インターフェース等を含むことができる。
【0020】
図2は、一実施形態による、CDNからオブジェクトを取得するためのタイミングチャート200である。タイミングチャート200は、ユーザデバイス105と、ストリーミングサーバ190、DNSサーバ130、ロードバランサ160、及びCDN内のキャッシュ180の間の様々な通信を示す。矢印205は、CDNから取り出す又はストリーミングするオブジェクトの選択を行うユーザデバイス105を示す。この選択はストリーミングサーバ190に通信される。ユーザの選択は、ストリーミングサーバ190へのサービスコールと呼ぶことができる。これに応答して、矢印210は、ストリーミングサーバ190が要求されたオブジェクトにURL(例えば、
図1のオブジェクトURL)を提供することを示す。URLは、要求されたオブジェクトの名前、説明、又はIDを含むことができる。
【0021】
オブジェクトURLに対応するIPアドレスを識別するため、矢印215は、DNSサーバ130を使用してDNSルックアップを実行するユーザデバイス105を示す。ユーザデバイス105は、ユニキャスト接続又はエニーキャスト接続のいずれかを使用して、CDNに関連付けられた複数のDNSサーバ130の1つを選択することができる。例えば、ユーザデバイス105がDNSルックアップを実行するためにどのDNSサーバを使用すべきかを既知である可能性があり、その場合、ユニキャスト接続を使用することができる。対照的に、ユーザデバイス105はエニーキャスト接続を使用することができ、基礎となるネットワークプロトコルがユーザデバイス105への最短経路を有するDNSサーバ130を自動的に識別する。本明細書の実施形態はいずれの状況にも限定されない。
【0022】
この例では、DNSサーバ130が、オブジェクトを取得するためにキャッシュ180へのIPアドレスをユーザデバイスに提供する代わりに、DNSサーバ130は、矢印220に示されるように、CDNによって使用されるロードバランサ160の1つに到達するためのエニーキャストアドレスをユーザデバイス105に提供する。一実施形態では、CDN内のロードバランサ160の各々は、同じエニーキャストIPアドレスに対応する。DNSサーバ130は、ロードバランサ160のエニーキャストIPアドレスをユーザデバイス105に提供することによって、CDN内のコンテンツに対する任意のDNSルックアップに応答するように構成することができる。
【0023】
矢印225は、エニーキャストIPアドレスを使用してエニーキャストルーティングを実行し、ユーザデバイス105への最短経路を有するロードバランサ160(及びエッジサーバ)を自動的に識別するユーザデバイス105を示す。即ち、エニーキャストルーティングは、ネットワーク内で基礎となるルーティングプロトコル(例えば、BGP)を使用し、ネットワーク内でユーザデバイス105への最短経路を有する複数のロードバランサのうちのロードバランサ160を識別する。
【0024】
次に、ロードバランサ160は、1つ以上のロードバランシング基準を使用して、CDN内の複数のキャッシュからキャッシュ180を選択することができる。DNSルックアップとは異なり、エニーキャスト接続を確立すると、ロードバランサは要求されたオブジェクトへのフルパスとユーザの真のIPを受け取ることができる。従って、この情報により、ロードバランサ160は、DNSサーバがキャッシュを選択する任務を負った場合よりも、様々なロードバランシング戦略を実行し、ユーザデバイス105のより正確なジオロケーションを実行することが可能になる。
【0025】
矢印230は、ロードバランサ160がHTTPリダイレクトをユーザデバイス105に送信して、ユーザデバイス105を選択されたキャッシュ180にリダイレクトすることを示す。一実施形態では、HTTPリダイレクトは、ユーザデバイス105とロードバランサの間のエニーキャスト接続を閉鎖するか又は終了させる。更に、HTTPリダイレクトは、矢印235に示されるように、ユーザデバイス105がキャッシュ180とのユニキャスト接続を確立できるように情報を提供する。
【0026】
矢印240は、要求されたオブジェクトをデバイス105に送信するためにユニキャスト接続を使用するキャッシュ180を示す。ユーザデバイス105とキャッシュ180の間の接続は、通常、オブジェクトを取り出すために、ユーザデバイス105とロードバランサ160の間の接続よりもずっと長い。従って、ユーザデバイス105とキャッシュ180の間のユニキャスト接続を使用して、エニーキャスト接続がネットワーク障害から受ける影響を回避する。即ち、ユーザデバイス105とキャッシュ180の間のユニキャスト経路に沿ってネットワーク障害が発生した場合、ユーザデバイス105は依然として同じキャッシュ180に接続する。HTTPリダイレクトを使用して、ロードバランサとのエニーキャスト接続を閉鎖し又は終了し、選択されたキャッシュ180へのユニキャスト接続を確立することにより、長いエニーキャスト接続を使用して要求されたオブジェクトを取得又はストリーミングするリスクを回避することができる。
【0027】
タイミングチャート200を使用して、ユーザデバイス105とキャッシュ180の間の接続を初期化し、オブジェクトを検索又はストリーミングすることができる。タイミングチャート200は、オブジェクトをストリーミングする最初の要求の初期化を示すが、チャート200を使用して、何らかの理由で中断された、既に開始されているストリームを初期化することもできる。例えば、ユーザデバイス150がタイミングチャート200に示される全てのタスクを既に実行し、キャッシュ180からオブジェクトのストリーミングを開始していると仮定する。しかし、ユーザデバイス150は、ストリーリングのためセルラーネットワークの使用からWi-Fiネットワークの使用に切り替えられたスマートフォンであった。この切り替えにより、ユーザデバイス105はストリームを再初期化する必要が生じる可能性がある。次に、ユーザデバイス105は、矢印225~240によって表されるタスクを繰り返して、ストリームを再開することができる。ユーザデバイス105はオブジェクトのIPアドレス(即ち、ロードバランサ160のエニーキャストIPアドレス)を既知であるため、矢印205及び220によって表されるタスクを繰り返す必要はない。それにもかかわらず、ユーザデバイスが現在別のネットワークを使用する場合、ロードバランシングを繰り返して、別のキャッシュ180がオブジェクトをストリーミングするのにより適しているかどうかを判断することができる。また、前のキャッシュ180に障害が発生したか、メンテナンスのために停止したために再初期化が発生する場合がある。いずれの場合でも、ユーザデバイス105は、ロードバランサ160(又は異なるロードバランサ160)とのエニーキャスト接続を再度確立し、オブジェクトのストリームを再開するために使用する最適なキャッシュ180を識別することができる。従って、本明細書の実施形態は、オブジェクトを最初に要求する際にストリームを初期化するときと、前のストリームが中断されたときにストリームを初期化するときの両方に使用することができる。
【0028】
図3は、一実施形態による、ロードバランサを識別するため、エニーキャストルーティングを使用する方法300のフローチャートである。方法300は、CDNから取り出す又はストリーミングするオブジェクトをユーザが選択することに応答して開始することができる。ブロック305で、ユーザデバイスはDNSルックアップを実行し、複数のロードバランサのため、エニーキャストIPアドレスを受信する。即ち、ロードバランサは同じエニーキャストIPアドレスを共有する。
【0029】
ブロック305は
図2の矢印215に対応することができ、ユーザデバイスはユニキャスト接続又はエニーキャスト接続のいずれかを使用し、CDNに関連付けられた複数のDNSサーバ130の1つを選択することができる。例えば、ユーザデバイスは事前に選択されたDNSサーバを使用し、ユニキャスト接続を使用してDNSルックアップを実行することができる。対照的に、ユーザデバイスはエニーキャスト接続を使用して、ユーザデバイスへの最短経路を有するDNSサーバを識別することができる。
【0030】
ブロック310で、ユーザデバイスはエニーキャストルーティングを実行し、CDNに対応する複数のロードバランサの1つへエニーキャスト接続を確立する。即ち、ユーザデバイスは、DNSサーバから提供されたエニーキャストIPアドレスを使用し、エニーキャストルーティングを実行し、ユーザデバイスへの最短経路を有するロードバランサを特定することができる。ユーザデバイスはエニーキャスト接続を使用し、オブジェクトのフルパス名をロードバランサに提供することができる。また、ロードバランサはユーザデバイスの真のIPアドレスを受け取ることができるため、バランサは、必要に応じて、ジオロケーションサービスを実行することができる。
【0031】
ブロック315で、ロードバランサは複数のキャッシュからキャッシュを決定又は選択し、ロードバランシング基準に基づいてCDNからオブジェクトを取り出す。ロードバランシング基準の非限定的な例は、キャッシュを使用してロードバランサと同じ場所にある(又は最も近い)要求を満たすこと、特定のキャッシュの負荷が閾値を超えないようにすること、要求の最小量が各々のキャッシュに確実に送信されること、メンテナンスのためにすぐに削除されるキャッシュからリクエストをルーティングしないことを含む。他の例では、ロードバランサはオブジェクトの経路名を使用し、どのCDNキャッシュのオブジェクトが既にメモリに格納されているかを判断することができる。しかし、本明細書の実施形態は、特定のロードバランシング技術に限定されない。
【0032】
一実施形態では、ロードバランサは非標準シグナリングを使用し、ユーザデバイスがオブジェクトを取得するために接続を試みる複数のキャッシュを示すことができる。これらのキャッシュは、順序付けされ、重み付けされ、又は他の特定の再試行ポリシーを指定することができる。従って、ロードバランサは、複数のキャッシュから複数のキャッシュを決定又は選択することができる。
【0033】
ブロック320で、ロードバランサはHTTPリダイレクトを開始し、エニーキャスト接続を閉鎖し、ユーザデバイスにキャッシュへのユニキャスト経路を提供する。
図2の矢印230で示されるように、ロードバランサはHTTPリダイレクトをユーザデバイスに送信し、ブロック315で識別されたキャッシュにユーザデバイスをリダイレクトすることができる。一実施形態では、HTTPリダイレクトはユーザデバイスとロードバランサの間のエニーキャスト接続を閉鎖又は終了する。更に、HTTPリダイレクトは、ユーザデバイスがキャッシュとのユニキャスト接続を確立できるように、情報(例えば、ユニキャスト経路)を提供する。
【0034】
ブロック325で、ユーザデバイスはキャッシュとユニキャスト接続を確立し、オブジェクトを取得する。幾つかの実施形態では、ブロック310で、ユーザデバイスとCDNキャッシュの間のユニキャスト接続は、ユーザデバイスとロードバランサの間のエニーキャスト接続よりもはるかに長く確立される。例えば、ユーザデバイスがコンテンツをストリーミングするとき、エニーキャスト接続は100~300ミリ秒間継続するのに対し、ユニキャスト接続は(それ以上ではないにしても)数秒間継続する場合がある。従って、ユニキャスト接続を使用してキャッシュからオブジェクトをストリーミングすることにより、最短経路が別のキャッシュに切り替わり、接続の再初期化が強制される可能性があるネットワーク障害に対するエニーキャスト接続の脆弱性が回避される。
【0035】
図4は、一実施形態による、地理的に分散されたロードバランサ及びキャッシュを有するCDNを示す。この例では、CDNは、領域A、B、及びCを含む地理的エリア400に分散される。各々の地理的領域は、より多くのロードバランサ(LB)160及びキャッシュ180を含む。例えば、各領域は、異なる町、州、国、大陸等でCDNによりオペレートされる異なるデータセンタを有することができる。LB160及びキャッシュ180は、これらのデータセンタで実行することができる。人口密度が高い又は需要が大きい領域は、複数のデータセンタ、複数のLB160及びキャッシュ180を有することができる。この例では、LB160は、特定の地域でキャッシュ180と同じ場所に配置される(例えば、同じデータセンタによってホストされる)。
【0036】
また、
図4は、領域BのLB160Bとのエニーキャスト接続405を確立するためにエニーキャストルーティングを使用するユーザデバイス105を示す。即ち、
図4は、ユーザデバイス105がCDNから取り出すオブジェクトを選択し、DNSルックアップを実行してエニーキャストIPアドレスを受信する時点を示す(例えば、
図2の矢印205~220及び
図3のブロック305)。図示されているように、
図4の全てのLB160は同じエニーキャストIPアドレス、即ち、エニーキャストアドレスAを有する。エニーキャストアドレスAを使用したエニーキャストルーティングを実行すると、ネットワークは、ネットワークを介してユーザデバイス105に到達する最短の経路を有するものとして、LB160を特定する。例えば、ユーザデバイス105は領域Bに位置することもできる。従って、ユーザデバイス105は、LB160Bとのエニーキャスト接続405を確立する。
【0037】
この例では、LB160Bは、キャッシュ180Bを、ユーザデバイス105が要求されたオブジェクトを取り出し又はストリーミングするための最適なキャッシュとして選択する。例えば、LB160Bは、デフォルトで、LB160Bと同じ場所に配置されたキャッシュ180Bをユーザデバイス105に最適なキャッシュとして選択することができる。これは、このキャッシュ180Bもユーザデバイス105と同じ領域にあるからである。これに応答して、LB160Bは、エニーキャスト接続405を終了し、キャッシュ180Bとのユニキャスト接続410Aを確立するユーザデバイス105にHTTPリダイレクト(図示せず)を送信することができる。ユーザデバイス105は、ユニキャスト接続410Aを使用してキャッシュ180Bからオブジェクトを取り出すことができる。
【0038】
また、
図4は、LB160Bが代わりに領域Cのキャッシュ180Cをユーザデバイス105に最適なキャッシュとして選択することができる代替的実施形態を示す。ユーザデバイスが領域Bにあるとしても、キャッシュ180Cが使用するのに最適なキャッシュである場合がある(例えば、キャッシュ180Bがメンテナンスのために停止しようとしている、現在過負荷である、又は要求されたオブジェクトを持っていない等の幾つかの理由で)。従って、LB160Bは、代わりに、キャッシュ180Cとのユニキャスト接続410Bを確立するHTTPリダイレクトを送信することができる。
【0039】
別の例では、LB160Bは、オブジェクトをストリーミングするための最適なキャッシュとして最初にキャッシュ180Bを選択することができるが、その後変更してキャッシュ180Cをより良い選択肢として選択することができる。例えば、キャッシュ180Bからオブジェクトをストリーミングしている最中に、キャッシュ180Bは、ユニキャスト接続410Aを中断させるエラー又は誤動作に遭遇する場合がある。この場合、ユーザデバイス105は、LB160Bとのエニーキャスト接続405を確立することによって初期化プロセスを繰り返すことができる。LB160Bは、キャッシュ180B内のエラーについて通知又は検出されている場合があり、代わりにキャッシュ180Cを新しいキャッシュとして選択する。LB160Bは、ユーザデバイス105にキャッシュ180Cとのユニキャスト接続410Bを確立させ、ストリームを再開させるHTTPリダイレクトを提供することができる。好都合なことに、ユーザデバイス105は、キャッシュ180Bを使用したストリームが中断された場所でキャッシュ180Cを使用してストリームを再開することができる(キャッシュ180B及び180Cの両方が要求されたオブジェクトのコピーを有すると仮定する)。
【0040】
図5は、一実施形態による、HTTPリダイレクトを使用してユーザデバイスにCDNキャッシュへのユニキャスト経路を提供するロードバランサ160を示す。図示のように、ユーザデバイス105はHTTP GET要求505を送信し、ロードバランサ160に対応するエニーキャストIPアドレスを使用してエニーキャストルーティングを実行することができる。ユーザデバイスがオブジェクトを取得するのに最適なキャッシュ(例えば、キャッシュ180)を選択した後、ロードバランサ160は、HTTPリダイレクト510でGET要求505に応答することができる。上述のように、HTTPリダイレクト510は、エニーキャスト接続を閉鎖し、ユーザデバイス105がキャッシュ180とのユニキャスト接続を確立するための情報を提供することができる。図示のように、HTTPリダイレクト510は、キャッシュ180へのユニキャスト経路を含むURL、即ち、HTTP://<cache unicast>/pathを含む。
【0041】
HTTPリダイレクト510に応答して、ユーザデバイス105は、HTTP GET要求515をキャッシュに送信して、ユニキャスト接続を確立する。次に、ユーザデバイス105は、この接続を使用して、要求されたオブジェクトをキャッシュ180から取得することができる。
【0042】
本開示では、様々な実施形態が参照される。しかし、本開示は、記載された特定の実施形態に限定されないと理解すべきである。代わりに、異なる実施形態に関連するかどうかにかかわらず、以下のフィーチャ及び要素の任意の組み合わせが、本明細書で提供される教示を実施及び実行することが企図される。更に、実施形態の要素が「A及びBのうちの少なくとも1つ」の形式で記載される場合、要素Aのみを含む実施形態、要素Bのみを含む実施形態、及び要素A及びBを含む実施形態が各々企図されると理解される。更に、幾つかの実施形態は、他の可能な解決策又は従来技術に対して利点を達成することができるが、所与の実施形態によって特定の利点が達成されるかどうかは、本開示を限定するものではない。従って、本明細書に開示される態様、フィーチャ、実施形態、及び利点は、単なる例示であり、添付の特許請求の範囲に明示的に記載されている場合を除き、特許請求の範囲の要素又は制限とは解釈されない。同様に、「発明」への言及は、本明細書に開示された発明の主題の一般化として解釈されるべきではなく、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素又は限定と解釈されるべきではない。
【0043】
当業者には理解されるように、本明細書に記載の実施形態は、システム、方法、又はコンピュータプログラム製品として具体化することができる。従って、実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又は、本明細書中で、「回路」、「モジュール」又は「システム」と称されるソフトウェアとハードウェアのアスペクトを組み合わせた実施形態の形態を取ることができる。更に、本明細書に記載の実施形態は、コンピュータ可読プログラムコードが組み込まれた1つ以上のコンピュータ可読媒体に組み込まれたコンピュータプログラム製品の形態を取ることができる。
【0044】
コンピュータ可読媒体に具現化されたプログラムコードは、無線、有線、光ファイバーケーブル、RF等、又はこれらの任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体を使用して送信することができる。
【0045】
本開示の実施形態のオペレーションを実行するためのコンピュータプログラムコードは1つ以上のプログラム言語の任意の組み合わせで記述することができる。プログラム言語は、Java、Smalltalk、C++等のオブジェクト指向プログラミング言語と、「C」プログラミング言語又は類似のプログラミング言語等の従来の手続き型プログラミング言語を含む。プログラムコードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で、又は完全にリモートコンピュータ又はサーバ上で実行することができる。後者のシナリオでは、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)等、任意のタイプのネットワークを介してリモートコンピュータをユーザのコンピュータに接続するか、外部コンピュータ(例えば、インターネットサービスプロバイダを使用したインターネット経由)と接続することができる。
【0046】
本開示の態様は、本開示の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート又はブロック図を参照して、本明細書で説明される。フローチャート又はブロック図の各々のブロック、及びフローチャート又はブロック図のブロックの組み合わせは、コンピュータプログラム命令によって実行することができると理解される。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、又は他のマシンを形成する他のプログラム可能なデータ処理装置のプロセッサに提供され、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャート又はブロック図のブロックで指定された作用/行為を実行するための手段を作成することができる。
【0047】
また、これらのコンピュータプログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置、又は他のデバイスを特定の方法で機能させることができるコンピュータ可読媒体に格納することができ、これによって、コンピュータ可読媒体に格納された命令が、フローチャート又はブロック図のブロックで特定された機能/行為を実行する命令を含む製品を生成する。
【0048】
また、コンピュータプログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置、又は他のデバイスにロードされ、一連の動作ステップがコンピュータ、他のプログラム可能な装置、又は他のデバイス上で実行され、コンピュータによって実行されるプロセスを生成する。これによって、コンピュータ、他のプログラム可能なデータ処理装置、又は他のデバイス上で実行される命令は、フローチャート又はブロック図のブロックで指定された機能/行為を実行するためのプロセスを提供する。
【0049】
図中のフローチャート及びブロック図は、本開示の様々な実施形態によるシステム、方法、及びコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、及びオペレーションを示す。この点に関して、フローチャート又はブロック図の各々のブロックはモジュール、セグメント、又はコードの一部を表し、これは特定された論理機能を実行するための1つ以上の実行可能な命令を含むことができる。また、幾つかの代替的実施形態では、ブロックに記載された機能が、図に記載された順序とは異なる場合があることに留意すべきである。例えば、連続して示される2つのブロックは、機能に応じて、実際には実質的に同時に実行される場合があり、また、ブロックが逆の順序又は順不同で実行される場合もある。また、ブロック図又はフローチャートの各々のブロック、及びブロック図又はフローチャートのブロックの組み合わせは、指定された機能又は行為を実行する専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令の組み合わせによって実行することができることに留意すべきである。
【0050】
上記は本開示の実施形態を対象としているが、本開示の他の及び更なる実施形態はその基本的範囲から逸脱することなく創作することができ、その範囲は以下の特許請求の範囲に基づいて定められる。
【外国語明細書】