US20080222243A1 - Client-side method for identifying an optimal server - Google Patents
Client-side method for identifying an optimal server Download PDFInfo
- Publication number
- US20080222243A1 US20080222243A1 US11/940,763 US94076307A US2008222243A1 US 20080222243 A1 US20080222243 A1 US 20080222243A1 US 94076307 A US94076307 A US 94076307A US 2008222243 A1 US2008222243 A1 US 2008222243A1
- Authority
- US
- United States
- Prior art keywords
- cdn
- server
- stream
- content
- player
- 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.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/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
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- 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/101—Server selection for load balancing based on network conditions
-
- 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/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/1038—Load balancing arrangements to avoid a single path through a load balancer
Definitions
- the present invention relates generally to high-performance, fault-tolerant content delivery in a content delivery network (CDN).
- CDN content delivery network
- Streaming media is a type of Internet content that has the important characteristic of being able to be played while still in the process of being downloaded.
- a client can play the first packet of the stream, and decompress the second, while receiving the third.
- Streaming is very useful for delivering media because media files tend to be large particularly as the duration of the programming increases. Indeed, for live events, the file size is, in effect, infinite.
- users To view a media file that is not streamed, users must first download the file to a local hard disk—which may take minutes or even hours—and then open the file with player software that is compatible with the file format.
- the user's browser opens player software, which buffers the file for a few seconds and then plays the file while simultaneously downloading it.
- player software which buffers the file for a few seconds and then plays the file while simultaneously downloading it.
- most streaming media files are not stored locally on a user's hard disk. Once the bits representing content are used, the player typically discards them.
- Streaming media quality varies widely according to the type of media being delivered, the speed of the user's Internet connection, network conditions, the bit rate at which the content is encoded, and the format used.
- streaming audio can be FM quality, but, given typical bandwidth constraints, streaming video is poor by TV standards, with smaller screens, lower resolution, and fewer frames per second.
- the source for streaming media can be just about any form of media, including VHS or Beta format tapes, audio cassettes, DAT, MPEG video, MP3 audio, AVI, and the like.
- the content Prior to streaming, the content must first be encoded, a process which accomplishes four things: conversion of the content from analog to digital form, if necessary; creation of a file in the format recognized by the streaming media server and player; compression of the file to maximize the richness of the content that can be delivered in real-time given limited bandwidth; and, establishing the bit rate at which the media is to be delivered.
- Content owners typically choose to encode media at multiple rates so that users with fast connections get as good an experience as possible but users with slow connections can also access the content.
- Non-streaming content is standards-based in the sense that the server and client software developed by different vendors, such as Apache server, Microsoft Internet Explorer, Netscape Communicator, and the like, generally work well together.
- Streaming media usually relies on proprietary server and client software.
- the server, client, production and encoding tools developed by a streaming software vendor are collectively referred to as a format.
- Streaming media encoded in a particular format must be served by that format's media server and replayed by that format's client.
- Streaming media clients are often called players, and typically they exist as plug-ins to Web browsers.
- Streaming media clients are also often capable of playing standards-based non-streaming media files, such as WAV or AVI.
- RealNetworks RealSystem G2 handles all media types including audio, video, animation, and still images and text.
- RealSystem G2 and QuickTime support SMIL, an XML-based language that allows the content provider to time and position media within the player window.
- SMIL an XML-based language that allows the content provider to time and position media within the player window.
- RTSP the Real Time Streaming Protocol.
- RTSP is an application-level protocol designed to work with lower-level protocols like RTP (Realtime Transport Protocol) and RSVP (Resource Reservation Protocol) to provide a complete streaming service over the Internet.
- RTP Realtime Transport Protocol
- RSVP Resource Reservation Protocol
- content providers typically must have Microsoft NT 4 Server installed.
- WMT does not support SMIL or RTSP but has its own protocol that it calls HTML+Time. Apple QuickTime recently has added the capability to serve streaming media.
- QuickTime can support a number of formats including VR, 3D, Flash, and MP3.
- a splitter or repeater, reflector or mirror
- a splitter or repeater, reflector or mirror
- Each of the multiple signals is the same, and each is sent on to a different destination.
- splitters By cascading splitters in a tree-like fashion, a single source stream can be replicated into thousands or more identical copies. In this manner, a large number of viewers on the Internet can receive the same streaming signal simultaneously
- a CDN is a network of geographically distributed content delivery nodes that are arranged for efficient delivery of digital content (e.g., Web content, streaming media and applications) on behalf of third party content providers.
- a request from a requesting end user for given content is directed to a “best” replica, where “best” usually means that the item is served to the client quickly compared to the time it would take to fetch it from the content provider origin server.
- a CDN is implemented as a combination of a content delivery infrastructure, a request-routing mechanism, and a distribution infrastructure.
- the content delivery infrastructure usually comprises a set of “surrogate” origin servers that are located at strategic locations (e.g., Internet network access points, Internet Points of Presence, and the like) for delivering copies of content to requesting end users.
- the request-routing mechanism allocates servers in the content delivery infrastructure to requesting clients in a way that, for web content delivery, minimizes a given client's response time and, for streaming media delivery, provides for the highest quality.
- the distribution infrastructure consists of on-demand or push-based mechanisms that move content from the origin server to the surrogates.
- An effective CDN serves frequently-accessed content from a surrogate that is optimal for a given requesting client.
- a single service provider operates the request-routers, the surrogates, and the content distributors.
- that service provider establishes business relationships with content publishers and acts on behalf of their origin server sites to provide a distributed delivery system.
- a well-known commercial CDN service that provides web content and media streaming is provided by Akamai Technologies, Inc. of Cambridge, Mass.
- CDNs may use content modification to tag content provider content for delivery.
- Content modification enables a content provider to take direct control over request-routing without the need for specific switching devices or directory services between the requesting clients and the origin server.
- content objects are made up of a basic structure that includes references to additional, embedded content objects.
- the embedded objects are referenced using embedded HTML directives.
- a similar scheme is used for some types of streaming content which, for example, may be embedded within an SMIL document.
- Embedded HTML or SMIL directives tell the client to fetch embedded objects from the origin server.
- a content provider can modify references to embedded objects so that the client is told to fetch an embedded object from the best surrogate (instead of from the origin server).
- an optimal or “best” edge-based content server is identified.
- the client browser then makes a request for the content from that server.
- the object may be retrieved from another CDN content server or, failing that, from the origin server.
- a “best” content server for a particular client may not remain that way for a given time period.
- the notion of “best” can change very quickly given the relatively large size of most streams (and the near-infinite size of all live streams).
- the “best” server for a given client player receiving a given stream is likely to change before the stream is finished.
- a client machine includes a media player provisioned to perform a query to a CDNSP nameserver having a network map of Internet traffic conditions.
- the query is a DNS SRV lookup and includes an identification of the client player.
- the query is made asking for a particular service (e.g., RTSP) via a particular protocol (TCP) in a particular CDNSP domain.
- TCP protocol
- the nameserver returns a set of one or more tokens, with each token defining a machine or, in the preferred embodiment, a group of machines, from which the player should seek to obtain given content (e.g., a stream).
- the player may then optionally perform one or more tests to determine which one of a set of returned servers provides a best quality of service for the content delivery.
- That server is then used to retrieve the content.
- the client player code repeats the DNS SRV query during playback to determine whether there is a better source for the stream. If so, the player is controlled to switch to the better stream source “on the fly” if appropriate to maintain and/or enhance the quality of service.
- the client player publishes data back to the CDNSP identifying the results that were obtained during the testing process. This data provides the CDNSP with feedback regarding why the client player selected a particular server. Such data may then be used to augment the network map that is used by the CDNSP for subsequent request routing determinations.
- FIG. 1 is a block diagram of a known content delivery network in which the present invention may be implemented
- FIG. 2 is a simplified diagram illustrating how live streaming can be further enhanced by having the CDN send multiple copies of the same stream over different routes from a CDN entry point to the optimal streaming server at the edge of the Internet;
- FIG. 3 illustrates a representative client browser having a streaming media client player that is enhanced to include the functionality of the present invention
- FIG. 4 is a simplified flowchart illustrating the operation of the client player in a representative embodiment.
- FIG. 1 is a diagram showing an illustrative content delivery service in which the present invention may be implemented.
- the content delivery service comprises a preferably global content delivery network (CDN) 100 of content delivery server regions 102 a - n , a domain name service (DNS) system 104 , and a content modification or “initiator” tool 106 that allows content to be tagged for inclusion on the network.
- DNS system 104 receives network mapping data from a map maker 107 , which receives inputs from monitoring agents 109 distributed throughout the Internet. Agents typically perform various tests and monitor traffic conditions to identify Internet congestion problems.
- the map maker 107 takes the data generated from the agents and generates one or more maps detailing Internet traffic conditions.
- the content delivery service allows the network of content delivery server regions 102 a - n to serve a large number of clients efficiently.
- Each region may include one or more content servers, with multiple content servers typically sharing a local area network (LAN) backbone.
- LAN local area network
- a typical server is an Intel Pentium-based caching appliance running the Linux operating system with a large amount of RAM and disk storage. As also seen in FIG.
- the content delivery service may include a network operations control center (NOCC) 112 for monitoring the network to ensure that key processes are running, systems have not exceeded capacity, and that subsets of content servers (the so-called CDN regions 102 ) are interacting properly.
- NOCC network operations control center
- a content provider operates an origin server (or server farm) 115 from which requesting end users 119 would normally access the content provider's Web site via the Internet. Use of the CDN avoids transit over the Internet for selected content as described below.
- the content provider may also have access to a monitoring suite 114 that includes tools for both real-time and historic analysis of customer data.
- One tool is a traffic analyzer that provides multiple monitoring views that enable quick access to network and customer-specific traffic information.
- a reporter allows for viewing of historical data.
- a billing tool may be used to generate appropriate billing information for the content provider, who typically pays for the service as a function of the amount of content delivered by the CDN.
- High-performance content delivery is provided by directing requests for web objects (e.g., graphics, images, streaming media, HTML and the like) to the content delivery service network.
- content is first tagged for delivery by the tool 106 , which, for example, may be executed by a content provider at the content provider's web site 115 .
- the initiator tool 106 converts URLs that refer to streaming content to modified resource locators, called ARLs for convenience, so that requests for such media are served preferentially from the CDN instead of the origin server.
- the tool prepends each streaming URL with a string containing a CDN domain and, optionally, additional control information.
- the corresponding ARLs may look like as follows:
- the above formats are merely illustrative.
- a CDN customer's site e.g., origin server 115
- the user's system resolves the domain in the ARL to an IP address.
- the URL modification transparent to the user, cues the Internet's standard Domain Name Service (DNS) to query a CDN name server (or hierarchy of name servers) 104 to identify the appropriate media server from which to obtain the stream.
- DNS Domain Name Service
- the CDN typically implements a request-routing mechanism (e.g., under the control of maps generated from the monitoring agents 109 and map maker 107 ) to identify an optimal server for each user at a given moment in time. Because each user is served from the optimal streaming server, preferably based on real-time Internet conditions, streaming media content is served reliably and with the least possible packet loss and, thus, the best possible quality. Further details of a DNS-based request-routing mechanism are described in U.S. Pat. No. 6,108,703, which is incorporated herein by reference.
- live streaming can be further enhanced by having the CDN send multiple copies of the same stream over different routes from a CDN entry point to the optimal streaming server at the edge of the Internet. These copies are then combined to form one complete, original-quality stream, which is sent from the streaming server to the end users.
- FIG. 2 illustrates this process in more detail.
- a broadcast stream 200 is sent to a CDN entry point 202 .
- An entry point for example, comprises two servers (for redundancy), and each server can handle many streams from multiple content providers. Once the entry point receives the stream, it rebroadcasts copies of the stream to set reflectors 204 a - n .
- the streams are multiplexed and delivered to the set reflectors preferably via UDP (e.g., WMT encapsulated in RTSP encapsulated in UDP over IP).
- UDP e.g., WMT encapsulated in RTSP encapsulated in UDP over IP
- These set reflectors are preferably diverse from a network and geographic standpoint (e.g., at diverse Internet backbone data centers) to ensure fault tolerance.
- Each set reflector rebroadcasts its copy of the stream to each subscribing region, e.g., region 206 d , of a set of regions 206 a - n .
- a subscribing region 206 d is a CDN region that contains one or more streaming edge nodes 208 a - n to which user(s) have been routed by the CDN request-routing mechanism.
- a CDN region in this example, includes a set of edge nodes connected by a common backbone 209 , e.g., a local area network (LAN).
- a common backbone 209 e.g., a local area network (LAN).
- an edge node e.g., node 208 d
- a representative server runs an Intel processor, the Linux operating system and a Real Media or QuickTime Server.
- a representative server runs an Intel processor, Windows NT or 2000, and a Windows Media Server.
- the edge node also runs control programs 214 to facilitate the inventive subscription mechanism.
- each subscribing region then, simultaneously receives multiple copies of the streamed content. These copies have been sent via separate routes over the Internet, so congestion resulting in dropped packets is unlikely to impact each copy of the stream equally.
- each region preferably has a mechanism to recreate in real time an original version of the stream as sent to the entry point. In this way, the technique compensates for the inherently faulty Internet and inherently lossy UDP transport protocol.
- the reassembly mechanism within each region makes the original, verbatim stream available to every streaming media server within that region.
- the stream is delivered from the optimal edge node (and, in particular, that node's streaming media server) identified by the CDN's request-routing mechanism. If the CDN maps a user to a node in a region which has not subscribed to that broadcast stream (which, for example, is true for the first connection served from that region), the region automatically notifies the set reflectors and subscribes to that stream.
- a “best” content server for a particular client may not remain that way for a given time period.
- the notion of “best” can change very quickly given the relatively large size of most streams (and the near-infinite size of all live streams).
- the “best” server for a given client player receiving a given stream is likely to change before the stream is finished.
- the present invention provides a method for enabling a client player to identify a best server dynamically and, in addition, to selectively switch to that server to receive the stream or portions thereof.
- the present invention is implemented a streaming media client or player, which may be a plug-in to a web browser.
- the streaming media client is receiving a media stream from a given server, as generally described above.
- the invention enables the browser and, in particular, the media client, to identify an optimum streaming server for the stream in the first instance and, if appropriate, to selectively switch from a first server to an optimum streaming server “on the fly” so that it continues to receive the best possible service.
- FIG. 3 illustrates a representative client browser 300 having a streaming media client player (e.g., Real Player, Apple QuickTime Player, Windows Media Player, or the like) 302 that is enhanced according to the present invention.
- the streaming media client player includes or has associated therewith given code (a series of computer program instructions) for use in providing the inventive functionality.
- this code comprises several processes, namely, a DNS lookup process 304 , a server testing process 306 , a decision process 308 , and a stream switch process 310 .
- These processes are shown as being discrete for illustrative purposes only, as the functionality described below for each of the processes can be integrated into one or more programs, processes, execution threads, applets, or the like.
- the functions are built into the browser software directly, in another embodiment one or more of these functions are built into a plug-in to the browser software, in yet another embodiment one or more of these functions are provided in standalone code executable in the browser or elsewhere on the client.
- the particular implementation used is not critical to the operation of the invention.
- the DNS lookup process 304 is operative prior to and/or during receipt of a given stream for performing a given DNS lookup at a a nameserver 305 against a map 312 of current Internet traffic conditions maintained at that nameserver, for example, by a CDN service provider.
- the lookup process performs a DNS SRV lookup.
- the query preferably comprises given information, e.g., the IP address of the client player, the IP address of the player's local nameserver, and the media type requested.
- DNS SRV is a known protocol defined in RFC 2052 or RFC 2782, and this protocol enables administrators to designate some hosts as primary servers for a service and others as backups.
- a DNS SRV query is made asking for a particular service (in this case, RTSP) via a particular protocol (TCP) in a particular domain.
- the nameserver responds to the query with a set of tokens 315 a - n .
- Each token 315 provides a distinct answer to the query and defines a machine or, in the preferred embodiment, a group of machines, from which the client should seek to obtain the stream (identified by the URL).
- the nameserver response preferably also includes priority information (e.g., a ranking) and, optionally, weighting information for each token.
- the nameserver also associates and stores the requesting player's IP address and the response data generated as a result of the query.
- each token is a construct that can be used by the requesting client browser to find a preferred machine within a given CDN region.
- the first token may be of the form “y5q.kamai.net” where the “kamai.net” domain identifies the CDNSP domain and the “y ⁇ x ⁇ q” portion is, in effect, an instruction to an CDNSP nameserver to identify a set of lower level nameservers in the specified CDN region number 5. The lower level nameservers would then be queried to identify a particular “best” server.
- the token itself may point directly to the lower level nameservers or to a particular server within a given region.
- the client player initiates a query to a first or top level nameserver (the DNS SRV name server) and receives, in response, one or more tokens.
- a given token can then be passed back by the client player to a second or lower level nameserver to obtain a list of servers within a given CDN region from which the desired stream may be obtained.
- the top level nameserver can provide more accurate mapping of the request to a CDN region best able to service the request.
- the server testing process 306 responds to the returned token information or to information obtained from further processing of the token (as in the “y5q” example described above), and may perform one or more tests to help identify a best server. Server testing is not required, however, although it is desirable provided the additional bandwidth required by the testing is not prohibitive.
- the server testing process has been provided with a list of servers to test. It then contacts each one, e.g., by using the SRV protocol, which specifies a well-defined ordering scheme, although the player can use any scheme or simply try all servers at level n before trying n+1. Upon contacting a server, the process issues a status request to get information about the capabilities of the server.
- RTSP “OPTIONS” command The response from each server will be a static text string.
- the request-response is timed by the server testing process, which then determines the “best” server (e.g., usually the one providing the fastest response).
- the server testing may be used to “fine tune” the server chosen by the CDN DNS request routing system with an additional piece of information, namely, the actual pipe the client is using for the connection.
- the client connects to it and sends a usual command, e.g., the RTSP DESCRIBE command.
- the server testing process preferably also builds and sends an extra header that contains the IP address of the machine(s) tested, the timings of the OPTIONS experiment(s), and other data.
- the following is a representative data structure:
- X-CDNSP-Times header X-CDNSP-Times: ⁇ version ⁇ ⁇ ip ⁇ ⁇ region ⁇ ⁇ time ⁇ . . . X-CDNSP-Times “X-” is to show this is a non standard header : Colon & space (separator) ⁇ version ⁇ The version of this protocol - currently 1 ⁇ ip ⁇ The IP address of the machine tested ⁇ region ⁇ The region the IP address came from (e.g.
- the header is passed out-of-band to an appropriate CDNSP process that is used to generate one or more DNS request routing maps, e.g., nameserver map 312 . That process may also receive the DNS SRV response and the requesting IP address of the client player that initiated the query.
- DNS request routing maps e.g., nameserver map 312 .
- Such “feedback” provides significant value to users of the system (both SRV-enabled clients and other clients) by enhancing the accuracy of subsequent region or machine assignments when later requests are resolved against the modified map 312 .
- the header illustrated above may include information that describes the specific region/machine that the given client selected as the “best” and the data underlying that decision. This information can then be used to bias the request routing decisions in the map 312 for future requests made by this or other clients. As more clients use the system and provide such feedback, the request routing provided by the map becomes more and more accurate as, in effect, subsequent decisions can be based on the additional intelligence about how well the request routing was performed for the earlier requests.
- the fastest responding server to the OPTIONS test will be the best server to stream the requested data to the user. This also gives the system a chance to re-assign the stream, e.g., via a redirect message. If the fastest responding server is indeed the correct server to stream from, then the X-CDNSP-Times header can be ignored by the server.
- Another function provided by the present invention is the ability of the client player (namely, the code running in that player) to identify a “better” source for a stream being received and to switch to that source “on the fly,” i.e., while the stream is being received and rendered on the client.
- the decision process 308 is used to determine whether the player should switch servers mid-stream.
- the decision process 308 makes a decision regarding whether the stream being received is “acceptable,” e.g., a stream that is not currently being thinned by the server, or some other metric.
- Acceptable does not necessarily mean acceptable quality. It can also mean acceptable from a stream management point of view. For example, the client could be actually told by the server that the stream is unacceptable, e.g., if the server knows it is to be taken down soon (for a software update or other servicing). It could also declare a stream unacceptable if new advertising or newer content (e.g., a fast breaking news story) becomes available.
- control is passed to the stream switch process 310 , which is the process that makes the actual switch from one server to another.
- the particular technique used for switching from a first server to a second server typically is media type-dependent and any convenient technique may be used.
- the stream switch process 310 may then cause the second server to begin sending the stream at an offset of 2:45 and, at the same time, send appropriate instructions to terminate the stream from the first server.
- the stream switch process thus has the capability of picking the server it likes “least” and instructing that server to cease transmission at a given point.
- the stream switch process 310 decides to make a switch, it creates an internal buffer and causes that buffer to be filled with advance portions of the stream (e.g., by instructing the first server to deliver packets faster than those packets can be rendered or by instructing the player to slow down the rendering process).
- the switch process 310 then causes the first server to cease transmission and request that the new server begin the stream at a given offset. At this point, the pre-cached data in the buffer is rendered until the given offset is reached and the new data is received.
- the stream switch process includes the capability to match data packets from first and second servers to enable a substantially seamless switch to the new stream source.
- Voice streams can be synched before a switch by snipping out and putting in minute bits of silence between words.
- DAVID you can describe a few others if appropriate
- the client player provisioned according to the invention performs a query to a nameserver against a CDNSP network map.
- the query is made asking for a particular service (e.g., RTSP) via a particular protocol (TCP) in a particular domain.
- RTSP a particular service
- TCP protocol
- the nameserver returns a set of one or more tokens, with each token defining a machine or, in the preferred embodiment, a group of machines, from which the player should seek to obtain the stream.
- the player may then optionally perform one or more tests to determine which of a set of servers provides a best quality of service for the stream.
- This is step 404 .
- That server is then used to retrieve the stream, which is step 406 .
- a test is performed to determine whether the client player is still receiving the stream. If not, the routine ends. If, however, the client player is still receiving the stream, the routine continues at step 410 with the client player code repeating the DNS SRV query during playback to determine whether there is a better source for the stream.
- the “period” over which the query is repeated is variable and is dependent on the bandwidth available between the client and the network. For a live stream, a query/minute may be a desirable frequency. A shorter frequency (e.g., every few seconds) may be desirable for a broadband connection).
- a test is performed to determine whether the client player is receiving acceptable service from the existing source.
- the routine returns to step 408 and repeats the process at a given frequency. If so, the outcome of the test at step 412 indicates that the stream source is unacceptable, the routine continues at step 414 to initiate the switch to the “better” stream source. As noted above, preferably this switch is carried out “on the fly” as appropriate to maintain and/or enhance the quality of service. Thereafter, at step 416 , the client player continues to obtain the remainder of the stream from the new source. Of course, the “best” source may be changed again if the circumstances warrant. In a preferred embodiment, and as indicated at step 418 , the client player publishes data back to the CDNSP identifying the tests it ran to determine the best server. Such data may then be used to augment the network map that is used for subsequent request routing determinations.
- SRV Construction of a SRV Query A preferred SRV construction method is set forth below.
- _a ⁇ Serial This is the serial number field (including the “a”) from a Number ⁇ CDNSP-specific hostname (a hostname pointing to the CDN) with an underscore prepended.
- a serial number identifies a virtual content bucket on a CDN content server that may host the content - Hyphen (separator) ⁇ IP Address ⁇ The IP address of the player written as a four byte unsigned integer in network byte order .
- Dot (separator) Srv Specifies to the CDNSP DNS system to serve this request from a different set of servers .
- Dot (separator) Kamai.net Any CDNSP DNS domain name, with this particular name being merely representative Note the use of the underscore (“_”) character in the full SRV name. This is not an improper syntax as underscores are only illegal in hostnames, and an SRV query is not considered a hostname.
- SRV servers associated with the “srv.kamai.net” domain to spread out the load and ensure there is no single point of failure.
- the passing of the player's IP address is optional but desirable, and this operation may be set as a configuration option in the player.
- the SRV server must therefore be able to handle responses with and without the IP address supplied, although preferably the address is used. If the IP address is not passed, then the SRV server should treat the address of querying name server as the IP address of the client.
- the SRV nameserver that receives this query then has several important pieces of information:
- IP address of the player (optional, but desirable);
- the SRV server then performs the following steps
- the SRV query might then be of the following representative format:
- the SRV name server will return the following representative data (with the particular references being merely exemplary):
- Ranking Weighting Port to use Hostname 1 0 554 a40.y5q.kamai.net. 2 0 554 a40.y3q.kamai.net. 3 0 554 a40.y2q.kamai.net. 3 0 554 a40.y7q.kamai.net.
- the client and, in particular, the client player receives this list of servers, it contacts each one and requests an “OPTIONS” from each one.
- the response from each server is timed, and the “fastest” server may be selected as the “best” server from which to proceed.
- the client connects to it and sends the usual DESCRIBE command.
- the X-CDNSP-Times header preferably is added containing the timings of the OPTIONS experiment.
- the client is speaking to the best server.
- the client player may selectively switch from one stream to another, either seamlessly or with as minimal of a break as possible. With that ability, if a client does a SRV lookup periodically, it can learn which set of servers is currently best and switch to a server that is better than the one it is currently receiving the stream from.
- a given server itself can elect at any time to send the client to a better place via the RTSP REDIRECT command.
- This command allows for a redirect to happen at a particular time count, which should allow the player to resume the stream where it left off elsewhere without missing any data.
- the client player when the client player sends a query to the nameserver, that server performs a lookup against a map of current Internet traffic conditions.
- the CDNSP generates the map in any convenient manner. The following is a representative technique, which should not be taken by way of limitation.
- mapping agents may collect the following information: (a) IP blocks (a list of IP address blocks currently in use in the Internet), (b) load (per-IP block measurements of the amount of web load currently being handled by the CDN, (c) communication costs (e.g., a table listing the measured communication cost for each ⁇ IP block, CDN server region ⁇ pair, and (d) capacity (e.g., an aggregate server and network capacity of each CDN server region).
- IP blocks a list of IP address blocks currently in use in the Internet
- load per-IP block measurements of the amount of web load currently being handled by the CDN
- communication costs e.g., a table listing the measured communication cost for each ⁇ IP block, CDN server region ⁇ pair
- capacity e.g., an aggregate server and network capacity of each CDN server region.
- IP blocks representing all of the leaf networks e.g., endpoint LAN's on the global Internet
- BGP peering harvesting information from network registration databases (e.g., RIPE, APNIC and ARIN), and random traceroutes into very large blocks (e.g., UUNET).
- the load on the CDN generated by each IP block may be determined by gathering and aggregating measurements from the CDN content servers.
- One or more different communication costs may be used to determine the cost of communication between an IP block and a CDN server region: network health of server region (e.g., a binary metric indicating that the region is up or down), ASPATH length between the block and the server region (e.g., as supplied by BGP), round trip time (RTT) between the region's mapping agent and a given point in the IP block, packet loss rate between the region's mapping agent and the given point in the IP block, geographic distance, and perhaps others.
- network health of server region e.g., a binary metric indicating that the region is up or down
- ASPATH length between the block and the server region
- RTT round trip time
- packet loss rate between the region's mapping agent and the given point in the IP block
- geographic distance and perhaps others.
- Two types of capacity measurement are typically made: total server capacity in each region and physical network capacity in each region.
- the server capacity is determined from the number of servers currently up in a region.
- Physical network capacity is determined with packet pair measurements.
- Region capacity may be calculated as a given function (e.g., the minimum) of these two measurements.
- the map associates each IP block to an optimal CDN server region.
- One technique for generating the map involves identifying a number of candidate regions for each IP block (e.g., based on the ⁇ IP block, server region ⁇ communication costs), generating a bipartite graph using all of the measured and collected network information (e.g., with one side of the graph representing each of the IP blocks and the other side representing CDN server regions), and then running a min-cost flow algorithm on the graph.
- Each IP block node is labeled with its measured load, which is treated as the “flow” coming from that node.
- Running the algorithm results in an optimal assignment of IP block load to server regions. This assignment is the map, which is generated periodically by the CDNSP and then delivered to the nameservers that respond to the client player queries.
- any given function may comprise part of another program.
- any reference herein to a program should be broadly construed to refer to a program, a process, an execution thread, or other such programming construct.
- each function described above may be implemented as computer code, namely, as a set of computer instructions, for performing the functionality described via execution of that code using conventional means, e.g., a processor, a computer, a machine, a system, or other apparatus.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
A client player performs a query to a nameserver against a network map of Internet traffic conditions. The query is made asking for a particular service (e.g., RTSP) via a particular protocol (TCP) in a particular domain. In response, the nameserver returns a set of one or more tokens, with each token defining a machine or, in the preferred embodiment, a group of machines, from which the player should seek to obtain the stream. The player may then optionally perform one or more tests to determine which of a set of servers provides a best quality of service for the stream. That server is then used to retrieve the stream. Periodically, the client player code repeats the query during stream playback to determine whether there is a better source for the stream. If a better source exists, the player performs a switch to the better stream source “on the fly” if appropriate to maintain and/or enhance the quality of service. Preferably, the client player publishes data identifying why it selected a particular server, and such data may be used to augment the network map used for subsequent request routing determinations.
Description
- This application is based on and claims priority from provisional application Ser. No. 60/205,636, filed May 18, 2000, and assigned to the assignee of this application.
- 1. Technical Field
- The present invention relates generally to high-performance, fault-tolerant content delivery in a content delivery network (CDN).
- 2. Description of the Related Art
- Streaming media is a type of Internet content that has the important characteristic of being able to be played while still in the process of being downloaded. A client can play the first packet of the stream, and decompress the second, while receiving the third. Thus, an end user can start enjoying the multimedia without waiting to the end of transmission. Streaming is very useful for delivering media because media files tend to be large particularly as the duration of the programming increases. Indeed, for live events, the file size is, in effect, infinite. To view a media file that is not streamed, users must first download the file to a local hard disk—which may take minutes or even hours—and then open the file with player software that is compatible with the file format. To view streaming media, the user's browser opens player software, which buffers the file for a few seconds and then plays the file while simultaneously downloading it. Unlike software downloads, most streaming media files are not stored locally on a user's hard disk. Once the bits representing content are used, the player typically discards them.
- Streaming media quality varies widely according to the type of media being delivered, the speed of the user's Internet connection, network conditions, the bit rate at which the content is encoded, and the format used. In general, streaming audio can be FM quality, but, given typical bandwidth constraints, streaming video is poor by TV standards, with smaller screens, lower resolution, and fewer frames per second. The source for streaming media can be just about any form of media, including VHS or Beta format tapes, audio cassettes, DAT, MPEG video, MP3 audio, AVI, and the like. Prior to streaming, the content must first be encoded, a process which accomplishes four things: conversion of the content from analog to digital form, if necessary; creation of a file in the format recognized by the streaming media server and player; compression of the file to maximize the richness of the content that can be delivered in real-time given limited bandwidth; and, establishing the bit rate at which the media is to be delivered. Content owners typically choose to encode media at multiple rates so that users with fast connections get as good an experience as possible but users with slow connections can also access the content.
- Non-streaming content is standards-based in the sense that the server and client software developed by different vendors, such as Apache server, Microsoft Internet Explorer, Netscape Communicator, and the like, generally work well together. Streaming media, however, usually relies on proprietary server and client software. The server, client, production and encoding tools developed by a streaming software vendor are collectively referred to as a format. Streaming media encoded in a particular format must be served by that format's media server and replayed by that format's client. Streaming media clients are often called players, and typically they exist as plug-ins to Web browsers. Streaming media clients are also often capable of playing standards-based non-streaming media files, such as WAV or AVI.
- The three major streaming media formats in use today are: RealNetworks RealSystem G2, Microsoft Windows Media Technologies (“WMT”), and Apple QuickTime. RealSystem G2 handles all media types including audio, video, animation, and still images and text. RealSystem G2 and QuickTime support SMIL, an XML-based language that allows the content provider to time and position media within the player window. To deliver the media in real time Real and QuickTime use RTSP, the Real Time Streaming Protocol. RTSP is an application-level protocol designed to work with lower-level protocols like RTP (Realtime Transport Protocol) and RSVP (Resource Reservation Protocol) to provide a complete streaming service over the Internet. To stream in WMT's Advanced Streaming Format, content providers typically must have Microsoft NT 4 Server installed. WMT does not support SMIL or RTSP but has its own protocol that it calls HTML+Time. Apple QuickTime recently has added the capability to serve streaming media. QuickTime can support a number of formats including VR, 3D, Flash, and MP3.
- From a network perspective, traditional approaches to streaming Internet content involve transmitting a streaming signal from a source to a device known as a splitter (or repeater, reflector or mirror), which, in turn, replicates the source signal into multiple signals. Each of the multiple signals is the same, and each is sent on to a different destination. By cascading splitters in a tree-like fashion, a single source stream can be replicated into thousands or more identical copies. In this manner, a large number of viewers on the Internet can receive the same streaming signal simultaneously
- It is also known in the art to deliver streaming media (and HTTP-based Web content) using a content delivery network (CDN). A CDN is a network of geographically distributed content delivery nodes that are arranged for efficient delivery of digital content (e.g., Web content, streaming media and applications) on behalf of third party content providers. A request from a requesting end user for given content is directed to a “best” replica, where “best” usually means that the item is served to the client quickly compared to the time it would take to fetch it from the content provider origin server.
- Typically, a CDN is implemented as a combination of a content delivery infrastructure, a request-routing mechanism, and a distribution infrastructure. The content delivery infrastructure usually comprises a set of “surrogate” origin servers that are located at strategic locations (e.g., Internet network access points, Internet Points of Presence, and the like) for delivering copies of content to requesting end users. The request-routing mechanism allocates servers in the content delivery infrastructure to requesting clients in a way that, for web content delivery, minimizes a given client's response time and, for streaming media delivery, provides for the highest quality. The distribution infrastructure consists of on-demand or push-based mechanisms that move content from the origin server to the surrogates. An effective CDN serves frequently-accessed content from a surrogate that is optimal for a given requesting client. In a typical CDN, a single service provider operates the request-routers, the surrogates, and the content distributors. In addition, that service provider establishes business relationships with content publishers and acts on behalf of their origin server sites to provide a distributed delivery system. A well-known commercial CDN service that provides web content and media streaming is provided by Akamai Technologies, Inc. of Cambridge, Mass.
- CDNs may use content modification to tag content provider content for delivery. Content modification enables a content provider to take direct control over request-routing without the need for specific switching devices or directory services between the requesting clients and the origin server. Typically, content objects are made up of a basic structure that includes references to additional, embedded content objects. Most web pages, for example, consist of an HTML document that contains plain text together with some embedded objects, such as .gif or .jpg images. The embedded objects are referenced using embedded HTML directives. A similar scheme is used for some types of streaming content which, for example, may be embedded within an SMIL document. Embedded HTML or SMIL directives tell the client to fetch embedded objects from the origin server. Using a CDN content modification scheme, a content provider can modify references to embedded objects so that the client is told to fetch an embedded object from the best surrogate (instead of from the origin server).
- In operation, when a client makes a request for an object that is being served from the CDN, an optimal or “best” edge-based content server is identified. The client browser then makes a request for the content from that server. When the requested object is not available from the identified server, the object may be retrieved from another CDN content server or, failing that, from the origin server.
- A “best” content server for a particular client may not remain that way for a given time period. In the context of streaming content delivery, for example, the notion of “best” can change very quickly given the relatively large size of most streams (and the near-infinite size of all live streams). Thus, in many cases, the “best” server for a given client player receiving a given stream is likely to change before the stream is finished.
- It would be desirable to enable a client player to identify a best server dynamically and, when appropriate, to enable the player to selectively switch from one server to another during the process of downloading and outputting a given stream or other large file.
- A client machine includes a media player provisioned to perform a query to a CDNSP nameserver having a network map of Internet traffic conditions. In a preferred embodiment, the query is a DNS SRV lookup and includes an identification of the client player. The query is made asking for a particular service (e.g., RTSP) via a particular protocol (TCP) in a particular CDNSP domain. In response, the nameserver returns a set of one or more tokens, with each token defining a machine or, in the preferred embodiment, a group of machines, from which the player should seek to obtain given content (e.g., a stream). The player may then optionally perform one or more tests to determine which one of a set of returned servers provides a best quality of service for the content delivery. That server is then used to retrieve the content. Periodically, the client player code repeats the DNS SRV query during playback to determine whether there is a better source for the stream. If so, the player is controlled to switch to the better stream source “on the fly” if appropriate to maintain and/or enhance the quality of service. Preferably, the client player publishes data back to the CDNSP identifying the results that were obtained during the testing process. This data provides the CDNSP with feedback regarding why the client player selected a particular server. Such data may then be used to augment the network map that is used by the CDNSP for subsequent request routing determinations.
- The foregoing has outlined some of the more pertinent features of the present invention. These features should be construed to be merely illustrative. Many other beneficial results can be attained by applying the disclosed invention in a different manner or by modifying the invention as will be described. Accordingly, other features and a fuller understanding of the invention may be had by referring to the following Detailed Description of the Preferred Embodiment.
-
FIG. 1 is a block diagram of a known content delivery network in which the present invention may be implemented; -
FIG. 2 is a simplified diagram illustrating how live streaming can be further enhanced by having the CDN send multiple copies of the same stream over different routes from a CDN entry point to the optimal streaming server at the edge of the Internet; -
FIG. 3 illustrates a representative client browser having a streaming media client player that is enhanced to include the functionality of the present invention; and -
FIG. 4 is a simplified flowchart illustrating the operation of the client player in a representative embodiment. -
FIG. 1 is a diagram showing an illustrative content delivery service in which the present invention may be implemented. The invention may likewise be implemented with other known or later-designed or built content delivery services or systems. In the illustrative embodiment, the content delivery service comprises a preferably global content delivery network (CDN) 100 of content delivery server regions 102 a-n, a domain name service (DNS)system 104, and a content modification or “initiator”tool 106 that allows content to be tagged for inclusion on the network.DNS system 104 receives network mapping data from amap maker 107, which receives inputs from monitoringagents 109 distributed throughout the Internet. Agents typically perform various tests and monitor traffic conditions to identify Internet congestion problems. Themap maker 107 takes the data generated from the agents and generates one or more maps detailing Internet traffic conditions. Generally, the content delivery service allows the network of content delivery server regions 102 a-n to serve a large number of clients efficiently. Each region may include one or more content servers, with multiple content servers typically sharing a local area network (LAN) backbone. Although not meant to be limiting, a typical server is an Intel Pentium-based caching appliance running the Linux operating system with a large amount of RAM and disk storage. As also seen inFIG. 1 , the content delivery service may include a network operations control center (NOCC) 112 for monitoring the network to ensure that key processes are running, systems have not exceeded capacity, and that subsets of content servers (the so-called CDN regions 102) are interacting properly. A content provider operates an origin server (or server farm) 115 from which requestingend users 119 would normally access the content provider's Web site via the Internet. Use of the CDN avoids transit over the Internet for selected content as described below. The content provider may also have access to amonitoring suite 114 that includes tools for both real-time and historic analysis of customer data. One tool is a traffic analyzer that provides multiple monitoring views that enable quick access to network and customer-specific traffic information. A reporter allows for viewing of historical data. A billing tool may be used to generate appropriate billing information for the content provider, who typically pays for the service as a function of the amount of content delivered by the CDN. - High-performance content delivery is provided by directing requests for web objects (e.g., graphics, images, streaming media, HTML and the like) to the content delivery service network. In one known technique, known as Akamai FreeFlow Streaming content delivery, content is first tagged for delivery by the
tool 106, which, for example, may be executed by a content provider at the content provider'sweb site 115. For streaming content, theinitiator tool 106 converts URLs that refer to streaming content to modified resource locators, called ARLs for convenience, so that requests for such media are served preferentially from the CDN instead of the origin server. For example, the tool prepends each streaming URL with a string containing a CDN domain and, optionally, additional control information. For the URL rtsp://www.foo.com/movie.mov, for example, the corresponding ARLs may look like as follows: - Live or Broadcast:
- WMT: mms://a9.m.akastream.net/ . . . (control info)/reflector:35001
- Real: rtsp:H/a9.r.akareal.net/live/ . . . (control info)/reflector:35001
- QT: rtsp://a9.q.kamai.net/ . . . (control info)/www.mysite.com/movie/sdp
- Of course, the above formats are merely illustrative. When an Internet user visit's a CDN customer's site (e.g., origin server 115) and selects on a link to view or hear streaming media, the user's system resolves the domain in the ARL to an IP address. In particular, because the content has been tagged for delivery by the CDN, the URL modification, transparent to the user, cues the Internet's standard Domain Name Service (DNS) to query a CDN name server (or hierarchy of name servers) 104 to identify the appropriate media server from which to obtain the stream. The CDN typically implements a request-routing mechanism (e.g., under the control of maps generated from the
monitoring agents 109 and map maker 107) to identify an optimal server for each user at a given moment in time. Because each user is served from the optimal streaming server, preferably based on real-time Internet conditions, streaming media content is served reliably and with the least possible packet loss and, thus, the best possible quality. Further details of a DNS-based request-routing mechanism are described in U.S. Pat. No. 6,108,703, which is incorporated herein by reference. - As described in copending application Ser. No. 09/478,571, which is also incorporated herein by reference, live streaming can be further enhanced by having the CDN send multiple copies of the same stream over different routes from a CDN entry point to the optimal streaming server at the edge of the Internet. These copies are then combined to form one complete, original-quality stream, which is sent from the streaming server to the end users.
FIG. 2 illustrates this process in more detail. Abroadcast stream 200 is sent to aCDN entry point 202. An entry point, for example, comprises two servers (for redundancy), and each server can handle many streams from multiple content providers. Once the entry point receives the stream, it rebroadcasts copies of the stream to set reflectors 204 a-n. The streams are multiplexed and delivered to the set reflectors preferably via UDP (e.g., WMT encapsulated in RTSP encapsulated in UDP over IP). These set reflectors are preferably diverse from a network and geographic standpoint (e.g., at diverse Internet backbone data centers) to ensure fault tolerance. Each set reflector, in turn, rebroadcasts its copy of the stream to each subscribing region, e.g., region 206 d, of a set of regions 206 a-n. A subscribing region 206 d is a CDN region that contains one or more streaming edge nodes 208 a-n to which user(s) have been routed by the CDN request-routing mechanism. In other words, set reflectors send their streams to every edge region where they are needed. A CDN region, in this example, includes a set of edge nodes connected by acommon backbone 209, e.g., a local area network (LAN). Typically, an edge node, e.g.,node 208 d, comprises astreaming server 212 and it may include acache 210. A representative server runs an Intel processor, the Linux operating system and a Real Media or QuickTime Server. For Windows-based platforms, a representative server runs an Intel processor, Windows NT or 2000, and a Windows Media Server. As will be described, the edge node also runscontrol programs 214 to facilitate the inventive subscription mechanism. - Each subscribing region, then, simultaneously receives multiple copies of the streamed content. These copies have been sent via separate routes over the Internet, so congestion resulting in dropped packets is unlikely to impact each copy of the stream equally. As described in copending Ser. No. 09/478,571, each region preferably has a mechanism to recreate in real time an original version of the stream as sent to the entry point. In this way, the technique compensates for the inherently faulty Internet and inherently lossy UDP transport protocol. The reassembly mechanism within each region makes the original, verbatim stream available to every streaming media server within that region. When a user clicks on a CDN-tagged stream, the stream is delivered from the optimal edge node (and, in particular, that node's streaming media server) identified by the CDN's request-routing mechanism. If the CDN maps a user to a node in a region which has not subscribed to that broadcast stream (which, for example, is true for the first connection served from that region), the region automatically notifies the set reflectors and subscribes to that stream.
- A “best” content server for a particular client may not remain that way for a given time period. In particular, the notion of “best” can change very quickly given the relatively large size of most streams (and the near-infinite size of all live streams). Thus, in many cases, the “best” server for a given client player receiving a given stream is likely to change before the stream is finished. The present invention provides a method for enabling a client player to identify a best server dynamically and, in addition, to selectively switch to that server to receive the stream or portions thereof. In one embodiment, the present invention is implemented a streaming media client or player, which may be a plug-in to a web browser. The streaming media client is receiving a media stream from a given server, as generally described above. The invention enables the browser and, in particular, the media client, to identify an optimum streaming server for the stream in the first instance and, if appropriate, to selectively switch from a first server to an optimum streaming server “on the fly” so that it continues to receive the best possible service.
-
FIG. 3 illustrates arepresentative client browser 300 having a streaming media client player (e.g., Real Player, Apple QuickTime Player, Windows Media Player, or the like) 302 that is enhanced according to the present invention. In particular, the streaming media client player includes or has associated therewith given code (a series of computer program instructions) for use in providing the inventive functionality. In a representative embodiment, this code comprises several processes, namely, aDNS lookup process 304, aserver testing process 306, adecision process 308, and astream switch process 310. These processes are shown as being discrete for illustrative purposes only, as the functionality described below for each of the processes can be integrated into one or more programs, processes, execution threads, applets, or the like. In one embodiment, the functions are built into the browser software directly, in another embodiment one or more of these functions are built into a plug-in to the browser software, in yet another embodiment one or more of these functions are provided in standalone code executable in the browser or elsewhere on the client. The particular implementation used is not critical to the operation of the invention. - With reference to the illustrative
FIG. 3 embodiment, theDNS lookup process 304 is operative prior to and/or during receipt of a given stream for performing a given DNS lookup ata a nameserver 305 against amap 312 of current Internet traffic conditions maintained at that nameserver, for example, by a CDN service provider. In one particular embodiment, the lookup process performs a DNS SRV lookup. The query preferably comprises given information, e.g., the IP address of the client player, the IP address of the player's local nameserver, and the media type requested. DNS SRV is a known protocol defined in RFC 2052 or RFC 2782, and this protocol enables administrators to designate some hosts as primary servers for a service and others as backups. In this embodiment, a DNS SRV query is made asking for a particular service (in this case, RTSP) via a particular protocol (TCP) in a particular domain. The nameserver responds to the query with a set of tokens 315 a-n. Each token 315 provides a distinct answer to the query and defines a machine or, in the preferred embodiment, a group of machines, from which the client should seek to obtain the stream (identified by the URL). The nameserver response preferably also includes priority information (e.g., a ranking) and, optionally, weighting information for each token. The nameserver also associates and stores the requesting player's IP address and the response data generated as a result of the query. - As will be illustrated in more detail below, preferably each token is a construct that can be used by the requesting client browser to find a preferred machine within a given CDN region. To give an example, the first token may be of the form “y5q.kamai.net” where the “kamai.net” domain identifies the CDNSP domain and the “y{x}q” portion is, in effect, an instruction to an CDNSP nameserver to identify a set of lower level nameservers in the specified CDN region number 5. The lower level nameservers would then be queried to identify a particular “best” server. Of course, the token itself may point directly to the lower level nameservers or to a particular server within a given region. Thus, as can be seen the client player initiates a query to a first or top level nameserver (the DNS SRV name server) and receives, in response, one or more tokens. A given token can then be passed back by the client player to a second or lower level nameserver to obtain a list of servers within a given CDN region from which the desired stream may be obtained. By passing the client player IP address in the initial request, the top level nameserver can provide more accurate mapping of the request to a CDN region best able to service the request.
- Returning to
FIG. 3 , theserver testing process 306 responds to the returned token information or to information obtained from further processing of the token (as in the “y5q” example described above), and may perform one or more tests to help identify a best server. Server testing is not required, however, although it is desirable provided the additional bandwidth required by the testing is not prohibitive. In an illustrative embodiment, the server testing process has been provided with a list of servers to test. It then contacts each one, e.g., by using the SRV protocol, which specifies a well-defined ordering scheme, although the player can use any scheme or simply try all servers at level n before trying n+1. Upon contacting a server, the process issues a status request to get information about the capabilities of the server. One convenient technique is to use an RTSP “OPTIONS” command. The response from each server will be a static text string. The request-response is timed by the server testing process, which then determines the “best” server (e.g., usually the one providing the fastest response). In this way, the server testing may be used to “fine tune” the server chosen by the CDN DNS request routing system with an additional piece of information, namely, the actual pipe the client is using for the connection. - Once the fastest responding server is selected, the client connects to it and sends a usual command, e.g., the RTSP DESCRIBE command. According to the invention, the server testing process preferably also builds and sends an extra header that contains the IP address of the machine(s) tested, the timings of the OPTIONS experiment(s), and other data. The following is a representative data structure:
-
Construction of the X-CDNSP-Times: header X-CDNSP-Times: {version} {{ip} {region} {time}} . . . X-CDNSP-Times “X-” is to show this is a non standard header : Colon & space (separator) {version} The version of this protocol - currently 1 {ip} The IP address of the machine tested {region} The region the IP address came from (e.g. the number after the y flag) {time} The time in milliseconds for the OPTIONS response to come back
Preferably, the header is passed out-of-band to an appropriate CDNSP process that is used to generate one or more DNS request routing maps, e.g.,nameserver map 312. That process may also receive the DNS SRV response and the requesting IP address of the client player that initiated the query. Such “feedback” provides significant value to users of the system (both SRV-enabled clients and other clients) by enhancing the accuracy of subsequent region or machine assignments when later requests are resolved against the modifiedmap 312. In particular, one of ordinary skill in the art will appreciate that the best analysis of a given routing decision with respect to a given client is made by that client, as opposed to some proxy for that client (e.g., the client's local name server). The header illustrated above may include information that describes the specific region/machine that the given client selected as the “best” and the data underlying that decision. This information can then be used to bias the request routing decisions in themap 312 for future requests made by this or other clients. As more clients use the system and provide such feedback, the request routing provided by the map becomes more and more accurate as, in effect, subsequent decisions can be based on the additional intelligence about how well the request routing was performed for the earlier requests. - As noted above, typically the fastest responding server to the OPTIONS test will be the best server to stream the requested data to the user. This also gives the system a chance to re-assign the stream, e.g., via a redirect message. If the fastest responding server is indeed the correct server to stream from, then the X-CDNSP-Times header can be ignored by the server. Another function provided by the present invention is the ability of the client player (namely, the code running in that player) to identify a “better” source for a stream being received and to switch to that source “on the fly,” i.e., while the stream is being received and rendered on the client. The
decision process 308 is used to determine whether the player should switch servers mid-stream. Because it is likely there will be some cost to switching (e.g., perhaps a short interruption in service), a client should only switch servers if it is not getting an acceptable stream from the first server. Thedecision process 308 makes a decision regarding whether the stream being received is “acceptable,” e.g., a stream that is not currently being thinned by the server, or some other metric. As used herein, “acceptable” does not necessarily mean acceptable quality. It can also mean acceptable from a stream management point of view. For example, the client could be actually told by the server that the stream is unacceptable, e.g., if the server knows it is to be taken down soon (for a software update or other servicing). It could also declare a stream unacceptable if new advertising or newer content (e.g., a fast breaking news story) becomes available. These examples, of course, are merely representative. - If the decision process determines that another server is a better source than a current source, control is passed to the
stream switch process 310, which is the process that makes the actual switch from one server to another. The particular technique used for switching from a first server to a second server typically is media type-dependent and any convenient technique may be used. Thus, for example, assume a stream being received has a length of 5:00 minutes and the client player is processing the stream from a first server at an offset of 2:35 when a decision is made to change to a second server. Thestream switch process 310 may then cause the second server to begin sending the stream at an offset of 2:45 and, at the same time, send appropriate instructions to terminate the stream from the first server. The stream switch process thus has the capability of picking the server it likes “least” and instructing that server to cease transmission at a given point. In another alternative, once thestream switch process 310 decides to make a switch, it creates an internal buffer and causes that buffer to be filled with advance portions of the stream (e.g., by instructing the first server to deliver packets faster than those packets can be rendered or by instructing the player to slow down the rendering process). Theswitch process 310 then causes the first server to cease transmission and request that the new server begin the stream at a given offset. At this point, the pre-cached data in the buffer is rendered until the given offset is reached and the new data is received. As appropriate, the stream switch process includes the capability to match data packets from first and second servers to enable a substantially seamless switch to the new stream source. Voice streams can be synched before a switch by snipping out and putting in minute bits of silence between words. Of course, the above are merely exemplary as any convenient switching technique may be implemented. (DAVID, you can describe a few others if appropriate) - Thus, as summarized in the flowchart of
FIG. 4 , the client player provisioned according to the invention performs a query to a nameserver against a CDNSP network map. This isstep 400. The query is made asking for a particular service (e.g., RTSP) via a particular protocol (TCP) in a particular domain. In response, atstep 402, the nameserver returns a set of one or more tokens, with each token defining a machine or, in the preferred embodiment, a group of machines, from which the player should seek to obtain the stream. The player may then optionally perform one or more tests to determine which of a set of servers provides a best quality of service for the stream. This isstep 404. That server is then used to retrieve the stream, which isstep 406. Atstep 408, a test is performed to determine whether the client player is still receiving the stream. If not, the routine ends. If, however, the client player is still receiving the stream, the routine continues atstep 410 with the client player code repeating the DNS SRV query during playback to determine whether there is a better source for the stream. The “period” over which the query is repeated is variable and is dependent on the bandwidth available between the client and the network. For a live stream, a query/minute may be a desirable frequency. A shorter frequency (e.g., every few seconds) may be desirable for a broadband connection). Atstep 412, a test is performed to determine whether the client player is receiving acceptable service from the existing source. If so, the routine returns to step 408 and repeats the process at a given frequency. If the outcome of the test atstep 412 indicates that the stream source is unacceptable, the routine continues atstep 414 to initiate the switch to the “better” stream source. As noted above, preferably this switch is carried out “on the fly” as appropriate to maintain and/or enhance the quality of service. Thereafter, atstep 416, the client player continues to obtain the remainder of the stream from the new source. Of course, the “best” source may be changed again if the circumstances warrant. In a preferred embodiment, and as indicated atstep 418, the client player publishes data back to the CDNSP identifying the tests it ran to determine the best server. Such data may then be used to augment the network map that is used for subsequent request routing determinations. - The following is an illustrative embodiment for an Apple QuickTime media player.
-
Construction of a SRV Query A preferred SRV construction method is set forth below. _a{Serial Number}-{IP address}._tcp.srv.kamai.net. _a{Serial This is the serial number field (including the “a”) from a Number} CDNSP-specific hostname (a hostname pointing to the CDN) with an underscore prepended. A serial number identifies a virtual content bucket on a CDN content server that may host the content - Hyphen (separator) {IP Address} The IP address of the player written as a four byte unsigned integer in network byte order . Dot (separator) _tcp Required by RFC 2782 - not applicable here . Dot (separator) Srv Specifies to the CDNSP DNS system to serve this request from a different set of servers . Dot (separator) Kamai.net Any CDNSP DNS domain name, with this particular name being merely representative
Note the use of the underscore (“_”) character in the full SRV name. This is not an improper syntax as underscores are only illegal in hostnames, and an SRV query is not considered a hostname. Although not required, preferably there are several SRV servers associated with the “srv.kamai.net” domain to spread out the load and ensure there is no single point of failure. The passing of the player's IP address is optional but desirable, and this operation may be set as a configuration option in the player. The SRV server must therefore be able to handle responses with and without the IP address supplied, although preferably the address is used. If the IP address is not passed, then the SRV server should treat the address of querying name server as the IP address of the client. - The SRV nameserver that receives this query then has several important pieces of information:
- 1. The IP address of the player (optional, but desirable);
- 2. The IP address of the player's nameserver; and
- 3. The type of media being requested (e.g. “q”=QuickTime).
- Based on this information, and in a preferred embodiment, the SRV server then performs the following steps
-
- 1. Calculates a best CDNSP region to direct the player towards using the three (3) pieces of information given above, in combination with a network map; and
- 2. Returns a reply to the client comprising an identification of this region, as well as several other regions that are possible contenders if the first region does not work out well.
- As an example, assume that a user at IP address 17.37.117.209 is requesting a stream from the host a40.q.kamai.net. The SRV query might then be of the following representative format:
- Based on the then-current network map, assume that the best region is region 5, followed by region 3, and then region 2 and region 7 at equal ability. In such case, the SRV name server will return the following representative data (with the particular references being merely exemplary):
-
Ranking Weighting Port to use Hostname 1 0 554 a40.y5q.kamai.net. 2 0 554 a40.y3q.kamai.net. 3 0 554 a40.y2q.kamai.net. 3 0 554 a40.y7q.kamai.net. -
-
- Ranking Ranking order, with low numbers tried before high
- Weighting N/A
- Port The port to which the connection should be mae. For an Apple QuickTime player, for example, this will always be 554. This value may be useful at some point if a different set of servers (on a different port) are set up
- Hostname The fully-qualified domain name of the server to contact. The y{x}q entry in the Hostname field is an instruction to a CDNSP top-level nameserver to return a set of low-level nameservers in the specified region. This will result in a the best server in that specific region being returned when the name is looked up by the player.
Behavior of the Player after Receiving a SRV Response
- Once the client (and, in particular, the client player) receives this list of servers, it contacts each one and requests an “OPTIONS” from each one. The response from each server is timed, and the “fastest” server may be selected as the “best” server from which to proceed. Once the fastest responding server is selected, the client connects to it and sends the usual DESCRIBE command. In addition to this, the X-CDNSP-Times: header preferably is added containing the timings of the OPTIONS experiment.
- At this point, the client is speaking to the best server. As noted above, the client player may selectively switch from one stream to another, either seamlessly or with as minimal of a break as possible. With that ability, if a client does a SRV lookup periodically, it can learn which set of servers is currently best and switch to a server that is better than the one it is currently receiving the stream from.
- In combination with the inventive method, a given server itself can elect at any time to send the client to a better place via the RTSP REDIRECT command. This command allows for a redirect to happen at a particular time count, which should allow the player to resume the stream where it left off elsewhere without missing any data.
- As noted above, when the client player sends a query to the nameserver, that server performs a lookup against a map of current Internet traffic conditions. The CDNSP generates the map in any convenient manner. The following is a representative technique, which should not be taken by way of limitation. To prepare for generating this map, mapping agents (e.g., one per CDN server region) may collect the following information: (a) IP blocks (a list of IP address blocks currently in use in the Internet), (b) load (per-IP block measurements of the amount of web load currently being handled by the CDN, (c) communication costs (e.g., a table listing the measured communication cost for each {IP block, CDN server region} pair, and (d) capacity (e.g., an aggregate server and network capacity of each CDN server region).
- In particular, a combination of different methods may be used to put together the list of IP blocks representing all of the leaf networks (e.g., endpoint LAN's on the global Internet): BGP peering, harvesting information from network registration databases (e.g., RIPE, APNIC and ARIN), and random traceroutes into very large blocks (e.g., UUNET). The load on the CDN generated by each IP block may be determined by gathering and aggregating measurements from the CDN content servers. One or more different communication costs may be used to determine the cost of communication between an IP block and a CDN server region: network health of server region (e.g., a binary metric indicating that the region is up or down), ASPATH length between the block and the server region (e.g., as supplied by BGP), round trip time (RTT) between the region's mapping agent and a given point in the IP block, packet loss rate between the region's mapping agent and the given point in the IP block, geographic distance, and perhaps others. These metrics may be combined into a single cost metric for each IP block, server region pair, with the priority, or weighting, of each individual metric set to be proportional to its position on the list. Two types of capacity measurement are typically made: total server capacity in each region and physical network capacity in each region. The server capacity is determined from the number of servers currently up in a region. Physical network capacity is determined with packet pair measurements. Region capacity may be calculated as a given function (e.g., the minimum) of these two measurements.
- The map associates each IP block to an optimal CDN server region. One technique for generating the map involves identifying a number of candidate regions for each IP block (e.g., based on the {IP block, server region} communication costs), generating a bipartite graph using all of the measured and collected network information (e.g., with one side of the graph representing each of the IP blocks and the other side representing CDN server regions), and then running a min-cost flow algorithm on the graph. Each IP block node is labeled with its measured load, which is treated as the “flow” coming from that node. Running the algorithm results in an optimal assignment of IP block load to server regions. This assignment is the map, which is generated periodically by the CDNSP and then delivered to the nameservers that respond to the client player queries.
- Many of the functions have been described and illustrated above as discrete programs. One of ordinary skill will appreciate that any given function, alternatively, may comprise part of another program. Thus, any reference herein to a program should be broadly construed to refer to a program, a process, an execution thread, or other such programming construct. Generalizing, each function described above may be implemented as computer code, namely, as a set of computer instructions, for performing the functionality described via execution of that code using conventional means, e.g., a processor, a computer, a machine, a system, or other apparatus.
- While the present invention has been described in the context of an RTSP stream-based protocol, one of ordinary skill in the art will appreciate that the functions and features described may also be used for other types of content. A particular example would be HTTP over TCP/IP, wherein the given content of interest is a large HTTP object. In such case, the various processes described above may be modified as appropriate to implement the described functionality. Thus, for example, the stream switch process would be modified to incorporate appropriate routines for handling the file switch. As in the stream-based embodiment, the code may be built into a browser, a plug-in, an applet, or other codebase.
Claims (9)
1. A method, operating in a content delivery network (CDN) having a set of CDN content servers, wherein content requests generated by end user client machines are associated to the set of CDN content servers using a content delivery network (CDN) map, and wherein an end user client machine has an associated media player, comprising:
providing an end user client machine with a list of a set of CDN servers, wherein the set of CDN servers is identified by the CDN map;
serving a media stream to the end user client machine from a first CDN content server identified in the list;
as the media stream is being served to the end user client machine from the first CDN server, receiving, at each of a subset of the CDN servers, a given request issued from the end user client machine, and returning to the end user client machine a response to the given request;
receiving, for each of the subset of the CDN servers, a data structure that identifies a value indicating a time for the response to be returned to the end user client machine after issuing the given request; and
using the values to generate a modified CDN map.
2. The method as described in claim 1 wherein the given request is an RTSP OPTIONS command.
3. The method as described in claim 1 wherein the given request is association with a DNS SRV protocol.
4. The method as described in claim 1 wherein the data structures are received as the media stream is being served to the end user client machine from the first CDN content server.
5. The method as described in claim 4 further including shifting the serving of the media stream from the first CDN content server to a second CDN content server.
6. The method as described in claim 5 wherein the second content server is identified using the modified CDN map.
7. The method as described in claim 5 wherein the serving of the media stream is shifted upon receipt at the second CDN content server of a request from the end user client machine media player.
8. The method as described in claim 5 wherein the serving of the media stream is shifted as a result of the first CDN content server issuing a redirection.
9. The method as described in claim 8 wherein the redirection is associated with an RTSP REDIRECT command.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/940,763 US20080222243A1 (en) | 2000-05-18 | 2007-11-15 | Client-side method for identifying an optimal server |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US20563600P | 2000-05-18 | 2000-05-18 | |
US09/859,708 US7299291B1 (en) | 2000-05-18 | 2001-05-17 | Client-side method for identifying an optimum server |
US11/940,763 US20080222243A1 (en) | 2000-05-18 | 2007-11-15 | Client-side method for identifying an optimal server |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/859,708 Continuation US7299291B1 (en) | 2000-05-18 | 2001-05-17 | Client-side method for identifying an optimum server |
Publications (1)
Publication Number | Publication Date |
---|---|
US20080222243A1 true US20080222243A1 (en) | 2008-09-11 |
Family
ID=38691057
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/859,708 Expired - Lifetime US7299291B1 (en) | 2000-05-18 | 2001-05-17 | Client-side method for identifying an optimum server |
US11/940,763 Abandoned US20080222243A1 (en) | 2000-05-18 | 2007-11-15 | Client-side method for identifying an optimal server |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/859,708 Expired - Lifetime US7299291B1 (en) | 2000-05-18 | 2001-05-17 | Client-side method for identifying an optimum server |
Country Status (1)
Country | Link |
---|---|
US (2) | US7299291B1 (en) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020129089A1 (en) * | 2001-02-23 | 2002-09-12 | Vendaria, Inc. | Method and system for delivering technology agnostic rich media content within an email, banner ad, and Web page |
US20060008256A1 (en) * | 2003-10-01 | 2006-01-12 | Khedouri Robert K | Audio visual player apparatus and system and method of content distribution using the same |
US20060274727A1 (en) * | 2005-06-06 | 2006-12-07 | Microsoft Corporation | Transport-neutral in-order delivery in a distributed system |
US20070067315A1 (en) * | 2001-01-12 | 2007-03-22 | Vendaria, Inc., F/K/A Broadcastzone, Inc. | Method and system for generating and providing rich media presentations optimized for a device over a network |
US20070234321A1 (en) * | 2004-06-09 | 2007-10-04 | Symbian Software Limited | Method For Selecting Plug-In Code Modules In A Computing Device |
US20080010372A1 (en) * | 2003-10-01 | 2008-01-10 | Robert Khedouri | Audio visual player apparatus and system and method of content distribution using the same |
US20100005187A1 (en) * | 2002-07-30 | 2010-01-07 | International Business Machines Corporation | Enhanced Streaming Operations in Distributed Communication Systems |
US20110016225A1 (en) * | 2009-07-16 | 2011-01-20 | Anthony Neal Park | Digital content distribution system and method |
WO2011017890A1 (en) * | 2009-08-13 | 2011-02-17 | 中兴通讯股份有限公司 | Multimode mobile terminal and method for downloading resources thereof |
US20110082785A1 (en) * | 2001-04-02 | 2011-04-07 | Weller Timothy N | Content delivery network service provider (CDNSP)-managed content delivery network (CDN) for network service provider (NSP) |
US20120203904A1 (en) * | 2011-02-07 | 2012-08-09 | F-Secure Corporation | Controlling Internet Access Using DNS Root Server Reputation |
US20120246315A1 (en) * | 2009-11-04 | 2012-09-27 | Cedexis Inc. | Internet infrastructure survey |
US20130097277A1 (en) * | 2011-10-12 | 2013-04-18 | Electronics And Telecommunications Research Institute | Method and apparatus for load balancing of content-centric network |
WO2014121194A1 (en) * | 2013-02-01 | 2014-08-07 | Introspective Power, Inc. | Generic distributed processing for multi-agent systems |
US20140325039A1 (en) * | 2008-11-26 | 2014-10-30 | Cisco Technology, Inc. | Deterministic session load-balancing and redundancy of access servers in a computer network |
CN106059856A (en) * | 2016-06-20 | 2016-10-26 | 乐视控股(北京)有限公司 | File retrieval method, file retrieval apparatus and content delivery network (CDN) system |
CN106899693A (en) * | 2017-03-20 | 2017-06-27 | 聚好看科技股份有限公司 | Distributed file management method and apparatus |
US10616314B1 (en) * | 2015-12-29 | 2020-04-07 | Amazon Technologies, Inc. | Dynamic source routing for data transfer |
US10893086B2 (en) * | 2016-11-10 | 2021-01-12 | Sony Corporation | Node type based control of assistance for data streaming |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694358B1 (en) * | 1999-11-22 | 2004-02-17 | Speedera Networks, Inc. | Performance computer network method |
US7124166B2 (en) | 2001-04-30 | 2006-10-17 | Aol Llc | Duplicating digital streams for digital conferencing using switching technologies |
US7237033B2 (en) * | 2001-04-30 | 2007-06-26 | Aol Llc | Duplicating switch for streaming data units to a terminal |
US8572278B2 (en) | 2001-04-30 | 2013-10-29 | Facebook, Inc. | Generating multiple data streams from a single data source |
US7430609B2 (en) * | 2001-04-30 | 2008-09-30 | Aol Llc, A Delaware Limited Liability Company | Managing access to streams hosted on duplicating switches |
US7007089B2 (en) * | 2001-06-06 | 2006-02-28 | Akarnai Technologies, Inc. | Content delivery network map generation using passive measurement data |
US7133905B2 (en) * | 2002-04-09 | 2006-11-07 | Akamai Technologies, Inc. | Method and system for tiered distribution in a content delivery network |
US8028092B2 (en) | 2002-06-28 | 2011-09-27 | Aol Inc. | Inserting advertising content |
US7136922B2 (en) * | 2002-10-15 | 2006-11-14 | Akamai Technologies, Inc. | Method and system for providing on-demand content delivery for an origin server |
US7711647B2 (en) * | 2004-06-10 | 2010-05-04 | Akamai Technologies, Inc. | Digital rights management in a distributed network |
US7649937B2 (en) * | 2004-06-22 | 2010-01-19 | Auction Management Solutions, Inc. | Real-time and bandwidth efficient capture and delivery of live video to multiple destinations |
US8489923B1 (en) * | 2006-11-15 | 2013-07-16 | Conviva Inc. | Detecting problems in content distribution |
JP5012044B2 (en) * | 2007-01-26 | 2012-08-29 | 日本電気株式会社 | Content distribution system, content distribution method and program |
US8307114B2 (en) * | 2007-05-22 | 2012-11-06 | International Business Machines Corporation | High availability message transmission |
KR100912370B1 (en) * | 2007-12-17 | 2009-08-19 | 한국전자통신연구원 | System and method for distributing multimedia streaming service request based on wide area network |
CN101616170B (en) * | 2008-06-27 | 2012-09-19 | 华为技术有限公司 | Method for supplying media stream service and system thereof |
US7844725B2 (en) * | 2008-07-28 | 2010-11-30 | Vantrix Corporation | Data streaming through time-varying transport media |
US8001260B2 (en) * | 2008-07-28 | 2011-08-16 | Vantrix Corporation | Flow-rate adaptation for a connection of time-varying capacity |
GB2463329B (en) | 2008-09-10 | 2013-02-20 | Echostar Advanced Technologies L L C | Set-top box emulation system |
US7975063B2 (en) * | 2009-05-10 | 2011-07-05 | Vantrix Corporation | Informative data streaming server |
EP2259510A1 (en) | 2009-06-05 | 2010-12-08 | Net Transmit & Receive, S.L. | A method for establishing a data session between a first endpoint and a second endpoint |
US8532272B2 (en) * | 2009-10-21 | 2013-09-10 | Comcast Cable Communications, Llc | Service entry device |
US8386621B2 (en) | 2010-03-12 | 2013-02-26 | Netflix, Inc. | Parallel streaming |
CN102270493A (en) * | 2010-06-07 | 2011-12-07 | 创见资讯股份有限公司 | Multimedia system, media player and method for producing personalized streaming content |
US9794220B2 (en) | 2010-08-31 | 2017-10-17 | Comcast Cable Communications, Llc | Wireless extension of broadband access |
US8867337B2 (en) | 2011-04-26 | 2014-10-21 | International Business Machines Corporation | Structure-aware caching |
US9137551B2 (en) | 2011-08-16 | 2015-09-15 | Vantrix Corporation | Dynamic bit rate adaptation over bandwidth varying connection |
WO2013082595A1 (en) * | 2011-12-01 | 2013-06-06 | Huawei Technologies Co., Ltd. | Systems and methods for connection pooling for video streaming in content delivery networks |
US9749373B2 (en) * | 2012-08-14 | 2017-08-29 | Apple Inc. | System and method for improved content streaming |
CN103001955B (en) * | 2012-11-22 | 2017-05-31 | 南京中兴软件有限责任公司 | Method and system, the maintaining method and device of service condition that service downloading accelerates |
US9596170B2 (en) | 2013-03-14 | 2017-03-14 | Level 3 Communications, Llc | Dynamically optimizing content delivery using manifest chunking |
US9819558B2 (en) * | 2014-03-03 | 2017-11-14 | Microsoft Technology Licensing, Llc | Streaming query resource control |
US9866655B2 (en) | 2014-03-31 | 2018-01-09 | Akamai Technologies, Inc. | Server initiated multipath content delivery |
CN104811827A (en) * | 2015-04-20 | 2015-07-29 | 中兴通讯股份有限公司 | Message transmitting method, and code stream processing method and device |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
US9942353B2 (en) * | 2015-06-02 | 2018-04-10 | International Business Machines Corporation | Management of connections within a messaging environment based on the statistical analysis of server responsiveness |
CN108337274A (en) * | 2017-01-19 | 2018-07-27 | 贵州白山云科技有限公司 | A kind of message distributing method and system |
EP3593502B1 (en) | 2017-03-07 | 2022-10-12 | Akamai Technologies, Inc. | Cooperative multipath |
US10887323B2 (en) * | 2017-06-19 | 2021-01-05 | International Business Machines Corporation | Detecting malicious beaconing communities using lockstep detection and co-occurrence graph |
US11552997B2 (en) * | 2018-02-06 | 2023-01-10 | Akamai Technologies, Inc. | Secure request authentication for a threat protection service |
US10681001B2 (en) | 2018-03-29 | 2020-06-09 | Akamai Technologies, Inc. | High precision mapping with intermediary DNS filtering |
CN109257335B (en) * | 2018-08-22 | 2021-11-19 | 网宿科技股份有限公司 | Method for maintaining back source link, back source method, related device and storage medium |
US11449420B2 (en) * | 2020-10-20 | 2022-09-20 | Citrix Systems, Inc. | Content caching |
CN115022278B (en) * | 2022-06-02 | 2024-04-26 | 上海哔哩哔哩科技有限公司 | CDN processing method and system |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021439A (en) * | 1997-11-14 | 2000-02-01 | International Business Machines Corporation | Internet quality-of-service method and system |
US6078960A (en) * | 1998-07-03 | 2000-06-20 | Acceleration Software International Corporation | Client-side load-balancing in client server network |
US6195680B1 (en) * | 1998-07-23 | 2001-02-27 | International Business Machines Corporation | Client-based dynamic switching of streaming servers for fault-tolerance and load balancing |
US6415323B1 (en) * | 1999-09-03 | 2002-07-02 | Fastforward Networks | Proximity-based redirection system for robust and scalable service-node location in an internetwork |
US6542964B1 (en) * | 1999-06-02 | 2003-04-01 | Blue Coat Systems | Cost-based optimization for content distribution using dynamic protocol selection and query resolution for cache server |
US6546421B1 (en) * | 1999-06-30 | 2003-04-08 | Siemens Corporate Research, Inc. | System and method for automatic selection of internet data streams |
US6970924B1 (en) * | 1999-02-23 | 2005-11-29 | Visual Networks, Inc. | Methods and apparatus for monitoring end-user experience in a distributed network |
US7096271B1 (en) * | 1998-09-15 | 2006-08-22 | Microsoft Corporation | Managing timeline modification and synchronization of multiple media streams in networked client/server systems |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6003030A (en) | 1995-06-07 | 1999-12-14 | Intervu, Inc. | System and method for optimized storage and retrieval of data on a distributed computer network |
US6421726B1 (en) | 1997-03-14 | 2002-07-16 | Akamai Technologies, Inc. | System and method for selection and retrieval of diverse types of video data on a computer network |
US6292834B1 (en) * | 1997-03-14 | 2001-09-18 | Microsoft Corporation | Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network |
US6351775B1 (en) * | 1997-05-30 | 2002-02-26 | International Business Machines Corporation | Loading balancing across servers in a computer network |
US6112239A (en) | 1997-06-18 | 2000-08-29 | Intervu, Inc | System and method for server-side optimization of data delivery on a distributed computer network |
US6134588A (en) * | 1997-11-12 | 2000-10-17 | International Business Machines Corporation | High availability web browser access to servers |
US6141759A (en) * | 1997-12-10 | 2000-10-31 | Bmc Software, Inc. | System and architecture for distributing, monitoring, and managing information requests on a computer network |
US6078953A (en) * | 1997-12-29 | 2000-06-20 | Ukiah Software, Inc. | System and method for monitoring quality of service over network |
US6108703A (en) | 1998-07-14 | 2000-08-22 | Massachusetts Institute Of Technology | Global hosting system |
US6377996B1 (en) * | 1999-02-18 | 2002-04-23 | International Business Machines Corporation | System for seamless streaming of data stored on a network of distributed primary and target servers using segmentation information exchanged among all servers during streaming |
US6665726B1 (en) | 2000-01-06 | 2003-12-16 | Akamai Technologies, Inc. | Method and system for fault tolerant media streaming over the internet |
-
2001
- 2001-05-17 US US09/859,708 patent/US7299291B1/en not_active Expired - Lifetime
-
2007
- 2007-11-15 US US11/940,763 patent/US20080222243A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021439A (en) * | 1997-11-14 | 2000-02-01 | International Business Machines Corporation | Internet quality-of-service method and system |
US6078960A (en) * | 1998-07-03 | 2000-06-20 | Acceleration Software International Corporation | Client-side load-balancing in client server network |
US6195680B1 (en) * | 1998-07-23 | 2001-02-27 | International Business Machines Corporation | Client-based dynamic switching of streaming servers for fault-tolerance and load balancing |
US7096271B1 (en) * | 1998-09-15 | 2006-08-22 | Microsoft Corporation | Managing timeline modification and synchronization of multiple media streams in networked client/server systems |
US6970924B1 (en) * | 1999-02-23 | 2005-11-29 | Visual Networks, Inc. | Methods and apparatus for monitoring end-user experience in a distributed network |
US6542964B1 (en) * | 1999-06-02 | 2003-04-01 | Blue Coat Systems | Cost-based optimization for content distribution using dynamic protocol selection and query resolution for cache server |
US6546421B1 (en) * | 1999-06-30 | 2003-04-08 | Siemens Corporate Research, Inc. | System and method for automatic selection of internet data streams |
US6415323B1 (en) * | 1999-09-03 | 2002-07-02 | Fastforward Networks | Proximity-based redirection system for robust and scalable service-node location in an internetwork |
Cited By (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8122004B2 (en) | 2001-01-12 | 2012-02-21 | Dandia Audio Kg Limited Liability Company | Generating and providing rich media presentations optimized for a device over a network |
US20100100636A1 (en) * | 2001-01-12 | 2010-04-22 | Kiran Venkatesh Hegde | Generating and Providing Rich Media Presentations Optimized for a Device over a Network |
US20070067315A1 (en) * | 2001-01-12 | 2007-03-22 | Vendaria, Inc., F/K/A Broadcastzone, Inc. | Method and system for generating and providing rich media presentations optimized for a device over a network |
US7818321B2 (en) * | 2001-01-12 | 2010-10-19 | Kiran Venkatesh Hegde | Method and system for generating and providing rich media presentations optimized for a device over a network |
US20020129089A1 (en) * | 2001-02-23 | 2002-09-12 | Vendaria, Inc. | Method and system for delivering technology agnostic rich media content within an email, banner ad, and Web page |
US8046672B2 (en) | 2001-02-23 | 2011-10-25 | Dandia Audio Kg Limited Liability Company | Method and system for delivering technology agnostic rich media content within an email, banner ad, and web page |
US20110082785A1 (en) * | 2001-04-02 | 2011-04-07 | Weller Timothy N | Content delivery network service provider (CDNSP)-managed content delivery network (CDN) for network service provider (NSP) |
US8108507B2 (en) * | 2001-04-02 | 2012-01-31 | Akamai Technologies, Inc. | Content delivery network service provider (CDNSP)-managed content delivery network (CDN) for network service provider (NSP) |
US20100005187A1 (en) * | 2002-07-30 | 2010-01-07 | International Business Machines Corporation | Enhanced Streaming Operations in Distributed Communication Systems |
US20080155109A1 (en) * | 2003-10-01 | 2008-06-26 | Musicgremlin, Inc. | System for providing a digital media service |
US20080155129A1 (en) * | 2003-10-01 | 2008-06-26 | Musicgremlin, Inc. | Remotely configured media device |
US20080160910A1 (en) * | 2003-10-01 | 2008-07-03 | Musicgremlin, Inc. | Device for accessing a digital media service |
US9081781B2 (en) | 2003-10-01 | 2015-07-14 | Sandisk Technologies Inc. | Wireless portable device for creating and wirelessly transmitting digital audio and/or video |
US9026033B2 (en) | 2003-10-01 | 2015-05-05 | Sandisk Technologies Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US8700739B2 (en) | 2003-10-01 | 2014-04-15 | Sandisk Technologies Inc. | Device for automatically receiving new digital content from a network |
US20080178238A1 (en) * | 2003-10-01 | 2008-07-24 | Musicgremlin, Inc. | System with several devices sharing content and a central server |
US20080176540A1 (en) * | 2003-10-01 | 2008-07-24 | Musicgremlin, Inc. | Portable device with intermittent communications |
US20060008256A1 (en) * | 2003-10-01 | 2006-01-12 | Khedouri Robert K | Audio visual player apparatus and system and method of content distribution using the same |
US8160495B2 (en) | 2003-10-01 | 2012-04-17 | Sandisk Technologies Inc. | Wireless portable device for sharing digital content items |
US20080155470A1 (en) * | 2003-10-01 | 2008-06-26 | Musicgremlin, Inc. | Portable media device with list management tools |
US20080155634A1 (en) * | 2003-10-01 | 2008-06-26 | Musicgremlin, Inc. | System sharing content |
US20080155057A1 (en) * | 2003-10-01 | 2008-06-26 | Musicgremlin, Inc. | System sharing user content on a content-receiving device |
US20080010372A1 (en) * | 2003-10-01 | 2008-01-10 | Robert Khedouri | Audio visual player apparatus and system and method of content distribution using the same |
US20080201375A1 (en) * | 2003-10-01 | 2008-08-21 | Musicgremlin, Inc. | Method and portable device with local catalog management |
US20080201376A1 (en) * | 2003-10-01 | 2008-08-21 | Musicgremlin, Inc. | Method for sharing content with several devices |
US20080212945A1 (en) * | 2003-10-01 | 2008-09-04 | Music Gremlin, Inc. | Method for acquiring digital content |
US20080212944A1 (en) * | 2003-10-01 | 2008-09-04 | Musicgremlin, Inc. | Network system of media players sharing content |
US20080305738A1 (en) * | 2003-10-01 | 2008-12-11 | Musicgremlin, Inc. | System displaying received content on a portable wireless media device |
US9092519B2 (en) | 2003-10-01 | 2015-07-28 | Sandisk Technologies Inc. | Method and system for updating a list of content stored on a user-operated device |
US20070234321A1 (en) * | 2004-06-09 | 2007-10-04 | Symbian Software Limited | Method For Selecting Plug-In Code Modules In A Computing Device |
US8225296B2 (en) * | 2004-06-09 | 2012-07-17 | Nokia Corporation | Method for selecting plug-in code modules in a computing device |
US7881656B2 (en) | 2004-09-29 | 2011-02-01 | Sandisk Corporation | Audio visual player apparatus and system and method of content distribution using the same |
US20080163302A1 (en) * | 2004-09-29 | 2008-07-03 | Music Gremlin, Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US20080189295A1 (en) * | 2004-09-29 | 2008-08-07 | Musicgremlin, Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US20080183840A1 (en) * | 2004-09-29 | 2008-07-31 | Musicgremlin, Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US20080182508A1 (en) * | 2004-09-29 | 2008-07-31 | Music Gremlin, Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US20080180401A1 (en) * | 2004-09-29 | 2008-07-31 | Music Gremlin, Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US20080184317A1 (en) * | 2004-09-29 | 2008-07-31 | Music Gremlin, Inc | Audio visual player apparatus and system and method of content distribution using the same |
US20080182509A1 (en) * | 2004-09-29 | 2008-07-31 | Music Gremlin, Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US20080162655A1 (en) * | 2004-09-29 | 2008-07-03 | Music Gremlin, Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US20080160908A1 (en) * | 2004-09-29 | 2008-07-03 | Music Gremlin, Inc. | Audio visual player apparatus and system and method of content distribution using the same |
US7747894B2 (en) * | 2005-06-06 | 2010-06-29 | Microsoft Corporation | Transport-neutral in-order delivery in a distributed system |
US20060274727A1 (en) * | 2005-06-06 | 2006-12-07 | Microsoft Corporation | Transport-neutral in-order delivery in a distributed system |
US20140325039A1 (en) * | 2008-11-26 | 2014-10-30 | Cisco Technology, Inc. | Deterministic session load-balancing and redundancy of access servers in a computer network |
US9491234B2 (en) * | 2008-11-26 | 2016-11-08 | Cisco Technology, Inc. | Deterministic session load-balancing and redundancy of access servers in a computer network |
US20110016225A1 (en) * | 2009-07-16 | 2011-01-20 | Anthony Neal Park | Digital content distribution system and method |
EP2454680A4 (en) * | 2009-07-16 | 2015-06-17 | Netflix Inc | A digital content distribution system and method |
US8433814B2 (en) * | 2009-07-16 | 2013-04-30 | Netflix, Inc. | Digital content distribution system and method |
WO2011017890A1 (en) * | 2009-08-13 | 2011-02-17 | 中兴通讯股份有限公司 | Multimode mobile terminal and method for downloading resources thereof |
US9385988B2 (en) * | 2009-11-04 | 2016-07-05 | Cedexis, Inc. | Internet infrastructure survey |
US10397178B2 (en) | 2009-11-04 | 2019-08-27 | Citrix Systems, Inc. | Internet infrastructure survey |
US20120246315A1 (en) * | 2009-11-04 | 2012-09-27 | Cedexis Inc. | Internet infrastructure survey |
US8499077B2 (en) * | 2011-02-07 | 2013-07-30 | F-Secure Corporation | Controlling internet access using DNS root server reputation |
US20120203904A1 (en) * | 2011-02-07 | 2012-08-09 | F-Secure Corporation | Controlling Internet Access Using DNS Root Server Reputation |
US20130097277A1 (en) * | 2011-10-12 | 2013-04-18 | Electronics And Telecommunications Research Institute | Method and apparatus for load balancing of content-centric network |
US9378070B2 (en) | 2013-02-01 | 2016-06-28 | Introspective Power, Inc. | Generic distributed processing unit for multi-agent systems |
US8898218B2 (en) | 2013-02-01 | 2014-11-25 | Introspective Power, Inc. | Generic distributed processing for multi-agent systems |
US9569289B2 (en) | 2013-02-01 | 2017-02-14 | Introspective Power, Inc. | Generic distributed processing for multi-agent systems |
WO2014121194A1 (en) * | 2013-02-01 | 2014-08-07 | Introspective Power, Inc. | Generic distributed processing for multi-agent systems |
US10795737B2 (en) | 2013-02-01 | 2020-10-06 | Introspective Power, Inc. | Generic distributed processing for multi-agent systems |
US10616314B1 (en) * | 2015-12-29 | 2020-04-07 | Amazon Technologies, Inc. | Dynamic source routing for data transfer |
CN106059856A (en) * | 2016-06-20 | 2016-10-26 | 乐视控股(北京)有限公司 | File retrieval method, file retrieval apparatus and content delivery network (CDN) system |
US10893086B2 (en) * | 2016-11-10 | 2021-01-12 | Sony Corporation | Node type based control of assistance for data streaming |
CN106899693A (en) * | 2017-03-20 | 2017-06-27 | 聚好看科技股份有限公司 | Distributed file management method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
US7299291B1 (en) | 2007-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7299291B1 (en) | Client-side method for identifying an optimum server | |
US6751673B2 (en) | Streaming media subscription mechanism for a content delivery network | |
EP3446461B1 (en) | Just in time transcoding and packaging in ipv6 networks | |
EP2897340B1 (en) | Routing proxy for adaptive streaming | |
US6405256B1 (en) | Data streaming using caching servers with expandable buffers and adjustable rate of data transmission to absorb network congestion | |
US7013322B2 (en) | System and method for rewriting a media resource request and/or response between origin server and client | |
JP4456113B2 (en) | System and method for selecting a data provider | |
US7089319B2 (en) | Method and system for instantaneous on-demand delivery of multimedia content over a communication network with aid of content capturing component, delivery-on-demand client and dynamically mapped resource locator server | |
US8224986B1 (en) | Methods and apparatus for redirecting requests for content | |
US20020042817A1 (en) | System and method for mirroring and caching compressed data in a content distribution system | |
RU2647654C2 (en) | System and method of delivering audio-visual content to client device | |
JP2001508258A (en) | Replica routing | |
KR20030026932A (en) | A QOS based content distribution network | |
EP1678919B1 (en) | Methods and systems for dynamically configuring a network component | |
KR20030022805A (en) | Content tracking | |
CA2413886A1 (en) | Client side holistic health check | |
Ramadha et al. | Design and implementation named data networking-based video streaming system | |
EP3668052B1 (en) | Method, system and devices for improved multimedia content delivery | |
Awiphan et al. | Adaptive video streaming on named data networking with iot-assisted content delivery | |
Poobai et al. | Adaptive bit-rate video streaming on named data networking with active throughput estimation | |
EP2400749A1 (en) | Access network controls distributed local caching upon end-user download | |
CA2410863A1 (en) | Client side address routing analysis | |
AU2002229123A1 (en) | Streaming media subscription mechanism for a content delivery network | |
Kim et al. | The Globally Scalable Architecture for Heterogeneous Video Servers without any Modification. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |