Patent Publication Number: US-2023164050-A1

Title: Routing mode and point-of-presence selection service

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 15/929,792, entitled ROUTING MODE AND POINT-OF-PRESENCE SELECTION SERVICE and filed on May 21, 2020, which in turn is a continuation of U.S. patent application Ser. No. 16/154,580, now U.S. Pat. No. 10,728,133, entitled ROUTING MODE AND POINT-OF-PRESENCE SELECTION SERVICE and filed on Oct. 8, 2018, which in turn is a continuation of U.S. patent application Ser. No. 14/575,816, now U.S. Pat. No. 10,097,448, entitled ROUTING MODE AND POINT-OF-PRESENCE SELECTION SERVICE and filed on Dec. 18, 2014, the disclosures of which are incorporated herein by reference. 
    
    
     BACKGROUND 
     Generally described, computing devices and communication networks can be utilized to exchange information. In a common application, a computing device can request content from another computing device via the communication network. For example, a user at a personal computing device can utilize a software browser application to request a Web page from a server computing device via the Internet. In such embodiments, the user computing device can be referred to as a client computing device (“client”) and the server computing device can be referred to as a content provider. 
     Content providers are generally motivated to provide requested content to client computing devices often with consideration of efficient transmission of the requested content to the client computing device and/or consideration of a cost associated with the transmission of the content. For larger scale implementations, a content provider may receive content requests from a high volume of client computing devices which can place a strain on the content provider&#39;s computing resources. Additionally, the content requested by the client computing devices may have a number of components, which can further place additional strain on the content provider&#39;s computing resources. 
     With reference to an illustrative example, a requested Web page, or original content, may be associated with a number of additional resources, such as images or videos, which are to be displayed with the Web page. In one specific embodiment, the additional resources of the Web page are identified by a number of embedded resource identifiers, such as uniform resource locators (“URLs”). In turn, software on the client computing devices typically processes embedded resource identifiers to generate requests for the content. Often, the resource identifiers associated with the embedded resources reference a computing device associated with the content provider such that the client computing device would transmit the request for the additional resources to the referenced content provider computing device. Accordingly, in order to satisfy a content request, the content provider would provide client computing devices data associated with the Web page as well as the data associated with the embedded resources. 
     Some content providers attempt to facilitate the delivery of requested content, such as Web pages and/or resources identified in Web pages, through the utilization of a content delivery network (“CDN”) service provider. A CDN server provider typically maintains a number of computing devices in a communication network that can maintain content from various content providers. In turn, content providers can instruct, or otherwise suggest to, client computing devices to request some, or all, of the content provider&#39;s content from the CDN service provider&#39;s computing devices. 
     As with content providers, CDN service providers are also generally motivated to provide requested content to client computing devices often with consideration of efficient transmission of the requested content to the client computing device and/or consideration of a cost associated with the transmission of the content. Accordingly, CDN service providers often consider factors such as latency of delivery of requested content in order to meet service level agreements or to generally improve the quality of delivery service. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: 
         FIG.  1    is a block diagram illustrative of content delivery environment including a number of client computing devices, a content provider, and a content delivery network (CDN) service provider; 
         FIG.  2    is a block diagram of the content delivery environment of  FIG.  1    illustrating the registration of a content provider with a CDN service provider; 
         FIG.  3    is a block diagram of the content delivery environment of  FIG.  1    illustrating the generation and processing of a content request from a client computing device to a content provider; 
         FIG.  4    is a block diagram of the content delivery environment of  FIG.  1    illustrating the generation and processing of a DNS query corresponding to an embedded resource from a client computing device to a CDN service provider; 
         FIG.  5 A  is a block diagram of the content delivery environment of  FIG.  1    illustrating another embodiment of the generation and processing of a DNS query corresponding to an embedded resource from a client computing device to a CDN service provider; 
         FIG.  5 B  is a block diagram of the content delivery environment of  FIG.  1    illustrating the generation and processing of a DNS query corresponding to an alternative resource identifier from a client computing device to another POP of a CDN service provider; 
         FIG.  6    is a block diagram of the content delivery environment of  FIG.  1    illustrating the generation and processing of embedded resource requests from a client computing device to a CDN service provider; 
         FIG.  7    is a flow diagram illustrative of a POP selection routine implemented by a CDN service provider; 
         FIG.  8    is a flow diagram illustrative of a routing mode selection routine implemented by a CDN service provider; and 
         FIG.  9    is a flow diagram illustrative of an alternative POP selection routine implemented by a CDN service provider. 
     
    
    
     DETAILED DESCRIPTION 
     Generally described, the present disclosure is directed to DNS query processing that provides for the use of various routing modes responsive to receipt of a DNS query corresponding to a requested resource. More specifically, aspects of the disclosure will be described with regard to processing resource requests associated with content providers having a flat-rate pricing for use of a CDN service provider&#39;s computing devices. In some embodiments, in response to a DNS query corresponding to a requested resource, a CDN service provider may select a less optimal POP to service the requested resource based on one or more criteria and thereby select a “sloppy routing” scheme. For example, the one or more criteria may correspond to aspects of a flat-rate pricing model offered to content providers by the CDN service provider to provide content on their behalf. Continuing with this example, in such an approach, if a content provider has exceeded a threshold network usage, which may, for example, be based at least in part on pricing information for CDN service provider to provide content on behalf of the content provider, DNS query processing at a DNS server of the CDN service provider can include routing a response to the DNS query, in a “sloppy” routing manner and/or fashion, to a suboptimal POP by determining an alternative resource identifier or cache IP address at another POP (e.g., located at another edge server). 
     Further, aspects of the disclosure will be described with regard to DNS query processing that can determine a suboptimal, or sloppy, routing approach to avoid costs associated with data links of cache servers providing the requested resources. Accordingly, the one or more criteria used by the CDN service provider may also correspond to aspects of the CDN service provider cost information. More specifically, the data links, provisioned by a CDN service provider, can correspond to a financial cost for the content delivery bandwidth available on the data links of the cache servers. This financial cost can be determined in relation to a threshold content delivery bandwidth. For example, if a current content delivery bandwidth exceeds the threshold content delivery bandwidth, the CDN service provider incurs greater costs. In various embodiments, responses to DNS queries, such as an alternative resource identifier or a cache IP address, can be sloppy routed to another POP location with associated data links of cache servers operating below the threshold content delivery bandwidth. 
     In one embodiment, the one or more criteria for selecting a “sloppy routing” scheme includes a latency associated with providing requested resources for the content provider. In various other embodiments, other criteria that may affect the selection of sloppy routing for the response to a DNS query can include: optimizing content accessibility via hashing algorithms, security concerns, favoring certain content providers (e.g., customers), or favoring certain content uses. 
     Still further, aspects of the disclosure will be described with regard to DNS query processing for sloppy routing schemes using one or more criteria. The one or more criteria may include both the threshold network usage and the threshold content delivery bandwidth. For example, in such multi-criterion approach, the latency associated with routing a response of a DNS query to a suboptimal POP is considered in combination with the marginal cost to service a content request at a data link operating above the content delivery bandwidth threshold. Accordingly, a content provider that has exceeded a threshold network usage can be routed in a sloppy manner during a peak time, when other available data links of cache servers located at another POP are available at a lower cost or no cost because the data links of those cache servers are operating under the threshold content delivery bandwidth. Thus, a DNS server can use the one or more criteria to determine whether to use a suboptimal POP instead of an optimal or original POP. 
     Further aspects of the disclosure will be described with regard to determining an appropriate routing mode for providing a requested resource. In various embodiments, a spectrum of routing modes are available to the CDN service provider for use in responding to DNS queries. The routing modes can include: a default routing mode, a sloppy routing mode, a regional anycast routing mode, an anycast routing mode, and a “follow-the-moon” routing mode. (The “follow-the-moon” routing mode is described in U.S. patent application Ser. No. 14/229,568, titled “Scaling Computing Instances” and filed on Mar. 28, 2014, the entirety of which is incorporated herein by reference). The CDN service provider may determine a routing mode for providing a requested resource from a plurality of available routing modes based on one or more criteria. For example, the one or more criteria may include the network usage associated with the content provider, the content delivery bandwidth associated with the CDN service provider, a susceptibility factor associated with the content provider, or a latency associated with a POP in providing the requested resource. Additionally or alternatively, the one or more criteria may include one or more susceptibility factors and/or one or more latencies. For example, in one embodiment, the CDN service provider may determine that an anycast routing mode is appropriate if a susceptibility factor indicates that the anycast routing mode is a more appropriate routing mode when providing the requested resource. In another embodiment, the CDN service provider may determine that a default routing mode is appropriate if the one or more criteria indicate that a latency for providing the resource request is to be minimized. After selection of the routing mode, the CDN service provider may provide a response to the DNS query in accordance with the determined routing mode. 
     In another example, a regional anycast routing mode can be determined as the appropriate routing mode when the one or more criteria indicate that a susceptibility factor (e.g., a security concern) associated with the plurality of available routing modes is higher for a default routing mode, than the regional anycast routing mode. Continuing with this example, the response to the DNS query may be routed in accordance with the regional anycast routing mode so that several cache servers could be used to service the request, thereby enhancing security. In contrast, in the default routing mode, a cache server can be a single cache server (e.g., an optimal cache server with minimal latency for providing the resource request). Thus, the CDN service provider can provide responses to DNS queries in accordance with one of a plurality of available routing modes based on a variety of criteria. 
     Although various aspects of the disclosure will be described with regard to illustrative examples and embodiments, one skilled in the art will appreciate that the disclosed embodiments and examples should not be construed as limiting. 
       FIG.  1    is a block diagram illustrative of content delivery environment  100  for the management and processing of content requests. As illustrated in  FIG.  1   , the content delivery environment  100  includes a number of client computing devices  102  (generally referred to as clients) for requesting content from a content provider and/or a CDN service provider. In an illustrative embodiment, the client computing devices  102  can correspond to a wide variety of computing devices including personal computing devices, laptop computing devices, hand-held computing devices, terminal computing devices, mobile devices, wireless devices, various electronic devices and appliances and the like. In an illustrative embodiment, the client computing devices  102  include necessary hardware and software components for establishing communications over a communication network  108 , such as a wide area network or local area network. For example, the client computing devices  102  may be equipped with networking equipment and browser software applications that facilitate communications via the Internet or an intranet. 
     The client computing devices  102  may also include necessary hardware and software components for requesting content from network entities in the form of an originally requested resource that may include identifiers to two or more embedded resources that need to be requested. Further, the client computing devices  102  may include or be associated with necessary hardware and software components, such as browser software applications, plugins, scripts, etc., for fulfilling the original resource request and each embedded resource request. In other embodiments, the client computing devices  102  may be otherwise associated with an external proxy application or device, as well as any other additional software applications or software services, used in conjunction with requests for content. 
     Although not illustrated in  FIG.  1   , each client computing device  102  utilizes some type of local DNS resolver component, such as a DNS Name server, that generates the DNS queries attributed to the client computing device. In one embodiment, the local DNS resolver component may be provided by an enterprise network to which the client computing device  102  belongs. In another embodiment, the local DNS resolver component may be provided by an Internet Service Provider (ISP) that provides the communication network connection to the client computing device  102 . 
     The content delivery environment  100  can also include a content provider  104  in communication with the client computing devices  102  via the communication network  108 . The content provider  104  illustrated in  FIG.  1    corresponds to a logical association of one or more computing devices associated with a content provider. Specifically, the content provider  104  can include a web server component  110  corresponding to one or more server computing devices for obtaining and processing requests for content (such as Web pages) from the client computing devices  102 . The content provider  104  can further include an origin server component  112  and associated storage component  114  corresponding to one or more computing devices for obtaining and processing requests for network resources from the CDN service provider. One skilled in the relevant art will appreciate that the content provider  104  can be associated with various additional computing resources, such additional computing devices for administration of content and resources, DNS name servers, and the like. For example, although not illustrated in  FIG.  1   , the content provider  104  can be associated with one or more DNS name server components that would be authoritative to resolve client computing device DNS queries corresponding to a domain of the content provider. Although the content delivery environment  100  is illustrated in a client-server configuration, one skilled in the relevant art will appreciate that the content delivery environment  100  may be implemented in a peer-to-peer configuration as well. 
     With continued reference to  FIG.  1   , the content delivery environment  100  can further include a CDN service provider  106  in communication with the client computing devices  102  and the content providers  104  via the communication network  108 . The CDN service provider  106  illustrated in  FIG.  1    corresponds to a logical association of one or more computing devices associated with a CDN service provider. Specifically, the CDN service provider  106  can include a number of point of presence (“POP”) locations  116  and  122  that correspond to nodes on the communication network  108 . Each POP  116  and  122  includes a DNS server component  118  and  124  made up of a number of DNS server computing devices for resolving DNS queries from the client computers  102 . Each POP  116  and  122  also includes a resource cache component  120  and  126  made up of a number of cache server computing devices for storing resources from content providers and transmitting various requested resources to various client computers. The DNS server components  118  and  124  and the resource cache components  120  and  126  may further include additional software and/or hardware components that facilitate communications including, but not limited, load balancing or load sharing software/hardware components. 
     In an illustrative embodiment, the DNS server components  118  and  124  and resource cache component  120  and  126  are considered to be logically grouped, regardless of whether the components, or portions of the components, are physically separate. Additionally, although the POPs  116  and  122  are illustrated in  FIG.  1    as logically associated with the CDN service provider  106 , the POPs can be geographically distributed throughout the communication network  108  to serve the various demographics of client computing devices  102 . Additionally, one skilled in the relevant art will appreciate that the CDN service provider  106  can be associated with various additional computing resources, such additional computing devices for administration of content and resources, and the like. 
     The CDN service provider  106  can further include a routing mode and POP selection service  128 , pricing data store  130 , and back-end processing service  132 . Illustratively, the routing mode and POP selection service  128  can implement various computational, statistical, or machine learning methods to route the response (e.g., an answer) to a DNS query received at the CDN service provider  106  (e.g., received at DNS server component  118 ). For example, the routing mode and POP selection service  128  can determine an appropriate routing mode for the alternative resource identifier (e.g., a CNAME) associated with the second DNS server  124  to the second POP  122  of the CDN service provider  106  or fort the IP address of a cache component in the resource cache  126  of the second POP  122 . The routing mode and POP selection service  128  may include different modules or components, which may facilitate or implement various methods and processes described herein. Further, these modules or components may include additional components, systems, and subsystems for facilitating the methods and processes. Pricing data store  130  can include pricing information that indicates a price at which the CDN provider  106  provides content on behalf of the content provider  104 . Pricing data store  130  can, additionally or alternatively, include cost information indicating a financial cost of content delivery bandwidth for the CDN service provider  106  (e.g., the costs to operate provisioned data links at cache servers). For example, in some embodiments, the pricing information can include a flat-rate price for monthly service for the content provider  104  by CDN provider  106 . 
     Illustratively, back-end processing service  132  can include a number of hardware and software components. More specifically, the back-end processing service  132  may include hardware, software, configuration data, data structures, computer-readable code, or any type of information that can be loaded into memory and processed by back-end processing service  132 . Aspects of the back-end processing service  132  will be described in further detail below with respect to  FIG.  4    that illustrates the processing and storing service provided by back-end processing service  132 . In various embodiments, reference to the routing mode and POP selection service  128  and back-end processing service  132  within the present disclosure may include multiple computing devices working in conjunction to facilitate the selecting of alternative resource identifiers or cached IP addresses at alternative POP locations to service content requests. For example, in various embodiments, the routing mode and POP selection service  128  may be distributed through a network or implemented by one or more virtual machine instances. Additionally or alternatively, it can be appreciated by one skilled in the art that the routing mode and POP selection service  128  and back-end processing service  132  may correspond to a combination thereof and/or include any other services, be centralized in one computing device, and/or be distributed across several computing devices. 
     With reference now to  FIGS.  2 - 6   , the interaction between various components of the content delivery environment  100  of  FIG.  1    will be illustrated. For purposes of the example, however, the illustration has been simplified such that many of the components utilized to facilitate communications are not shown. One skilled in the relevant art will appreciate that such components can be utilized and that additional interactions would accordingly occur without departing from the spirit and scope of the present disclosure. 
     With reference to  FIG.  2   , an illustrative interaction for registration of a content provider  104  with the CDN service provider  106  will be described. As illustrated in  FIG.  2   , the CDN content registration process begins with registration of the content provider  104  with the CDN service provider  106 . In an illustrative embodiment, the content provider  104  utilizes a registration application program interface (“API”) to register with the CDN service provider  106  such that the CDN service provider  106  can provide content on behalf of the content provider  104 . The registration API includes the identification of the origin server  112  of the content provider  104  that will provide requested resources to the CDN service provider  106 . 
     One skilled in the relevant art will appreciate that upon identification of appropriate origin servers  112 , the content provider  104  can begin to direct requests for content from client computing devices  102  to the CDN service provider  106 . Specifically, in accordance with DNS routing principles, a client computing device request corresponding to a resource identifier would eventually be directed toward a POP  116  and  122  associated with the CDN service provider  106 . In the event that the resource cache component  120  and  126  of a selected POP does not have a copy of a resource requested by a client computing device  102 , the resource cache component will request the resource from the origin server  112  previously registered by the content provider  104 . 
     With continued reference to  FIG.  2   , upon receiving the registration API, the CDN service provider  106  obtains and processes the registration information. In an illustrative embodiment, the CDN service provider  106  can then generate additional information that will be used by the client computing devices  102  as part of the content requests. The additional information can include, without limitation, client identifiers, such as client identification codes, content provider identifiers, such as content provider identification codes, executable code for processing resource identifiers, such as script-based instructions, the like. One skilled in the relevant art will appreciate that various types of additional information may be generated by the CDN service provider  106  and that the additional information may be embodied in any one of a variety of formats. 
     The CDN service provider  106  returns an identification of applicable domains for the CDN service provider (unless it has been previously provided) and any additional information to the content provider  104 . In turn, the content provider  104  can then process the stored content with content provider specific information. In one example, as illustrated in  FIG.  2   , the content provider  104  translates resource identifiers originally directed toward a domain of the origin server  112  to a domain corresponding to the CDN service provider. The translated URLs are embedded into requested content in a manner such that DNS queries for the translated URLs will resolve to a DNS server corresponding to the CDN service provider  106  and not a DNS server corresponding to the content provider  104 . Although the translation process is illustrated in  FIG.  2   , in some embodiments, the translation process may be omitted in a manner described in greater detail below. 
     Generally, the identification of the resources originally directed to the content provider  104  will be in the form of a resource identifier that can be processed by the client computing device  102 , such as through a browser software application. In an illustrative embodiment, the resource identifiers can be in the form of a uniform resource locator (“URL”). Because the resource identifiers are included in the requested content directed to the content provider  104 , the resource identifiers can be referred to generally as “content provider URLs.” For purposes of an illustrative example, a content provider URL can identify a domain of the content provider  104  (e.g., contentprovider.com), a name of the resource to be requested (e.g., “resource.xxx”) and a path where the resource will be found (e.g., “path”). In this illustrative example, the content provider URL has the form of:
         http://www.contentprovider.com/path/resource.xxx       

     During an illustrative translation process, the content provider URL is modified such that requests for the resources associated with the translated URLs resolve to a POP associated with the CDN service provider  106 . In one embodiment, the translated URL identifies the domain of the CDN service provider  106  (e.g., “cdnprovider.com”), the same name of the resource to be requested (e.g., “resource.xxx”) and the same path where the resource will be found (e.g., “path”). Additionally, the translated URL can include additional processing information (e.g., “additional information”). The translated URL would have the form of:
         http://additional_information.cdnprovider.com/path/resources.xxx       

     In another embodiment, the information associated with the CDN service provider  106  is included the modified URL, such as through prepending or other techniques, such that the translated URL can maintain all of the information associated with the original URL. In this embodiment, the translated URL would have the form of:
         http://additional_information.cdnprovider.com/www.contentprovider.com/path/resource.xxx       

     With reference now to  FIG.  3   , after completion of the registration and translation processes illustrated in  FIG.  2   , a client computing device  102  subsequently generates a content request that is received and processed by the content provider  104 , such as through the Web server  110 . In accordance with an illustrative embodiment, the request for content can be in accordance with common network protocols, such as the hypertext transfer protocol (“HTTP”). Upon receipt of the content request, the content provider  104  identifies the appropriate responsive content. In an illustrative embodiment, the requested content can correspond to a Web page that is displayed on the client computing device  102  via the processing of information, such as hypertext markup language (“HTML”), extensible markup language (“XML”), and the like. The requested content can also include a number of embedded resource identifiers, described above, that corresponds to resource objects that should be obtained by the client computing device  102  as part of the processing of the requested content. The embedded resource identifiers can be generally referred to as original resource identifiers or original URLs. 
     Upon receipt of the requested content, the client computing device  102 , such as through a browser software application, begins processing any of the markup code included in the content and attempts to acquire the resources identified by the embedded resource identifiers. Accordingly, the first step in acquiring the content corresponds to the issuance, by the client computing device  102  (through its local DNS resolver), of a DNS query for the original URL resource identifier that results in the identification of a DNS server authoritative to the “.” and the “com” portions of the translated URL. After resolving the “.” and “com” portions of the embedded URL, the client computing device  102  then issues a DNS query for the resource URL that results in the identification of a DNS server authoritative to the “.cdnprovider” portion of the embedded URL. The issuance of DNS queries corresponding to the “.” and the “com” portions of a URL are well known and have not been illustrated. 
     With reference now to  FIG.  4   , in an illustrative embodiment, after completion of the registration and translation processes illustrated in  FIG.  2   , the successful resolution of the “cdnprovider” portion of the original URL identifies a network address, such as an IP address, of a DNS server component  118  associated with the CDN service provider  106 . In one embodiment, the IP address is a specific network address unique to a DNS server component  118  of POP  116 . In another embodiment, the IP address can be shared by one or more POPs  116 ,  122 . In this embodiment, a DNS query to the shared IP address utilizes a one-to-many network routing schema, such as anycast, such that a specific POP, POP  118 , will receive the request as a function of network topology. For example, in an anycast implementation, a DNS query issued by a client computing device  102  to a shared IP address will arrive at a DNS server component logically having the shortest network topology distance, often referred to as network hops, from the client computing device. The network topology distance does not necessarily correspond to geographic distance. However, in some embodiments, the network topology distance can be inferred to be the shortest network distance between a client computing device  102  and a POP. 
     With continued reference to  FIG.  4   , in either of the above-identified embodiments (or any other embodiment), a specific DNS server in the DNS component  118  of a POP  116  receives the DNS query corresponding to the original URL from the client computing device  102 . Once one of the DNS servers in the DNS component  118  receives the request, the specific DNS server attempts to resolve the request. In an illustrative embodiment, a specific DNS server can resolve the DNS query by selecting an IP address of a resource cache component that will process the request for the requested resource. Alternatively, in another embodiment, as will be described further below in reference to  FIGS.  5 A and  5 B , an alternative resource identifier (e.g., a CNAME) associated with another DNS server component of the CDN service provider  106  may be selected and returned to the client computing device  102 . In either case, as will also be further described below, the CDN service provider  106 , can implement various methods and systems to select a routing mode for an IP address of a cache server component of the CDN service provider  106  or an alternative resource identifier associated with another DNS server component of the CDN service provider  106 , such as via the routing mode and POP selection service  128  as generally discussed above. 
     Returning to the embodiment of  FIG.  4    specifically, the DNS server component  118  processes the DNS query in part by selecting an IP address of a resource cache component of the CDN service provider  106  based at least in part on one or more criteria. The one or more criteria can include aspects of a flat-rate pricing model offered by the CDN service provider  106  and aspects of a CDN service provider cost information. Accordingly, a threshold network usage and a threshold content delivery bandwidth can be used as one or more criteria during DNS query processing to select an IP address of the resource cache component. To evaluate these thresholds, the data links of the resource cache components  120  and  126  are associated with a throughput capability that can be measured. For example, the throughput capability of one data link at a single cache server of resource cache component  120  (or collectively as several data links at resource cache components  120  and  126 ) can include a measurement of the available bandwidth, used bandwidth (e.g., network usage), or other metrics that may evaluate the performance of networked components such as data links associated with resource cache components. In some instances, these measurements of bandwidth can be evaluated as a percentile (e.g., a 95th percentile metric) with reference to other data links at a specific resource cache component or several resource cache components, aggregated to use as a statistical metric. With these metrics, the DNS server component  118  then processes the DNS query in part with reference to these metrics and determines whether a sloppy routing scheme may be used if a certain metric falls above or below a certain threshold (e.g., a threshold network usage of content provider  104 ). Accordingly, various one or more criteria corresponding to metrics of the data links at the resource cache components  120  and  126  may be used to determine whether a sloppy routing scheme should be used. 
     In one embodiment of sloppy routing using the CDN service provider cost information as the one or more criteria, the routing mode and POP selection service  128  of the CDN service provider  106  can determine to route the response to a DNS query (e.g., a content request) to a different DNS server associated with an alternative resource identifier or a cache IP address that, in this example, is not the optimal service location for that DNS query. In various embodiments, the CDN service provider  106  can determine a suboptimal routing approach to avoid costs associated with data links of the resource cache components  120  and  126  servicing the content requests. In this approach, the CDN service provider  106  can provision the data links (e.g., hardware) necessary at the resource cache components  120  and  126  based on the available content delivery bandwidths of the resource cache components  120  and  126  or the DNS query processing of DNS server components  118  and  124  for servicing the requested resources. These data links, not illustratively depicted in  FIG.  3   , operating via network  108  cost the CDN service provider  106 , in various embodiments, on a per data link basis. The costs of these data links may vary in various scenarios. In some embodiments, the cost of the data links can be determined based on the DNS query processing of the DNS server components  118  and  124  or the available content delivery bandwidth at resource cache components  120  and  126 . The DNS server components  118  and  124  and resource cache components  120  and  126  can be located on edge servers at the POPs  116  and  122  located within network  108 . 
     More specifically, the cost of these data links at resource cache components  120  and  126  can correspond to a threshold content delivery bandwidth for a particular data link (or all of the data links). In an illustrative example, the CDN service provider  106  may incur an additional cost when a data link at the DNS server component  118  is used at a 95th percentile capacity of request handling at one or more cache servers of resource cache component  120  for a certain period of time corresponding to a time bucket. Time buckets may be used to determine the cost of operating the cache server above the threshold content delivery bandwidth. For example, a five-minute time bucket of operating above the threshold content delivery bandwidth can correspond to a certain cost; a thirty-minute time bucket, an even higher cost. If, on the other hand, the request handling at one or more cache servers of resource cache component  120  operates below that percentile, the CDN service provider  106  may incur no cost or a lesser cost. Thus the CDN service provider  106  can route various content requests to different data links of alternative cache servers (e.g., cache servers at resource cache component  126 ) based on the request handling capacity at cache servers of resource cache component  120  operating below or above that cost percentile. In another illustrative example, if the data link at resource cache component  120  is operating at the 98th percentile, the CDN service provider  106  can determine that another resource cache component  126 , operating only at a 50th percentile, may be include alternative cache servers to handle the content requests because even this rerouted content request only raises the request handling at the cache servers of resource cache component  126  to the 55th percentile. With this rerouting approach, eventually, the overloaded 98 percentile data link at resource cache component  120  may fall below the threshold, for example, now operating at the 90th percentile. With this approach, the CDN service provider  106  has now lowered its cost operating below the threshold content delivery bandwidth at both data links of resource cache components  120  and  126 . This can be referred to as a sloppy routing mode. In this continued example, the CDN service provider  106  can determine an alternative DNS server associated with an alternative resource identifier (as depicted in  FIGS.  5 A and  5 B ) or a cache IP address (as depicted in  FIG.  4   ), both at an alternative POP, where the responses to the DNS queries can be routed. In some embodiments, the threshold content delivery bandwidth (e.g., the cost percentile at which the CDN service provider  106  incurs costs) can be stored in the pricing data store  130 . The corresponding time buckets at which the CDN service provider  106  incurs costs operating above the threshold content delivery bandwidth can also be stored in the pricing data store  130 . The threshold content delivery bandwidth of data links at cache servers can correspond to peak request handling for resource cache components (e.g., cache servers). 
     In various embodiments, the CDN service provider  106  can use the back-end processing service  132  to process stored historical data to determine whether a particular POP exceeds the threshold content delivery bandwidth during regular daily intervals, seasonally, or on a monthly basis. Back-end processing service  132  may use various methods associated with DNS query processing to track the DNS query at DNS servers or the content delivery bandwidth of data links associated with the resource cache components, located at various POPs (e.g., on edge servers) connected via the network  108 . 
     In another illustrative example of sloppy routing, the CDN service provider  106  can determine to route the response of a DNS query (e.g., a content request) to a cache IP address that is not the optimal location for that content request because the content provider  104  has exceeded a threshold network usage. The CDN service provider  106  can determine a pricing structure for the content provider  104 ; for example, the content provider  104  can be charged a flat-rate price for network usage. This may allow the content provider  104  to determine that the CDN service provider  106  is cost efficient because a flat rate price is charged for network bandwidth. However with this predictability, the content service provider  106  can determine that some content providers exceed their threshold network usage that has been predicted corresponding to a determined flat-rate price. When the content provider  104  has exceeded the flat-rate price, the CDN service provider  106  can use a sloppy routing approach to reroute content requests to a suboptimal location. In some embodiments, this approach provides a balanced or reasonable latency: not the optimal latency in a default routing approach that determines the optimal cache IP address to service a DNS query, but also not the worst latency that a content provider  104  might find using an anycast routing approach. Thus the sloppy routing mode, in these embodiments, balances the latency for the content provider  104  (e.g., a customer) with the flat-rate price that the content provider  104  has paid for a corresponding network usage at that flat-rate price. In one embodiment, the content provider  104  can be on a monthly network usage plan: The content provider  104  is routed to the optimal location in the default routing approach; but, once the customer has exceeded the threshold network usage for the month, the routing mode and POP selection service  128  determines that the sloppy routing mode can be used to route a response to an alternative DNS server (which may be identified with an alternative resource identifier as depicted in  FIG.  5 A ) or an IP address of a resource cache component at another POP location (e.g., the resource cache  126  at the second POP  122  as depicted in  FIG.  3   ). In another embodiment, once the content provider  104  has exceeded the threshold network usage, the content provider  104  may be rerouted automatically for a specific time of day to an alternative DNS server (e.g., the DNS server  124 ) or an IP address of a cache component at another POP location. For example, multiple content requests for movies at  8  p.m. on Friday night can be rerouted to a suboptimal location, if that specific content provider  104  has already exceeded their threshold network usage for that month. 
     In various embodiments, the back-end processing service  132  can retrieve from pricing data store  130  various prices for the content provider  104  and costs of the CDN service provider  106 . With this data, the back-end processing service  132  can process the tracked behavior of the network usage for the content provider  104  with various monitoring mechanisms and/or approaches used by the CDN service provider  106 . For example, the CDN service provider  106  may keep records of the network usage of various content providers  104  on a daily basis. In various other approaches, the CDN service provider  106  can store the pricing structure for various content providers  104  in the pricing data store  130 . For example, the pricing structure can include a graduated pricing structure for a new customer (e.g., another content provider  104 ) or a discounted pricing structure for a loyal customer (e.g., another content provider  104 ). Using both the pricing data store  130  and the back-end processing service  132 , the CDN service provider  106  can determine the network usage of various content providers  104 . 
     In another illustrative example, the DNS server component  118  may use a combination of the one or more criteria to determine a sloppy routing scheme; for example, using both the threshold content delivery bandwidth and the threshold network usage for the content provider  104 . Continuing in this illustrative example, the CDN service provider  106  can determine that a flat-rate price corresponds to a marginal increase in cost for a particular data link because that data link corresponds to an optimal routing approach using DNS. Thus if a content provider  104  has exceeded their monthly network usage, the CDN service provider  106  can use sloppy routing to reroute the DNS query to another POP (e.g., either via an alternative resource identifier or via a resource cache component operated by that POP) that is operating under the cost percentile for that data link, which corresponds to a threshold content delivery bandwidth. In this combined approach, the CDN service provider  106  balances the cost of provisioning subsequent data links against the latency introduced to the content provider  104  for the use of servicing DNS queries. 
     In an additional illustrative example of the sloppy routing mode not depicted in  FIG.  4   , the DNS server component  118  may keep a list of available IP addresses in the resource cache component  120  corresponding to data links that the CDN service provider  106  is operating. If a request for content of the content provider  104  is received when content provider  104  has exceeded their threshold network usage for a month, DNS server component  118  can use the list of available IP addresses with their corresponding content delivery bandwidth percentiles at that particular time. For example, the data link at the first IP address may be operating at the 98th percentile because, in this example, it is the optimal IP address, the data link at the second IP address may be operating at the 94th percentile, and the data link at the third IP address may be operating at the 57th percentile. Because, in this example, content provider  104  has exceeded their threshold network usage, the routing mode and POP selection service  128  and back-end processing service  132  can determine that the third IP address can be used to service a DNS query; thereby minimizing the cost to operate the data links of CDN service provider  106 . This avoids using the second IP address when a marginal increase in DNS queries could push the data link at the second IP address to operate over the threshold content delivery bandwidth (e.g., the 95th percentile). Additionally, some traffic on the data link at the second IP address can be routed to the third IP address if CDN service provider  106  determines that the incremental latency experienced is minimal or if the another content provider  104  operating their content requests on the data link at the second IP address suddenly exceeds their threshold network usage for the month. 
     Further in various sloppy routing schemes using a combination of the one or more criteria, the CDN service provider  106  can determine various permutations of the sloppy routing mode based on information regarding the pricing structure of a content provider  104  stored in the pricing data store  130 . In the same continued example from above, the latency incurred by a flat-rate price on the data link at the third IP address may be a greater cost in terms of latency for the content provider  104  when compared to the marginal cost incurred by the CDN service provider  106  when servicing that DNS query on the data link at the second IP address, which would have resulted in exceeding the threshold content delivery bandwidth for the CDN service provider  106 . Thus the routing mode and POPs selection service  128  can include a determination that balances the latency for the content provider  104  operating above a threshold network usage with the cost incurred by operating a data link above the content delivery bandwidth threshold. With this approach in view, various embodiments are possible balancing the latency incurred for the content provider  104  for a particular cost incurred by CDN service provider  106 . Thus CDN service provider  106  can use a pricing structure stored in pricing data store  130  for content provider  104  that is based primarily on the latency that content provider  104  is willing to incur. 
     Further still, this latency criterion can be related to the use case of the content request for that the content provider  104 . For example, CDN service provider  106  can have a pricing structure for content provider  104  that charges more for HD video than for public information or text-based file formats. In some instances, as one of skill in the art can appreciate, HD video may incur greater latency than files with text-based formats or emails. 
     In various embodiments, as one of skill in the art can appreciate, data can be collected by CDN service provider  106  regarding the content requests of the content provider  104  according to time of day, or month, or based on certain content requests. This data can be processed in the back-end processing service  132 . All of these factors can be used as the one or more criteria to determine a sloppy routing approach for the response of a particular DNS query. Various factors can be processed by back-end processing service  132  as will now be described herein. For example, in various embodiments, latency may not be the criterion to be optimized for sloppy routing, but instead, content accessibility for the content provider  104  may be the criterion. 
     In this sloppy routing approach using content accessibility as one of the one or more criteria, the CDN service provider  106  can additionally use hashing algorithms to determine a POP location with the lowest latency to service a particular DNS query. With hashing algorithms, the CDN the service provider  106  can use the routing mode and POP and selection service  128  to divide a certain number of POP into stripes to be used in computing likelihoods of content availability. Then, a hashing algorithm can use the name of the content provider  104  with the DNS query to determine the likelihood that content is stored for that content provider  104  at a particular POP that would service the resource request with the lowest latency. In this approach, content requests are more likely to be serviced with less latency by using that POP having a higher likelihood of content stored at the resource cache component of that POP than others. In some embodiments, if the content provider  104  includes several requests for the same content, feedback can be used to indicate that any of the POPs may have an equal likelihood of having the content stored and thus offer nearly equivalent low latencies. 
     Additional criteria can be used by routing mode and POP selection service  128  during DNS query processing to determine which POP locations or IP addresses to sloppy route for the response of a particular DNS query. 
     Another one or more criteria of sloppy routing include determining POP locations that can enhance security. In this approach, routing mode and POP selection service  128  can determine that the second POP  122  is less secure so that the list of available IP addresses at the resource cache component  120  no longer includes cache IP addresses associated with the second POP  122  or moves the cache IP addresses associated with the second POP  122  to the bottom of the list for servicing DNS queries. More specifically, routing mode and POP selection service  128  can use information that CDN service provider  106  receives from a look-up table of IP addresses that have security concerns. With this look-up table of IP addresses, routing mode and POP selection service  128  can compare that list with the list available of cache IP address for sloppy routing at DNS server component  118  to determine whether a particular IP address should be avoided for the content provider  104  that has an increased security concerns (e.g., an increased susceptibility factor). In some embodiments, this may be additionally addressed by changing the routing mode. For example, the routing mode at routing mode and POP selection service  128  can be changed to a regional anycast routing mode or anycast routing mode for enhanced security. In some embodiments, CDN service provider  106  can financially charge the content provider  104  more to provide this enhanced security, especially if the content provider  104  requests secure connection for content requests (e.g., because content provider  104  is servicing DNS queries that include secure or financial transactions). 
     Another one or more criteria of sloppy routing include using a favored or biased approach for a particular content provider  104 : the CDN service provider  106  can determine that a certain content provider  104  is favored because it has been a customer of CDN service provider  106  for a long period of time (or pays CDN service provider  106  more than other content providers). In one embodiment then, even though this favored or loyal customer has exceeded their threshold network usage, the routing mode and POP selection service  128  can determine that content provider  104  is not sloppy routed, but, instead, content provider is provided the optimal IP address at DNS server  118 . In contrast, this favored approach may also be used for new customers. For example, a new customer that has only exceeded their threshold at work usage on day 20 of the month could still be provided the optimal IP address if the CDN service provider  106  determines that the marginal cost of servicing new customers with a lower latency, even though it incurs a greater cost for the data link, is less than the likelihood that new customer may drop coverage or choose another CDN service provider. 
     With this description, as one of skill in the art can appreciate, various approaches are possible to favor certain content provider  104  over another based on preferences determined and processed by back-end processing service  132 . In some embodiments this may include using historical data to analyze content provider  104  behavior based on: latency, price, security concerns, content accessibility, whether a content provider  104  is primarily downloading bulk data, whether a particular POP is a peer of CDN service provider  106  network, or any other relevant factors that affect servicing a particular DNS query. Further, a combination of factors may be used to determine the alternative resource identifier associated with another POP location or cache IP address to be used when routing a DNS query. For example, CDN service provider  106  may determine that latency and susceptibility factors should be the only factors to be used when selecting a cache IP address from the list of available addresses at DNS server  118 . 
     With further reference to  FIG.  4   , upon selection of a specific cache server computing device (or a resource cache component  120 ,  126 ), the DNS server component  118  provides an IP address of the cache server computing device, resource cache component, or load balancer/load share device associated with a resource cache component. As will be described further below in reference to  FIG.  6   , the client computing device  102  can then utilize Internet communication protocols to request the resource from a specific cache server computing device identified by the IP address. The cache server computing device then processes the request, as will also be described in greater detail below, to provide the resource to the client computing device  102 . 
     With reference now to  FIG.  5 A , in another embodiment, after completion of the registration and translation processes illustrated in  FIG.  2   , a specific DNS server in the DNS server component  118  of the POP  116  receives the DNS query corresponding to the original URL from the client computing device  102 . Once one of the DNS servers in the DNS server component  118  receives the request, the specific DNS server attempts to resolve the request. In one illustrative embodiment, as described above and shown in reference to  FIG.  4   , a specific DNS server resolves the DNS query by identifying an IP address of a cache server component that will process the request for the requested resource. As described above and as will be described further below in reference to  FIG.  6   , a selected resource cache component can process the request by either providing the requested resource if it is available or attempt to obtain the requested resource from another source, such as a peer cache server computing device or the origin server  112  of the content provider  104 . 
     Returning to  FIG.  5 A , as an alternative to selecting a resource cache component upon receipt of a DNS query as described in reference to  FIG.  4   , the CDN service provider  106  can process the DNS query to select another POP for further processing a subsequent DNS query associated with the originally requested resource. The selection of another POP can also be based, at least in part, on the same one or more criteria detailed above with respect the selection of a resource cache component in  FIG.  4   . In this embodiment, the CDN service provider  106  can maintain sets of various alternative resource identifiers. The alternative resource identifiers can be provided by the CDN service provider  106  to the client computing device  102  such that a subsequent DNS query on the alternative resource identifier will be processed by a different DNS server component within the CDN service provider&#39;s network. In an illustrative embodiment, the alternative resource identifiers are in the form of one or more canonical name (“CNAME”) records. In one embodiment, each CNAME record identifies a domain of the CDN service provider  106  (e.g., “cdnprovider.com” or “cdnprovider-1.com”). As will be explained in greater detail below, the domain in the CNAME does not need to be the same domain found in original URL or in a previous CNAME record. Additionally, each CNAME record includes additional information, such as request routing information, (e.g., “request routing information”). An illustrative CNAME record can have the form of:
         http://request_routing_information.cdnprovider.com/path/resource.xxx CNAME_request_routing_information.cdnprovider.com       

     In an illustrative embodiment, the CNAME records are generated and provided by the DNS servers to direct a more appropriate DNS server of the CDN service provider  106 . As used in accordance with the present disclosure, appropriateness can be defined in any manner by the CDN service provider  106  for a variety of purposes. In an illustrative embodiment, as will be described in greater detail below in reference to  FIG.  7   , in addition to the one or more criteria noted above, the CDN service provider  106  can utilize domain information associated with the content provider  104 , at least in part, to identify the more appropriate DNS server of the CDN service provider  106 . In particular, the CDN service provider  106  can use the domain information in the DNS query to identify the content provider  104 , and in turn, identify a current and threshold network usage for the identified content provider  104 . As noted above, the threshold network usage for a content provider can be determined based, at least in part, on pricing information for the CDN service provider to provide content on behalf of the content provider  104 . Specifically, as one example, a content provider may pay a flat fee for unlimited network usage of the CDN service provider&#39;s network. However, the CDN service provider  106  may manage its resources by determining a threshold network usage for the content provider based on its flat fee at or below which the CDN service provider  106  will process requests at an optimal POP or route requests to an optimal POP. Alternatively, if the current network usage for servicing domains corresponding to the content provider  104  is above the threshold network usage, the CDN service provider  106  can select a less optimal POP to process the request. 
     In another embodiment, building on the foregoing example, the CDN service provider  106  can utilize client location information associated with the client computing device  102  or its local DNS resolver, at least in part, to identify the more appropriate DNS server of the CDN service provider  106 . In particular, the CDN service provider  106  can utilize an IP address associated with a client computing device DNS query to identify a best sub-optimal POP to process the request. Based on the client location information, the CDN service provider  106  can then select a POP  116 ,  122  from a set of sub-optimal POPs that are identified as being available to service resource requests under the circumstances. In one example, if more than one POP is identified in the set of sub-optimal POPs, the CDN service provider  106  can utilize a distribution allocation for selecting a specific POP associated with the client location information. In another example, once a POP is selected, the CDN service provider  106  can further use health information to determine whether the selected POP is available to service requests before providing the client computing device with a CNAME corresponding to the selected POP. This health information may in one embodiment correspond to a threshold content delivery bandwidth available at the POP as also described above. One skilled in the art will appreciate that the above functionality is illustrative in nature and accordingly should not be construed as limiting. 
     As described above, in addition to the consideration of client location information (either of the end-client or its associated local DNS resolver component), the CDN service provider  106  can utilize the additional information (e.g., the “additional information”) included in the translated URL to select a more appropriate DNS server. In one aspect, the CDN service provider  106  can utilize the additional information to select from a set of DNS servers identified as satisfying criteria associated with the client location information or from a set of DNS services identified as satisfying any other criterion or combination of criteria, such as those described in other example embodiments herein. In another aspect, the CDN service provider  106  can utilize the additional information to validate the DNS server selected in accordance with the client location information or to select an alternative DNS server previously selected in accordance with the client location information. In one example, the CDN service provider  106  can attempt to direct a DNS query to DNS servers according to additional geographic criteria. The additional geographic criteria can correspond to geographic-based regional service plans contracted between the CDN service-provider  106  and the content provider  104  in which various CDN service provider  106  POPs are grouped into geographic regions. Accordingly, a client computing device  102  DNS query received in a region not corresponding to the content provider&#39;s regional plan may be better processed by a DNS server in region corresponding to the content provider&#39;s regional plan. In another example, the CDN service provider  106  can attempt to direct a DNS query to DNS servers according to service level criteria. The service level criteria can correspond to service or performance metrics contracted between the CDN service provider  106  and the content provider  104 . Examples of performance metrics can include latencies of data transmission between the CDN service provider POPs and the client computing devices  102 , total data provided on behalf of the content provider  104  by the CDN service provider POPs, error rates for data transmissions, and the like. 
     In still a further example, the CDN service provider  106  can attempt to direct a DNS query to DNS servers according to network performance criteria. The network performance criteria can correspond to measurements of network performance for transmitting data from the CDN service provider POPs to the client computing device  102 . Examples of network performance metrics can include network data transfer latencies (measured by the client computing device or the CDN service provider  106 , network data error rates, and the like). 
     In accordance with an illustrative embodiment, the DNS server maintains a data store that defines CNAME records for various original URLs. If a DNS query corresponding to a particular original URL matches an entry in the data store, the DNS server component  118  returns a CNAME record as defined in the data store. In an illustrative embodiment, the data store can include multiple CNAME records corresponding to a particular original URL. The multiple CNAME records would define a set of potential candidates that can be returned to the client computing device  102 . In such an embodiment, the DNS server component  118 , either directly or via a network-based service, can implement additional logic in selecting an appropriate CNAME from a set of possible of CNAMEs. In an illustrative embodiment, each DNS server component  118 ,  124  maintains the same data stores that define CNAME records, which can be managed centrally by the CDN service provider  106 . Alternatively, each DNS server component  118  and  124  can have POP specific data stores that define CNAME records, which can be managed centrally by the CDN service provider  106  or locally at the POP  116 ,  122 . 
     Returning to  FIG.  5 A , one skilled in the relevant art will appreciate that DNS server component  118  may select (or otherwise obtain) a CNAME record that is intended resolve to a more appropriate DNS server of the CDN service provider  106  based one or more criteria, as described above. Then, the CDN service provider  106  returns the CNAME record to the client computing device  102 . 
     With reference now to  FIG.  5 B , upon receipt of the CNAME from the DNS server component  118 , the client computing device  102  generates a subsequent DNS query corresponding to the CNAME. As previously discussed with regard to  FIG.  5 A , the DNS query process could first start with DNS queries for the “.” and “com” portions, followed by a query for the “cdnprovider” portion of the CNAME. To the extent, however, that the results of a previous DNS queries can be cached (and remain valid), the client computing device  102  can utilize the cached information and does not need to repeat the entire process. However, at some point, depending on whether the CNAME provided by DNS server component  118  ( FIG.  5 A ) and the previous URL or CNAME share common CDN service provider domains, the current CNAME DNS query will be processed by a different POP provided by the CDN service provider  106 . As illustrated in  FIG.  5 B , the DNS server component  124  of POP  122  receives the current CNAME based on the different information in the current CNAME previously provided by the DNS server component  118 . As previously described, the DNS server component  124  can then determine whether to resolve the DNS query on the CNAME with an IP address of a cache component that will process the content request or whether to provide another alternative resource identifier selected in the manners described above. 
     For purposes of illustration, assume that the DNS server component  124  processes the content request by returning an IP address of a resource cache component. In an illustrative embodiment, the DNS server component  124  can utilize a variety of information in selecting a resource cache component. In one example, the DNS server component  124  can default to a selection of a resource cache component of the same POP. In another example, the DNS server components can select a resource cache component based on various load balancing or load sharing algorithms. Still further, the DNS server components can utilize network performance metrics or measurements to assign specific resource cache components. The IP address selected by a DNS server component may correspond to a specific caching server in the resource cache. Alternatively, the IP address can correspond to a hardware/software selection component (such as a load balancer). 
     With reference now to  FIG.  6   , continuing with an illustrative embodiment corresponding to  FIGS.  5 A and  5 B , assume that the DNS server component  124  shown in  FIG.  5 B  has selected the default resource cache component  126  of the POP  122 . Upon receipt of the IP address for the resource cache component  126 , the client computing device  102  transmits, as shown in  FIG.  6   , a request for the requested content to the resource cache component  126 . The resource cache component  126  processes the request in a manner described above and the requested content is transmitted to the client computing device  102 . 
     Alternatively, in another embodiment corresponding to  FIG.  4   , assume that the DNS server component  118  has selected a specific resource cache component of another POP, such as POP  122  based on the one or more criteria as described above. Upon receipt of the IP address for the resource cache component  126  of the POP  122 , the client computing device  102  transmits, as shown in  FIG.  6   , a request for the requested content to the resource cache component  126 . The resource cache component  126  processes the request in a manner described above and the requested content is transmitted to the client computing device  102 . 
     A selected resource cache component (either selected directly by a POP receiving a DNS query as shown in  FIG.  4    or as a default upon selection of an alternative POP via an alternative resource identifier as shown in  FIGS.  5 A and  5 B ) can process the request by either providing the requested resource if it is available or obtaining the requested resource from another source, such as a peer cache server computing device or the origin server  112  of the content provider  104 . 
     With reference now to  FIG.  7   , one embodiment of a POP selection routine  702  implemented by the CDN provider  106  will be described. One skilled in the relevant art will appreciate that actions/steps outlined for routine  702  may be implemented by one or many computing devices/components that are associated with the CDN service provider  106 . Accordingly, routine  702  has been logically associated as being generally performed by the CDN service provider  106 , and thus the following illustrative embodiments should not be construed as limiting. 
     At block  704 , a DNS server component  118  at a first POP  116  of the CDN service provider  106  receives a DNS query corresponding to a resource identifier from a client computing device  102 . As previously discussed, the resource identifier can be a URL that has been embedded in content requested by the client computing device  102  and previously provided by the content provider  104 . Alternatively, the resource identifier can also correspond to a CNAME provided by a content provider DNS server in response to a DNS query previously received from the client computing device  102 . While not illustrated, the receiving DNS server also obtains, in some embodiments, an IP address associated with the DNS query from the requesting client computing device  102  (“query IP address”). The query IP address can correspond to an IP address of the client computing device or any local DNS resolver component associated with the client computing device. 
     Next, at decision block  706 , the CDN service provider  106  determines whether it has exceeded a threshold content delivery bandwidth at the first POP. As discussed above, the threshold content delivery bandwidth is determined based, at least in part, on CDN service provider cost information, which corresponds to a financial cost to the CDN service provider  106  for content delivery bandwidth. In particular, in one embodiment, assuming that the first POP, or more specifically the DNS server component at the first POP, receiving the DNS query is the optimal POP or DNS server component for processing the DNS query, this determination at block  706  corresponds to a determination of whether the resource cache component at the POP receiving the DNS query (which can correspond to either a single cache server or a bank of cache servers at the POP) is operating above a threshold content delivery bandwidth. Continuing with this embodiment, the resource cache component at the first POP can also be referred to as the default or optimal resource cache component. In a further illustrative embodiment, the threshold content delivery bandwidth is lower than a maximum available content delivery bandwidth for the first POP or resource cache component. 
     If the first POP or resource cache component has not exceeded its threshold content delivery bandwidth, the CDN service provider  106  responsively provides the client computing device  102  with an IP address of the default or optimal resource cache component at the first POP at block  708 . Thereafter, at block  716 , routine  702  ends. Alternatively, if at decision block  706 , the first POP or resource cache component has exceeded its threshold content delivery bandwidth (which may be indicative, for example, of the CDN service provider  106  incurring additional financial costs to provide the requested content from the first POP or its default resource cache component), the CDN service provider  106  determines whether a content provider corresponding to a domain associated with the DNS query has exceeded a threshold network usage at block  710 . 
     If the content provider has not exceeded its threshold network usage, the CDN service provider  106  responsively provides the client computing device  102  with an IP address of the default or optimal resource cache component of the first POP at block  710 . Thereafter, at block  716 , routine  702  ends. Alternatively, if at decision block  710 , the content provider has exceeded its threshold network usage (which may be indicative, for example, of the CDN service provider incurring the burden of additional financial costs above a pricing structure, such as a flat fee structure, offered to the content provider), processing continues at block  712 . As described above, in an illustrative embodiment, the threshold network usage is determined based, at least in part, on pricing information for the CDN provider to provide content on behalf of the content provider. 
     While the routine  702  illustrates making both determinations at blocks  706  and  710 , in another embodiment, the determination at block  706  may be optional, while in a yet further alternative embodiment, the determination at block  710  may be optional. 
     Continuing at block  712 , if either or both of the determinations at blocks  706  and  710  result in a “YES” determination, the CDN service provider  106  selects an alternative resource identifier associated with an alternative POP of the CDN service provider  106  or an alternative cache IP address associated with an alternative POP. In particular, in one illustrative embodiment, where an alternative resource identifier is selected, the CDN service provider  106  more specifically selects an alternative resource identifier which would resolve to a particular alternative DNS server at the alternative POP. In another illustrative embodiment, where an alternative cache IP address is selected, the CDN service provider  106  may select an alternative cache IP address for a particular cache server of a resource cache component at the alternative POP or generally for a group of cache servers at the alternative POP. In this way, the CDN service provider  106  directs further processing of the request to an alternative POP of the CDN service provider. 
     Next, at block  714 , the selected alternative resource identifier or alternative cache IP address is transmitted to the client in response to the obtained DNS query for further processing. Thereafter, at block  716 , routine  702  ends. In various embodiments, routine  702  may be performed by the CDN service provider  106  generally, or by DNS server components  118 ,  124  or individual DNS servers associated with the DNS server components  118 , 124 . The CDN service provider  106 , DNS server components  118 ,  124 , or individual DNS servers associated with the DNS server component  118 ,  124  may themselves include or otherwise access a service to implement the routine  702 , such as the routing mode and POP selection service  128  of  FIG.  1   . In other embodiments, a physical computing device with computer executable instructions may cause the computing device to perform routine  702 . In some embodiments of the routine  702 , elements may occur in sequences other than as described above. In addition, as noted above, some elements of the routine may be optional, such as the determinations at either block  706  or  710 . One skilled in the art will appreciate that additional variations are possible and within the scope of the present disclosure. 
     With reference now to  FIG.  8   , one embodiment of a routing mode selection routine  802  will be described. One skilled in the relevant art will appreciate that actions/steps outlined for routine  802  may be implemented by one or many computing devices/components that are associated with the CDN service provider  106 . Accordingly, routine  802  has been logically associated as being generally performed by the CDN service provider  106 , and thus the following illustrative embodiments should not be construed as limiting. 
     At block  804 , a DNS server component  118  at a first POP  116  of the CDN service provider  106  receives a DNS query corresponding to a resource identifier from a client computing device  102 . As previously discussed, the resource identifier can be a URL that has been embedded in content requested by the client computing device  102  and previously provided by the content provider  104 . Alternatively, the resource identifier can also correspond to a CNAME provided by a content provider DNS server in response to a DNS query previously received from the client computing device  102 . While not illustrated, the receiving DNS server also obtains, in some embodiments, an IP address associated with the DNS query from the requesting client computing device  102  (“query IP address”). The query IP address can correspond to an IP address of the client computing device or any local DNS resolver component associated with the client computing device. 
     Next, at block  806 , the CDN service provider  106  responsively determines a routing mode for the response to the DNS query obtained at block  804 . In some embodiments, this determination can be made during DNS query processing as described above with reference to  FIGS.  4 - 5 B . In various embodiments, a spectrum of routing modes can exist that the CDN service provider  106  may determine during DNS query processing (e.g., at the DNS server when the DNS query is obtained). A plurality of available routing modes can include: a default routing mode, a sloppy routing mode, a regional anycast routing mode, and an anycast routing mode. The one or more criteria used in DNS query processing can be used to determine the routing mode for providing the requested resource. Accordingly, the response to the DNS query can be transmitted and/or provided to the client  102  in accordance with the determined routing mode. 
     With continuing reference to block  806 , the CDN service provider can determine an appropriate routing mode for providing the requested resource. As discussed previously with reference to  FIG.  4    and in accordance with the present disclosure, appropriateness can be defined in any manner by the CDN service provider  106  for a variety of purposes. Illustratively, the one or more criteria used to determine the routing mode can include a susceptibility factor (also referred to as security factor) and the latency criteria discussed above with reference to  FIG.  4   . In various embodiments, the determination of an appropriate routing mode from a spectrum of routing modes can be based at least in part on a tradeoff between a susceptibility factor of a routing mode and the latency for providing the requested resource with the routing mode. For example, in one embodiment, the default routing mode can be determined as the appropriate routing mode. The determination of the optimal cache server may be a default based on the DNS query already being routed to the optimal POP and received at the DNS server component  118 . The DNS server component  118 , then, simply provides an IP address of an associated cache server at that POP. Alternatively, the DNS server component, upon receiving the DNS query, may be associated with a cache server component, and then selects from one of the cache servers of resource cache component  120  that may be the logically closest. Accordingly, in various embodiments, the default routing mode can also be referred to as a latency-based routing mode (e.g., a routing mode that provides an optimal cache server, minimizing latency when providing the requested resource). Still further, in another embodiment, this latency-based routing mode can be referred to as a minimal latency-based routing mode that minimizes the latency when providing the requested resources on behalf of the content provider  104 . As one of skill in the art can appreciate, these examples illustrate how the default routing mode can offer an optimal cache server at the POP location receiving the DNS query or route the response to a DNS query using a cache IP address associated with an optimal cache server. While this optimal cache server minimizes latency, this default routing mode may, however, provide less security. But, at the same time, this default routing mode may provide less security because a single specific cache server is typically the optimal cache server and thus may have a higher susceptibility factor given those security concerns. For example, in one embodiment, because the optimal cache server is associated with a pre-specified IP address, the specific IP address could be leaked or easily discernible to outside parties, which raises the security concerns associated with that optimal cache server. 
     In contrast, the anycast routing mode uses a selected anycast IP address (e.g., a cache IP address or destination IP address) to process resource requests. An anycast IP address (e.g., a global IP address that may be randomly assigned to available cache servers) can be associated or shared by several cache servers that can provide the requested resource. Because several cache servers can service the requested resource, the susceptibility factor of the anycast routing mode is lower than the default routing mode. For example, by providing a DNS server component at the CDN service provider with an option to determine an appropriate routing mode in which to respond to a DNS query, the DNS server component may select the anycast routing mode to provide enhanced security, as compared to the default routing mode. Such a determination offers enhanced security because an original cache server that would service the resource request in a default routing mode can be quickly changed to a secondary cache server (e.g., another cache server) associated with a shared anycast IP address (e.g., a randomly assigned global IP address), if a security concern is discovered to be associated with the POP or DNS server component receiving the DNS query, and hence the original default cache server corresponding to that POP. But, at the same time, such a secondary cache server can be more geographically distant (e.g., traveling through intercontinental optical cables) from the client  102 , and thus incurring a higher latency, especially when compared with the default routing mode that uses the optimal cache server. In one embodiment, the anycast routing mode, as discussed herein, may correspond to traditional anycast routing as known to those of skill in the art. 
     In another embodiment of determining the appropriate routing mode at block  806 , a content provider can be assigned a susceptibility factor that relates to the security concerns of each available routing mode. For example, a content provider  104  (e.g., a customer of the CDN service provider  106 ) that has its content typically served by the CDN service provider  106  in a geographical location (e.g., region with less security) can have an increased susceptibility factor in a default routing mode. Instead, the anycast routing mode can be determined as the appropriate routing mode to offer enhanced security as an anycast IP address is associated with several cache servers via randomly assigned global IP address. Thus, in contrast to a specific optimal cache server associated with a pre-specified IP address that may be leaked, there are many available cache servers in the anycast routing mode for providing responsive content which are not individually designated and hence specifically targeted. Accordingly, the susceptibility factors may bias the determination of the appropriate routing mode in favor of the anycast routing mode because the anycast routing mode can provide enhanced security. In contrast, a default cache IP address stored at a DNS server may be more easily discernible as it is individually pre-designated. 
     In another example, a regional anycast routing mode can be determined as the appropriate routing mode, at block  806 . In some embodiments, the CDN service provider  106  may consider the security factor like the anycast routing mode, but additionally consider the latency factor. This can be undertaken when the one or more criteria indicate that a susceptibility factor is to be associated with the plurality of available routing modes, but also the latency factor associated with the plurality of available routing modes. Continuing in this example, the regional anycast routing mode can be used to route the response to the DNS query so that several cache servers are available with a regional IP address (e.g., a regional IP address can be randomly assigned and associated with several cache servers in a region) used to service the request, thereby enhancing security. This determination can be made dynamically at the DNS server component  118  or it can have been considered by a central computing component of the CDN service provider  106 , which, in turn, provides a list of available cache servers from which the DNS server component  118  can select from. Thus, the one or more criteria can in part dictate, or de facto, determine a routing mode for providing the requested resource. 
     In another example, a particular DNS resolver may service a diverse set of client computing devices  102 , such as clients that are located in multiple different geographic regions. Such a resolver is hereinafter referred to as a diverse DNS resolver. In this example, since the clients are geographically diverse, some clients&#39; resource requests may experience more latency than others being serviced by the same DNS resolver. With this information, the CDN service provider  106  may determine that a regional anycast routing mode may be the appropriate routing mode for providing the requested resource at block  806 . The regional anycast routing mode corresponds to a modified version of an anycast routing mode which utilizes a one-to-many network routing schema, but in this instance the one-to-many network routing schema is limited by region, such as a geographic region. In particular, a regional one-to-many network routing schema provides that a specific POP, DNS server component  118 , or resource cache component in a particular region will receive the request as a function of network topology in that region. For example, in a regional anycast implementation, a request issued by a client computing device  102  to a shared IP address will arrive at a POP, DNS server component  118 , or resource cache component logically having the shortest network topology distance, often referred to as network hops, from the client computing device. The network topology distance does not necessarily correspond to geographic distance. However, in some embodiments, the network topology distance can be inferred to be the shortest network distance between a client computing device  102  and a POP, DNS server component, or resource cache component. 
     As a further specific example, the regional anycast routing mode can involve the selection of a cache IP address from a grouping or list of cache IP addresses or anycast node locations that are located within a certain geographical and/or regional location of the nodes (e.g., U.S. East Coast, U.S. West Coast, Canada, or Southeast Asia). In other embodiments, the CDN service provider  106  can select a cache IP address from a list of IP addresses that are associated with a location of nodes in a region specified by the CDN service provider  106 . Accordingly, the CDN service provider  106  can specify certain nodes located in one geographical area (e.g., U.S. West Coast). In some embodiments, such a list may not include an IP address that is deemed unsecure (e.g., an IP address corresponding to a cache server that, due to security concerns, cannot provide requested resources). For example, in some embodiments, financial content such as credit card information may need to be routed with a routing mode offering higher security. In other embodiments, an unsecure IP address may be an anycast IP address that has been leaked, thereby making security a concern for that particular IP address. 
     In yet another example of determining the appropriate routing mode at block  806 , the CDN service provider  106  may select a sloppy routing mode. As further described above, a sloppy routing mode can be used to service content requests from a suboptimal POP if, for example, if the original provider of the specifically requested content (e.g., the original content provider for that content) has exceeded a threshold network usage or if the CDN service provider  106  has exceeded a threshold content delivery bandwidth at data links of cache servers servicing requests for content originally provided by the content provider  104 . Accordingly, in various embodiments, the determined routing mode can be the sloppy routing mode. 
     In one embodiment, as described above, the response to a DNS query utilizing this sloppy routing approach can be either: an alternative resource identifier (e.g., a CNAME) associated with an alternative DNS component at an alternative POP of the CDN service provider or an IP address of a resource cache component (e.g., a cache server) at the alternative POP (e.g., second POP  122 ). In this approach, the response to the DNS query may be routed to one of several cache servers that may be available at the alternative POP (or even several alternative POPs). In addition, in this embodiment, because the response to the DNS query may be routed to one of several cache servers at the alternative POP, the sloppy routing mode can enhance security because several cache servers are available, rather than one cache server (e.g., the optimal cache server that minimizes latency). In contrast to a default routing mode that may only route the response to a DNS query to one cache server (e.g., a default and/or optimal cache server that can minimize the latency in providing the requested resource) at the POP that received the DNS query, the slopping routing mode can provide enhanced security by routing the response to the DNS query to an alternative cache server at an alternative POP. Further, the sloppy routing mode selection allows the CDN service provider  106  to allocate or direct the response of the DNS query within the network of the CDN service provider  106 , for example, to an alternative POP (e.g., second POP  122 ), which may minimize latency in servicing the resource request when compared to an anycast routing mode. Thus, the CDN service provider  106  can minimize latency by analyzing the request handling capacity of alternative POPs available to provide the requested resource. Accordingly, a sloppy routing mode selection can take into account both minimizing the latency when providing the requested resource and a susceptibility factor by providing enhanced security when providing the requested resource. 
     In various embodiments, information stored in pricing data store  130  can also be used as the one or more criteria to determine an appropriate routing mode. For example, one pricing structure may dictate that a flat-rate price is available for the default routing mode, a flat-rate price is available for the sloppy routing mode, and another flat-rate price is available for the regional anycast routing mode. Using this data from pricing data store  130  and the network usage, the back-end processing service  132  can determine whether a content provider  104  has exceeded their threshold network usage for a particular routing mode at a particular pricing structure. As one of skill in the art can appreciate, various routing modes are available when the one or more criteria are used in combination with a pricing structure (e.g., a price at which the CDN service provider  106  provides content on behalf of the content provider  104 ). For example, a content provider  104  can pay more for the CDN service provider  106  to determine whether a more secure routing mode is available for certain resource requests (e.g., resource requests with financial information). In this example, the back-end processing service  132  can determine that a regional anycast routing mode is available with less latency than an anycast routing mode, but also with more security than a default routing mode because the susceptibility factor of the DNS cache server servicing a particular content provider  104  is high. 
     In addition to the example criteria noted above, the one or more criteria can also include utilizing information obtained from the DNS query, at least in part, to identify the more appropriate routing mode. This information may include a domain associated with the content provider  104 . This information may also include client subnet information associated with content provider  104 . This information can be used to determine the routing mode. 
     Next, at block  808 , in response to the obtained DNS query, the selected alternative resource identifier or selected cache IP address is transmitted to the client in accordance with the determined routing mode. For example, if the determined routing mode is the regional anycast routing mode, the selected IP cache address (e.g., selected from a list of IP addresses associated with a location of nodes in a region specified by the CDN service provider  106 ) can be provided and/or transmitted to the client  102  in accordance with the regional anycast routing mode. Thus, an IP address can be selected that is associated with a location of nodes on the US West Coast for example. Thereafter, at block  810 , routine  802  ends. 
     In various embodiments, routine  802  may be performed by the CDN service provider  106  generally, or by DNS server components  118 ,  124  or individual DNS servers associated with the DNS server components  118 , 124 . The CDN service provider  106 , DNS server components  118 ,  124 , or individual DNS servers associated with the DNS server component  118 ,  124  may themselves include or otherwise access a service to implement the routine  802 , such as the routing mode and POP selection service  128  of  FIG.  1   . In other embodiments, a physical computing device with computer executable instructions may cause the computing device to perform routine  802 . In some embodiments of the routine  802 , elements may occur in sequences other than as described above. One skilled in the art will appreciate that additional variations are possible and within the scope of the present disclosure. 
     With reference now to  FIG.  9   , an alternative embodiment of a POP selection routine  902  will be described. One skilled in the relevant art will appreciate that actions/steps outlined for routine  902  may be implemented by one or many computing devices/components that are associated with the CDN service provider  106 . Accordingly, routine  902  has been logically associated as being generally performed by the CDN service provider  106 , and thus the following illustrative embodiments should not be construed as limiting. 
     At block  904 , a DNS server component  118  at a first POP  116  of the CDN service provider  106  receives a DNS query corresponding to a resource identifier from a client computing device  102 . As previously discussed, the resource identifier can be a URL that has been embedded in content requested by the client computing device  102  and previously provided by the content provider  104 . Alternatively, the resource identifier can also correspond to a CNAME provided by a content provider DNS server in response to a DNS query previously received from the client computing device  102 . While not illustrated, the receiving DNS server also obtains, in some embodiments, an IP address associated with the DNS query from the requesting client computing device  102  (“query IP address”). The query IP address can correspond to an IP address of the client computing device or any local DNS resolver component associated with the client computing device. 
     Next, at decision block  906 , the CDN service provider  106  determines whether a content provider  104  corresponding to a domain associated with the DNS query is available. For example, the content provider  104  may be available if the content provider  104  has available network usage (e.g., network usage not exceeding a threshold network usage) or if no security concerns exist with providing content of the content provider. However, the content provider  104  may not be available if the content provider  104  has exceeded a threshold network usage or if security concerns exist regarding the provision of content originally provided by the content provider  104 . For example, a cache server at the resource cache component  120  that is providing requested resources in accordance with a default routing mode for the content provider  104  may be unavailable due to security concerns associated with providing content of the content provider  104 . In other embodiments, a content provider  104  may be physically located in a region or location more susceptible to security concerns and thus can have an increased susceptibility factor associated with the default routing mode. Accordingly, the optimal cache server, physically located in that same region or location, that is providing requested resources in accordance with a default routing mode for a particular content provider  104  may be unavailable due to security concerns associated with providing content of that particular content provider  104 . In one embodiment, the CDN service provider  106  can determine the susceptibility factor for the content provider  104  associated with each available routing mode of a plurality of routing modes. In the depicted alternative embodiment of the POP selection routine  902 , the available routing modes are: the default routing mode, the sloppy routing mode, and the anycast routing mode. 
     If the content provider  104  is available (i.e., the CDN service provider determines that content originally provided by the content provider  104  is available to be provided based on one or more criteria), the CDN service provider  106 , responsive to the DNS query, provides and transmits to the client computing device  102  an IP address of the default or optimal resource cache component of the first POP at block  908 in accordance with the default routing mode. In this embodiment, the resource cache component at the first POP can also be referred to as the default or optimal resource cache component. Thereafter, at block  918 , routine  902  ends. Alternatively, if at decision block  906 , the content provider is not available, processing continues at decision block  910 . 
     At decision block  910 , the CDN service provider  106  determines whether an alternative POP is available. This decision can include determining an appropriate routing mode from the remaining available routing modes: the sloppy routing mode and the anycast routing mode. For example, as described above with reference to  FIG.  8   , an alternative POP may be available if a list of IP addresses at the DNS server  118  includes alternative cache IP addresses associated with alternative POPs. If an alternative POP is not available (e.g., because the list of IP addresses does not include alternative POP locations or cache IP addresses associated with alternative POPs), at block  912 , the CDN service provider  106  responsively provides and transmits to the client computing device  102  an IP address in accordance with the anycast routing mode. In another embodiment not depicted in  FIG.  9   , the CDN service provider  106  responsively provides and transmits to the client computing device  102  an IP address in accordance with the regional anycast routing mode. In this embodiment, the IP address can be selected in accordance with the determined routing mode as described above with reference to  FIG.  8   . Thereafter, at block  918 , routine  902  ends. 
     While the routine  902  illustrates making both determinations at blocks  906  and  910 , in another embodiment, the determination at block  906  may be optional; while in a yet further alternative embodiment, the determination at block  910  may be optional. For example, in various embodiments, routine  902  can proceed from decision block  906 , if the content provider is not available, to block  912 , where the CDN service provider  106  responsively provides and transmits to the client computing device  102  an IP address in accordance with the anycast routing mode. Or, in another optional embodiment not depicted in  FIG.  9   , the CDN service provider  106  can responsively provide and transmit to the client computing device  102  an IP address in accordance with the regional anycast routing mode. 
     Continuing at block  914 , if the content provider is not available at decision block  906  and an alternative POP is available at block  910 , the CDN service provider  106  selects an alternative resource identifier associated with an alternative POP of the CDN service provider  106  or an alternative cache IP address associated with an alternative POP. In particular, in one illustrative embodiment, where an alternative resource identifier is selected, the CDN service provider  106  more specifically selects an alternative resource identifier which would resolve to a particular alternative DNS server at the alternative POP. In another illustrative embodiment, where an alternative cache IP address is selected, the CDN service provider  106  may select an alternative cache IP address for a particular cache server of a resource cache component at the alternative POP or generally for a group of cache servers at the alternative POP. In this way, the CDN service provider  106  directs further processing of the request to an alternative POP of the CDN service provider. 
     Next, at block  916 , in response to selecting either an alternative resource identifier or an alternative cache IP address at block  914 , the selected alternative resource identifier or alternative cache IP address is transmitted to the client in response to the obtained DNS query for further processing in accordance with the sloppy routing mode. Thereafter, at block  918 , routine  902  ends. 
     In various embodiments, routine  902  may be performed by the CDN service provider  106  generally, or by DNS server components  118 ,  124  or individual DNS servers associated with the DNS server components  118 , 124 . The CDN service provider  106 , DNS server components  118 ,  124 , or individual DNS servers associated with the DNS server component  118 ,  124  may themselves include or otherwise access a service to implement the routine  902 , such as the routing mode and POP selection service  128  of  FIG.  1   . In other embodiments, a physical computing device with computer executable instructions may cause the computing device to perform routine  902 . In some embodiments of the routine  902 , elements may occur in sequences other than as described above. In addition, as noted above, some elements of the routine may be optional, such as the determinations at either block  906  or  910 . One skilled in the art will appreciate that additional variations are possible and within the scope of the present disclosure. 
     Depending on the embodiment, certain acts, events, or functions of any of the methods described herein can be performed in a different sequence, can be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the algorithm). Moreover, in certain embodiments, acts or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially. 
     The various illustrative logical blocks, modules, and method elements described in connection with the embodiments disclosed herein can be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure. 
     The various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor can be a microprocessor, but in the alternative, the processor can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. 
     The elements of a method, process, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of computer-readable storage medium known in the art. A storage medium can be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor. The processor and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor and the storage medium can reside as discrete components in a user terminal. 
     Conditional language used herein, such as, among others, “can,” “might,” “may,” “e.g.” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or states. Thus, such conditional language is not generally intended to imply that features, elements and/or states are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without author input or prompting, whether these features, elements and/or states are included or are to be performed in any particular embodiment. The terms “comprising,” “including,” “having,” “involving” and the like are synonymous and are used inclusively, in an open-ended fashion, and do not exclude additional elements, features, acts, operations and so forth. Also, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list. 
     Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y or at least one of Z to each be present. 
     Unless otherwise explicitly stated, articles such as “a” or “an” should generally be interpreted to include one or more described items. Accordingly, phrases such as “a device configured to” are intended to include one or more recited devices. Such one or more recited devices can also be collectively configured to carry out the stated recitations. For example, “a processor configured to carry out recitations A, B, and C” can include a first processor configured to carry out recitation A working in conjunction with a second processor configured to carry out recitations B and C. 
     While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it will be understood that various omissions, substitutions, and changes in the form and details of the devices or algorithms illustrated can be made without departing from the spirit of the disclosure. As will be recognized, certain embodiments described herein can be embodied within a form that does not provide all of the features and benefits set forth herein, as some features can be used or practiced separately from others. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.