The present invention relates generally to network routers, and particularly, to network routers that broker requests for live media streams between a content server that provides the live media streams and the user terminals that request the live media streams.
Media traffic, such as streaming video and audio traffic, currently represents the largest percentage of Internet traffic. Further, the demand for video and audio streaming is rapidly increasing. Content such as TV and radio programming, for example, are now being streamed live across the Internet at the same time they are broadcast to viewers via their cable and satellite providers. For example, the Indian Premiere League (IPL), a popular cricket series, was recently streamed live to YOUTUBE. This marked the first time that a sports tournament was made available to viewers live via the Internet. Similarly, both the PGA Golf Tournament and the US Open were recently streamed to viewers via the Internet, with the U.S. Open 2010 being made available for viewing on the US Open website. In fact, ESPN3 is a live sports broadband network that streams worldwide live sports events for most any sport occurring to online viewers all over the world.
Typically, a live media stream is uploaded to a content server at the same time it is streamed over the Internet to one or more registered viewers. The content server can be located anywhere in the world and there is no maximum number of viewers that are able to view the live feeds. Generally, an end user receives the live media stream of an event at substantially the same time as the event occurs. The only delay in delivering the media stream to the end users is the delay that occurs between the time of creation of the media content (i.e., the recording of the live event) and the time it is uploaded to the server.
Although beneficial, there are some technological problems that must be addressed in order to stream live media content. For example, the live programs cannot be multicast to viewers because not all Internet Service Providers (ISPs) that handle the stream along the way support multicasting services. Additionally, it is not currently possible to dynamically map a media stream to a multicast channel and have the host that provides the media stream subscribe to the channel. Therefore, the live media streams are typically “unicast” to viewers. That is, each registered viewer establishes a separate stream with the content server to receive the same live media stream.
Providing each registered viewer with their own copy of the same live media stream via their own dedicated stream is a waste of network resources. Particularly, in some cases, the media streams travel through the network from the content server to an edge router before being delivered to the viewer. If several viewers are geographically near each other, it could mean that a single router would receive multiple copies of the same media stream originating from the same content server. Additionally, the content servers that host the live media streams (i.e., the owners of the content) mandate that the streamed content not be cached at the router.
The present invention provides an efficient method and apparatus for delivering a live media stream hosted at a network content server to multiple user terminals. Particularly, a network router disposed between the user terminals and the content server brokers requests for the live media stream. However, rather than receive separate, dedicated live media streams from the content server for delivery to each of the multiple user terminals, as is conventional, a router configured according to the present invention receives only one live media stream from the content server. For delivery to a plurality of user terminals, the router replicates the media stream for delivery to each user terminal. In this manner, the present invention reduces the load on the network content server, as well as the load or traffic on the network.
Accordingly, in one embodiment, the present invention provides a method for delivering a live media stream to a user terminal. In this embodiment, a network router intercepts a request from a first user terminal for a live media stream provided by a content server. The request includes a Uniform Resource Identifier (URI) that identifies the live media stream at the content server and a terminal identifier that identifies the first user terminal. Upon intercepting the request, the router first checks the contents of a memory to determine whether it is currently sending the live media stream to one or more different, user terminals. If the check reveals that no other user terminals are receiving the requested live media stream, the router will obtain the live media stream from the content server for delivery to the user terminal. The router will not cache the content of the live media stream. However, if the check reveals that the router is already delivering the live media stream to one or more other user terminals, the router will not forward the request to the content server. Instead, the router will replicate the requested live media stream and deliver the replicated stream to the requesting user terminal.
The present invention also provides a network router configured to deliver a live media stream to multiple user terminals. The network router comprises a communications interface and a controller. The communications interface connects the router to a content server hosting a live media stream and to one or more user terminals that request the live media stream hosted by the content server. The controller is configured to cause the router to deliver the live media stream to user terminals based on the number of users that are already receiving the same media stream.
Particularly, in one embodiment, the controller intercepts a request from a first user terminal for a live media stream provided by a content server. The request includes a Uniform Resource Identifier (URI) that identifies the live media stream at the content server and a terminal identifier that identifies the first user terminal. Based on data stored in a memory accessible to the router, the controller determines whether the router is currently delivering the same live media stream to one or more other user terminals. If not, the controller will obtain the live media stream from the content server and deliver the requested live media stream to the user terminal without caching the content. If so, however, the controller will not forward the request to the content server, but instead, replicate the live media stream at the router and deliver it to the requesting user terminal.
In another embodiment performed at a network server, the present invention provides a method for sending live media streams to a user terminal. Particularly, the server receives a user request for a media stream from the user via a network router. In addition to providing the requested media stream to the router for delivery to the user, the server generates a response for the router that includes multiple parameters. A first parameter includes an indicator that identifies the requested media stream as a live media stream. A second parameter is a Uniform Resource Identifier (URI) identifying the live media stream at a content server. The response is sent to the router along with the live media stream. The router will maintain the received parameters in a memory and use those parameters to make decisions responsive to receiving subsequent requests for the live media stream. Particularly, the router will decide whether to replicate the live media stream at the router for delivery to user terminals, or to obtain the live media stream from the content server for delivery to the user terminals, based on the stored parameters.
Of course, those skilled in the art will appreciate that the present invention is not limited to the above contexts or examples, and will recognize additional features and advantages upon reading the following detailed description and upon viewing the accompanying drawings.
The present invention provides an apparatus and method for delivering a “live” media stream hosted at a content server to one or more user terminals. More particularly, a network router brokers requests for a live media stream between user terminals and the content server that hosts the requested stream. During operation, the network router collects and maintains information identifying the live media stream as well as the identities of the user terminals currently receiving the live media stream.
Whenever a user terminal requests to receive the live media stream, the network router uses the information to determine whether to forward the request to the content server to obtain the live media stream for delivery to the user terminal, or whether to forego sending the request to the content server, and instead, replicating the live media stream at the router for delivery to a user terminal. The latter choice eliminates the need for multiple streams from the content server to the network router, thereby reducing the load on the network and saving network resources.
In the context of the present invention, a media stream comprises any video and/or audio stream hosted at one or more content servers. A “live” media stream is therefore a video and/or audio stream of a live event (e.g., a sporting event or a concert) that is uploaded to the content server at substantially the same time that the event occurs. Although there may be some delay between when the subject media event actually occurs and when the corresponding “live” media stream is uploaded to the content server, a key feature of a “live” media stream is that it is not recorded or cached for replay on devices that handle the live media stream.
Generally, each of the user terminals 12-18 are configured to generate and send request messages requesting the delivery of a live media stream hosted at the content server 100. In response to the request messages, the content server 100 provides the user terminals 12-18 with a response message and the live media stream. In one embodiment, the live media stream comprises an audio/video stream of a live event (e.g., a sporting event as it occurs). In another embodiment, the live media stream comprises an audio stream of a live event (e.g., a concert as it occurs). In both cases, the live media stream is first uploaded from a device used to capture the video and/or audio (e.g., a video camera or a microphone) to the content server 100 as the event occurs. The resultant live media stream is then made available via streaming to the user terminals 12-18 via the routers 80 and network 20, 22.
As previously stated, conventional methods of streaming live media to multiple user terminals is problematic. For example, conventional methods of providing live media streams to a plurality of user terminals unnecessarily utilize large amounts of network resources. The present invention, however, improves upon these conventional methods, and in particular, reduces the load on the network 10 and content server 100.
Particularly, user terminals 12, 14 independently generate respective HTTP request messages (e.g., HTTP GET messages) to request a live media stream. The messages may or may not be generated simultaneously. Each user terminal 12, 14 sends its request to the content server 100 via router 80a and networks 20, 22. In response, the content server 100 provides each user terminal 12, 14 with the requested live media stream via router 80a and networks 20, 22.
As seen in
The present invention reduces or eliminates this waste while still allowing multiple user terminals to receive the same live media stream. Particularly, when a first user terminal 16 generates a request (e.g., an HTTP GET) to obtain the live media stream via the router 80b, the content server 100 sends an HTTP response message including information about the live media stream content. According to the present invention, the router 80b intercepts the HTTP messages and extracts or copies predetermined parameters from the HTTP messages. The router 80b also saves these parameters to a memory accessible to the router 80b. The content server 100 will then send the live media stream to the user terminal 16 via the router 80b. Thereafter, whenever a subsequent user terminal (e.g., user terminal 18) generates and sends a HTTP GET message for the same live media stream, the router 80b extracts similar parameters from the subsequent request message and compares them to the extracted parameters stored in the memory to determine whether another user terminal is currently receiving the live media stream. If so, the router 80b is configured to refrain from sending the request generated by user terminal 18 to the content server 100, and instead, replicate the live media stream at the router. The replicated live media stream (indicated in
The method 30 of
The router 80b “snoops” the HTTP RESPONSE message upon receipt and extracts the URI based on the LIVE indicator (box 38). If the requested media stream is not a live media stream (box 40), the router 80b will simply forward the HTTP RESPONSE to the user terminal (box 44). If, however, the requested media stream is indicated as being live (box 40), the router 80b will extract the URI from the HTTP response message and associate the URI with the terminal ID of user terminal 16. The association is then stored in a memory that is accessible to the router 80b (box 42). As seen later in more detail, the router 80 will maintain the association as long as user terminal 16 continues to receive the live media stream. Further, the router 80b will utilize this information to determine whether or not to forward future requests for the live media stream to the server. The router 80b will then forward the HTTP RESPONSE message to the user terminal 16 (box 44).
To obtain the media stream, the router 80b performs the method 50 seen in
Method 50 begins when the router 80b receives this request for the live media stream from a user terminal (e.g., an HTTP GET message from user terminal 16, 18) (box 52). Upon receipt, the router 80b will extract the URI and determine whether or not to obtain the live media stream from the content server 100. Specifically, the router 80b will compare the URI received from the user terminal to the URI stored previously by router 80b in memory (box 54). If the comparison indicates that no other user terminals are currently receiving the live media stream (i.e., this is the initial request generated by user terminal 16), the router 80b will associate the URI and the terminal ID received with the HTTP GET and store the association in a memory (box 56). The router 80b will then retrieve the live media stream from the content server 100 for delivery to the user terminal 16. The router 80b will not cache or save the requested live media stream in the memory (box 58).
If the comparison reveals that at least one other user terminal is receiving the live media stream (e.g., the URI exists in memory and is associated with at least one other terminal ID, such as that of user terminal 16) (box 54), the router 80b will not forward the request to the content server 100. Instead, the router 80b will replicate the existing live media stream at the router without caching the media stream (box 60). The router 80b will then associate the terminal ID (e.g., user terminal 18) to the URI and store the association in the memory (box 62). The router 80b will then send the replicated live media stream to the user terminal 18 (box 64).
Thus, the router 80b configured according to the present invention monitors which media streams are “live” media streams, and which user terminals are currently receiving the same live media stream. Based on that information, the router 80b will either forward a request for the live media stream to the content server 100 (i.e., on an initial request), or forego forwarding the request, and instead, replicate the live media stream at the router for delivery to the user terminal (i.e., on subsequent requests). Of course, the router 80b may or may not communicate information to the content server 100 providing data on the requesting user terminals to ensure that they are authorized to receive the media, and/or to help the content server 100 maintain a billing database.
The router will maintain and update the memory as necessary to ensure that the memory accurately reflects which user terminal(s) are currently receiving the live media stream. As seen in method 70 of
The controller 82 controls the operation of router 80b according to one or more programs and data stored in memory 86. Such programs and data, such as application 90, for example, may control the router 80b to perform functions such as communicate media streams and/or data with the user terminals 12-18 and/or the content server 100. As previously described, application 90 may cause the controller 82 to monitor which user terminals are currently receiving a given live media stream, and replicate the given media stream for at least some user terminals instead of obtaining all media streams from a content server. This includes the ability to “snoop” HTTP GET and HTTP RESPONSE messages to determine a URI and terminal IDs, as well as to determine whether a given media stream requested by the user terminals is a “live” media stream.
The User I/O Interface (UI) 84 generally includes one or more components that permit a network operator to interact with, and control the operation of, the router 80b. This may include, but is not limited to, one or more user controls such as knobs, switches, keys, button controls, or dials. Memory 86 is a computer readable medium representing the entire hierarchy of memory in router 80b, and may comprise both random access memory (RAM) and read-only memory (ROM). As previously stated, the computer program instructions and data required for operation of the router 80b are stored in non-volatile memory, such as EPROM, EEPROM, and/or flash memory. Memory 84 may be implemented, for example, as one or more discrete devices, stacked devices, or removable devices, such as a flash drive or memory stick, or may be integrated with controller 82. The communications interface 88 comprises any known interface that permits the router 80b to communicate data and/or live media streams with one or more user terminals 12-18, as well as content server 100.
The conventional functions of the components seen in
The present invention may, of course, be carried out in other ways than those specifically set forth herein without departing from essential characteristics of the invention. For example, the network router described in the previous embodiments can intercept and extract parameters from communicated messages, but does not alter the messages. In other embodiments, however, the network router may be configured to function as a full-blown proxy. Further, the router seen in the previous embodiments can be, but is not required to be, an edge router. Thus, any network router disposed along the stream may be configured to function according to one or more embodiments of the present invention. Therefore, the present embodiments are to be considered in all respects as illustrative and not restrictive, and all changes coming within the meaning and equivalency range of the appended claims are intended to be embraced therein