STREAMS

From Wikipedia, the free encyclopedia

(Redirected from Streams (networking API))
Jump to: navigation, search

In computer networking, STREAMS is the native framework in Unix System V for implementing character devices.

STREAMS was designed as a modular architecture for implementing full-duplex, bidirectional character I/O between kernel or user space processes and device drivers. Its most frequent uses have been in developing terminal I/O and networking subsystems. In System V Release 4, the entire terminal interface was reimplemented using STREAMS[1]. An important concept in STREAMS is the ability to push drivers — custom code modules that can modify the functionality of a network interface or other device — together to form a stack. Several of these drivers can be chained together in order.

STREAMS is an alternative to the Berkeley sockets API, although all modern systems that provide STREAMS provide sockets (Stream Sockets) as well. Although STREAMS is more complex than sockets, it provides more flexibility than sockets. However, it is rarely used in modern software.

Contents

STREAMS was first introduced in Eighth Edition Research Unix by Dennis Ritchie, where it was used for the terminal I/O subsystem and the TCP/IP protocol. This version heroically attempted to fit the new functionality under the existing device I/O system calls (open, close, read, write, and ioctl), which limited its application to terminal I/O and protocols providing pipe-like I/O semantics. It was ported to System V Release 3 by Robert Israel, Gil McGrath, Dave Olander, Her-Daw Che, and Maury Bach as part of a wider framework intended to support a variety of transport protocols, including TCP/IP, ISO Class 4 transport, SNA LU 6.2, and the AT&T NPACK protocol (used in RFS). This port added the putmsg, getmsg, and poll system calls, which are nearly equivalent to the send, recv, and select calls from Berkeley sockets. In subsequent releases, STREAMS was used for the terminal I/O framework and pipes, providing useful new functionality like bi-directional pipes and file descriptor passing. A port for Unicos was also produced.

While the original Bell Labs research implementation [2] was criticized for slowness, the System V.3 and later third-party implementations did not suffer from serious speed issues.

Concurrent with the System V.3 port, AT&T developed protocol-independent STREAMS message passing guidelines for the link, network, transport, and session layers of the OSI model (layers 2-5). Due to the typically close implementation coupling of the network and transport protocols in a given protocol stack, and the typical practice of implementing layers 5-7 outside of the kernel, only the link and transport layer interfaces have been widely adopted in practice. In conjunction with the transport message passing model, the Transport Layer Interface (later adopted as the X/Open Transport Interface) was defined to provide a transport protocol-independent API for application development. The TLI/XTI API is roughly equivalent to BSD sockets, and most systems now provide a sockets emulation for use with the TCP/IP protocol stack (either on top of the TLI/XTI API or as an alternative API on top of the underlying STREAMS transport message passing model).

STREAMS was required for conformance with the Single UNIX Specification versions 1 (UNIX 95) and 2 (UNIX 98), but has been marked as optional in version 3 (UNIX 03).

STREAMS has mostly been used in the System V Unix world; however, other implementations exist:

  • Plan 9 also features STREAMS networking.
  • Apple Computer licensed the Mentat implementation of STREAMS for use on the Mac OS starting in version 7.5.2, as part of their Open Transport networking system. The STREAMS architecture remains in the Classic environment on the PowerPC version of Mac OS X, but the native networking architecture is essentially Berkeley sockets.
  • Linux has STREAMS in the form of LiS [3] [4] and more recently as OpenSS7 Fast STREAMS [5]. STREAMS functionality is not included with the Linux kernel; the kernel developers consider it technically inadequate, and the compatibility layers in Linux for other operating systems convert STREAMS operations into sockets as early as possible [6].
  • It is rumored that an early port of TCP/IP for Windows NT by Lachman Associates included a full implementation of the System V.3 STREAMS model.

  1. ^ Goodheart, Benny (1994). The Magic Garden Explained:The Interals of UNIX System V Release 4. Prentice Hall, 51-53, 403-527. ISBN 0-13-098138-9. 
  2. ^ Dennis M. Ritchie. "A Stream Input-Output System". AT&T. Retrieved on 2006-05-19.
  3. ^ LiS: Linux STREAMS, Francisco Ballesteros, Linux Journal, Sat 01 May 1999
  4. ^ LiS home page
  5. ^ OpenSS7 download page
  6. ^ Alan Cox, Streams and Linux, Linux Kernel Mailing List, 28 June 1998

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.