WO2016074148A1 - Method and system for domain name load balancing - Google Patents

Method and system for domain name load balancing Download PDF

Info

Publication number
WO2016074148A1
WO2016074148A1 PCT/CN2014/090795 CN2014090795W WO2016074148A1 WO 2016074148 A1 WO2016074148 A1 WO 2016074148A1 CN 2014090795 W CN2014090795 W CN 2014090795W WO 2016074148 A1 WO2016074148 A1 WO 2016074148A1
Authority
WO
WIPO (PCT)
Prior art keywords
dns
domain name
dns server
canonical
cdn
Prior art date
Application number
PCT/CN2014/090795
Other languages
French (fr)
Inventor
Fuhua ZENG
Guizhu WU
Original Assignee
21Vianet Group, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 21Vianet Group, Inc. filed Critical 21Vianet Group, Inc.
Priority to PCT/CN2014/090795 priority Critical patent/WO2016074148A1/en
Publication of WO2016074148A1 publication Critical patent/WO2016074148A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Definitions

  • the authoritative DNS server (114) sends a DNS response (responsive to the fourth DNS query) to the local DNS (104) .
  • the authoritative DNS server may be configured to send a DNS response to the local DNS.
  • the DNS response includes the selected canonical domain name in a resource record.
  • the resource record that includes the selected canonical domain name may be sent by the authoritative DNS server to the local DNS server as a “CNAME” resource record.
  • the authoritative DNS server may be configured to interact with other DNS counterparts in full compliance with the DNS standards, such as when communicating with other DNS servers such as the local DNS server that sent the alias domain name in DNS queries to the authoritative DNS server.
  • Some or all of the components, devices, systems, modules, etc., in the example configuration of FIG. 3A may be operatively linked through one or more computer networks such as one or more of wide area networks, local area networks, customer premises transport networks, wireless networks, wireline based networks, optical networks, carrier networks, etc.
  • the authoritative DNS server (114) may be configured to determine whether a resource record for the domain name has been defimed in a local DNS cache, a zone file, a configuration data store, etc., of the authoritative DNS server (114) .
  • the authoritative DNS server (114) determines that a “CX” resource record (e.g., 400 of FIG. 4, etc. ) for the domain name (as an alias domain name) has been defined in a local DNS cache, a zone file, a configuration data store, etc., of the authoritative DNS server (114) .
  • the resource record (400) defines a mapping from the domain name “www. sina. com.
  • the CDN client system (352) can effectively redirect content access requests subsequent to the DNS queries to the CDNs (356) represented by the canonical domain names as defined with the “CX” resource record (400) .
  • a computing device comprising one or more processors and one or more storage media storing a set of instructions which, when executed by the one or more processors, cause performance of any of the foregoing methods.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A domain name system (DNS) server is configured with a mapping from an alias domain name to a plurality of canonical domain names. A DNS query for the alias domain name is received by the DNS server. In response to receiving the DNS query, the DNS server selects a canonical domain name among the plurality of canonical domain names to which the alias domain name is mapped.

Description

[Title established by the ISA under Rule 37.2] METHOD AND SYSTEM FOR DOMAIN NAME LOAD BALANCING
TECHNOLOGY
The present invention relates generally to internet communications, and in particular to domain name load balancing.
BACKGROUND
A content provider website such as “www. sina. com. cn” may work with a content delivery network (CDN) to cache and distribute contents from the content provider website to users of the content provider website.
Because of engineering limitations and resource deployment characteristics, the CDN may or may not be able to deliver the contents of the content provider website to all individual users in a large user population with high performance and high availability. Some users may be located in places such as remote regions and foreign countries where the CDN may not have any CDN nodes proximate to the users. Some users may be located in places where the CDN does have some CDN nodes but lacks sufficient capacity to gracefully handle high user demands for popular content items of the content provider website.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section. Similarly, issues identified with respect to one or more approaches should not assume to have been recognized in any prior art on the basis of this section, unless otherwise indicated.
BRIEF DESCRIPTION OF DRAWINGS
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
FIG. 1 depicts an example domain name resolution process;
FIG. 2 illustrates an example domain name space;
FIG. 3A illustrates an example configuration that implements CDN load balancing;
FIG. 3B illustrates an example CDN client system;
FIG. 4 illustrates an example resource record;
FIG. 5 illustrates an example process flow; and
FIG. 6 illustrates an example hardware platform on which a computer or a computing device as described herein may be implemented.
DESCRIPTION OF EXAMPLE EMBODIMENTS
Example embodiments, which relate to domain name load balancing, are described herein. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are not described in exhaustive detail, in order to avoid unnecessarily occluding, obscuring, or obfuscating the present invention.
Example embodiments are described herein according to the following outline:
1. GENERAL OVERVIEW
2. DOMAIN NAME RESOLUTION PROCESS
3. MAPPING A DOMAIN NAME TO MULTIPLE DOMAIN NAMES
4. CDN LOAD BALANCING
5. EXAMPLE PROCESS FLOW
6. IMPLEMENTATION MECHANISMS-HARDWARE OVERVIEW
7. EQUIVALENTS, EXTENSIONS, ALTERNATIVES AND MISCELLANEOUS
1. GENERAL OVERVIEW
This overview presents a basic description of some aspects of an example embodiment of the present invention. It should be noted that this overview is not an extensive or exhaustive summary of aspects of the example embodiment. Moreover, it should be noted that this overview is not intended to be understood as identifying any particularly significant aspects or elements of the example embodiment, nor as delineating any scope of the example embodiment in particular, nor the invention in general. This overview merely presents some concepts that relate to the example embodiment in a condensed and simplified format, and should be understood as merely a conceptual prelude to a more detailed description of example embodiments that follows below.
Resource record types as defined in domain name system (DNS) standards may not support mapping of an alias domain name to multiple canonical domain domains. For example, a standard-based DNS resource record type denoted as “CNAME” maps an alias domain name to a canonical domain name in a single resource record, or to map multiple alias domain names to the same canonical domain name in multiple resource records. Under the DNS standards, for the purpose of avoiding protocol errors and malicious loops, no alias domain name may be mapped to multiple canonical domain names in a zone of a name space.
Techniques as described herein can be used to enhance the DNS standards. These techniques make use of a new type of resource record (for the purpose of illustration only, denoted as “CX” ) to map a single alias domain name to multiple canonical domain names.
In some embodiments, “CX” resource records can be internally maintained by a DNS server such as an authoritative DNS server (or an authoritative name server) for a set of domain names or for a particular zone of a DNS name space, etc. In response to receiving a DNS query for a domain name that is an alias domain name defined in a “CX” resource record, the authoritative  DNS server can be configured to select a specific canonical domain name among multiple canonical domain names to which the alias domain is mapped by the “CX” resource record.
As the “CX” resource record is not of a resource record type defined in the DNS standards, to fully comply with protocol operations between network elements as defined in the DNS standards, instead of returning the “CX” resource record as a response to the DNS query, the authoritative DNS server returns a standard-based “CNAME” resource record that includes the specific canonical domain name as a response to the DNS query. Thus, under techniques as described herein, the standard-based protocol operations are performed in full compliance between the authoritative DNS server that internally maintains “CX” resource records and other DNS counterparts such as local DNS servers, etc., that issue DNS queries to the authoritative DNS server.
“CX” resource records can be used as a part of a load balancing mechanism to optimally distribute workloads across websites, portals, database systems, computer servers, etc. Examples of workloads may include, but are not limited to only, network traffic, computations, content access requests, database transactions, webpage downloading, multimedia content downloading, etc., generated by users, applications such as web browsers, media players, etc., computing devices such as tablet computers, mobile computing devices, laptops, etc. A wide variety of resources such as CDNs, computing systems, computing servers, database servers, computing resources, bandwidth resources, etc., can be efficiently deployed to handle relatively heavy workloads with high performance and fast response under the techniques as described herein.
For the purpose of illustration only, a load balancing mechanism is implemented for a content provider website jointly by an authoritative DNS server for a domain name representing the content provider website and multiple CDNs that are to cache and distribute content of the content provider websites to user devices.
The domain name representing the content provider website can be specified as an alias domain name in a “CX” resource record. The “CX” resource record maps the alias domain name to multiple canonical domain names representing multiple CDNs. Each of the CDNs may comprise CDN nodes to provide CDN-related services. Any of the multiple CDNs, or CDN nodes therein, can be used to cache and accelerate distribution of content (e.g., all content, specific content, video content, special event content, etc. ) of the content provider website represented by the alias domain name to users of the content provider website. The multiple CDNs can be operated by different CDN service providers.
A “CX” resource record as described herein can be manually, programmatically, dynamically, etc., maintained by a DNS server such as an authoritative DNS server, etc. A selection of a specific CDN from the multiple CDNs by the authoritative DNS server can be based on load balancing criteria and/or load balancing algorithms configured and/or implemented by the authoritative DNS server for the alias domain name representing the content provider website. When responding to incoming DNS queries for the alias domain name, the authoritative DNS  server can apply the load balancing criteria (e.g., priority levels, weights, etc. ) and/or run the load balancing algorithms to cause each of the multiple CDNs to receive a respective portion of DNS queries and hence a respective portion of subsequent content access requests for the content of the content provider website.
An example implementation of the load balancing mechanism for the content provider website may comprise the following steps.
First, user devices send to their local DNS servers recursive DNS queries for the domain name that represents the content provider website. These recursive DNS queries may cause the local DNS servers to successively walk through one or more DNS servers until reaching the authoritative DNS server for the domain name, for example, by DNS referrals.
Second, the local DNS servers send DNS queries (generated based on the recursive DNS queries from the user devices) for the domain name to the authoritative DNS server. In response to the DNS queries from the local DNS servers, the authoritative DNS server returns DNS responses comprising “CNAME” resource records to the local DNS servers. The “CNAME” resource records identify selected domain names of the multiple CDNs based at least in part on the “CX” resource record. Specific selections of the canonical domain names representing the multiple CDNs in response to specific DNS queries from specific local DNS servers can be made based on DNS-related load balancing criteria maintained by the authoritative DNS server in order to redirect subsequent DNS queries from the local DNS servers and distribute subsequent content access requests from the user devices, across the multiple CDNs.
Third, when the local DNS servers receive the DNS responses with the “CNAME” resource records that identify the selected canonical domain names representing the multiple CDNs, the local DNS servers further query CDN DNS servers of the multiple CDNs. In response to receiving DNS queries for the canonical domain names respectively representing the multiple CDNs, the CDN DNS servers of the multiple CDNs can further identify and/or select optimal CDN nodes in the multiple CDNs for the user devices, based on global server load balancing (GSLB) operations performed within each of the multiple CDNs. For example, an optimal CDN node as described herein-which may be returned in a DNS response from a CDN DNS server in response to a DNS query from a local DNS server can be selected based at least in part on a host address (e.g., as indicated in the DNS query, etc. ) of the local DNS server or on a host address (e.g., as indicated in the DNS query, etc. ) of a user device that causes the DNS response to be sent to the local DNS server. In some embodiments, the optimal CDN node may be located the closest in geographic location, network topology, etc., to the user device.
As a result of redirecting and load balancing DNS queries received by the authoritative DNS server from the local DNS servers, content access requests to the content provider website that are subsequent to the DNS queries can be effectively redirected to optimal CDN nodes of, and can be load balanced across, the (e.g., multiple, etc. ) CDNs represented by the canonical domain names in the “CX” resource record.
A system that implements load balancing techniques as described herein can perform  (e.g., manual, dynamic, etc. ) adjustment, configuration, adaptation, etc., based on current and/or forecast CDN service loads. For example, when the system determines (e.g., with user input, programmatically, dynamically, etc. ) that there is or there will be a change in CDN service loads of the content provider website, additional canonical names can be added in a “CX” resource record and/or related configuration data to point to additional CDNs provided by additional CDN service providers. The system can also perform (e.g., manual, programmatic, dynamic, etc. ) adjustment, configuration, adaptation, etc., on priority levels, weights, etc., of individual CDNs as represented by canonical domain names based on current and/or forecast CDN service loads.
In some example embodiments, mechanisms as described herein form a part of an information processing system, including but not limited to any of: a computer server, a network switch, a network element, a router, a gateway, a computer cluster, an application server system, a database system, a handheld device, game machine, television, laptop computer, netbook computer, tablet computer, cellular radiotelephone, electronic book reader, point of sale terminal, desktop computer, computer workstation, computer kiosk, plug-in devices, media accessing devices, or various other kinds of terminals and media processing units.
Various modifications to the preferred embodiments and the generic principles and features described herein will be readily apparent to those skilled in the art. Thus, the disclosure is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features described herein.
2. DOMAIN NAME RESOLUTION PROCESS
FIG. 1 depicts an example domain name resolution process for a domain name in a domain name space 200 as illustrated in FIG. 2. For the purpose of illustration only, a web browser such as a Microsoft Intemet Browser (IE) , a Fire Fox browser, etc., is running on a user device 102. A user of the user device (102) may direct the web browser to access content of a number of websites. A resource locator used by the web browser such as a Universal Resource Locator (URL) , etc., may comprise domain names that need to be resolved to IP addresses through a domain name resolution process such as illustrated in FIG. 1. An example domain name may be “www. sina. com. cn” , which is a specific website that provides a wide variety of intemet-based rich contents to user devices, one of which may be the user device (102) of FIG. 1.
As the user’s internet accessing activities generate domain name resolution requests, a DNS client (e.g., a DNS resolver process, etc. ) on the user device (102) may be configured to first determine whether a domain name encountered by the DNS client (not shown in FIG. 1) can be mapped to an IP address, another domain name, etc., based on a local cache, a hosts file, etc., on the user device (102) . As used herein, a DNS client refers to any client that generates DNS queries from a user device to a local DNS server. Example DNS clients may include, but are not limited to only, any of: HTTP, “nslookup” , “dig” , etc.
If a domain name encountered by the DNS client cannot be resolved to an IP address based on the local cache, the hosts file, etc., on the user device (102) , the DNS client sends a DNS query (e.g., a recursive DNS query, etc. ) to a local DNS server such as 104 of FIG. 1 for resolving  the domain name to an IP address. The DNS query sent by the DNS client may request the local DNS server (104) to return a host address of the domain name or an error indicating a failure of finding a relevant host address.
For the purpose of illustration only, the user device (102) may be making an access to the website represented by the domain name “www. sina. com. cn” the first time; the domain name “www. sina. com. cn” may not exist in the local cache, the hosts file, etc., on the user device (102) .
In block 152, in response to determining that the domain name “www. sina. com. cn” is not in the local cache, the hosts file, etc., on the user device (102) , the DNS client on the user device (102) sends a DNS query (e.g., a recursive DNS query, etc. ) for the domain name “www. sina. com. cn” to the local DNS server (104) .
In some embodiments, the local DNS server (104) may be implemented as a recursive name server configured to query other name servers (e.g., DNS servers, root name server 108, zone name servers, etc. ) hierarchically to obtain a host address (e.g., an IP address, a non-domain-name network address, etc. ) for a queried domain name such as the domain name “www. sina. com. cn” .
For the purpose of illustration only, the local DNS server (104) also cannot determine a host address for the domain name “www. sina. com. cn” based on cached DNS data in a DNS cache 106. This may occur for a variety of reasons. For example, the DNS cache (106) accessible by the local DNS server (104) may not contain a valid (e.g., current, unexpired, etc. ) name space resource record or other similar information for resolving the domain name “www. sina. com. cn” to a host address.
In block 154, in response to determining that the DNS data for the domain name “www. sina. com. cn” accessible by the local DNS server (104) does not contain sufficient information for resolving the domain name “www. sina. com. cn” to a host address, the local DNS server (104) sends a first DNS query (e.g., a first local DNS server-originated DNS query, a fin st instance of an iterative DNS query, etc. ) for the domain name “www. sina. com. cn” to a first DNS server 108 (e.g., a root name server, etc. ) for a first zone 202 (e.g., a root zone, a “. ” zone, etc. ) of the domain name space (200) of FIG. 2.
In block 156, in response to the first DNS server (108) (or the root name server) determining that the domain name “www. sina. com. cn” is in a second zone 204 (e.g., the “. cn” zone, etc. ) of the domain name space (200) of FIG. 2, the first DNS server (108) sends back a first DNS referral (responsive to the first DNS query) to the local DNS server (104) . The first DNS referral identifies a second DNS server 110 (e.g., a “. cn” DNS server, etc. ) for the second zone (204) (the “. cn” zone) of the domain name space (200) of FIG. 2, and redirects the local DNS (104) to query the second DNS server (110) .
In block 158, in response to the local DNS server (104) receiving the first DNS referral from the first DNS server (108) , the local DNS server (104) sends a second DNS query (e.g., a second local DNS server-originated DNS query, a second instance of the iterative DNS query, etc. ) for the domain name “www. sina. com. cn” to the second DNS server (110) for the second zone  (204) of the domain name space (200) of FIG. 2.
In block 160, in response to the second DNS server (110) (or the “. cn” DNS server) determining that the domain name “www. sina. com. cn” is in a third zone 206 (e.g., the “com. cn” zone, etc. ) of the domain name space (200) of FIG. 2, the second DNS server (110) sends back a second DNS referral (responsive to the second DNS query) to the local DNS server (104) . The second DNS referral identifies a third DNS server 112 (e.g., a “com. cn” DNS server, etc. ) for the third zone (206) (the “com. cn” zone) of the domain name space (200) of FIG. 2, and redirects the local DNS (104) to query the third DNS server (112) .
In block 162, in response to the local DNS server (104) receiving the second DNS referral from the second DNS server (110) , the local DNS server (104) sends a third DNS query (e.g., a third local DNS server-originated DNS query, a third instance of the iterative DNS query, etc. ) for the domain name “www. sina. com. cn” to the third DNS server (112) for the third zone (206) of the domain name space (200) of FIG. 2.
In block 164, in response to the third DNS server (112) (or the “com. cn” DNS server) determining that the domain name “www. sina. com. cn” is in a fourth zone 208 (e.g., the “sina. com. cn” zone, etc. ) of the domain name space (200) of FIG. 2, the third DNS server (112) sends a third DNS referral (responsive to the third DNS query) to the local DNS server (104) . The third DNS referral identifies a fourth DNS server-which may be an authoritative DNS server 114 (e.g., a “sina. com . cn” DNS server, etc. ) for the fourth zone (208) that contains the domain name “www. sina. com. cn” -and redirects the local DNS (104) to query the authoritative DNS server (114) .
An authoritative DNS server is a DNS server assigned with authority for providing authoritative DNS information (e.g., network administrator configured DNS information, etc. ) on domain names located in a portion (e.g., a zone in a name space, the fourth zone 208 of FIG. 2, etc. ) of the DNS name space (200) .
In block 166, in response to the local DNS server (104) receiving the third DNS referral from the third DNS server (112) , the local DNS server (104) sends a fourth DNS query (e.g., a fourth local DNS server-originated DNS query, a fourth instance of the iterative DNS query, etc. ) for the domain name “www. sina. com. cn” to the authoritative DNS server (114) for the fourth zone (208) of the domain name space (200) of FIG. 2.
In block 168, the authoritative DNS server (114) sends a DNS response (responsive to the fourth DNS query) to the local DNS (104) .
In some embodiments, the DNS response from the authoritative DNS server (114) comprises a “CNAME” resource record identifying a canonical domain name for the domain name “www. sina. com. cn” (which is represented as an alias domain name mapped to the canonical domain name) with a DNS referral to a CDN domain name server of a CDN (selected by the authoritative DNS server 114 among multiple CDNs) for resolving the canonical domain name to a host address. In some other embodhnents, the DNS response from the authoritative DNS server (114) comprises a host address for the domain name “www. sina. com. cn” .
In the embodiments in which a DNS referral is received by the local DNS server (104) to refer to a CDN domain server, the local DNS server (104) sends a fifth DNS query (not shown) to the CDN domain server of the CDN and receives a host address for the canonical domain name as a response to the fifth DNS query.
Generally speaking, a domain name resolution process similar to one illustrated in FIG. 1 may include performing one or more operations to provide specific resource records from an authoritative DNS server such as 114 of FIG. 1, etc. These resource records may include, but are not limited to only, one or more of “A” resource records for host addresses, “AAAA” resource records for host addresses, “CNAME” resource records for canonical domain names to which an alias domain name is mapped, “MX” resource records for mail exchanges, etc.
3. MAPPING A DOMAIN NAME TO MULTIPLE DOMAIN NAMES
In some embodiments, an authoritative DNS server as described herein can be configured to designate a specific domain name (e.g., “www. sina. com. cn” , etc. ) as an alias domain name in a “CX” resource record. In sharp contrast to a “CNAME” resource record, which maps a single alias domain name to a single canonical domain name, the “CX” resource record may, but is not limited to only, map the alias domain name to a plurality of canonical domain names. When a local DNS server as described herein sends a DNS query for the alias domain name, due to the existence of the “CX” resource record, the authoritative DNS server can select a particular canonical domain name among the plurality of canonical domain name, for example, based on one or more load balancing criteria such as respective priority levels of the canonical domain names, respective weights of the canonical domain names, respective most recent uses of the canonical domain names, etc. In various embodiments, other ways of selecting a specific canonical domain name among a plmality of canonical domain names, such as those based on one or more of a sequential order, a round-robin scheme, a hash function based scheme, a scheme based on a random or pseudo-random number, etc., can also be used.
The authoritative DNS server may be configured to send a DNS response to the local DNS. The DNS response includes the selected canonical domain name in a resource record. The resource record that includes the selected canonical domain name may be sent by the authoritative DNS server to the local DNS server as a “CNAME” resource record. The authoritative DNS server may be configured to interact with other DNS counterparts in full compliance with the DNS standards, such as when communicating with other DNS servers such as the local DNS server that sent the alias domain name in DNS queries to the authoritative DNS server.
Techniques as described herein can be used in a wide variety of operational scenarios in which mapping a domain name (e.g., an alias domain name, etc. ) to multiple domain names (e.g., canonical domain names, etc. ) is desirable to do. A load balancing mechanism may be implemented based at least in part on these techniques to distribute possibly numerous workload requests as generated from a large number of users, applications, user devices, etc., to wvhere there are both right types of resources and sufficient amounts of resources to meet these requests with high performance and fast responses (low latencies) , thereby creating satisfying user experiences  as well as making efficient uses of a wide variety of resources such as service providers, domains, networks, computing systems, computing servers, database servers, processing powers, memory spaces, bandwidths, etc.
4. CDN LOAD BALANCING
FIG. 3A illustrates an example configuration that implements CDN load balancing based at least in part on a “CX” resource record that maps an alias domain name to a plurality of canonical domain names. A number of DNS-related operations may be performed by DNS clients (e.g., 302, etc. ) of user devices (e.g., 102, etc. ) , a local DNS server (e.g., 104, etc. ) an authoritative DNS server (e.g., 114, etc. ) , a plurality ofCDN DNS servers (e.g., 304-1 through 304-3, etc. ) for a plurality of CDNs, CDN nodes (e.g., 306, etc. ) in the plurality of CDNs, etc., in the CDN load balancing as illustrated in FIG. 3A. Some or all of the components, devices, systems, modules, etc., in the example configuration of FIG. 3A may be operatively linked through one or more computer networks such as one or more of wide area networks, local area networks, customer premises transport networks, wireless networks, wireline based networks, optical networks, carrier networks, etc.
Initially, the DNS client (302) on the user device (102) sends a (e.g., recursive, etc. ) DNS query for the domain name “www. sina. com. cn” to the local DNS server (104) , as previously discussed with block 152 of FIG. 1. Subsequently in response to receiving the DNS query for the domain name from the DNS client (302) , as previously discussed with blocks 154 through 168 of FIG. 1, the local DNS server (104) first looks for relevant (e.g., current, unexpired, valid, etc. ) DNS-related information such as resource records, etc., for the domain name in a local DNS cache (e.g., 106 of FIG. 1, etc. ) accessible by the local DNS server (104) . If the local DNS server (104) cannot find relevant DNS-related information for the domain name, the local DNS server (104) sends a sequence of one or more (e.g., local DNS server-originated, iterative, etc. ) DNS queries to one or more DNS servers such as non-local DNS servers, a root name server, zone name server, etc. The local DNS server (104) may query about the domain name successively (e.g., recursively, iteratively, etc. ) through these DNS servers, for example starting from a root name server (e.g., 108 of FIG. 1, etc. ) , until reaching an authoritative DNS server such as 114 of FIG. 1 and FIG. 3A.
In response to receiving a DNS query for the domain name, the authoritative DNS server (114) may be configured to determine whether a resource record for the domain name has been defimed in a local DNS cache, a zone file, a configuration data store, etc., of the authoritative DNS server (114) . In the present example, the authoritative DNS server (114) determines that a “CX” resource record (e.g., 400 of FIG. 4, etc. ) for the domain name (as an alias domain name) has been defined in a local DNS cache, a zone file, a configuration data store, etc., of the authoritative DNS server (114) . As illustrated in FIG. 4, the resource record (400) defines a mapping from the domain name “www. sina. com. cn” as an alias domain name to three CDN domain names as canonical domain names. In some embodiments, these three CDN domain names point to DNS domains of a single overall CDN operated by a single CDN service provider. In some embodiments, these three domain names point to DNS domains of two or more CDNs  operated by two or more (e.g., separate, independent, etc. ) CDN service providers.
In some embodiments, the canonical domain names may be identified within one or more data fields of the resource record (400) . In some embodiments, the authoritative DNS server (114) may use the alias domain name as a key to search or look up the canonical domain names in a data repository, a lookup table, a list, etc., accessible by the authoritative DNS server (114) . As illustrated in FIG. 4, the domain name “www. sina. com. cn” for a website may correspond to an alias domain name that is mapped in the resource record (400) to three CDN domain names “www. sina. com. cn. aa” , “www. sina. com. cn. bb” , and “www. sina. com. cn. cc” as canonical domain names.
A canonical domain name in a “CX” resource record as described herein can be assigned or associated with one or more of priority levels, weights, most recent uses, etc. The authoritative DNS server (114) can be configured to select and return a specific canonical domain name among a plurality of canonical domain names based on (e.g., comparing, ranking, ordering, etc. ) one or more of priority levels, weights, most recent uses, a sequential order, a round-robin scheme, a random or pseudo-random number, etc., respectively assigned or associated with the canonical domain names.
In an example, canonical domain names in the “CX” resource record may be assigned with different weights (e.g., relative weights, absolute weights, normalized weights, non-normalized weights, etc. ) . For example, a normalized weight of 30%may be assigned to the canonical domain name “www. sina. com. cn. aa” ; a normalized weight of 20%may be assigned to the canonical domain name “www. sina. com. cn. bb” ; and a normalized weight of 50%may be assigned to the canonical domain name “www. sina. com. cn. cc” .
In some embodiments, the authoritative DNS server (114) may be configured to select these canonical domain names with respective statistical probabilities that are proportional to the respective normatized weights assigned to the canonical domain names, when responding to DNS queries for the domain name “www. sina. com. cn” from local DNS servers.
In another example, a (e.g., CDN-related, etc. ) load balancing algorithm that is based on one, two or more load balancing factors (e.g., one, two or more of priority levels, weights, most recent uses, etc. ) may be used as input to help select a specific canonical domain name from multiple canonical domain names such as those in FIG. 4, in response to a DNS query for an alias domain name that is mapped to the multiple canonical domain names. For example, when two canonical domain names have been assigned with the same probability for selection by the authoritative DNS server (114) , one or more of other attributes for canonical domain names such as respective priority levels, most recent uses, etc., may be used to select a specific one of (or perfonn a tie-break of) the two canonical domain names.
Thus, based on one or more (e.g., CDN-related, etc. ) load balancing criteria and/or one or more (e.g., CDN-related, etc. ) load balancing algorithms, the authoritative DNS server (114) can select a first CDN (e.g., corresponding to DNS server 304-1, etc. ) in response to receiving one or more first DNS queries caused by one or more first DNS clients; select a second CDN (e.g.,  corresponding to DNS server 304-2) in response to receiving one or more second different DNS queries caused by one or more second DNS clients; and select a third CDN (e.g., corresponding to DNS server 304-3) in response to receiving one or more third different DNS queries caused by one or more third DNS clients; and so on.
For the purpose of illustration only, in the present example, the authoritative DNS serwer (114) selects a canonical domain name “www. sina. com. cn. bb” for a specific CDN that corresponds to the DNS server (304-2) based on the load balancing criteria, in response to receiving the DNS query from the local DNS server (104) caused by the DNS client (102) . The authoritative DNS server (114) proceeds to identify that the canonical domain name “www. sina. com. cn. bb” for the specific CDN is to be resolved by the CDN DNS server (304-2) for a specific CDN in the plurality of CDNs.
In some embodiments, the authoritative DNS server (114) sends a (e.g., recursive, etc. ) DNS query to the CDN DNS server (304-2) for the domain name “www. sina. com. cn. bb” .
In some embodiments, the CDN DNS server (304-2) is implemented as a recursive name server for the domain name “www. sina. com. cn. bb” . The CDN DNS server (304) , or a system within the specific CDN that operates in conjunction with the CDN DNS server (104-3) , may be configured to perform GSLB operations, for example dynamically, automatically, etc., among a plurality of CDN nodes within the specific CDN.
The GSLB operations within the specific CDN may be based on one or more CDN-specific load balancing criteria, algorithms, etc., that are different from, or in addition to, the CDN-related load balancing criteria for selecting a CDN network among the plurality of CDNs. Whereas the CDN-related load balancing criteria are used by the authoritative DNS server (114) to perform load balancing among multiple CDNs that can be used to serve content of the website as represented by the domain name “www. sina. com. cn” , the CDN-specific load balancing criteria, algorithms, etc., can be used within the specific CDN to perform load balancing among multiple portions, nodes, etc., within the specific CDN that can be used to serve content of the website as represented by the domain name “www. sina. com. cn” .
CDN service providers refers to service providers that provide CDN services to clients such as websites, portals, database systems, computer servers, etc. Using the CDN services, contents of the websites, portals, database systems, computer servers, etc., can be served out to user devices from CDN nodes in CDNs, which may be built and operated by the CDN service providers. CDN nodes may accelerate caching and distribution of the contents of the websites. Through a relatively wide distribution of cache nodes, a CDN can provide content of a website from specific cache nodes relatively nearby or relatively responsive to a specific user device. To process a relatively large number of content access requests from users and their user devices with high performance and fast response times, the CDN may perform GSLB operations to optimize resource usages related to computing resources, network resources, bandwidth resources, memory resources, processing ratings of computing devices, latencies, device locations, etc.
For the purpose of illustration, the CDN DNS server (304-2) selects, among multiple  portions, nodes, etc., within the specific CDN, an optimal CDN node 306 to serve (e.g., cached, un-cached, dynamic, etc. ) contents of the website represented by the domain name “www. sina. com. cn” , based on the CDN-specific load balancing criteria, algoritlhns, etc., and/or based at least in part on a host address (e.g., as indicated in a DNS query as described herein, etc. ) of the local DNS server (104) or a host address (e.g., as indicated in a DNS query as described herein, etc. ) of the user device (102) . Examples of optimal CDN nodes may be, but are not limited to only, any of: one or more of CDN nodes relatively close to (e.g., closest in the specific CDN, etc. ) the DNS client; CDN nodes located proximate to the DNS client in terms of geographical locations, network topologies, etc. ; CDN nodes in the same country, region, city, etc., as the DNS client; CDN nodes that have relatively large capacities, relatively low resource occupancies, etc. ; etc.
In some embodiments, the CDN DNS server (304-2) may be one of one or more systems, DNS servers, etc., within the specific CDN to perform the GSLB operations and to identify optimal CDN nodes for various websites whose contents are to be served by the specific CDN. For example, the CDN DNS server (304-2) may communicate (e.g., send and/or receive DNS queries, send and/or receive DNS referrals, DNS responses, etc. ) with other DNS servers within the specific CDN as a part of identifying the optimal CDN node (306) .
In some embodiments, the CDN DNS server (304-2) proceeds to identify a host address (e.g., IP address, etc. ) for the CDN node (306) and return the host address in a DNS response to the authoritative DNS server (114) as a response to the DNS query received by the CDN DNS server (304-2) fiom the authoritative DNS server (114) .
In response to receiving the DNS response from the CDN, the authoritative DNS server (114) returns the host address of the CDN node (306) in a DNS response to the local DNS server (104) as a response to the DN S query received by the authoritative DNS server (114) from the local DNS server (104) . After receiving the DNS response from the authoritative DNS server (114) , the local DNS server (104) returns the host address of the CDN node (306) in a DNS response to the DNS client (302) as a response to the DNS query received by the local DNS server (104) from the DNS client (302) .
After the DNS client (302) obtains the host address of the CDN node (306) , the user device (102) can communicate with the CDN node (306) ; send content access requests such as HTTP requests, etc. ; receive content access responses (e.g., 308, etc. ) ; open web pages (e.g., home pages, landing pages, etc. ) of the website as represented by the domain name “www. sina. com. cn” ; etc.
In some embodiments, instead of the authoritative DNS server (114) returns the host address of the CDN node (306) to the local DNS server (104) , the local DNS server (104) may receive the canonical domain name “www. sina. com. cn. bb” for the domain name “www. sina. com. cn” in a DNS referral from the authoritative DNS server (114) . The DNS referral from the authoritative DNS server (114) may further identifies a DNS server such as the CDN DNS server (304-2) in the specific CDN that corresponds to the canonical domain name  “www. sina. com. cn. bb” . The local DNS server (104) may directly query the CDN DNS server (304-2) , and possibly zero, one or more other CDN DNS servers in the specific CDN, for a host address of an optimal CDN node to access content of the website represented by the domain name “www. sina. com. cn” .
Techniques as described herein can be used in conjunction with CDNs to produce better load balancing and higher performance in distributing content of a content provider website than other approaches that do not use these techniques. A domain name representing the content provider website can be mapped to multiple CDNs (or CDN nodes therein) provided by multiple CDN service providers for accelerating delivering and distributing the content of the content provider website to a user population of the content provider website.
In some embodiments, the mapping of the domain name to multiple CDNs can be managed, adjusted or changed manually, programmatically, dynamically, from time to time, in response to events and/or alarms, etc. In some embodiments, at a first time, the domain name may be mapped to a first set of CDN nodes in first CDNs, whereas at a second different time, the domain name may be mapped to a second different set of CDN nodes in second CDNs. Similarly, respective priority levels, respective weights, etc., of the CDNs to which the domain name of the content provider website can be managed, adjusted or changed manually, programmatically, dynamically, from time to time, in response to events and/or alarms, etc.
Under techniques as described herein, ifthe optimal CDN node (e.g., 306 of FIG. 3A, etc. ) of the specific CDN in the previous example deteriorates, fails, or is in a planned shutdown, or is out-of-service for other reasons, etc., a different CDN node of the same CDN or a node of a different CDN can be selected as a new optimal CDN node based on load balancing criteria/algorithms and/or based at least in part on a host address (e.g., as indicated in a DNS query as described herein, etc. ) of the local DNS server (104) or a host address (e.g., as indicated in a DNS query as described herein, etc. ) of the user device (102) . The new optimal CDN node can be used to serve a portion of a user population of the content provider website that was served by the former CDN node.
In an example, when the optimal node is out-of-service, a user device (e.g., 102, etc. ) may receive an error indicating that the optimal node is not reachable and proceed to issue a new DNS query. In another example, a new DNS query may be issued by a user device (e.g., 102, etc. ) after an “A” or “AAAA” resource record for the optimal CDN node (306) expired. In response to receiving a new DNS query for the domain name “www. sina. com. cn” from a DNS client (e.g., 302, etc. ) , an authoritative DNS server (e.g., 114, etc. ) may select a different CDN (e.g., corresponding to the CDN DNS server 304-1 or 304-3, etc. ) other than the specific CDN selected in response to receiving the earlier DNS query. Even if the same CDN is selected, a CDN DNS server (e.g., 304-2) in the specific CDN may return a different optimal CDN node other than the optimal CDN node (306) for the earlier DNS query.
A “CX” resource record that maps a domain name to multiple domain names can be changed manually, programmatically, dynamically, from time to time, in response to events  and/or alarms, etc., to include additional CDNs provided by additional CDN service providers; to exclude some existing CDNs (e.g., for poor performance, for high costs, for eliminating overprovisioning of resources, etc. ) ; to expand or adjust services in certain geographic locations; etc. Thus, under techniques as described herein, the content of a website can be served to users and theh computing devices with high resilience (e.g., high availability, fault tolerance, etc. ) and high adjustability from a diverse group of CDNs with diverse network designs and capabilities.
FIG. 3B illustrates an example CDN client system 352 comprising a content provider website 354 and an authoritative DNS server (e.g., 114 of FIG. 1 and FIG. 3A, etc. ) . The content provider website (354) may be represented by a domain name “www. sina. com. cn” . The CDN client system (352) may be implemented with one or more computing devices and operatively linked with multiple CDNs (e.g., 356, etc. ) from CDN service providers for providing CDN-related services such as caching and distributing content of the content provider website (354) . The CDN client system (352) may configure the authoritative DNS server (114) with a “CX” resource record (e.g., 400 of FIG. 4, etc. ) and associated information (e.g., load balancing criteria, load balancing algorithms, priority levels, weights, etc. ) in a data repository 366 that maps the domain name representing the content provider website (354) to canonical domain names representing the CDNs (356) . The CDN client system (352) may assign weights to the canonical domain names representing the CDNs (356) . Based on the respective weights assigned to the canonical domain names, the authoritative DNS server (114) , which may be a name server of the CDN client system (352) implementing a load balancing module 360 (configured to select canonical names using load balancing criteria and/or load balancing algorithms) and a domain name resolving module 362 (configured to perform DNS protocol operations) , can distribute DNS queries received by the authoritative DNS server (114) from local DNS servers 358 (e.g., one of which may be 104, etc. ) to the CDNs (356) . As a result of load balancing the DNS queries received by the authoritative DNS server (114) from the local DNS servers (358) , the CDN client system (352) can effectively redirect content access requests subsequent to the DNS queries to the CDNs (356) represented by the canonical domain names as defined with the “CX” resource record (400) .
For example, the authoritative DNS server (114) may select a canonical domain name among the canonical domain names in the “CX” resource record (400) in response to receiving a DNS query for the alias domain name representing the content provider website (354) . The authoritative DNS server (114) can send a DNS query for the selected canonical domain name to a corresponding CDN DNS server 304 (e.g., 304-1, 304-2, 304-3, etc. ) of a specific CDN, among the CDNs (356) , that is represented by the selected canonical domain name.
The CDN DNS server (304) of the specific CDN may be responsible for resolving the selected canonical domain name to a host address in response to receiving the DNS query for the selected canonical domain name from the authoritative DNS server (114) . The host address returned by the CDN DNS server (304) may be that of an optimal CDN node (e.g., 306, etc. ) in a plurality of CDN nodes in the specific CDN in terms of proximity, network topology, capacity,  performance metrics, etc., for caching and delivering the content of the content provider website (354) to a user device (e.g., 102, etc. ) that cause a local DNS server among the local DNS servers (358) to send the original DNS query for the alias domain name representing the content provider website (354) .
5. EXAMPLE PROCESS FLOWS
FIG. 5 illustrates an example process flow according to an example embodiment of the present invention. In some example embodiments, one or more computing devices or components may perform this process flow. In block 502, a DNS server (e.g., 114 of FIG. 1, FIG. 3A or FIG. 3B,etc. ) is configured with a mapping from an alias domain name to a plurality of canonical domain names.
In block 504, the DNS server receives a DNS query for the alias domain name.
In block 506, in response to the DNS server receiving the DNS query, the DNS server selects a canonical domain name among the plurality of canonical domain names to which the alias domain name is mapped.
In an embodiment, the DNS server is further configured to send, to a sender of the DNS query for the alias domain name, a DNS response that identifies the canonical domain name to cause the sender of the DNS query to query a different DNS server for resolving the canonical domain name to a host address. In an embodiment, the DNS response represents a DNS referral comprising a “CNAME” resource record that maps the alias domain name to the canonical domain name.
In an embodiment, the DNS server is further configured to perform: querying, by the DNS server, one or more different DNS servers for a host address of the canonical domain name; receiving the host address of the canonical domain name from one of the one or more different DNS servers; sending, to a sender of the DNS query for the alias domain name, a DNS response that identifies the host address; etc.
In an embodiment, the DNS server is an authoritative DNS server for the alias domain name.
In an embodiment, the DNS query for the alias domain name is sent by a local DNS server to a user device that causes the DNS query to be sent to the DNS server.
In an embodiment, the alias domain name is a domain name representing a content provider website.
In an embodiment, the content provider website is a part of a content delivery network (CDN) client system; the plurality of canonical domain names represents a plurality of CDNs; and the canonical domain name represents a selected CDN in the plurality of CDNs.
In an embodiment, at least one canonical domain name in the plurality of canonical domain names is assigned with one or more of a priority level, or a weight.
In an embodiment, the canonical domain name is selected from the plurality of canonical domain names based on one or more of load balancing criteria, or load balancing algorithms.
In an embodiment, the mapping from the alias domain name to the plurality of canonical domain names is defined as a resource record in DNS data maintained by the DNS server; and the resource record in the DNS data is of a non-DNS standard type.
In an embodiment, the DNS query is caused by a previous DNS query for the alias domain name issued by a DNS client to a local DNS server.
In an embodiment, the plurality of canonical domain names represents a plurality of computer networks; the canonical domain name represents a specific computer network in the plurality of computer networks; the specific computer network comprises a plurality of computer nodes; and the canonical domain name is to be resolved to a host address of a specific computer node in the plmrality of computer nodes. In an embodiment, the specific computer node is selected from the plurality of computer nodes in the specific computer network based on one or more of load balancing criteria or load balancing algorithms; and the one or more of load balancing criteria or load balancing algorithms are implemented within the specific computer network.
In an embodiment, the host address is a non-domain name address. In an embodiment, the host address is an intemet protocol (IP) address of the specific computer node.
In various example embodiments, a system, an apparatus, or one or more other computing devices performs any or a part of the foregoing methods as described.
In an embodiment, a non-transitory computer readable storage medium, storing software instructions, which when executed by one or more processors cause performance of any of the foregoing methods.
In an embodiment, a computing device comprising one or more processors and one or more storage media storing a set of instructions which, when executed by the one or more processors, cause performance of any of the foregoing methods. Note that, although separate embodiments are discussed herein, any combination of embodiments and/or partial embodiments discussed herein may be combined to form further embodiments.
6. IMPLEMENTATION MECHANISMS -HARDWARE OVERVIEW
According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.
For example, FIG. 6 is a block diagram that illustrates a computer system 600 upon which an example embodiment of the invention may be implemented. Computer system 600  includes a bus 602 or other communication mechanism for communicating information, and a hardware processor 604 coupled with bus 602 for processing information. Hardware processor 604 may be, for example, a general purpose microprocessor.
Computer system 600 also includes a main memory 606, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 602 for storing information and instructions to be executed by processor 604. Main memory 606 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 604. Such instructions, when stored in non-transitory storage media accessible to processor 604, render computer system 600 into a special-purpose machine that is customized to perform the operations specified in the instructions.
Computer system 600 further includes a read only memory (ROM) 608 or other static storage device coupled to bus 602 for storing static information and instructions for processor 604. A storage device 610, such as a magnetic disk or optical disk, is provided and coupled to bus 602 for storing information and instructions.
Computer system 600 may be coupled via bus 602 to a display 612, such as a liquid crystal display, for displaying information to a computer user. An input device 614, including alphanumeric and other keys, is coupled to bus 602 for communicating information and command selections to processor 604. Another type of user input device is cursor control 616, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 604 and for controlling cursor movement on display 612. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y) , that allows the device to specify positions in a plane.
Computer system 600 may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 600 to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system 600 in response to processor 604 executing one or more sequences of one or more instructions contained in main memory 606. Such instructions may be read into main memory 606 from another storage medium, such as storage device 610. Execution of the sequences of instructions contained in main memory 606 causes processor 604 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.
The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operation in a specific fashion. Such storage media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 610. Volatile media includes dynamic memory, such as main memory 606. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with  patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.
Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 602. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 604 for execution. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 600 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 602. Bus 602 canies the data to main memory 606, from which processor 604 retrieves and executes the instructions. The instructions received by main memory 606 may optionally be stored on storage device 610 either before or after execution by processor 604.
Computer system 600 also includes a communication interface 618 coupled to bus 602. Communication interface 618 provides a two-way data communication coupling to a network link 620 that is connected to a local network 622. For example, communication interface 618 may be an integrated services digital network (ISDN) crad, cable modem, satellite modem, or a modem to provide a data conmnunication connection to a corresponding type of telephone line. As another example, communication interface 618 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 618 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 620 typically provides data communication through one or more networks to other data devices. For example, network link 620 may provide a connection through local network 622 to a host computer 624 or to data equipment operated by an Internet Service Provider (ISP) 626. ISP 626 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 628. Local network 622 and Intemet 628 both use electrical, electromagnetic or optical signals that cany digital data streams. The signals through the various networks and the signals on network link 620 and through communication interface 618, which carry the digital data to and from computer system 600, are example forms of transmission media.
Computer system 600 can send messages and receive data, including program code, through the network (s) , network link 620 and communication interface 618. In the Intemet example, a server 630 might transmit a requested code for an application program through Intemet 628, ISP 626, local network 622 and communication interface 618.
The received code may be executed by processor 604 as it is received, and/or stored in storage device 610, or other non-volatile storage for later execution.
7. EQUIVALENTS, EXTENSIONS, ALTERNATIVES AND MISCELLANEOUS
In the foregoing specification, example embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims (19)

  1. A method for mapping domain names, comprising:
    configuring a domain name system (DNS) server with a mapping from an alias domain name to a plurality of canonical domain names;
    receiving, by the DNS server, a DNS query for the alias domain name; and
    in response to the DNS server receiving the DNS query, selecting, by the DNS server, a canonical domain name among the plurality of canonical domain names to which the alias domain name is mapped;
    wherein the method is performed one or more computing devices.
  2. The method of Claim 1, further comprising sending, to a sender of the DNS query for the alias domain name, a DNS response that identifies the canonical domain name to cause the sender of the DNS query to query a different DNS server for resolving the canonical domain name to a host address.
  3. The method of Clahn 2, wherein the DNS response represents a DNS referral comprising a “CNAME” resource record that maps the alias domain name to the canonical domain name.
  4. The method of Claim 1, further comprising:
    querying, by the DNS server, one or more different DNS servers for a host address of the canonical domain name;
    receiving the host address of the canonical domain name from one of the one or more different DNS servers;
    sending, to a sender of the DNS query for the alias domain name, a DNS response that identifies the host address.
  5. The method of Claim 1, wherein the DNS server is an authoritative DNS server for the alias domain name.
  6. The method of Claim 1, wherein the DNS query for the alias domain name is sent by a local DNS server to a user device that causes the DNS query to be sent to the DNS server.
  7. The method of Claim 1, wherein the alias domain name is a domain name representing a content provider website.
  8. The method of Claim 7, wherein the content provider website is a part of a content delivery network (CDN) client system, wherein the plurality of canonical domain names represents a plurality of CDNs, and wherein the canonical domain name represents a selected CDN in the plurality of CDNs.
  9. The method of Claim 1, wherein at least one canonical domain name in the plurality of canonical domain names is assigned with one or more of a priority level, or a weight.
  10. The method of Claim 1, wherein the canonical domain name is selected fiom the plurality  of canonical domain names based on one or more of load balancing criteria, or load balancing algorithms.
  11. The method of Claim 1, wherein the mapping fiom the alias domain name to the plurality of canonical domain names is defined as a resource record in DNS data maintained by the DNS server, and wherein the resource record in the DNS data is of a non-DNS standard type.
  12. The method of Claim 1, wherein the DNS query is caused by a previous DNS query for the alias domain name issued by a DNS client to a local DNS server.
  13. The method of Claim 1, wherein the plurality of canonical domain names represents a plurality of computer networks, wherein the canonical domain name represents a specific computer network in the plurality of computer networks, wherein the specific computer network comprises a plurality of computer nodes, and wherein the canonical domain name is to be resolved to a host address of a specific computer node in the plurality of computer nodes.
  14. The method of Claim 13, wherein the host address is a non-domain name address.
  15. The method of Claim 13, wherein the host address is an internet protocol (IP) address of the specific computer node.
  16. The method of Claim 13, wherein the specific computer node is selected from the plurality of computer nodes in the specific computer network based on one or more of load balancing criteria or load balancing algorithms, and wherein the one or more of load balancing criteria or load balancing algorithms are implemented within the specific computer network.
  17. A system performing any of the methods as recited in Claims 1-16.
  18. A non-transitory computer readable storage medium, storing software instructions, which when executed by one or more processors cause performance of the method recited in any of Claims 1-16.
  19. A computing device comprising one or more processors and one or more storage media, storing a set of instructions, which when executed by one or more processors cause performance of the method recited in any of Claims 1-16.
PCT/CN2014/090795 2014-11-11 2014-11-11 Method and system for domain name load balancing WO2016074148A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/090795 WO2016074148A1 (en) 2014-11-11 2014-11-11 Method and system for domain name load balancing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/090795 WO2016074148A1 (en) 2014-11-11 2014-11-11 Method and system for domain name load balancing

Publications (1)

Publication Number Publication Date
WO2016074148A1 true WO2016074148A1 (en) 2016-05-19

Family

ID=55953554

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/090795 WO2016074148A1 (en) 2014-11-11 2014-11-11 Method and system for domain name load balancing

Country Status (1)

Country Link
WO (1) WO2016074148A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11290487B2 (en) * 2017-04-07 2022-03-29 Samsung Electronics Co., Ltd. Method and apparatus for reducing latency of network protocols

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103312629A (en) * 2012-03-09 2013-09-18 深圳市腾讯计算机***有限公司 Method, device and system of CDN (content delivery network) flow distribution
US20140149552A1 (en) * 2012-11-26 2014-05-29 Go Daddy Operating Company, LLC Dns overriding-based methods of accelerating content delivery
CN104144222A (en) * 2014-08-20 2014-11-12 北京阅联信息技术有限公司 Method and system for load balancing in DNS system based on alias record

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103312629A (en) * 2012-03-09 2013-09-18 深圳市腾讯计算机***有限公司 Method, device and system of CDN (content delivery network) flow distribution
US20140149552A1 (en) * 2012-11-26 2014-05-29 Go Daddy Operating Company, LLC Dns overriding-based methods of accelerating content delivery
CN104144222A (en) * 2014-08-20 2014-11-12 北京阅联信息技术有限公司 Method and system for load balancing in DNS system based on alias record

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11290487B2 (en) * 2017-04-07 2022-03-29 Samsung Electronics Co., Ltd. Method and apparatus for reducing latency of network protocols

Similar Documents

Publication Publication Date Title
US11811657B2 (en) Updating routing information based on client location
US10374955B2 (en) Managing network computing components utilizing request routing
JP5893034B2 (en) Request routing in network environments
JP6146950B2 (en) Method and system for requesting routing using a network computing component
JP5404766B2 (en) Method and system for requesting routing
US9444759B2 (en) Service provider registration by a content broker
EP2356577B1 (en) Request routing and updating routing information utilizing client location information
US11778068B2 (en) Systems and methods for processing requests for content of a content distribution network
US11025584B2 (en) Client subnet efficiency by equivalence class aggregation
US11463401B2 (en) Systems and methods for processing requests for content of a content distribution network
US20230239376A1 (en) Request processing in a content delivery framework
WO2016074148A1 (en) Method and system for domain name load balancing

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14905971

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14905971

Country of ref document: EP

Kind code of ref document: A1