US20140164584A1 - Selecting a content delivery network - Google Patents
Selecting a content delivery network Download PDFInfo
- Publication number
- US20140164584A1 US20140164584A1 US13/707,874 US201213707874A US2014164584A1 US 20140164584 A1 US20140164584 A1 US 20140164584A1 US 201213707874 A US201213707874 A US 201213707874A US 2014164584 A1 US2014164584 A1 US 2014164584A1
- Authority
- US
- United States
- Prior art keywords
- cdn
- network
- request
- traffic
- user device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H04L12/5689—
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- 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/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1021—Server selection for load balancing based on client or server locations
-
- 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/52—Network services specially adapted for the location of the user terminal
Definitions
- the server can respond slowly for many reasons. For example, the server may be busy processing hundreds or thousands of similar requests.
- the network bandwidth may not be large enough to handle traffic beyond a certain threshold; or the server may be located, logically or physically, far from the client.
- FIG. 1 illustrates an exemplary network in which concepts described herein may be implemented
- FIG. 2 illustrates exemplary components of one of the network devices of FIG. 1 ;
- FIG. 3 illustrates exemplary functional components of the exemplary topology manager of FIG. 1 ;
- FIG. 4 illustrates exemplary message paths that are associated with a single stage content distribution network selection process
- FIG. 5 illustrates exemplary message paths that are associated with a dual stage content distribution network selection process
- FIG. 6 illustrates exemplary records in the exemplary content distribution network database of FIG. 3 ;
- FIG. 7 illustrates exemplary records in the exemplary policy database of FIG. 3 ;
- FIG. 8 illustrates exemplary records in the exemplary content distribution network selection table of FIG. 3 ;
- FIG. 9 is a flow diagram of an exemplary process that is associated with operation of the content distribution network selection system of FIG. 1 ;
- FIG. 10 is a flow diagram of another exemplary process that is associated with operation of the contribution distribution selection system of FIG. 1 .
- content may include multimedia content, video content, audio content, web pages, programs, text, documents, images, pictures, etc.
- a typical service/content provider today may leverage its own content distribution network to fulfill user requests for content. However, there may be some situations in which it is more beneficial for the service/content provider to use a different content distribution network.
- each application that generates user requests for content typically needs to be integrated with or configured to operate with the available content distribution networks. This requirement renders using multiple content distribution networks difficult, due to the amount of time and effort required for the integration and configuration.
- a system may allow a user application to receive content from one of numerous content distribution networks (CDNs).
- CDNs content distribution networks
- the routing table may specify, for a particular set of state variable values (e.g., time, bandwidth, quality of service, etc.) for the CDNs, a list of ranked CDNs that may provide the content with the least/most latency, the highest/lowest cost, the maximum/minimum bandwidth, the least/most number of errors, etc., as well as paths/routes to the CDNs.
- state variable values e.g., time, bandwidth, quality of service, etc.
- FIG. 1 illustrates an exemplary network 100 in which concepts described herein may be implemented.
- network 100 may include: content distribution network (CDN) 102 - 1 through CDN 102 -M 1 (collectively “CDNs 102 ” and individually “CDN 102 ”); network 104 , which includes CDN selection system 106 ; user devices 112 - 1 through 112 -R (collectively “user devices 112 ” and individually “user device 112 ”), and administration device 114 .
- CDN content distribution network
- network 100 may include additional, fewer, different, or a different arrangement of components than those illustrated in FIG. 1 .
- functions that are described as being performed by one device may be performed by two or more other devices; and functions that are described as being performed by two or more devices may be performed by one device.
- network 100 may include other devices and/or components, such as gateways, bridges, switches, routers, server devices, etc.
- CDN 102 may include network server devices that store or cache copies of content/data and are placed at different geographic locations. CDN 102 may efficiently deliver content to user devices 112 . At a CDN 102 , each request for content may be handled by a device geographically close to the user device 112 requesting content.
- Network 104 may include the Internet, an intranet, a cloud network, a virtual private network (VPN), a software defined network (SDN), a service provider network, a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a cellular network, a public switched telephone network (PSTN), an optical network, an ad hoc network, any other network, or a combination of one or more networks.
- VPN virtual private network
- SDN software defined network
- SDN software defined network
- LAN local area network
- WAN wide area network
- MAN metropolitan area network
- PSTN public switched telephone network
- optical network an optical network
- ad hoc network any other network, or a combination of one or more networks.
- network 104 may include a CDN selection system 106 .
- CDN selection system 106 may select a CDN 102 for the user device 112 .
- the user device 112 may obtain the content from the selected CDN 102 at a cost, a delay, data errors, etc., less than those at which the user device 112 would obtain the content from other CDNs 102 .
- CDN selection system 106 may include a topology manager 108 and request router 110 - 1 through request router 110 -M (collectively “request routers 110 ” and individually “request router 110 ”). Depending on the implementation, CDN selection system 106 may include additional, fewer, different, or a different arrangement of devices than those illustrated in FIG. 1 .
- Topology manager 108 may receive CDN ranking policies (e.g., business rules) and CDN selection policies from administration device 114 and receive network data from devices in network 104 , generate or update a network model (e.g., topology). In addition, topology manager 108 may analyze traffic based on the received network data and the network model. CDN ranking policies and CDN selection policies are described below in greater detail.
- Topology manager 108 may derive a routing table, given the state variables, network data, and CDN ranking policies.
- the routing table may specify, for a particular set of state variables and/or network data (e.g., a network address of a domain name system server that requested the CDN address, the time of the request, bandwidths available to CDNs 102 , availability of particular content items, health status of CDNs 102 , load conditions of CDNs 102 , etc.), a list of ranked CDNs 102 that may provide the optimum delivery of a content item (e.g., the fastest download time).
- a particular set of state variables and/or network data e.g., a network address of a domain name system server that requested the CDN address, the time of the request, bandwidths available to CDNs 102 , availability of particular content items, health status of CDNs 102 , load conditions of CDNs 102 , etc.
- a list of ranked CDNs 102 that may provide the optimum
- Topology manager 108 may provide the routing table (“CDN routing table” or “CDN selection table”) to request routers 110 , by pushing the table to request routers 110 .
- topology manager 108 may provide the table upon receipt of a request from request routers 110 .
- topology manager 108 may provide CDN selection policies received from administration device 114 to request routers 110 .
- Request router 110 may receive a request to identify a CDN 102 from a domain name system (DNS). In response, request router 110 may provide, to the DNS, the network address of a CDN 102 based on the CDN selection policies and the CDN routing table from topology manager 108 .
- DNS domain name system
- request router 110 may delegate its role to or may operate in conjunction with web servers at CDNs 102 .
- request router 110 may send the selection policies, the CDN routing table, and/or a portion of the CDN routing table to the web servers that may use the selection policies and the table to provide a hypertext transfer protocol (HTTP) 302 redirect response to a user device 112 requesting content.
- HTTP hypertext transfer protocol
- a web server may identify, to a user device 112 , via a HTTP 302 redirect response, a CDN 102 that may provide an optimum delivery of content.
- Request router 110 may receive single-use tokens from user device 112 , and ensure that a request for content is honored by different CDNs 102 , by resigning a URL/URI or re-issuing a token. Request routers 110 may be distributed over different geographical locations, and each of request routers 110 may be interchangeable with another request routers 110 .
- User device 112 may include a handset, cellular phone, smart phone, personal computer, laptop computer, tablet computer, set-top box, gaming console, personal digital assistant (PDA), smart television (TV), and/or another type of communication and/or computational device that is capable of receiving and playing multimedia content.
- PDA personal digital assistant
- TV smart television
- user device 112 may follow one of two processes: a single stage CDN selection process or a dual stage CDN selection process.
- a single stage selection process user device 112 may make a single request to a CDN 102 identified by a DNS.
- the dual stage selection process user device 112 may make two requests to CDNs: one request to a first CDN that provides a HTTP 302 redirect response; and another request to a second CDN identified by the redirect response.
- User device 112 may send a request for content to the second CDN 102 and, in response, receive the content from the second CDN 102 .
- Administration device 114 may receive a list of CDNs 102 , policies, CDN ranking policies, CDN selection policies, configuration parameters that are associated with collecting network data and obtaining state variable values, etc. from an administrator/user via a graphical user interface (GUI). Administration device 114 may provide the list of CDNs, the policies, and the configuration parameters to topology manager 108 .
- GUI graphical user interface
- FIG. 2 is a block diagram of exemplary components of a network device 200 .
- Network device 200 may correspond to any of the devices illustrated in network 100 (e.g., request routers 110 , user devices 112 , and/or administration device 114 ) or to one or more server in CDNs 102 .
- network device 200 may include a processor 202 , memory 204 , storage unit 206 , input component 208 , output component 210 , network interface 212 , and communication path 214 .
- network device 200 may include additional, fewer, different, or different arrangement of components than the ones illustrated in FIG. 2 .
- network device 200 may include line cards for connecting to external buses.
- Processor 202 may include a processor, a microprocessor, an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), and/or other processing logic (e.g., embedded devices) capable of controlling device 200 , executing programs/instructions, etc.
- ASIC Application Specific Integrated Circuit
- FPGA Field Programmable Gate Array
- Memory 204 may include static memory, such as read only memory (ROM), and/or dynamic memory, such as random access memory (RAM), or onboard cache, for storing data and machine-readable instructions (e.g., programs, scripts, etc.).
- Storage unit 206 may include a floppy disk, CD ROM, CD read/write (R/W) disc, holographic versatile disc (HVD), digital versatile disc (DVD), and/or flash memory, as well as other types of storage devices (e.g., hard disk drive) for storing data and/or machine-readable instructions (e.g., a program, script, etc.).
- a “computer-readable storage device” or “computer-readable medium” may refer to both a memory and/or storage device.
- Input component 208 and output component 210 may provide input and output from/to a user to/from device 200 .
- Input/output components 208 and 210 may include a display screen, a keyboard, a mouse, a speaker, a microphone, a camera, a DVD reader, Universal Serial Bus (USB) lines, and/or other types of components for converting physical events or phenomena to and/or from signals that pertain to device 200 .
- USB Universal Serial Bus
- Network interface 212 may include a transceiver (e.g., a transmitter and a receiver) for device 200 to communicate with other devices and/or systems. For example, via network interface 212 , device 200 may communicate over a network, such as the Internet, an intranet, a terrestrial wireless network (e.g., a WLAN, WiFi, WiMax, etc.), a satellite-based network, optical network, etc.
- Network interface 212 may include a modem, an Ethernet interface to a LAN, and/or an interface/connection for connecting device 200 to other devices (e.g., a Bluetooth interface).
- Communication path 214 may provide an interface through which components of device 200 can communicate with one another.
- Network device 200 may perform the operations described herein in response to processor 202 executing software instructions stored in a non-transient computer-readable medium, such as memory 204 or storage device 206 .
- the software instructions may be read into memory 204 from another computer-readable medium or from another device via network interface 212 .
- the software instructions stored in memory 204 or storage device 206 when executed by processor 202 , may cause processor 202 to perform processes that are described herein.
- FIG. 3 is a block diagram of exemplary functional components of topology manager 108 .
- topology manager 108 may include a policy engine 302 , a data collector 304 , a network modeler 306 , a traffic analyzer 308 , a CDN database 310 , a network information database 312 , a policy database 314 , and a CDN selection database 316 .
- topology manager 108 may include additional, fewer, different, or a different arrangement of components than those illustrated in FIG. 3 .
- topology manager 108 may include other components, such as an operating system, communication modules, components for performing analytics (e.g., on network data) and/or reporting.
- Policy engine 302 may receive CDN policies from administration device 114 and store the received CDN policies in policy database 314 .
- policy engine 302 may edit, delete and/or process (e.g., compile or check for errors) the CDN policies stored in policy database 314 in response to user input via administration device 114 .
- the CDN policies may include CDN ranking policies and CDN selection policies.
- the CDN ranking policies include rules that policy engine 302 may apply to a list of CDNs to generate a CDN routing table, based on network data and state variable values.
- the CDN selection policies may include rules that policy engine 302 may provide to request routers 110 .
- Request routers 110 may apply the CDN selection policies to select a CDN 102 in response to a request from a DNS or to a request from a web server.
- policy engine 302 may distribute the CDN routing table to web servers hosted on CDNs 102 , rather than to request routers 110 .
- Data collector 304 may receive information for configuring network components for collecting data (e.g., Simple Network Management Protocol (SNMP) configuration parameters, Netflow configuration parameters, JFlow configuration parameters, scheduling information, etc.) from administration device 114 .
- Data collector 304 may store the configuration information in network information database 312 , and apply the received configuration information to data collection components (not shown), installed on devices in network 100 (e.g., servers, gateways, etc.).
- Data collector 304 may also collect network data received by the data collection components, and store the collected data in network information database 312 .
- Network modeler 306 may determine interconnectivity between networks (e.g., CDNs 102 ), peering points, and/or network devices based on network data and maintain/obtain maps of network topologies. Network modeler 306 may determine or maintain, for example: an integrated content and network layer topology map.
- network modeler 306 may obtain or determine information related to network topologies, such as performance indices, weighted network costs, the lowest/highest cost/performance index for each client network address, etc.
- a performance index and weighted network cost may be obtained between: CDN node pairs (e.g., two CDN servers); each CDN node (e.g., a server device in the CDN) and edge router pairs; and each CDN node and peering router pairs).
- Traffic analyzer 308 may obtain network statistics and/or network parameters that policy engine 302 uses to rank CDNs 102 . Traffic analyzer 308 may determine, for example, peering ratios between different networks (e.g., ratio of incoming traffic, from a first network to a second network via a peering point, to outgoing traffic from the second network to the first network), the overall bandwidth of a CDN 102 , download speeds of a CDN 102 , etc.
- peering ratios between different networks e.g., ratio of incoming traffic, from a first network to a second network via a peering point, to outgoing traffic from the second network to the first network
- the overall bandwidth of a CDN 102 download speeds of a CDN 102 , etc.
- CDN database 310 may include a list of CDNs and CDN-related data received via administration device 114 .
- the CDN-related data may include for each CDN in the list, for example, a URI, an IP address, and login/password credentials.
- Network information database 312 may include network data obtained by data collector 304 .
- the data obtained by data collector 304 may include: aggregated traffic load on networks or virtual networks; traffic load between CDN nodes; load conditions of each CDN node; an aggregate bandwidth consumption of CDN traffic (for all differentiated services code point (DSCP) classes and/or each of the DSCP classes); traffic between local and remote AS networks; local traffic route information; ingress and egress traffic between a network and its peer networks or third party networks; inter-AS traffic route information; user device 112 or network device geo-location information; client edge router distribution information in networks; etc.
- DSCP differentiated services code point
- Network information database 312 may also include topology maps or topology information obtained by network modeler 306 .
- the topology maps may include, for example: network topology maps in terms of routers, connectivity, link bandwidth; a multiprotocol label switched (MPLS) network topology map; a virtual private network topology map; and an autonomous systems (AS) topology map.
- the topology maps may also include: a global CDN topology map, with each CDN having different peering associations; a topology map of an individual CDN (in terms of storage, cache and delivery nodes); etc.
- Network information database 312 may also include network statistics/parameters.
- the network statistics/parameters may include, for example: a percentage of input/output traffic between different content providers; a percentage of input/output traffic between local and remote ASs; statistics on traffic between CDN nodes; processing load conditions on each CDN node; client quality-of-service/experience statistics information; traffic trending information for different types of traffic associated with a content provider, a service provider, an AS or a collection of IP addresses; traffic between different CDN nodes; traffic statistics as functions of time, day, week, etc.; state variables values (e.g., the current load of a CDN 102 ); ingress/egress traffic and traffic ratio as a function of time, day week, etc. for each peering interface; etc.
- Policy database 314 includes CDN ranking policies and CDN selection policies.
- the CDN ranking policies include rules (e.g., business rules) that policy engine 302 may apply to a list of CDN to generate a CDN routing table (e.g., ranked list of CDNs).
- the CDN selection policies include rules that policy engine 302 may distribute to request routers 110 .
- Request routers 110 must enforce the CDN selection policies in selecting CDNs 102 , in response to requests for content or to requests to identify a CDN 102 .
- CDN ranking policies or CDN selection policies may include business rules.
- CDN ranking policy may include a rule for ranking CDNs based on contractual obligations of one entity (e.g., a service provider network) to another entity that owns a CDN 102 .
- a CDN selection policy may include, for example: a business rule for directing all requests for content to a single CDN 102 ; or a rule for splitting requests for content between two or more CDNs 102 .
- a business rule may include ranking/selecting CDNs based on characteristics of CDNs 102 .
- the characteristics may include, for example: whether a CDN supports multicast; IPv6 delivery; specific protocol versions; delivery protocols; content types available at CDNs (e.g., HTTP live streaming (HLS) content, real time message protocol (RTMP) content, etc.); geographical locations of CDNs 102 ; content items stored at CDNs 102 ; health status of CDNs 102 ; identities of CDNs 102 or entities that own CDNs 102 ; IP addresses of CDNs 102 ; etc.
- HLS HTTP live streaming
- RTMP real time message protocol
- a business rule may also include ranking/selecting CDNs based on characteristics that are associated with a device requesting content or requesting the identity of a CDN (e.g., user device 112 or a DNS server) and based on the characteristics of CDNs 102 . For example, a rule may require that a CDN be selected based on the IP address of user device 112 and IP addresses of CDNs 102 (e.g., select a CDN 102 whose IP address prefix best matches the IP address of user device 112 ).
- a rule may require that a CDN 102 be selected based on the following: the IP address of user device 112 ; geographical locations CDNs 102 (e.g., New York city, Texas, etc.); contents available at CDNs 102 ; types of content available at CDNs 102 ; etc.
- a rule may require that a CDN 102 be selected based on the point-of-presence of user device 112 and whether CDN belongs to a particular business entity (e.g., a business entity that offers network services to user device 112 , a content provider entity that with whom the user of user device 112 has a service contract, etc.).
- a rule may specify other combinations of characteristics of user device 112 /DNS server device and characteristics of CDNs 102 .
- a business rule may require that a request for content to a first CDN 102 be redirected to a second CDN 102 to the extent that the bandwidth ratio of the two CDNs stays above a minimum threshold.
- a rule may require that a request for content be directed to the second CDN to the extent that the bandwidth per measurement interval for the first CDN stays above a minimum threshold.
- a business rule may require selecting a target CDN based on ranking values that are computed as a function of available bandwidths of CDNs, over a measurement interval, or a function of a bandwidth ratio, between a first network (a network with which user device 102 is associated, such as a service provider network) and CDNs 102 .
- a request for content then may be directed to the CDN 102 with the lowest or the highest ranking value.
- each of the ranking values may be computed as the sum of a ratio (e.g., between a network bandwidth and a CDN 102 bandwidth) and a weighted value associated with the CDN.
- a ratio e.g., between a network bandwidth and a CDN 102 bandwidth
- One reason for adding the weighted value to the ratio may be to bias the selection of the CDN(s) 102 .
- a business rule may involve geographical areas, locations, and/or regions.
- a business rule may require that only a particular CDN 102 be allowed to distribute content to user device 112 in a specific area (e.g., India, Kansas, New York City, etc.).
- a specific area e.g., India, Kansas, New York City, etc.
- Such a business rule may allow entities that own CDNs 102 to comply with laws, regulations, business arrangements, etc.
- a business rule may include determining ranking values based on cache hits, cache misses, cache efficiency, etc. of CDNs 102 , for a set of content items.
- CDNs 102 may have obtained the content items from a single source (e.g., vault) for distribution.
- a business rule may include selecting CDNs 102 in a weighted round robin fashion; selecting or distributing requests for content to multiple CDNs 102 ; sending all requests within a specific IP block to a designated CDN 102 ; etc.
- a business rule can be based on user telemetry data from user devices 112 .
- the telemetry data which is similar to flow data or log data, may be collected via data collector 304 .
- the data may provide topology manager 108 or request routers 110 with information that indicates which IP segments of network 100 are performing optimally.
- Both CDN selection policies and ranking policies may include rules based on: CDN performance information; a client service provider information; client account status; peering ratios; flow records; CDN log files; etc.
- CDN selection database 316 may include a CDN routing table. Records in the CDN routing table may be a function of different network statistics, parameters, state variables, etc. For a given CDN and state variable values, a record in the CDN table may include a URI or IP address, path, URL signing policies, login/password credentials, etc. Policy engine 302 may distribute the table to request routers 110 . Request routers 110 may use the CDN routing table from CDN selection database 316 to direct user devices 112 to a CDN 102 in accordance with a single stage CDN selection process or a dual stage CDN selection process.
- FIG. 4 illustrates exemplary message paths that are associated with a single stage CDN selection process 400 .
- messages flow between topology manager 108 , request router 110 , user device 112 , and a DNS 400 .
- DNS 400 may include DNS server 402 - 1 through DNS server 402 -Q (collectively “DNS servers 402 ” and individually “DNS server 402 ”).
- single stage CDN selection process 400 user device 112 (or a resolver on user device 412 ) sends a query to DNS 400 to resolve a domain name of a CDN 102 to its IP address. If the query is a recursive one, and a first DNS server (e.g., DNS server 402 - 1 ), in DNS 400 , that receives the query does not have a DNS record to resolve the domain name, the first DNS server sends out a query of its own to a second DNS server (e.g., DNS server 402 - 2 ). The second DNS server may then act similarly as the first DNS server to resolve the domain name.
- a first DNS server e.g., DNS server 402 - 1
- the process may continue, until one of DNS servers (e.g., DNS server 402 -Q) is directed to request router 110 (via a CNAME record in the DNS server), which performs a lookup of the domain name in the CDN routing table provided by topology manager 108 .
- the IP address of CDN 102 provided by request router 110 then flows through the chain of DNS servers 402 in the direction opposite to the flow of the queries from the resolver to request router 110 .
- user device 112 may use the IP address to request content form the CDN 102 associated with the IP address.
- FIG. 5 illustrates exemplary message paths that are associated with a dual stage CDN selection process 500 .
- dual stage CDN selection process 500 may include a stage one CDN query 502 and a stage two CDN query 504 .
- stage one CDN query 502 includes DNS query 502 - 1 and CDN request 502 - 2 ; and stage two CDN query 504 includes DNS query 504 - 1 and CDN request 504 - 2 .
- DNS query 502 - 1 , CDN request 502 - 2 , DNS query 504 - 1 , and CDN request 504 - 2 may occur in the order indicated by arrow 506 .
- request router 110 disseminates its information to a web server in a CDN 102 , by sending the CDN routing table (received from topology manager 108 ) to the web server.
- request router 110 may disseminate the information in response to a request from a web server to identify a CDN 102 that may optimally deliver content requested by user device 112 .
- DNS servers e.g., DNS server 402 -B 2 and DNS server 402 -B 4 ) are each aware of CDNs 102 and their corresponding IP addresses.
- DNS query 502 - 1 of stage one CDN query 502 may include user device 112 requesting a network address of a CDN 102 from DNS 400 , which may include DNS server 402 -B 0 to DNS server 402 -B 2 and/or DNS server 402 -B 0 to DNS server 402 -B 3 .
- DNS query 502 - 1 may conclude with user device 112 receiving a response from DNS 400 (e.g., from DNS server 402 -B 0 ).
- the response may provide an IP address corresponding to the domain name of the CDN 102 , which may not provide an optimal delivery of requested content to user device 112 .
- CDN request 502 - 2 of stage one CDN request 502 may include user device 112 requesting content from the CDN 102 - 1 , by using the IP address obtained through DNS query 502 - 1 .
- the web server sends a message to request router 110 to identify a CDN that may best/optimally provide requested content to user device 112 .
- the web server may provide the information to user device 112 .
- DNS query 504 - 1 of stage two CDN request 504 may include user device 112 requesting an IP address of the second CDN 102 from DNS 400 .
- DNS query 504 - 2 may conclude with user device 112 receiving a response from DNS 400 (e.g., from DNS server 402 -B 0 ). The response may provide an IP address corresponding to the domain name of the second CDN 102 . If user device 112 received the IP address of the second CDN 102 at CDN request 502 - 2 instead of the domain name of the second CDN 102 , DNS query 504 - 1 may be omitted.
- CDN request 504 - 2 of stage two may include user device 112 requesting content from the second CDN 102 , by using the IP address obtained through either CDN request 502 - 2 or DNS query 504 - 1 .
- the web server that requests information about CDN 102 from request router 110 may also relay information about user device 112 (which requested content from the web server) to request router 110 .
- the information passed from the web server to request router 110 may include the IP address of user device 112 , a network to which user device 112 belongs, POP information, etc.
- Request router 110 may use such information to select the second CDN 102 (e.g., by applying CDN selection policies).
- a DNS server 402 that requests information from request router 110 may be unable to pass information about user device 112 to request router 110 . Accordingly, in single stage CDN selection process 400 , request router 110 may select a CDN 102 without such information.
- FIG. 6 illustrates exemplary records in CDN database 310 of topology manager 108 .
- CDN database 310 may include records 600 - 1 through 600 -C (collectively “records 600 ” and individually “record 600 ”).
- Each of records 600 may include a number of fields: identifier field 602 , access control field 604 , parameters field 606 , network statistics field 608 , and state variables field 610 .
- records 600 may include fewer, additional, different, or a different arrangement of fields than those illustrated in FIG. 6 .
- Identifier field 602 may identify a CDN 102 , which is associated with a record 600 that includes the identifier field 602 .
- information in identifier field 602 may have been provided by a network administrator via, for example, a GUI on administration device 114 .
- Access control field 604 may indicate a level of access that is associated with: an IP address of user device 112 ; a group of IP addresses; domain names; etc.
- Parameters field 606 may include information that is input by an administrator via administration device 114 .
- Network statistics field 608 may include bandwidth, traffic, jitter, and/or error information about devices in a CDN 102 corresponding to record 600 .
- Network statistics field 608 may also include statistics that pertain to the CDN 102 and are obtained from the device statistics (e.g., overall network traffic, bandwidth, errors, etc.).
- Network statistics field 608 may include time dependent information (e.g., bandwidth of a device at a specific time, day of month, day of week, etc.).
- State variables field 610 may include values of parameters that indicate the current state of CDNs 102 and/or devices in CDNs 102 .
- State variables field 610 may include, for example, a flag that indicates whether a specific network device (e.g., a peering router) is down, whether the CDN 102 is down; etc.
- state variables field 610 may include currently available bandwidths of individual devices and/or CDNs 102 .
- FIG. 7 illustrates exemplary records in policy database 314 of topology manager 108 .
- policy database 314 may include records 700 - 1 through 700 -D (collectively “records 700 ” and individually “record 700 ”).
- Each of records 700 may include a number of fields: a policy identifier field 702 ; and a filters and functions field 704 .
- Policy identifier field 702 may include a string of alphanumeric characters that uniquely identify a policy associated with record 700 .
- Filters and functions field 704 may include conditions for identifying CDNs (e.g., from a list of CDNs in CDN database 310 ) based on one or more datum/factors, such as: access control values in control value field 604 ; values (in parameters field 606 ; values in network statistics field 608 ; and/or values in state variables field 610 .
- the conditions may be specified via expressions representing mathematical relationships, mathematical operations, and/or symbols that reference information from different fields in records in CDN database 310 .
- filters and functions field 704 for record 700 - 1 includes expressions “DAV ⁇ T1” and “WAV ⁇ T2.” Also assume DAV represents a daily average traffic volume and WAV represents a weekly average traffic volume. Accordingly, “DAV ⁇ T1” and “WAV ⁇ T2” may define filters that identify CDNs whose daily average traffic volume is below a threshold T1 and CDNs whose weekly average traffic volume is below a threshold T2, respectively.
- Filters and functions field 704 may also specify a relationship between different filters via logical operators or set operators. For example, assume that filters field 704 for record 700 - 1 includes “(DAV ⁇ T1) & (WAV ⁇ T2).” “(DAV ⁇ T1) & (WAV ⁇ T2)” may identify CDNs 102 that are the intersection of CDNs 102 whose each daily average traffic is below T1 and CDNs 102 whose each weekly average traffic is below T2.
- Filters and functions field 704 may also include functions to be applied to CDNs 102 that are listed in CDN database 310 and/or are identified by the filters in filters and functions field 704 .
- the functions may include expressions for computing numerical values used to rank CDNs (“ranking values”).
- Each function may reference numbers, mathematical expressions, and/or one or more of: values in access control field 604 ; values in parameters field 606 ; values in network statistics field 608 ; and/or values in state variables field 610 .
- F1 represents the result of applying a filter in filters and functions field 704 .
- records 700 may include fewer, additional, different, or a different arrangement of fields than those illustrated in FIG. 7 .
- fields in each record 700 may have a different syntax.
- FIG. 8 illustrates exemplary records in CDN selection database 316 of topology manager 108 .
- CDN selection database 316 may include records 800 - 1 through 800 -E (collectively “records 800 ” and individually “record 800 ”).
- Each of records 800 may include a selection variable values field 802 and a CDN route field 804 .
- Selection variable values field 802 may include a predetermined set of selected data from: network information database 312 ; and data fields 604 - 610 in a record 600 of CDN database 310 . Each set of values may represent a condition under which the policies specified in policy database 314 have been applied to obtain a ranking for CDNs.
- Selection variable values field 702 may include, for example: the IP address of a DNS server that may request the identity of a CDN 102 from which a user device 112 is to obtain content; a set of IP addresses to which an IP address of user device 112 belongs; time information (e.g., time of day, day of week, day of month, etc.) associated with a request for content; etc.
- CDN route field 804 may include a list of ranked CDNs and/or their routes. Each of the CDNs in the list may be identified by an IP address, a Universal Resource Identifier (URI), a Universal Resource Locator (URL), etc.
- URI Universal Resource Identifier
- URL Universal Resource Locator
- FIG. 9 is a flow diagram of an exemplary process 900 that is associated with operation of CDN selection system 106 .
- process 900 may include receiving user command/input via a GUI interface, by topology manager 108 , from administration device 114 (block 902 ).
- Topology manager 108 may determine whether the user requests a CDN routing table for a list of CDNs in CDN database 310 be generated (block 904 ). If the topology manager 108 determines that the CDN routing table for the list of CDNs is to be generated, topology manager 108 may generate the table (block 906 ). Generating the table may include applying one or more policies in policy database 314 to the list of CDNs, for a chosen set of selection variable values 802 . The resulting CDN routing table may be stored in CDN selection database 316 . Thereafter, at block 906 , process 900 may return to block 902 , where topology manager 108 may receive additional commands from administration device 114 .
- topology manager 108 may proceed to block 908 , to determine whether the command received at block 902 directs topology manager 108 to distribute the CDN routing table to request routers 110 (block 908 ). If the CDN routing table is to be distributed (block 908 : yes), topology manager 108 may distribute the CDN routing table to a selected set of request routers 110 (block 910 ). Thereafter, at block 910 , process 900 may return to block 902 .
- topology manager 108 may determine whether the command received at block 902 requires that CDN selection system 106 be configured (block 912 ). If the CDN selection system 106 is not to be configured (block 912 : no), process 900 may return to block 902 . Otherwise (block 912 : yes), topology manager 108 may provide a GUI (e.g., to administration device 114 ), and receive administrator input (block 914 ). Topology manager 108 may proceed to block 916 .
- GUI e.g., to administration device 114
- topology manager 108 may determine whether the administrator input indicates that topology manager 108 is to receive one of the following: information regarding a CDN; information about policies; information about configuration data for collecting network data; information about request routers 110 (e.g., addresses of request routers 110 to which a CDN routing table may be distributed); or another command. If the input indicates that another command is to be received (block 916 : command), process 900 may return to block 902 .
- topology manager 108 may present a user interface for receiving CDN data to administration device 114 and receive the CDN data from administration device 114 (block 918 ). If the input indicates that topology manager 108 is to receive policies (block 916 : policy), topology manager 108 may present a user interface for receiving policies to administration device 114 and receive the policies from device 114 (block 920 ). If the input indicates that topology manager is to receive configuration information for collecting network data (block 916 : configuration), topology manager 108 may present a user interface for receiving configuration information to administration device 114 and receive the configuration information from administration device 114 (block 922 ).
- topology manager 108 may return to block 902 to receive additional commands.
- FIG. 10 is a flow diagram of another exemplary process 1000 that is associated with operation of CDN selection system 106 . More specifically, process 1000 is associated with selecting a CDN 102 (e.g., the dual stage CDN selection process or the single stage CDN selection process).
- CDN 102 e.g., the dual stage CDN selection process or the single stage CDN selection process.
- process 1000 may include, by DNS 400 , receiving a request to resolve a CDN domain name to an IP address (block 1002 ).
- DNS 400 resolves the domain name to the IP address (block 1004 ).
- user device 112 receives the IP address, user device 112 forwards a request for content to a device/CDN corresponding to the IP address (block 1006 ).
- a web server hosted on the device/CDN provides a redirect URL/URI to user device 112 , by either looking up its CDN routing table (received from request router 110 or topology manager 108 ) or by querying a request router 110 (block 1008 ).
- user device 112 may resolve the redirect URL/URI (e.g., via DNS 400 ) to an IP address (block 1010 ), and forward its request for content to the resolved IP address (block 1012 ).
- the device/CDN 102 may stream the content to user device 112 (block 1014 ).
- user device 112 may provide some feedback information (e.g., user experience, download time, etc.). The feedback information may be forwarded to topology manager 108 (block 1016 ).
- CDN selection system 106 may allow a user application to obtain content from different CDNs 102 .
- CDN selection system 106 may generate a CDN routing table.
- the CDN routing table may specify, for particular state variable values (e.g., time, bandwidth, quality of service, etc.), which CDN 102 is likely to provide the best/worst latency, the highest/lowest cost, the maximum/minimum bandwidth, the least number of errors, etc., as well as a path to the CDN.
- state variable values e.g., time, bandwidth, quality of service, etc.
- CDN selection system 106 may direct the user application to a particular CDN 102 based on the table, the state variable values, and CDN selection policies.
- non-dependent blocks may represent blocks that can be performed in parallel.
- logic that performs one or more functions.
- This logic may include hardware, such as a processor, a microprocessor, an application specific integrated circuit, or a field programmable gate array, software, or a combination of hardware and software.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
A device may receive a content distribution network (CDN) routing table from a topology manager; receive a request, from a device in either of a redirect CDN or a domain name system (DNS), to identify a target CDN for sending content to a user device; perform a lookup in the CDN routing table, based on information provided by the device and CDN selection policies, to select the target CDN; obtain an identifier corresponding to the target CDN as a result of performing the lookup; and provide the identifier to the device.
Description
- When a request for content arrives at a server, the server can respond slowly for many reasons. For example, the server may be busy processing hundreds or thousands of similar requests. The network bandwidth may not be large enough to handle traffic beyond a certain threshold; or the server may be located, logically or physically, far from the client.
-
FIG. 1 illustrates an exemplary network in which concepts described herein may be implemented; -
FIG. 2 illustrates exemplary components of one of the network devices ofFIG. 1 ; -
FIG. 3 illustrates exemplary functional components of the exemplary topology manager ofFIG. 1 ; -
FIG. 4 illustrates exemplary message paths that are associated with a single stage content distribution network selection process; -
FIG. 5 illustrates exemplary message paths that are associated with a dual stage content distribution network selection process; -
FIG. 6 illustrates exemplary records in the exemplary content distribution network database ofFIG. 3 ; -
FIG. 7 illustrates exemplary records in the exemplary policy database ofFIG. 3 ; -
FIG. 8 illustrates exemplary records in the exemplary content distribution network selection table ofFIG. 3 ; -
FIG. 9 is a flow diagram of an exemplary process that is associated with operation of the content distribution network selection system ofFIG. 1 ; and -
FIG. 10 is a flow diagram of another exemplary process that is associated with operation of the contribution distribution selection system ofFIG. 1 . - The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. As used herein, the term “content” may include multimedia content, video content, audio content, web pages, programs, text, documents, images, pictures, etc.
- A typical service/content provider today may leverage its own content distribution network to fulfill user requests for content. However, there may be some situations in which it is more beneficial for the service/content provider to use a different content distribution network. Unfortunately, each application that generates user requests for content typically needs to be integrated with or configured to operate with the available content distribution networks. This requirement renders using multiple content distribution networks difficult, due to the amount of time and effort required for the integration and configuration.
- As described herein, a system may allow a user application to receive content from one of numerous content distribution networks (CDNs). To accomplish this, the system may generate a routing table. The routing table may specify, for a particular set of state variable values (e.g., time, bandwidth, quality of service, etc.) for the CDNs, a list of ranked CDNs that may provide the content with the least/most latency, the highest/lowest cost, the maximum/minimum bandwidth, the least/most number of errors, etc., as well as paths/routes to the CDNs. When the system receives a request for content from a user application, the system may direct the user application to a CDN based on the table, the current state variable values, and CDN selection policies.
-
FIG. 1 illustrates anexemplary network 100 in which concepts described herein may be implemented. As shown,network 100 may include: content distribution network (CDN) 102-1 through CDN 102-M1 (collectively “CDNs 102” and individually “CDN 102”);network 104, which includesCDN selection system 106; user devices 112-1 through 112-R (collectively “user devices 112” and individually “user device 112”), andadministration device 114. - Depending on the implementation,
network 100 may include additional, fewer, different, or a different arrangement of components than those illustrated inFIG. 1 . For example, depending on the implementation, functions that are described as being performed by one device may be performed by two or more other devices; and functions that are described as being performed by two or more devices may be performed by one device. In addition, although not illustrated inFIG. 1 ,network 100 may include other devices and/or components, such as gateways, bridges, switches, routers, server devices, etc. - CDN 102 may include network server devices that store or cache copies of content/data and are placed at different geographic locations. CDN 102 may efficiently deliver content to
user devices 112. At aCDN 102, each request for content may be handled by a device geographically close to theuser device 112 requesting content. - Network 104 may include the Internet, an intranet, a cloud network, a virtual private network (VPN), a software defined network (SDN), a service provider network, a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a cellular network, a public switched telephone network (PSTN), an optical network, an ad hoc network, any other network, or a combination of one or more networks.
- As shown,
network 104 may include aCDN selection system 106. WhenCDN selection system 106 receives a request for content from auser device 112,CDN selection system 106 may select aCDN 102 for theuser device 112. Theuser device 112 may obtain the content from theselected CDN 102 at a cost, a delay, data errors, etc., less than those at which theuser device 112 would obtain the content fromother CDNs 102. - As further shown,
CDN selection system 106 may include atopology manager 108 and request router 110-1 through request router 110-M (collectively “requestrouters 110” and individually “requestrouter 110”). Depending on the implementation,CDN selection system 106 may include additional, fewer, different, or a different arrangement of devices than those illustrated inFIG. 1 . -
Topology manager 108 may receive CDN ranking policies (e.g., business rules) and CDN selection policies fromadministration device 114 and receive network data from devices innetwork 104, generate or update a network model (e.g., topology). In addition,topology manager 108 may analyze traffic based on the received network data and the network model. CDN ranking policies and CDN selection policies are described below in greater detail. -
Topology manager 108 may derive a routing table, given the state variables, network data, and CDN ranking policies. The routing table may specify, for a particular set of state variables and/or network data (e.g., a network address of a domain name system server that requested the CDN address, the time of the request, bandwidths available toCDNs 102, availability of particular content items, health status ofCDNs 102, load conditions ofCDNs 102, etc.), a list of rankedCDNs 102 that may provide the optimum delivery of a content item (e.g., the fastest download time). -
Topology manager 108 may provide the routing table (“CDN routing table” or “CDN selection table”) to requestrouters 110, by pushing the table to requestrouters 110. Alternatively,topology manager 108 may provide the table upon receipt of a request fromrequest routers 110. In addition,topology manager 108 may provide CDN selection policies received fromadministration device 114 to requestrouters 110. -
Request router 110 may receive a request to identify aCDN 102 from a domain name system (DNS). In response,request router 110 may provide, to the DNS, the network address of aCDN 102 based on the CDN selection policies and the CDN routing table fromtopology manager 108. - Alternatively or additionally, request
router 110 may delegate its role to or may operate in conjunction with web servers at CDNs 102. In such implementations, requestrouter 110 may send the selection policies, the CDN routing table, and/or a portion of the CDN routing table to the web servers that may use the selection policies and the table to provide a hypertext transfer protocol (HTTP) 302 redirect response to auser device 112 requesting content. As further described below, a web server may identify, to auser device 112, via a HTTP 302 redirect response, aCDN 102 that may provide an optimum delivery of content. -
Request router 110 may receive single-use tokens fromuser device 112, and ensure that a request for content is honored bydifferent CDNs 102, by resigning a URL/URI or re-issuing a token.Request routers 110 may be distributed over different geographical locations, and each ofrequest routers 110 may be interchangeable with anotherrequest routers 110. -
User device 112 may include a handset, cellular phone, smart phone, personal computer, laptop computer, tablet computer, set-top box, gaming console, personal digital assistant (PDA), smart television (TV), and/or another type of communication and/or computational device that is capable of receiving and playing multimedia content. - In requesting content from a
CDN 102,user device 112 may follow one of two processes: a single stage CDN selection process or a dual stage CDN selection process. In the single stage selection process,user device 112 may make a single request to aCDN 102 identified by a DNS. In the dual stage selection process,user device 112 may make two requests to CDNs: one request to a first CDN that provides a HTTP 302 redirect response; and another request to a second CDN identified by the redirect response.User device 112 may send a request for content to thesecond CDN 102 and, in response, receive the content from thesecond CDN 102. -
Administration device 114 may receive a list ofCDNs 102, policies, CDN ranking policies, CDN selection policies, configuration parameters that are associated with collecting network data and obtaining state variable values, etc. from an administrator/user via a graphical user interface (GUI).Administration device 114 may provide the list of CDNs, the policies, and the configuration parameters totopology manager 108. -
FIG. 2 is a block diagram of exemplary components of anetwork device 200.Network device 200 may correspond to any of the devices illustrated in network 100 (e.g., requestrouters 110,user devices 112, and/or administration device 114) or to one or more server inCDNs 102. As shown,network device 200 may include aprocessor 202,memory 204,storage unit 206,input component 208,output component 210,network interface 212, andcommunication path 214. In different implementations,network device 200 may include additional, fewer, different, or different arrangement of components than the ones illustrated inFIG. 2 . For example,network device 200 may include line cards for connecting to external buses. -
Processor 202 may include a processor, a microprocessor, an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), and/or other processing logic (e.g., embedded devices) capable of controllingdevice 200, executing programs/instructions, etc. -
Memory 204 may include static memory, such as read only memory (ROM), and/or dynamic memory, such as random access memory (RAM), or onboard cache, for storing data and machine-readable instructions (e.g., programs, scripts, etc.).Storage unit 206 may include a floppy disk, CD ROM, CD read/write (R/W) disc, holographic versatile disc (HVD), digital versatile disc (DVD), and/or flash memory, as well as other types of storage devices (e.g., hard disk drive) for storing data and/or machine-readable instructions (e.g., a program, script, etc.). Depending on the context, the term “memory,” “storage,” “storage device,” “storage unit,” and/or “medium” may be used interchangeably. For example, a “computer-readable storage device” or “computer-readable medium” may refer to both a memory and/or storage device. -
Input component 208 andoutput component 210 may provide input and output from/to a user to/fromdevice 200. Input/output components device 200. -
Network interface 212 may include a transceiver (e.g., a transmitter and a receiver) fordevice 200 to communicate with other devices and/or systems. For example, vianetwork interface 212,device 200 may communicate over a network, such as the Internet, an intranet, a terrestrial wireless network (e.g., a WLAN, WiFi, WiMax, etc.), a satellite-based network, optical network, etc.Network interface 212 may include a modem, an Ethernet interface to a LAN, and/or an interface/connection for connectingdevice 200 to other devices (e.g., a Bluetooth interface). -
Communication path 214 may provide an interface through which components ofdevice 200 can communicate with one another. -
Network device 200 may perform the operations described herein in response toprocessor 202 executing software instructions stored in a non-transient computer-readable medium, such asmemory 204 orstorage device 206. The software instructions may be read intomemory 204 from another computer-readable medium or from another device vianetwork interface 212. The software instructions stored inmemory 204 orstorage device 206, when executed byprocessor 202, may causeprocessor 202 to perform processes that are described herein. -
FIG. 3 is a block diagram of exemplary functional components oftopology manager 108. As shown,topology manager 108 may include apolicy engine 302, adata collector 304, anetwork modeler 306, atraffic analyzer 308, aCDN database 310, anetwork information database 312, apolicy database 314, and aCDN selection database 316. Depending on the implementation,topology manager 108 may include additional, fewer, different, or a different arrangement of components than those illustrated inFIG. 3 . For example, although not shown inFIG. 3 ,topology manager 108 may include other components, such as an operating system, communication modules, components for performing analytics (e.g., on network data) and/or reporting. -
Policy engine 302 may receive CDN policies fromadministration device 114 and store the received CDN policies inpolicy database 314. In addition,policy engine 302 may edit, delete and/or process (e.g., compile or check for errors) the CDN policies stored inpolicy database 314 in response to user input viaadministration device 114. - The CDN policies may include CDN ranking policies and CDN selection policies. The CDN ranking policies include rules that
policy engine 302 may apply to a list of CDNs to generate a CDN routing table, based on network data and state variable values. The CDN selection policies may include rules thatpolicy engine 302 may provide to requestrouters 110.Request routers 110 may apply the CDN selection policies to select a CDN 102 in response to a request from a DNS or to a request from a web server. In some implementations,policy engine 302 may distribute the CDN routing table to web servers hosted onCDNs 102, rather than to requestrouters 110. -
Data collector 304 may receive information for configuring network components for collecting data (e.g., Simple Network Management Protocol (SNMP) configuration parameters, Netflow configuration parameters, JFlow configuration parameters, scheduling information, etc.) fromadministration device 114.Data collector 304 may store the configuration information innetwork information database 312, and apply the received configuration information to data collection components (not shown), installed on devices in network 100 (e.g., servers, gateways, etc.).Data collector 304 may also collect network data received by the data collection components, and store the collected data innetwork information database 312. -
Network modeler 306 may determine interconnectivity between networks (e.g., CDNs 102), peering points, and/or network devices based on network data and maintain/obtain maps of network topologies.Network modeler 306 may determine or maintain, for example: an integrated content and network layer topology map. - In addition,
network modeler 306 may obtain or determine information related to network topologies, such as performance indices, weighted network costs, the lowest/highest cost/performance index for each client network address, etc. A performance index and weighted network cost may be obtained between: CDN node pairs (e.g., two CDN servers); each CDN node (e.g., a server device in the CDN) and edge router pairs; and each CDN node and peering router pairs). -
Traffic analyzer 308 may obtain network statistics and/or network parameters thatpolicy engine 302 uses to rankCDNs 102.Traffic analyzer 308 may determine, for example, peering ratios between different networks (e.g., ratio of incoming traffic, from a first network to a second network via a peering point, to outgoing traffic from the second network to the first network), the overall bandwidth of aCDN 102, download speeds of aCDN 102, etc. -
CDN database 310 may include a list of CDNs and CDN-related data received viaadministration device 114. The CDN-related data may include for each CDN in the list, for example, a URI, an IP address, and login/password credentials. -
Network information database 312 may include network data obtained bydata collector 304. The data obtained bydata collector 304 may include: aggregated traffic load on networks or virtual networks; traffic load between CDN nodes; load conditions of each CDN node; an aggregate bandwidth consumption of CDN traffic (for all differentiated services code point (DSCP) classes and/or each of the DSCP classes); traffic between local and remote AS networks; local traffic route information; ingress and egress traffic between a network and its peer networks or third party networks; inter-AS traffic route information;user device 112 or network device geo-location information; client edge router distribution information in networks; etc. -
Network information database 312 may also include topology maps or topology information obtained bynetwork modeler 306. The topology maps may include, for example: network topology maps in terms of routers, connectivity, link bandwidth; a multiprotocol label switched (MPLS) network topology map; a virtual private network topology map; and an autonomous systems (AS) topology map. The topology maps may also include: a global CDN topology map, with each CDN having different peering associations; a topology map of an individual CDN (in terms of storage, cache and delivery nodes); etc. -
Network information database 312 may also include network statistics/parameters. The network statistics/parameters may include, for example: a percentage of input/output traffic between different content providers; a percentage of input/output traffic between local and remote ASs; statistics on traffic between CDN nodes; processing load conditions on each CDN node; client quality-of-service/experience statistics information; traffic trending information for different types of traffic associated with a content provider, a service provider, an AS or a collection of IP addresses; traffic between different CDN nodes; traffic statistics as functions of time, day, week, etc.; state variables values (e.g., the current load of a CDN 102); ingress/egress traffic and traffic ratio as a function of time, day week, etc. for each peering interface; etc. -
Policy database 314 includes CDN ranking policies and CDN selection policies. As describe above, the CDN ranking policies include rules (e.g., business rules) thatpolicy engine 302 may apply to a list of CDN to generate a CDN routing table (e.g., ranked list of CDNs). The CDN selection policies include rules thatpolicy engine 302 may distribute to requestrouters 110.Request routers 110 must enforce the CDN selection policies in selectingCDNs 102, in response to requests for content or to requests to identify aCDN 102. - CDN ranking policies or CDN selection policies may include business rules. CDN ranking policy, for example, may include a rule for ranking CDNs based on contractual obligations of one entity (e.g., a service provider network) to another entity that owns a
CDN 102. A CDN selection policy may include, for example: a business rule for directing all requests for content to asingle CDN 102; or a rule for splitting requests for content between two ormore CDNs 102. - A business rule may include ranking/selecting CDNs based on characteristics of
CDNs 102. The characteristics may include, for example: whether a CDN supports multicast; IPv6 delivery; specific protocol versions; delivery protocols; content types available at CDNs (e.g., HTTP live streaming (HLS) content, real time message protocol (RTMP) content, etc.); geographical locations ofCDNs 102; content items stored atCDNs 102; health status ofCDNs 102; identities ofCDNs 102 or entities that ownCDNs 102; IP addresses ofCDNs 102; etc. - A business rule may also include ranking/selecting CDNs based on characteristics that are associated with a device requesting content or requesting the identity of a CDN (e.g.,
user device 112 or a DNS server) and based on the characteristics ofCDNs 102. For example, a rule may require that a CDN be selected based on the IP address ofuser device 112 and IP addresses of CDNs 102 (e.g., select aCDN 102 whose IP address prefix best matches the IP address of user device 112). In another example, a rule may require that aCDN 102 be selected based on the following: the IP address ofuser device 112; geographical locations CDNs 102 (e.g., New York city, Texas, etc.); contents available atCDNs 102; types of content available atCDNs 102; etc. In some instances, a rule may require that aCDN 102 be selected based on the point-of-presence ofuser device 112 and whether CDN belongs to a particular business entity (e.g., a business entity that offers network services touser device 112, a content provider entity that with whom the user ofuser device 112 has a service contract, etc.). A rule may specify other combinations of characteristics ofuser device 112/DNS server device and characteristics ofCDNs 102. - A business rule may require that a request for content to a
first CDN 102 be redirected to asecond CDN 102 to the extent that the bandwidth ratio of the two CDNs stays above a minimum threshold. In another example, a rule may require that a request for content be directed to the second CDN to the extent that the bandwidth per measurement interval for the first CDN stays above a minimum threshold. - In another implementation, a business rule may require selecting a target CDN based on ranking values that are computed as a function of available bandwidths of CDNs, over a measurement interval, or a function of a bandwidth ratio, between a first network (a network with which
user device 102 is associated, such as a service provider network) andCDNs 102. A request for content then may be directed to theCDN 102 with the lowest or the highest ranking value. In some implementations, each of the ranking values may be computed as the sum of a ratio (e.g., between a network bandwidth and aCDN 102 bandwidth) and a weighted value associated with the CDN. One reason for adding the weighted value to the ratio may be to bias the selection of the CDN(s) 102. - In another example, a business rule may involve geographical areas, locations, and/or regions. For example, a business rule may require that only a
particular CDN 102 be allowed to distribute content touser device 112 in a specific area (e.g., India, Nebraska, New York City, etc.). Such a business rule may allow entities that ownCDNs 102 to comply with laws, regulations, business arrangements, etc. - In yet another example, a business rule may include determining ranking values based on cache hits, cache misses, cache efficiency, etc. of
CDNs 102, for a set of content items. In some implementations,CDNs 102 may have obtained the content items from a single source (e.g., vault) for distribution. In still yet another example, a business rule may include selectingCDNs 102 in a weighted round robin fashion; selecting or distributing requests for content tomultiple CDNs 102; sending all requests within a specific IP block to a designatedCDN 102; etc. - A business rule can be based on user telemetry data from
user devices 112. The telemetry data, which is similar to flow data or log data, may be collected viadata collector 304. The data may providetopology manager 108 orrequest routers 110 with information that indicates which IP segments ofnetwork 100 are performing optimally. - Both CDN selection policies and ranking policies may include rules based on: CDN performance information; a client service provider information; client account status; peering ratios; flow records; CDN log files; etc.
-
CDN selection database 316 may include a CDN routing table. Records in the CDN routing table may be a function of different network statistics, parameters, state variables, etc. For a given CDN and state variable values, a record in the CDN table may include a URI or IP address, path, URL signing policies, login/password credentials, etc.Policy engine 302 may distribute the table to requestrouters 110.Request routers 110 may use the CDN routing table fromCDN selection database 316 todirect user devices 112 to aCDN 102 in accordance with a single stage CDN selection process or a dual stage CDN selection process. -
FIG. 4 illustrates exemplary message paths that are associated with a single stageCDN selection process 400. InFIG. 4 , messages flow betweentopology manager 108,request router 110,user device 112, and aDNS 400. As shown,DNS 400 may include DNS server 402-1 through DNS server 402-Q (collectively “DNS servers 402” and individually “DNS server 402”). - In single stage
CDN selection process 400, user device 112 (or a resolver on user device 412) sends a query toDNS 400 to resolve a domain name of aCDN 102 to its IP address. If the query is a recursive one, and a first DNS server (e.g., DNS server 402-1), inDNS 400, that receives the query does not have a DNS record to resolve the domain name, the first DNS server sends out a query of its own to a second DNS server (e.g., DNS server 402-2). The second DNS server may then act similarly as the first DNS server to resolve the domain name. The process may continue, until one of DNS servers (e.g., DNS server 402-Q) is directed to request router 110 (via a CNAME record in the DNS server), which performs a lookup of the domain name in the CDN routing table provided bytopology manager 108. The IP address ofCDN 102 provided byrequest router 110 then flows through the chain ofDNS servers 402 in the direction opposite to the flow of the queries from the resolver to requestrouter 110. Upon receipt of the IP address,user device 112 may use the IP address to request content form theCDN 102 associated with the IP address. -
FIG. 5 illustrates exemplary message paths that are associated with a dual stageCDN selection process 500. As shown inFIG. 5 , dual stageCDN selection process 500 may include a stage oneCDN query 502 and a stage twoCDN query 504. As further shown, stage oneCDN query 502 includes DNS query 502-1 and CDN request 502-2; and stage twoCDN query 504 includes DNS query 504-1 and CDN request 504-2. DNS query 502-1, CDN request 502-2, DNS query 504-1, and CDN request 504-2 may occur in the order indicated byarrow 506. - For
dual stage process 500,request router 110 disseminates its information to a web server in aCDN 102, by sending the CDN routing table (received from topology manager 108) to the web server. Alternatively,request router 110 may disseminate the information in response to a request from a web server to identify a CDN 102 that may optimally deliver content requested byuser device 112. DNS servers (e.g., DNS server 402-B2 and DNS server 402-B4) are each aware ofCDNs 102 and their corresponding IP addresses. - DNS query 502-1 of stage one
CDN query 502 may includeuser device 112 requesting a network address of aCDN 102 fromDNS 400, which may include DNS server 402-B0 to DNS server 402-B2 and/or DNS server 402-B0 to DNS server 402-B3. DNS query 502-1 may conclude withuser device 112 receiving a response from DNS 400 (e.g., from DNS server 402-B0). The response may provide an IP address corresponding to the domain name of theCDN 102, which may not provide an optimal delivery of requested content touser device 112. - CDN request 502-2 of stage one
CDN request 502 may includeuser device 112 requesting content from the CDN 102-1, by using the IP address obtained through DNS query 502-1. When a web server inCDN 102 receives the request, however, the web server sends a message to requestrouter 110 to identify a CDN that may best/optimally provide requested content touser device 112. When the web server receives the IP address or the domain name of asecond CDN 102 fromrequest router 110, the web server may provide the information touser device 112. - DNS query 504-1 of stage two
CDN request 504 may includeuser device 112 requesting an IP address of thesecond CDN 102 fromDNS 400. DNS query 504-2 may conclude withuser device 112 receiving a response from DNS 400 (e.g., from DNS server 402-B0). The response may provide an IP address corresponding to the domain name of thesecond CDN 102. Ifuser device 112 received the IP address of thesecond CDN 102 at CDN request 502-2 instead of the domain name of thesecond CDN 102, DNS query 504-1 may be omitted. - CDN request 504-2 of stage two may include
user device 112 requesting content from thesecond CDN 102, by using the IP address obtained through either CDN request 502-2 or DNS query 504-1. - In dual stage
CDN selection process 500, the web server that requests information about CDN 102 fromrequest router 110 may also relay information about user device 112 (which requested content from the web server) to requestrouter 110. The information passed from the web server to requestrouter 110 may include the IP address ofuser device 112, a network to whichuser device 112 belongs, POP information, etc.Request router 110 may use such information to select the second CDN 102 (e.g., by applying CDN selection policies). - In contrast, in single stage
CDN selection process 400, aDNS server 402 that requests information fromrequest router 110 may be unable to pass information aboutuser device 112 to requestrouter 110. Accordingly, in single stageCDN selection process 400,request router 110 may select aCDN 102 without such information. -
FIG. 6 illustrates exemplary records inCDN database 310 oftopology manager 108. As shown,CDN database 310 may include records 600-1 through 600-C (collectively “records 600” and individually “record 600”). Each ofrecords 600 may include a number of fields:identifier field 602,access control field 604,parameters field 606,network statistics field 608, andstate variables field 610. Depending on the implementation,records 600 may include fewer, additional, different, or a different arrangement of fields than those illustrated inFIG. 6 . -
Identifier field 602 may identify a CDN 102, which is associated with arecord 600 that includes theidentifier field 602. In some implementations, information inidentifier field 602 may have been provided by a network administrator via, for example, a GUI onadministration device 114. -
Access control field 604 may indicate a level of access that is associated with: an IP address ofuser device 112; a group of IP addresses; domain names; etc. Parameters field 606 may include information that is input by an administrator viaadministration device 114. - Network statistics field 608 may include bandwidth, traffic, jitter, and/or error information about devices in a
CDN 102 corresponding to record 600. Network statistics field 608 may also include statistics that pertain to theCDN 102 and are obtained from the device statistics (e.g., overall network traffic, bandwidth, errors, etc.). Network statistics field 608 may include time dependent information (e.g., bandwidth of a device at a specific time, day of month, day of week, etc.). - State variables field 610 may include values of parameters that indicate the current state of
CDNs 102 and/or devices inCDNs 102. State variables field 610 may include, for example, a flag that indicates whether a specific network device (e.g., a peering router) is down, whether theCDN 102 is down; etc. In another example, state variables field 610 may include currently available bandwidths of individual devices and/orCDNs 102. -
FIG. 7 illustrates exemplary records inpolicy database 314 oftopology manager 108. As shown,policy database 314 may include records 700-1 through 700-D (collectively “records 700” and individually “record 700”). Each ofrecords 700 may include a number of fields: apolicy identifier field 702; and a filters and functionsfield 704.Policy identifier field 702 may include a string of alphanumeric characters that uniquely identify a policy associated withrecord 700. - Filters and functions
field 704 may include conditions for identifying CDNs (e.g., from a list of CDNs in CDN database 310) based on one or more datum/factors, such as: access control values incontrol value field 604; values (inparameters field 606; values innetwork statistics field 608; and/or values instate variables field 610. The conditions may be specified via expressions representing mathematical relationships, mathematical operations, and/or symbols that reference information from different fields in records inCDN database 310. - For example, assume that filters and functions
field 704 for record 700-1 includes expressions “DAV<T1” and “WAV<T2.” Also assume DAV represents a daily average traffic volume and WAV represents a weekly average traffic volume. Accordingly, “DAV<T1” and “WAV<T2” may define filters that identify CDNs whose daily average traffic volume is below a threshold T1 and CDNs whose weekly average traffic volume is below a threshold T2, respectively. - Filters and functions
field 704 may also specify a relationship between different filters via logical operators or set operators. For example, assume that filters field 704 for record 700-1 includes “(DAV<T1) & (WAV<T2).” “(DAV<T1) & (WAV<T2)” may identifyCDNs 102 that are the intersection ofCDNs 102 whose each daily average traffic is below T1 andCDNs 102 whose each weekly average traffic is below T2. - Filters and functions
field 704 may also include functions to be applied toCDNs 102 that are listed inCDN database 310 and/or are identified by the filters in filters and functionsfield 704. For example, in one implementation, the functions may include expressions for computing numerical values used to rank CDNs (“ranking values”). Each function may reference numbers, mathematical expressions, and/or one or more of: values inaccess control field 604; values inparameters field 606; values innetwork statistics field 608; and/or values instate variables field 610. - For example, assume that F1 represents the result of applying a filter in filters and functions
field 704. Also assume that filters and functionsfield 704 includes “R1(F1)=1.” “R1(F1)=1” may indicate that each of the CDNs identified by applying F1 is to be assigned a ranking value of one. - Depending on the implementation,
records 700 may include fewer, additional, different, or a different arrangement of fields than those illustrated inFIG. 7 . In some implementations, fields in each record 700 may have a different syntax. -
FIG. 8 illustrates exemplary records inCDN selection database 316 oftopology manager 108. As shown,CDN selection database 316 may include records 800-1 through 800-E (collectively “records 800” and individually “record 800”). Each ofrecords 800 may include a selectionvariable values field 802 and aCDN route field 804. - Selection
variable values field 802 may include a predetermined set of selected data from:network information database 312; and data fields 604-610 in arecord 600 ofCDN database 310. Each set of values may represent a condition under which the policies specified inpolicy database 314 have been applied to obtain a ranking for CDNs. Selectionvariable values field 702 may include, for example: the IP address of a DNS server that may request the identity of aCDN 102 from which auser device 112 is to obtain content; a set of IP addresses to which an IP address ofuser device 112 belongs; time information (e.g., time of day, day of week, day of month, etc.) associated with a request for content; etc. -
CDN route field 804 may include a list of ranked CDNs and/or their routes. Each of the CDNs in the list may be identified by an IP address, a Universal Resource Identifier (URI), a Universal Resource Locator (URL), etc. -
FIG. 9 is a flow diagram of anexemplary process 900 that is associated with operation ofCDN selection system 106. As shown,process 900 may include receiving user command/input via a GUI interface, bytopology manager 108, from administration device 114 (block 902). -
Topology manager 108 may determine whether the user requests a CDN routing table for a list of CDNs inCDN database 310 be generated (block 904). If thetopology manager 108 determines that the CDN routing table for the list of CDNs is to be generated,topology manager 108 may generate the table (block 906). Generating the table may include applying one or more policies inpolicy database 314 to the list of CDNs, for a chosen set of selection variable values 802. The resulting CDN routing table may be stored inCDN selection database 316. Thereafter, atblock 906,process 900 may return to block 902, wheretopology manager 108 may receive additional commands fromadministration device 114. - If the CDN routing table is not to be generated,
topology manager 108 may proceed to block 908, to determine whether the command received atblock 902 directstopology manager 108 to distribute the CDN routing table to request routers 110 (block 908). If the CDN routing table is to be distributed (block 908: yes),topology manager 108 may distribute the CDN routing table to a selected set of request routers 110 (block 910). Thereafter, atblock 910,process 900 may return to block 902. - If the CDN routing table is not to be distributed (block 908: no),
topology manager 108 may determine whether the command received atblock 902 requires thatCDN selection system 106 be configured (block 912). If theCDN selection system 106 is not to be configured (block 912: no),process 900 may return to block 902. Otherwise (block 912: yes),topology manager 108 may provide a GUI (e.g., to administration device 114), and receive administrator input (block 914).Topology manager 108 may proceed to block 916. - At
block 916,topology manager 108 may determine whether the administrator input indicates thattopology manager 108 is to receive one of the following: information regarding a CDN; information about policies; information about configuration data for collecting network data; information about request routers 110 (e.g., addresses ofrequest routers 110 to which a CDN routing table may be distributed); or another command. If the input indicates that another command is to be received (block 916: command),process 900 may return to block 902. - If the input indicates that
topology manager 108 is to receive data about CDN (block 916: CDN),topology manager 108 may present a user interface for receiving CDN data toadministration device 114 and receive the CDN data from administration device 114 (block 918). If the input indicates thattopology manager 108 is to receive policies (block 916: policy),topology manager 108 may present a user interface for receiving policies toadministration device 114 and receive the policies from device 114 (block 920). If the input indicates that topology manager is to receive configuration information for collecting network data (block 916: configuration),topology manager 108 may present a user interface for receiving configuration information toadministration device 114 and receive the configuration information from administration device 114 (block 922). If the input indicates that topology manager is to receive information about request routers 110 (block 916: request routers),topology manager 108 may present a user interface for receiving information about request routers toadministration device 114 and receive the information from administration device 114 (block 924). - From each of
blocks topology manager 108 may return to block 902 to receive additional commands. -
FIG. 10 is a flow diagram of anotherexemplary process 1000 that is associated with operation ofCDN selection system 106. More specifically,process 1000 is associated with selecting a CDN 102 (e.g., the dual stage CDN selection process or the single stage CDN selection process). - As shown,
process 1000 may include, byDNS 400, receiving a request to resolve a CDN domain name to an IP address (block 1002). In response,DNS 400 resolves the domain name to the IP address (block 1004). Whenuser device 112 receives the IP address,user device 112 forwards a request for content to a device/CDN corresponding to the IP address (block 1006). - When the device/CDN corresponding to the IP address receives the request for content, a web server hosted on the device/CDN provides a redirect URL/URI to
user device 112, by either looking up its CDN routing table (received fromrequest router 110 or topology manager 108) or by querying a request router 110 (block 1008). Upon receipt of the redirect URL/URI,user device 112 may resolve the redirect URL/URI (e.g., via DNS 400) to an IP address (block 1010), and forward its request for content to the resolved IP address (block 1012). - When a device/a
CDN 102 corresponding to the resolved IP address receives the request for content fromuser device 112, the device/CDN 102 may stream the content to user device 112 (block 1014). In some implementations,user device 112 may provide some feedback information (e.g., user experience, download time, etc.). The feedback information may be forwarded to topology manager 108 (block 1016). - This specification describes
CDN selection system 106 that may allow a user application to obtain content fromdifferent CDNs 102. To allow this,CDN selection system 106 may generate a CDN routing table. The CDN routing table may specify, for particular state variable values (e.g., time, bandwidth, quality of service, etc.), whichCDN 102 is likely to provide the best/worst latency, the highest/lowest cost, the maximum/minimum bandwidth, the least number of errors, etc., as well as a path to the CDN. WhenCDN selection system 106 receives a request for content from a user application onuser device 112,CDN selection system 106 may direct the user application to aparticular CDN 102 based on the table, the state variable values, and CDN selection policies. - In this specification, various preferred embodiments have been described with reference to the accompanying drawings. It will, however, be evident that various modifications and changes may be made thereto, and additional embodiments may be implemented, without departing from the broader scope of the invention as set forth in the claims that follow. The specification and drawings are accordingly to be regarded in an illustrative rather than restrictive sense.
- In the above, while a series of blocks have been described with regard to the process illustrated in
FIGS. 9 and 10 , the order of the blocks may be modified in other implementations. In addition, non-dependent blocks may represent blocks that can be performed in parallel. - It will be apparent that aspects described herein may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement aspects does not limit the invention. Thus, the operation and behavior of the aspects were described without reference to the specific software code—it being understood that software and control hardware can be designed to implement the aspects based on the description herein.
- Further, certain portions of the implementations have been described as “logic” that performs one or more functions. This logic may include hardware, such as a processor, a microprocessor, an application specific integrated circuit, or a field programmable gate array, software, or a combination of hardware and software.
- No element, block, or instruction used in the present application should be construed as critical or essential to the implementations described herein unless explicitly described as such. Also, as used herein, the articles “a”, “an” and “the” are intended to include one or more items. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.
Claims (20)
1. A system comprising:
a request router to:
receive a content distribution network (CDN) routing table from a topology manager;
receive a request, from a device in one of a redirect CDN or a domain name system (DNS), to identify a target CDN for sending content to a user device;
perform a lookup in the CDN routing table, based on information provided by the device and CDN selection policies, to select the target CDN;
obtain an identifier corresponding to the target CDN as a result of performing the lookup; and
provide the identifier to the device.
2. The system of claim 1 , wherein the device includes one of:
a DNS server device; or a host device that includes a web server.
3. The system of claim 1 , wherein the user device includes one of:
a tablet device; a smart phone; a lap top computer; a personal computer; or a game console.
4. The system of claim 1 , wherein the identifier corresponding to the target CDN includes:
an universal resource identifier (URI); or
an Internet Protocol (IP) address.
5. The system of claim 1 , wherein the request includes:
an Internet Protocol (IP) address of the user device; or
an Internet Protocol (IP) address of a DNS server in the DNS.
6. The system of claim 1 , wherein the request provided by the device further includes:
a point of presence (POP) information; or
information identifying a network to which the user device belongs.
7. The system of claim 1 , wherein the device is configured to:
send a CNAME record that includes the identifier to another device; or
send a hypertext transfer protocol (HTTP) 302 redirect response to the user device.
8. The system of claim 1 , further comprising:
the topology manager to:
receive a list of CDNs from an administration device, wherein the list of CDNs include the target CDN; and
the CDN selection policies.
9. The system of claim 8 , wherein the topology manager is further configured to:
receive configuration information for collecting network data; and
receive network data from data collection components.
10. The system of claim 9 , wherein the network data includes:
simple network management protocol (SNMP) data; or
traffic data.
11. The system of claim 8 , wherein the topology manager is further configured to obtain topology maps, and
wherein the topology maps include one or more of:
a virtual private network (VPN) topology map;
a multiprotocol label switched (MPLS) network topology map;
an autonomous system (AS) topology map;
a local network routing topology;
a global topology map of CDNs; or
a topology map of a CDN.
12. The system of claim 8 , wherein the topology manager is further configured to obtain network data, and
wherein the network data includes at least one of:
aggregated traffic load on networks or virtual networks;
traffic loads between CDN devices;
load conditions on each of CDN devices;
bandwidth consumption of CDN traffic; or
bandwidth consumption of CDN traffic per each of differentiated services code point (DSCP) classes.
13. The system of claim 8 , wherein the topology manager is further configured to obtain network data, and
wherein the network data includes at least one of:
a percentage of network input or output traffic between different content providers;
statistics on traffic between CDN devices; or
ingress and egress traffic as a function of time.
14. A method comprising:
receiving traffic data from network monitoring components;
receiving content distribution network (CDN) selection policies from a remote application;
generating a content distribution network (CDN) routing table based on the traffic data;
receiving a request, from a network device, to identify a target CDN for sending content to a user device;
performing a lookup in the CDN routing table, based on information provided by the device and the CDN selection policies, to select the target CDN;
obtaining an identifier corresponding to the target CDN as a result of performing the lookup; and
providing a message that includes the identifier to the network device.
15. The method of claim 14 , wherein the network device includes:
a domain name system (DNS) server; or
a web server.
16. The method of claim 14 , wherein the CDN selection policies include:
a policy for selecting a CDN in a round robin fashion;
a policy for selecting a particular CDN when an Internet Protocol (IP) address provided in the request is one of a particular block of IP addresses;
a policy for selecting a particular CDN based on an identity of the particular CDN; or
a policy for selecting a particular CDN based on availability of the content at the particular CDN.
17. The method of claim 14 , wherein the request includes:
an Internet Protocol (IP) address of the user device; or
an Internet Protocol (IP) address of a DNS server in the DNS.
18. The method of claim 14 , wherein the network device is configured to:
send a CNAME record that includes the identifier to another device; or
send a hypertext transfer protocol (HTTP) 302 redirect response to the user device.
19. A computer readable medium comprising computer-executable instructions for one or more processors, wherein when the one or more processors execute the instructions, the instructions cause the one or more processors to:
receive a content distribution network (CDN) routing table from a topology manager;
receive a request, from a device in either of a redirect CDN or a domain name system (DNS), to identify a target CDN for sending content to a user device;
perform a lookup in the CDN routing table, based on information provided by the device and CDN selection policies, to select the target CDN;
obtain an identifier corresponding to the target CDN as a result of performing the lookup; and
provide the identifier to the device.
20. The computer readable medium of claim 19 , further comprising instructions for further causing the one or more processors to determine at least one of:
traffic loads between CDN devices;
load conditions on each of CDN devices;
bandwidth consumption of CDN traffic; or
bandwidth consumption of CDN traffic per each of differentiated services code point (DSCP) classes.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/707,874 US9548874B2 (en) | 2012-12-07 | 2012-12-07 | Selecting a content delivery network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/707,874 US9548874B2 (en) | 2012-12-07 | 2012-12-07 | Selecting a content delivery network |
Publications (2)
Publication Number | Publication Date |
---|---|
US20140164584A1 true US20140164584A1 (en) | 2014-06-12 |
US9548874B2 US9548874B2 (en) | 2017-01-17 |
Family
ID=50882240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/707,874 Active 2035-03-21 US9548874B2 (en) | 2012-12-07 | 2012-12-07 | Selecting a content delivery network |
Country Status (1)
Country | Link |
---|---|
US (1) | US9548874B2 (en) |
Cited By (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140215051A1 (en) * | 2013-01-30 | 2014-07-31 | Cisco Technology, Inc. | Aggregating status to be used for selecting a content delivery network |
US20140280763A1 (en) * | 2013-03-15 | 2014-09-18 | Sonic Ip, Inc. | Systems, Methods, and Media for Delivery of Content |
US20150222536A1 (en) * | 2014-02-04 | 2015-08-06 | Fastly, Inc. | Communication path selection for content delivery |
US20150222535A1 (en) * | 2014-02-04 | 2015-08-06 | Fastly, Inc. | Communication path selection for content delivery |
US20150244463A1 (en) * | 2014-02-24 | 2015-08-27 | Futurewei Technologies, Inc. | Mapping Information Centric Networking Flows to Optical Flows |
US20150264009A1 (en) * | 2014-01-22 | 2015-09-17 | Limelight Networks, Inc. | Client-selectable routing using dns requests |
US20150281317A1 (en) * | 2014-03-31 | 2015-10-01 | Google Inc. | Requesting media content segments via multiple network connections |
US20160043990A1 (en) * | 2014-08-07 | 2016-02-11 | Cedexis, Inc. | Dns resolution replay for bare domain names that map to "a" records |
US20160065662A1 (en) * | 2014-08-27 | 2016-03-03 | Tensera Networks Ltd. | Selecting a content delivery network |
WO2016041846A1 (en) * | 2014-09-17 | 2016-03-24 | British Telecommunications Public Limited Company | Content delivery network |
US20160094585A1 (en) * | 2014-09-29 | 2016-03-31 | Limelight Networks, Inc. | Secure policy portal for remote storage networks |
US20160164790A1 (en) * | 2013-09-06 | 2016-06-09 | At&T Intellectual Property I, L.P. | Providing Differentiated Service To Traffic Flows Obscured By Content Distribution Systems |
CN105812328A (en) * | 2014-12-30 | 2016-07-27 | 中兴通讯股份有限公司 | Content distribution method, content distribution device, and content distribution system |
US20160234087A1 (en) * | 2015-02-06 | 2016-08-11 | Ustream, Inc. | Techniques for managing telemetry data for content delivery and/or data transfer networks |
CN105871734A (en) * | 2015-01-22 | 2016-08-17 | 阿里巴巴集团控股有限公司 | Method and device for acquiring traffic distribution information of local domain name system |
US20160315789A1 (en) * | 2014-01-06 | 2016-10-27 | Fujitsu Limited | Communication management system, communication management method, and management apparatus |
US20170012878A1 (en) * | 2015-07-07 | 2017-01-12 | At&T Intellectual Property I, L.P. | Network for providing appropriate content delivery network selection |
US20170118687A1 (en) * | 2012-12-10 | 2017-04-27 | At&T Mobility Ii Llc | Dynamic steering of traffic across radio access networks |
KR20170070143A (en) * | 2014-10-13 | 2017-06-21 | 지티이 코포레이션 | Software-defined network-based method and system for implementing content distribution network |
US20170180439A1 (en) * | 2014-04-29 | 2017-06-22 | Alcatel Lucent | Methods and devices for responding to a streaming request, access node and method for operating the same |
US20170187768A1 (en) * | 2015-12-29 | 2017-06-29 | Verizon Patent And Licensing Inc. | Content delivery network streaming optimization |
WO2017218473A1 (en) * | 2016-06-15 | 2017-12-21 | Alibaba Group Holding Limited | Dynamic acceleration in content delivery network |
WO2018128971A1 (en) * | 2017-01-06 | 2018-07-12 | Mz Ip Holdings, Llc | System and method for updating application clients using a plurality of content delivery networks |
US10038611B1 (en) | 2018-02-08 | 2018-07-31 | Extrahop Networks, Inc. | Personalization of alerts based on network monitoring |
US10063434B1 (en) * | 2017-08-29 | 2018-08-28 | Extrahop Networks, Inc. | Classifying applications or activities based on network behavior |
CN108494870A (en) * | 2018-04-03 | 2018-09-04 | 中国平安人寿保险股份有限公司 | Dynamic data loading method based on CDN and device |
US10116679B1 (en) | 2018-05-18 | 2018-10-30 | Extrahop Networks, Inc. | Privilege inference and monitoring based on network behavior |
US10182098B2 (en) * | 2017-01-31 | 2019-01-15 | Wipro Limited | Method and system for proactively selecting a content distribution network (CDN) for delivering content |
US10193816B2 (en) * | 2013-09-12 | 2019-01-29 | Nec Corporation | Method for operating an information-centric network and network |
US10204211B2 (en) | 2016-02-03 | 2019-02-12 | Extrahop Networks, Inc. | Healthcare operations with passive network monitoring |
US20190109899A1 (en) * | 2017-10-09 | 2019-04-11 | Level 3 Communications, Llc | Cross-Cluster Direct Server Return with Anycast Rendezvous in a Content Delivery Network (CDN) |
US10264003B1 (en) | 2018-02-07 | 2019-04-16 | Extrahop Networks, Inc. | Adaptive network monitoring with tuneable elastic granularity |
US20190166223A1 (en) * | 2016-07-25 | 2019-05-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Content delivery network (cdn) for uploading, caching and delivering user content |
US10382303B2 (en) | 2016-07-11 | 2019-08-13 | Extrahop Networks, Inc. | Anomaly detection using device relationship graphs |
US10389574B1 (en) | 2018-02-07 | 2019-08-20 | Extrahop Networks, Inc. | Ranking alerts based on network monitoring |
US10411978B1 (en) | 2018-08-09 | 2019-09-10 | Extrahop Networks, Inc. | Correlating causes and effects associated with network activity |
CN110445671A (en) * | 2019-06-27 | 2019-11-12 | 浪潮思科网络科技有限公司 | A kind of network flow monitoring method based on SDN |
US10498795B2 (en) | 2017-02-17 | 2019-12-03 | Divx, Llc | Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming |
US20190386895A1 (en) * | 2018-06-13 | 2019-12-19 | At&T Intellectual Property I, L.P. | East-west traffic monitoring solutions for the microservice virtualized data center lan |
US10594718B1 (en) | 2018-08-21 | 2020-03-17 | Extrahop Networks, Inc. | Managing incident response operations based on monitored network activity |
US10601718B2 (en) | 2017-04-03 | 2020-03-24 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and server associated with a routing network for modifying one or more parameters of the routing network |
US10601934B2 (en) | 2017-04-03 | 2020-03-24 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and one or more servers for transmitting data to a third party computing device |
US10609156B2 (en) * | 2017-04-03 | 2020-03-31 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and server associated with one or more routing networks in response to detecting activity |
US10608918B2 (en) | 2017-04-03 | 2020-03-31 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and one or more servers to determine likelihood of user device using a routing network |
US20200195512A1 (en) * | 2018-12-13 | 2020-06-18 | At&T Intellectual Property I, L.P. | Network data extraction parser-model in sdn |
US10716060B2 (en) | 2017-04-03 | 2020-07-14 | Bank Of America Corporation | Data transfer between computing device and user device at different locations and over session or connection to display one or more routing networks to use |
US10742530B1 (en) | 2019-08-05 | 2020-08-11 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US10742677B1 (en) | 2019-09-04 | 2020-08-11 | Extrahop Networks, Inc. | Automatic determination of user roles and asset types based on network monitoring |
CN111988817A (en) * | 2020-06-29 | 2020-11-24 | 百度在线网络技术(北京)有限公司 | Control method and device for OTA data packet issuing flow |
US10965702B2 (en) | 2019-05-28 | 2021-03-30 | Extrahop Networks, Inc. | Detecting injection attacks using passive network monitoring |
CN113067714A (en) * | 2020-01-02 | 2021-07-02 | 中国移动通信有限公司研究院 | A content distribution network scheduling processing method, device and equipment |
CN113347138A (en) * | 2020-03-02 | 2021-09-03 | 广州虎牙科技有限公司 | Method and device for transmitting transcoding data stream, computer equipment and storage medium |
US11134134B2 (en) * | 2015-11-10 | 2021-09-28 | Amazon Technologies, Inc. | Routing for origin-facing points of presence |
WO2021196446A1 (en) * | 2020-04-03 | 2021-10-07 | 北京市天元网络技术股份有限公司 | Method and device for analyzing content delivery network scheduling process, and electronic apparatus |
US20210314301A1 (en) * | 2016-05-18 | 2021-10-07 | Zscaler, Inc. | Private service edge nodes in a cloud-based system for private application access |
US11165831B2 (en) | 2017-10-25 | 2021-11-02 | Extrahop Networks, Inc. | Inline secret sharing |
US11165823B2 (en) | 2019-12-17 | 2021-11-02 | Extrahop Networks, Inc. | Automated preemptive polymorphic deception |
US11165814B2 (en) | 2019-07-29 | 2021-11-02 | Extrahop Networks, Inc. | Modifying triage information based on network monitoring |
US11194719B2 (en) | 2008-03-31 | 2021-12-07 | Amazon Technologies, Inc. | Cache optimization |
US11205037B2 (en) | 2010-01-28 | 2021-12-21 | Amazon Technologies, Inc. | Content distribution network |
US20210409305A1 (en) * | 2018-11-20 | 2021-12-30 | Zte Corporation | Method and apparatus for determining forwarding port in information centeric network |
US11245770B2 (en) | 2008-03-31 | 2022-02-08 | Amazon Technologies, Inc. | Locality based content distribution |
US11252071B2 (en) * | 2017-12-21 | 2022-02-15 | Akamai Technologies, Inc. | Sandbox environment for testing integration between a content provider origin and a content delivery network |
WO2022035391A1 (en) * | 2020-08-11 | 2022-02-17 | Medianova Internet Hizmetleri Ve Ticaret Anonim Sirketi | Server assignment by traffic modelling in content delivery networks (cdn) |
WO2022034619A1 (en) * | 2020-08-14 | 2022-02-17 | Novi Digital Entertainment Private Limited | System and method for delivering media content to users |
US11283715B2 (en) | 2008-11-17 | 2022-03-22 | Amazon Technologies, Inc. | Updating routing information based on client location |
US11290418B2 (en) | 2017-09-25 | 2022-03-29 | Amazon Technologies, Inc. | Hybrid content request routing system |
US11297140B2 (en) | 2015-03-23 | 2022-04-05 | Amazon Technologies, Inc. | Point of presence based data uploading |
US11296967B1 (en) | 2021-09-23 | 2022-04-05 | Extrahop Networks, Inc. | Combining passive network analysis and active probing |
US11303717B2 (en) | 2012-06-11 | 2022-04-12 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US11310256B2 (en) | 2020-09-23 | 2022-04-19 | Extrahop Networks, Inc. | Monitoring encrypted network traffic |
US11330008B2 (en) | 2016-10-05 | 2022-05-10 | Amazon Technologies, Inc. | Network addresses with encoded DNS-level information |
US11336614B2 (en) | 2013-09-27 | 2022-05-17 | Fastly, Inc. | Content node network address selection for content delivery |
US11336712B2 (en) | 2010-09-28 | 2022-05-17 | Amazon Technologies, Inc. | Point of presence management in request routing |
US11349861B1 (en) | 2021-06-18 | 2022-05-31 | Extrahop Networks, Inc. | Identifying network entities based on beaconing activity |
US11362986B2 (en) | 2018-11-16 | 2022-06-14 | Amazon Technologies, Inc. | Resolution of domain name requests in heterogeneous network environments |
US11381487B2 (en) | 2014-12-18 | 2022-07-05 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US11388072B2 (en) | 2019-08-05 | 2022-07-12 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US11431744B2 (en) | 2018-02-09 | 2022-08-30 | Extrahop Networks, Inc. | Detection of denial of service attacks |
US11451472B2 (en) | 2008-03-31 | 2022-09-20 | Amazon Technologies, Inc. | Request routing based on class |
US11457088B2 (en) | 2016-06-29 | 2022-09-27 | Amazon Technologies, Inc. | Adaptive transfer rate for retrieving content from a server |
US11463550B2 (en) | 2016-06-06 | 2022-10-04 | Amazon Technologies, Inc. | Request management for hierarchical cache |
US11463466B2 (en) | 2020-09-23 | 2022-10-04 | Extrahop Networks, Inc. | Monitoring encrypted network traffic |
US11461402B2 (en) | 2015-05-13 | 2022-10-04 | Amazon Technologies, Inc. | Routing based request correlation |
US11546153B2 (en) | 2017-03-22 | 2023-01-03 | Extrahop Networks, Inc. | Managing session secrets for continuous packet capture systems |
US11604667B2 (en) | 2011-04-27 | 2023-03-14 | Amazon Technologies, Inc. | Optimized deployment based upon customer locality |
US20230283515A1 (en) * | 2022-03-03 | 2023-09-07 | WarnerMedia Direct, LLC | Client device configuration based on client context |
US11762703B2 (en) | 2016-12-27 | 2023-09-19 | Amazon Technologies, Inc. | Multi-region request-driven code execution system |
US11843606B2 (en) | 2022-03-30 | 2023-12-12 | Extrahop Networks, Inc. | Detecting abnormal data access based on data similarity |
US11889140B2 (en) | 2021-01-06 | 2024-01-30 | Hulu, LLC | Global constraint-based content delivery network (CDN) selection in a video streaming system |
US11907202B2 (en) | 2022-03-03 | 2024-02-20 | WarnerMedia Direct, LLC | Session state data distribution via client devices |
US12052310B2 (en) | 2017-01-30 | 2024-07-30 | Amazon Technologies, Inc. | Origin server cloaking using virtual private cloud network environments |
US12114027B2 (en) | 2022-12-19 | 2024-10-08 | Beijing Hulu Software Technology Development Co., Ltd | Selection of content delivery networks using agents |
US12177284B2 (en) | 2022-07-25 | 2024-12-24 | Hulu, LLC | Content delivery network (CDN) selection using performance metric |
WO2025001699A1 (en) * | 2023-06-26 | 2025-01-02 | 中兴通讯股份有限公司 | Cdn routing pathfinding method and apparatus, and electronic device |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3228128B1 (en) * | 2014-12-01 | 2021-01-06 | Telefonaktiebolaget LM Ericsson (publ) | Efficient communication of network identifiers |
US10079800B2 (en) * | 2015-10-14 | 2018-09-18 | Nominum, Inc. | Client subnet efficiency by equivalence class aggregation |
US11956293B1 (en) | 2023-03-29 | 2024-04-09 | Adeia Guides Inc. | Selection of CDN and access network on the user device from among multiple access networks and CDNs |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030099336A1 (en) * | 2001-07-06 | 2003-05-29 | Speeney Joseph A. | Method and system for audibly announcing an indication of an identity of a sender of a communication |
US20040111640A1 (en) * | 2002-01-08 | 2004-06-10 | Baum Robert T. | IP based security applications using location, port and/or device identifier information |
US7274658B2 (en) * | 2001-03-01 | 2007-09-25 | Akamai Technologies, Inc. | Optimal route selection in a content delivery network |
US20080293448A1 (en) * | 2007-05-24 | 2008-11-27 | Sony Ericsson Mobile Communications Ab | Assisted lookup of contacting identifiers |
US20120240176A1 (en) * | 2011-03-16 | 2012-09-20 | Azuki Systems, Inc. | Method and system for federated over-the-top content delivery |
US20140156822A1 (en) * | 2012-11-15 | 2014-06-05 | Electronics And Telecommunications Research Institute | Method of request routing re-direction with loop detection and prevention |
US8825608B2 (en) * | 2011-02-23 | 2014-09-02 | Level 3 Communications, Llc | Content delivery network analytics management via edge stage collectors |
US8954520B2 (en) * | 2010-11-12 | 2015-02-10 | Netapp, Inc. | Systems and methods for managing user-specific modifications to shared content on an individual basis |
-
2012
- 2012-12-07 US US13/707,874 patent/US9548874B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7274658B2 (en) * | 2001-03-01 | 2007-09-25 | Akamai Technologies, Inc. | Optimal route selection in a content delivery network |
US20030099336A1 (en) * | 2001-07-06 | 2003-05-29 | Speeney Joseph A. | Method and system for audibly announcing an indication of an identity of a sender of a communication |
US20040111640A1 (en) * | 2002-01-08 | 2004-06-10 | Baum Robert T. | IP based security applications using location, port and/or device identifier information |
US20080293448A1 (en) * | 2007-05-24 | 2008-11-27 | Sony Ericsson Mobile Communications Ab | Assisted lookup of contacting identifiers |
US8954520B2 (en) * | 2010-11-12 | 2015-02-10 | Netapp, Inc. | Systems and methods for managing user-specific modifications to shared content on an individual basis |
US8825608B2 (en) * | 2011-02-23 | 2014-09-02 | Level 3 Communications, Llc | Content delivery network analytics management via edge stage collectors |
US20120240176A1 (en) * | 2011-03-16 | 2012-09-20 | Azuki Systems, Inc. | Method and system for federated over-the-top content delivery |
US20140156822A1 (en) * | 2012-11-15 | 2014-06-05 | Electronics And Telecommunications Research Institute | Method of request routing re-direction with loop detection and prevention |
Cited By (160)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11451472B2 (en) | 2008-03-31 | 2022-09-20 | Amazon Technologies, Inc. | Request routing based on class |
US11194719B2 (en) | 2008-03-31 | 2021-12-07 | Amazon Technologies, Inc. | Cache optimization |
US11245770B2 (en) | 2008-03-31 | 2022-02-08 | Amazon Technologies, Inc. | Locality based content distribution |
US11909639B2 (en) | 2008-03-31 | 2024-02-20 | Amazon Technologies, Inc. | Request routing based on class |
US11283715B2 (en) | 2008-11-17 | 2022-03-22 | Amazon Technologies, Inc. | Updating routing information based on client location |
US11811657B2 (en) | 2008-11-17 | 2023-11-07 | Amazon Technologies, Inc. | Updating routing information based on client location |
US11205037B2 (en) | 2010-01-28 | 2021-12-21 | Amazon Technologies, Inc. | Content distribution network |
US11336712B2 (en) | 2010-09-28 | 2022-05-17 | Amazon Technologies, Inc. | Point of presence management in request routing |
US11632420B2 (en) | 2010-09-28 | 2023-04-18 | Amazon Technologies, Inc. | Point of presence management in request routing |
US11604667B2 (en) | 2011-04-27 | 2023-03-14 | Amazon Technologies, Inc. | Optimized deployment based upon customer locality |
US12273428B2 (en) | 2012-06-11 | 2025-04-08 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US11303717B2 (en) | 2012-06-11 | 2022-04-12 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US11729294B2 (en) | 2012-06-11 | 2023-08-15 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US10701606B2 (en) * | 2012-12-10 | 2020-06-30 | At&T Intellectual Property I, L.P. | Dynamic steering of traffic across radio access networks |
US9860812B2 (en) * | 2012-12-10 | 2018-01-02 | At&T Intellectual Property I, L.P. | Dynamic steering of traffic across radio access networks |
US10313943B2 (en) | 2012-12-10 | 2019-06-04 | At&T Intellectual Property I, L.P. | Dynamic steering of traffic across radio access networks |
US20190246327A1 (en) * | 2012-12-10 | 2019-08-08 | At&T Mobility Ii Llc | Dynamic steering of traffic across radio access networks |
US20170118687A1 (en) * | 2012-12-10 | 2017-04-27 | At&T Mobility Ii Llc | Dynamic steering of traffic across radio access networks |
US9712412B2 (en) * | 2013-01-30 | 2017-07-18 | Cisco Technology, Inc. | Aggregating status to be used for selecting a content delivery network |
US20140215051A1 (en) * | 2013-01-30 | 2014-07-31 | Cisco Technology, Inc. | Aggregating status to be used for selecting a content delivery network |
US10917449B2 (en) * | 2013-03-15 | 2021-02-09 | Divx, Llc | Systems, methods, and media for delivery of content |
US20140280763A1 (en) * | 2013-03-15 | 2014-09-18 | Sonic Ip, Inc. | Systems, Methods, and Media for Delivery of Content |
US10397292B2 (en) * | 2013-03-15 | 2019-08-27 | Divx, Llc | Systems, methods, and media for delivery of content |
US20200059505A1 (en) * | 2013-03-15 | 2020-02-20 | Divx, Llc | Systems, Methods, and Media for Delivery of Content |
US10530682B2 (en) * | 2013-09-06 | 2020-01-07 | At&T Intellectual Property I, L.P. | Providing differentiated service to traffic flows obscured by content distribution systems |
US20170289049A1 (en) * | 2013-09-06 | 2017-10-05 | At&T Intellectual Property I, L.P. | Providing Differentiated Service To Traffic Flows Obscured By Content Distribution Systems |
US11057298B2 (en) | 2013-09-06 | 2021-07-06 | At&T Intellectual Property I, L.P. | Providing differentiated service to traffic flows obscured by content distribution systems |
US20160164790A1 (en) * | 2013-09-06 | 2016-06-09 | At&T Intellectual Property I, L.P. | Providing Differentiated Service To Traffic Flows Obscured By Content Distribution Systems |
US9699094B2 (en) * | 2013-09-06 | 2017-07-04 | At&T Intellectual Property I, L.P. | Providing differentiated service to traffic flows obscured by content distribution systems |
US10193816B2 (en) * | 2013-09-12 | 2019-01-29 | Nec Corporation | Method for operating an information-centric network and network |
US11336614B2 (en) | 2013-09-27 | 2022-05-17 | Fastly, Inc. | Content node network address selection for content delivery |
US20160315789A1 (en) * | 2014-01-06 | 2016-10-27 | Fujitsu Limited | Communication management system, communication management method, and management apparatus |
US10003475B2 (en) * | 2014-01-06 | 2018-06-19 | Fujitsu Limited | Communication management system, communication management method, and management apparatus |
US20150264009A1 (en) * | 2014-01-22 | 2015-09-17 | Limelight Networks, Inc. | Client-selectable routing using dns requests |
US10700969B2 (en) | 2014-02-04 | 2020-06-30 | Fastly, Inc. | Communication path selection for content delivery |
US9887914B2 (en) * | 2014-02-04 | 2018-02-06 | Fastly, Inc. | Communication path selection for content delivery |
US20150222536A1 (en) * | 2014-02-04 | 2015-08-06 | Fastly, Inc. | Communication path selection for content delivery |
US20150222535A1 (en) * | 2014-02-04 | 2015-08-06 | Fastly, Inc. | Communication path selection for content delivery |
US10536372B2 (en) * | 2014-02-04 | 2020-01-14 | Fastly Inc. | Communication path selection for content delivery |
US10044609B2 (en) * | 2014-02-04 | 2018-08-07 | Fastly, Inc. | Communication path selection for content delivery |
US20150244463A1 (en) * | 2014-02-24 | 2015-08-27 | Futurewei Technologies, Inc. | Mapping Information Centric Networking Flows to Optical Flows |
US9712240B2 (en) * | 2014-02-24 | 2017-07-18 | Futurewei Technologies, Inc. | Mapping information centric networking flows to optical flows |
US20150281317A1 (en) * | 2014-03-31 | 2015-10-01 | Google Inc. | Requesting media content segments via multiple network connections |
US20170180439A1 (en) * | 2014-04-29 | 2017-06-22 | Alcatel Lucent | Methods and devices for responding to a streaming request, access node and method for operating the same |
US10530738B2 (en) * | 2014-08-07 | 2020-01-07 | Citrix Systems, Inc. | DNS resolution replay for bare domain names that map to “A” records |
US20160043990A1 (en) * | 2014-08-07 | 2016-02-11 | Cedexis, Inc. | Dns resolution replay for bare domain names that map to "a" records |
US10506027B2 (en) * | 2014-08-27 | 2019-12-10 | Tensera Networks Ltd. | Selecting a content delivery network |
US20160065662A1 (en) * | 2014-08-27 | 2016-03-03 | Tensera Networks Ltd. | Selecting a content delivery network |
WO2016041846A1 (en) * | 2014-09-17 | 2016-03-24 | British Telecommunications Public Limited Company | Content delivery network |
US20160094585A1 (en) * | 2014-09-29 | 2016-03-31 | Limelight Networks, Inc. | Secure policy portal for remote storage networks |
KR101962620B1 (en) | 2014-10-13 | 2019-07-31 | 지티이 코포레이션 | Software-defined network-based method and system for implementing content distribution network |
KR20170070143A (en) * | 2014-10-13 | 2017-06-21 | 지티이 코포레이션 | Software-defined network-based method and system for implementing content distribution network |
US10999215B2 (en) | 2014-10-13 | 2021-05-04 | Zte Corporation | Software-defined network-based method and system for implementing content distribution network |
EP3193489A4 (en) * | 2014-10-13 | 2017-10-04 | ZTE Corporation | Software-defined network-based method and system for implementing content distribution network |
US11863417B2 (en) | 2014-12-18 | 2024-01-02 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US11381487B2 (en) | 2014-12-18 | 2022-07-05 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
CN105812328A (en) * | 2014-12-30 | 2016-07-27 | 中兴通讯股份有限公司 | Content distribution method, content distribution device, and content distribution system |
CN105871734A (en) * | 2015-01-22 | 2016-08-17 | 阿里巴巴集团控股有限公司 | Method and device for acquiring traffic distribution information of local domain name system |
US20160234087A1 (en) * | 2015-02-06 | 2016-08-11 | Ustream, Inc. | Techniques for managing telemetry data for content delivery and/or data transfer networks |
US10601698B2 (en) * | 2015-02-06 | 2020-03-24 | International Business Machines Corporation | Techniques for managing telemetry data for content delivery and/or data transfer networks |
US11297140B2 (en) | 2015-03-23 | 2022-04-05 | Amazon Technologies, Inc. | Point of presence based data uploading |
US11461402B2 (en) | 2015-05-13 | 2022-10-04 | Amazon Technologies, Inc. | Routing based request correlation |
US10178030B2 (en) | 2015-07-07 | 2019-01-08 | At&T Intellectual Property I, L.P. | Network for providing appropriate content delivery network selection |
US10560384B2 (en) | 2015-07-07 | 2020-02-11 | At&T Intellectual Property I, L.P. | Network for providing appropriate content delivery network selection |
US9954782B2 (en) * | 2015-07-07 | 2018-04-24 | At&T Intellectual Property I, L.P. | Network for providing appropriate content delivery network selection |
US20170012878A1 (en) * | 2015-07-07 | 2017-01-12 | At&T Intellectual Property I, L.P. | Network for providing appropriate content delivery network selection |
US11134134B2 (en) * | 2015-11-10 | 2021-09-28 | Amazon Technologies, Inc. | Routing for origin-facing points of presence |
US11575725B2 (en) * | 2015-12-29 | 2023-02-07 | Verizon Patent And Licensing Inc. | Content delivery network streaming optimization |
US20170187768A1 (en) * | 2015-12-29 | 2017-06-29 | Verizon Patent And Licensing Inc. | Content delivery network streaming optimization |
US10204211B2 (en) | 2016-02-03 | 2019-02-12 | Extrahop Networks, Inc. | Healthcare operations with passive network monitoring |
US20210314301A1 (en) * | 2016-05-18 | 2021-10-07 | Zscaler, Inc. | Private service edge nodes in a cloud-based system for private application access |
US11463550B2 (en) | 2016-06-06 | 2022-10-04 | Amazon Technologies, Inc. | Request management for hierarchical cache |
WO2017218473A1 (en) * | 2016-06-15 | 2017-12-21 | Alibaba Group Holding Limited | Dynamic acceleration in content delivery network |
US20170366409A1 (en) * | 2016-06-15 | 2017-12-21 | Alibaba Group Holding Limited | Dynamic Acceleration in Content Delivery Network |
US11457088B2 (en) | 2016-06-29 | 2022-09-27 | Amazon Technologies, Inc. | Adaptive transfer rate for retrieving content from a server |
US10382303B2 (en) | 2016-07-11 | 2019-08-13 | Extrahop Networks, Inc. | Anomaly detection using device relationship graphs |
US20190166223A1 (en) * | 2016-07-25 | 2019-05-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Content delivery network (cdn) for uploading, caching and delivering user content |
US10848586B2 (en) * | 2016-07-25 | 2020-11-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Content delivery network (CDN) for uploading, caching and delivering user content |
US11330008B2 (en) | 2016-10-05 | 2022-05-10 | Amazon Technologies, Inc. | Network addresses with encoded DNS-level information |
US11762703B2 (en) | 2016-12-27 | 2023-09-19 | Amazon Technologies, Inc. | Multi-region request-driven code execution system |
WO2018128971A1 (en) * | 2017-01-06 | 2018-07-12 | Mz Ip Holdings, Llc | System and method for updating application clients using a plurality of content delivery networks |
US10432486B2 (en) * | 2017-01-06 | 2019-10-01 | Mz Ip Holdings, Llc | System and method for updating application clients using a plurality of content delivery networks |
CN110383794A (en) * | 2017-01-06 | 2019-10-25 | Mz知识产权控股有限责任公司 | The system and method for application client are updated using multiple content delivery networks |
US12052310B2 (en) | 2017-01-30 | 2024-07-30 | Amazon Technologies, Inc. | Origin server cloaking using virtual private cloud network environments |
US10182098B2 (en) * | 2017-01-31 | 2019-01-15 | Wipro Limited | Method and system for proactively selecting a content distribution network (CDN) for delivering content |
US10498795B2 (en) | 2017-02-17 | 2019-12-03 | Divx, Llc | Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming |
US11343300B2 (en) | 2017-02-17 | 2022-05-24 | Divx, Llc | Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming |
US11546153B2 (en) | 2017-03-22 | 2023-01-03 | Extrahop Networks, Inc. | Managing session secrets for continuous packet capture systems |
US10798007B2 (en) | 2017-04-03 | 2020-10-06 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and server associated with a routing network for modifying one or more parameters of the routing network |
US10716060B2 (en) | 2017-04-03 | 2020-07-14 | Bank Of America Corporation | Data transfer between computing device and user device at different locations and over session or connection to display one or more routing networks to use |
US10608918B2 (en) | 2017-04-03 | 2020-03-31 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and one or more servers to determine likelihood of user device using a routing network |
US10609156B2 (en) * | 2017-04-03 | 2020-03-31 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and server associated with one or more routing networks in response to detecting activity |
US10601934B2 (en) | 2017-04-03 | 2020-03-24 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and one or more servers for transmitting data to a third party computing device |
US10601718B2 (en) | 2017-04-03 | 2020-03-24 | Bank Of America Corporation | Data transfer, over session or connection, and between computing device and server associated with a routing network for modifying one or more parameters of the routing network |
US10063434B1 (en) * | 2017-08-29 | 2018-08-28 | Extrahop Networks, Inc. | Classifying applications or activities based on network behavior |
US10382296B2 (en) * | 2017-08-29 | 2019-08-13 | Extrahop Networks, Inc. | Classifying applications or activities based on network behavior |
US11290418B2 (en) | 2017-09-25 | 2022-03-29 | Amazon Technologies, Inc. | Hybrid content request routing system |
US10749945B2 (en) * | 2017-10-09 | 2020-08-18 | Level 3 Communications, Llc | Cross-cluster direct server return with anycast rendezvous in a content delivery network (CDN) |
US20190109899A1 (en) * | 2017-10-09 | 2019-04-11 | Level 3 Communications, Llc | Cross-Cluster Direct Server Return with Anycast Rendezvous in a Content Delivery Network (CDN) |
US20200374341A1 (en) * | 2017-10-09 | 2020-11-26 | Level 3 Communications, Llc | Cross-cluster direct server return with anycast rendezvous in a content delivery network (cdn) |
US11665207B2 (en) | 2017-10-25 | 2023-05-30 | Extrahop Networks, Inc. | Inline secret sharing |
US11165831B2 (en) | 2017-10-25 | 2021-11-02 | Extrahop Networks, Inc. | Inline secret sharing |
US11252071B2 (en) * | 2017-12-21 | 2022-02-15 | Akamai Technologies, Inc. | Sandbox environment for testing integration between a content provider origin and a content delivery network |
US10264003B1 (en) | 2018-02-07 | 2019-04-16 | Extrahop Networks, Inc. | Adaptive network monitoring with tuneable elastic granularity |
US10979282B2 (en) | 2018-02-07 | 2021-04-13 | Extrahop Networks, Inc. | Ranking alerts based on network monitoring |
US10389574B1 (en) | 2018-02-07 | 2019-08-20 | Extrahop Networks, Inc. | Ranking alerts based on network monitoring |
US10594709B2 (en) | 2018-02-07 | 2020-03-17 | Extrahop Networks, Inc. | Adaptive network monitoring with tuneable elastic granularity |
US11463299B2 (en) | 2018-02-07 | 2022-10-04 | Extrahop Networks, Inc. | Ranking alerts based on network monitoring |
US10728126B2 (en) | 2018-02-08 | 2020-07-28 | Extrahop Networks, Inc. | Personalization of alerts based on network monitoring |
US10038611B1 (en) | 2018-02-08 | 2018-07-31 | Extrahop Networks, Inc. | Personalization of alerts based on network monitoring |
US11431744B2 (en) | 2018-02-09 | 2022-08-30 | Extrahop Networks, Inc. | Detection of denial of service attacks |
CN108494870A (en) * | 2018-04-03 | 2018-09-04 | 中国平安人寿保险股份有限公司 | Dynamic data loading method based on CDN and device |
US10277618B1 (en) | 2018-05-18 | 2019-04-30 | Extrahop Networks, Inc. | Privilege inference and monitoring based on network behavior |
US10116679B1 (en) | 2018-05-18 | 2018-10-30 | Extrahop Networks, Inc. | Privilege inference and monitoring based on network behavior |
US20190386895A1 (en) * | 2018-06-13 | 2019-12-19 | At&T Intellectual Property I, L.P. | East-west traffic monitoring solutions for the microservice virtualized data center lan |
US11012329B2 (en) | 2018-08-09 | 2021-05-18 | Extrahop Networks, Inc. | Correlating causes and effects associated with network activity |
US10411978B1 (en) | 2018-08-09 | 2019-09-10 | Extrahop Networks, Inc. | Correlating causes and effects associated with network activity |
US11496378B2 (en) | 2018-08-09 | 2022-11-08 | Extrahop Networks, Inc. | Correlating causes and effects associated with network activity |
US11323467B2 (en) | 2018-08-21 | 2022-05-03 | Extrahop Networks, Inc. | Managing incident response operations based on monitored network activity |
US10594718B1 (en) | 2018-08-21 | 2020-03-17 | Extrahop Networks, Inc. | Managing incident response operations based on monitored network activity |
US11362986B2 (en) | 2018-11-16 | 2022-06-14 | Amazon Technologies, Inc. | Resolution of domain name requests in heterogeneous network environments |
US20210409305A1 (en) * | 2018-11-20 | 2021-12-30 | Zte Corporation | Method and apparatus for determining forwarding port in information centeric network |
US11665084B2 (en) * | 2018-11-20 | 2023-05-30 | Zte Corporation | Method and apparatus for determining forwarding port in information centeric network |
US20200195512A1 (en) * | 2018-12-13 | 2020-06-18 | At&T Intellectual Property I, L.P. | Network data extraction parser-model in sdn |
US11563640B2 (en) * | 2018-12-13 | 2023-01-24 | At&T Intellectual Property I, L.P. | Network data extraction parser-model in SDN |
US11706233B2 (en) | 2019-05-28 | 2023-07-18 | Extrahop Networks, Inc. | Detecting injection attacks using passive network monitoring |
US10965702B2 (en) | 2019-05-28 | 2021-03-30 | Extrahop Networks, Inc. | Detecting injection attacks using passive network monitoring |
CN110445671A (en) * | 2019-06-27 | 2019-11-12 | 浪潮思科网络科技有限公司 | A kind of network flow monitoring method based on SDN |
US11165814B2 (en) | 2019-07-29 | 2021-11-02 | Extrahop Networks, Inc. | Modifying triage information based on network monitoring |
US11438247B2 (en) | 2019-08-05 | 2022-09-06 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US10742530B1 (en) | 2019-08-05 | 2020-08-11 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US11388072B2 (en) | 2019-08-05 | 2022-07-12 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US11652714B2 (en) | 2019-08-05 | 2023-05-16 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US11463465B2 (en) | 2019-09-04 | 2022-10-04 | Extrahop Networks, Inc. | Automatic determination of user roles and asset types based on network monitoring |
US10742677B1 (en) | 2019-09-04 | 2020-08-11 | Extrahop Networks, Inc. | Automatic determination of user roles and asset types based on network monitoring |
US11165823B2 (en) | 2019-12-17 | 2021-11-02 | Extrahop Networks, Inc. | Automated preemptive polymorphic deception |
US12107888B2 (en) | 2019-12-17 | 2024-10-01 | Extrahop Networks, Inc. | Automated preemptive polymorphic deception |
CN113067714A (en) * | 2020-01-02 | 2021-07-02 | 中国移动通信有限公司研究院 | A content distribution network scheduling processing method, device and equipment |
CN113347138A (en) * | 2020-03-02 | 2021-09-03 | 广州虎牙科技有限公司 | Method and device for transmitting transcoding data stream, computer equipment and storage medium |
WO2021196446A1 (en) * | 2020-04-03 | 2021-10-07 | 北京市天元网络技术股份有限公司 | Method and device for analyzing content delivery network scheduling process, and electronic apparatus |
CN111988817A (en) * | 2020-06-29 | 2020-11-24 | 百度在线网络技术(北京)有限公司 | Control method and device for OTA data packet issuing flow |
WO2022035391A1 (en) * | 2020-08-11 | 2022-02-17 | Medianova Internet Hizmetleri Ve Ticaret Anonim Sirketi | Server assignment by traffic modelling in content delivery networks (cdn) |
US12120404B2 (en) * | 2020-08-14 | 2024-10-15 | Novi Digital Entertainment Private Limited | System and method for delivering media content to users |
US20230308733A1 (en) * | 2020-08-14 | 2023-09-28 | Novi Digital Entertainment Private Limited | System and method for delivering media content to users |
WO2022034619A1 (en) * | 2020-08-14 | 2022-02-17 | Novi Digital Entertainment Private Limited | System and method for delivering media content to users |
US11310256B2 (en) | 2020-09-23 | 2022-04-19 | Extrahop Networks, Inc. | Monitoring encrypted network traffic |
US11558413B2 (en) | 2020-09-23 | 2023-01-17 | Extrahop Networks, Inc. | Monitoring encrypted network traffic |
US11463466B2 (en) | 2020-09-23 | 2022-10-04 | Extrahop Networks, Inc. | Monitoring encrypted network traffic |
US11889140B2 (en) | 2021-01-06 | 2024-01-30 | Hulu, LLC | Global constraint-based content delivery network (CDN) selection in a video streaming system |
US11349861B1 (en) | 2021-06-18 | 2022-05-31 | Extrahop Networks, Inc. | Identifying network entities based on beaconing activity |
US12225030B2 (en) | 2021-06-18 | 2025-02-11 | Extrahop Networks, Inc. | Identifying network entities based on beaconing activity |
US11296967B1 (en) | 2021-09-23 | 2022-04-05 | Extrahop Networks, Inc. | Combining passive network analysis and active probing |
US11916771B2 (en) | 2021-09-23 | 2024-02-27 | Extrahop Networks, Inc. | Combining passive network analysis and active probing |
US20230283515A1 (en) * | 2022-03-03 | 2023-09-07 | WarnerMedia Direct, LLC | Client device configuration based on client context |
US11924030B2 (en) * | 2022-03-03 | 2024-03-05 | WarnerMedia Direct, LLC | Client device configuration based on client context |
US11907202B2 (en) | 2022-03-03 | 2024-02-20 | WarnerMedia Direct, LLC | Session state data distribution via client devices |
US11843606B2 (en) | 2022-03-30 | 2023-12-12 | Extrahop Networks, Inc. | Detecting abnormal data access based on data similarity |
US12177284B2 (en) | 2022-07-25 | 2024-12-24 | Hulu, LLC | Content delivery network (CDN) selection using performance metric |
US12114027B2 (en) | 2022-12-19 | 2024-10-08 | Beijing Hulu Software Technology Development Co., Ltd | Selection of content delivery networks using agents |
WO2025001699A1 (en) * | 2023-06-26 | 2025-01-02 | 中兴通讯股份有限公司 | Cdn routing pathfinding method and apparatus, and electronic device |
Also Published As
Publication number | Publication date |
---|---|
US9548874B2 (en) | 2017-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9548874B2 (en) | Selecting a content delivery network | |
US9338223B2 (en) | Private cloud topology management system | |
US12095850B2 (en) | Method and system for transmitting data in a computer network | |
US9705922B2 (en) | Cloud-based user-level policy, reporting, and authentication over DNS | |
CN107241186B (en) | Network device and method for network communication | |
US9379970B2 (en) | Selective content routing and storage protocol for information-centric network | |
US20160164825A1 (en) | Policy Implementation Based on Data from a Domain Name System Authoritative Source | |
US9276840B2 (en) | Interest messages with a payload for a named data network | |
Haßlinger et al. | Content delivery and caching from a network provider’s perspective | |
US8606847B2 (en) | Application-layer traffic optimization service map updates | |
US8667172B2 (en) | Method and apparatus for content identifier based radius constrained cache flooding to enable efficient content routing | |
US20140304386A1 (en) | Routing client requests | |
US20190306111A1 (en) | High precision mapping with intermediary dns filtering | |
Frank et al. | Collaboration opportunities for content delivery and network infrastructures | |
Giotis et al. | A reputation-based collaborative schema for the mitigation of distributed attacks in SDN domains | |
US10812352B2 (en) | System and method for associating network domain names with a content distribution network | |
Palacin et al. | The impact of content delivery networks on the internet ecosystem | |
US10491529B2 (en) | Automatic rule generation for flow management in software defined networking networks | |
US20240388567A1 (en) | End-to-end network security service for workloads across different network environments | |
CN106899640A (en) | The acquisition methods and communication system of data resource | |
EP2707997A1 (en) | Method for managing the infrastructure of a content distribution network service in an isp network and such an infrastructure | |
WO2010135254A1 (en) | Limiting storage messages in peer to peer network | |
Shariatmadari | Data Dissemination using Information-Centric Networking | |
Chai et al. | A distributed interdomain control system for information-centric content delivery | |
Hoang-Van et al. | A hierarchical P2P traffic localization method with bandwidth limitation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: VERIZON PATENT AND LICENSING INC., NEW JERSEY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JOE, BRAIN W.;PACELLA, DANTE JOHN;THREEFOOT, MATTHEW JOHN;AND OTHERS;SIGNING DATES FROM 20121116 TO 20121207;REEL/FRAME:029426/0335 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |