In a client-server network adapted to provide streaming multimedia data such as 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.
Peer-to-peer networking solutions reduce or eliminate capacity deficiencies that are common in client/server network configurations. Peer-to-peer network technologies distribute processing and transmission demands among peer clients in the network. Thus, as a peer-to-peer network grows in size, so to does the processing and transmission capacity of the peer-to-peer network.
Client/server networks typically utilize sequence numbers to enable data receipt verification, proper ordering of received data, and the like. However, sequence numbers are not statically associated with content. For example, a file server may assign a sequence number to a particular data block of a file prior to transmitting the data block to a client. At another time, the file server may assign another sequence number to another instance of the same data block to be transmitted to another client. Thus, assignment of a sequence number by a file server provides an identification mechanism only for the transmitting and receiving entities and only for a single transmission/reception operation.
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 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 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 and do not address transmission capacity deficiencies of cluster 50.
Control server 231 may facilitate connection of new clients within network 200 and organize clients 210-217 that have joined network 200. Clients 210-217 may be implemented as data processing systems, such as personal computers, wired or wireless laptop computers, personal digital assistants, or other computational devices capable of network communications.
Source server 232 may be implemented as a server that stores or accesses multimedia content, such as video, audio, or the like, and transmits the data to one or more clients in network 200. For example, the multimedia content may be retrieved from a file that is accessed by source server 232 from a storage device 260. Alternatively, the multimedia content may be produced from, for example, audio/video production equipment 261 that is interfaced with source server 232. The multimedia content may comprise 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. The native formatted streaming content may be encapsulated in a network transport format that facilitates transmission of data among peer clients of network 200. Source server 232 may segment multimedia content into data blocks that are distributed within network 200. Various clients 210-217 may receive and store different data blocks of the multimedia content. In accordance with embodiments described herein, universal serial numbers re associated with data blocks that are distributed in peer-to-peer network 200 such that each instance of a data block that includes identical multimedia content shares a common sequence number associate therewith. In this manner, identification of a data block that stores particular content can be made based on the sequence number of the data block.
Control server 231 may maintain or generate a peer list 270 that includes connectivity information, such as a network address and port number, of respective peer clients that are connected within peer-to-peer network 200. When control server 231 generates peer list 270, connectivity information of source server 232 may be the only connectivity information included in peer list 270. A client joins peer-to-peer network 200 by first connecting with control server 231 and submitting a request for peer list 270. The control server returns peer list 270 to the requesting client, and the client joins network 200 by selecting one or more nodes having connectivity information included in peer list 270 and connecting with the selected nodes.
When a new client joins peer-to-peer network 200, control server 232 may add connectivity information of the newly joining client to peer list 270. In this manner, as additional clients join peer-to-peer network 200, the availability of peer clients with which subsequently joining clients may connect is increased. Connectivity information of source server 232 may be removed from peer list 270, for example when the number of clients connected within peer-to-peer network 200 reaches a pre-defined threshold. In this manner, the session load placed on source server 232 may be reduced. A client connected within peer-to-peer network 200 that desires multimedia content originally provided by source server 232 may submit a query for the multimedia content to peer clients with which the requesting client is connected. For example, the query may specify a range of data block sequence numbers. If no peer clients within network 200 have the requested multimedia content (or no peer clients within network 200 are available for delivery of the multimedia content to the requesting client), the requesting client may obtain the multimedia content from source server 232.
In accordance with embodiments described herein, a peer client that has cached multimedia content maintains or generates a sequence number scope list that specifies the sequence numbers of data blocks maintained by the client. The client may then transmit the sequence number scope list to other peer clients when a peer client establishes a connection with the client. In the illustrative example of
Network 200 may comprise a transient Internet network, and thus clients 210-217 and control server 231 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).
File 300 may be provided to clients from source server 232 (
Multimedia content, whether retrieved from a file or produced by audio/video production equipment or another source, may be segmented into data blocks for transmission in peer-to-peer network 200. In accordance with embodiments described herein, multimedia content data blocks having multimedia content are associated with a sequence number to facilitate distribution of multimedia content within peer-to-peer network 200.
One or more of data blocks 420A-420N may be received by a client and cached thereby for later transmission to other peer clients requesting the multimedia content. A client, upon receipt of one or more data blocks preferably generates or updates its sequence number scope list to accurately indicate the data blocks currently stored by the client. Peer clients may store different or common sets of data blocks 420A-420N. When a peer client connects with another peer client, the client with which the peer client has connected preferably transmits its sequence number scope list to the connecting client. Thus, a client may determine which data blocks are cached and available for download by examining the sequence numbers of data blocks stored by other clients.
Software configuration 600 may include an operating system 610, 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 610 may include a network stack 620 for effecting network communications. For example, network stack 620 may be implemented as a transmission control protocol/Internet protocol (TCP/IP) stack.
Software configuration 600 may include a peer-to-peer transport module 632 that comprises logic for self-administration of the peer-to-peer network structure. For example, peer-to-peer transport module 632 may provide self-adjusting functions of the peer client location in the peer-to-peer network topology. Additionally, transport module 632 may provide network transmission and reception functions for data streams. For example, transport module 632 may supply one or more data blocks, such as data blocks 410 and 420A-420N, formatted for delivery in network 200 to network stack 620 for transmission in the peer-to-peer network. Transport module 632 may maintain socket data of peer connections, retrieval functions of data cached by the client for transmission to another client, or other functions that facilitate the client downloading or uploading media data from and to other peer clients or network nodes. Transport module 632, or another suitable software module, may also be adapted to generate and update a sequence number scope list that indicates the sequence numbers of data blocks stored by the client in a file cache 636. Other software layers, such as a browser application, a media player application, or other applications, may be included in software configuration 600.
Various peer clients may obtain multimedia content from source server 232 or from other peer clients. A client desiring to download multimedia content may first establish a connection with control server 231 for submission of a request that specifies the multimedia content desired for download. Control server 231 may then interrogate a record, such as a database, of clients that have a portion or all of the desired multimedia content and identifies one or more clients that have cached data of the desired multimedia content. Connectivity information of one or more of any clients identified as possibly having the desired multimedia content (or a portion thereof) are returned to the requesting client in the form of peer list 270 of the identified peer clients. Preferably, the peer list includes connectivity information of the identified peer clients. The peer list may include connectivity information of source server 232. Inclusion of connectivity information of source server 232 in peer list 270 may be made in addition to, or in place of, connectivity information of peer clients of peer-to-peer network 200. In accordance with embodiments described herein, a peer client may select one or more nodes, such as peer clients or source server 232, from the received peer list and establish a connection with the selected nodes. The selected nodes, in turn, transmit a sequence number scope list to the peer client. The peer client may then evaluate the received sequence number scope lists and select one or more of the nodes to submit a request for multimedia content therefrom. The client may then generate one or more requests that respectively specify one or more data blocks by identifying the data blocks sequence numbers. The request may specify a particular data block by indicating the requested data block's sequence number. The request may also specify a series of data blocks by indicating a range of data blocks' sequence numbers. The request is then transmitted to one of the selected nodes. The client may then download the desired data blocks from the node(s) with which the client is connected.
The source server processing routine begins by reading or otherwise receiving a multimedia stream or file (step 802). For example, a streaming file may be retrieved by source server 232 from storage 260. The source server may then initialize a sequence number variable i (step 804). The source server then segments a portion of the multimedia stream (step 806), for example by dividing or otherwise parsing a portion of the content from the multimedia stream. The source server may then form a data block that includes the segmented portion of the multimedia stream (step 808). The sequence number defined by the sequence number variable, i, is then associated with the data block (step 810). The data block is then cached by the source server (step 812). An evaluation may then be made by the source server to determine if additional content remains in the multimedia stream (step 814). In the event that the multimedia stream includes additional content, the source server processing routine may increment the sequence number variable (step 816) and then return to step 806 to segment another portion of the content from the multimedia stream. In the event that it is determined at step 814 that no additional content remains in the multimedia stream, the source server may store a sequence number scope that identifies the sequence numbers of data blocks formed from the multimedia stream that are cached (step 818). The source server processing routine cycle may then end (step 820).
The client processing routine begins by obtaining a peer list that identifies connectivity information of nodes that the client may connect with for obtaining multimedia content (step 902). For example, the peer list may be transmitted to the client upon establishment of a connection between the client and control server 231 shown in
The processing routine begins upon receipt of a connection request of a client (step 1002). A connection is then established with the requesting client (step 1004). The processing routine then transmits a sequence number scope list to the client that has established a connection (step 1006), and the processing routine may then end (step 1008). The processing routine depicted in
The data block distribution processing routine begins upon receipt of a request for data blocks from a client (step 1102), such as a peer client of network 200 shown in
As described, embodiments provide a method and computer-readable medium for distribution and storage of multimedia content in a peer-to-peer network. A source server segments a multimedia file or content into data blocks and associates a respective sequence number with each data block. The data blocks are cached by the source server and the source server generates or updates an existing sequence number scope list that identifies the sequence numbers of data blocks stored by the source server. The source server transmits the sequence number scope list in response to establishment of a connection with the peer client. Peer clients may obtain data blocks from the source server by specifying sequence numbers of desired data blocks. On receipt of data blocks, a peer client may cache the received data blocks and update or generate a sequence number scope list that identifies the sequence number of respective data blocks stored by the peer client. The peer client may then upload data blocks to other peer clients that request the data blocks by specifying the sequence numbers of desired data blocks. In this manner, the sequence numbers of data blocks provide a universal identification of multimedia content in a 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.
Number | Date | Country | |
---|---|---|---|
60662131 | Mar 2005 | US |