Hybrid HTTP and UDP content delivery
First Claim
1. A method of data delivery, comprising:
- at a server executing on a hardware platform;
receiving, from a client and over a persistent connection, an HTTP request that identifies a content object, the HTTP request including an HTTP request header that includes an indication that the client desires to use a UDP connection for transfer of a body of the response to the HTTP request, together with any preference about UDP delivery desired by the client;
returning to the client a response to the HTTP request that includes a header and a response body, the header including a security token and identifying an IP address and UDP port number associated with the server, the response body being devoid of the content object requested;
receiving from the client a UDP request directed to the IP address and UDP port number, the UDP request including the security token; and
returning a response to the UDP request over the UDP connection that includes the content object that was identified in the HTTP request but not returned in the response body.
1 Assignment
0 Petitions
Accused Products
Abstract
A hybrid HTTP/UDP delivery protocol provides significant improvements for delivery of video and other content over a network, such as an overlay. The approach is especially useful to address problems (e.g., slow startup times, rebuffering, and low bitrates) for HTTP-based streaming. In general, the protocol has two phases: an HTTP phase, and a UDP phase. In the HTTP phase, the client sends an HTTP GET request to a server. The GET request contains a transport header informing the server that the client would like to use UDP-based transfer over the protocol. The server may refuse this mode and continue in ordinary HTTP mode, or the server may respond by sending an empty response with header information informing the client how to make the connection to enter the UDP phase. In the UDP phase, the client initiates a connection and receives the originally-requested content over UDP.
-
Citations
17 Claims
-
1. A method of data delivery, comprising:
-
at a server executing on a hardware platform; receiving, from a client and over a persistent connection, an HTTP request that identifies a content object, the HTTP request including an HTTP request header that includes an indication that the client desires to use a UDP connection for transfer of a body of the response to the HTTP request, together with any preference about UDP delivery desired by the client; returning to the client a response to the HTTP request that includes a header and a response body, the header including a security token and identifying an IP address and UDP port number associated with the server, the response body being devoid of the content object requested; receiving from the client a UDP request directed to the IP address and UDP port number, the UDP request including the security token; and returning a response to the UDP request over the UDP connection that includes the content object that was identified in the HTTP request but not returned in the response body. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method of data delivery, comprising:
-
at a client executing on a hardware platform; transmitting, to a server and over a persistent connection, an HTTP request that identifies a content object, the HTTP request including an HTTP request header that includes an indication that the client desires to use a UDP connection for receipt of a body of the response to the HTTP request, together with any preference about UDP delivery desired by the client; receiving from the server a response to the HTTP request that includes a header and a response body, the header including a security token and identifying an IP address and UDP port number associated with the server, the response body being devoid of the content object requested; transmitting to the server a UDP request directed to the IP address and UDP port number, the UDP request including the security token; and receiving a response to the UDP request over the UDP connection that includes the content object that was identified in the HTTP request but not returned in the response body. - View Dependent Claims (7, 8, 9, 10)
-
-
11. An apparatus, comprising:
-
a processor; computer memory holding computer program instructions, the computer program instructions comprising; program code to receive from a client over a persistent connection a request that identifies a content object, the request delivered via a first transport protocol, the request including a first transport protocol request header that includes an indication that the client desires to use a second transport protocol connection for transfer of a body of the response to the request, together with any preference about delivery over the second transport protocol connection desired by the client; program code to return to the client a response to the request, the response delivered via the first transport protocol; the response comprising an empty response body in lieu of the content object requested, and a transport header including at least first and second information, the first information identifying an address and port number at which the content object can be obtained via a second transport protocol that differs from the first transport protocol, and the second information for subsequent use in verifying that the request is received by a client that issued the request, the second information including a security token; and program code responsive to receipt at the address of a request delivered via the second transport protocol and that includes the security token, the program code being operative in response to the request delivered via the second transport protocol to return over the second transport protocol connection the content object not returned in the response delivered via the first transport protocol; wherein the first transport protocol is HTTP over TCP/IP. - View Dependent Claims (12, 13, 14)
-
-
15. A system operative in a multi-tenant overlay network environment in which a service provider provides video delivery from edge servers using HTTP-based streaming, comprising:
-
a first machine comprising server-side program code executed in a hardware processor; a second machine comprising client-side program code executed in a hardware processor; the server-side program code operative; to receive, from the client-side program code and over a persistent connection, an HTTP request that identifies a content object, the HTTP request including an HTTP request header that includes an indication that the client desires to use a UDP connection for transfer of a body of the response to the HTTP request, together with any preference about UDP delivery desired by the client; to return to the client-side program code a response to the HTTP request that includes a header and a response body, the header including a security token and identifying a UDP IP address and port number associated with the server-side program code, the response body being devoid of the content object requested; to receive from the client-side program code a UDP request directed to the UDP IP address and port number, the UDP request including the security token; and to return to the client-side program code a response over the UDP connection to the UDP request that includes the content object that was identified in the HTTP request but not returned in the response body; client-side program code operative; to transmit, to the server-side program code and over the persistent connection, the HTTP request that identifies the content object; to receive the response to the HTTP request that includes the header including the security token and identifying the UDP IP address and port number associated with the server-side program code, and the response body that is devoid of the content object requested; to transmit the UDP request directed to the UDP IP address and port number, the UDP request including the security token that was provided in the HTTP response; and to receive the response to the UDP request that includes the content object that was identified in the HTTP request but not returned in the response body. - View Dependent Claims (16, 17)
-
Specification