Client-based dynamic switching of streaming servers for fault-tolerance and load balancing
First Claim
1. In a client-server system, a method of dynamically switching client-server connections, said method comprising the steps of:
- dividing a plurality of servers into two or more disjoint sets, wherein each set of servers includes at least one server;
a client requesting a real-time data stream;
assigning the client to both a primary server in a first set of servers and a secondary set of servers, in response to said request;
the client receiving the real-time data stream from the primary server;
the client detecting a failure in one or more of the real-time data stream and the primary server; and
the client dynamically switching to and receiving the real-time data stream from a secondary server in the secondary set of servers, in response to said detecting step.
2 Assignments
0 Petitions
Accused Products
Abstract
A client-based system for the fault tolerant delivery of real-time or continuous data streams, such as real-time multimedia streams, e.g., live audio and video clips. Multimedia servers are grouped into two or more sets, for example wherein a first set includes one or more primary servers using odd-numbered ports and a second set includes one or more secondary servers using even-numbered ports. The client requests a multimedia stream through a control server or gateway which routes requests to the multimedia servers; and the client receives the stream directly from a selected (primary) server. The client automatically detects load imbalances and/or failures (complete or partial) and dynamically switches to a secondary server in order to continue receiving the real-time multimedia stream with minimal disruption and while maintaining a balanced load across multiple servers in a distributed network environment. The determination can be made based on: the received bit or frame rate (for video); a bit rate or sample rate (for audio); monitoring a delivery rate or for packets arriving out of order: for example using packet numbering mechanisms available in TCP; sequence numbering or time stamp capabilities of RTP (in combination with the User Datagram Protocol (UDP)). In any case, the determination could be based on the rate measurement or monitoring mechanism falling below (or exceeding) some threshold. Alternately, the primary server or the control server could send an explicit distress or switch signal to the client. An explicit signal can be used for example to switch clients in phases with minimal disruption.
765 Citations
46 Claims
-
1. In a client-server system, a method of dynamically switching client-server connections, said method comprising the steps of:
-
dividing a plurality of servers into two or more disjoint sets, wherein each set of servers includes at least one server;
a client requesting a real-time data stream;
assigning the client to both a primary server in a first set of servers and a secondary set of servers, in response to said request;
the client receiving the real-time data stream from the primary server;
the client detecting a failure in one or more of the real-time data stream and the primary server; and
the client dynamically switching to and receiving the real-time data stream from a secondary server in the secondary set of servers, in response to said detecting step. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
said dividing step comprising the step of grouping the servers into two sets wherein the first set includes a plurality of primary servers using odd port numbers and the second set includes a plurality of secondary servers using even port numbers.
-
-
4. The method of claim 1 wherein the system includes a control server coupled to the client and the sets of servers, and wherein said assigning step further comprises the steps of:
-
said requesting step comprising the client communicating a message to the control server, requesting a connection to one of the servers; and
the control server selecting the primary server and the secondary server for the client.
-
-
5. The method of claim 4, wherein said step of dynamically switching to the secondary server, further comprises the steps of:
-
said step of dynamically switching comprising the steps of;
client communicating a switch request to the control server;
the control server assigning the secondary server to the client wherein the secondary server is member of a set different from the set of which the primary server is a member of; and
establishing a new connection between the client and the secondary server.
-
-
6. The method of claim 1 wherein the data stream is a multimedia data stream.
-
7. The method of claim 6, wherein the multimedia data is one or more of live digital audio and video data.
-
8. The method of claim 1, wherein said step of the client detecting a failure, further comprises the steps of:
-
monitoring the data stream for data arriving out of order; and
comparing the order with a threshold.
-
-
9. The method of claim 8, wherein the data stream is communicated using a TCP/IP suite of protocols, said monitoring step further comprising the step of:
monitoring based on a mechanism selected from the group consisting of;
packet numbering mechanisms available in TCP, and sequence numbering or time stamp capabilities of a Real-time Transport Protocol in combination with a User Datagram Protocol.
-
10. The method of claim 1 wherein said each set of servers includes a plurality of servers and said assigning step further comprises the step of load-balancing client assignments to the primary server.
-
11. The method of claim 1, wherein said step of the client detecting a failure, further comprises the steps of:
-
measuring one or more of a received bit rate;
frame rate;
delivery rate; and
sample rate associated with the data stream; and
comparing the rate with a threshold.
-
-
12. The method of claim 1, further comprising the steps of:
-
the client communicating a switch request to a control server, in response to said step of detecting the failure; and
the control server identifying the secondary server in the second set of servers based on entries maintained at a control server, in response to said detecting step.
-
-
13. The method of claim 1, further comprising the steps of:
-
the control server communicating an identifier of the primary server and the secondary set of servers to the client, in response to the client requesting the data stream;
said step of the client dynamically switching comprising the step of the client communicating a request to the control server to switch to the alternate server including the identifier of the secondary set of servers; and
the control server identifying the secondary server in the second set of servers in response to a client switch request.
-
-
14. The method of claim 1, wherein the system includes a control server coupled to the client and said each set of servers, further comprising the steps of:
-
one of the primary server and the control server communicating a switch signal to the client; and
said step of the client dynamically switching comprising the step of the client communicating a request to the control server to switch to the alternate server, in response to the switch signal; and
the control server identifying the secondary server in the second set of servers based on entries maintained at the control server.
-
-
15. The method of claim 1, further comprising the steps of:
designating the secondary server as a new primary server.
-
16. In a client-server system, a method of dynamically switching client-server connections, said method comprising the steps of:
-
identifying at least a primary server and a secondary server for a real-time data stream;
a client receiving the real-time data stream from the primary server;
the client detecting a failure in one or more of the real-time data stream and the primary server; and
the client dynamically switching to the secondary server and receiving the real-time data stream from the secondary server, in response to said detecting step. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25)
monitoring the data stream for data arriving out of order; and
comparing the order with a threshold.
-
-
20. The method of claim 19, wherein the data stream is communicated using a TCP/IP suite of protocols, said monitoring step further comprising the step of:
monitoring based on a mechanism selected from the group consisting of;
packet numbering mechanisms available in TCP, and sequence numbering or time stamp capabilities of a Real-time Transport Protocol in combination with a User Datagram Protocol.
-
21. The method of claim 16, wherein the system includes a control server coupled to the client and said each set of servers, further comprising the steps of:
-
the client communicating a switch request to a control server, in response to said step of detecting the failure; and
the control server identifying the secondary server based on entries maintained at a control server, in response to said detecting step.
-
-
22. The method of claim 21, further comprising the steps of:
-
the control server communicating an identifier of the primary server and the secondary server to the client, in response to the client requesting the data stream;
said step of the client dynamically switching comprising the step of the client communicating a request to the control server to switch to the secondary server including the identifier of the secondary server.
-
-
23. The method of claim 16, further comprising the steps of:
-
a control server communicating a switch signal to the client; and
said step of the client dynamically switching comprising the step of the client communicating a switch request to the control server, in response to the switch signal; and
the control server identifying the secondary server based on entries maintained at the control server.
-
-
24. The method of claim 23, further comprising the step of the control server designating the secondary server as a new primary server.
-
25. The method of claim 16, wherein said step of the client detecting a failure, further comprises the steps of:
-
measuring one or more of a received bit rate;
frame rate; and
sample rate associated with the data stream; and
comparing the rate with a threshold.
-
-
26. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for dynamically switching client-server connections between a primary server and a secondary server for a real-time data stream, said method steps comprising:
-
a client receiving the real-time data stream from the primary server;
the client detecting a failure in one or more of the real-time data stream and the primary server; and
the client dynamically switching to the secondary server and receiving the real-time data stream from the secondary server, in response to said detecting step. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35)
monitoring the data stream for data arriving out of order; and
comparing the order with a threshold.
-
-
30. The method of claim 29, wherein the data stream is communicated using a TCP/EP suite of protocols, said monitoring step further comprising the step of:
monitoring based on a mechanism selected from the group consisting of;
packet numbering mechanisms available in TCP, and sequence numbering or time stamp capabilities of a Real-time Transport Protocol in combination with a User Datagram Protocol.
-
31. The method of claim 26, wherein the system includes a control server coupled to the client and said each set of servers, further comprising the steps of:
-
the client communicating a switch request to a control server, in response to said step of detecting the failure; and
the control server identifying the secondary server based on entries maintained at a control server, in response to said detecting step.
-
-
32. The method of claim 31, further comprising the steps of:
-
the control server communicating an identifier of the primary server and the secondary server to the client, in response to the client requesting the data stream;
said step of the client dynamically switching comprising the step of the client communicating a request to the control server to switch to the secondary server including the identifier of the secondary server.
-
-
33. The method of claim 26, further comprising the steps of:
-
a control server communicating a switch signal to the client; and
said step of the client dynamically switching comprising the step of the client communicating a switch request to the control server, in response to the switch signal; and
the control server identifying the secondary server based on entries maintained at the control server.
-
-
34. The method of claim 33, further comprising the step of the control server designating the secondary server as a new primary server.
-
35. The method of claim 26, wherein said step of the client detecting a failure, further comprises the steps of:
-
measuring one or more of a received bit rate;
frame rate; and
sample rate associated with the data stream; and
comparing the rate with a threshold.
-
-
36. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for dynamically switching client-server connections between two or more disjoint sets of servers wherein each set of servers includes at least one server, said method steps comprising:
-
a client requesting a real-time data stream;
assigning the client to a primary server in a first set of servers and a secondary set of servers, in response to said request;
the client receiving the real-time data stream from the primary server;
the client detecting a failure in one or more of the real-time data stream and the primary server; and
the client dynamically switching to and receiving the real-time data stream from a secondary server in the secondary set of servers, in response to said detecting step. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43)
the client communicating a switch request to a control server;
the control server assigning the secondary server to the client, wherein the secondary server is a member of a set of servers different from the set of which the primary server is a member; and
establishing a new connection between the client and the secondary server.
-
-
38. The program storage device of claim 36, wherein said step of the client detecting a failure, further comprises the steps of:
-
measuring one or more of a received bit rate;
frame rate; and
sample rate associated with the data stream; and
comparing the rate with a threshold.
-
-
39. The program storage device of claim 36, wherein said step of the client detecting a failure, further comprises the steps of:
-
monitoring the data stream for data arriving out of order; and
comparing the order with a threshold.
-
-
40. The program storage device of claim 36, wherein the data stream is communicated using a TCP/IP suite of protocols, said monitoring step further comprising the step of:
monitoring based on a mechanism selected from the group consisting of;
packet numbering mechanisms available in TCP, and sequence numbering or time stamp capabilities of a Real-time Transport Protocol in combination with a User Datagram Protocol.
-
41. The program storage device of claim 36, further comprising the steps of:
-
the client communicating a switch request to a control server, in response to said step of detecting the failure; and
the control server identifying the secondary server in the second set of servers based on entries maintained at a control server, in response to said detecting step.
-
-
42. The program storage device of claim 36, further comprising the steps of:
-
the control server communicating an identifier of the primary server and the secondary set of servers to the client, in response to the client requesting the data stream;
said step of the client dynamically switching comprising the step of the client communicating a switch request to the control server including the identifier of the secondary set of servers from which the secondary server is to be selected; and
the control server identifying the secondary server in the second set of servers in response to the client switch request.
-
-
43. The program storage device of claim 36, wherein the system includes a control server coupled to the client and said each set of servers, further comprising the steps of:
-
one of the primary server and the control server communicating a switch signal to the client; and
said step of the client dynamically switching comprising the step of the client communicating a request to the control server to switch to the alternate server, in response to the switch signal; and
the control server identifying the secondary server in the second set of servers based on entries maintained at the control server.
-
-
44. A computer program product comprising:
-
a computer usable medium having computer readable program code means embodied therein for dynamically switching client-server connections between a plurality of servers into two or more disjoint sets, wherein each set of servers includes at least one server;
the computer readable program code means in said computer product comprising;
computer readable program code means for causing a computer to effect a client requesting a real-time data stream;
computer readable program code means for causing a computer to effect assigning the client to a primary server in a first set of servers and a secondary server in a second set of servers, in response to said request;
computer readable program code means for causing a computer to effect the client receiving the real-time data stream from the primary server;
computer readable program code means for causing a computer to effect the client detecting a failure in one or more of the real-time data stream and the primary server; and
computer readable program code means for causing a computer to effect the client dynamically switching to and receiving the real-time data stream from the secondary server, in response to said detecting step.
-
-
45. A computer program product comprising:
-
a computer usable medium having computer readable program code means embodied therein for dynamically switching client-server connections between a primary server and a secondary server for a real-time data stream, the computer readable program code means in said computer program product comprising;
computer readable program code means for causing a computer to effect a client receiving the real-time data stream from the primary server;
computer readable program code means for causing a computer to effect the client detecting a failure in one or more of the real-time data stream and the primary server; and
computer readable program code means for causing a computer to effect the client dynamically switching to the secondary server and receiving the real-time data stream from the secondary server, in response to said detecting step.
-
-
46. A client-based system for dynamically switching client connections, comprising:
-
two or more disjoint sets of real-time streaming servers, each set including at least one real-time streaming server for delivering a real-time multimedia stream;
a control server coupled to the client and to the real-time streaming servers; and
one or more client agents, coupled to the real-time streaming servers and the control server, for requesting and receiving and rendering the real-time multimedia stream;
the control further comprising;
control server means for processing incoming client agents and redirecting them to the real-time streaming server that can provide the real-time multimedia stream;
each client agent comprising;
client agent means for detecting a failure and dynamically switching to and receiving the real-time multimedia stream from a secondary real-time streaming server, said client agent means coupled to the control server means.
-
Specification