TITLE OF THE INVENTION SYSTEM AND METHOD FOR CONVEYING STREAMING DATA
CROSS REFERENCE TO RELATED APPLICATIONS
This application claims priority of U.S. Provisional Application No. 60/163,153, filed November 2, 1999.
STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
N/A
BACKGROUND OF THE INVENTION Streaming is a technique for transferring large quantities of data such that the data can be processed by a receiving node as a steady and continuous stream. With streaming, a client application, browser or plug-in can start displaying the received portions of data before the entire file has been received. Streaming is achieved through the use of a standard format for various types of data. The receiving node must be capable of translating or decoding the received data from the streaming format into its original format.
Various network elements can act as the source of the streaming data. For instance, a networked server may have the data stored or cached in local memory. In this case, the data is ready to be conveyed to the receiving node over a high-bandwidth network connection upon demand. Node, in this context, refers to any network- connected device. In another instance, another network- connected node such as a workstation may source the
streaming data. In this case, the transmitting node provides an encoding function in order to format the data to be streamed as required. A dedicated server having a high bandwidth network connection is then required to distribute the encoded data.
In between the transmitting node and the receiving node in typical network configurations is a server. The server is addressed by the receiving node(s) and allocates the necessary bandwidth for retransmission of the streaming data from the transmitting node based upon the request from the receiving node(s) . The server may also provide buffering or caching for facilitating the transfer of streaming data to receiving nodes of varying processing speeds and having connections to the server of varying capacities. The streaming data server is typically configured manually by personnel acting in response to requests for the data from receiving nodes. Because this manual configuration function takes place at one targeted server, the transmitting node and receiving node(s) must be connected to this particular server, directly or indirectly, regardless of the physical distance between nodes and the server. Also, the transmitting and receiving nodes must be connected to this targeted server regardless of the bandwidth capacity of the server. If over-subscription to a particular stream occurs, denial of service to one or more receiving nodes must result.
Networks of streaming data servers have also been proposed. Highly trafficked web sites such as YAHOO! (Yahoo! Inc.) utilize a dense network of servers to minimize the physical distance between end-users and the
nearest server. Each server in the network maintains a cache of frequently requested, on-demand data in order to minimize the traffic through the network which would otherwise be experienced if all data requests were handled by a single server. Thus, cache updates to all of the distributed servers can be scheduled to avoid bandwidth conflicts in the network. Such scheduling requires some form of centralized intelligence. Further, such a model cannot be employed for real time streaming data since the data cannot be cached ahead of time. If a server is added to or removed from such a network, a centralized control module must be aware of the occurrence in order to maintain network performance.
Certain server networks have employed the capacity to recognize the geographic location of network nodes in order to more efficiently utilize network bandwidth in handling traffic to and from nodes. For instance, a distributed database may contain information for correlating an IP address to a server' s geographic location. Such information may then be employed in a dense network such as described above for more efficiently delivering cached data.
True peer-to-peer networks have not been employed for distributing streaming data. Distributed databases such as NAPSTER (Napster, Inc.) utilize a network of workstations as a collective repository of recordings, yet require some form of centralized intelligence for maintaining a database of node addresses and contents. Similarly, Search for Extra Terrestrial Intelligence (SETI) researchers employ idle CPU cycles on volunteers' home computers in order to process blocks of data. Such
distributed processing still requires a centralized coordination of effort.
Network servers are currently employing a limited form of neighbor awareness to the extent that one server may have address tables of neighboring networked servers. Yet such awareness has not included bandwidth utilization information for neighboring servers or the distributed intelligence for requesting additional resources or for redirecting data flow based on such information. In addition, networked servers have not embodied the distributed intelligence necessary to proactively establish fail-over contingencies with respect to neighboring network assets.
Certain products have been employed in order to bring various legacy servers and networks closer to providing decentralized, peer-to-peer streaming data networks. However, such products have essentially added a higher control layer over the legacy layer, the control layer representing a central focal point for defining network behavior and scheduling.
Thus, the prior art has failed to provide a true peer-to-peer server network capable of intelligently and automatically employing geographical location data and neighbor state awareness for autonomous bandwidth allocation, data routing, and definition of fail-over contingencies .
Another deficiency associated with the prior art involves the facilities necessary to act as the source of streaming data. There are presently a number of software encoders which facilitate the conveyance of streaming data. Examples include the "Real" family of encoders of
RealNetworks, Inc., the Sorenson Codec employed in QUICKTIME products of Apple Computer, Inc., and the Active Stream Format (*.asf) of Windows Media (Microsoft Corporation) . However, the manual configuration and use of such encoders are often beyond the capabilities of non-specialist computer users, or may present a learning curve which acts as a disincentive to their use. While a command script may be used for configuring such an encoder, no provision is provided for remote or dynamic reconfiguration, except by a skilled user. Further, manual configuration of such encoders typically requires the user to know the specific address of the server which is to act as the distribution point for requesting nodes which wish to receive the streaming data. Web browser programs have enabled computer novices to quickly achieve a moderate level of proficiency in sending and receiving data without in-depth knowledge of the infrastructure of the Internet. Once a casual computer user has become familiar with a web browser, access is provided to an increasing realm of tools. For instance, email programs were previously, and in many cases still are, discrete from web browsers. Thus, a user had to have a properly configured email program resident on their workstation, and had to develop a certain level of proficiency with its operation. Subsequently, web-based email services such as HOTMAIL (HoTMail Corporation) became prevalent, enabling users to access email services through a single, familiar interface - the web browser. Browser programs have also enabled the transparent guiding of users to servers of interest through embedded links.
However, the ease of use of web browsers and similar World Wide Web interface programs has heretofore been segregated from operations involving the sourcing of multimedia data in streaming format. The receipt of such streaming data has become more commonplace, but typically limited to the context of a receiving node accessing a single server which either sources the requested data stream, or which is capable of redirecting it from a discrete source. Thus, a more convenient and efficient means for sourcing streaming data has been absent in the art, as has been the means for providing the efficient dissemination of such data.
BRIEF SUMMARY OF THE INVENTION
A system and method for enabling the efficient conveyance of streaming data are disclosed. The computing resources which connect a transmitting node to one or more receiving nodes for the transfer of streaming data operate in a true peer-to-peer configuration, enabling efficient and flexible routing and delivery of streaming data regardless of the number of nodes transmitting streaming data to the peer-to-peer network, the total number of nodes receiving streaming data from various points in the peer-to-peer network, and the number of nodes receiving any one of the individual data streams. In the simplest terms, the peer-to-peer network includes intercommunicating servers each of which are provided with the capacity to autonomously analyze the bandwidth required to support each incoming data stream, to evaluate its own available resources and those of its
neighboring servers, to configure the connection (s) between transmitting node(s), individual server (s) in the server network, and receiving node(s), and to distribute data streams to the receiving node(s). Various factors are automatically accounted for in defining the appropriate configuration, including geographic location, number of receiving nodes requesting access to a data stream, available bandwidth of the respective and neighboring servers, characteristics of the physical data pathways interconnecting these elements, and the number and characteristics of other active data streams being serviced by the network, among others. Of particular utility is the automated configurability of the connection between one or more transmitting nodes, server network assets, and one or more receiving nodes; significant efficiencies in terms of cost, bandwidth, minimization of delay and data loss, and time needed to achieve configuration optimization are achieved. From the perspective of a user, the disclosed system and method enable the transmission of streaming data through the use of a common web browser, an interface which is increasingly familiar to average computer users. This facility is enabled through the use of software modules which may be downloaded via the Internet or any other suitable means. When the module is installed in the user' s computer, it becomes embedded in the user' s web browser. The module is written to take advantage of an application programming interface ("API" ) for a particular streaming data encoder, such that the encoder may be configured and controlled through the use of the
downloaded module. Because the module is scriptable by programming languages such as JAVASCRIPT (Sun Microsystems, Inc.) or VISUAL BASIC Script (Microsoft Corporation) , which are particularly suited to use in dynamic web design, the installed module may be used locally or remotely to configure and control the resident encoder.
In the simplest case, a user may use a web browser program to access a particular web site which offers the software module for download. Once installed in the user' s computer, the encoder resident in the user' s computer is configured according to pre-established or dynamically defined parameters. Thus, less-experienced computer users may have the means for transmitting streaming data configured according to default parameters without having to become proficient in the use of such specialized encoders. Means may also be provided for enabling a more experienced user to customize the performance of the resident encoder as desired or required.
Providing a web-based solution to streaming data distribution eliminates the need for dedicated streaming data servers, software, and expertise. Of significance for corporate users, the conveyance of streaming data is off-loaded from the corporate intranet onto the presently disclosed network, thus reducing the bandwidth requirements of the intranet. No additional investment in internal resources is required as an entity' s utilization of streaming data increases.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS These and other advantages may be more fully understood by referring to the following description and accompanying drawings, of which: Fig. 1 is a schematic representation of a prior art computer network enabling the distribution of streaming data;
Fig. 2 is a schematic representation of a computer network according to the present invention for enabling the distribution of streaming data;
Fig. 3 is a schematic representation of an individual network node and software modules installed therein according to the prior art;
Fig. 4 is a schematic representation of an individual network node and software modules installed therein according to the presently disclosed invention; and
Fig. 5 is a variant of the network node of Fig. 4 including a communications module.
DETAILED DESCRIPTION OF THE INVENTION
In the prior art, the conveyance of streaming data from a networked transmitting node (Nτ) to plural networked receiving nodes (NR) has typically been realized through an attended, networked server, as illustrated in
Fig. 1. Specialized software in the transmitting node is required to appropriately format the data to be streamed.
As should be obvious to one skilled in the art, the representation of Fig. 1 is a simplified representation. The transmitting node may also be a receiving node.
Further, there are likely to be one or more intermediate
servers between the transmitting node and the attended server, as well as between the attended server and each of the receiving nodes. In fact, one of the principle deficiencies with the prior art lies in the requirement that the transmitting node and receiving nodes access this one server, regardless of their respective physical locations. Because a single server is responsible for controlling the distribution of the streaming data, it is not possible for an oversubscribed server to deny service; there is no alternate source for the service. Also, because servers employed for distributing streaming data have heretofore been unable to automatically coordinate the distribution of server resources for data distribution, the server of the prior art has been attended by skilled network administration personnel, at great expense. Even with relatively recent innovations such as the centralized awareness of distributed network loads, one or more personnel must be present to allocate resources for the distribution of streaming data, particularly for highly subscribed-to streams.
With regard to Fig. 2, the presently disclosed system includes a network of servers, each of which being capable of distributing or redistributing streaming data. The networked servers are also capable of automatically configuring themselves to provide the most efficient arrangement for the receipt and dissemination of streaming data. In a preferred embodiment, the network of streaming data servers is addressable on the Internet (as illustrated in Fig. 2), though in an alternative embodiment, they may comprise a discrete network unto themselves .
As will be described subsequently, another key feature of the presently disclosed system is the ability of a user to employ a common web browser as a means for sourcing streaming data. Thus, in Fig. 2, a transmitting browser (Bτ) is capable of sending streaming data to the Internet and thereby to the networked streaming data servers. The most efficient configuration for receiving and redistributing the streaming data is then established by the server network based on factors including physical location of the data source and the various requesting nodes, the bandwidth required to service this and other data streams, and the current network state, among others. Such automated flexibility enables the accommodation of various data distribution topologies, singly or in combination: one-to-one; one-to-many; many- to-one; and many-to-many. Users may then employ their web browsers (BR) in order to gain access to the streaming data for decoding and presentation at each user's computer. As before, it should be understood that Fig. 2 is simplified and should not be taken as restricting the scope of the present system.
The networked streaming data servers are configured and programmed to function in a true peer-to-peer mode. To achieve this mode of operation, each constituent server of the network maintains awareness of the state of its neighboring servers as well of itself. Thus, each server maintains a database such as MYSQL (T.C.X DataKonsult AB) in which is identified all of the servers in the network (including itself) , the total and available bandwidth of each server, the physical location of each server and the connectivity between them, a
record of all previously scheduled streaming data traffic, and a set of contingency connections for rerouting streaming data traffic in the event one or more of the neighboring servers goes or is taken off-line. The establishment and maintenance of this database is achieved in a first embodiment through exchanges with neighboring servers which occur upon the recognition of certain triggering events. Such events include the receipt by one constituent server of a data stream to be distributed, and the receipt of a communication from a user wishing to reserve bandwidth for a future broadcast of streaming data. Thus, upon initialization, a particular server sends a polling signal out each of its ports. In this case, the initialization is regarded as a triggering event. If no response is received, an indication is recorded in the database that there is no neighboring server connected thereto. On the other hand, if a response is received, the server creates a entry in the database file correlated to that port. Because each server is pre-configured according to which bus adapter is located at each port, the server has an indication of the theoretical bandwidth available at each port. The respective entry is then populated with data which characterizes the replying server. Thus, the network of streaming data servers is rapidly scalable.
In an alternative embodiment, or further still in combination with the foregoing embodiment in which server data is updated upon the occurrence of triggering events, polling for the purpose of database updating may occur on a periodic basis. The particular period employed may be static and pre-selected according to an expected level of
traffic, or may be adjusted dynamically based upon empirical determinations by each respective server of the current frequency of server state change.
Running within each constituent server in the streaming data server network is a control software program or module which is responsible for the periodic exchange of network and server state information with neighboring servers. Each server employs a substantially identical control module such that a true peer-to-peer network is realized. The control module is responsive to the collected data in defining the most efficient distribution of streaming data. Factors analyzed by the control module include data rate for each stream handled by the respective server, number of requesting nodes directly connected to the respective server, and the physical location of each transmitting and requesting node as compared to the physical location of the respective server. The flexibility of such a peer-to- peer network control module enables the utilization of plural servers to distribute a single data stream in the event one server would have inadequate bandwidth to support distribution of the stream by itself.
In addition, the control module operating in each server is responsible for analyzing data from neighboring network assets and data pertaining to scheduled and live data transmission through the respective server in order to define contingency plans in the event one or more neighboring servers goes off-line. Such an occurrence may be the result of hardware failure or malicious acts of third parties such as denial of service attacks. These plans include how the server would route streaming
data in the event one or more neighboring servers became unavailable .
The control module, in one embodiment, is also capable of providing redundant distribution of streaming data for critical data delivery. Thus, data may be routed through the streaming data network via more than one path, simultaneously, enabling a server connected to one or more requesting nodes to select the most appropriate stream. The network of streaming data servers is includes one or more memory assets to be employed as a cache. In one embodiment, these assets comprise network attached storage (NAS) which is easily scalable. The provision of storage on the streaming data network enables the network to respond to requests for on-demand data as well as for live streaming data. Caching is easily realized as a result of a user request prior to the initiation of streaming data transmission to the server network. The control modules of the constituent servers define which data stream will be cached and which storage resources will be utilized for this purpose. Factors taken into consideration in making this determination include geographic location of the streaming data source, pre- subscribed receivers, and/or storage assets, characteristics of the streaming data, the status of traffic between individual servers and the storage assets, and/or the capacity of individual caches.
As previously discussed, an individual wishing to create and transmit streaming data with prior art technology has had to be proficient in the use of specialized software, referred to in Fig. 3 as a
streaming data encoder program. Not only has this required the user to have the ability to intelligently comprehend the bandwidth requirements of the data to be transmitted, but also the ability to properly address a server which is to act as the distribution point for the data to other users. While most computer users have become sufficiently proficient with web browser programs, the same cannot be said of such encoders.
In order to leverage the wide-spread familiarity with web browsers, the present system employs a hypertext markup language (HTML) software module or "plug-in" which is installed in a user's computer. This can be accomplished in a number of ways, such as "download" links embedded on web sites or through the distribution of software on physical media such as compact disks or diskettes. The procedures and requirements necessary for enabling the download of software modules from a web site are well-known in the art, as are the procedures for installing the modules in a target computer. Once downloaded to memory in a user's computer, the software module of the present invention is installed and "embedded" in one or more web browsers resident in the same computer. Embedding downloaded modules or plug-ins into browsers is also well-known in the art, and consequently a detailed discussion is not required here. The embedded module is "scriptable" or addressable through the use of an appropriate script language such as JAVASCRIPT (Sun Microsystems, Inc.) for the module. Thus, once the software module has been downloaded and installed, it can optionally be controlled through the use of commands transferred through a connection between
the user's web browser and one of the networked streaming data servers shown in Fig. 2.
The embedded software module is designed to take advantage of an application program interface (API) for a streaming data encoder resident in the user's computer memory. An API defines the means by which one software program can interface to another software program. Thus, through the use of an encoder's API, the downloaded module is capable of configuring and controlling the respective streaming data encoder. And, because the downloaded module is embedded in the user's web browser, configuration commands can be received through a web connection and conveyed to the encoder through the downloaded module. Alternatively, a user may use their web browser for configuring their own streaming data encoder, either manually or through the use of a predefined configuration file. Further still, the streaming data encoder parameters may be adjusted directly through the encoder's own user interface. Streaming data is conveyed to the servers of the streaming data server network in the particular format native to the encoder used. For instance, if Microsoft's Windows Media Encoder is employed to format the streaming data, the data is provided in Active Stream Format with a file extension of "*.asf". Other encoders would produce data in their respective format. Thus, each server of the presently disclosed invention is capable of conveying the streaming data in its native format. Alternatively, each receiving server has the capacity to translate the received data in the encoder-specific format into another
format which may be specific to the servers of the streaming data server network now disclosed.
In a further embodiment of the presently disclosed invention illustrated in Fig. 5, a second software module, referred to as a communications module, is downloadable into a user' s computer for association with the user's browser and encoder. The communications module receives the streaming data output from the encoder and converts it into a format which is native to the servers of the streaming data server network of the present disclosure. Thus, all streaming data is in this native format from output of the transmitting node to each receiving node. The intermediate step in each receiving server of converting from encoder-specific format to server network-specific format is obviated, thus reducing the processing burden on the server and hastening the transfer of the streaming data through the server network. At the terminal end of the streaming data's path in the server network, the server network- specific format may be changed to whatever encoder format is required by the requesting node. The communications module may be realized in C++ or Java and may be capable of converting any predominant encoder format into the server network-specific format. This avoids the need to download a specific communications module for each encoder employed in the transmitting node.
These and other examples of the concepts of the invention illustrated above are intended by way of example and the actual scope of the invention is to be determined by the following claims.