An all-software data server has been invented to enable any set of connected application programs to create or gain access to live data streams. (As used here, "connected" signifies running on either the same computer or on different computers and communicating via the Internet, an intranet, or another network.) In combination with seamless archiving and retrieval of historical data, the invention offers new opportunities for distributed computing.

The Ring-Buffered Network Bus (RBNB!") is an all-Java-software data server that makes the network appear to be, simultaneously, a shared-memory server, a data-acquisition system, and a distributed data base. It extends the Transmission Control Protocol/Internet Protocol (TCP/IP) sockets subprotocol by incorporating a frame/channel management scheme and the ability to split and merge data streams on a channel-by-channel basis. Because streams can be routed or mirrored to other RBNB servers, configurations can readily be scaled for reasons of performance, redundancy, and security.

This Simple RBNB Configuration could be regarded as representing a potential baseline architecture for such enterprise-scale applications as merging data streams from multiple sources or merging sensor data with data of other types (e.g., processed results, multimedia, or any other associated information).

Core RBNB architectural components are software objects that manage streams (frames) of data. A frame is a time-stamped unit that contains one or more channels of data, each channel containing one or more data elements. Successive frames can contain fixed or variable sets of channels.

An essential part of the RBNB is a ring buffer object (RBO). For input of data from a particular source, an RBO acts as both a data server and an archive manager. An RBO manages multiple frames in a ring buffer that effects a seamless transition from RAM to disk. The "ring" of an RBO is a circular buffer that, if necessary, writes over oldest data. Users can add descriptive header information to support a variety of downstream data-management and -processing schemes.

For output of data, a network bus object (NBO) manages requests for data and sends the selected channels. The output data stream is a new stream that contains frame and channel header information from one or more originating RBO sources. The user or the data sink can request individual frames and time slices, or can request that the data be streamed continuously for higher performance.

The core RBNB routes data as structured blocks of bytes; by design, the RBNB does not respond to or alter the intrinsic data format. This feature provides optimal flexibility and efficiency, but leaves the job of "understanding" data to the associated sources and sinks. When it is preferable to increase compatibility among otherwise incompatible sources and sinks, "plug-in" format converters can be invoked. A format converter (FC) processes the source data, creating the desired stream for the data sink. Examples of format conversion include simple units conversion, decompression, decryption, demultiplexing, or any other operation on the data. Channels of information created by FCs are indistinguishable from other channel types. Format conversions are independent processes that are executed locally or on remote computers.

The figure shows a simple RBNB configuration that involves three computers on a network (flyscan 1, flyscan 2, and flyscan 3). On each computer, an RBNB server accepts requests from data sources and data sinks. On each computer, a source process prepares three signals and sends them to an RBO in the local RBNB server. Mirrors are set up from each RBO to two remote RBNB servers, providing local access to all nine channels from any of the three servers. In the figure, a graphical view of connections is provided via a management utility called "rbnbAdmin." Access to the data is demonstrated on each computer via a strip-chart utility program, called "rbnbPlot," also running on each computer.

The performance of the all-Java data server is impressive. Aggregate throughput on modern personal computers and entry-level workstations exceeds 12MB/s to random-access memory (RAM) and 8 MB/s to disk. Performance continues to improve as computer technology and Java both mature.

This work was done by Lawrence C. Freudinger of Dryden Flight Research Center and Matthew J. Miller, Ian A. Brown, and William R. Baschnagel of Creare, Inc. The Small Business Innovation Research (SBIR) contractor has elected to retain rights in the invention and a patent is pending. The contractor will introduce the RBNB in 1999 as a commercial product. Additional information is available on line at . Inquiries should be addressed to the SBIR Technology Transfer Office, NASA Dryden Flight Research Center; telephone (805) 258 3720. DRC-96-34