|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 15672 (0x3d38) Types: TextFile Names: »introduction.tex«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/doc/manual/introduction.tex«
% run this through LaTeX with the appropriate wrapper \f \chapter {Overview}\label{overview} This document describes a non-proprietary implementation of some of the protocols defined by the International Organization for Standardization and International Electrotechnical Commission (ISO/IEC), the International Telegraph and Telephone Consultative Committee (CCITT), and the European Computer Manufacturer Association (ECMA).% \footnote{In the interests of brevity, unless otherwise noted, the term ``OSI'' is used to denote these parallel protocol suites.} The purpose of making this software openly available is to accelerate the process of the development of applications in the OSI protocol suite. Experience indicates that the development of application level protocols takes as long as or significantly longer than the lower level protocols. By producing a non-proprietary implementation of the OSI protocol stack, it is hoped that researchers in the academic, public, and commercial arenas may begin working on applications immediately. Another motivation for this work is to foster the development of OSI protocols both in the European RARE and the U.S.~Internet communities. The Internet community is widely known as having pioneered computer-communications since the early {\oldstyle 1970}'s. This community is rich in knowledge in the field, but currently is not actively experimenting with the OSI protocols. By producing an openly available implementation, it is hoped that the OSI protocols will become quickly widespread in the Internet, and that a productive (and {\em painless\/}) transition in the Defense Data Network (DDN) might be promoted. The RARE community is the set of corresponding European academic and research organizations. While they do not have the same long implementation experience as the Internet community, they have a deep commitment to International Standards. It is intended that this release gives vital early access to prototype facilities. \f \section {Fanatics Need Not Read Further} This software can support several different network services below the transport service access point (TSAP). One of these network services is the \dod/ Transmission Control Protocol (TCP)\cite{TCP}.% \footnote{Although the TCP corresponds most closely to offering a transport service in the OSI model, the TCP is used as a connection-oriented network protocol (i.e., as co-service to X.25).} This permits the development of the higher level protocols in a robust and mature internet environment, while providing us the luxury of not having to recode anything when moving to a network where the OSI Transport Protocol (TP) is used to provide the TSAP. However, the software also operates over pure OSI lower levels of software. it is mainly used in that fashion~---~outside of the United States. Of course, there will always be ``zealots of the pure faith'' making claims to the effect that: \begin{quote}\em TCP/IP is dead! Any work involving TCP/IP simply dilutes the momentum of OSI. \end{quote} or, from the opposite end of the spectrum, that \begin{quote}\em The OSI protocols will never work! \end{quote} Both of these statements, from diametrically opposing protocol camps are, of course, completely unfounded and largely inflammatory. TCP/IP is here, works well, and enjoys a tremendous base of support. OSI is coming, and will work well, and when it eventually comes of age, it will enjoy an even larger base of support. The role of ISODE, in this maelstrom that generates much heat and little light, is to provide a useful transition path between the two protocol suites in which complementary efforts can occur. The ISODE approach is to use the strengths of both the DDN and OSI protocol suites in a cooperative and positive manner. For a more detailed exposition of these ideas, kindly refer to \cite{Open.Book} or the earlier work \cite{ISO.on.DDN}. \f \section {The Name of the Game}\label{name} The name of the software is the ISODE. The official pronunciation of the ISODE, takes four syllables: {\em I-SO-D-E}. This choice is mandated by fiat, not by usage, in order to avoid undue confusion. Please, as a courtesy, do not spell ISODE any other way. For example, terms such as ISO/DE or ISO-DE do not refer to the software! Similarly, do not try to spell out ISODE in such a way as to imply an affiliation with the International Organization for Standardization. There is no such relationship. The {\em ISO\/} in ISODE is not an acronym for this organization. In fact, the {\em ISO\/} in ISODE doesn't really meaning anything at all. It's just a catchy two syllable sound. \f \section {Operating Environments} This release is coded entirely in the {\em C\/} programming language\cite{C.Language}, and is known to run under the following operating systems (without any kernel modifications): \begin{itemize} \item Berkeley \unix/\\ The software should run on any faithful port of 4.2\bsd/, 4.3\bsd/, or 4.4\bsd/ \unix/. Sites have reported the software running: on the Sun-3 workstation running Sun \unix/~4.2 release~3.2 and later; on the Sun Microsystems workstation (Sun-3, Sun-4, and Sun-386i) running SunOS release 4.0 and later; on the \vaxstation/ running \ultrix/, on the Integrated Solutions workstation; and, on the RT/PC running 4.3\bsd/.% \footnote{Do not however, attempt to compile the software with the SunPro \pgm{make} program! It is not, contrary to any claims, compatible with the standard \pgm{make} facility. Further, note that if you are running a version of SunOS 4.0 prior to release 4.0.3, then you may need to use the \pgm{make} program found in \file{/usr/old/}, if the standard \pgm{make} you are using is the SunPro \pgm{make}. In this case, you will need to put the old, standard \pgm{make} in \file{/usr/bin/}, and you can keep the SunPro \pgm{make} in \file{/bin/}.} In addition to using the native TCP facilities of Berkeley \unix/, the software has also be interfaced to versions~4.0 through~6.0 of the SunLink X.25 and OSI packages (although Sun may have to supply you with some modified \verb"sgtty" and \verb"ioctl" include files if you are using an earlier version of SunLink X.25). The optional SunLink Communications Processor running DCP 3.0~software has also been tested with the software. \item AT\&T \unix/\\ The software should run on any faithful port of SVR2 \unix/ or SVR3 \unix/. One of the systems tested was running with an Excelan \exos/ 8044 TCP/IP card. The Excelan package implements the networking semantics of the 4.1a\bsd/ \unix/ kernel. As a consequence, the software should run on any faithful port of 4.1a\bsd/ \unix/, with only a minor amount of difficultly. As of this writing however, this speculation has not been verified. The particular system used was a Silicon Graphics IRIS workstation.% \footnote{This test was made with an earlier release of this software, and access to an SGI workstation was not available when the current version of the software tested. However, the networking interface is still believed to be correct for the Excelan package.} Another system was running the WIN TCP/IP networking package. The WIN package implements the networking semantics of the 4.2\bsd/ \unix/ kernel. The particular system used was a 3B2 running System~V release~2.0.4, with WIN/3B2 version~1.0. Another system was also running the WIN TCP/IP networking package but under System~V release~3.0. The WIN package on SVR3 systems emulates the networking semantics of the 4.2\bsd/ \unix/ kernel but uses STREAMS and TLI to do so. \item AIX\\ The software should run on the IBM AIX Operating System which is a UNIX-based derivative of AT\&T's System~V. The particular system used was a RT/PC system running version~2.1.2 of AIX. \item HP-UX\\ The software should run on HP's \unix/-like operating system, HP-UX. The particular system used was an Indigo 9000/840 system running version A.B1.01 of HP-UX. The system has also reported to have run on an HP 9000/350 system under version~6.2 of HP-UX. \item ROS\\ The software should run on the Ridge Operating system, ROS. The particular system used was a Ridge-32 running version 3.4.1 of ROS. \item Pyramid OsX\\ The software should run on a Pyramid computer running OsX. The particular system used was a Pyramid~98xe running version 4.0 of OsX. \end{itemize} Since a Berkeley \unix/ system is the primary development platform for ISODE, this documentation is somewhat slanted toward that environment. \f \section {Organization of the Release} A strict layering approach has been taken in the organization of the release. The documentation mimics this relationship approximately: the first two volumes describe, in top-down fashion, the services available at each layer along with the databases used by those services; the third volume describes some applications built using these facilities; the fourth volume describes a facility for building applications based on a programming language, rather that network-based, model; and, the fifth volume describes a complete implementation of the OSI Directory. In \volone/, the ``raw'' facilities available to applications are described, namely four libraries: \begin{itemize} \item the \man libacsap(3n) library, which implements the OSI Association Control Service (ACS); \item the \man librosap(3n) library, which implements different styles of the OSI Remote Operations Service (ROS); \item the \man librtsap(3n) library, which implements the OSI Reliable Transfer Service (RTS); and, \item the \man libpsap(3) library, which implements the OSI abstract syntax and transfer mechanisms. \end{itemize} In \voltwo/, the services upon which the application facilities are built are described, namely three libraries: \begin{itemize} \item the \man libpsap2(3n) library, which implements the OSI presentation service; \item the \man libssap(3n) library, which implements the OSI session service; and, \item the \man libtsap(3n) library, which implements an OSI transport service access point. \end{itemize} In addition, there is a replacement for the \man libpsap2(3n) library called the \man libpsap2-lpp(3n) library. This implements the lightweight presentation protocol for TCP/IP-based internets as specified in RFC1085. In addition, \voltwo/ contains information on how to configure the ISODE for your network. In \volthree/, some application programs written using this release are described, including: \begin{itemize} \item An implementation of the ISO FTAM which runs on Berkeley or AT\&T \unix/. FTAM, which stands for File Transfer, Access and Management, is the OSI file service. The implementation provided is fairly complete in the context of the particular file services it offers. It is a minimal implementation in as much as it offers only four core services: transfer of text files, transfer of binary files, directory listings, and file management. \item An implementation of an FTAM/FTP gateway, which runs on Berkeley \unix/. \item An implementation of the ISO VT which runs on Berkeley \unix/. VT, which stands for Virtual Terminal, is the OSI terminal service. The implementation consists of a basic class, TELNET profile implementation. \item An implementation of the ``little services'' often used for debugging and amusement. \item An implementation of a simple image database service. \end{itemize} In \volfour/, a ``cooked'' interface for applications using remote operations is described, which consists of three programs and a library: \begin{itemize} \item the \man rosy(1) compiler, which is a stub-generator for specifications of Remote Operations; \item the \man posy(1) compiler, which is a structure-generator for ASN.1 specifications; \item the \man pepy(1) compiler, which reads a specification for an application and produces a program fragment that builds or recognizes the data structures (APDUs in OSI argot) which are communicated by that application; and, \item the \man librosy(3n) library, which is a library for applications using this distributed applications paradigm. \end{itemize} In \volfive/, the QUIPU directory is described, which currently consists of several programs and a library: \begin{itemize} \item the \man quipu(8c) program, which is a Directory System Agent (DSA); \item the \man dish(1c) family of programs, which are a set of DIrectory SHell commands; and, \item the \man libdsap(3n) library, which is a library for applications using the Directory. \end{itemize} \f \section {A Note on this Implementation} Although the implementation described herein might form the basis for a production environment in the near future, this release is not represented as as ``production software''. However, throughout the development of the software, every effort has been made to employ good software practices which result in efficient code. In particular, the current implementation avoids excessive copying of bytes as data moves between layers. Some rough initial timings of echo and sink entities at the transport and session layers indicate data transfer rates quite competitive with a raw TCP socket (most differences were lost in the noise). The work involved to achieve this efficiency was not demanding. Additional work was required so that programs utilizing the \man libpsap(3) library could enjoy this level of performance. Although data transfer rates at the reliable transfer and remote operations layers are not as good as raw TCP, they are still quite impressive (on the average, the use of a ROS interface (over presentation, session, and ultimately the TCP) is only 20\% slower than a raw TCP interface). \f \section {Changes Since the Last Release}\label{isode:changes} A brief summary of the major changes between v~\isodeprevrsn/ and v~\isodevrsn/ are now presented. These are the user-visible changes only; changes of a strictly internal nature are not discussed. \begin{itemize} \item Julian Onions at the University of Nottingham donated a Transport Service Bridge. This allows more-or-less transparent interworking between different OSI lower-layer stacks. (This is not a user-visible coding change, but it is significant enough to warrant mention.) \item The Wollongong Group, Inc.~donated an implementation of RFC1085. This implements a lightweight presentation protocol, for TCP/IP-based internets. \item NYSERNet Inc.~donated an implementation of an SNMP agent (RFC 1098) for Berkeley \unix/. Although the SNMP is not an OSI application, inasmuch as the continued survival of the Internet hinges on all nodes becoming network manageable, the agent was developed using the ISODE and is being freely distributed with releases of Berkeley UNIX. \item The asynchronous connection establishment routines were modified to support multiple network addresses. In order to properly do this, they return some new values. \item In addition, a facility for queued (asynchronous) writes was added. \item The old-style format for entries in the \man isoentities(5) file is no longer supported. \item A new chapter in \voltwo/, {\em The Transport Switch}, describes how to configure the ISODE for interworking purposes. \end{itemize} As a rule, the upgrade procedure is a two-step process: first, attempt to compile your code, keeping in mind the changes summary relevant to the code; and, second, once the code successfully compiles, run the code through \man lint(1) with the supplied lint libraries. Although every attempt has been made to avoid making changes which would affect previously coded applications, in some cases incompatible changes were required in order to achieve a better overall structure.