特許第6861219号(P6861219)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ダイナミック・ネットワーク・サービシーズ・インコーポレイテッドの特許一覧

特許6861219インテリジェントドメインネームシステム転送のための方法および装置
<>
  • 特許6861219-インテリジェントドメインネームシステム転送のための方法および装置 図000006
  • 特許6861219-インテリジェントドメインネームシステム転送のための方法および装置 図000007
  • 特許6861219-インテリジェントドメインネームシステム転送のための方法および装置 図000008
  • 特許6861219-インテリジェントドメインネームシステム転送のための方法および装置 図000009
  • 特許6861219-インテリジェントドメインネームシステム転送のための方法および装置 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6861219
(24)【登録日】2021年3月31日
(45)【発行日】2021年4月21日
(54)【発明の名称】インテリジェントドメインネームシステム転送のための方法および装置
(51)【国際特許分類】
   H04L 12/70 20130101AFI20210412BHJP
【FI】
   H04L12/70 B
【請求項の数】12
【全頁数】22
(21)【出願番号】特願2018-547416(P2018-547416)
(86)(22)【出願日】2017年3月9日
(65)【公表番号】特表2019-507994(P2019-507994A)
(43)【公表日】2019年3月22日
(86)【国際出願番号】US2017021514
(87)【国際公開番号】WO2017156231
(87)【国際公開日】20170914
【審査請求日】2020年3月9日
(31)【優先権主張番号】62/305,602
(32)【優先日】2016年3月9日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】518024699
【氏名又は名称】ダイナミック・ネットワーク・サービシーズ・インコーポレイテッド
【氏名又は名称原語表記】DYNAMIC NETWORK SERVICES, INC.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】リナリ,エイミー
(72)【発明者】
【氏名】リックハイト,エリック
(72)【発明者】
【氏名】ギブソン,リチャード
(72)【発明者】
【氏名】アブリー,ジョセフ
【審査官】 宮島 郁美
(56)【参考文献】
【文献】 米国特許出願公開第2013/0173769(US,A1)
【文献】 国際公開第2013/035311(WO,A1)
【文献】 特表2013−502190(JP,A)
【文献】 米国特許出願公開第2014/0344925(US,A1)
【文献】 国際公開第2014/186189(WO,A1)
【文献】 中国特許出願公開第105229996(CN,A)
【文献】 米国特許出願公開第2012/0096166(US,A1)
【文献】 中国特許出願公開第101488965(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00−12/26,12/50−12/955
(57)【特許請求の範囲】
【請求項1】
ドメインネームシステム(DNS)クエリに応答する方法であって、前記方法は、
プロキシサーバが、クライアントから前記DNSクエリを受信するステップと、
前記プロキシサーバが、修正されたDNSクエリを生成するステップとを含み、前記修正されたDNSクエリを生成することは、メタデータの要求を含めるために前記DNSクエリを修正することを含み
前記プロキシサーバーが、前記修正されたDNSクエリを権威DNSサーバに送信するステップと、
前記プロキシサーバが、前記権威DNSサーバから前記修正されたDNSクエリへの応答を受信するステップとを含み、前記応答は前記メタデータを含み、前記方法はさらに、
前記プロキシサーバ、前記メタデータに少なくとも部分的に基づいて、前記修正されたDNSクエリへの応答を生成するステップと、
前記プロキシサーバーが、前記DNSクエリへの前記応答を前記クライアントに送信するステップとを含み、
前記DNSクエリへの応答は、前記メタデータに含まれるプログラムと、複数のIPアドレスとを含む、方法。
【請求項2】
前記DNSクエリを修正するステップは、前記DNSクエリにおいてDNSセキュリティ(DNSSEC)OK(DO)フラグを設定するステップを含む、請求項1に記載の方法。
【請求項3】
前記メタデータは、要求リソース署名(RRSIG)レコードを含む、請求項1または2に記載の方法。
【請求項4】
前記DNSクエリへの前記応答を修正するステップは、前記メタデータに含まれるプログラムを実行するステップを含む、請求項1〜3のいずれかに記載の方法。
【請求項5】
前記メタデータに含まれるプログラムを実行するステップは、
前記複数のIPアドレスを並べ替えるステップと、
前記複数のIPアドレスをフィルタリングするステップと、
前記複数のIPアドレスからIPアドレスを選択するステップとを含む、請求項に記載の方法。
【請求項6】
前記DNSクエリへの前記応答を生成するステップは、前修正されたDNSクエリへの前記応答から前記メタデータを除去するステップを含む、請求項1〜5のいずれかに記載の方法。
【請求項7】
前記DNSクエリへの前記応答を修正するステップは、前記応答を前記クライアントに送信するために一連の規則を適用するステップを含む、請求項1〜6のいずれかに記載の方法。
【請求項8】
複数のドメインネームシステム(DNS)クエリに応答する方法であって、前記方法は、
プロキシサーバが、1以上のクライアントから前記複数のDNSクエリを受信するステップと、
前記複数のDNSクエリにおける各々個別のDNSクエリについて、当該個別のDNSクエリが対応するメタデータの要求を含むかどうかを判断するステップとを含み
前記個別のDNSクエリが前記対応するメタデータ要求を含む場合に、前記プロキシサーバは、当該個別のDNSクエリを権威DNSサーバに送信するように構成されており、
前記1以上のクライアントの内の1つのクライアントから受信された、前記複数のDNSクエリにおけるDNSクエリがメタデータを要求していないという判断に応答して、前記プロキシサーバが、修正されたDNSクエリを生成するステップを含み前記修正されたDNSクエリを生成することは、前記DNSクエリを修正してメタデータの要求を含めることを含み、
前記プロキシサーバが、前記修正されたDNSクエリを前記権威DNSサーバに送信するステップと、
前記プロキシサーバが、前記権威DNSサーバから前記修正されたDNSクエリへの応答を受信するステップとを含み、前記応答は前記メタデータを含み、前記方法はさらに、
前記プロキシサーバ、前記メタデータに少なくとも部分的に基づいて、前記DNSクエリへの前記応答を生成するステップと、
前記プロキシサーバが、前記DNSクエリへの前記応答を前記クライアントに送信するステップとを含み、
前記DNSクエリへの前記応答は、前記メタデータに含まれるプログラムと、複数のIPアドレスとを含み、
前記DNSクエリへの前記応答を生成することは、前記複数のIPアドレスからIPアドレスを選択するために、前記プログラムを実行することを含む、方法。
【請求項9】
前記IPアドレスは、当該IPアドレスの待ち時間、可用性、または優先度のうちの少なくとも1つに基づいて選される、請求項に記載の方法。
【請求項10】
DNSクエリに対する前記修正された応答を前記クライアントに送信する前に前記修正されたDNSクエリに対する応答から前記メタデータを除去するステップをさらに含む、請求項8または9に記載の方法。
【請求項11】
請求項1〜10のいずれかに記載の方法をコンピュータに実行させるためのプログラム。
【請求項12】
請求項11に記載のプログラムを格納したメモリと、
前記プログラムを実行するためプロセッサとを備える、システム。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願との相互参照
この出願は、2016年3月9日に出願され、「インテリジェントドメインネームシステム転送のための方法および装置」(Methods and Apparatus for Intelligent Domain Name System Forwarding)と題された米国出願第62/305,602号の、米国特許法第119条(e)に基づく優先権利益を主張する。この出願は、その全体がここに引用により援用される。
【0002】
背景
ドメインネームシステム(Domain Name System:DNS)とは、インターネットまたはプライベートネットワークに接続されたコンピュータ、サービス、または任意のリソースのための階層的な分散命名システムである。それは、関与するエンティティの各々に割当てられたドメイン名にさまざまな情報を関連付ける。DNSはまた、より容易に記憶されるドメイン名を、基盤ネットワークプロトコルを用いてコンピュータサービスおよびデバイスを突きとめて識別するために使用される数値インターネットプロトコル(Internet Protocol:IP)アドレスに変換する。
【0003】
権威ネームサーバまたはオーソリテイティブとしても知られる権威DNSサーバは、数値IPアドレスへのドメイン名のマッピングについてのクエリに、また、メールエクスチェンジャー(mail exchanger:MX)レコードといった他のリソースレコード(resource record:RR)についての要求に応答する。これらのクエリに応答するために、各オーソリテイティブはそれ自体のDNSレコードのDNSデータベースを有する。DNSデータベースに格納されるよくあるタイプのレコードは、IPアドレス(AおよびAAAA)、簡易メール転送プロトコル(Simple Mail Transfer Protocol:SMTP)MXレコード、および、対応するドメインについてのネームサーバ(name server:NS)レコードを含む。DNSデータベースはまた、DNSレコードを認証するために使用され得る、ドメイン名エイリアス(CNAME)およびDNSセキュリティ拡張(DNS Security Extension:DNSSEC)レコードを含む、他のタイプのデータについてのレコードを格納することができる。
【0004】
インターネットに新しいドメインを追加するために、基本DNS規格は、ドメイン所有者すなわち登録者に、登録機関からドメイン名を購入し、新しいドメインについてのクエリに回答するために使用される権威DNSサーバの名前を特定するよう要求する。登録者は、権威DNSプロバイダ(ニューハンプシャー州(NH)マンチェスター(Manchester)のダイナミック・ネットワーク・サービシーズ・インコーポレイテッド(Dynamic Network Services Inc.)など)から権威DNSサービスを取得し、そのドメイン名(より正確にはゾーン)についてのレコードを権威DNSプロバイダを用いて構成する。エンドユーザのマシンが新しいドメイン名へのアクセスを試みると、それは再帰的(recursive)DNSサーバに、新しいドメインについてのDNSレコード、最も一般的にはAまたはAAAA(IPv4またはIPv6アドレス)を検索すよう依頼する。再帰的サーバは、権威DNSプロバイダによって保持された権威DNSサーバを突きとめ、次に、DNSレコードについて権威DNSサーバに問合せる。再帰的DNSサーバは、権威DNSサーバの回答をエンドユーザのマシンへ返す。再帰的DNSサーバはまた、その有効時間(time to live:TTL)に従って回答をキャッシュに入れてもよい。エンドユーザのマシンは次に、権威DNSサーバによって提供されるDNSレコードを使用してドメインへのアクセスを試みる。
【発明の概要】
【0005】
概要
本技術の実施形態は、DNSクエリに応答する方法を含む。例示的な方法は、プロキシサーバでクライアントからDNSクエリを受信するステップを備える。プロキシサーバは、メタデータについての要求を含むようにDNSクエリを修正し、DNSクエリを権威DNSサーバに送信する。プロキシサーバは権威DNSサーバからDNSクエリへの応答を権威DNSサーバから受信し、応答はメタデータを含む。プロキシサーバは、メタデータに少なくとも部分的に基づいてDNSクエリへの応答を修正し、DNSクエリへの応答をプロキシサーバからクライアントに送信する。
【0006】
プロキシサーバは、DNSクエリにおいてDNSセキュリティ(DNSSEC)OK(DO)フラグを設定することにより、DNSクエリを修正することができる。メタデータは、要求リソース署名(Requested Resource Signature:RRSIG)レコードであり得る。プロキシサーバによって受信されたDNSクエリへの応答は、プログラムを含むメタデータを受信することと、複数のIPアドレスを受信することとを含み得る。この場合、プロキシサーバは、プログラムを実行することにより、DNSクエリへの応答を修正する。実行中、プロキシサーバは、複数のIPアドレスを並べ替え、複数のIPアドレスをフィルタリングし、複数のIPアドレスからIPアドレスを選択してもよい。いくつかの実施形態では、プロキシサーバは、DNSクエリへの応答からメタデータを除去することによってDNSクエリへの応答を修正し、次に応答をクライアントに送信する。プロキシサーバは、応答をクライアントに送信するために一連の規則を適用することにより、DNSクエリへの応答を修正することができる。
【0007】
本技術の他の実施形態は、DNSクエリへの複数の応答を生成するためのシステムを含む。例示的なシステムは、DNS権威サーバおよびクライアントデバイスとデジタル通信するプロキシサーバを備える。プロキシサーバは、クライアントデバイスからDNSクエリを受信するように構成されている。プロキシサーバは、メタデータについての要求を含むようにDNSクエリを修正し、DNSクエリを権威DNSサーバに送信し、権威DNSサーバからDNSクエリへの応答を受信することができ、応答はメタデータを含む。プロキシサーバは、メタデータに少なくとも部分的に基づいてDNSクエリへの応答を修正し、DNSクエリへの応答をクライアントに送信することができる。
【0008】
プロキシサーバは、DNSクエリにおいてDNSセキュリティ(DNSSEC)OK(DO)フラグを設定することにより、DNSクエリを修正するように構成され得る。メタデータは、RRSIGであり得る。権威DNSサーバからのDNSクエリへの応答は、プログラムと、複数のIPアドレスとを含み得る。この場合、プロキシサーバは、プログラムを実行するように構成されている。プロキシサーバは、複数のIPアドレスを並べ替え、複数のIPアドレスをフィルタリングし、複数のIPアドレスからIPアドレスを選択することにより、プログラムを実行することができる。プロキシサーバは、応答をクライアントデバイスに送信する前にDNSクエリへの応答からメタデータを除去するように構成され得る。プロキシサーバは、応答をクライアントデバイスに送信するために一連の規則を適用することにより、DNSクエリへの応答を修正するように構成され得る。
【0009】
本技術のさらに他の実施形態は、DNSクエリに応答するための方法を含む。例示的な方法は、プロキシサーバでクライアントからDNSクエリを受信するステップを備える。プロキシサーバは、DNSクエリがメタデータについての要求を含むかどうかを判断する。DNSクエリがメタデータについての要求を含むという判断に応答して、プロキシサーバは、DNSクエリをプロキシサーバから権威DNSサーバに送信する。DNSクエリがメタデータについての要求を含んでいないという判断に応答して、プロキシサーバは、メタデータについての要求を含むようにDNSクエリを修正し、DNSクエリをプロキシサーバから権威DNSサーバに送信する。プロキシサーバは、権威DNSサーバからDNSクエリへの応答を受信し、応答はメタデータを含む。プロキシサーバは、メタデータに少なくとも部分的に基づいてDNSクエリへの応答を修正し、DNSクエリへの応答をプロキシサーバからクライアントに送信する。
【0010】
権威DNSサーバから受信されたDNSクエリへの応答は、メタデータに含まれるプログラムと、複数のIPアドレスとを含み得る。DNSクエリへの応答を修正するステップは、プロキシサーバで、複数のIPアドレスからIPアドレスを選択するために、プログラムを実行するステップを含み得る。DNSクエリへの応答を修正するステップは、プロキシサーバが、IPアドレスの待ち時間、可用性、または優先度のうちの少なくとも1つに基づいてIPアドレスを選択するステップを含み得る。DNSクエリがメタデータについての要求を含んでいないという判断に応答して、プロキシサーバは、応答をクライアントに送信する前に応答からメタデータを除去することができる。
【0011】
前述の概念および以下により詳細に説明される追加の概念(そのような概念は互いに矛盾していないと仮定する)のすべての組合せは、ここに開示される本発明の主題の一部であると考えられる、ということが理解されるべきである。特に、本開示の最後に現われる請求される主題のすべての組合せは、ここに開示される本発明の主題の一部であると考えられる。引用により援用される開示にも現われ得る、ここに明示的に採用された用語は、ここに開示される特定の概念と最も一貫する意味を与えられるべきである、ということも理解されるべきである。
【0012】
図面の簡単な説明
図面は主として例示のためのものであり、ここに説明される本発明の主題の範囲を限定するよう意図されてはいないということを、当業者であれば理解するであろう。図面は必ずしも縮尺通りではなく、場合によっては、ここに開示される本発明の主題のさまざまな局面は、異なる特徴の理解を容易にするために、図面において誇張または拡大して示されることがある。図面では、同様の参照符号は概して、同様の特徴(たとえば、機能的に同様の、および/または構造的に同様の要素)を指す。
【図面の簡単な説明】
【0013】
図1】インテリジェントDNS転送を容易にするプロキシサーバを含むシステムを示す図である。
図2】(未修正の)権威DNSサーバを用いて先進的(advanced)DNSサービスを提供するプロキシサーバを示す図である。
図3】プロキシサーバによるインテリジェントDNS転送の方法を示すフロー図である。
図4】権威DNSサーバからのメタデータを処理するための方法を示すフロー図である。
図5】プロキシサーバによる例示的なインテリジェントDNS転送を示す図である。
【発明を実施するための形態】
【0014】
詳細な説明
権威DNSサーバは、ウェブサイトの名前についてのクエリに、そのウェブサイトを指し示すIPアドレスを返すことによって応答する。通常、権威DNSサーバは、IPアドレスは変わっていないと仮定して、所与のウェブサイトに向けられたクエリについて毎回同じIPアドレスを与えるべきである。しかし、権威DNSサーバが所与のドメイン名について問合された際に異なる応答(たとえばIPアドレス)を返すこと、すなわち、権威DNSサーバが同じクエリに異なる回答を与えることが有利になると思われる場合がある(この挙動は一般に「先進的DNSサービス」と呼ばれる)。たとえば、異なるエンドユーザを異なるIPアドレスに向けることをディレクトリレベルでの負荷分散のために使用して、各エンドユーザが最も近いサーバ(たとえば、最低の待ち時間または最短の地理的距離を有するサーバ)によってサービス提供されることを保証するか、もしくは、エイリアス機能性またはCNAME平坦化(別名ALIAS)を提供してDNS規格自体の制限を回避してもよい。同様に、権威DNSサーバがリカーサの地理に依存して異なる他の名前を指し示すCNAMEを返すことが有用であり得る。
【0015】
残念ながら、DNS規格は、同じクエリに異なる応答を提供しない。この制限を回避するために、権威DNSサーバは、たとえば所与のクエリを行なう再帰的サーバのIPアドレスまたは時刻に依存して、当該クエリに異なる応答を提供するように修正されてもよい。それらの応答はまた、複数のサーバにわたって負荷を分散させるために、より大きい集合からランダムに選択されてもよい。典型的には、修正は、登録者によって提供される情報またはアルゴリズムまたはコードに基づく。たとえば、権威DNSサーバは、問題になっているドメインについての所望の挙動を特殊レコードタイプとしてDNSデータ内に格納し、それを修正されたコードに従って返すように修正されてもよい。
【0016】
しかし、これらの修正は概してカスタムであり、また、権威DNSサーバの複雑性に一部起因して貧弱なスケールになる傾向がある。伝統的に、権威DNSサーバは通常、ある使用事例について最適化されているため、カスタム回答を提供するようにそれを修正することはスケーリング問題をしばしばもたらす。それらのスケーリング問題のうちの一例は、インメモリサーバを選択したためにメモリにロードし過ぎることである。メモリにロードすることは、多数のレコードのために不都合に長い時間を要し得る。オーソリテイティブのスケーリングまたは他の特性を、異なるものとの交換によって変更することは、カスタム作業をやり直すこと、およびおそらくは、異なるシステムにおいて異なるバージョンを維持することをしばしばもたらす。また、これらのシステムは複雑であり、維持することが難しい。カスタマイズされた権威DNSサーバを維持することもまた、特にレコードが時間とともに変化する場合、複雑であり得る。
【0017】
本技術は、権威DNSサーバを修正する代わりに、権威DNSサーバに結合されたプロキシサーバを使用して、同じクエリへの異なる応答を生成するやり方を提供する。その結果、プロキシサーバは顧客データまたは先進的サービス仕様を保持する必要がないため、それは、そのデータのスケーリングまたはそれへのアクセスパターンによる影響を受けない。
【0018】
インテリジェントDNS転送のためのシステム
図lは、インテリジェントDNS転送を提供するために、クライアントデバイス120からのDNSクエリを検出し、権威DNSリゾルバ110からの応答を処理するように構成された、DNSプロキシサーバまたはDNSプロキシとも呼ばれるプロキシサーバ130を含む、システム100の図である(図lは、理解を容易にするための簡略バージョンである)。システム100はまた、権威DNSリゾルバ110と、エイリアスリゾルバ135と、ネットワークリソース(メモリ)199とを含む。これらのデバイスとプロキシサーバ130とはDNSエッジ101に位置し、(たとえばインターネットを介して)トランス170に動作可能に結合されており、トランス170は次に、ポリシーマスタ160およびポリシーコンパイラ150に結合される。
【0019】
当業者には容易に理解されるように、プロキシサーバ130、権威サーバ110、再帰的リゾルバ135、ポリシーコンパイラ150、ポリシーマスタ160、およびトランス170は各々、コンピュータ読取可能不揮発性メモリに格納され、プロセッサによって実行される、コンピュータ実行可能コードとして実現され得る。それらは、好適なハードウェアおよび接続を使用して、要望通り配列または分散され得る。同様に、ネットワークリソース199は、プロキシサーバ130およびトランス170に通信可能に結合された任意の好適なタイプのコンピュータ読取可能不揮発性メモリとして実現され得る。
【0020】
以下により詳細に説明されるように、顧客140は、従来のシステムと全く同様に、そのドメイン名についてのDNSレコードを権威DNSリゾルバ110を用いて構成する。これらのドメイン名は、コンテンツ配信ネットワーク(content delivery network:CDN)などの1つ以上の顧客アセット145a〜145c(まとめて顧客アセット145)に関連付けられてもよく、それらは各々、異なるIPアドレスを有しており、所与のドメイン名に対応するIPアドレスとして解決され得る。顧客140は、ユーザ121からのドメイン名クエリに応答して、これらのIPアドレスにトラフィックを向けるための1つ以上のダイナミックステアリングポリシーを設定する。たとえば、顧客140は、エンドユーザ121からの所与のDNSクエリに応答して、どのIPアドレスを供給するかを判断するための待ち時間、可用性、地理的位置、および他の基準を特定するために、ウェブベースのインターフェイスを使用してもよい。ネットワークリソース199は、インテリジェントDNS転送におけるプロキシサーバ130による使用のために、これらの基準に対応するリンクデータ180、サブネットデータ190、および/またはアセットデータ195を格納してもよい(リンクデータ180およびサブネットデータ190はまた、プロキシ130に対してローカルであるメモリデータ構造に格納され得る)。より一般的には、ダイナミックステアリングポリシーは、顧客のドメイン名のうちの1つについてのDNSクエリに応答してIPアドレスを供給するための、顧客140からの、およびおそらくはエンドユーザ121からの基準、データ、および規則を含む。
【0021】
ポリシーマスタ160は、顧客140からのダイナミックステアリングポリシーを、たとえば正式のコンピュータ言語で書かれた1つ以上の関数として格納する。ポリシーマスタ160は、これらの関数を含むプログラムを、ポリシーコンパイラ150を用いて生成する。ポリシーコンパイラ150は、ダイナミックステアリングポリシーを含む関数がプロキシサーバ130によって解釈され得るようにこれらのプログラムを構築するように構成された、単純な実行可能ラッパーとして実現され得る。ポリシーマスタ160は、図1に示すように、(たとえば、要求リソース署名(RRSIG)レコードにおけるプログラムとしての)先進的サービスの顧客構成を権威DNSリゾルバ110に供給してもよい。
【0022】
ポリシーマスタ160からのダイナミックステアリングポリシーと、リンクデータ180、サブネットデータ190、およびアセットデータ195などの添付データとは、トランス170を介してネットワークリソース199に送信される。トランス170は、動的データ(たとえば、リンクデータ180、サブネットデータ190、アセットデータ195など)をエッジ101に伝播する。トランス170は、さまざまなチャネルにおけるイベントをリッスンし、それらを、「192.0.2.0/24におけるリゾルバの背後からExampleCDNまでの平均待ち時間は42ミリ秒です」、または「198.51.100.0/24はフランスにあります」、または「webserver2.example.comはダウンしています」といった宣言的情報になるよう処理することによって、そのデータを得る。
【0023】
よって、ネットワークリソース199は、顧客140によって提供されたデータ、または、DNSクエリへの応答を判断するために使用される待ち時間、健全性、地理的位置、可用性、および他の基準に関して取得されたデータを格納する。たとえば、リンクデータ180は、権威DNSリゾルバ110によって(たとえば5分ごとに)集計され得る、加工された(cooked)待ち時間パフォーマンスデータを格納する。サブネットデータ190は、顧客アセット145ごとに、およびおそらくはクライアント120ごとに、地理的位置データを格納する。アセットデータ195は、IPアドレスの健全性といった可用性データを含む。
【0024】
動作時、プロキシサーバ130は、顧客140によって定義され、とりわけリンクデータ180、サブネットデータ190、および/またはアセットデータ195に基づいたポリシーを使用して、クライアント120を適切な顧客アセット145a、145bまたは145cへ導く。プロキシサーバ130は、クライアント120からDNSサーバ110についてのクエリを受信し、それらがDNSSEC情報などのメタデータについての要求を含むかどうかを確かめるためにそれらを検査する。クエリがDNSSEC情報についての要求を含む場合、プロキシサーバ130はクエリを権威DNSサーバ110へ渡し、含んでいない場合、プロキシサーバ130は、権威DNSサーバ110からDNSSEC情報を検索するために、クエリにおいてDNSSEC OK(DO)フラグを設定する。権威DNSサーバ110は、DNS規格に従ってプロキシサーバ130に応答する。プロキシサーバ130は、DNSSEC情報、元のクエリ、クエリソース(IPアドレス)、時刻などに基づいて権威DNSサーバ110からの応答を修正し、次に、修正された応答を、要求を行なった再帰的DNSサーバに送信する。
【0025】
プロキシサーバ130は、クライアント120によって要求されていないDNSSEC関連RRなどのメタデータを検索するかもしれないため、要求されなかった場合、それは応答からメタデータを除去する。関連して、そのDOフラグはOPTと呼ばれるレコードの内部にあり、いくつかのクライアントはそれも要求せず、その場合、それも同様に除去される。より一般的には、クライアントクエリへの修正は、それらの結果を逆にしてからクライアントに返す。さまざまな状況で使用される修正は、(1)OPTレコードが存在しない場合、OPTレコードを追加すること;(2)DOが設定されていない場合、DOを設定すること;および(3)クライアントソースIPアドレスを有するクライアントサブネットオプションを追加すること、を含む。プロキシサーバはまた、レガシーインフラストラクチャからの移行をよりシームレスにするようにクライアントソースIPを渡すために、EDNS0プロキシオプション(EDNS0 Proxy Option:EPO)と呼ばれるカスタムオプションを追加することができる。修正された権威DNSサーバと連携する場合、EPOは有用である。これらすべてのうち、OPTおよびDO部分のみが、RRSIGアプローチにとって必須である。
【0026】
いくつかの実現化例では、プロキシサーバ130は、権威DNSサーバ110上のDNSSECレコードに格納された要求リソース署名(RRSIG)と呼ばれる暗号署名情報に従って、権威DNSサーバ110からの応答を修正する。プロキシサーバ130は、RRSIGと、クエリソースのIPアドレスなどのクエリにおいて符号化された情報との双方を使用して、クエリへの応答を修正するかどうか、およびクエリへの応答をどのように修正するかを判断する。いくつかの点では、このアプローチは、権威DNSサーバ110をRRSIG用の「メモリ」として扱うことを伴う。プロキシサーバ130はDNSSECレコードを返すようにクエリを修正するため、プロキシサーバ130はRRSIGについて別個の要求を行なう必要はない。そして、クエリ応答を修正するためのこの手法は余分のクエリを伴なわないため、それは、RRSIGについて別個のクエリを行なう場合よりも、権威DNSサーバ110にかかる処理負担を小さくする。すなわち、権威DNSサーバ110は、プロキシサーバ130からの(場合によっては修正された)単一の要求を、それが2つの別個の要求を処理し得る場合よりも効率的に処理することができる。
【0027】
にもかかわらず、DNSクエリへの応答を修正するためにプロキシサーバ130を使用しない明白な理由がいくつかある。プロキシサーバ130を追加することは余分なレイヤーをネットワークに追加し、それは待ち時間、コスト、および複雑性を増加させる。プロキシサーバ130を使用することはまた、ネットワークトラフィックの量を倍にする。しかし、修正された権威DNSサーバ110を使用することとは異なり、プロキシサーバ130を使用することは、ルーチンDNSサービスを提供する機能性から先進的DNS機能性を分離する。それは、それらの機能性をともに混合することとは対照的である。プロキシサーバ130を使用することはまた、先進的DNS機能性を提供するためのフレキシビリティを高める。そして、プロキシサーバは機能開発のために構築可能であるため、プロキシサーバにおいて新機能を実現することがより容易でより迅速であるかもしれない。プロキシサーバ130はまた、プロキシサーバ自体への、または権威DNSサーバへの更新を行なうことなく、多くの新機能がリリースされ得ることを十分に一般化する言語を使用できる。それはまた、すでに構築されたかもしれない大抵のDNSSEC対応の権威DNSシステムに、修正をほとんど加えることなく、先進的機能をオーバーレイすることを実用的にする。
【0028】
権威DNSサーバ110とともにプロキシサーバ130を使用することはまた、サーバ間の一貫性を維持することを単純化する。いくつかのプロキシサーバ130は、たとえばウェブサイト用の構成データを保持するが、この構成データは、実際のコンテンツサーバ上の構成データと慎重に同期されなければならない。所望の先進的機能挙動とデータとの双方を同じゾーンに保持することは、これらが標準的なゾーン更新メカニズムを使用して同期したまま保持されることを可能にする。これが、全く別のアプローチではなく、カスタムRRタイプが一般に使用される理由である。なぜなら、別個のデータベースが先進的機能を包含し得るものの、それを同期したまま保持することは問題になるためである。ここに開示されるプロキシアプローチは、実現部を分離しつつ、このゾーン内特性を保っており、それはかなりまれである。
【0029】
プロキシサーバ130が権威DNSサーバ110に結合された状態では、オープンソースまたは内部で開発された権威サーバの実装への変化を維持する必要はない。プロキシサーバ130を使用することはまた、各権威DNSサーバ内で機能を再開発することなく、異なる権威DNSサーバ実現を使用するためのフレキシビリティを提供する。そのフレキシビリティは、機能群(feature set)が、非常に異なるパフォーマンス特性およびスケーリング特性を有するデプロイメントにおいて使用されることを可能にする。現在、異なる権威サーバ実現を使用してこれらの異なるマーケットにサービス提供するシステムが複数ある。これらのシステムのうちの一部のみが先進的機能を提供してもよく、残りは、非常に多くの(たとえば何百万もの)ゾーンが存在し、パフォーマンスがそれほど敏感ではない、バルクホスティングマーケットなどのマーケットに対処する。
【0030】
次に、これらのシステムのすべてが先進的機能を提供してもよい。たとえば、企業DNSは概してパフォーマンスに敏感であり、一方、バルクDNSは、アクセス頻度が低い非常に多くのゾーンへのスケーリングにより関与する傾向がある。それらの異なるアクセスパターンは、異なる権威DNSサーバによってより良好にサービス提供され得る。加えて、オペレータは、自分のネットワークをよりレジリエントにするために、2つ以上の権威DNSサーバ実現を使用したいかもしれず、それは本来なら、先進的機能が2つの異なる実現に行なわれるのをサポートするための修正を要求するかもしれない。
【0031】
インテリジェントDNS転送のためのプロキシサーバ
図2は、DNSサーバ210(たとえば、権威DNSサーバ、またはバックエンド再帰的DNSサーバ)の前に位置するDNSプロキシサーバ230を示す。動作時、それは、クライアント220(たとえば再帰的サーバ)から転送制御プロトコル(Transmission Control Protocol:TCP)207およびユーザデータグラムプロトコル(User Datagram Protocol:UDP)205のDNSクエリ(たとえば、DNSクエリ233aおよび233b)を受入れ、DNSクエリ(たとえば、233cおよび233d)をDNSサーバ210へ発行する。DNSプロキシサーバ230は、クライアントのクエリへのさまざまな動的応答を一般的なやり方で提供するために、それらの動的応答に関する構成を必ずしも格納することなく、権威DNSサーバ210からの応答に埋込まれた命令を解釈して、同期の懸念を減少させるかまたは排除する。それは、権威DNSサーバからの応答を必ずしもキャッシュに入れず、また、優れたパフォーマンスまたは正しい挙動について必ずしもキャッシュに依存しない。
【0032】
より具体的には、DNSプロキシサーバ230は、クライアント220からのクエリ233aおよび/または233bを(何らかの軽微な修正を加えて)DNSサーバ210へ渡し、返答を待つ。DNSプロキシサーバ230は、クエリ233を取扱う(それらを修正し、それらを権威または再帰的サーバ210へ送信し、結果を処理し、クライアント220に応答する)ための1つ以上のクエリ処理ワーカ232を含む。実際には、プロキシサーバ230は、均一のワーカ232の大きい集合を保持し、クエリが到着するとそれらにクエリ233を手渡してもよく、各ワーカ232は一度に1つのクエリ233に専念する。応答が送信されるやいなや、ワーカ232は、次のクエリ232に対する準備ができている。
【0033】
TCPバックエンド236における1つ以上のTCPクライアント234は、ワーカ232からサーバ210への、および反対方向のメッセージを、同様の一度に1つの態様で調整するが、効率のためにサーバ210への持続接続を維持することができる。各TCPバックエンド236は、同じサーバ210専用のTCPクライアント234のプールである。多くの別個のサーバ210があってもよく、それらの各々は、TCPクライアント234のプールを有する対応するTCPバックエンド236を有する。
【0034】
DNSサーバ230からの返答(たとえば、237aおよび237b)は、クエリについての回答レコードを包含していてもよく、オプションで1つ以上のRRSIGレコードも包含していてもよい。その挙動は、どのDNSSEC準拠DNSサーバにも存在し、RRSIGレコードの意図された用途と矛盾しない。RRSIGレコードは、標準化されたカスタム暗号化タイプを使用するものを含んでいてもよく、それは次に、特定の所有者まで追跡可能であり、ひいては一意的である名前によって明確にされる。
【0035】
その名前の後に、RRSIGレコードは、所望の挙動を作り出すためにより小さい関数をともに構成するのに十分精巧な言語で書かれた埋込まれたプログラムを含む任意のデータを担持していてもよい。それはまた、プログラムで命名されている各機能の劣化ケースなどの挙動/機能ごとに特定のRRタイプを使用することができる。たとえば、劣化ケースは、人間が読める形で、Alias(“domain.com”)として表現されてもよい。および、より多くの原始関数(非常に近似的)を構成するより精巧な表現:ReplaceRR(Qname(), Qtype(), LookupRecursive("domain.com"))として表現されてもよい。それは、適切なRRSIGレコードをゾーンに追加することによって権威メモリに入れられる。
【0036】
DNSプロキシサーバ230は埋込まれたプログラムを監視し、それを実行して、クライアント220の元のクエリへの修正された応答を生成する。DNSプロキシサーバ230がクライアント220にどの応答を送信すべきか判断する過程で、DNSプロキシサーバ230は、DNSまたは他のプロトコルを使用して他のシステムへの追加のクエリを発行してもよく、または他のローカルデータを調べてもよい。最後に、プロキシサーバ230は、結果(たとえば、237cおよび/または237d)をクライアント220に返す。
【0037】
最も一般的な場合、RRSIGレコードにはプログラムが埋込まれておらず、そのため、DNSプロキシサーバ230は、たった1つのクエリを権威DNSサーバ210へ渡すことによって、クライアントのクエリへの応答を生成することができる。反対に、カスタムタイプにプログラムを埋込むことは、2つのクエリを必要とするであろう。一方のクエリは、プログラムがあるかどうかをカスタムタイプが確かめるためのものであり、もう一方のクエリは、要求されたデータのためのものである。RRSIG実現のために、DNSプロキシサーバ230は、アプリケーション特有の挙動が実現されることに依存して、最初のクエリを超えた追加のクエリを行なってもよい。
【0038】
ポリシーマスタおよびポリシーコンパイラ
ポリシーマスタは、顧客からのダイナミックステアリングポリシーおよび添付データを格納することを担当する。ポリシーマスタは、ポリシーコンパイラを用いてプログラムを生成し、ポリシーコンパイラは、プロキシサーバによって解釈され得るプログラムを構築するように構成された単純な実行可能ラッパとして実現され得る。ポリシーコンパイラは、プログラムを構築するように構成された関数を提供する。ポリシーコンパイラに追加されるいくつかの例示的な関数は、DNSクエリに応答して供給され得る可能なすべてのIPアドレスの中からIPアドレスを選択するためのフィルタ関数およびソーティング関数を含む。
【0039】
一実現化例では、ポリシーコンパイラは、最終応答に入るかもしれないリソースレコードのリストを得るBuildResponse関数と、レコードのリストをソートすることおよび/または減少させることによって当該リストを変更することができる規則関数とを含む。そのような関数は、ソーティングまたはフィルタリングを行なうための引数に加えて、規則関数も得る。このように、1つのポリシーに複数の規則を適用することができる。適用される必要がある一連の規則を終了するために、特殊関数Endを使用することができる。規則をすべて適用した後で、BuildResponse関数は、レコードの(減少した)リストをシャッフルしてDNS応答を構築することができる。BuildResponseプログラムの一例は、以下の通りである:
【0040】
【数1】
【0041】
この例では、Available、Performance、およびPriorityは、ソーティングおよびフィルタリングを行なうための規則である。これらの規則を以下にさらに説明する。
【0042】
関数Available [av1, av2, ...]は、各要素が提案されたリソースレコードのリストにおけるリソースレコードindexをアセット識別子にマッピングするアセットマッピングのリストに基づいて、リソースレコードのリストをフィルタリングすることができる。アセット識別子は、ネットワークリソースから可用性データをルックアップするために使用され得る。利用できないアセットに対応するレコードは、リストから除去される。そのため、以下の例における"0:asset9998"は、アセット"asset9998"についての可用性をルックアップし、そのアセットが利用できないとマークされている場合にリソースレコード"rr0"を取り除く、ということを意味する。この規則はリストを空のままにせず、すべてのレコードが除去された場合、フィルタリングは行なわれない。
例:
【0043】
【数2】
【0044】
関数Performance [lp1, lp2, ...]タイプは、各要素が提案されたリソースレコードのリストにおけるリソースレコードindexをアセット識別子にマッピングするアセットマッピングのリストに基づいて、リソースレコードのリストをフィルタリングすることができる。アセット識別子は、リンクの待ち時間データをルックアップするために使用され得る。待ち時間データがないアセットは、最大の待ち時間を有すると考えられる。長い待ち時間を有するアセットに対応するレコードは、リストから除去される。そのため、以下の例における"1:asset1001"は、アセット"asset1001"についてのリンクパフォーマンスデータをルックアップし、そのアセットが有する待ち時間が長すぎる場合にリソースレコード"rr1"を取り除く、ということを意味する。この規則はリストを空のままにせず、すべてのレコードが除去された場合、フィルタリングは行なわれない。
【0045】
このタイプの引数は、リンクパフォーマンスフィルタリングがどのように適用されるかを定義する。それは、リンクパフォーマンスフィルタオプションへの非負整数値Nのマッピングであると定義される。これらのオプションは、以下のものを含んでいてもよい:
・"count":最低の待ち時間を有する最大でN個のアセットを返す。どのレコードにも待ち時間データがない場合を除き、待ち時間データがないレコードは含まれないであろう;
・"absolute":最低の待ち時間を有するアセットと、Nミリ秒以内の待ち時間を有するすべてのアセットとを返す;
・"relative":最低の待ち時間を有するアセットと、所与のレベルのNパーセント以内の待ち時間を有するすべてのアセットとを返す。
【0046】
【数3】
【0047】
関数Priority [pf1, pf2, ...]は、各要素が提案されたリソースレコードのリストにおけるリソースレコードindexを優先順位にマッピングする優先度マッピングの所与のリストに基づいて、リソースレコードのリストをソートすることができる。そのため、以下の例における"0:20"および"1:10"は、"rr1"が"rr0"よりも好まれるということを意味する。レコードが同じ順位を有する(同点である)場合、プロキシサーバは順序をランダムに定めることができる。優先度が割当てられていないレコードは、無限の優先度を与えられるであろう。空のリストは、優先度がなく、最終応答がシャッフルされるであろうということを意味する。順位は、16ビットの符号なし整数等価物(16-bit unsigned integer equivalent:uint16)として特定される。
【0048】
【数4】
【0049】
規則の他の例は、リソースレコードのリストをランダムにシャッフルするためのBias、リソースレコードのリストを制限するためのMax num、および特定のリソースレコードを除去するためのRejectなどの関数を含み得る。規則に加えて、条件付きの状態でプログラムを設定する、BuildResponseとEndとの間の関数がある場合がある。プログラムが条件付きの状態にある場合、規則関数は、規則を適用すべきか否かを判断するために条件付きの状態を評価するであろう。いくつかの例は、Switch、Case、Default、およびEndSwitchを含む。
【0050】
プロキシサーバを使用するDNS転送
図3は、プロキシサーバを使用してインテリジェントDNS転送を提供するためのプロセス300を示すフロー図である。このプロセス300は、図1に示すシステム100、もしくは、図2のプロキシサーバ130などのプロキシサーバを含む任意の他の好適なシステムまたはネットワークを使用して実現され得る。プロセス300は、インテリジェントDNS転送を提供するために、クライアントデバイスからのDNSクエリを検出し、権威DNSサーバからの応答を処理することを伴う。
【0051】
クライアントデバイスがドメインへのアクセスを試みると、ステップ310で、それはDNSクエリをDNSプロキシに送信する。ステップ320で、DNSプロキシはDNSクエリを分析して、DNSクエリがメタデータについての要求を含むかどうかを判断する。一実現化例では、DNSプロキシはDNSクエリを検査して、DNSクエリがDNSSEC情報またはOPTレコードなどのメタデータについての要求を含むかどうかを判断する。DNSクエリがメタデータについての要求(たとえば、DNSSEC情報についての要求)を含む場合、ステップ330で、DNSプロキシはDNSクエリを権威DNSサーバへ渡す。DNSクエリがメタデータについての要求を含んでいない場合、ステップ340で、DNSクエリはメタデータについての要求を含むように更新される。一実現化例では、DNSプロキシは、権威DNSサーバからDNSSEC情報を検索するために、DNSクエリにおいてDNSSEC OK(DO)フラグを設定する。別の実現化例では、DNSプロキシは、権威DNSサーバからOPTレコードを検索するために、OPTレコードDO=1を設定する。ステップ330で、DNSプロキシは、更新されたDNSクエリを権威DNSサーバへ渡す。
【0052】
ステップ350で、DNSプロキシは、権威DNSサーバからの応答がメタデータを含むかどうかを判断する。一実現化例では、DNSプロキシは、応答がメタデータ、たとえば、DNSSECレコードに格納されたRRSIGを含むかどうかを判断する。別の実現化例では、DNSプロキシは、応答がOPTレコードを含むかどうかを判断する。権威DNSサーバからの応答がメタデータを含んでいない場合、ステップ360で、権威DNSサーバからのDNS応答メッセージがクライアントデバイスに送信される。すなわち、プロキシサーバは、権威DNSサーバからのドメイン名に対応する1つ以上のIPアドレスを有するDNSレコードを検索し、それをクライアントデバイスに送信する。しかしながら、権威DNSサーバからの応答がメタデータ(たとえばRRSIG)を含む場合、DNSプロキシはメタデータをさらに処理して、権威DNSサーバからのIPアドレスのうちの1つを含む修正された応答を生成する。ステップ370で、プロキシサーバによって生成されたこの修正された応答が、クライアントデバイスに送信される。
【0053】
図4は、プロキシサーバで権威DNSサーバからのメタデータを処理する方法400を示すフロー図である。ステップ410で、DNSプロキシは、権威DNSサーバからの応答を受信する。この応答は、メタデータと、1つ以上のIPアドレスとを含む。ステップ420で、DNSプロキシは、メタデータに埋込まれた1つ以上のプログラムを処理する。メタデータに埋込まれたプログラムは、ドメイン名に関連付けられた最適なIPアドレスを判断するためのダイナミックステアリングポリシーおよび規則を定義する。一実現化例では、DNSプロキシは、RRSIGに埋込まれた1つ以上の関数を処理する。ステップ430で、DNSプロキシは、メタデータにおける埋込まれた規則および関数に基づいてネットワークリソースをルックアップする。一実現化例では、DNSプロキシは、RRSIGにおける埋込まれたプログラムを実行し、RRSIGにおける規則に依存して、DNSプロキシは、リンクデータ、サブネットデータ、およびアセットデータなどのネットワークリソースをルックアップする。リンクデータ、サブネットデータ、およびアセットデータは、待ち時間、パフォーマンス、健全性についての情報、ならびにコンテンツIPアドレスおよびクライアントIPアドレスに関する他の情報を含む。
【0054】
ステップ430で、ドメイン名に関連付けられた1つの最適なIPアドレスを判断するために、ネットワークリソースからのデータは並べ替えられ、ソートされ、フィルタリングされる。たとえば、クライアントデバイスからコンテンツ配信ネットワークまでの経路が、それらの待ち時間に基づいてソートされてもよく、IPオリジンが、それらの健全性に基づいてソートされ、並べ替えられてもよい。このように、権威サーバからのDNS応答は、DNSプロキシによって生成された最適な回答を含むように修正される。修正されたDNS応答メッセージは、クライアントデバイスに送信される。クライアントデバイスからのDNSクエリがメタデータについての要求を含まなかった場合、修正されたDNS応答メッセージにおけるメタデータは、それがクライアントデバイスに送信される前に除去され得る。
【0055】
図5は、プロキシサーバ530によるインテリジェントDNS転送のより具体的な一例を示す。プロキシサーバ530は、図1に示すプロキシサーバ130および図2に示すプロキシサーバ230と機能的に同じとは言えないまでも似ている。クライアントデバイス520は、DNSクエリ512を権威DNSサーバ510に送信することによってドメイン名へのアクセスを試みる。プロキシサーバ530はDNSクエリ512を受入れ、DNSクエリ512が、応答に含まれるべきメタデータについての要求を含むかどうかを判断する。DNSクエリ512がこの要求を含んでいないと判断すると、クエリ512は、メタデータについての要求を反映するように更新される。更新されたDNS要求516は、ドメイン名についてのDNSレコードを検索するために、DNS権威サーバ510に送信される。DNS権威サーバ510が要求されたドメインについてのメタデータを含んでいない場合、DNS権威サーバ510は、プログラムなし応答518をプロキシサーバ530に送信する。プログラムなし応答518は、メタデータがないドメイン名のためのターゲットIPアドレスである。522で、プロキシサーバ530は、このプログラムなし応答518をクライアントにマッピングする。そして524で、プロキシサーバ530は、ドメインのAまたはAAAA(IPv4またはIPv6アドレス)をクライアントデバイス520に返す。
【0056】
権威DNSサーバ510が要求されたドメインについてのメタデータを含む場合、権威DNSサーバ510は、ドメイン526aに関するIPアドレスを含むDNSレコードを、要求されたメタデータ526bとともに、プロキシサーバ530に提供する。526aにおける"example.com. A 0.0.0.0"は、526bにおける動的処理命令によって閉塞されるであろう「ダミーの」回答である。RRSIGレコードの基本特性は、それらがbaseデータを増大させるメタデータであるということである。図5のこの局面は、回答データは、オーバーライドメタデータを伴うためにプロキシ530によって無視されても、オーソリテイティブ510からの応答の中に存在する、ということを示す。
【0057】
メタデータは、所望の挙動を作り出すための1つ以上の埋込まれたプログラムを含む。プロキシサーバ530は、メタデータ526bにおける埋込まれたプログラムを実行し、修正された応答を生成するためのインタープリタを含む。処理中、プロキシサーバ530は、待ち時間、パフォーマンス、健全性、または他のそのような基準に関する情報を得るために、サブネットデータ590および/またはリンクデータ580をルックアップする。サブネットデータ590およびリンクデータ580は、ルックアップ要求(たとえば528および536)に基づいて回答(たとえば532および538)をプロキシサーバ530に提供するネットワークリソースである。プロキシサーバ530は、これらの回答に基づいてIPアドレスのリストを並べ替え、フィルタリングし、減少させて、1つの最適なIPアドレスを判断する。回答はクライアントにマッピングされ、修正されたDNS応答メッセージ546がクライアント320に送信される。クライアント320からのDNSクエリがメタデータについての要求を包含していなかった場合、プロキシサーバ530はDNS応答メッセージからメタデータを除去し、IPアドレスのみを有する修正されたDNS応答メッセージ546をクライアントデバイス320に送信する。
【0058】
この例では、IPアドレス203.0.113.1を有するクライアントデバイス320が、ドメイン“example.com A”へのアクセスを試みる。“example.com A”へのアクセスを要求するDNSクエリ512が、プロキシサーバ530に送信される。DNSクエリ512はメタデータについての要求を含んでいないため、すなわち、DNSクエリはDNSSECレコードについての要求を含んでいないため、クエリ512は514でDNSSEC DOフラグを設定することによって更新される。更新された要求516が、権威DNSサーバ510に送信される。第1のシナリオでは、権威DNSサーバ510が“example.com”についてのメタデータを含んでいないと仮定して、権威DNSサーバ510は、ドメインに対応するCDNのIPアドレス(たとえばexample.com A 192.0.2.1)を有するプログラムなし応答518を返す。プログラムなし応答518はクライアントにマッピングされ、IPアドレス(example.com A 192.0.2.1)524はクライアントに送信される。
【0059】
第2のシナリオでは、権威DNSサーバ510がメタデータを含むと仮定して、権威DNSサーバ510は、DNSSECレコードに格納されたRRSIG526bをプロキシサーバ530に提供する。プロキシサーバ530は、RRSIGに含まれる"BuildResponse"関数を実行する。"BuildResponse"関数は、ドメインについてのダイナミックステアリングポリシーを格納するために1人以上の顧客によってポリシーマスタに追加された規則関数である。この例では、"BuildResponse"関数は、地理的位置データ(ジオデータ)および待ち時間についての引数を含む。534で、プロキシサーバ530は、ルックアップ要求528をサブネットに送信することによって、クライアント320についてのジオデータをルックアップする。サブネットは532で、クライアントについてのジオデータ(dyngeo=UK)を返す。プロキシサーバ530はジオデータを分析して、RRSIGにおけるジオデータがクライアントジオデータと整合するかどうかを判断する。プロキシサーバ530は次に、待ち時間ルックアップ要求536をリンクデータ580に送信することによって、RRSIGにおいて列挙されたコンテンツ配信ネットワーク(CDN)([0:cdnl, 1:cdn2])についてのパフォーマンスデータをルックアップする。リンクデータ580は、cdn1およびcdn2についての待ち時間を返す。この例では、cdn1についての待ち時間はcdn1について180ミリ秒、cdn2についての待ち時間は142ミリ秒である。542でパフォーマンスフィルタ関数を適用することにより、プロキシサーバ530は長い待ち時間レコードを取り除き、それによって回答をcdn2に減少させる。544で、プロキシサーバ530は応答をクライアントにマッピングし、次に、cdn2のIPアドレス(example.com a 198.51.100.1)を含むDNS応答メッセージ546をクライアント320に送信する。
【0060】
正規名(CNAME)レコードを使用するインテリジェントなデータなしDNS転送
先進的DNSサービスにはまた、権威DNSサーバからの正規名(Canonical Name:CNAME)応答のターゲット名における命令を探すプロキシサーバも提供され得る。当業者であれば理解するように、CNAMEレコードは、あるドメイン名が、別のドメイン名、すなわち「正規」ドメイン用のエイリアスであるということを特定する。正規ドメインは、サブドメイン、IPアドレスなどを含む、別のドメインについてのすべての情報を定義する。
【0061】
結論
さまざまな本発明の実施形態がここに説明され例示されてきたが、当業者であれば、ここに説明された機能を行なうための、ならびに/もしくは、結果および/または利点の1つ以上を得るためのさまざまな他の手段および/または構造を容易に思い描くであろう。また、そのような変形および/または修正の各々は、ここに説明された本発明の実施形態の範囲内にあると考えられる。より一般的には、ここに説明されたすべてのパラメータ、寸法、材料、および構成は例示的であるよう意図されていること、ならびに、実際のパラメータ、寸法、材料、および/または構成は本発明の教示が用いられる特定の用途に依存するであろうということを、当業者であれば容易に理解するであろう。当業者であれば、ここに説明された具体的な本発明の実施形態の多くの均等物を認識し、または日常の実験のみを用いて確かめることができるであろう。したがって、前述の実施形態は単なる例として提示されていること、ならびに、添付された請求項およびその均等物の範囲内で、本発明の実施形態は、具体的に説明され請求されたもの以外の態様で実践され得ることが理解されるべきである。本開示の発明の実施形態は、ここに説明された個々の特徴、システム、物品、材料、キット、および/または方法に向けられている。加えて、2つ以上のそのような特徴、システム、物品、材料、キット、および/または方法の任意の組合せは、そのような特徴、システム、物品、材料、キット、および/または方法が互いに矛盾しない場合、本開示の発明の範囲内に含まれる。
【0062】
上述の実施形態は、多くのやり方のうちのいずれでも実現され得る。たとえば、ここに開示された技術を設計し構築する実施形態は、ハードウェア、ソフトウェア、またはそれらの組合せを使用して実現されてもよい。ソフトウェアで実現される場合、ソフトウェアコードは、単一のコンピュータにおいて提供されようと、複数のコンピュータ中に分散されようと、任意の好適なプロセッサまたはプロセッサの集合上で実行され得る。
【0063】
また、コンピュータは、ラックマウント型コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータといった多くの形態のうちのいずれで具体化されてもよい、ということが理解されるべきである。加えて、コンピュータは、携帯情報端末(PDA)、スマートフォン、もしくは任意の他の好適な携帯または固定電子デバイスを含む、コンピュータとは通常見なされないものの好適な処理能力を有するデバイスに埋込まれてもよい。
【0064】
また、コンピュータは、1つ以上の入力および出力デバイスを有していてもよい。これらのデバイスはとりわけ、ユーザインターフェイスを提示するために使用され得る。ユーザインターフェイスを提供するために使用され得る出力デバイスの例は、出力の視覚表現のためのプリンタまたはディスプレイスクリーンと、出力の可聴表現のためのスピーカまたは他の音声生成デバイスとを含む。ユーザインターフェイスのために使用され得る入力デバイスの例は、キーボードと、マウス、タッチパッド、およびデジタル化タブレットなどのポインティングデバイスとを含む。別の例として、コンピュータは、音声認識を通して、または他の可聴フォーマットで入力情報を受信してもよい。
【0065】
そのようなコンピュータは、ローカルエリアネットワーク、またはワイドエリアネットワーク、たとえば企業ネットワーク、インテリジェントネットワーク(intelligent network:IN)、またはインターネットを含む1つ以上のネットワークによって、任意の好適な形態で相互接続されてもよい。そのようなネットワークは、任意の好適な技術に基づいていてもよく、任意の好適なプロトコルに従って動作してもよく、無線ネットワーク、有線ネットワーク、または光ファイバーネットワークを含んでいてもよい。
【0066】
ここに概説された。(たとえば上に開示された技術を設計し構築する)さまざまな方法またはプロセスは、さまざまなオペレーティングシステムまたはプラットフォームのうちのいずれか1つを採用する1つ以上のプロセッサ上で実行可能なソフトウェアとして符号化されてもよい。加えて、そのようなソフトウェアは、数々の好適なプログラミング言語および/またはプログラミングツールまたはスクリプト作成ツールのうちのいずれかを使用して書かれてもよく、フレームワークまたは仮想マシン上で実行される実行可能な機械語コードまたは中間コードとしてコンパイルされてもよい。
【0067】
この点で、さまざまな本発明の概念は、1つ以上のコンピュータまたは他のプロセッサ上で実行されると上述の本発明のさまざまな実施形態を実現する方法を行なう1つ以上のプログラムを用いて符号化されたコンピュータ読取可能記憶媒体(または複数のコンピュータ読取可能記憶媒体)(たとえば、コンピュータメモリ、1つ以上のフロッピー(登録商標)ディスク、コンパクトディスク、光ディスク、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイまたは他の半導体装置における回路構成、もしくは他の非一時的媒体または有形コンピュータ記憶媒体)として具現されてもよい。コンピュータ読取可能媒体は、そこに格納されたプログラムが、上述のような本発明のさまざまな局面を実現するために1つ以上の異なるコンピュータまたは他のプロセッサにロードされ得るように、運搬可能であってもよい。
【0068】
「プログラム」または「ソフトウェア」という用語は、上述のような実施形態のさまざまな局面を実現するようにコンピュータまたは他のプロセッサをプログラムするために採用され得る任意のタイプのコンピュータコード、またはコンピュータ実行可能命令の集合を指すよう、包括的な意味でここに使用される。加えて、一局面によれば、実行されると本発明の方法を行なう1つ以上のコンピュータプログラムは、本発明のさまざまな局面を実現するために、単一のコンピュータまたはプロセッサ上に存在する必要はなく、数々の異なるコンピュータまたはプロセッサ中にモジュール式に分散されてもよい、ということが理解されるべきである。
【0069】
コンピュータ実行可能命令は、1つ以上のコンピュータまたは他のデバイスによって実行されるプログラムモジュールといった多くの形態を取ってもよい。一般に、プログラムモジュールは、特定のタスクを行なうかまたは特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能性は、さまざまな実施形態において所望されるように組合され、または分散されてもよい。
【0070】
また、データ構造は、任意の好適な形態でコンピュータ読取可能媒体に格納されてもよい。例示を簡潔にするために、データ構造は、データ構造における場所を通して関係付けられたフィールドを有するように示されてもよい。そのような関係は、フィールド間の関係を伝えるコンピュータ読取可能媒体における場所にフィールドのためのストレージを割当てることによって、同様に達成されてもよい。しかしながら、データ要素間の関係を構築するポインタ、タグ、または他のメカニズムを使用することを含む、任意の好適なメカニズムが、データ構造のフィールドにおける情報間の関係を構築するために使用されてもよい。
【0071】
また、さまざまな本発明の概念は1つ以上の方法として具現されてもよく、それらの例が提供されてきた。方法の一部として行なわれる行為は、任意の好適なやり方で順序付けられてもよい。したがって、例示されたものとは異なる順序で行為が行なわれる実施形態が構築されてもよく、それは、例示的な実施形態ではいくつかの行為が連続する行為として示された場合であっても、いくつかの行為を同時に行なうことを含んでいてもよい。
【0072】
ここに定義され使用されるようなすべての定義は、辞書での定義、引用により援用された文書での定義、および/または定義された用語の通常の意味を統括すると理解されるべきである。
【0073】
明細書および請求項でここに使用されるような不定冠詞「a」および「an」は、明らかに逆の指示がない限り、「少なくとも1つ」を意味すると理解されるべきである。
【0074】
明細書および請求項でここに使用されるような「および/または」という句は、そのように等位結合された要素、すなわち、ある場合には接続して存在し、他の場合には分離して存在する要素の「いずれかまたは双方」を意味すると理解されるべきである。「および/または」を用いて列挙された複数の要素は、同じように、すなわち、そのように等位結合された要素のうちの「1つ以上」と解釈されるべきである。「および/または」という句によって具体的に識別された要素以外の他の要素が、具体的に識別されたそれらの要素に関係していようとなかろうと、オプションで存在していてもよい。このため、非限定的な一例として、「Aおよび/またはB」への言及は、「備える」などのオープンエンドの文言とともに使用される場合、一実施形態ではAのみ(オプションでB以外の要素を含む)を指し、別の実施形態ではBのみ(オプションでA以外の要素を含む)を指し、さらに別の実施形態ではAおよびBの双方(オプションで他の要素を含む)を指す場合がある。
【0075】
明細書および請求項でここに使用されるように、「または」は、上に定義されたような「および/または」と同じ意味を有すると理解されるべきである。たとえば、リストにおける項目を分ける場合、「または」もしくは「および/または」は包括的である、すなわち、数々の要素、または要素のリストのうちの少なくとも1つだけでなく2つ以上、およびオプションで列挙されていない追加の項目を含む、と解釈されるものとする。「のうちの1つのみ」または「のうちのまさしく1つ」、もしくは、請求項で使用される場合、「からなる」といった、明らかに逆を示す用語だけが、数々の要素、または要素のリストのうちのまさしく1つの要素を含むことを指すであろう。一般に、ここに使用されるような「または」という用語は、「のいずれか」、「のうちの1つ」、「のうちの1つのみ」、または「のうちのまさしく1つ」といった排他性の用語が後にくる場合、排他的代替物(すなわち「一方または他方であるが、双方ではない」)を示すとのみ解釈されるものとする。「主として…からなる」は、請求項で使用される場合、特許法の分野で使用されるようなその通常の意味を有するものとする。
【0076】
明細書および請求項でここに使用されるように、1つ以上の要素のリストに関する「少なくとも1つ」という句は、要素のリストにおける要素のうちのいずれか1つ以上から選択された少なくとも1つの要素を意味するものの、要素のリスト内に具体的に列挙された1つ1つの要素のうちの少なくとも1つを必ずしも含まず、要素のリストにおける要素の任意の組合せを除外しないと理解されるべきである。この定義はまた、「少なくとも1つ」という句が指す要素のリスト内で具体的に識別された要素以外の要素が、具体的に識別されたそれらの要素に関係していようとなかろうと、オプションで存在していてもよい、ということを可能にする。このため、非限定的な一例として、「AおよびBの少なくとも1つ」(もしくは同等に「AまたはBの少なくとも1つ」、もしくは同等に「Aおよび/またはBの少なくとも1つ」)は、一実施形態ではAが少なくとも1つ(オプションで2つ以上を含む)、Bは存在しない(およびオプションでB以外の要素を含む)ことを指し、別の実施形態ではBが少なくとも1つ(オプションで2つ以上を含む)、Aは存在しない(およびオプションでA以外の要素を含む)ことを指し、さらに別の実施形態ではAが少なくとも1つ(オプションで2つ以上を含む)、Bが少なくとも1つ(オプションで2つ以上を含む)(およびオプションで他の要素を含む)を指す、などとなっている。
【0077】
請求項および上述の明細書において、「…を備える」、「含む」、「担持する」、「有する」、「包含する」、「伴う」、「保持する」、「から構成される」などの移行句はすべて、オープンエンドである、すなわち、「…を含むもののそれに限定されない」ということを意味すると理解されるべきである。「からなる」および「主として…からなる」という移行句のみが、米国特許庁特許審査便覧の第2111.03節に述べられているように、それぞれクローズドまたはセミクローズドの移行句である。
図1
図2
図3
図4
図5