Aspects of the disclosure are related to the field of packet communication networks and delivery of content from a source server to cache nodes.
Internet web pages, online information, and media content such as audio, video, photographs, and the like are requested and delivered to end users via computer network systems. Requests for the content are sent over the network to a source server, processed, and the content is delivered to the end user via the network. The source server can include origin or hosting servers which originally host the network content. Unfortunately, a single source server may not be able to serve a large number of concurrent requests for content. In addition, the requesting server may be distant geographically or network routing-wise from the source server. This can slow the process of delivering content to the point where users are dissatisfied, or abandon the request for content.
To address this problem, content delivery networks were developed. Content delivery networks cache content from a source server (a.k.a. origin server) for more rapid and reliable delivery to end users. A content delivery network may have many content nodes (up to thousands) distributed across a large geographic area (or network routing area) in order to provide faster, lower latency, and more reliable access to content for the end users, regardless of their geographic or network location.
The content delivery process typically begins with a user submitting a request to a browser. When a user enters a uniform resource locator (URL), a domain name system (DNS) request is triggered and an IP address is retrieved. In some content delivery network structures, the domain name of the URL is translated by a mapping system into the IP address of cache node, which can have the content cached locally, to serve the content to the user. If the content is cached by the cache node, the cache node can directly service the end user's request. If the content is not cached in the cache node, or the content from the origin server is out-of-date or stale, the cache node can receive the content from the origin server and cache it. Once cached, the cache node can typically provide the content quickly.
A cache node, however, may become overloaded. This can cause the content to be provided more slowly than is required or desired. Accordingly, one or more of the advantages and functions of a content delivery network can be disrupted by one or more overloaded cache nodes.
In an embodiment, a method of operating a content delivery network, includes receiving, at a control node, content requests issued by end user devices for content cached at a plurality of points-of-presence (POPs). Each of the point-of-presences include a plurality of cache nodes to serve content requests. At the control node, a first content request issued by a first end user device for first content cached by the content delivery network is received. Based on load indicators associated with each POP, the control node selectes a first POP to provide delivery of the first content on behalf of a content provider associated with the first content.
In an embodiment, a content delivery network (CDN) includes a set of presence points. These presence points comprise a plurality of cache nodes (CN) at each presence point to provide content delivery on behalf of a set of participating content providers. The set of content providers source content for delivery by the CDN from at least one origin server. A control node receives content requests issued by end user devices for content cached by the CDN. The control node selects, from among the plurality of cache nodes, respective cache nodes to provide content delivery in response to the corresponding content requests.
Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the views. While multiple examples are described in connection with these drawings, the disclosure is not limited to the examples disclosed herein. On the contrary, the intent is to cover all alternatives, modifications, and equivalents.
In an embodiment, requests for content cached by a content delivery network (CDN) are received by a content delivery network-wide (a.k.a., central) control node. This central control node distributes the requests to cache nodes (CNs) to provide the requested content. The central control node serves as a centralized distribution point for content requests. The central control node may distribute requests based on the load at the point-of-presences (POPs) and/or the load on cache nodes regardless of their geographic location.
In an embodiment, each point-of-presence also has a control node to distribute requests sent to the point-of-presence. These POP control nodes distribute the requests received from a global control node to the cache nodes at that POP.
Each of cache nodes 121-126 can include one or more computer systems or servers. Each of cache nodes 121-126 can include one or more data storage systems. End user devices 130-132 are representative of a plurality of end user devices which can request and receive network content, and any number of end user devices 130-132 can be associated with each of cache nodes 121-126. Cache nodes 121-126 and end users 130-132 communicate over network links. Control node 150 and end users 130-132 communicate over network links. Control node 150 and POPs 141-143 communicate over network links. Control node 150 and cache nodes 121-126 communicate over network links. Although not shown in
To further illustrate
In an embodiment, control node 150, receives content requests issued by end user devices 130-132 for content cached at POPs 141-143. These content requests will be processed and served by a POP 141-143 and/or cache node 121-126 selected by control node 150. In other words, when a content request issued by an end user device (e.g., end user device 130) for content cached by the content delivery network 110 is received by control node 150, control node 150 selects a POP 141-142 to serve this request. This is illustrated in
POPs 141-143 and/or cache nodes 121-126 may provide control node 150 with load indicators. Alternatively, end user devices 130-132 can provide control node 150 with load indicators. These load indicators may correlate to a performance level that a particular POP 141-143 can provide content to an end user device 130-132. These load indicators may correspond to correlate to a performance level that a particular cache node 121-126 can provide content to an end user device 130-132.
In an embodiment, one or more of these load indicator may correspond a latency caused by the POP 141-143 and/or cache node 121-126—e.g., the time taken by a particular POP 141-143 and/or a particular cache node 121-126 to provide content in response to a content request issued by end user device 130-132. In an embodiment, one or more of these load indicator may correspond a latency caused by the network carrying the content and corresponding request(s) between the user device 130-132 and a particular POP 141-143 and/or a particular cache node 121-126. In an embodiment, one or more of these load indicator may correspond to a response time by the POP 141-143 and/or cache node 121-126—i.e., the time taken by a particular POP 141-143 and/or a particular cache node 121-126 to retrieve and supply content to the network in response to a content request issued by end user device 130-132. In an embodiment, one or more of these load indicator may correspond to a load being experienced by a particular POP 141-143 and/or a particular cache node 121-126—e.g., a number of clients presently served by a particular POP 141-143 and/or a particular cache node 121-126; the number of requests being serviced by a particular POP 141-143 and/or a particular cache node 121-126; and/or a data load on a particular POP 141-143 and/or a particular cache node 121-126 (e.g., media content vs. text/html content).
In an embodiment, one or more of these load indicator may correspond to a data subsystem loading/network subsystem loading of cache nodes 121-126, and/or the corresponding POP 141-143 itself. In an embodiment, one or more of these load indicators may correspond to wide-area network loading. In other words, a first POP 141-143 in a first network area (e.g., geographical area, routing region, backbone, etc.) with less network load may be able to respond with less latency than a second POP 141-143 that is associated with a different network area. In an embodiment, one or more of these load indicators may correspond to usage patterns. For example, at certain times of the day/week/etc., a POP 141-143 that is busy during business hours may perform with greater latency (i.e., slower) than a less busy POP 141-143--even though the less busy POP 141-143 is farther away (geographically or network-wise) from the user device 121-126.
In an embodiment, the load indicators may correspond to a particular POP 141-143 and/or a particular cache node 121-126 performance responding to certain types of content requests. In other words, a particular POP 141-143 and/or a particular cache node 121-126 may respond relatively better to video content requests than other POPs 141-143 and/or other cache nodes 121-126.
In an embodiment, based on one or more of these load indicators, control node 150 selects a POP 141-143 to provide delivery of the content. In another embodiment, based on the one or more of load indicators, control node 150 selects a cache node 121-126 to provide delivery of the content.
The load indicators associated with a particular POP 141-143 may be based on load indicators associated with the cache nodes 121-126 at that respective POP 141-143. In other words, one or more load indicators provided to control node 150 may be associated with, for example, POP 141. These load indicators may also be associated with a load on one or more of cache nodes 121-122 that are at POP 141. Accordingly, the load indicators associated with the load on one or more of cache nodes 121-122 may be used by control node 150 to select a particular one of cache nodes 121-122 to provide delivery of the selected content.
Cache nodes 121-126, POPs 141-142, cache nodes 121-126, and control node 150 can each include communication interfaces, network interfaces, processing systems, computer systems, microprocessors, storage systems, storage media, or some other processing devices or software systems, and can be distributed among multiple devices. Examples of cache nodes 121-126, POPs 141-142, cache nodes 121-126, and control node 150 can each include software such as an operating system, logs, databases, utilities, drivers, networking software, and other software stored on a computer-readable medium. Content delivery network 110, in addition to including cache nodes 121-126, can include equipment and links to route communications between cache nodes 121-126 and any of end user devices 130-132, POPs 141-142, and control node 150, among other operations.
End user devices 130-132 can each be a user device, subscriber equipment, customer equipment, access terminal, smartphone, personal digital assistant (PDA), computer, tablet computing device, e-book, Internet appliance, media player, game console, smartwatch, or some other user communication apparatus, including combinations thereof.
Communication links between elements of communication system 100 can each use metal, glass, optical, air, space, or some other material as the transport media. These communication links can each use various communication protocols, such as wireless communications, cellular communications, IEEE 802.11 (WiFi), Long Term Evolution (LTE), Time Division Multiplex (TDM), asynchronous transfer mode (ATM), Internet Protocol (IP), Ethernet, synchronous optical networking (SONET), hybrid fiber-coax (HFC), circuit-switched, communication signaling, or some other communication format, including combinations, improvements, or variations thereof. Communication links can each be a direct link or can include intermediate networks, systems, or devices, and can include a logical network link transported over multiple physical links. Although only one link for is shown in
At the control node, a first content request issued by a first end user device for content cached by the content delivery network is received (204). For example, control node 150 may receive a request from end user device 130 for content cached by CDN 110. Based on load indicators associated with presence point, a first presence point is selected to provide delivery of the requested content (206). For example, control node 150 may select POP 141 to provide delivery of the content requested by end user device 130. In an embodiment, after POP 141 is assigned to provide the requested content, POP 141 provides this content directly to end user device 130 without sending the content via control node 150—even though control node 150 is where the request from end user device 130 was initially routed.
In an embodiment, one or more of these load indicator may correspond a latency caused by the POP 340-342. In an embodiment, one or more of these load indicator may correspond a latency caused by the network carrying the content and corresponding request(s) between the user device 330 and a particular POP 340-342. In an embodiment, one or more of these load indicator may correspond to a response time by the POP 340-342. In an embodiment, one or more of these load indicator may correspond to a load being experienced by a particular POP 340-342—e.g., a number of clients presently served by a particular POP 340-342; the number of requests being serviced by a particular POP 340-342; and/or a data load on a particular POP 340-342 (e.g., and amount of media content vs. text/html content).
In an embodiment, one or more of these load indicator may correspond to a data subsystem loading/network subsystem loading of cache nodes within a POP 340-342, and/or the corresponding POP 340-342 itself. In an embodiment, one or more of these load indicators may correspond to wide-area network loading. In other words, a first POP 340-342 in a first network area (e.g., geographical area, routing region, backbone, etc.) with less network load may be able to respond with less latency than a second POP 340-342 that is associated with a different network area. In an embodiment, one or more of these load indicators may correspond to usage patterns. For example, at certain times of the day/week/etc., a POP 340-342 that is busy during business hours may perform with greater latency (i.e., slower) than a less busy POP 340-342—even though the less busy POP is farther away (geographically or network-wise) from the end user device 330.
In an embodiment, the load indicators may correspond to a particular POP 340-342′s performance responding to certain types of content requests. In other words, a particular POP 340-342 may respond relatively better to video content requests than other POPs 340-342.
Control node 350 selects, from among POPs 340-342, POP 341 to provide the requested content to end user device 330. This is illustrated in
End user device 430 is operatively coupled to control node 450. End user device 430 is operatively coupled to control node 350 to make a request for content. Control node 450 is operatively coupled to POP 440, POP 441, and POP 442. Control node 450 is operatively coupled to POP 440, POP 441, and POP 442 in order to select one of cache node 421-426 to service the request for content by end user device 430. Control node 450 may be operatively coupled to POPs 440-442 in order to receive load indicators from cache nodes 421-426 that are associated with the ability of a cache nodes 421-426 to quickly provide the content requested by end user device 430.
Control node 450 selects, from cache nodes 421-426, cache node 423 in POP 441 to provide the requested content to end user device 430. This is illustrated in
End user device 530 is operatively coupled to control node 550. End user device 530 is operatively coupled to control node 550 to make a request for content. Control node 550 is operatively coupled to POP 540, POP 541, and POP 542. Control node 550 is operatively coupled to POP 540, POP 541, and POP 542 in order to select one of POP 540, POP 541, and POP 542 to service the request for content by end user device 530. Control node 550 may be operatively coupled to POPs 540-542 in order to receive load indicators from POPs 540-542 that are associated with the ability of a POP 540-542 to quickly provide the content requested by end user device 530. Alternatively, end user device 530 can provide control node 550 with load indicators.
In
In an embodiment, a control node 561 may reject the request to provide the requested content. In this case, control node 561 would send a message to control node 561 indicating that POP 541 will not be providing the requested content. Control node 550 may then select a different POP (e.g., POP 540 or POP 542) to provide the requested content.
To further describe the equipment and operation of a cache node,
Processing circuitry 611 can be implemented within a single processing device but can also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of processing circuitry 611 include general purpose central processing units, microprocessors, application specific processors, and logic devices, as well as any other type of processing device. In some examples, processing circuitry 611 includes physically distributed processing devices, such as cloud computing systems.
Network interface 601 includes one or more network interfaces for communicating over communication networks, such as packet networks, the Internet, and the like. The network interfaces can include one or more local or wide area network communication interfaces which can communicate over Ethernet or Internet protocol (IP) links. Network interface 601 can include network interfaces configured to communicate using one or more network addresses, which can be associated with different network links. Examples of network interface 601 include network interface card equipment, transceivers, modems, and other communication circuitry.
RAM 612 and storage 613 together can comprise a non-transitory data storage system, although variations are possible. RAM 612 and storage 613 can each comprise any storage media readable by processing circuitry 611 and capable of storing software. RAM 612 can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Storage 613 can include non-volatile storage media, such as solid state storage media, flash memory, phase change memory, magnetic memory, or as illustrated by storage system 460 in this example. RAM 612 and storage 613 can each be implemented as a single storage device but can also be implemented across multiple storage devices or sub-systems. RAM 612 and storage 613 can each comprise additional elements, such as controllers, capable of communicating with processing circuitry 611.
Software stored on or in RAM 612 or storage 613 can comprise computer program instructions, firmware, or some other form of machine-readable processing instructions having processes that when executed a processing system direct cache node 600 to operate as described herein. For example, software drives cache node 600 to receive requests for content, determine if the content is stored in cache node 600, retrieve content from origin servers, transfer content to end user devices, manage data storage systems for handling and storing the content, among other operations. The software can also include user software applications. The software can be implemented as a single application or as multiple applications. In general, the software can, when loaded into a processing system and executed, transform the processing system from a general-purpose device into a special-purpose device customized as described herein.
RAM space 620 illustrates a detailed view of an example configuration of RAM 612. It should be understood that different configurations are possible. RAM space 620 includes applications 630, operating system (OS) 640, and content RAM cache 650. Content RAM cache 650 includes RAM space for temporary storage of content, such as dynamic random access memory (DRAM).
Applications 630 include content interface 631, configuration interface 632, and content caching application 634. Content caching application 634 handles caching of content and management of storage spaces, such as content RAM cache 650 and storage space 665, as well as exchanges content, data, and instructions via content interface 631, and configuration interface 632. Content caching application 634 can comprise a custom application, Varnish caching software, hypertext transfer protocol (HTTP) accelerator software, or other content caching and storage applications, including variation, modifications, and improvements thereof. Applications 630 and OS 640 can reside in RAM space 620 during execution and operation of cache node 600, and can reside in system software storage space 662 on storage system 660 during a powered-off state, among other locations and states. Applications 630 and OS 640 can be loaded into RAM space 620 during a startup or boot procedure as described for computer operating systems and applications.
Content interface 631 and configuration interface 632 each allow a user to interact with and exchange data with content caching application 634. In some examples, each of content interface 631 and configuration interface 632 comprise an application programming interface (API). Content interface 631 allows for exchanging content for caching in cache node 600 by content caching application 634, and can also receive instructions to purge or erase data from cache node 600. Content interface 631 can retrieve tracking elements as well as network and web page content from origin servers for delivery to end users. Configuration interface 632 allows for altering the configuration of various operational features of content caching application 634. In some examples, configuration interface 632 comprises a scripting language interface, such as Varnish Configuration Language (VCL), Perl, PHP, Javascript, or other scripting or interpreted language-based interfaces. Content interface 631 and configuration interface 632 can each communicate with external systems via network interface 601 over any associated network links.
Storage system 660 illustrates a detailed view of an example configuration of storage 613. Storage system 660 can comprise flash memory such as NAND flash or NOR flash memory, phase change memory, magnetic memory, among other solid state storage technologies. As shown in
Cache node 600 is generally intended to represent a computing system with which at least software 630 and 640 are deployed and executed in order to render or otherwise implement the operations described herein. However, cache node 600 can also represent any computing system on which at least software 630 and 640 can be staged and from where software 630 and 640 can be distributed, transported, downloaded, or otherwise provided to yet another computing system for deployment and execution, or yet additional distribution.
The methods, systems, devices, networks, databases, wireless stations, and base stations described above may be implemented with, contain, or be executed by one or more computer systems. The methods described above may also be stored on a computer readable medium. Many of the elements of system 100, system 300, system 400, system 500, content delivery network 110, cache nodes 121-126, end user devices 130-132, points of presence (POPs) 141-143, control node 150, end user device 330, control node 350, POPs 340-342, end user device 430, control node 450, POPs 440-442, cache nodes 421-426, end user device 530, control node 550, POPs 540-542, control nodes 560-561, and cache nodes 521-526 may be, comprise, or include computer systems.
Communication interface 620 could comprise a network interface, modem, port, transceiver, or some other communication device. Communication interface 620 may be distributed among multiple communication devices. Processing system 630 could comprise a computer microprocessor, logic circuit, or some other processing device. Processing system 630 may be distributed among multiple processing devices. User interface 660 could comprise a keyboard, mouse, voice recognition interface, microphone and speakers, graphical display, touch screen, or some other type of user device. User interface 660 may be distributed among multiple user devices. Storage system 640 may comprise a disk, tape, integrated circuit, server, or some other memory device. Storage system 640 may be distributed among multiple memory devices.
Processing system 630 retrieves and executes software 650 from storage system 640. Software 650 may comprise an operating system, utilities, drivers, networking software, and other software typically loaded onto a computer system. Software 650 may comprise an application program, firmware, or some other form of machine-readable processing instructions. When executed by processing system 630, software 650 directs processing system 630 to operate as described herein.
The included descriptions and figures depict specific embodiments to teach those skilled in the art how to make and use the best mode. For the purpose of teaching inventive principles, some conventional aspects have been simplified or omitted. Those skilled in the art will appreciate variations from these embodiments that fall within the scope of the invention. Those skilled in the art will also appreciate that the features described above can be combined in various ways to form multiple embodiments. As a result, the invention is not limited to the specific embodiments described above, but only by the claims and their equivalents.
This application is related to and claims priority to U.S. Provisional Patent Application 62/235,752, titled “CONTENT DELIVERY NETWORK LOAD BALANCING,” filed Oct. 1, 2015, and which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62235752 | Oct 2015 | US |