1. Field of the Invention
This invention relates generally to the field of network services. More particularly, the invention relates to an improved architecture for providing fault tolerant data communication.
2. Description of the Related Art
As is known in the art, streaming is a mechanism for playing back audio and/or video content over a network in-real-time, typically used in situations where network bandwidth is limited. The basic streaming concept is that the destination (e.g., a client) begins to play back the underlying streaming file from a buffer before the entire file has been received from its source.
A traditional network streaming system is illustrated in
In operation, when a client 150 requests a particular streaming file from a server at the POP site 130, the request is received by a load balancer module 120, which routes the request to an appropriate streaming server 111. Which server is “appropriate” may depend on where the requested file is stored, the load on each server 110, 111, . . . N, and/or the type of streaming file requested by the client (e.g., Windows Media format or RealPlayer format). Once the file has been identified by the load balancer 120 on an appropriate server—server 111 in the illustrated example—it is streamed to the requesting client 150 (represented by stream 140) through the network 100.
One problem with current systems for streaming multimedia content, however, is that when delivery of a stream to a client/player 150 is interrupted, there is no automated mechanism for correcting the interruption (e.g., providing another source for the stream) without some type of manual intervention. For example, if server 111 in
The problem is even more serious if the client 150 is receiving a stream of a live event or a scheduled event (e.g., such as a “Web-cast”). In this case, by the time the client 150 reestablished a connection, a significant portion of the event would simply be unavailable to the client 150. In sum, current streaming applications do not provide any mechanism for automatically and seamlessly reestablishing a streaming session with a client, once the initial session has been interrupted.
Accordingly, what is needed is a system and method for providing fault tolerance and/or automatic fail-over techniques with respect to streaming multimedia content over a network.
A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which:
a and 4b illustrate embodiments of a system and method for streaming content over a network.
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid obscuring the underlying principles of the invention.
Elements of the present invention may be included within a multi-tiered networking architecture 200 such as that illustrated in
According to the embodiment depicted in
The servers located at the data centers 220-222 and POPs 230-234; 240-245 may communicate with one another and with end users 150 using a variety of communication channels, including, for example, Digital Signal (“DS”) channels (e.g., DS-3/T-3, DS-1/T1), Synchronous Optical Network (“SONET”) channels (e.g., OC-3/STS-3), Integrated Services Digital Network (“ISDN”) channels, Digital Subscriber Line (“DSL”) channels, cable modem channels and a variety of wireless communication channels including satellite broadcast and cellular.
In addition, various networking protocols may be used to implement aspects of the system including, for example, the Asynchronous Transfer Mode (“ATM”), Ethernet, and Token Ring (at the data-link level); as well as Transmission Control Protocol/Internet Protocol (“TCP/IP”), Internetwork Packet Exchange (“IPX”), AppleTalk and DECnet (at the network/transport level). It should be noted, however, that the principles of the invention are not limited to any particular communication channel or protocol.
In one embodiment, a database for storing information relating to distributed network content is maintained on servers at the data centers 220-222 (and possibly also at the POP nodes 230-234; 240-245). The database in one embodiment is a distributed database (i.e., spread across multiple servers) and may run an instance of a Relational Database Management System (RDBMS), such as Microsoft™ SQL-Server, Oracle™ or the like.
Having briefly described an exemplary network architecture which employs various elements of the present invention, a computer system 300 representing exemplary clients and servers for implementing elements of the present invention will now be described with reference to
One embodiment of computer system 300 comprises a system bus 320 for communicating information, and a processor 310 coupled to bus 320 for processing information. The computer system 300 further comprises a random access memory (RAM) or other dynamic storage device 325 (referred to herein as “main memory”), coupled to bus 320 for storing information and instructions to be executed by processor 310. Main memory 325 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 310. Computer system 300 also may include a read only memory (“ROM”) and/or other static storage device 326 coupled to bus 320 for storing static information and instructions used by processor 310.
A data storage device 327 such as a magnetic disk or optical disc and its corresponding drive may also be coupled to computer system 300 for storing information and instructions. The computer system 300 can also be coupled to a second I/O bus 350 via an I/O interface 330. A plurality of I/O devices may be coupled to I/O bus 350, including a display device 343, and/or an input device (e.g., an alphanumeric input device 342 and/or a cursor control device 341).
The communication device 340 is used for accessing other computers (servers or clients) via a network 100. The communication device 340 may comprise a modem, a network interface card, or other well known interface device, such as those used for coupling to Ethernet, token ring, or other types of computer networks.
One embodiment of the invention, illustrated in
In one embodiment, a cluster manager 410, 415 maintains up-to-date connection data for each client. The cluster manager 410, 415 may reside on one server at the POP site 430 or multiple servers, depending on the particular configuration (although illustrated in
In one embodiment, the cluster manager 410, 415 receives client connection updates from cluster agents 425, 420 running on various streaming servers 400, 405 at the POP site 430. For example, when a client 150 initially connects to a particular streaming server 405 (e.g., through the load balancer 405), a cluster agent 425 running on that server 405 transmits connection data pertaining to that client to the cluster manager 410, 415. In addition, in one embodiment, the cluster agent 425 regularly transmits client connection updates to the cluster manager 410, 415 at predetermined intervals. Thus, the client data maintained by the cluster manager 410, 415 is kept up-to-date.
As illustrated in
As described above, in one embodiment, cluster agents 420,425, running on the streaming servers 400, 405 send client connection updates to the cluster manager 410,415 at predetermined intervals. Accordingly, in one embodiment, the cluster manager 410, 415 uses this periodic update as a “heartbeat” to detect when a particular streaming server has become inoperative (or, alternatively, to detect other problems with the server such as an unmanageable server load or a server communications/network problem). If the cluster manager 410, 415 does not receive an update from a server after one or more update periods have elapsed, it may conclude that the server is inoperative. Alternatively, before arriving at this conclusion, the cluster manager 410, 415 may first attempt to communicate with the server to verify that the server is, in fact, inoperative.
Regardless of how the cluster manager 410, 415 determines that a server is inoperative, once it does, it attempts to reassign each of the client connections supported by the inoperative server to an operative server. Thus, as illustrated in
The foregoing reallocation mechanism may be employed regardless of whether the original stream was of a live/scheduled event 460 (e.g., a Webcast) or a previously-stored audio/video file. In one embodiment, each of the streaming servers 400, 405, may be configured to buffer a predetermined portion of the streaming data for the live event 460. Accordingly, if a server 405 crashes, the new server 400 assigned by the cluster manager 410 can begin streaming the event at the exact point (stored in the buffer) where the original server 405 became inoperative.
The cluster manager 410 may assign servers to handle the streams of the inoperative server based on a variety of factors. For example, in one embodiment, the assignment may be based on the relative load on each of the servers at a given point in time. The assignment may also be based on the type of content supported by the servers. For example, some servers may be configured to support only real time streaming protocol (“RTSP”) requests, while the other may be configured to support only active streaming format (“ASF”) requests. Various additional factors may be evaluated for the purpose of making an assignment while still complying with the underlying principles of the invention.
In one embodiment, after the various client streams are reassigned to new servers, the load balancer module 405 is notified of the new server assignments so that it can properly distribute new client requests based on server load. In one embodiment, the load balancer module 405 is a layer 4 switch, capable of directing client requests to a particular server based on the type of streaming service being requested by the client (e.g., based on a virtual IP address associated with the service) and/or the server.
As illustrated in
Embodiments of the present invention include various steps, which have been described above. The steps may be embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor to perform certain steps. Alternatively, these steps may be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components.
Elements of the invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnet or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions. For example, the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
Throughout the foregoing description, for the purposes of explanation, numerous specific details were set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention may be practiced without some of these specific details. Accordingly, the scope and spirit of the invention should be judged in terms of the claims which follow.
Number | Name | Date | Kind |
---|---|---|---|
3363416 | Naeimi et al. | Jan 1968 | A |
4786130 | Georgiou et al. | Nov 1988 | A |
4845614 | Hanawa et al. | Jul 1989 | A |
4866712 | Chao | Sep 1989 | A |
4920432 | Eggers et al. | Apr 1990 | A |
4949187 | Cohen | Aug 1990 | A |
4949248 | Caro | Aug 1990 | A |
5172413 | Bradley et al. | Dec 1992 | A |
5253341 | Rozmanith et al. | Oct 1993 | A |
5291554 | Morales | Mar 1994 | A |
5371532 | Gelman et al. | Dec 1994 | A |
5410343 | Coddington et al. | Apr 1995 | A |
5414455 | Hooper et al. | May 1995 | A |
5440688 | Nishida | Aug 1995 | A |
5442389 | Blahut et al. | Aug 1995 | A |
5442390 | Hooper et al. | Aug 1995 | A |
5442749 | Northcutt et al. | Aug 1995 | A |
5448723 | Rowett | Sep 1995 | A |
5452448 | Sakuraba et al. | Sep 1995 | A |
5461415 | Wolf et al. | Oct 1995 | A |
5463768 | Cuddihy et al. | Oct 1995 | A |
5475615 | Lin | Dec 1995 | A |
5508732 | Bottomley et al. | Apr 1996 | A |
5515511 | Nguyen et al. | May 1996 | A |
5519435 | Anderson | May 1996 | A |
5528281 | Grady et al. | Jun 1996 | A |
5544313 | Shachnai et al. | Aug 1996 | A |
5544327 | Dan et al. | Aug 1996 | A |
5550577 | Verbiest et al. | Aug 1996 | A |
5550863 | Yurt et al. | Aug 1996 | A |
5550982 | Long et al. | Aug 1996 | A |
5557317 | Nishio et al. | Sep 1996 | A |
5568181 | Greenwood et al. | Oct 1996 | A |
5614940 | Cobbley et al. | Mar 1997 | A |
5675723 | Ekrot et al. | Oct 1997 | A |
5696895 | Hemphill et al. | Dec 1997 | A |
5703938 | Lucas et al. | Dec 1997 | A |
5704031 | Mikami et al. | Dec 1997 | A |
5712976 | Falcon, Jr. et al. | Jan 1998 | A |
5774660 | Brendel et al. | Jun 1998 | A |
5778187 | Monteiro et al. | Jul 1998 | A |
5805824 | Kappe | Sep 1998 | A |
5812751 | Ekrot et al. | Sep 1998 | A |
5813009 | Johnson et al. | Sep 1998 | A |
5832069 | Waters et al. | Nov 1998 | A |
5870553 | Shaw et al. | Feb 1999 | A |
5875300 | Kamel et al. | Feb 1999 | A |
5892913 | Adiga et al. | Apr 1999 | A |
5892915 | Duso et al. | Apr 1999 | A |
5923840 | Desnoyers et al. | Jul 1999 | A |
5933835 | Adams et al. | Aug 1999 | A |
5933837 | Kung | Aug 1999 | A |
5948062 | Tzelnic et al. | Sep 1999 | A |
5956716 | Kenner et al. | Sep 1999 | A |
5987621 | Duso et al. | Nov 1999 | A |
6003030 | Kenner et al. | Dec 1999 | A |
6011881 | Moslehi et al. | Jan 2000 | A |
6016509 | Dedrick | Jan 2000 | A |
6016512 | Huitema | Jan 2000 | A |
6023470 | Lee et al. | Feb 2000 | A |
6026452 | Pitts | Feb 2000 | A |
6035412 | Tamer et al. | Mar 2000 | A |
6061504 | Tzelnic et al. | May 2000 | A |
6067545 | Wolff | May 2000 | A |
6070191 | Narendran et al. | May 2000 | A |
6078960 | Ballard | Jun 2000 | A |
6085193 | Malkin et al. | Jul 2000 | A |
6098096 | Tsirgotis et al. | Aug 2000 | A |
6108703 | Leighton et al. | Aug 2000 | A |
6112239 | Kenner et al. | Aug 2000 | A |
6112249 | Bader et al. | Aug 2000 | A |
6115752 | Chauhan | Sep 2000 | A |
6122752 | Farah | Sep 2000 | A |
6134673 | Chrabaszcz | Oct 2000 | A |
6151632 | Chaddha et al. | Nov 2000 | A |
6161008 | Lee et al. | Dec 2000 | A |
6178445 | Dawkins et al. | Jan 2001 | B1 |
6195680 | Goldszmidt et al. | Feb 2001 | B1 |
6216051 | Hager et al. | Apr 2001 | B1 |
6223206 | Dan et al. | Apr 2001 | B1 |
6230200 | Forecast et al. | May 2001 | B1 |
6233607 | Taylor et al. | May 2001 | B1 |
6233618 | Shannon | May 2001 | B1 |
6233623 | Jeffords et al. | May 2001 | B1 |
6240462 | Agraharam et al. | May 2001 | B1 |
6256634 | Moshaiov et al. | Jul 2001 | B1 |
6266335 | Bhaskaran | Jul 2001 | B1 |
6298376 | Rosner et al. | Oct 2001 | B1 |
6298455 | Knapman et al. | Oct 2001 | B1 |
6301711 | Nusbickel | Oct 2001 | B1 |
6305019 | Dyer et al. | Oct 2001 | B1 |
6317787 | Boyd et al. | Nov 2001 | B1 |
6321252 | Bhola et al. | Nov 2001 | B1 |
6324582 | Sridhar et al. | Nov 2001 | B1 |
6330250 | Curry et al. | Dec 2001 | B1 |
6332157 | Mighdoll et al. | Dec 2001 | B1 |
6345294 | O'Tool et al. | Feb 2002 | B1 |
6351775 | Yu et al. | Feb 2002 | B1 |
6351776 | O'Brien et al. | Feb 2002 | B1 |
6356916 | Yamatari et al. | Mar 2002 | B1 |
6363497 | Chrabaszcz | Mar 2002 | B1 |
6370571 | Medin, Jr. | Apr 2002 | B1 |
6378129 | Zetts | Apr 2002 | B1 |
6381627 | Kwan et al. | Apr 2002 | B1 |
6385690 | Iida et al. | May 2002 | B1 |
6389462 | Cohen et al. | May 2002 | B1 |
6408407 | Sadler | Jun 2002 | B1 |
6415368 | Glance et al. | Jul 2002 | B1 |
6421714 | Rai et al. | Jul 2002 | B1 |
6427163 | Arendt et al. | Jul 2002 | B1 |
6438595 | Blumenau et al. | Aug 2002 | B1 |
6442588 | Clarke et al. | Aug 2002 | B1 |
6445784 | Uppaluru et al. | Sep 2002 | B2 |
6446224 | Chang et al. | Sep 2002 | B1 |
6457011 | Brace et al. | Sep 2002 | B1 |
6466949 | Yang et al. | Oct 2002 | B2 |
6466980 | Lumelsky et al. | Oct 2002 | B1 |
6484143 | Swildens et al. | Nov 2002 | B1 |
6487555 | Bharat et al. | Nov 2002 | B1 |
6502125 | Kenner et al. | Dec 2002 | B1 |
6502205 | Yanai et al. | Dec 2002 | B1 |
6516350 | Lumelsky et al. | Feb 2003 | B1 |
6538996 | West et al. | Mar 2003 | B1 |
6539381 | Prasad et al. | Mar 2003 | B1 |
6564380 | Murphy | May 2003 | B1 |
6598071 | Hayashi et al. | Jul 2003 | B1 |
6604117 | Lim et al. | Aug 2003 | B2 |
6697806 | Cook | Feb 2004 | B1 |
6732186 | Hebert | May 2004 | B1 |
6735717 | Rostowfske et al. | May 2004 | B1 |
6779034 | Mundy et al. | Aug 2004 | B1 |
6799221 | Kenner et al. | Sep 2004 | B1 |
6804703 | Allen et al. | Oct 2004 | B1 |
6816904 | Ludwig et al. | Nov 2004 | B1 |
6823348 | Benayoun et al. | Nov 2004 | B2 |
6920454 | Chan | Jul 2005 | B1 |
6959368 | St. Pierre et al. | Oct 2005 | B1 |
6970913 | Albert et al. | Nov 2005 | B1 |
6983317 | Bishop et al. | Jan 2006 | B1 |
7013322 | Lahr | Mar 2006 | B2 |
7111052 | Cook | Sep 2006 | B1 |
20010044851 | Rothman et al. | Nov 2001 | A1 |
20020007494 | Hodge | Jan 2002 | A1 |
20030055967 | Worley | Mar 2003 | A1 |
Number | Date | Country |
---|---|---|
0 649 121 | Oct 1994 | EP |
0 651 554 | Oct 1994 | EP |
WO 9742582 | Nov 1997 | WO |
WO9742582 | Nov 1997 | WO |
WO 9859486 | Dec 1998 | WO |
WO 9948246 | Sep 1999 | WO |
WW 9948246 | Sep 1999 | WO |