WO2016106596A1 - Accelerating content delivery in a residence environment - Google Patents
Accelerating content delivery in a residence environment Download PDFInfo
- Publication number
- WO2016106596A1 WO2016106596A1 PCT/CN2014/095647 CN2014095647W WO2016106596A1 WO 2016106596 A1 WO2016106596 A1 WO 2016106596A1 CN 2014095647 W CN2014095647 W CN 2014095647W WO 2016106596 A1 WO2016106596 A1 WO 2016106596A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- cdn
- home
- node
- cached content
- home cdn
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Definitions
- the present invention relates generally to internet communications, and in particular to accelerating content delivery in a residence environment.
- a content provider website such as “www. sina. com. cn” may work with a content delivery network (CDN) to cache contents from the content provider website and to distribute the contents to users of the content provider website across access networks to which computing devices of the users are connected.
- CDN content delivery network
- the CDN with CDN nodes in core networks may or may not be able to deliver the contents of the content provider website to all individual users in a large user population with high performance and high availability.
- Some users may be located in places where the CDN may not have any CDN nodes proximate to the users.
- Some users may be located in places where the CDN does have some CDN nodes but those CDN nodes tack sufficient capacity to gracefully handle high user demands for popular content items of the content provider website.
- FIG. 1 depicts an example configuration for accelerating content delivery in a residence environment
- FIG. 2 depicts an example mesh home CDN that comprises one or more home CDN nodes
- FIG. 3 illustrates example modules in home CDN nodes in a mesh home CDN
- FIG. 4A through FIG. 4E illustrate process flows that involve interactions of example modules in a home CDN node with other home CDN nodes, with non-home CDN nodes, etc. ;
- FIG. 5A and FIG. 5B illustrates example process flows
- FIG. 6 illustrates an example hardware platform on which a computer or a computing device as described herein may be implemented.
- Example embodiments which relate to accelerating content delivery in a residence environment, are described herein.
- numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details.
- welt-known structures and devices are not described in exhaustive detail, in order to avoid unnecessarily occluding, obscuring, or obfuscating the present invention.
- content objects originated from content providers such as “www. sina. com. cn” , etc.
- CDN nodes or cache servers
- Consumer network access devices such as consumer class routers, consumer class switches, etc., which are ubiquitous in the residence environment, can connect with one another to form mesh home CDNs that connect with the upper level CDN, the content providers, etc.
- the mesh home CDNs may be configured to cache some or all of the content objects from various CDN nodes of the upper level CDN, the mesh home CDNs, the content providers, etc., in local caches of the mesh home CDNs.
- the mesh home CDNs can serve the content objects from the local caches.
- a mesh home CDN as described herein may be formed by a plurality of home CDN nodes.
- some or all of the home CDN nodes may be consumer network access devices that comprise wireless access point modules capable of connecting with one another wirelessly using any of a variety of flexible mesh network configurations such as partial mesh networks, full mesh networks, ad hoc networks, networks in various topologies such as ring topologies, star topologies, etc.
- a mesh home CDN may grow up to, or be capped at, a preconfigured and/or reconfigurable size threshold (e.g., no more than a certain number of hops, no more than a maximum number of data links in any network path between any pair of home CDN nodes in the same mesh home CDN, etc. ) .
- a preconfigured and/or reconfigurable size threshold e.g., no more than a certain number of hops, no more than a maximum number of data links in any network path between any pair of home CDN nodes in the same mesh home CDN, etc.
- Any two home CDN nodes may exchange CDN related information, CDN cached content objects, content access requests, content access responses, etc. These exchanges may be carried out directly between the home CDN nodes, or indirectly through intermediate home CDN nodes.
- a network access device as described herein may be reconfigured or installed with software, hardware, firmware, etc., to support some or all operations related to a mesh home CDN.
- Example components, modules, units, etc., implemented or represented by the software, hardware, firmware, etc., to which the network access device is reconfigured may include, but are not limited to,one or more of user request redirectors, CDN access agents, home CDN access interfaces, local data repositories comprising local CDN caches and home CDN system data stores, etc.
- home CDN nodes in a mesh home CDN may use their respective local data repositories, or home CDN system data stores therein, to maintain and share some or all home CDN system data to keep track of the home CDN nodes that are currently active in the mesh home CDN.
- the home CDN system data may be stored in system data structures, system objects, distributed hash tables, etc. and may comprise CDN system information that is node-specific, common to a mesh home CDN, common to several mesh home CDNs in a neighborhood, related to the upper level CDN, etc.
- Some or all of the network access devices configured to join in a mesh home CDN as home CDN nodes may collect, compute, analyze, track, store, exchange, etc., signal information or measurements related to signal strengths, signal characteristics (e.g., radio frequency bands, signal-to-noise ratios, etc. ) , etc., of their own wireless access point modules as well as their counterpart wireless access point modules.
- the signal information may be used to form interconnections between network access devices for the purpose of forming network topologies of mesh home CDNs.
- the mesh home CDN as described herein can be configured to allow a home CDN node to dynamically attach or detach from the mesh home CDN in a manner that minimizes impact on in-progress processing of content access requests and is transparent to user devices from which the mesh home CDN receives content access requests (e.g., HTTP requests, etc. ) for CDN cached content objects.
- Each home CDN node in the mesh home CDN may be configured to determine or identify its next neighbor (s) or adjacent home CDN node (s) , etc., in the mesh home CDN, for example, based on the home CDN system data shared and maintained by some or all of the home CDN nodes in the mesh home CDN.
- a home CDN node as described herein supports a number of different options to access CDN cached content objects by user devices. For example, in response to receiving a content access request for a content object from a user device, a home CDN node can send the requested content object as a CDN cached content object from a local CDN cache of the home CDN node to the user device, if such a CDN cached content object exists in the local CDN cache. In another embodiment, the home CDN node can access and retrieve the requested content object as a CDN cached content object from a local CDN cache of another home CDN node in the same mesh home CDN, and send the CDN cached content object to the user device.
- the home CDN node can retrieve the requested content object as a CDN cached content object from a local CDN cache of another home CDN node in a different mesh home CDN, and send the CDN cached content object to the user device. Additionally, optionally, or alternatively, the home CDN node can retrieve the requested content object as a CDN cached content object from a local CDN cache of a non-home CDN node in an upper level CDN, and send the CDN cached content object to the user device. Further, the home CDN node can retrieve the requested content object from an origin server that originates the content object, and send the content object to the user device. These different options to access a content object may be sequentially, concurrently, etc., used by a home CDN node in response to receiving a content request or the content object from a user device.
- CDN functionality allows CDN functionality to be merged or extended into residence environments by way of widely available consumer network access devices. Many benefits may be derived under these techniques. For example, access to content objects within a residence can be accelerated through CDN cached content objects in a local CDN cache of a home CDN node in the residence. Content access requests to content objects in local CDN caches of home CDN nodes in connected mesh home CDNs in a neighborhood can be redirected to and among the home CDN nodes in the neighborhood. Content objects (e.g., popular, already scheduled to be released, etc. ) can be distributed or pre-deposited into residences or neighborhoods before user devices in these residences or neighborhoods make any content access requests for these content objects.
- Content objects e.g., popular, already scheduled to be released, etc.
- Content objects from a home CDN node in a mesh home CDN can be distributed or pre-deposited to other home CDN nodes in the same mesh home CDN before user devices connected with the other home CDN nodes in the same mesh home CDN make any content access requests for these content objects.
- Content objects from a mesh home CDN can be distributed or pre-deposited to other mesh home CDNs before user devices connected with these other mesh home CDNs make content access requests for these content objects.
- content access requests actually sent to upper level CDNs and origin servers can be significantly reduced or eliminated.
- only local network access operations that are confined to a residence, a physical neighborhood, a residence area, etc. are invoked. This decreases response times (or latencies) required for processing content access requests, increases performance and reliability in processing content access requests while significantly reducing reliance and workload on the upper level CDNs and/or the origin servers, and hence enhances overall user experiences in content access related activities.
- mechanisms as described herein form a part of an information processing system, including but not limited to any of: a network access device, a media codec, a media bitstreaming server, a media player, a media processing system, a computer server, a network switch, a network element, a router, a gateway, a computer cluster, an application server system, a database system, a handheld device, game machine, television, laptop computer, netbook computer, tablet computer, cellular radiotelephone, electronic book reader, point of sale terminal, desktop computer, computer workstation, computer kiosk, plug-in devices, media accessing devices, or various other kinds of terminals and media processing units.
- FIG. 1 depicts an example configuration 100 for accelerating content delivery in a residence environment, which comprises a user device 108-1, a mesh home CDN 102, an upper level CDN 104, a content provider 106, etc.
- Some or all of the components, devices, systems, modules, etc., in the example configuration (100) of FIG. 1 may be operatively linked through one or more computer networks such as one or more of wide area networks (WANs) , local area networks (LANs) , customer premises networks (CPNs) , wireless networks, wireline networks, optical networks, non-optical networks, telecom networks, non-telecom networks, etc.
- WANs wide area networks
- LANs local area networks
- CPNs customer premises networks
- wireless networks wireline networks
- optical networks optical networks
- non-optical networks telecom networks
- non-telecom networks etc.
- the upper level CDN (104) comprises a plurality of non-home CDN nodes 104-1, 104-2, etc.
- a non-home CDN node as described herein refers to a cache server node in an upper level CDN (e.g., 104, etc. ) that is operated by a CDN service provider.
- Content objects of CDN service clients such as websites, portals, database systems, computer servers, etc., may be cached by the non-home CDN nodes (e.g., 104-1, 104-2, etc. ) in the upper level CDN (104) .
- These content objects may be served out as CDN cached content objects to user devices, home CDN nodes, etc., from the non-home CDN nodes (e.g., 104-1, 104-2, etc. ) .
- the non-home CDN nodes in the upper level CDN (104) can be deployed in a wide variety of geographic locations, computer networks, parts of a computer network, etc.
- These non-home CDN nodes can be used to accelerate caching and distribution of content objects of websites, portals, database systems, computer servers, etc., relative to user devices located in various geographic locations, various computer networks, various parts of a computer network, etc.
- the upper level CDN (104) may be hierarchical and comprise some non-home CDN nodes at a parent level, some non-home CDN nodes at an edge level, etc. It should be understood that in various embodiments the configuration (100) of FIG. 1 may be used to support accelerating content delivery in a residence environment to many user devices concurrently, serially, part concurrently part serially, etc.
- the content provider (106) comprises software, hardware, a combination of software and hardware, etc., configured to distribute one or more content objects into the upper level CDN (104) for further distribution to user devices.
- the content objects can be transmitted by the content provider (106) to one or more none-home CDN nodes (e.g., parent nodes, edge nodes, etc. ) in the upper level CDN (104) .
- the one or more non-home CDN nodes in the upper level CDN (104) can comprise software, hardware, a combination of software and hardware, etc., configured to receive content objects that was received by the upper level CDN (104) from content providers (e.g., 106, origin servers, etc. ) ; store/cache some or all of the received content objects in local data repositories (e.g., local to the non-home CDN nodes, etc. ) ; distribute some or all of the CDN cached content objects to one or more mesh home CDNs (e.g., 102, etc. ) , user devices, etc. ; etc.
- content providers e.g., 106, origin servers, etc.
- local data repositories e.g., local to the non-home CDN nodes, etc.
- distribute some or all of the CDN cached content objects e.g., 102, etc. ) , user devices, etc. ; etc.
- some or all of the content objects can be transmitted by the upper level CDN (104) or non-home CDN nodes therein to one or more home CDN nodes (e.g., 102-1, 102-2, 102-3, etc. ) in the mesh home CDN (102) .
- the upper level CDN (104) or non-home CDN nodes therein to one or more home CDN nodes (e.g., 102-1, 102-2, 102-3, etc. ) in the mesh home CDN (102) .
- the mesh home CDN (102) is formed at least in part by, or comprises, home CDN nodes such as wireless and/or wired network access devices, etc., deployed in a residence environment (e.g., a neighborhood, an apartment building, a subdivision, a town, a village, a resort, a park, etc. ) .
- a home CDN node that is a part of the mesh home CDN (102) may comprise a wireless access point module that emits and receives radio waves over which one or more user devices (e.g., 108-1, etc. ) use as physical media layers for establishing data links to the home CDN node.
- a home CDN node that is a part of the mesh home CDN (102) may comprise one or more wired (e.g., plug-in, etc. ) interfaces which one or more user devices (e.g., 108-t, etc. ) use as physical media layers for establishing data links to the home CDN node.
- wired e.g., plug-in, etc.
- user devices e.g., 108-t, etc.
- the upper level CDN (t04) may, but is not limited to, deploy its nodes (e.g., non-home-based nodes, etc. ) such as 104-1, 104-2, etc., inside core networks, at core network edges that interface with access networks (e.g., 210-1 of FIG. 2, 210-2 of FIG. 2, etc. ) , etc.
- User devices e.g., 108-1, etc.
- mesh home CDNs e.g., 102, etc.
- CDNs e.g., 104, etc.
- internet content providers e.g., the content provider 106, etc.
- the home CDN nodes comprise software, hardware, a combination of software and hardware, etc., configured to receive CDN cached content objects such as those originally from the content provider (106) by way of non-home CDN nodes in the upper level CDN (104) ; store/cache some or all of the received CDN cached content objects in one or more local data repositories (e.g., local to the home CDN nodes, etc. ) ; retrieve from the local data repositories and transmit some or all of the CDN cached content objects to any of a wide variety of user devices such as the user device (108-1) in response to content access requests from the user devices; etc.
- CDN cached content objects such as those originally from the content provider (106) by way of non-home CDN nodes in the upper level CDN (104) ; store/cache some or all of the received CDN cached content objects in one or more local data repositories (e.g., local to the home CDN nodes, etc. ) ; retrieve from the local data repositori
- a content access request refers to a request for accessing or retrieving one or more content objects.
- Example content objects as described herein include, but are not limited to only, any of: internet-based data items (e.g., dynamic, static, dynamic in part, etc. ) such as internet-based documents, files, multimedia content items, media programs, movies, database objects, online transaction objects, media bitstreams, software releases, software patches and/or bug fixes; etc.
- the user device (108-1) comprises software, hardware, a combination of software and hardware, etc., configured to interact with a user of the user device (108-1) via one or more user interface elements; based on user input from the user, retrieve content objects from one or more internet-based sources (e.g., CDN nodes in the CDN 104, etc. ) ; run one or more computer applications that access or retrieves content objects originated from content providers; etc.
- one or more internet-based sources e.g., CDN nodes in the CDN 104, etc.
- a user may provide user input that selects or causes one or more content objects to be accessed by the user device (108-1) .
- the user may select a URL, which is a locator for one or more content objects, on a webpage displayed on the user device (108-1) , load or reload a webpage that comprises a URL referencing one or more content objects, etc.
- the user device (108-1) sends a content access request for the one or more content objects.
- a URL as described herein may identify or comprise a network location at which one or more content objects can be requested and received.
- the network location identified by the URL may be a host name of an origin server that provides the one or more content objects to the upper level CDN (104) for distribution, a host name (e.g., a non-explicit IP address, a host name representing a node, a host name of a content request handler, etc. ) in the upper level CDN (1 04) , etc.
- the user device 108-1)
- a DNS client e.g., HTTP, “nslookup” , “dig” , etc.
- a DNS resolution process that resolves the hostname to a host address (e.g., an explicit IP address, a host address representing a node, a host address of a content request handler, etc. ) in the upper level CDN (104) , etc.
- a host address may refer to an explicit computer address such as an IP address, etc., that requires neither DNS name resolution nor URL redirection for communication.
- consumer network access devices can establish data links with one another to form one or more mesh home CDNs that connect with one or more upper level CDNs, content providers, etc., cache some or all of the content objects in local caches in the mesh home CDNs, and serve content objects from various CDN nodes of the upper level CDN, the mesh home CDNs, the content providers, etc., to user devices that are physically connected (using a wired and/or wireless local connection) with the mesh home CDNs.
- FIG. 2 depicts an example mesh home CDN (e.g., 102, etc. ) that comprises one or more home CDN nodes (e.g., 102-1, 102-2, 102-3, etc. ) .
- a home CDN node e.g., 102-1, 102-2, etc.
- a wireless access point module that emits and receives radio waves over which a user device (e.g., 108-1, 108-2, 108-3, etc. ) uses as a physical media layer for establishing a wireless data link (e.g
- wireless data links may include, but are not limited to only, any of data links established with wireless local area network or WLAN protocols, data links established with IEEE 802.11 protocols, data links established with Bluetooth protocols, data links established with wireless access procedures, etc.
- the home CDN node may comprise a wired interface (not shown) which a user device (e.g., 108-1, etc. ) uses as a physical media layer for establishing a wired data link to the home CDN node.
- wired data links may include, but are not limited to only, any of data links established with wired based Ethernet protocols, data links established with USB related protocols, etc.
- home CDN nodes in the mesh home CDN establish a number ofinterconnections such as peer-to-peer data links amongst themselves to form a mesh network in which CDN related information such as CDN system data, CDN cached content objects, etc., may be communicated between or amongst the home CDN nodes.
- CDN related information such as CDN system data, CDN cached content objects, etc.
- the home CDN node (102-1) may establish a peer-to-peer data link 214-1 with the home CDN node (102-2) ; the home CDN node (102-1) may establish a peer-to-peer data link 214-2 with the home CDN node (102-3) ; the home CDN node (102-2) may establish a peer-to-peer data link 214-3 with the home CDN node (102-3) .
- some or all of the peer-to-peer data links may, but are not required to, be wireless.
- one or more of the home CDN node (102-1) , the home CDN node (102-2) , the home CDN node (102-3) may comprise respective wireless access point modules to act as wireless access points not only to user devices such as 108-1, 108-2, 108-3, etc., that are in radio wave ranges (e.g., 130 meters, 50 meters, etc. ) of the wireless access points, but also to other home CDN nodes that are in the radio wave ranges.
- one or more of the home CDN node (102-1) , the home CDN node (102-2) , the home CDN node (102-3) may comprise respective wireless client modules to act (e.g., concurrently, etc. ) as wireless clients present in radio wave ranges of wireless access points.
- a home CDN node may directly establish a peer-to-peer data link with another home CDN node (e.g., 102-2, etc. ) over radio waves emitted by a wireless access point module of the former home CDN node (e.g., 102-1, etc. ) .
- a home CDN node e.g., 102-1, etc.
- a home CDN node may indirectly establish a peer-to-peer data link with another home CDN node (e.g., 102-2, etc. ) over third radio waves emitted by a wireless access point module of an intermediate device such as an intermediate home CDN node (e.g., 102-3, etc. ) , etc.
- the peer-to-peer data link (214-1) may be wireless.
- One of the home CDN node (102-1 ) and the home CDN node (102-2) may take a role as a wireless client device to a wireless access point represented by the other of the home CDN node (102-1) and the home CDN node (102-2) .
- one or both of the home CDN node (102-1) and the home CDN node (102-2) may determine which of the home CDN node (102-1) and the home CDN node (102-2) is to be used as a wireless access point by the other home CDN node.
- the upper level CDN (104) may determine or help a pair of the home CDN nodes determine which of the home CDN nodes in the pair is to be used as a wireless access point by the other of the home CDN nodes in the pair.
- Determining (e.g., by one of the home CDN nodes in a pair, by both of the home CDN nodes in the pair, by the upper level CDN, etc. ) which of the two home CDN nodes should act as an access point to the other in the pair may be based on a number of factors. The factors may be weighted differently, ranked differently, etc.
- Example factors may include but are not limited to only, any of: whether a radio frequency band is commonly supported by the home CDN nodes; whether a radio frequency is relatively capable of penetrating walls and obstacles, what is the power source for a home CDN node such as battery power sources, plug-in power sources, failure-protected power sources, etc., what is the internet connection bandwidth, quality of service, delay, error rate, etc., ofa home CDN node, how many user devices are connected to a home CDN node, how many and what types of applications are running on the home CDN node, whether user or system input has been received that specifies a preference for a home CDN node to be the access point for the other home CDN node (s) , etc. Some or all of these factors may be based on measurements of radio wave strengths, signal qualifies, signal characteristics, etc., which may be made and/or shared by the home CDN nodes.
- a home CDN node (e.g., 102-1, 102-2, etc. ) may, but is not required to, be connected with one or more access networks 210-1, 210-2, etc., over one or more wide area network (WAN) connections 212-1, 212-2, etc.
- WAN wide area network
- the home CDN node (102-1) may be connected with the access network (210-1) over the WAN connection (212-1 )
- the home CDN node (102-2) may be connected with the access network (210-2) over the WAN connection (212-2) .
- These WAN connections or WAN data links may be used as parts of network paths between the home CDN nodes (102-1, t02-2, 102-3, etc.
- non-home CDN nodes e.g., 104-1 of FIG. 1, 104-2 of FIG. 1, etc.
- These non-home CDN nodes of the upper level CDN (104) may, but are not required to, be separated topologically from the home CDN nodes (102-1, 102-2, 102-3, etc. ) by one or more access networks (e.g., 210-1, 210-2, etc. ) .
- a mesh home CDN as described herein may be formed by a plurality of home CDN nodes using any of a variety of flexible mesh network configurations such as partial mesh networks, full mesh networks, ad hoc networks, networks in ring topologies, networks in star topologies, network in different topologies, etc.
- the mesh home CDN may be limited to at or below a certain size.
- the mesh home CDN may be capped to a preconfigured and/or reconfigurable size threshold (e.g., no more than a maximum number of data links in any network path between any pair of home CDN nodes in the same mesh home CDN, etc. ) .
- Any two home CDN nodes may exchange CDN related information, CDN cached content objects, content access requests, content access responses, etc., directly between the home CDN nodes, or indirectly through intermediate home CDN nodes.
- a number of (e.g., user, system, etc. ) configuration operations may be performed at various time points to set up a network access device to take part in a peer-to-peer discovery process to discover other network access devices in a residence, in multiple residences of a neighborhood, etc., to join in or form a mesh home CDN with some or all of the other network access devices, etc.
- Some or all of the network access devices configured to join in a mesh home CDN as home CDN nodes may collect, compute, analyze, track, store, exchange, etc., signal information or measurements related to signal strengths, signal characteristics (e.g., radio frequency bands, signal-to-noise ratios, etc. ) , etc., of their own wireless access point modules as well as their counterpart wireless access point modules.
- signal characteristics e.g., radio frequency bands, signal-to-noise ratios, etc.
- home CDN nodes in a mesh home CDN may use their respective local data repositories, or home CDN system data stores therein, to maintain and share some or all home CDN system data to keep track of the home CDN nodes that are currently active in the mesh home CDN.
- the home CDN system data may be stored in system data structures, system objects, distributed hash tables, etc. and may comprise CDN system information that is node-specific, common to a mesh home CDN, common to several mesh home CDNs in a neighborhood, related to the upper level CDN, etc.
- the home CDN system data stores can be used by the home CDN nodes in a mesh home CDN to keep track of the home CDN nodes that have been configured with permissions to join the mesh home CDN, the home CDN nodes that were (e.g., recently, within a time window, etc. ) but are no longer in the mesh home CDN, etc.
- Topological changes may sometimes occur in a mesh home CDN.
- the mesh home CDN as described herein can be configured to allow a home CDN node to dynamically attach or detach from the mesh home CDN in a manner that is transparent to user devices from which the mesh home CDN receives content access requests (e.g., HTTP requests, etc. ) for CDN cached content objects.
- Each home CDN node in the mesh home CDN may be configured to determine or identify its next neighbor (s) or adjacent home CDN node (s) , etc., in the mesh home CDN, for example, based on the home CDN system data shared and maintained by some or all of the home CDN nodes in the mesh home CDN.
- home CDN system data stores maintained or shared by a mesh home CDN can serve as a resource location directory.
- a home CDN node may identify cache server locations where CDN cached resources such as CDN cached content objects, etc. are available for access.
- Example cache server locations for accessing CDN cached resource include, but are not limited to only, any of: non-home CDN nodes of an upper level (non-home) CDN operated by a CDN service provider, home CDN nodes operated in a mesh home CDN, local CDN caches, etc.
- a home CDN node in may determine, based on the home CDN system data store, whether a requested content object is a content object that has been distributed (e.g., before any content access requests from user devices have been made for the content object, etc. ) in the upper level CDN and the mesh home CDN for further distribution to user devices upon requests from the user devices. If so, which non-home CDN nodes, home CDN nodes, etc., may contain the requested content object as a CDN cached content object.
- a home CDN node (e.g., 102-3, etc. ) in a mesh home CDN (102) may be designated or elected as a home CDN indexer node.
- these network access device may designate or elect one of the network access device as the home CDN indexer node in an initial mesh home CDN formed by the two network access devices.
- the same network access device that has been designated as the home CDN indexer node may continue to be elected as the home CDN indexer node in the growing mesh home CDN, so long as the network access device has been alive in the mesh home CDN.
- a reelection may be held among all home CDN nodes in the mesh home CDN when a new network access device joins the mesh home CDN, and/or as an existing home CDN node leaves the mesh home CDN.
- a home CDN indexer node (e.g., 102-3, etc. ) may be designated (e.g., by a designated user, by the upper level CDN, etc. ) or elected (e.g., by the active home CDN nodes, etc. ) , based on one or more selection criteria, one or more selection algorithms, etc.
- the selection criteria, the selection algorithms, etc. can be weight based. Different network and operational properties of a network access device may be given different weight values. For example, a network access device that has a longer stable operating history, larger computing resources (e.g., CPU, persistent storage, main memory, etc.
- a larger internet connection bandwidth, a higher quality-of-service internet connection, a wider wireless signal coverage, etc. may be given one or more higher weight values for being selected as the home CDN indexer node than another network access device that has a shorter stable operating history, smaller computing resources, a larger internet connection bandwidth, a higher quality-of-service internet connection, a narrower wireless signal coverage, etc.
- another home CDN node in the same mesh home CDN may be designated or elected as a backup home CDN indexer node.
- the (active) home CDN indexer node e.g., 102-3, etc.
- the backup home CDN indexer node e.g., 102-2, etc.
- the home CDN indexer node is configured to keep home CDN state information.
- the home CDN indexer node may keep real time or near real time operational information as to which home CDN nodes in the mesh home CDN (102) are alive and which home CDN nodes are off (e.g., detached from the mesh home CDN 102, etc. ) .
- home CDN nodes in a mesh home CDN as described herein may implement a heartbeat mechanism.
- a home CDN node such as the home CDN indexer node (e.g., 102-3) , etc., in a mesh home CDN (e.g., 102) may be configured to send ping requests to other home CDN nodes (e.g., 102-1, 102-2, etc. ) in the same mesh home CDN (102) from time to time, occasionally, at fixed time intervals, at adaptive time intervals, etc.
- the home CDN node fails to receive a set number of contiguous ping responses from a pinged node, the home CDN node may determine that the pinged node has failed or detached from the mesh home CDN.
- a ping request and/or a ping response as described herein may carry one or more portions of home CDN state information maintained by the home CDN indexer node and/or one or more portion of home CDN node information maintained by an individual home CDN node (e.g., a pinged node, etc. ) .
- content access requests from a home CDN node within a time window may be used in lieu of ping responses in the time window by the home CDN indexer nodes to determine that the home CDN node is alive, thereby preventing excessive pinging of the home CDN node by the home CDN indexer node.
- the home CDN indexer node (e.g., 102-3, etc. ) may be configured to acquire and keep information on the capacity and configuration of each of the home CDN nodes (e.g., 102-1, 10-2-2, 102-3, etc. ) in the mesh home CDN (102) . Additionally, optionally, or alternatively, the home CDN indexer node (e.g., 102-3, etc. ) may be configured to bookkeep one or more indexes of CDN cached contents that have been recently consumed (e.g., accessed, cached, distributed, pre-deposited, etc. ) on each of the home CDN nodes (e.g., 102-1, 10-2-2, 102-3, etc.
- a home CDN indexer node (e.g., 102-3, etc. ) in a mesh home CDN (e.g., 102, etc. ) may be a part of a hierarchical CDN indexer that may include one or more of backup home CDN indexer nodes in the same mesh home CDN (102) , other home CDN indexer nodes in one or more other mesh home CDNs, CDN indexer nodes of the upper level CDN, etc.
- the hierarchical CDN indexer may be used to prevent any single home CDN indexer node from becoming a reliability or performance bottleneck, especially if any of the mesh home CDNs may comprise a large number of nodes, a large amount of CDN cached content objects, etc.
- a home CDN indexer node may, but is not required to, acquire and maintain specific details of which home CDN nodes in a neighboring mesh home CDN has which CDN resources consumed in the neighboring mesh home CDN. Rather, the home CDN indexer node in the mesh home CDN (102) may query another home CDN indexer node in the neighboring mesh home CDN (other than 102) to determine the specific details as necessary.
- a second heartbeat mechanism, a second backup mechanism, a second information sharing mechanism, etc. -other than or in addition to a heartbeat mechanism, a backup mechanism, an information sharing mechanism, etc., implemented in a single mesh home CDN- may be implemented over a plurality of physical networks by indexer nodes that form an overall hierarchical CDN indexer.
- each home CDN node (e.g., 102-1, 102-2, 103, etc. ) in a mesh home CDN (e.g., 102, etc. ) comprises a CDN cache.
- a content access request is received by a home CDN node (e.g., 102-1, etc. ) , it is first determined whether content objects requested by the content access request are cached locally on the home CDN node or not. The request is satisfied from locally cached content objects if available.
- the request may be forwarded by the home CDN node (102-1) to a home CDN Indexer node (e.g., 102-3, etc. ) in the mesh home CDN (102) .
- a home CDN Indexer node e.g., 102-3, etc.
- the approach as described herein differ from some approaches under which no determination is made as to whether a request recipient has content objects, but rather directly goes to a specific CDN node or a local cache of the specific CDN node other than the recipient of the request.
- the recipient home CDN node of the content access request after first checking its local cache, forwards the request to a home CDN indexer node (e.g., as a part of a hierarchical CDN indexer, etc. ) that keeps track of node availability and content object availability in mesh home CDNs in which nodes are very dynamic, come and go regularly.
- the home CDN indexer node can intelligently figure out where the request should be forwarded to.
- the destination to which the request is forwarded may be one of a home CDN node in the same mesh CDN, a home CDN node in a neighboring mesh home CDN, a non-home CDN node in the upper level CDN, an origin server, etc.
- CDN node indexing techniques as described herein can be used to provide robust processing of content access requests and satisfying user experiences in mesh home CDNs.
- FIG. 3 illustrates example modules in home CDN nodes (e.g., 102-1, 102-2, etc. ) in a mesh home CDN (e.g., 102, etc. ) .
- FIG. 4A illustrates a process flow that involves interactions of example modules in a home CDN node with other home CDN nodes, with non-home CDN nodes in an upper level CDN, etc.
- each of the home CDN nodes may comprise a user request redirector (e.g., 306-1, 306-2, etc. ) , a CDN access agent (e.g., 302-1, 302-2, etc. ) , a home CDN access interface (e.g., 304-1, 304-2, etc. ) , a local data repository (e.g., 308-1, 308-2, etc. ) comprising a local CDN cache (not shown) and a home CDN system data store (not shown) , etc.
- Each of these modules in a home CDN node may be implemented using software, hardware, a combination of software and hardware, etc.
- Each of the home CDN nodes (e.g., 102-1, 102-2, etc. ) , or the home CDN access interface (e.g., 304-1, 304-2, etc. ) therein, may establish one or more home CDN communication channels with one or more other home CDN nodes, for example, over one or more peer-to-peer data links (e.g., 214-1 of FIG. 2, 214-2 of FIG. 2, 214-3 of FIG. 2, etc. ) .
- a remote CDN communication channel may establish one or more remote CDN communication channels with an upper level CDN (e.g., 104 of FIG. 1, etc. ) or one or more non-home CDN nodes (e.g., 104-1, 104-2, etc. ) therein, for example, over one or more WAN data links (e.g., 212-1 of FIG. 2, 212-2 of FIG. 2, etc. ) .
- an upper level CDN e.g., 104 of FIG. 1, etc.
- non-home CDN nodes e.g., 104-1, 104-2, etc.
- a local data repository (e.g., 308-1, 308-2, etc. ) comprises software, hardware, a combination of hardware and software, etc., configured to maintain the local CDN cache, the home CDN system data store, etc.
- the local data repository can be configured to support data access operations, data modification operations, data creation operations, etc., related to information or data maintained in the local data repository.
- CDN cached objects, home CDN system data, etc., in the local data repository may be dynamically updated as changes to the CDN cached objects, home CDN system data, etc., occur.
- a user request redirector in a home CDN node (e.g., 102-1, etc. ) of a mesh home CDN (e.g., 102, etc. ) receives, from a user device (e.g., 108-1, etc. ) , a content access request (e.g., a HTTP request, etc. ) for one or more content objects.
- the user request redirector (306-1) may be implemented with iptables, network filters, etc.
- the user request redirector (306-1) redirects the content access request (e.g., with a redirected HTTP request, etc. ) to a CDN access agent (e.g., 302-1, etc. ) in the home CDN node (102-1) .
- the content access request may comprise a resource locator such as a URL, etc., that represents a network address at which the one or more content objects are to be accessed.
- the URL may comprise a host name that is remote to the home CDN node (102-1) , remote to the mesh home CDN (102) or all the home CDN nodes therein, etc.
- the host name may be in a network domain of one of a content provider, an origin server, the upper level CDN (104) , a non-home CDN node (e.g., 104-1, 104-2, etc. ) , etc.
- Redirecting a content access request as described herein may, but is not limited to, be based on DNS processes and/or URL redirections (e.g., based on a HTTP error code such as 301 or 402, etc. ) .
- the CDN access agent (302-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects.
- the CDN access agent (302-1) may be implemented as a transparent proxy, etc.
- the one or more content objects may b e distributed or pre-deposited by the upper level CDN (104) to the mesh home CDN (102) or home CDN nodes therein in advance of the mesh home CDN (102) or the home CDN nodes therein receiving any content access request for any of the one or more content objects.
- the upper level CDN (104) may be configured to distribute the one or more content objects to not only non-home CDN nodes (e.g., 104-1, 104-2, etc.
- CDN cached content objects corresponding to the one or more content objects can distributed to and cached by the home CDN nodes (e.g., 102-1, 102-2, etc. ) in advance of content access requests generated by user devices.
- the one or more content objects may be stored in the local CDN cache when a previous content access request for the one or more content objects was made, received or processed.
- the CDN access agent (302-1) determines whether the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) comprises the one or more content objects as CDN cached content objects.
- the process flow goes to block 410. Otherwise, in response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) comprises the one or more content objects as CDN cached content objects, the process flow goes to block 426.
- the CDN access agent (302-1) invokes the home CDN access interface (304-1) to determine whether any of the home CDN nodes (e.g., 102-2, 102-3, etc. ) in the mesh home CDN (102) has stored or cached the one or more content objects as CDN cached content objects in their respective local CDN caches.
- the home CDN nodes e.g., 102-2, 102-3, etc.
- the home CDN access interface (304-1) sends, to some or all of the other home CDN nodes (e.g., 102-2, 102-3, etc. ) in the mesh home CDN (102) over one or more peer-to-peer data links or communication channels (e.g., 214-1 of FIG. 2, 214-2 of FIG. 2, 214-3 of FIG. 2, etc. ) , one or more mesh home CDN resource access requests for the one or more content objects requested by the user device (108-1) .
- the other home CDN nodes e.g., 102-2, 102-3, etc.
- peer-to-peer data links or communication channels e.g., 214-1 of FIG. 2, 214-2 of FIG. 2, 214-3 of FIG. 2, etc.
- the home CDN access interface (304-1) receives, from the other home CDN nodes (e.g., 102-2, 102-3, etc. ) in the mesh home CDN (102) to which the mesh home CDN resource access requests were sent, one or more mesh home CDN resource access responses.
- the other home CDN nodes e.g., 102-2, 102-3, etc.
- the home CDN access interface (304-1) determines whether any of these responses comprises the one or more content objects as CDN cached content objects in the other home CDN nodes (e.g., 102-2, 102-3, etc. ) in the mesh home CDN (102) .
- the process flow goes to block 420. Otherwise, in response to determining that at least one of the mesh home CDN resource access responses comprises the one or more content objects, the process flow goes to block 416, in which the home CDN access interface (304-1) stores and/or caches the received one or more content objects in the local CDN cache of the local data repository (308-1) .
- the CDN access agent (302-1) is notified (e.g., by the home CDN access interface 304-1, etc. ) of the fact that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) comprises the one or more content objects as CDN cached content objects.
- the CDN access agent (302-1) retrieves the one or more content objects as CDN cached content objects from the local CDN cache of the local data repository (308-1) , and the process flow proceeds to block 426.
- the CDN access agent (302-1) sends, to the upper level CDN (104) or a host address therein over a WAN data link (e.g., 212-1 of FIG. 2, 212-2 of FIG. 2, etc. ) , a non-home CDN resource access request (e.g., an HTTP proxy request, etc. ) for the one or more content objects requested by the user device (1 08-1) .
- the non-home CDN resource access request may or may not be the same as the content access request as received from the user device (108-1 ) .
- the non-home CDN resource access request may comprise a resource locator such as a URL, etc., that represents a network address at which the one or more content objects are to be accessed, and comprises a host name that is remote to the home CDN node (102-1) , remote to the mesh home CDN (102) or all the home CDN nodes therein, etc.
- the host name may be in a network domain of the upper level CDN (104) or a non-home CDN node (e.g., 104-1, 104-2, etc. ) therein.
- the CDN access agent (302-1) receives, from the upper level CDN (104) or the non-home CDN node (e.g., 104-1, 104-2, etc. ) in the upper level CDN (104) to which the non-home CDN resource access request was sent, one or more non-home CDN resource access responses (e.g., HTTP responses, etc. ) .
- the non-home CDN resource access responses e.g., HTTP responses, etc.
- the CDN access agent (302-1) determines whether the non-home CDN resource access responses comprise the one or more content objects as CDN cached content objects in the upper level CDN (104) . In response to determining that the non-home CDN resource access responses do not comprise the one or more content objects, the CDN access agent (302-1) proceeds to retrieve the one or more content objects from a content provider or an origin server and store/cache the one or more content objects in the local CDN cache of the local data repository (308-1) ifthe host name of the content access request from the user device (108-1) so specifies, and the process flow goes to block 426.
- the CDN access agent (302-1) stores and/or caches the received one or more content objects in the local CDN cache of the local data repository (308-1) , and the process flow goes to block 426.
- the CDN access agent (302-1) generates one or more content access responses (e.g., HTTP responses, etc. ) , which comprise the one or more content objects if these objects have been successfully retrieved, or an error indication if these objects have not been successfully retrieved.
- the CDN access agent (302-1) proceeds to send the one or more content access responses to the user request redirector (306-1) , which in turn forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) in block 428.
- multiple CDN nodes may store the requested content object as a CDN cached content object in their respective (e.g., local, etc. ) CDN caches, as indicated by the system CDN system data stores shared or maintained by the mesh home CDN.
- a home CDN node may, but is not required to, send a single redirected content access request to one of the multiple CDN nodes at any given time. For example, the home CDN node may first attempt to retrieve the requested content from its local CDN cache without involving other CDN nodes. If that is not successful, the home CDN node may access other home CDN nodes (e.g., based on a ranking order generated based on the home CDN system data store, etc. ) in the same mesh home CDN for the requested content object. If that is still not successful, the home CDN node may access home CDN nodes in a different mesh home CDN, non-home CDN nodes in an upper level CDN, content providers, origin servers, etc., for the requested content object.
- the home CDN node may access home CDN nodes in a different mesh home CDN, non-home CDN nodes in an upper level CDN, content providers, origin servers, etc., for the requested content object.
- a home CDN node may send two or more concurrent redirected content access requests to two or more of the multiple CDN nodes that have cached the content object according to information in the home CDN system data store.
- the home CDN node may dynamically maintain, terminate, etc., any CDN data access session that has been (e.g., concurrently, etc. ) initiated by the concurrent redirected content access requests once the home CDN node determines that the content object is to be retrieved from a particular CDN node.
- the home CDN node may determine from performance management information in the hone CDN system data store that a particular home CDN node in two or more CDN nodes that have started responding to the redirected content access requests is optimal among all the CDN nodes for accessing the requested content object as a CDN cached content object. Hence the home CDN node may select the particular home CDN node over the others of the multiple CDN nodes to provide the requested content object.
- FIG. 4B through FIG. 4E illustrate process flows that involves an example home CDN indexer node with home CDN nodes, with non-home CDN nodes in an upper level CDN, with origin servers, etc.
- a home CDN node e.g., 102-1, etc.
- a mesh home CDN e.g., 102, etc.
- a user request redirector e.g., 306-1, etc.
- receives from a user device e.g., 108-1, etc.
- a content access request e.g., a HTTP request, etc.
- the home CDN node (102-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects.
- a local data repository e.g., 308-1, etc.
- the home CDN node (102-1) sends a CDN index request to a home CDN indexer node in the mesh home CDN (102) .
- the home CDN indexer node is the home CDN node (102-3) .
- the CDN index request comprises a request for obtaining a CDN node that has the one or more content objects as CDN cached content objects.
- the home CDN indexer node or the home CDN node (102-3) in the present example may be configured to maintain a directory of cached content objects consumed by or available from each home CDN node in the mesh home CDN. Based on the directory of cached content objects, the home CDN indexer node or the home CDN node (102-3) in the present example can determine whether a specific home CDN node in the mesh home CDN has the requested content objects in local cache.
- the process flow of FIG. 4B goes to block 440 of FIG. 4C.
- the home CDN node (102-1) receives, from the home CDN indexer node or the home CDN node (102-3) in the present example, a CDN index response.
- the CDN index response may indicate that a home CDN node in the same mesh home CDN (102) , for example, the home CDN node (102-2) , has the one or more content objects as CDN cached content objects in a local CDN cache of the home CDN node (102-2) .
- the home CDN node (102-1) in response to receiving the CDN index response that indicates the home CDN node (102-2) in the same mesh home CDN (102) , the home CDN node (102-1) sends, to the home CDN node (102-2) , a home CDN resource access request (e.g., an HTTP request, etc. ) for the one or more content obj ects requested by the user device (108-1) .
- a home CDN resource access request e.g., an HTTP request, etc.
- the home CDN indexer node or the home CDN node (102-3) in the present example may receive in block 432 the content access request forwarded from the home CDN node (102-1) , and in rurn directly forward in blocks 434 and 436 the content access request further to the home CDN node (102-2) in response to determining that the home CDN node (102-2) has the requested content objects in its local cache.
- the home CDN node (102-1) receives, from the home CDN node (102-2) , one or more home CDN resource access responses (e.g., HTTP responses, etc. ) .
- the home CDN resource access responses from the home CDN node (102-2) comprise the one or more content objects.
- the home CDN node (102-1) stores/caches the one or more content objects in its local CDN cache, and the process flow goes to block 428, in which the home CDN node, or a user request redirector (306-1) therein, forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) .
- FIG. 4C illustrates another example process flow.
- a home CDN node e.g., 102-1, etc.
- a mesh home CDN e.g., 102, etc.
- a user request redirector e.g., 306-1, etc.
- receives from a user device e.g., 108-1, etc.
- a content access request e.g., a HTTP request, etc.
- the home CDN node (102-1) In response to receiving the content access request from the user device (108-1) , the home CDN node (102-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects. In response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) does not comprise the one or more content objects as CDN cached content objects, the home CDN node (102-1) sends a CDN index request to a home CDN indexer node in the mesh home CDN (102) , which is, for the purpose of illustration, the home CDN node (102-3) .
- the CDN index request comprises a request for obtaining a CDN node that has the one or more content objects as CDN cached content objects.
- the home CDN indexer node determines whether a home CDN node in the same mesh home CDN has the one or more content objects as CDN cached content objects. In response to determining that none of home CDN nodes in the same mesh home CDN has the one or more content objects as CDN cached content objects, the home CDN indexer node proceeds to determine whether one of a home CDN node in a neighboring mesh home CDN, a non-home (or standard) CDN node in an upper level CDN, etc., has the one or more content objects as CDN cached content objects.
- the home CDN indexer node may apply one or more selection criteria to select a specific CDN node among the multiple CDN nodes.
- the home CDN indexer node may, but is not necessarily limited to only, select a home CDN node in a neighboring mesh home CDN if available.
- home CDN indexer nodes in one or more mesh home CDNs form a hierarchical CDN indexer. This is useful in preventing a single home CDN indexer node from becoming a bottleneck, especially when the mesh home CDNs comprise a large number of nodes, a large amount of CDN cached content objects, etc.
- a home CDN indexer node which is a part of the hierarchical CDN indexer, need not keep specific details of which home CDN nodes in a neighboring mesh home CDN has which resources. Rather, the home CDN indexer node may query another home CDN indexer node in the neighboring mesh home CDN to determine the specific details on an as-needed basis.
- the home CDN indexer node in the mesh home CDN (102) in response to determining that none of home CDN nodes in the same mesh home CDN has the one or more content objects as CDN cached content objects, the home CDN indexer node in the mesh home CDN (102) , which in the present example is the home CDN node (102-3) , sends a second CDN index request to a second home CDN indexer node in a second mesh home CDN (e.g., a neighboring mesh home CDN to 102, etc. ) , which is, for the purpose of illustration, the home CDN node (102-5) .
- the second CDN index request comprises a request for obtaining a CDN node in the second mesh home CDN that has the one or more content objects as CDN cached content objects.
- the home CDN node (102-3) receives, from the second home CDN indexer node (102-5) in the second mesh home CDN, a CDN index response.
- the CDN index response may indicate that a home CDN node 102-4 in the second mesh home CDN has the one or more content objects as CDN cached content objects in a local CDN cache of the home CDN node (102-4) .
- the home CDN node (102-3) may forward, or send a new CDN index response generated from, the CDN index response from the second home CDN indexer node (102-5) in the second mesh home CDN.
- the process flow of FIG. 4C goes to block 450 of FIG. 4D.
- the home CDN node (102-1) receives, from the home CDN indexer node or the home CDN node (102-3) , the CDN index response or the new CDN index response, which indicates that the second home CDN node (102-4) in the second mesh home CDN has the one or more content objects as CDN cached content objects in a local CDN cache of the home CDN node (102-4) .
- the home CDN node (102-1) in response to receiving the CDN index response that indicates the second home CDN node (102-4) in the second mesh home CDN, the home CDN node (102-1) sends, to the second home CDN node (102-4) , a home CDN resource access request (e.g., an HTTP request, etc. ) for the one or more content objects requested by the user device (108-1) .
- a home CDN resource access request e.g., an HTTP request, etc.
- the home CDN indexer node or the home CDN node (102-3) in the present example may receive in block 432 the content access request forwarded from the home CDN node (t02-1) , and in turn directly forward in blocks 434 and 444 the content access request further to the second home CDN node (102-4) in response to determining that the second home CDN node (102-4) has the requested content objects in its local cache.
- the home CDN node (102-1) receives, from the second home CDN node (102-4) in the second mesh home CDN, one or more home CDN resource access responses (e.g., HTTP responses, etc. ) .
- the home CDN resource access responses from the second home CDN node (102-4) in the second mesh home CDN comprise the one or more content objects.
- the home CDN node (102-1) stores/caches the one or more content objects in its local CDN cache, and the process flow goes to block 428, in which the home CDN node, or a user request redirector (306-1) therein, forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) .
- FIG. 4D illustrates yet another example process flow.
- a home CDN node e.g., 102-1, etc.
- a mesh home CDN e.g., 102, etc.
- a user request redirector e.g., 306-1, etc.
- receives from a user device e.g., 108-1, etc.
- a content access request e.g., a HTTP request, etc.
- the home CDN node (102-1) In response to receiving the content access request from the user device (108-1 ) , the home CDN node (102-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects. In response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) does not comprise the one or more content objects as CDN cached content objects, the home CDN node (102-1) sends a CDN index request to a home CDN indexer node in the mesh home CDN (1 02) , which is, for the purpose of illustration, the home CDN node (102-3) .
- the CDN index request comprises a request for obtaining a CDN node that has the one or more content objects as CDN cached content objects.
- the home CDN indexer node determines whether a home CDN node in the same mesh home CDN has the one or more content objects as CDN cached content objects. In response to determining that none of home CDN nodes in the same mesh home CDN has the one or more content objects as CDN cached content objects, the home CDN indexer node or the home CDN node (102-3) in the present example proceeds to determine whether one of a home CDN node in a neighboring mesh home CDN, a non-home (or standard) CDN node in an upper level CDN, etc., has the one or more content objects as CDN cached content objects.
- the home CDN indexer node or the home CDN node (102-3) in the present example may be a part of a hierarchical CDN indexer that also includes one or more non-home CDN indexer nodes in the upper level CDN.
- the home CDN indexer node in the mesh home CDN (102) , or the home CDN node (102-3) in the present example sends a third CDN index request to a non-home CDN indexer node in the upper level CDN, which is, for the purpose of illustration, the none-home CDN node (104-2) .
- the third CDN index request comprises a request for obtaining a non-home CDN node in the upper level CDN that has the one or more content objects as CDN cached content objects.
- the home CDN node (102-3) receives, from the non-home CDN indexer node (104-2) in the upper level CDN, a CDN index response.
- the CDN index response from the non-home CDN indexer node (104-2) may indicate that a non-home CDN node 104-1 in the second mesh home CDN has the one or more content objects as CDN cached content objects in a local CDN cache of the home CDN node (104-1) .
- the home CDN node (102-3) may forward, or send a new CDN index response generated from, the CDN index response from the non-home CDN indexer node (104-2) in the upper level CDN.
- the home CDN node (102-1) receives, from the home CDN indexer node or the home CDN node (102-3) , the CDN index response or the new CDN index response, which indicates that the non-home CDN node (104-1) in the upper level CDN has the one or more content objects as CDN cached content objects in a local CDN cache of the non-home CDN node (104-1) .
- the process flow of FIG. 4D goes to block 464 of FIG. 4E.
- the home CDN node (102-1) in response to receiving the CDN index response that indicates the non-home CDN node (104-1) in the upper level home CDN, the home CDN node (102-1) sends, to the non-home CDN node (104-1) , a non-home CDN resource access request (e.g., an HTTP proxy request, etc. ) for the one or more content objects requested by the user device (108-1) .
- a non-home CDN resource access request e.g., an HTTP proxy request, etc.
- the home CDN indexer node or the home CDN node (102-3) in the present example may receive in block 432 the content access request forwarded from the home CDN node (102-1) , and in turn directly forward in blocks 434 and 454 the content access request further to the non-home CDN node (104-1) in response to determining that the non-home CDN node (104-1 ) has the requested content objects in its local cache.
- the home CDN node (102-1) receives, from the non-home CDN node (104-1) in the upper level CDN, one or more non-home CDN resource access responses (e.g., HTTP responses, etc. ) .
- the non-home CDN resource access responses from the non-home CDN node (104-1) in the upper level CDN comprise the one or more content objects.
- the home CDN node (102-1) stores/caches the one or more content objects in its local CDN cache, and the process flow goes to block 428, in which the home CDN node, or a user request redirector (306-1) therein, forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) .
- FIG. 4E illustrates an example process flow.
- a home CDN node e.g., 102-1, etc.
- a mesh home CDN e.g., 102, etc.
- a user request redirector e.g., 306-1, etc.
- receives from a user device e.g., 108-1, etc.
- a content access request e.g., a HTTP request, etc.
- the home CDN node (102-1) In response to receiving the content access request from the user device (108-1) , the home CDN node (102-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects. In response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) does not comprise the one or more content objects as CDN cached content objects, the home CDN node (102-1) sends a CDN index request to a home CDN indexer node in the mesh home CDN (102) , which is, for the purpose of illustration, the home CDN node (102-3) .
- the CDN index request comprises a request for obtaining a CDN node that has the one or more content objects as CDN cached content objects.
- the home CDN indexer node determines whether a home CDN node in the same mesh home CDN, a home CDN node in a neighboring mesh home CDN, a non-home (or standard) CDN node in an upper level CDN, etc., has the one or more content objects as CDN cached content objects.
- the home CDN node (1 02-1) receives, from the home CDN indexer node or the home CDN node (102-3) , a CDN index response which indicates that none of the same mesh home CDN, any neighboring connected mesh home CDNs, the upper level CDN, etc., has the requested content objects.
- the home CDN node (102-1) sends, to an origin server such as 106, a non-CDN resource access request (e.g., an HTTP proxy request, etc. ) for the one or more content objects requested by the user device (t 08-1 ) .
- a non-CDN resource access request e.g., an HTTP proxy request, etc.
- the home CDN node (102-1 ) receives, from the origin server (106) , one or more non-CDN resource access responses (e.g., HTTP responses, etc. ) .
- the non-CDN resource access responses from the origin server (106) comprise the one or more content objects.
- the home CDN node (102-1) stores/caches the one or more content objects in its local CDN cache, and the process flow goes to block 428, in which the home CDN node, or a user request redirector (306-1) therein, forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) .
- FIG. 5A illustrates an example process flow.
- One or more computing devices or components may perform this process flow.
- a network access device emits and receives radio waves over which a user device uses as a physical media layer for establishing a data link to the network access device.
- the network access device joins in a mesh home content delivery network (CDN) as a home CDN node.
- CDN mesh home content delivery network
- the network access device receives one or more CDN cached content objects from an upper level CDN.
- the one or more CDN cached content objects may be received by the upper level CDN from an origin server for distribution to non-home CDN nodes of the upper level CDN, and received by the network access device from the upper level CDN before the network access device has been requested to access any of the one or more CDN cached content objects from any user device.
- the one or more CDN cached content objects from the upper level CDN are cached in a local data repository of the network access device.
- the network access device is further configured to perform: receiving, from the user device, a content request for a first CDN cached content object in the one or more CDN cached content objects; in response to receiving the content request from the user device, retrieving the first CDN cached content object from the local data repository of the network access device; sending the first CDN cached content object as retrieved from the local data repository of the network access device to the user device as a response to the content request, etc.
- At least one of the one or more CDN cached content objects is received by the home CDN node from a non-home CDN node of the upper level CDN.
- At least one of the one or more CDN cached content objects is received by the home CDN node from a second home CDN node of the upper level CDN.
- the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over the radio waves emitted and received by the home CDN node.
- the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over second radio waves emitted and received by the second home CDN node.
- the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over third radio waves emitted and received by a third network access device.
- FIG. 5B illustrates another example process flow.
- One or more computing devices or components may perform this process flow.
- a network access device emits and receives radio waves over which a user device uses as a physical media layer for establishing a data link to the network access device.
- the network access device joins in a mesh home content delivery network (CDN) as a home CDN node.
- the network access device receives one or more CDN cached content objects from an upper level CDN.
- the mesh home CDN receives a distribution of a plurality of CDN cached content objects from an upper level CDN.
- the network access device stores at least a portion of a CDN resource directory.
- the CDN resource directory specifies a plurality of CDN cached content resource locators for one or more CDN cached content objects in the plurality of CDN cached content objects.
- the one or more CDN cached content objects are received by an upper level CDN from an origin server for distribution to non-home CDN nodes of the upper level CDN.
- the network access device is further configured to perform: receiving, from the user device, a content request for a first CDN cached content object in the one or more CDN cached content objects; in response to receiving the content request from the user device, retrieving a CDN cached content resource locator for the first CDN cached content object from the CDN resource directory; retrieving the first CDN cached content object at the CDN cached content resource locator; sending the first CDN cached content object as retrieved at the CDN cached content resource locator to the user device as a response to the content request; etc.
- the CDN cached content resource locator is one of two or more CDN cached content resource locators retrieved by the home CDN node from the CDN resource directory; the network access device is further configured to send two or more CDN content requests based on the two or more CDN cached content resource locators to two or more CDN nodes of the upper level CDN and the mesh home CDN.
- the two or more CDN content requests based on the two or more CDN cached content resource locators are concurrently sent to the two or more CDN nodes of the upper level CDN and the mesh home CDN.
- the two or more CDN content requests based on the two or more CDN cached content resource locators are sequentially sent to the two or more CDN nodes of the upper level CDN and the mesh home CDN.
- the two or more CDN nodes of the upper level CDN and the mesh home CDN comprises two or more of home CDN nodes, or non-home CDN nodes.
- the CDN cached content resource locator identifies a non-home CDN node of the upper level CDN.
- the CDN cached content resource locator identifies a second home CDN node of the upper level CDN.
- the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over the radio waves emitted and received by the home CDN node.
- the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over second radio waves emitted and received by the second home CDN node.
- the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over third radio waves emitted and received by a third network access device.
- a system, an apparatus, or one or more other computing devices performs any or a part of the foregoing methods as described.
- a non-transitory computer readable storage medium storing software instructions, which when executed by one or more processors cause performance of any of the foregoing methods.
- a computing device comprising one or more processors and one or more storage media storing a set of instructions which, when executed by the one or more processors, cause performance of any of the foregoing methods.
- the techniques described herein are implemented by one or more special-purpose computing devices.
- the special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination.
- ASICs application-specific integrated circuits
- FPGAs field programmable gate arrays
- Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques.
- the special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.
- FIG. 6 is a block diagram that illustrates a computer system 600 upon which an example embodiment of the invention may be implemented.
- Computer system 600 includes a bus 602 or other communication mechanism for communicating information, and a hardware processor 604 coupled with bus 602 for processing information.
- Hardware processor 604 may be, for example, a general purpose microprocessor.
- Computer system 600 also includes a main memory 606, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 602 for storing information and instructions to be executed by processor 604.
- Main memory 606 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 604.
- Such instructions when stored in non-transitory storage media accessible to processor 604, render computer system 600 into a special-purpose machine that is customized to perform the operations specified in the instructions.
- Computer system 600 further includes a read only memory (ROM) 608 or other static storage device coupled to bus 602 for storing static information and instructions for processor 604.
- ROM read only memory
- a storage device 610 such as a magnetic disk or optical disk, is provided and coupled to bus 602 for storing information and instructions.
- Computer system 600 may be coupled via bus 602 to a display 612, such as a liquid crystal display, for displaying information to a computer user.
- a display 612 such as a liquid crystal display
- An input device 614 is coupled to bus 602 for communicating information and command selections to processor 604.
- cursor control 616 is Another type of user input device
- cursor control 616 such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 604 and for controlling cursor movement on display 612.
- This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y) , that allows the device to specify positions in a plane.
- Computer system 600 may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 600 to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system 600 in response to processor 604 executing one or more sequences of one or more instructions contained in main memory 606. Such instructions may be read into main memory 606 from another storage medium, such as storage device 610. Execution of the sequences of instructions contained in main memory 606 causes processor 604 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.
- Non-volatile media includes, for example, optical or magnetic disks, such as storage device 610.
- Volatile media includes dynamic memory, such as main memory 606.
- Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.
- Storage media is distinct from but may be used in conjunction with transmission media.
- Transmission media participates in transferring information between storage media.
- transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 602.
- transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
- Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 604 for execution.
- the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer.
- the remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem.
- a modem local to computer system 600 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal.
- An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 602.
- Bus 602 carries the data to main memory 606, from which processor 604 retrieves and executes the instructions.
- the instructions received by main memory 606 may optionally be stored on storage device 610 either before or after execution by processor 604.
- Computer system 600 also includes a communication interface 618 coupled to bus 602.
- Communication interface 618 provides a two-way data communication coupling to a network link 620 that is connected to a local network 622.
- communication interface 618 may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line.
- ISDN integrated services digital network
- communication interface 618 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN.
- LAN local area network
- Wireless links may also be implemented.
- communication interface 618 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
- Network link 620 typically provides data communication through one or more networks to other data devices.
- network link 620 may provide a connection through local network 622 to a host computer 624 or to data equipment operated by an Internet Service Provider (ISP) 626.
- ISP 626 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 628.
- Internet 628 uses electrical, electromagnetic or optical signals that carry digital data streams.
- the signals through the various networks and the signals on network link 620 and through communication interface 618, which carry the digital data to and from computer system 600, are example forms of transmission media.
- Computer system 600 can send messages and receive data, including program code, through the network (s) , network link 620 and communication interface 618.
- a server 630 might transmit a requested code for an application program through Internet 628, ISP 626, local network 622 and communication interface 618.
- the received code may be executed by processor 604 as it is received, and/or stored in storage device 610, or other non-volatile storage for later execution.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
A network access device emits and receives radio waves over which a user device uses as a physical media layer for establishing a data link to the network access device. The network access device joins in a mesh home content delivery network (a mesh home CDN) as a home CDN node. CDN cached content objects are received by the network access device from an upper level CDN. The CDN cached content objects are received by the upper level CDN from an origin server. The CDN cached content objects may be received by the network access device from the upper level CDN before the network access device has been requested to access any of the CDN cached content objects from any user device. The CDN cached content objects from the upper level CDN are cached in a local data repository of the network access device.
Description
TECHNOLOGY
The present invention relates generally to internet communications, and in particular to accelerating content delivery in a residence environment.
A content provider website such as “www. sina. com. cn” may work with a content delivery network (CDN) to cache contents from the content provider website and to distribute the contents to users of the content provider website across access networks to which computing devices of the users are connected.
Because of engineering limitations, network topologies, and resource deployment characteristics, the CDN with CDN nodes in core networks may or may not be able to deliver the contents of the content provider website to all individual users in a large user population with high performance and high availability. Some users may be located in places where the CDN may not have any CDN nodes proximate to the users. Some users may be located in places where the CDN does have some CDN nodes but those CDN nodes tack sufficient capacity to gracefully handle high user demands for popular content items of the content provider website.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section. Similarly, issues identified with respect to one or more approaches should not assume to have been recognized in any prior art on the basis of this section, unless otherwise indicated.
BRIEF DESCRIPTION OF DRAWINGS
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
FIG. 1 depicts an example configuration for accelerating content delivery in a residence environment;
FIG. 2 depicts an example mesh home CDN that comprises one or more home CDN nodes;
FIG. 3 illustrates example modules in home CDN nodes in a mesh home CDN;
FIG. 4A through FIG. 4E illustrate process flows that involve interactions of example modules in a home CDN node with other home CDN nodes, with non-home CDN nodes, etc. ;
FIG. 5A and FIG. 5B illustrates example process flows; and
FIG. 6 illustrates an example hardware platform on which a computer or a computing device as described herein may be implemented.
DESCRIPTION OF EXAMPLE EMBODIMENTS
Example embodiments, which relate to accelerating content delivery in a residence environment, are described herein. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, welt-known structures and devices are not described in exhaustive detail, in order to avoid unnecessarily occluding, obscuring, or obfuscating the present invention.
Example embodiments are described herein according to the following outline:
1. GENERAL OVERVIEW
2. STRUCTURAL OVERVIEW
3. MESH HOME CONTENT DELIVERY NETWORK
4. HOME-BASED CONTENT DELIVERY NETWORK NODES
5. OPERATIONS WITH HOME CDN INDEXER NODES
6. EXAMPLE PROCESS FLOW
7. IMPLEMENTATION MECHANISMS-HARDWARE OVERVIEW
8. EQUIVALENTS, EXTENSIONS, ALTERNATIVES AND MISCELLANEOUS
1. GENERAL OVERVIEW
This overview presents a basic description of some aspects of an example embodiment of the present invention. It should be noted that this overview is not an extensive or exhaustive summary of aspects of the example embodiment. Moreover, it should be noted that this overview is not intended to be understood as identifying any particularly significant aspects or elements of the example embodiment, nor as delineating any scope of the example embodiment in particular, nor the invention in general. This overview merely presents some concepts that relate to the example embodiment in a condensed and simplified format, and should be understood as merely a conceptual prelude to a more detailed description of example embodiments that follows below.
Techniques as described herein can be used to expedite accesses to CDN cached content objects in a residence environment. In some embodiments, content objects originated from content providers such as “www. sina. com. cn” , etc., can be cached by and served from CDN nodes (or cache servers) in an upper level CDN that has high performance and high reliability characteristics not encumbered by specific system limitations of the content providers. Consumer network access devices such as consumer class routers, consumer class switches, etc., which are ubiquitous in the residence environment, can connect with one another to form mesh home CDNs that connect with the upper level CDN, the content providers, etc. The mesh home CDNs may be configured to cache some or all of the content objects from various CDN nodes of the upper level CDN, the mesh home CDNs, the content providers, etc., in local caches of the mesh home CDNs. In response to receiving content access requests from user devices that are physically or directly connected (using a wired and/or wireless local connection) with the mesh home CDNs, the mesh home CDNs can serve the content objects from the local caches.
A mesh home CDN as described herein may be formed by a plurality of home CDN
nodes. In some embodiments, some or all of the home CDN nodes may be consumer network access devices that comprise wireless access point modules capable of connecting with one another wirelessly using any of a variety of flexible mesh network configurations such as partial mesh networks, full mesh networks, ad hoc networks, networks in various topologies such as ring topologies, star topologies, etc. In some embodiments, a mesh home CDN may grow up to, or be capped at, a preconfigured and/or reconfigurable size threshold (e.g., no more than a certain number of hops, no more than a maximum number of data links in any network path between any pair of home CDN nodes in the same mesh home CDN, etc. ) .
Any two home CDN nodes may exchange CDN related information, CDN cached content objects, content access requests, content access responses, etc. These exchanges may be carried out directly between the home CDN nodes, or indirectly through intermediate home CDN nodes.
A network access device as described herein may be reconfigured or installed with software, hardware, firmware, etc., to support some or all operations related to a mesh home CDN. Example components, modules, units, etc., implemented or represented by the software, hardware, firmware, etc., to which the network access device is reconfigured may include, but are not limited to,one or more of user request redirectors, CDN access agents, home CDN access interfaces, local data repositories comprising local CDN caches and home CDN system data stores, etc.
In some embodiments, home CDN nodes in a mesh home CDN may use their respective local data repositories, or home CDN system data stores therein, to maintain and share some or all home CDN system data to keep track of the home CDN nodes that are currently active in the mesh home CDN. The home CDN system data may be stored in system data structures, system objects, distributed hash tables, etc. and may comprise CDN system information that is node-specific, common to a mesh home CDN, common to several mesh home CDNs in a neighborhood, related to the upper level CDN, etc.
As a wireless signal such as radio waves emitted or received by a wireless access point module meets obstacles (e.g., walls, furnishings, physical objects, etc. ) , the signal deteriorates. Some or all of the network access devices configured to join in a mesh home CDN as home CDN nodes may collect, compute, analyze, track, store, exchange, etc., signal information or measurements related to signal strengths, signal characteristics (e.g., radio frequency bands, signal-to-noise ratios, etc. ) , etc., of their own wireless access point modules as well as their counterpart wireless access point modules. The signal information may be used to form interconnections between network access devices for the purpose of forming network topologies of mesh home CDNs.
Relatively frequent topological changes may occur in a mesh home CDN. The mesh home CDN as described herein can be configured to allow a home CDN node to dynamically attach or detach from the mesh home CDN in a manner that minimizes impact on in-progress processing of content access requests and is transparent to user devices from which the mesh home CDN receives content access requests (e.g., HTTP requests, etc. ) for CDN cached content objects. Each home CDN node in the mesh home CDN may be configured to determine or identify its next neighbor (s) or adjacent home CDN node (s) , etc., in the mesh home CDN, for example,
based on the home CDN system data shared and maintained by some or all of the home CDN nodes in the mesh home CDN.
A home CDN node as described herein supports a number of different options to access CDN cached content objects by user devices. For example, in response to receiving a content access request for a content object from a user device, a home CDN node can send the requested content object as a CDN cached content object from a local CDN cache of the home CDN node to the user device, if such a CDN cached content object exists in the local CDN cache. In another embodiment, the home CDN node can access and retrieve the requested content object as a CDN cached content object from a local CDN cache of another home CDN node in the same mesh home CDN, and send the CDN cached content object to the user device. In yet another embodiment, the home CDN node can retrieve the requested content object as a CDN cached content object from a local CDN cache of another home CDN node in a different mesh home CDN, and send the CDN cached content object to the user device. Additionally, optionally, or alternatively, the home CDN node can retrieve the requested content object as a CDN cached content object from a local CDN cache of a non-home CDN node in an upper level CDN, and send the CDN cached content object to the user device. Further, the home CDN node can retrieve the requested content object from an origin server that originates the content object, and send the content object to the user device. These different options to access a content object may be sequentially, concurrently, etc., used by a home CDN node in response to receiving a content request or the content object from a user device.
Techniques as described herein allow CDN functionality to be merged or extended into residence environments by way of widely available consumer network access devices. Many benefits may be derived under these techniques. For example, access to content objects within a residence can be accelerated through CDN cached content objects in a local CDN cache of a home CDN node in the residence. Content access requests to content objects in local CDN caches of home CDN nodes in connected mesh home CDNs in a neighborhood can be redirected to and among the home CDN nodes in the neighborhood. Content objects (e.g., popular, already scheduled to be released, etc. ) can be distributed or pre-deposited into residences or neighborhoods before user devices in these residences or neighborhoods make any content access requests for these content objects. Content objects from a home CDN node in a mesh home CDN can be distributed or pre-deposited to other home CDN nodes in the same mesh home CDN before user devices connected with the other home CDN nodes in the same mesh home CDN make any content access requests for these content objects. Content objects from a mesh home CDN can be distributed or pre-deposited to other mesh home CDNs before user devices connected with these other mesh home CDNs make content access requests for these content objects.
As a result, content access requests actually sent to upper level CDNs and origin servers can be significantly reduced or eliminated. In some embodiments, only local network access operations that are confined to a residence, a physical neighborhood, a residence area, etc., are invoked. This decreases response times (or latencies) required for processing content access requests, increases performance and reliability in processing content access requests while significantly reducing reliance and workload on the upper level CDNs and/or the origin servers,
and hence enhances overall user experiences in content access related activities.
In some example embodiments, mechanisms as described herein form a part of an information processing system, including but not limited to any of: a network access device, a media codec, a media bitstreaming server, a media player, a media processing system, a computer server, a network switch, a network element, a router, a gateway, a computer cluster, an application server system, a database system, a handheld device, game machine, television, laptop computer, netbook computer, tablet computer, cellular radiotelephone, electronic book reader, point of sale terminal, desktop computer, computer workstation, computer kiosk, plug-in devices, media accessing devices, or various other kinds of terminals and media processing units.
Various modifications to the preferred embodiments and the generic principles and features described herein will be readily apparent to those skilled in the art. Thus, the disclosure is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features described herein.
2. STRUCTURAL OVERVIEW
FIG. 1 depicts an example configuration 100 for accelerating content delivery in a residence environment, which comprises a user device 108-1, a mesh home CDN 102, an upper level CDN 104, a content provider 106, etc. Some or all of the components, devices, systems, modules, etc., in the example configuration (100) of FIG. 1 may be operatively linked through one or more computer networks such as one or more of wide area networks (WANs) , local area networks (LANs) , customer premises networks (CPNs) , wireless networks, wireline networks, optical networks, non-optical networks, telecom networks, non-telecom networks, etc.
In some embodiments, the upper level CDN (104) comprises a plurality of non-home CDN nodes 104-1, 104-2, etc. A non-home CDN node as described herein refers to a cache server node in an upper level CDN (e.g., 104, etc. ) that is operated by a CDN service provider. Content objects of CDN service clients such as websites, portals, database systems, computer servers, etc., may be cached by the non-home CDN nodes (e.g., 104-1, 104-2, etc. ) in the upper level CDN (104) . These content objects may be served out as CDN cached content objects to user devices, home CDN nodes, etc., from the non-home CDN nodes (e.g., 104-1, 104-2, etc. ) . In some embodiments, the non-home CDN nodes in the upper level CDN (104) can be deployed in a wide variety of geographic locations, computer networks, parts of a computer network, etc. These non-home CDN nodes can be used to accelerate caching and distribution of content objects of websites, portals, database systems, computer servers, etc., relative to user devices located in various geographic locations, various computer networks, various parts of a computer network, etc.
The upper level CDN (104) may be hierarchical and comprise some non-home CDN nodes at a parent level, some non-home CDN nodes at an edge level, etc. It should be understood that in various embodiments the configuration (100) of FIG. 1 may be used to support accelerating content delivery in a residence environment to many user devices concurrently, serially, part concurrently part serially, etc.
In some embodiments, the content provider (106) comprises software, hardware, a combination of software and hardware, etc., configured to distribute one or more content objects
into the upper level CDN (104) for further distribution to user devices. For example, the content objects can be transmitted by the content provider (106) to one or more none-home CDN nodes (e.g., parent nodes, edge nodes, etc. ) in the upper level CDN (104) .
In some embodiments, the one or more non-home CDN nodes in the upper level CDN (104) can comprise software, hardware, a combination of software and hardware, etc., configured to receive content objects that was received by the upper level CDN (104) from content providers (e.g., 106, origin servers, etc. ) ; store/cache some or all of the received content objects in local data repositories (e.g., local to the non-home CDN nodes, etc. ) ; distribute some or all of the CDN cached content objects to one or more mesh home CDNs (e.g., 102, etc. ) , user devices, etc. ; etc. For example, some or all of the content objects (or CDN cached content objects) can be transmitted by the upper level CDN (104) or non-home CDN nodes therein to one or more home CDN nodes (e.g., 102-1, 102-2, 102-3, etc. ) in the mesh home CDN (102) .
In some embodiments, the mesh home CDN (102) is formed at least in part by, or comprises, home CDN nodes such as wireless and/or wired network access devices, etc., deployed in a residence environment (e.g., a neighborhood, an apartment building, a subdivision, a town, a village, a resort, a park, etc. ) . In an example, a home CDN node that is a part of the mesh home CDN (102) may comprise a wireless access point module that emits and receives radio waves over which one or more user devices (e.g., 108-1, etc. ) use as physical media layers for establishing data links to the home CDN node. In another example, a home CDN node that is a part of the mesh home CDN (102) may comprise one or more wired (e.g., plug-in, etc. ) interfaces which one or more user devices (e.g., 108-t, etc. ) use as physical media layers for establishing data links to the home CDN node.
The upper level CDN (t04) may, but is not limited to, deploy its nodes (e.g., non-home-based nodes, etc. ) such as 104-1, 104-2, etc., inside core networks, at core network edges that interface with access networks (e.g., 210-1 of FIG. 2, 210-2 of FIG. 2, etc. ) , etc. User devices (e.g., 108-1, etc. ) , mesh home CDNs (e.g., 102, etc. ) , etc., may be connected to CDNs (e.g., 104, etc. ) , internet content providers (e.g., the content provider 106, etc. ) , etc., via the access networks provided by respective service providers.
In some embodiments, the home CDN nodes (e.g., 102-1, 102-2, 102-3, etc. ) comprise software, hardware, a combination of software and hardware, etc., configured to receive CDN cached content objects such as those originally from the content provider (106) by way of non-home CDN nodes in the upper level CDN (104) ; store/cache some or all of the received CDN cached content objects in one or more local data repositories (e.g., local to the home CDN nodes, etc. ) ; retrieve from the local data repositories and transmit some or all of the CDN cached content objects to any of a wide variety of user devices such as the user device (108-1) in response to content access requests from the user devices; etc.
A content access request refers to a request for accessing or retrieving one or more content objects. Example content objects as described herein include, but are not limited to only, any of: internet-based data items (e.g., dynamic, static, dynamic in part, etc. ) such as internet-based documents, files, multimedia content items, media programs, movies, database objects, online transaction objects, media bitstreams, software releases, software patches and/or
bug fixes; etc.
In some embodiments, the user device (108-1) comprises software, hardware, a combination of software and hardware, etc., configured to interact with a user of the user device (108-1) via one or more user interface elements; based on user input from the user, retrieve content objects from one or more internet-based sources (e.g., CDN nodes in the CDN 104, etc. ) ; run one or more computer applications that access or retrieves content objects originated from content providers; etc.
In some embodiments, a user may provide user input that selects or causes one or more content objects to be accessed by the user device (108-1) . For example, the user may select a URL, which is a locator for one or more content objects, on a webpage displayed on the user device (108-1) , load or reload a webpage that comprises a URL referencing one or more content objects, etc. Based at least in part on the user input, the user device (108-1) sends a content access request for the one or more content objects.
A URL as described herein may identify or comprise a network location at which one or more content objects can be requested and received. In some embodiments, the network location identified by the URL may be a host name of an origin server that provides the one or more content objects to the upper level CDN (104) for distribution, a host name (e.g., a non-explicit IP address, a host name representing a node, a host name of a content request handler, etc. ) in the upper level CDN (1 04) , etc. In response to receiving the URL, the user device (108-1) , or a DNS client (e.g., HTTP, “nslookup” , “dig” , etc. ) thereon, may invoke a DNS resolution process that resolves the hostname to a host address (e.g., an explicit IP address, a host address representing a node, a host address of a content request handler, etc. ) in the upper level CDN (104) , etc. As used herein, a host address may refer to an explicit computer address such as an IP address, etc., that requires neither DNS name resolution nor URL redirection for communication.
Under techniques as described herein, consumer network access devices can establish data links with one another to form one or more mesh home CDNs that connect with one or more upper level CDNs, content providers, etc., cache some or all of the content objects in local caches in the mesh home CDNs, and serve content objects from various CDN nodes of the upper level CDN, the mesh home CDNs, the content providers, etc., to user devices that are physically connected (using a wired and/or wireless local connection) with the mesh home CDNs.
3. MESH HOME CONTENT DELIVERY NETWORK
FIG. 2 depicts an example mesh home CDN (e.g., 102, etc. ) that comprises one or more home CDN nodes (e.g., 102-1, 102-2, 102-3, etc. ) . In some embodiments, a home CDN node (e.g., 102-1, 102-2, etc. ) may, but is not required to, comprise a wireless access point module that emits and receives radio waves over which a user device (e.g., 108-1, 108-2, 108-3, etc. ) uses as a physical media layer for establishing a wireless data link (e.g., 216-1, 216-2, 216-3, etc. ) to the home CDN node (e.g., 102-1, 102-2, etc. ) .
Examples of wireless data links may include, but are not limited to only, any of data links established with wireless local area network or WLAN protocols, data links established with IEEE 802.11 protocols, data links established with Bluetooth protocols, data links established with wireless access procedures, etc.
Additionally, optionally, or alternatively, the home CDN node (e.g., 102-1, 102-2, etc. ) may comprise a wired interface (not shown) which a user device (e.g., 108-1, etc. ) uses as a physical media layer for establishing a wired data link to the home CDN node. Examples of wired data links may include, but are not limited to only, any of data links established with wired based Ethernet protocols, data links established with USB related protocols, etc.
In some embodiments, home CDN nodes in the mesh home CDN establish a number ofinterconnections such as peer-to-peer data links amongst themselves to form a mesh network in which CDN related information such as CDN system data, CDN cached content objects, etc., may be communicated between or amongst the home CDN nodes. For example, the home CDN node (102-1) may establish a peer-to-peer data link 214-1 with the home CDN node (102-2) ; the home CDN node (102-1) may establish a peer-to-peer data link 214-2 with the home CDN node (102-3) ; the home CDN node (102-2) may establish a peer-to-peer data link 214-3 with the home CDN node (102-3) .
In some embodiments, some or all of the peer-to-peer data links (214-1, 214-2, 214-3, etc. ) may, but are not required to, be wireless. For example, one or more of the home CDN node (102-1) , the home CDN node (102-2) , the home CDN node (102-3) may comprise respective wireless access point modules to act as wireless access points not only to user devices such as 108-1, 108-2, 108-3, etc., that are in radio wave ranges (e.g., 130 meters, 50 meters, etc. ) of the wireless access points, but also to other home CDN nodes that are in the radio wave ranges. Additionally, optionally, or alternatively, one or more of the home CDN node (102-1) , the home CDN node (102-2) , the home CDN node (102-3) may comprise respective wireless client modules to act (e.g., concurrently, etc. ) as wireless clients present in radio wave ranges of wireless access points.
In some embodiments, a home CDN node (e.g., 102-1, etc. ) may directly establish a peer-to-peer data link with another home CDN node (e.g., 102-2, etc. ) over radio waves emitted by a wireless access point module of the former home CDN node (e.g., 102-1, etc. ) . In some embodiments, a home CDN node (e.g., 102-1, etc. ) may directly establish a peer-to-peer data link with another home CDN node (e.g., 102-2, etc. ) over radio waves emitted by a wireless access point module of the latter home CDN node (e.g., 102-2, etc. ) . In some embodiments, a home CDN node (e.g., 102-1, etc. ) may indirectly establish a peer-to-peer data link with another home CDN node (e.g., 102-2, etc. ) over third radio waves emitted by a wireless access point module of an intermediate device such as an intermediate home CDN node (e.g., 102-3, etc. ) , etc.
For the purpose of illustration only, the peer-to-peer data link (214-1) may be wireless. One of the home CDN node (102-1 ) and the home CDN node (102-2) may take a role as a wireless client device to a wireless access point represented by the other of the home CDN node (102-1) and the home CDN node (102-2) .
In some embodiments, one or both of the home CDN node (102-1) and the home CDN node (102-2) may determine which of the home CDN node (102-1) and the home CDN node (102-2) is to be used as a wireless access point by the other home CDN node. Additionally, optionally, or alternatively, the upper level CDN (104) may determine or help a pair of the home CDN nodes determine which of the home CDN nodes in the pair is to be used as a wireless access
point by the other of the home CDN nodes in the pair.
Determining (e.g., by one of the home CDN nodes in a pair, by both of the home CDN nodes in the pair, by the upper level CDN, etc. ) which of the two home CDN nodes should act as an access point to the other in the pair may be based on a number of factors. The factors may be weighted differently, ranked differently, etc. Example factors may include but are not limited to only, any of: whether a radio frequency band is commonly supported by the home CDN nodes; whether a radio frequency is relatively capable of penetrating walls and obstacles, what is the power source for a home CDN node such as battery power sources, plug-in power sources, failure-protected power sources, etc., what is the internet connection bandwidth, quality of service, delay, error rate, etc., ofa home CDN node, how many user devices are connected to a home CDN node, how many and what types of applications are running on the home CDN node, whether user or system input has been received that specifies a preference for a home CDN node to be the access point for the other home CDN node (s) , etc. Some or all of these factors may be based on measurements of radio wave strengths, signal qualifies, signal characteristics, etc., which may be made and/or shared by the home CDN nodes.
In some embodiments, a home CDN node (e.g., 102-1, 102-2, etc. ) may, but is not required to, be connected with one or more access networks 210-1, 210-2, etc., over one or more wide area network (WAN) connections 212-1, 212-2, etc. As illustrated in FIG. 2, the home CDN node (102-1) may be connected with the access network (210-1) over the WAN connection (212-1 ) , whereas the home CDN node (102-2) may be connected with the access network (210-2) over the WAN connection (212-2) . These WAN connections or WAN data links may be used as parts of network paths between the home CDN nodes (102-1, t02-2, 102-3, etc. ) and non-home CDN nodes (e.g., 104-1 of FIG. 1, 104-2 of FIG. 1, etc. ) of the upper level CDN (104) . These non-home CDN nodes of the upper level CDN (104) may, but are not required to, be separated topologically from the home CDN nodes (102-1, 102-2, 102-3, etc. ) by one or more access networks (e.g., 210-1, 210-2, etc. ) .
A mesh home CDN as described herein may be formed by a plurality of home CDN nodes using any of a variety of flexible mesh network configurations such as partial mesh networks, full mesh networks, ad hoc networks, networks in ring topologies, networks in star topologies, network in different topologies, etc. In some embodiments, the mesh home CDN may be limited to at or below a certain size. For example, the mesh home CDN may be capped to a preconfigured and/or reconfigurable size threshold (e.g., no more than a maximum number of data links in any network path between any pair of home CDN nodes in the same mesh home CDN, etc. ) .
Any two home CDN nodes may exchange CDN related information, CDN cached content objects, content access requests, content access responses, etc., directly between the home CDN nodes, or indirectly through intermediate home CDN nodes.
A number of (e.g., user, system, etc. ) configuration operations may be performed at various time points to set up a network access device to take part in a peer-to-peer discovery process to discover other network access devices in a residence, in multiple residences of a neighborhood, etc., to join in or form a mesh home CDN with some or all of the other network
access devices, etc.
Some or all of the network access devices configured to join in a mesh home CDN as home CDN nodes may collect, compute, analyze, track, store, exchange, etc., signal information or measurements related to signal strengths, signal characteristics (e.g., radio frequency bands, signal-to-noise ratios, etc. ) , etc., of their own wireless access point modules as well as their counterpart wireless access point modules.
In some embodiments, home CDN nodes in a mesh home CDN may use their respective local data repositories, or home CDN system data stores therein, to maintain and share some or all home CDN system data to keep track of the home CDN nodes that are currently active in the mesh home CDN. The home CDN system data may be stored in system data structures, system objects, distributed hash tables, etc. and may comprise CDN system information that is node-specific, common to a mesh home CDN, common to several mesh home CDNs in a neighborhood, related to the upper level CDN, etc.
Additionally, optionally, or alternatively, the home CDN system data stores can be used by the home CDN nodes in a mesh home CDN to keep track of the home CDN nodes that have been configured with permissions to join the mesh home CDN, the home CDN nodes that were (e.g., recently, within a time window, etc. ) but are no longer in the mesh home CDN, etc.
Topological changes may sometimes occur in a mesh home CDN. The mesh home CDN as described herein can be configured to allow a home CDN node to dynamically attach or detach from the mesh home CDN in a manner that is transparent to user devices from which the mesh home CDN receives content access requests (e.g., HTTP requests, etc. ) for CDN cached content objects. Each home CDN node in the mesh home CDN may be configured to determine or identify its next neighbor (s) or adjacent home CDN node (s) , etc., in the mesh home CDN, for example, based on the home CDN system data shared and maintained by some or all of the home CDN nodes in the mesh home CDN.
In some embodiments, home CDN system data stores maintained or shared by a mesh home CDN can serve as a resource location directory. Based on a home CDN system data, a home CDN node may identify cache server locations where CDN cached resources such as CDN cached content objects, etc. are available for access. Example cache server locations for accessing CDN cached resource include, but are not limited to only, any of: non-home CDN nodes of an upper level (non-home) CDN operated by a CDN service provider, home CDN nodes operated in a mesh home CDN, local CDN caches, etc.
For example, a home CDN node in may determine, based on the home CDN system data store, whether a requested content object is a content object that has been distributed (e.g., before any content access requests from user devices have been made for the content object, etc. ) in the upper level CDN and the mesh home CDN for further distribution to user devices upon requests from the user devices. If so, which non-home CDN nodes, home CDN nodes, etc., may contain the requested content object as a CDN cached content object.
In some embodiments, a home CDN node (e.g., 102-3, etc. ) in a mesh home CDN (102) may be designated or elected as a home CDN indexer node. For example, when two network access devices initially establish an interconnection, these network access device may designate or
elect one of the network access device as the home CDN indexer node in an initial mesh home CDN formed by the two network access devices. As new network access devices join the mesh home CDN, and/or as existing home CDN nodes leave the mesh home CDN, the same network access device that has been designated as the home CDN indexer node may continue to be elected as the home CDN indexer node in the growing mesh home CDN, so long as the network access device has been alive in the mesh home CDN. Additionally, optionally, or alternatively, a reelection may be held among all home CDN nodes in the mesh home CDN when a new network access device joins the mesh home CDN, and/or as an existing home CDN node leaves the mesh home CDN.
A home CDN indexer node (e.g., 102-3, etc. ) may be designated (e.g., by a designated user, by the upper level CDN, etc. ) or elected (e.g., by the active home CDN nodes, etc. ) , based on one or more selection criteria, one or more selection algorithms, etc. The selection criteria, the selection algorithms, etc., can be weight based. Different network and operational properties of a network access device may be given different weight values. For example, a network access device that has a longer stable operating history, larger computing resources (e.g., CPU, persistent storage, main memory, etc. ) , a larger internet connection bandwidth, a higher quality-of-service internet connection, a wider wireless signal coverage, etc., may be given one or more higher weight values for being selected as the home CDN indexer node than another network access device that has a shorter stable operating history, smaller computing resources, a larger internet connection bandwidth, a higher quality-of-service internet connection, a narrower wireless signal coverage, etc.
In some embodiments, to reduce downtime that may be caused by a failure of the home CDN indexer node, another home CDN node (e.g., 102-2, etc. ) in the same mesh home CDN may be designated or elected as a backup home CDN indexer node. Additionally, optionally, or alternatively, the (active) home CDN indexer node (e.g., 102-3, etc. ) and the backup home CDN indexer node (e.g., 102-2, etc. ) may exchange home CDN state information so that the backup home CDN indexer node can take over in a relatively short time in case of a failure of the active home CDN indexer node.
In some embodiments, the home CDN indexer node is configured to keep home CDN state information. For example, the home CDN indexer node may keep real time or near real time operational information as to which home CDN nodes in the mesh home CDN (102) are alive and which home CDN nodes are off (e.g., detached from the mesh home CDN 102, etc. ) .
In some embodiments, home CDN nodes in a mesh home CDN as described herein may implement a heartbeat mechanism. In an example, a home CDN node such as the home CDN indexer node (e.g., 102-3) , etc., in a mesh home CDN (e.g., 102) may be configured to send ping requests to other home CDN nodes (e.g., 102-1, 102-2, etc. ) in the same mesh home CDN (102) from time to time, occasionally, at fixed time intervals, at adaptive time intervals, etc. When the home CDN node fails to receive a set number of contiguous ping responses from a pinged node, the home CDN node may determine that the pinged node has failed or detached from the mesh home CDN.
A ping request and/or a ping response as described herein may carry one or more portions of home CDN state information maintained by the home CDN indexer node and/or one or more portion of home CDN node information maintained by an individual home CDN node (e.g., a pinged node, etc. ) . In some embodiments, content access requests from a home CDN node within a time window may be used in lieu of ping responses in the time window by the home CDN indexer nodes to determine that the home CDN node is alive, thereby preventing excessive pinging of the home CDN node by the home CDN indexer node.
In some embodiments, the home CDN indexer node (e.g., 102-3, etc. ) may be configured to acquire and keep information on the capacity and configuration of each of the home CDN nodes (e.g., 102-1, 10-2-2, 102-3, etc. ) in the mesh home CDN (102) . Additionally, optionally, or alternatively, the home CDN indexer node (e.g., 102-3, etc. ) may be configured to bookkeep one or more indexes of CDN cached contents that have been recently consumed (e.g., accessed, cached, distributed, pre-deposited, etc. ) on each of the home CDN nodes (e.g., 102-1, 10-2-2, 102-3, etc. ) in the mesh home CDN (102) . Some or all of the home CDN related information as described herein, as acquired and maintained by the home CDN indexer node (e.g., 102-3, etc. ) , may be shared with another node such as a backup home CDN indexer node in the same mesh home CDN (102) .
In some embodiments, a home CDN indexer node (e.g., 102-3, etc. ) in a mesh home CDN (e.g., 102, etc. ) may be a part of a hierarchical CDN indexer that may include one or more of backup home CDN indexer nodes in the same mesh home CDN (102) , other home CDN indexer nodes in one or more other mesh home CDNs, CDN indexer nodes of the upper level CDN, etc. The hierarchical CDN indexer may be used to prevent any single home CDN indexer node from becoming a reliability or performance bottleneck, especially if any of the mesh home CDNs may comprise a large number of nodes, a large amount of CDN cached content objects, etc. Additionally, optionally, or alternatively, in some embodiments, being a part of an overall hierarchical CDN indexer, a home CDN indexer node may, but is not required to, acquire and maintain specific details of which home CDN nodes in a neighboring mesh home CDN has which CDN resources consumed in the neighboring mesh home CDN. Rather, the home CDN indexer node in the mesh home CDN (102) may query another home CDN indexer node in the neighboring mesh home CDN (other than 102) to determine the specific details as necessary.
In some embodiments, a second heartbeat mechanism, a second backup mechanism, a second information sharing mechanism, etc. -other than or in addition to a heartbeat mechanism, a backup mechanism, an information sharing mechanism, etc., implemented in a single mesh home CDN-may be implemented over a plurality of physical networks by indexer nodes that form an overall hierarchical CDN indexer.
In some embodiments, each home CDN node (e.g., 102-1, 102-2, 103, etc. ) in a mesh home CDN (e.g., 102, etc. ) comprises a CDN cache. When a content access request is received by a home CDN node (e.g., 102-1, etc. ) , it is first determined whether content objects requested by the content access request are cached locally on the home CDN node or not. The request is satisfied from locally cached content objects if available.
On the other hand, if the requested content objects are not cached locally, and if the home CDN node (102-1) is not a home CDN indexer node, the request may be forwarded by the home CDN node (102-1) to a home CDN Indexer node (e.g., 102-3, etc. ) in the mesh home CDN (102) . The approach as described herein differ from some approaches under which no determination is made as to whether a request recipient has content objects, but rather directly goes to a specific CDN node or a local cache of the specific CDN node other than the recipient of the request.
In contrast, under techniques as described herein, the recipient home CDN node of the content access request, after first checking its local cache, forwards the request to a home CDN indexer node (e.g., as a part of a hierarchical CDN indexer, etc. ) that keeps track of node availability and content object availability in mesh home CDNs in which nodes are very dynamic, come and go regularly. The home CDN indexer node can intelligently figure out where the request should be forwarded to. The destination to which the request is forwarded may be one of a home CDN node in the same mesh CDN, a home CDN node in a neighboring mesh home CDN, a non-home CDN node in the upper level CDN, an origin server, etc. As a result, the request can be handled by an active CDN node that is closest to the requesting device, thereby significantly avoiding or reducing delays and errors in processing the request by home CDN nodes. Thus, CDN node indexing techniques as described herein can be used to provide robust processing of content access requests and satisfying user experiences in mesh home CDNs.
4. HOME-BASED CONTENT DELIVERY NETWORK NODES
FIG. 3 illustrates example modules in home CDN nodes (e.g., 102-1, 102-2, etc. ) in a mesh home CDN (e.g., 102, etc. ) . FIG. 4A illustrates a process flow that involves interactions of example modules in a home CDN node with other home CDN nodes, with non-home CDN nodes in an upper level CDN, etc.
As illustrated in FIG. 3, each of the home CDN nodes (e.g., 102-1, 102-2, etc. ) may comprise a user request redirector (e.g., 306-1, 306-2, etc. ) , a CDN access agent (e.g., 302-1, 302-2, etc. ) , a home CDN access interface (e.g., 304-1, 304-2, etc. ) , a local data repository (e.g., 308-1, 308-2, etc. ) comprising a local CDN cache (not shown) and a home CDN system data store (not shown) , etc. Each of these modules in a home CDN node may be implemented using software, hardware, a combination of software and hardware, etc.
Each of the home CDN nodes (e.g., 102-1, 102-2, etc. ) , or the home CDN access interface (e.g., 304-1, 304-2, etc. ) therein, may establish one or more home CDN communication channels with one or more other home CDN nodes, for example, over one or more peer-to-peer data links (e.g., 214-1 of FIG. 2, 214-2 of FIG. 2, 214-3 of FIG. 2, etc. ) . In some embodiments, each of the home CDN nodes (e.g., 102-1, 102-2, etc. ) , or the home CDN access interface (e.g., 304-1, 304-2, etc. ) therein, may establish one or more remote CDN communication channels with an upper level CDN (e.g., 104 of FIG. 1, etc. ) or one or more non-home CDN nodes (e.g., 104-1, 104-2, etc. ) therein, for example, over one or more WAN data links (e.g., 212-1 of FIG. 2, 212-2 of FIG. 2, etc. ) .
In some embodiments, a local data repository (e.g., 308-1, 308-2, etc. ) comprises software, hardware, a combination of hardware and software, etc., configured to maintain the
local CDN cache, the home CDN system data store, etc. The local data repository can be configured to support data access operations, data modification operations, data creation operations, etc., related to information or data maintained in the local data repository. In some embodiments, CDN cached objects, home CDN system data, etc., in the local data repository may be dynamically updated as changes to the CDN cached objects, home CDN system data, etc., occur.
In block 402 of FIG. 4A, a user request redirector (e.g., 306-1, etc. ) in a home CDN node (e.g., 102-1, etc. ) of a mesh home CDN (e.g., 102, etc. ) receives, from a user device (e.g., 108-1, etc. ) , a content access request (e.g., a HTTP request, etc. ) for one or more content objects. The user request redirector (306-1) may be implemented with iptables, network filters, etc.
In block 404, the user request redirector (306-1) redirects the content access request (e.g., with a redirected HTTP request, etc. ) to a CDN access agent (e.g., 302-1, etc. ) in the home CDN node (102-1) . The content access request may comprise a resource locator such as a URL, etc., that represents a network address at which the one or more content objects are to be accessed. The URL may comprise a host name that is remote to the home CDN node (102-1) , remote to the mesh home CDN (102) or all the home CDN nodes therein, etc. For example, the host name may be in a network domain of one of a content provider, an origin server, the upper level CDN (104) , a non-home CDN node (e.g., 104-1, 104-2, etc. ) , etc. Redirecting a content access request as described herein may, but is not limited to, be based on DNS processes and/or URL redirections (e.g., based on a HTTP error code such as 301 or 402, etc. ) .
In block 406, in response to receiving, from a user device (e.g., 108-1, etc. ) , a redirected content access request for one or more content objects, the CDN access agent (302-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects. The CDN access agent (302-1) may be implemented as a transparent proxy, etc.
In some embodiments, the one or more content objects (e.g., which may be anticipated to be popular at a later time, etc. ) may b e distributed or pre-deposited by the upper level CDN (104) to the mesh home CDN (102) or home CDN nodes therein in advance of the mesh home CDN (102) or the home CDN nodes therein receiving any content access request for any of the one or more content objects. For example, in response to receiving a request from a content provider or an origin server to distribute the one or more content objects, the upper level CDN (104) may be configured to distribute the one or more content objects to not only non-home CDN nodes (e.g., 104-1, 104-2, etc. ) but also home CDN nodes (e.g., 102-1, 102-2, etc. ) in mesh home CDNs (e.g., 102, etc. ) . As a result, CDN cached content objects corresponding to the one or more content objects can distributed to and cached by the home CDN nodes (e.g., 102-1, 102-2, etc. ) in advance of content access requests generated by user devices.
Additionally, optionally, or alternatively, in some embodiments, the one or more content objects may be stored in the local CDN cache when a previous content access request for the one or more content objects was made, received or processed.
In block 408, the CDN access agent (302-1) determines whether the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) comprises the one or more
content objects as CDN cached content objects.
In response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) does not comprise the one or more content objects as CDN cached content objects, the process flow goes to block 410. Otherwise, in response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) comprises the one or more content objects as CDN cached content objects, the process flow goes to block 426.
In block 410, the CDN access agent (302-1) invokes the home CDN access interface (304-1) to determine whether any of the home CDN nodes (e.g., 102-2, 102-3, etc. ) in the mesh home CDN (102) has stored or cached the one or more content objects as CDN cached content objects in their respective local CDN caches.
In block 4t2, the home CDN access interface (304-1) sends, to some or all of the other home CDN nodes (e.g., 102-2, 102-3, etc. ) in the mesh home CDN (102) over one or more peer-to-peer data links or communication channels (e.g., 214-1 of FIG. 2, 214-2 of FIG. 2, 214-3 of FIG. 2, etc. ) , one or more mesh home CDN resource access requests for the one or more content objects requested by the user device (108-1) .
In block 414, the home CDN access interface (304-1) receives, from the other home CDN nodes (e.g., 102-2, 102-3, etc. ) in the mesh home CDN (102) to which the mesh home CDN resource access requests were sent, one or more mesh home CDN resource access responses.
In response to receiving the mesh home CDN resource access responses, the home CDN access interface (304-1) determines whether any of these responses comprises the one or more content objects as CDN cached content objects in the other home CDN nodes (e.g., 102-2, 102-3, etc. ) in the mesh home CDN (102) .
In response to determining that at least one of the mesh home CDN resource access responses does not comprise the one or more content objects, the process flow goes to block 420. Otherwise, in response to determining that at least one of the mesh home CDN resource access responses comprises the one or more content objects, the process flow goes to block 416, in which the home CDN access interface (304-1) stores and/or caches the received one or more content objects in the local CDN cache of the local data repository (308-1) .
In block 418, the CDN access agent (302-1) is notified (e.g., by the home CDN access interface 304-1, etc. ) of the fact that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) comprises the one or more content objects as CDN cached content objects. In response, the CDN access agent (302-1) retrieves the one or more content objects as CDN cached content objects from the local CDN cache of the local data repository (308-1) , and the process flow proceeds to block 426.
In block 420, the CDN access agent (302-1) sends, to the upper level CDN (104) or a host address therein over a WAN data link (e.g., 212-1 of FIG. 2, 212-2 of FIG. 2, etc. ) , a non-home CDN resource access request (e.g., an HTTP proxy request, etc. ) for the one or more content objects requested by the user device (1 08-1) . The non-home CDN resource access request may or may not be the same as the content access request as received from the user device (108-1 ) . The non-home CDN resource access request may comprise a resource locator such as a URL, etc., that represents a network address at which the one or more content objects are to be accessed, and
comprises a host name that is remote to the home CDN node (102-1) , remote to the mesh home CDN (102) or all the home CDN nodes therein, etc. For example, the host name may be in a network domain of the upper level CDN (104) or a non-home CDN node (e.g., 104-1, 104-2, etc. ) therein.
In block 422, the CDN access agent (302-1) receives, from the upper level CDN (104) or the non-home CDN node (e.g., 104-1, 104-2, etc. ) in the upper level CDN (104) to which the non-home CDN resource access request was sent, one or more non-home CDN resource access responses (e.g., HTTP responses, etc. ) .
In response to receiving the mesh home CDN resource access responses, the CDN access agent (302-1) determines whether the non-home CDN resource access responses comprise the one or more content objects as CDN cached content objects in the upper level CDN (104) . In response to determining that the non-home CDN resource access responses do not comprise the one or more content objects, the CDN access agent (302-1) proceeds to retrieve the one or more content objects from a content provider or an origin server and store/cache the one or more content objects in the local CDN cache of the local data repository (308-1) ifthe host name of the content access request from the user device (108-1) so specifies, and the process flow goes to block 426.
In response to determining that the non-home CDN resource access responses comprise the one or more content objects, in block 424, the CDN access agent (302-1) stores and/or caches the received one or more content objects in the local CDN cache of the local data repository (308-1) , and the process flow goes to block 426.
In block 426, the CDN access agent (302-1) generates one or more content access responses (e.g., HTTP responses, etc. ) , which comprise the one or more content objects if these objects have been successfully retrieved, or an error indication if these objects have not been successfully retrieved. The CDN access agent (302-1) proceeds to send the one or more content access responses to the user request redirector (306-1) , which in turn forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) in block 428.
In some embodiments, multiple CDN nodes (e.g., home CDN nodes, non-home CDN nodes, etc. ) may store the requested content object as a CDN cached content object in their respective (e.g., local, etc. ) CDN caches, as indicated by the system CDN system data stores shared or maintained by the mesh home CDN.
In response to receiving a content access request from a user device, a home CDN node may, but is not required to, send a single redirected content access request to one of the multiple CDN nodes at any given time. For example, the home CDN node may first attempt to retrieve the requested content from its local CDN cache without involving other CDN nodes. If that is not successful, the home CDN node may access other home CDN nodes (e.g., based on a ranking order generated based on the home CDN system data store, etc. ) in the same mesh home CDN for the requested content object. If that is still not successful, the home CDN node may access home CDN nodes in a different mesh home CDN, non-home CDN nodes in an upper level CDN, content providers, origin servers, etc., for the requested content object.
Additionally, optionally, or alternatively, in response to receiving a content access
request for a content object from a user device, a home CDN node may send two or more concurrent redirected content access requests to two or more of the multiple CDN nodes that have cached the content object according to information in the home CDN system data store. The home CDN node may dynamically maintain, terminate, etc., any CDN data access session that has been (e.g., concurrently, etc. ) initiated by the concurrent redirected content access requests once the home CDN node determines that the content object is to be retrieved from a particular CDN node. For example, the home CDN node may determine from performance management information in the hone CDN system data store that a particular home CDN node in two or more CDN nodes that have started responding to the redirected content access requests is optimal among all the CDN nodes for accessing the requested content object as a CDN cached content object. Hence the home CDN node may select the particular home CDN node over the others of the multiple CDN nodes to provide the requested content object.
5. OPERATIONS WITH HOME CDN INDEXER NODES
FIG. 4B through FIG. 4E illustrate process flows that involves an example home CDN indexer node with home CDN nodes, with non-home CDN nodes in an upper level CDN, with origin servers, etc.
As in FIG. 4A, in block 402 of FIG. 4B, a home CDN node (e.g., 102-1, etc. ) of a mesh home CDN (e.g., 102, etc. ) , or a user request redirector (e.g., 306-1, etc. ) therein, receives from a user device (e.g., 108-1, etc. ) a content access request (e.g., a HTTP request, etc. ) for one or more content objects.
In block 432, in response to receiving the content access request from the user device (108-1) , the home CDN node (102-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects. In response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) does not comprise the one or more content objects as CDN cached content objects, the home CDN node (102-1) sends a CDN index request to a home CDN indexer node in the mesh home CDN (102) . For the purpose of illustration only, the home CDN indexer node is the home CDN node (102-3) . The CDN index request comprises a request for obtaining a CDN node that has the one or more content objects as CDN cached content objects. The home CDN indexer node or the home CDN node (102-3) in the present example may be configured to maintain a directory of cached content objects consumed by or available from each home CDN node in the mesh home CDN. Based on the directory of cached content objects, the home CDN indexer node or the home CDN node (102-3) in the present example can determine whether a specific home CDN node in the mesh home CDN has the requested content objects in local cache.
In some embodiments, if the home CDN indexer node or the home CDN node (102-3) in the present example is unable to produce a CDN index response that indicates a home CDN node in the same mesh home CDN (102) for the requested content objects, the process flow of FIG. 4B goes to block 440 of FIG. 4C.
In block 434, the home CDN node (102-1) receives, from the home CDN indexer node or the home CDN node (102-3) in the present example, a CDN index response. For the purpose of illustration, the CDN index response may indicate that a home CDN node in the same mesh home
CDN (102) , for example, the home CDN node (102-2) , has the one or more content objects as CDN cached content objects in a local CDN cache of the home CDN node (102-2) .
In block 436, in response to receiving the CDN index response that indicates the home CDN node (102-2) in the same mesh home CDN (102) , the home CDN node (102-1) sends, to the home CDN node (102-2) , a home CDN resource access request (e.g., an HTTP request, etc. ) for the one or more content obj ects requested by the user device (108-1) .
Additionally, optionally, or alternatively, instead of transmitting the CDN index request from the home CDN node (102-1) to the home CDN indexer node in block 432 and transmitting the CDN index response from the home CDN indexer node to the home CDN node (102-1) in block 434, the home CDN indexer node or the home CDN node (102-3) in the present example may receive in block 432 the content access request forwarded from the home CDN node (102-1) , and in rurn directly forward in blocks 434 and 436 the content access request further to the home CDN node (102-2) in response to determining that the home CDN node (102-2) has the requested content objects in its local cache.
In block 438, the home CDN node (102-1) receives, from the home CDN node (102-2) , one or more home CDN resource access responses (e.g., HTTP responses, etc. ) . The home CDN resource access responses from the home CDN node (102-2) comprise the one or more content objects. In response, the home CDN node (102-1) stores/caches the one or more content objects in its local CDN cache, and the process flow goes to block 428, in which the home CDN node, or a user request redirector (306-1) therein, forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) .
FIG. 4C illustrates another example process flow. As in FIG. 4B, in blocks 402 and 432 of FIG. 4C, a home CDN node (e.g., 102-1, etc. ) of a mesh home CDN (e.g., 102, etc. ) , or a user request redirector (e.g., 306-1, etc. ) therein, receives from a user device (e.g., 108-1, etc. ) a content access request (e.g., a HTTP request, etc. ) for one or more content objects. In response to receiving the content access request from the user device (108-1) , the home CDN node (102-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects. In response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) does not comprise the one or more content objects as CDN cached content objects, the home CDN node (102-1) sends a CDN index request to a home CDN indexer node in the mesh home CDN (102) , which is, for the purpose of illustration, the home CDN node (102-3) . The CDN index request comprises a request for obtaining a CDN node that has the one or more content objects as CDN cached content objects.
In response to receiving the CDN index request, the home CDN indexer node determines whether a home CDN node in the same mesh home CDN has the one or more content objects as CDN cached content objects. In response to determining that none of home CDN nodes in the same mesh home CDN has the one or more content objects as CDN cached content objects, the home CDN indexer node proceeds to determine whether one of a home CDN node in a neighboring mesh home CDN, a non-home (or standard) CDN node in an upper level CDN, etc., has the one or more content objects as CDN cached content objects.
If it is determined that multiple CDN nodes have the one or more content objects as CDN cached content objects, the home CDN indexer node may apply one or more selection criteria to select a specific CDN node among the multiple CDN nodes. For example, the home CDN indexer node may, but is not necessarily limited to only, select a home CDN node in a neighboring mesh home CDN if available.
In some embodiments, home CDN indexer nodes in one or more mesh home CDNs form a hierarchical CDN indexer. This is useful in preventing a single home CDN indexer node from becoming a bottleneck, especially when the mesh home CDNs comprise a large number of nodes, a large amount of CDN cached content objects, etc. Additionally, optionally, or alternatively, in some embodiments, a home CDN indexer node, which is a part of the hierarchical CDN indexer, need not keep specific details of which home CDN nodes in a neighboring mesh home CDN has which resources. Rather, the home CDN indexer node may query another home CDN indexer node in the neighboring mesh home CDN to determine the specific details on an as-needed basis.
As illustrated in block 440 of FIG. 4C, in response to determining that none of home CDN nodes in the same mesh home CDN has the one or more content objects as CDN cached content objects, the home CDN indexer node in the mesh home CDN (102) , which in the present example is the home CDN node (102-3) , sends a second CDN index request to a second home CDN indexer node in a second mesh home CDN (e.g., a neighboring mesh home CDN to 102, etc. ) , which is, for the purpose of illustration, the home CDN node (102-5) . The second CDN index request comprises a request for obtaining a CDN node in the second mesh home CDN that has the one or more content objects as CDN cached content objects.
In block 442, the home CDN node (102-3) receives, from the second home CDN indexer node (102-5) in the second mesh home CDN, a CDN index response. For the purpose of illustration, the CDN index response may indicate that a home CDN node 102-4 in the second mesh home CDN has the one or more content objects as CDN cached content objects in a local CDN cache of the home CDN node (102-4) . In response to receiving the CDN index response from the second home CDN indexer node (102-5) in the second mesh home CDN, the home CDN node (102-3) may forward, or send a new CDN index response generated from, the CDN index response from the second home CDN indexer node (102-5) in the second mesh home CDN.
In some embodiments, ifthe home CDN indexer node or the home CDN node (102-3) in the present example does not receive a CDN index response that indicates a home CDN node in another mesh home CDN for the requested content objects, the process flow of FIG. 4C goes to block 450 of FIG. 4D.
In block 434, the home CDN node (102-1) receives, from the home CDN indexer node or the home CDN node (102-3) , the CDN index response or the new CDN index response, which indicates that the second home CDN node (102-4) in the second mesh home CDN has the one or more content objects as CDN cached content objects in a local CDN cache of the home CDN node (102-4) .
In block 444, in response to receiving the CDN index response that indicates the second home CDN node (102-4) in the second mesh home CDN, the home CDN node (102-1)
sends, to the second home CDN node (102-4) , a home CDN resource access request (e.g., an HTTP request, etc. ) for the one or more content objects requested by the user device (108-1) .
Additionally, optionally, or alternatively, instead of transmitting the CDN index request from the home CDN node (102-1) to the home CDN indexer node in block 432 and transmitting the CDN index response from the home CDN indexer node to the home CDN node (102-1) in block 434, the home CDN indexer node or the home CDN node (102-3) in the present example may receive in block 432 the content access request forwarded from the home CDN node (t02-1) , and in turn directly forward in blocks 434 and 444 the content access request further to the second home CDN node (102-4) in response to determining that the second home CDN node (102-4) has the requested content objects in its local cache.
In block 446, the home CDN node (102-1) receives, from the second home CDN node (102-4) in the second mesh home CDN, one or more home CDN resource access responses (e.g., HTTP responses, etc. ) . The home CDN resource access responses from the second home CDN node (102-4) in the second mesh home CDN comprise the one or more content objects. In response, the home CDN node (102-1) stores/caches the one or more content objects in its local CDN cache, and the process flow goes to block 428, in which the home CDN node, or a user request redirector (306-1) therein, forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) .
FIG. 4D illustrates yet another example process flow. As in FIG. 4B and FIG. 4C, in blocks 402 and 432 of FIG. 4C, a home CDN node (e.g., 102-1, etc. ) of a mesh home CDN (e.g., 102, etc. ) , or a user request redirector (e.g., 306-1, etc. ) therein, receives from a user device (e.g., 108-1, etc. ) a content access request (e.g., a HTTP request, etc. ) for one or more content objects. In response to receiving the content access request from the user device (108-1 ) , the home CDN node (102-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects. In response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) does not comprise the one or more content objects as CDN cached content objects, the home CDN node (102-1) sends a CDN index request to a home CDN indexer node in the mesh home CDN (1 02) , which is, for the purpose of illustration, the home CDN node (102-3) . The CDN index request comprises a request for obtaining a CDN node that has the one or more content objects as CDN cached content objects.
In response to receiving the CDN index request, the home CDN indexer node determines whether a home CDN node in the same mesh home CDN has the one or more content objects as CDN cached content objects. In response to determining that none of home CDN nodes in the same mesh home CDN has the one or more content objects as CDN cached content objects, the home CDN indexer node or the home CDN node (102-3) in the present example proceeds to determine whether one of a home CDN node in a neighboring mesh home CDN, a non-home (or standard) CDN node in an upper level CDN, etc., has the one or more content objects as CDN cached content objects.
In some embodiments, the home CDN indexer node or the home CDN node (102-3) in the present example may be a part of a hierarchical CDN indexer that also includes one or more
non-home CDN indexer nodes in the upper level CDN. As illustrated in block 450 of FIG. 4C, the home CDN indexer node in the mesh home CDN (102) , or the home CDN node (102-3) in the present example, sends a third CDN index request to a non-home CDN indexer node in the upper level CDN, which is, for the purpose of illustration, the none-home CDN node (104-2) . The third CDN index request comprises a request for obtaining a non-home CDN node in the upper level CDN that has the one or more content objects as CDN cached content objects.
In block 452, the home CDN node (102-3) receives, from the non-home CDN indexer node (104-2) in the upper level CDN, a CDN index response. For the purpose of illustration, the CDN index response from the non-home CDN indexer node (104-2) may indicate that a non-home CDN node 104-1 in the second mesh home CDN has the one or more content objects as CDN cached content objects in a local CDN cache of the home CDN node (104-1) . In response to receiving the CDN index response from the non-home CDN indexer node (104-2) in the upper level home CDN, the home CDN node (102-3) may forward, or send a new CDN index response generated from, the CDN index response from the non-home CDN indexer node (104-2) in the upper level CDN.
In block 434, the home CDN node (102-1) receives, from the home CDN indexer node or the home CDN node (102-3) , the CDN index response or the new CDN index response, which indicates that the non-home CDN node (104-1) in the upper level CDN has the one or more content objects as CDN cached content objects in a local CDN cache of the non-home CDN node (104-1) .
In some embodiments, if the home CDN indexer node or the home CDN node (102-3) in the present example does not receive a CDN index response that indicates a non-home CDN node in the upper level CDN for the requested content objects, the process flow of FIG. 4D goes to block 464 of FIG. 4E.
In block 454, in response to receiving the CDN index response that indicates the non-home CDN node (104-1) in the upper level home CDN, the home CDN node (102-1) sends, to the non-home CDN node (104-1) , a non-home CDN resource access request (e.g., an HTTP proxy request, etc. ) for the one or more content objects requested by the user device (108-1) .
Additionally, optionally, or alternatively, instead of transmitting the CDN index request from the home CDN node (102-1) to the home CDN indexer node in block 432 and transmitting the CDN index response from the home CDN indexer node to the home CDN node (102-1) in block 434, the home CDN indexer node or the home CDN node (102-3) in the present example may receive in block 432 the content access request forwarded from the home CDN node (102-1) , and in turn directly forward in blocks 434 and 454 the content access request further to the non-home CDN node (104-1) in response to determining that the non-home CDN node (104-1 ) has the requested content objects in its local cache.
In block 456, the home CDN node (102-1) receives, from the non-home CDN node (104-1) in the upper level CDN, one or more non-home CDN resource access responses (e.g., HTTP responses, etc. ) . The non-home CDN resource access responses from the non-home CDN node (104-1) in the upper level CDN comprise the one or more content objects. In response, the home CDN node (102-1) stores/caches the one or more content objects in its local CDN cache,
and the process flow goes to block 428, in which the home CDN node, or a user request redirector (306-1) therein, forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) .
FIG. 4E illustrates an example process flow. As in FIG. 4B and FIG. 4C, in blocks 402 and 432 of FIG. 4C, a home CDN node (e.g., 102-1, etc. ) of a mesh home CDN (e.g., 102, etc. ) , or a user request redirector (e.g., 306-1, etc. ) therein, receives from a user device (e.g., 108-1, etc. ) a content access request (e.g., a HTTP request, etc. ) for one or more content objects. In response to receiving the content access request from the user device (108-1) , the home CDN node (102-1) performs a local search against a local CDN cache in a local data repository (e.g., 308-1, etc. ) in the home CDN node (102-1) for the one or more content objects. In response to determining that the local CDN cache of the local data repository (308-1) in the home CDN node (102-1) does not comprise the one or more content objects as CDN cached content objects, the home CDN node (102-1) sends a CDN index request to a home CDN indexer node in the mesh home CDN (102) , which is, for the purpose of illustration, the home CDN node (102-3) . The CDN index request comprises a request for obtaining a CDN node that has the one or more content objects as CDN cached content objects.
In response to receiving the CDN index request, the home CDN indexer node determines whether a home CDN node in the same mesh home CDN, a home CDN node in a neighboring mesh home CDN, a non-home (or standard) CDN node in an upper level CDN, etc., has the one or more content objects as CDN cached content objects.
In block 434, the home CDN node (1 02-1) receives, from the home CDN indexer node or the home CDN node (102-3) , a CDN index response which indicates that none of the same mesh home CDN, any neighboring connected mesh home CDNs, the upper level CDN, etc., has the requested content objects.
In response, in block 464, the home CDN node (102-1) sends, to an origin server such as 106, a non-CDN resource access request (e.g., an HTTP proxy request, etc. ) for the one or more content objects requested by the user device (t 08-1 ) .
In block 466, the home CDN node (102-1 ) receives, from the origin server (106) , one or more non-CDN resource access responses (e.g., HTTP responses, etc. ) . The non-CDN resource access responses from the origin server (106) comprise the one or more content objects. In response, the home CDN node (102-1) stores/caches the one or more content objects in its local CDN cache, and the process flow goes to block 428, in which the home CDN node, or a user request redirector (306-1) therein, forwards the one or more content access responses to the user device (108-1) as responses to the content access requests from the user device (108-1) .
6. EXAMPLE PROCESS FLOWS
FIG. 5A illustrates an example process flow. One or more computing devices or components may perform this process flow. In block 502, a network access device emits and receives radio waves over which a user device uses as a physical media layer for establishing a data link to the network access device.
In block 504, the network access device joins in a mesh home content delivery network (CDN) as a home CDN node.
In block 506, the network access device receives one or more CDN cached content objects from an upper level CDN. The one or more CDN cached content objects may be received by the upper level CDN from an origin server for distribution to non-home CDN nodes of the upper level CDN, and received by the network access device from the upper level CDN before the network access device has been requested to access any of the one or more CDN cached content objects from any user device.
In block 508, the one or more CDN cached content objects from the upper level CDN are cached in a local data repository of the network access device.
In an embodiment, the network access device is further configured to perform: receiving, from the user device, a content request for a first CDN cached content object in the one or more CDN cached content objects; in response to receiving the content request from the user device, retrieving the first CDN cached content object from the local data repository of the network access device; sending the first CDN cached content object as retrieved from the local data repository of the network access device to the user device as a response to the content request, etc.
In an embodiment, at least one of the one or more CDN cached content objects is received by the home CDN node from a non-home CDN node of the upper level CDN.
In an embodiment, at least one of the one or more CDN cached content objects is received by the home CDN node from a second home CDN node of the upper level CDN.
In an embodiment, the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over the radio waves emitted and received by the home CDN node.
In an embodiment, the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over second radio waves emitted and received by the second home CDN node.
In an embodiment, the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over third radio waves emitted and received by a third network access device.
FIG. 5B illustrates another example process flow. One or more computing devices or components may perform this process flow. In block 522, a network access device emits and receives radio waves over which a user device uses as a physical media layer for establishing a data link to the network access device.
In block 524, the network access device joins in a mesh home content delivery network (CDN) as a home CDN node. The network access device receives one or more CDN cached content objects from an upper level CDN. The mesh home CDN receives a distribution of a plurality of CDN cached content objects from an upper level CDN.
In block 526, the network access device stores at least a portion of a CDN resource directory. The CDN resource directory specifies a plurality of CDN cached content resource locators for one or more CDN cached content objects in the plurality of CDN cached content objects. The one or more CDN cached content objects are received by an upper level CDN from an origin server for distribution to non-home CDN nodes of the upper level CDN.
In an embodiment, the network access device is further configured to perform: receiving, from the user device, a content request for a first CDN cached content object in the one or more CDN cached content objects; in response to receiving the content request from the user device, retrieving a CDN cached content resource locator for the first CDN cached content object from the CDN resource directory; retrieving the first CDN cached content object at the CDN cached content resource locator; sending the first CDN cached content object as retrieved at the CDN cached content resource locator to the user device as a response to the content request; etc.
In an embodiment, the CDN cached content resource locator is one of two or more CDN cached content resource locators retrieved by the home CDN node from the CDN resource directory; the network access device is further configured to send two or more CDN content requests based on the two or more CDN cached content resource locators to two or more CDN nodes of the upper level CDN and the mesh home CDN.
In an embodiment, the two or more CDN content requests based on the two or more CDN cached content resource locators are concurrently sent to the two or more CDN nodes of the upper level CDN and the mesh home CDN.
In an embodiment, the two or more CDN content requests based on the two or more CDN cached content resource locators are sequentially sent to the two or more CDN nodes of the upper level CDN and the mesh home CDN.
In an embodiment, the two or more CDN nodes of the upper level CDN and the mesh home CDN comprises two or more of home CDN nodes, or non-home CDN nodes.
In an embodiment, the CDN cached content resource locator identifies a non-home CDN node of the upper level CDN.
In an embodiment, the CDN cached content resource locator identifies a second home CDN node of the upper level CDN.
In an embodiment, the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over the radio waves emitted and received by the home CDN node.
In an embodiment, the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over second radio waves emitted and received by the second home CDN node.
In an embodiment, the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over third radio waves emitted and received by a third network access device.
In various example embodiments, a system, an apparatus, or one or more other computing devices performs any or a part of the foregoing methods as described.
In an embodiment, a non-transitory computer readable storage medium, storing software instructions, which when executed by one or more processors cause performance of any of the foregoing methods.
In an embodiment, a computing device comprising one or more processors and one or more storage media storing a set of instructions which, when executed by the one or more processors, cause performance of any of the foregoing methods. Note that, although separate
embodiments are discussed herein, any combination of embodiments and/or partial embodiments discussed herein may be combined to form further embodiments.
7. IMPLEMENTATION MECHANISMS-HARDWARE OVERVIEW
According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.
For example, FIG. 6 is a block diagram that illustrates a computer system 600 upon which an example embodiment of the invention may be implemented. Computer system 600 includes a bus 602 or other communication mechanism for communicating information, and a hardware processor 604 coupled with bus 602 for processing information. Hardware processor 604 may be, for example, a general purpose microprocessor.
The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operation in a specific fashion. Such storage media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 610. Volatile media includes dynamic memory, such as main memory 606. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.
Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 602. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 604 for execution. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 600 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 602. Bus 602 carries the data to main memory 606, from which processor 604 retrieves and executes the instructions. The instructions received by main memory 606 may optionally be stored on storage device 610 either before or after execution by processor 604.
Network link 620 typically provides data communication through one or more
networks to other data devices. For example, network link 620 may provide a connection through local network 622 to a host computer 624 or to data equipment operated by an Internet Service Provider (ISP) 626. ISP 626 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 628. Local network 622 and Internet 628 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 620 and through communication interface 618, which carry the digital data to and from computer system 600, are example forms of transmission media.
The received code may be executed by processor 604 as it is received, and/or stored in storage device 610, or other non-volatile storage for later execution.
8. EQUIVALENTS, EXTENSIONS, ALTERNATIVES AND MISCELLANEOUS
In the foregoing specification, example embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Claims (27)
- A method, comprising:emitting and receiving, by a network access device via an antenna of the network access device, radio waves over which a user device uses as a physical media layer for establishing a data link to the network access device;joining, by the network access device, in a mesh home content delivery network (CDN) as a home CDN node;receiving, by the network access device, one or more CDN cached content objects from an upper level CDN, wherein the one or more CDN cached content objects are received by the upper level CDN from an origin server for distribution to non-home CDN nodes of the upper level CDN, wherein the one or more CDN cached content objects are received by the network access device from the upper level CDN before the network access device has been requested to access any of the one or more CDN cached content objects from any user device;caching the one or more CDN cached content objects from the upper level CDN in a local data repository of the network access device;wherein the method is performed by one or more computing devices.
- The method of Claim 1, further comprising:receiving, from the user device, a content request for a first CDN cached content object in the one or more CDN cached content objects;in response to receiving the content request from the user device,retrieving the first CDN cached content object from the local data repository of the network access device;sending the first CDN cached content object as retrieved from the local data repository of the network access device to the user device as a response to the content request.
- The method of Claim 1, wherein at least one of the one or more CDN cached content objects is received by the home CDN node from a non-home CDN node of the upper level CDN.
- The method of Claim 1, wherein at least one of the one or more CDN cached content objects is received by the home CDN node from a second home CDN node of the upper level CDN.
- The method of Claim 4, wherein the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over the radio waves emitted and received by the home CDN node.
- The method of Claim 4, wherein the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over second radio waves emitted and received by the second home CDN node.
- The method of Claim 4, wherein the home CDN node receives the at least one of the one or more CDN cached content objects over a peer-to-peer data link established in part over third radio waves emitted and received by a third network access device.
- A method, comprising:emitting and receiving, by a network access device via an antenna of the network access device, radio waves over which a user device uses as a physical media layer for establishing a data link to the network access device;joining, by the network access device, in a mesh home content delivery network (CDN) as a home CDN node, wherein the mesh home CDN receives a distribution of a plurality of CDN cached content objects from an upper level CDN;storing, by the network access device, at least a portion of a CDN resource directory in a local repository, wherein the CDN resource directory specifies a plurality of CDN cached content resource locators for one or more CDN cached content objects in the plurality of CDN cached content objects, wherein the one or more CDN cached content objects are received by an upper level CDN from an origin server for distribution to non-home CDN nodes of the upper level CDN;wherein the method is performed by one or more computing devices.
- The method of Claim 8, further comprising:receiving, from the user device, acontent request for a first CDN cached content object in the one or more CDN cached content objects;in response to receiving the content request from the user device,retrieving a CDN cached content resource locator for the first CDN cached content object from the CDN resource directory;retrieving the first CDN cached content object at the CDN cached content resource locator;sending the first CDN cached content object as retrieved at the CDN cached content resource locator to the user device as a response to the content request.
- The method of Claim 9, wherein the CDN cached content resource locator is one of two or more CDN cached content resource locators retrieved by the home CDN node from the CDN resource directory; and further comprising sending two or more CDN content requests based on the two or more CDN cached content resource locators to two or more CDN nodes of the upper level CDN and the mesh home CDN.
- The method of Claim 10, wherein the two or more CDN content requests based on the two or more CDN cached content resource locators are concurrently sent to the two or more CDN nodes of the upper level CDN and the mesh home CDN.
- The method of Claim 10, wherein the two or more CDN content requests based on the two or more CDN cached content resource locators are sequentially sent to the two or more CDN nodes of the upper level CDN and the mesh home CDN.
- The method of Claim 10, wherein the two or more CDN nodes of the upper level CDN and the mesh home CDN comprises two or more of home CDN nodes, or non-home CDN nodes.
- The method of Claim 8, wherein the CDN cached content resource locator identifies a non-home CDN node of the upper level CDN.
- The method of Claim 1, wherein the CDN cached content resource locator identifies a second home CDN node of the upper level CDN.
- The method of Claim 15, wherein the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over the radio waves emitted and received by the home CDN node.
- The method of Claim 15, wherein the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over second radio waves emitted and received by the second home CDN node.
- The method of Claim 15, wherein the home CDN node receives the first CDN cached content object over a peer-to-peer data link established in part over third radio waves emitted and received by a third network access device.
- A method, comprising:emitting and receiving, by a network access device via an antenna of the network access device, radio waves over which a user device uses as a physical media layer for establishing a data link to the network access device;joining, by the network access device, in a mesh home content delivery network (CDN) as a home CDN node;receiving, from the user device, acontent request for a content object;in response to determining that the content object does not exist in a local cache of the home CDN node, forwarding the content request from the user device to a home CDN indexer node in the mesh home CDN;receiving, from a CDN node that is determined by the home CDN indexer node, a CDN cached content resource locator for the content object;wherein the method is performed by one or more computing devices.
- The method of Claim 19, wherein the CDN node is a home CDN node in a neighboring mesh home CDN.
- The method of Claim 19, wherein the CDN node is a non-home CDN node in an upper level CDN.
- The method of Claim 19, wherein the home CDN indexer node is a part of a hierarchical indexer that comprises two or more indexer nodes in one or more of mesh home CDNs, or an upper level CDN.
- The method of Claim 19, wherein the home CDN indexer node is configured to keep track of active home CDN nodes in the mesh home CDN.
- The method of Claim 19, wherein the home CDN indexer node is configured to keep track of CDN cached content objects in the mesh home CDN.
- A system performing any of the methods as recited in Claims 1-24.
- A non-transitory computer readable storage medium, storing software instructions, which when executed by one or more processors cause performance of the method recited in any of Claims 1-24.
- A computing device comprising one or more processors and one or more storage media, storing a set of instructions, which when executed by one or more processors cause performance of the method recited in any of Claims 1-24.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/095647 WO2016106596A1 (en) | 2014-12-30 | 2014-12-30 | Accelerating content delivery in a residence environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/095647 WO2016106596A1 (en) | 2014-12-30 | 2014-12-30 | Accelerating content delivery in a residence environment |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016106596A1 true WO2016106596A1 (en) | 2016-07-07 |
Family
ID=56283872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2014/095647 WO2016106596A1 (en) | 2014-12-30 | 2014-12-30 | Accelerating content delivery in a residence environment |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2016106596A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114389942A (en) * | 2022-01-11 | 2022-04-22 | 北京金山云网络技术有限公司 | CDN configuration method and device, electronic equipment and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102244644A (en) * | 2010-05-11 | 2011-11-16 | 华为技术有限公司 | Method and device for releasing multimedia file |
WO2012103515A1 (en) * | 2011-01-28 | 2012-08-02 | Level 3 Communications, Llc | Content delivery network with deep caching infrastructure |
US20130018978A1 (en) * | 2011-01-28 | 2013-01-17 | Level 3 Communications, Llc | Content delivery network with deep caching infrastructure |
CN103581248A (en) * | 2012-07-31 | 2014-02-12 | 中兴通讯股份有限公司 | Method and device for providing content distribution network CDN service |
-
2014
- 2014-12-30 WO PCT/CN2014/095647 patent/WO2016106596A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102244644A (en) * | 2010-05-11 | 2011-11-16 | 华为技术有限公司 | Method and device for releasing multimedia file |
WO2012103515A1 (en) * | 2011-01-28 | 2012-08-02 | Level 3 Communications, Llc | Content delivery network with deep caching infrastructure |
US20130018978A1 (en) * | 2011-01-28 | 2013-01-17 | Level 3 Communications, Llc | Content delivery network with deep caching infrastructure |
CN103581248A (en) * | 2012-07-31 | 2014-02-12 | 中兴通讯股份有限公司 | Method and device for providing content distribution network CDN service |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114389942A (en) * | 2022-01-11 | 2022-04-22 | 北京金山云网络技术有限公司 | CDN configuration method and device, electronic equipment and storage medium |
CN114389942B (en) * | 2022-01-11 | 2024-06-04 | 北京金山云网络技术有限公司 | CDN configuration method and device, electronic equipment and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693716B2 (en) | Independent datastore in a network routing environment | |
EP3391628B1 (en) | Use of virtual endpoints to improve data transmission rates | |
US10348639B2 (en) | Use of virtual endpoints to improve data transmission rates | |
JP6302050B2 (en) | System and method for improved discovery | |
CN107250999B (en) | Distributed content discovery with in-network caching | |
EP2922274B1 (en) | Finding services in a service-oriented architecture (SOA) network | |
US20170180217A1 (en) | Use of virtual endpoints to improve data tranmission rates | |
CN104618506A (en) | Crowd-sourced content delivery network system, method and device | |
US20120191778A1 (en) | Content distribution network for supporting peer-to-peer live streaming | |
US10305729B2 (en) | Systems and methods of providing an edge cloud storage and caching system operating over a local area network | |
US9209991B1 (en) | Ad hoc networking | |
CN109644160B (en) | Hybrid method for name resolution and producer selection in ICN by classification | |
US10862858B2 (en) | Information centric approach in achieving anycast in machine type communications | |
WO2016106596A1 (en) | Accelerating content delivery in a residence environment | |
EP4057577B1 (en) | Addressing method and addressing apparatus | |
EP2913979A1 (en) | A method and system to process traffic optimization requests | |
WO2016074148A1 (en) | Method and system for domain name load balancing | |
Paul et al. | Performance challenges of decentralised services | |
Islam | A peer-to-peer network architecture for emerging applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14909407 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 14909407 Country of ref document: EP Kind code of ref document: A1 |