Annotation of 43BSDReno/contrib/isode-beta/doc/manual/introduction.tex, revision 1.1.1.1

1.1       root        1: % run this through LaTeX with the appropriate wrapper
                      2: 
                      3: \chapter      {Overview}\label{overview}
                      4: This document describes a non-proprietary implementation of some of the
                      5: protocols defined by the International Organization for Standardization
                      6: and International Electrotechnical Commission (ISO/IEC),
                      7: the International Telegraph and Telephone Consultative Committee (CCITT),
                      8: and the European Computer Manufacturer Association (ECMA).%
                      9: \footnote{In the interests of brevity,
                     10: unless otherwise noted,
                     11: the term ``OSI'' is used to denote these parallel protocol suites.}
                     12: 
                     13: The purpose of making this software openly available is to
                     14: accelerate the process of the development of applications in the OSI
                     15: protocol suite.
                     16: Experience indicates that the development of application level protocols takes
                     17: as long as or significantly longer than the lower level protocols.
                     18: By producing a non-proprietary implementation of the OSI protocol stack,
                     19: it is hoped that researchers in the academic, public, and commercial arenas
                     20: may begin working on applications immediately.
                     21: Another motivation for this work is to foster the development of OSI protocols
                     22: both in the European RARE and the U.S.~Internet communities.
                     23: The Internet community is widely known as having pioneered
                     24: computer-communications since the early {\oldstyle 1970}'s.
                     25: This community is rich in knowledge in the field,
                     26: but currently is not actively experimenting with the OSI protocols.
                     27: By producing an openly available implementation,
                     28: it is hoped that the OSI protocols will become quickly widespread in the
                     29: Internet,
                     30: and that a productive (and {\em painless\/}) transition in the Defense
                     31: Data Network (DDN) might be promoted.
                     32: The RARE community is the set of corresponding European academic and research
                     33: organizations.
                     34: While they do not have the same long implementation experience as the Internet
                     35: community,
                     36: they have a deep commitment to International Standards.
                     37: It is intended that this release gives vital early access to prototype
                     38: facilities.
                     39: 
                     40: \section      {Fanatics Need Not Read Further}
                     41: This software can support several different network services below the
                     42: transport service access point (TSAP).
                     43: One of these network services
                     44: is the \dod/ Transmission Control Protocol (TCP)\cite{TCP}.%
                     45: \footnote{Although the TCP corresponds most closely to offering a transport
                     46: service in the OSI model,
                     47: the TCP is used as a connection-oriented network protocol
                     48: (i.e., as co-service to X.25).}
                     49: This permits the development of the higher level protocols in a robust and
                     50: mature internet environment, while providing us the luxury of not having to
                     51: recode anything when moving to a network where the OSI Transport Protocol (TP)
                     52: is used to provide the TSAP.
                     53: However, the software also operates over pure OSI lower levels of software.
                     54: it is mainly used in that fashion~---~outside of the United States.
                     55: 
                     56: Of course,
                     57: there will always be ``zealots of the pure faith'' making claims to the effect
                     58: that:
                     59: \begin{quote}\em
                     60: TCP/IP is dead!
                     61: Any work involving TCP/IP simply dilutes the momentum of OSI.
                     62: \end{quote}
                     63: or, from the opposite end of the spectrum, that
                     64: \begin{quote}\em
                     65: The OSI protocols will never work!
                     66: \end{quote}
                     67: Both of these statements,
                     68: from diametrically opposing protocol camps are, of course, completely
                     69: unfounded and largely inflammatory.
                     70: TCP/IP is here, works well,
                     71: and enjoys a tremendous base of support.
                     72: OSI is coming, and will work well,
                     73: and when it eventually comes of age,
                     74: it will enjoy an even larger base of support.
                     75: 
                     76: The role of ISODE,
                     77: in this maelstrom that generates much heat and little light,
                     78: is to provide a useful transition path between the two protocol suites in which
                     79: complementary efforts can occur.
                     80: The ISODE approach is to use the strengths of both the DDN and OSI protocol
                     81: suites in a cooperative and positive manner.
                     82: For a more detailed exposition of these ideas,
                     83: kindly refer to \cite{Open.Book} or the earlier work \cite{ISO.on.DDN}.
                     84: 
                     85: \section      {The Name of the Game}\label{name}
                     86: The name of the software is the ISODE.
                     87: The official pronunciation of the ISODE,
                     88: takes four syllables: {\em I-SO-D-E}.
                     89: This choice is mandated by fiat, not by usage,
                     90: in order to avoid undue confusion.
                     91: 
                     92: Please, as a courtesy, do not spell ISODE any other way.
                     93: For example, terms such as ISO/DE or ISO-DE do not refer to the software!
                     94: Similarly, do not try to spell out ISODE in such a way as to imply an
                     95: affiliation with the International Organization for Standardization.
                     96: There is no such relationship.
                     97: The {\em ISO\/} in ISODE is not an acronym for this organization.
                     98: In fact, the {\em ISO\/} in ISODE doesn't really meaning anything at all.
                     99: It's just a catchy two syllable sound.
                    100: 
                    101: \section      {Operating Environments}
                    102: This release is coded entirely in the {\em C\/} programming
                    103: language\cite{C.Language},
                    104: and is known to run under the following operating systems
                    105: (without any kernel modifications):
                    106: \begin{itemize}
                    107: \item  Berkeley \unix/\\
                    108: The software should run on any faithful port of 4.2\bsd/, 4.3\bsd/,
                    109: or 4.4\bsd/ \unix/.
                    110: Sites have reported the software running:
                    111: on the Sun-3 workstation running Sun \unix/~4.2 release~3.2 and later;
                    112: on the Sun Microsystems workstation (Sun-3, Sun-4, and Sun-386i) running SunOS
                    113: release 4.0 and later;
                    114: on the \vaxstation/ running \ultrix/,
                    115: on the Integrated Solutions workstation;
                    116: and,
                    117: on the RT/PC running 4.3\bsd/.%
                    118: \footnote{Do not however, attempt to compile the software with the SunPro
                    119: \pgm{make} program!
                    120: It is not, contrary to any claims, compatible with the standard \pgm{make}
                    121: facility.
                    122: Further,
                    123: note that if you are running a version of SunOS 4.0 prior to release 4.0.3,
                    124: then you may need to use the \pgm{make} program found in \file{/usr/old/},
                    125: if the standard \pgm{make} you are using is the SunPro \pgm{make}.
                    126: In this case,
                    127: you will need to put the old,
                    128: standard \pgm{make} in \file{/usr/bin/},
                    129: and you can keep the SunPro \pgm{make} in \file{/bin/}.}
                    130: 
                    131: In addition to using the native TCP facilities of Berkeley \unix/,
                    132: the software has also be interfaced to versions~4.0 through~6.0 
                    133: of the SunLink X.25 and OSI packages
                    134: (although Sun may have to supply you with some modified \verb"sgtty" and
                    135: \verb"ioctl" include files if you are using an earlier version of SunLink
                    136: X.25).
                    137: The optional SunLink Communications Processor running DCP 3.0~software has
                    138: also been tested with the software.
                    139: 
                    140: \item  AT\&T \unix/\\
                    141: The software should run on any faithful port of SVR2 \unix/ or SVR3 \unix/.
                    142: One of the systems tested was running with an
                    143: Excelan \exos/ 8044 TCP/IP card.
                    144: The Excelan package implements the networking semantics of the 4.1a\bsd/ \unix/
                    145: kernel.
                    146: As a consequence,
                    147: the software should run on any faithful port of 4.1a\bsd/ \unix/,
                    148: with only a minor amount of difficultly.
                    149: As of this writing however,
                    150: this speculation has not been verified.
                    151: The particular system used was a Silicon Graphics IRIS workstation.%
                    152: \footnote{This test was made with an earlier release of this software,
                    153: and access to an SGI workstation was not available when the current version of
                    154: the software tested.
                    155: However, the networking interface is still believed to be correct for the
                    156: Excelan package.}
                    157: 
                    158: Another system was running the WIN TCP/IP networking package.
                    159: The WIN package implements the networking semantics of the 4.2\bsd/ \unix/
                    160: kernel.
                    161: The particular system used was a 3B2 running System~V release~2.0.4,
                    162: with WIN/3B2 version~1.0.
                    163: 
                    164: Another system was also running the WIN TCP/IP networking package
                    165: but under System~V release~3.0.
                    166: The WIN package on SVR3 systems emulates the networking semantics of the
                    167: 4.2\bsd/ \unix/ kernel but uses STREAMS and TLI to do so.
                    168: 
                    169: \item  AIX\\
                    170: The software should run on the IBM AIX Operating System
                    171: which is a UNIX-based derivative of AT\&T's System~V.
                    172: The particular system used was a RT/PC system running version~2.1.2
                    173: of AIX.
                    174: 
                    175: \item  HP-UX\\
                    176: The software should run on HP's \unix/-like operating system, HP-UX.
                    177: The particular system used was an Indigo 9000/840 system running version
                    178: A.B1.01 of HP-UX.
                    179: The system has also reported to have run on an HP 9000/350 system under
                    180: version~6.2 of HP-UX.
                    181: 
                    182: \item  ROS\\
                    183: The software should run on the Ridge Operating system, ROS.
                    184: The particular system used was a Ridge-32 running version 3.4.1 of ROS.
                    185: 
                    186: \item  Pyramid OsX\\
                    187: The software should run on a Pyramid computer running OsX.
                    188: The particular system used was a Pyramid~98xe running version 4.0 of OsX.
                    189: \end{itemize}
                    190: 
                    191: Since a Berkeley \unix/ system is the primary development platform for ISODE,
                    192: this documentation is somewhat slanted toward that environment.
                    193: 
                    194: \section      {Organization of the Release}
                    195: A strict layering approach has been taken in the organization of the release.
                    196: The documentation mimics this relationship approximately:
                    197: the first two volumes describe,
                    198: in top-down fashion,
                    199: the services available at each layer along with the databases used by those
                    200: services;
                    201: the third volume describes some applications built using these facilities;
                    202: the fourth volume describes a facility for building applications based on a
                    203: programming language, rather that network-based, model;
                    204: and,
                    205: the fifth volume describes a complete implementation of the OSI Directory.
                    206: 
                    207: In \volone/,
                    208: the ``raw'' facilities available to applications are described,
                    209: namely four libraries:
                    210: \begin{itemize}
                    211: \item  the \man libacsap(3n) library,
                    212:        which implements the OSI Association Control Service (ACS);
                    213: 
                    214: \item  the \man librosap(3n) library,
                    215:        which implements different styles of the OSI Remote Operations Service
                    216:        (ROS);
                    217: 
                    218: \item  the \man librtsap(3n) library,
                    219:        which implements the OSI Reliable Transfer Service (RTS);
                    220:        and,
                    221: 
                    222: \item  the \man libpsap(3) library,
                    223:        which implements the OSI abstract syntax and transfer mechanisms.
                    224: \end{itemize}
                    225: 
                    226: In \voltwo/,
                    227: the services upon which the application facilities are built are described,
                    228: namely three libraries:
                    229: \begin{itemize}
                    230: \item  the \man libpsap2(3n) library,
                    231:        which implements the OSI presentation service;
                    232: 
                    233: \item  the \man libssap(3n) library,
                    234:        which implements the OSI session service;
                    235:        and,
                    236: 
                    237: \item  the \man libtsap(3n) library,
                    238:        which implements an OSI transport service access point.
                    239: \end{itemize}
                    240: In addition,
                    241: there is a replacement for the \man libpsap2(3n) library called the
                    242: \man libpsap2-lpp(3n) library.
                    243: This implements the lightweight presentation protocol for TCP/IP-based
                    244: internets as specified in RFC1085.
                    245: 
                    246: In addition,
                    247: \voltwo/ contains information on how to configure the ISODE for your network.
                    248: 
                    249: In \volthree/,
                    250: some application programs written using this release are described,
                    251: including:
                    252: \begin{itemize}
                    253: \item  An implementation of the ISO FTAM
                    254:        which runs on Berkeley or AT\&T \unix/.
                    255:        FTAM, which stands for File Transfer, Access and Management,
                    256:        is the OSI file service.
                    257:        The implementation provided is fairly complete in the context
                    258:        of the particular file services it offers.
                    259:        It is a minimal implementation in as much as it offers only four core
                    260:        services: transfer of text files, transfer of binary files,
                    261:        directory listings, and file management.
                    262: 
                    263: \item  An implementation of an FTAM/FTP gateway,
                    264:        which runs on Berkeley \unix/.
                    265: 
                    266: \item  An implementation of the ISO VT
                    267:        which runs on Berkeley \unix/.
                    268:        VT, which stands for Virtual Terminal, is the OSI terminal service.
                    269:        The implementation consists of a basic class, TELNET profile
                    270:        implementation.
                    271: 
                    272: \item  An implementation of the ``little services'' often used for debugging
                    273:        and amusement.
                    274: 
                    275: \item  An implementation of a simple image database service.
                    276: \end{itemize}
                    277: 
                    278: In \volfour/,
                    279: a ``cooked'' interface for applications using remote operations is described,
                    280: which consists of three programs and a library:
                    281: \begin{itemize}
                    282: \item  the \man rosy(1) compiler,
                    283:        which is a stub-generator for specifications of Remote Operations;
                    284: 
                    285: \item  the \man posy(1) compiler,
                    286:        which is a structure-generator for ASN.1 specifications;
                    287: 
                    288: \item  the \man pepy(1) compiler,
                    289:        which reads a specification for an application and produces a program
                    290:        fragment that builds or recognizes the data structures (APDUs in OSI
                    291:        argot) which are communicated by that application;
                    292:        and,
                    293: 
                    294: \item  the \man librosy(3n) library,
                    295:        which is a library for applications using this distributed
                    296:        applications paradigm.
                    297: \end{itemize}
                    298: 
                    299: In \volfive/,
                    300: the QUIPU directory is described,
                    301: which currently consists of several programs and a library:
                    302: \begin{itemize}
                    303: \item  the \man quipu(8c) program,
                    304:        which is a Directory System Agent (DSA);
                    305: 
                    306: \item  the \man dish(1c) family of programs,
                    307:        which are a set of DIrectory SHell commands;
                    308:        and,
                    309: 
                    310: \item  the \man libdsap(3n) library,
                    311:        which is a library for applications using the Directory.
                    312: \end{itemize}
                    313: 
                    314: \section      {A Note on this Implementation}
                    315: Although the implementation described herein might form the basis for a
                    316: production environment in the near future,
                    317: this release is not represented as as ``production software''.
                    318: 
                    319: However,
                    320: throughout the development of the software,
                    321: every effort has been made to employ good software practices which result in
                    322: efficient code.
                    323: In particular,
                    324: the current implementation avoids excessive copying of bytes as data moves
                    325: between layers.
                    326: Some rough initial timings of echo and sink entities at the transport and
                    327: session layers indicate data transfer rates quite competitive with a raw TCP
                    328: socket (most differences were lost in the noise).
                    329: The work involved to achieve this efficiency was not demanding.
                    330: 
                    331: Additional work was required so that programs utilizing the \man libpsap(3)
                    332: library could enjoy this level of performance.
                    333: Although data transfer rates at the reliable transfer and remote operations
                    334: layers are not as good as raw TCP,
                    335: they are still quite impressive
                    336: (on the average,
                    337: the use of a ROS interface (over presentation, session, and ultimately the TCP)
                    338: is only 20\% slower than a raw TCP interface).
                    339: 
                    340: \section      {Changes Since the Last Release}\label{isode:changes}
                    341: A brief summary of the major changes between v~\isodeprevrsn/ and v~\isodevrsn/
                    342: are now presented.
                    343: These are the user-visible changes only;
                    344: changes of a strictly internal nature are not discussed.
                    345: 
                    346: \begin{itemize}
                    347: \item  A new program, \pgm{pepsy}, has been developed to replace both
                    348:        \pgm{pepy} and \pgm{posy}.
                    349:        It is described in \volfour/.
                    350: 
                    351: \item  The \pgm{dsabuild} program has been removed,
                    352:        in favor of some shell scripts.
                    353: 
                    354: \item  The ``higher performance nameservice'' has been discontinued in favor
                    355:        of a ``user-friendly nameservice''.
                    356:        As such,
                    357:        the syntax of the \verb"str2aei" routine has changed.
                    358: 
                    359: \item  The \verb"na_type" and \verb"na_subnet" fields of the network address
                    360:        structure described in \voltwo/ on page~\pageref{nsap:addresses}
                    361:        have been renamed.
                    362:        For compatibility,
                    363:        macros are provided.
                    364:        These macros will be removed after this release.
                    365: \end{itemize}
                    366: 
                    367: As a rule,
                    368: the upgrade procedure is a two-step process:
                    369: first,
                    370: attempt to compile your code, keeping in mind the changes summary relevant to
                    371: the code;
                    372: and,
                    373: second,
                    374: once the code successfully compiles,
                    375: run the code through \man lint(1) with the supplied lint libraries.
                    376: 
                    377: Although
                    378: every attempt has been made to avoid making changes which would affect
                    379: previously coded applications,
                    380: in some cases incompatible changes were required in order to
                    381: achieve a better overall structure.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.