|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.