In a client-server network adapted to provide streaming multimedia services such as streaming video or audio, many clients may participate in a video streaming session. The processing capacity of a media server in such a network is limited. If the number of clients connected to the media server exceeds the processing or transmission capacity of the server, the media server may be unable to provide a high quality of service to the clients, crash, discontinue service to clients, or refuse service or connection to clients.
Service problems associated with excessive loads placed on a streaming source in a client-server network have conventionally been addressed by deploying multiple servers in the client-server network. For example, multiple servers may be deployed in a cluster mode such that connecting clients are unaware of the multiple servers providing the streaming content. However, cluster mode server configurations can only provide improved streaming service quality from a processing performance standpoint. Problematically, streaming service deficiencies related to transmission capacity are not addressed by cluster mode solutions in a client-server network.
Aspects of the present disclosure are best understood from the following detailed description when read with the accompanying figures, in which:
It is to be understood that the following disclosure provides many different embodiments, or examples, for implementing different features of various embodiments. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting. In addition, the present disclosure may repeat reference numerals and/or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments and/or configurations discussed.
Each of content servers 30-32 may provide streaming service processing for a finite number of clients, and thus the client service capacity of cluster 50 is limited to the aggregate service capacity of content servers 30-32. If the demand placed on cluster 50 becomes too large, the streaming service quality provided to clients 20-24 may be degraded or one or more of clients 20-24 may be disconnected from cluster 50. Conventional solutions for addressing excessive loads placed on cluster 50 generally include expanding the processing capacity of cluster 50, for example by adding additional content servers to cluster 50, upgrading the capacity of existing content servers, or by other mechanisms. Such system reconfigurations are costly due to both hardware and labor expenses.
Streaming source 232 may be implemented as a server that stores or accesses streaming content, such as video, audio, or the like, and streams the data to one or more clients in network 200. For example, the streaming content may be retrieved from a file that is accessed by streaming source 232 from a storage device 260. Alternatively, the streaming content may be produced from, for example, audio/video production equipment 261 that is provided to streaming source 232. The streaming content comprises data encoded in a native streaming format, such as RealAudio formatted files, RealVideo formatted files, ASF, or another streaming format that may be processed by a streaming media application, such as RealPlayer, Windows Media Player, or another streaming media application.
Network 200 may comprise a transient Internet network, and thus clients 210-217, control server 231, and streaming source 232 may use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. Alternatively, network 200 may be implemented in any number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
Returning again to
In accordance with embodiments described herein, a peer client that receives streaming content from streaming source 232 may be configured to distribute the streaming content to other peer clients, for example on receipt of a request for the streaming content from a peer client, in the peer-to-peer transport format. Additionally, a peer client that has received the streaming content may be configured to distribute the streaming content to nodes external to the peer-to-peer network in the native streaming content format. A peer client configured for distribution of streaming content in the native format of the streaming content to a client external to the peer-to-peer network is referred to herein as a replicated streaming source (or simply a replicated source). In this manner, the streaming content may be dynamically replicated within peer-to-peer network 200 in a manner that reduces or eliminates the load placed on streaming source 232.
As described above, streaming source 232 distributes streaming content to peer clients by first encapsulating the streaming content into a peer-to-peer transport format and transmitting the encapsulated streaming content to peer clients. In accordance with embodiments described herein, a client receiving streaming content in the peer-to-peer transport format from streaming source 232 may function as a replicated streaming source by reconstructing the encapsulated streaming content received from streaming source 232 into the native streaming format.
Streaming content is downloaded from streaming source 432 by one or more of replicated streaming sources 410-413. For example, replicated streaming source 410 may connect with streaming source 432 and download streaming content encapsulated according to the peer-to-peer transport format described above in
The streaming content received and stored by replicated streaming sources 410-413 may comprise common or different portions of the streaming content maintained and distributed by streaming source 432. In addition to facilitating distribution of streaming content within peer-to-peer network 400, replicated streaming sources 411-413 may reconstruct saved streaming content into the native streaming format for delivery to clients external to peer-to-peer network 400. For example, a replicated streaming source may extract streaming content data unit 321 from saved peer-to-peer formatted data packets 300., The extracted streaming content may then be streamed to clients 440-446 that are external to peer-to-peer network 400 in the native format of the streaming content. For example, client 441 may establish a connection with a replicated streaming source, e.g., streaming source 410 implemented as a peer client, to obtain streaming content in the native format thereof from the replicated streaming source. For example, peer clients configured as replicated streaming sources 410-413 may provide streaming content to external clients in the real time streaming protocol (RTSP), Microsoft Media Services (MMS) protocol, or the like. To this end, streaming sources 410-413 may include a streaming protocol server implemented as a set of computer-executable instructions to facilitate streaming of content to clients external to peer-to-peer network 400. Streaming sources 410-413 may exchange streaming content with one another in a peer-to-peer mode and thus may receive a portion of streaming content from one or more peer clients. Streaming content received by streaming sources 410-413 may be reconstructed by the receiving peer client and saved to a cache or file storage, for example in respective storage devices 450-453.
Software configuration 500 may include an operating system 510, such as a Windows operating system manufactured by Microsoft Corporation of Redmond, Wash., an OS/2 operating system manufactured by International Business Machines Corporation of Armonk, N.Y., or the like. Operating system 510 may include a network stack 520 for effecting network communications. For example, network stack 520 may be implemented as a transmission control protocol/Internet protocol (TCP/IP) stack. Additionally, software configuration 500 may include a streaming data segmentation module 532 that is adapted to format streaming content in a peer-to-peer transmission format for transmission across a peer-to-peer network by way of peer clients operating in conformity with the peer-to-peer transmission format. For example, segmentation module 532 may segment, concatenate, or otherwise assemble one (or a portion thereof) or more frames of streaming content in the native streaming format thereof, and thereafter encapsulate the segmented frames into a sequence of one or more peer-to-peer transport formatted packets. Segmentation module 532 may interface with storage device 260 or audio/video production equipment 261 shown in
Software configuration 500 may include a peer-to-peer transport module 534 that comprises logic for self-administration of the peer-to-peer network structure. For example, peer-to-peer transport module 534 may provide self-adjusting functions of the peer client location in the peer-to-peer network topology. Additionally, transport module 534 provides network transmission functions for peer-to-peer transport formatted data streams. For example, transport module 534 may supply peer-to-peer transport formatted packets to network stack 520 for transmission in the peer-to-peer network.
Software configuration 600 may include an operating system 610. Operating system 610 may include a network stack 620 for effecting network communications. Additionally, software configuration 600 may include a peer-to-peer transport module 634 configured similar to peer-to-peer transport module 534 described above with reference to
Software configuration 600 may also include a protocol reconstruction module 636 for producing streaming content in the native streaming format from streaming data received in the peer-to-peer transport format. Reconstruction module 636 provides functionality for reorganizing data received from peer-to-peer transport module 634. Reconstruction module 436 facilitates playback of streaming content received in a peer-to-peer transport format. For example, transport module 634 may interface with reconstruction module 636 and pass streaming content encapsulated in a peer-to-peer transport format thereto. Reconstruction module 636 may process the peer-to-peer transport formatted data received from the peer-to-peer transport module 634 and retrieve or otherwise extract streaming content therefrom. Reconstruction module 636 then assembles the extracted streaming content into a streaming content data structure, such as a file or sequence of one or more data blocks, in the native streaming format that may be interpreted by a streaming application adapted for playback of streaming content in the streaming content native format. The streaming content reconstructed in the native streaming format may then be cached or otherwise stored by reconstruction module 636. Reconstruction module provides streaming content server functionality and may pass the streaming content that is reconstructed in the native streaming format to a streaming application adapted for playback of the streaming content in the native streaming content format.
Additionally, protocol reconstruction module 636 is adapted to provide streaming content server functions for streaming the reconstructed streaming content to clients external to the peer-to-peer network, such as one or more of clients 440-446 shown in
The control server may evaluate the number of clients having connectivity information included in the peer list to determine if the number of clients in the peer-to-peer network equals or exceeds a pre-defined threshold (step 808). The threshold defines a minimum number of clients that are to be included in the peer-to-peer network prior to the control server removing connectivity information of the streaming source from the peer list. In this manner, the connectivity information of the streaming source is distributed with the connectivity information of peer clients until the peer-to-peer network includes a sufficient number (as defined by the threshold) of clients to provide for the streaming content without additional distribution of the streaming source's connectivity information. In the event the number of clients in the peer list equals or exceeds the threshold, the control server removes connectivity information of the streaming source from the peer list (step 810), and then conveys the peer list to the requesting client (step 812). In the event that the control server determines the number of clients in the peer list does not equal or exceed the threshold at step 808, the control server proceeds to convey the peer list (including connectivity information of the streaming source) to the requesting client according to step 812. Control server processing then ends according to step 814. In this manner, clients joining the peer-to-peer network are provided connectivity information of the streaming source until the peer-to-peer network has grown to a sufficient size in which the connectivity information of the streaming source may no longer be distributed to newly joining clients. Thus, the load on the streaming source may be reduced when the peer-to-peer network has grown to a size that equals or exceeds the threshold.
As described, embodiments provide mechanisms for replicating streaming content in a peer-to-peer network. Clients may access streaming content provided by a streaming source by way of a connection with the streaming source or a replicated source implemented as a peer client. A peer client receives streaming content encapsulated in one or more packets or data blocks formatted according to a transport format of the peer-to-peer network. The peer client extracts the streaming content from the one or more data blocks and reconstructs the streaming content in a native format of the streaming content. For example, the peer client may assemble the streaming content into a native format of the streaming content by concatenating extracted streaming content data units together. The client then stores the streaming content in the native format and may convey the streaming content in the native format to a client that is external to the peer-to-peer network.
Although embodiments of the present disclosure have been described in detail, those skilled in the art should understand that they may make various changes, substitutions and alterations herein without departing from the spirit and scope of the present disclosure. Accordingly, all such changes, substitutions and alterations are intended to be included within the scope of the present disclosure as defined in the following claims.
This patent application claims the benefit of provisional U.S. patent application Ser. No. 60/662,131, filed Mar. 15, 2005. Additionally, this application is also related to commonly assigned U.S. patent application No.______ , filed concurrently herewith, Attorney Docket No. 33189.6, entitled “SYSTEM AND METHOD FOR ERROR RECOVERY FOR MASSIVE EXIT IN PEER-TO-PEER NETWORK,” which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60662131 | Mar 2005 | US |