|
|
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.