|
|
1.1 root 1: % run this through LaTeX with the appropriate wrapper
2:
3: \chapter {The Transport Switch}\label{tswitch}
4: As of this writing,
5: the concept of ubiquitous OSI has not yet been realized.
6: In particular,
7: there continues to be disagreement on the transport/network protocols to be
8: used to provide end-to-end service.
9: As a result,
10: interworking between sites in many cases is the {\em exception},
11: not the rule.
12:
13: In order to facility communication,
14: the ISODE has a powerful abstraction,
15: the {\em Transport Switch}.
16: The goal of the transport switch is to hide the complex underpinnings of the
17: ``real world'' of OSI from the user of the transport service.
18: In order to make effective use of this abstraction,
19: it may be necessary to tailor the ISODE
20: (using the \man isotailor(5) file described in Chapter~\ref{isotailor}).
21:
22: To explain how to use the transport switch effectively,
23: it is necessary to introduce some terminology.
24:
25: \section {Transport Stacks}
26: A {\em TS-stack\/} refers to a combination of transport protocol and network
27: service that is used to provide end-to-end transport service.
28: The ISODE, depending on how you configure it at compile-time,
29: supports any combination of these stacks:
30: \[\begin{tabular}{rl}
31: \multicolumn{1}{c}{\bf Mneumoic}&
32: \multicolumn{1}{c}{\bf TS-Stack}\\
33: \verb"tcp"& RFC1006 over TCP/IP\\
34: \verb"x25"& TP0 over X.25\\
35: \verb"bridge"& TP0 over the TP0--bridge\\
36: \verb"tp4"& TP4 over CLNP
37: \end{tabular}\]
38: Internally,
39: the ISODE uses ``typing'' on all network addresses to one of these choices.
40: From a practical perspective,
41: usually only the \verb"tcp" and \verb"x25" are of interest.
42:
43: The run-time tailoring variable \verb"ts_stacks" keeps track of the
44: TS-stacks available on your host.
45: This defaults to the TS-stacks that were configured at compile-time.
46: However, if you are sharing executables between machines with different
47: network attachments,
48: you will want to change this.
49: Generally,
50: you compile-time configure the ISODE for all stacks available at your site.
51: Then,
52: for each host you install the executables on,
53: you set the variable \verb"ts_stacks" accordingly.
54: So, suppose you have a host with both TCP and X.25 services,
55: but that all the other hosts at your site have only TCP.
56: In this case
57: (assuming binary compatibility between the hosts at your site),
58: you generate the ISODE on the host with both TCP and X.25 services configured.
59: When you move the executables to the TCP only hosts,
60: you add the line
61: \begin{quote}\small\begin{verbatim}
62: ts_stacks: tcp
63: \end{verbatim}\end{quote}
64: to the \file{isotailor} file on those hosts.
65:
66: \section {OSI Communities}
67: An OSI {\em community\/} is a collection of hosts which share a common TS-stack
68: along with basic connectivity.
69: Simply put,
70: a community consists of end-systems that all interwork with each other.
71: In a perfect world,
72: there would be but a single community.
73: \verb"realns".
74: But it isn't a perfect world,
75: my favorite Rock group, {\em Bangles}, broke up in September
76: of '{\oldstyle 89}, and I am very upset about this.
77: But that is another story.
78:
79: There are several communities using OSI at present,
80: the short list is:
81: \[\begin{tabular}{rll}
82: \multicolumn{1}{c}{\bf Mneumoic}&
83: \multicolumn{1}{c}{\bf Community}&
84: \multicolumn{1}{c}{\bf TS-stack}\\
85: \verb"int-x25"& the International X.25& \verb"x25"\\
86: \verb"janet"& the JANET in the UK& \verb"x25"\\
87: \verb"internet"& the capital-I Internet&\verb"tcp"\\
88: \verb"localTCP"& the TCP loopback address&\verb"tcp"
89: \end{tabular}\]
90: These are all termed {\em interim\/} communities as they do not use the real
91: OSI network service.
92: In order to facility communications between these communities
93: (and others, e.g., private LANs),
94: an Interim addressing scheme has been defined \cite{Interim.Addresses}
95: (which is included in the ISODE documentation set,
96: look in the directory \file{doc/interim/} in the source tree).
97:
98: Thus,
99: the first task when running the ISODE is to determine which communities
100: your site belongs to.
101: The \verb"ts_communities" run-time tailoring variable keeps track of the
102: communities which your host can (in)directly reach.
103: This defaults to the four communities above,
104: plus the \verb"realNS" community.
105: Whilst this is the most sensible default,
106: this choice is probably wrong for most sites.
107: So,
108: if your host is connected to the International X.25 but not the JANET,
109: you add the line
110: \begin{quote}\small\begin{verbatim}
111: ts_communities: int-x25
112: \end{verbatim}\end{quote}
113: to the \file{isotailor} file on that host.
114:
115: Of course,
116: if the host in question is connected not only to the International X.25 but
117: also belongs to the capital-I Internet, then the line might read
118: \begin{quote}\small\begin{verbatim}
119: ts_communities: int-x25 internet
120: \end{verbatim}\end{quote}
121: instead.
122: This raises an important question:
123: if a host wishes to contact another host,
124: and the two have multiple communities in common,
125: what preference is given when connections are attempted?
126: The answer is that the ordering of the communities in the
127: \verb"ts_communities" run-time tailoring variable tells the ISODE what the
128: preference is.
129: Thus,
130: in the example above,
131: if there were two hosts connected to both the International X.25 and the
132: capital-I Internet,
133: and one of the hosts wished to talk to the other,
134: the International X.25 community would be tried first.
135: If a connection could not be established,
136: then the capital-I Internet community would be tried.
137:
138: There are a few common site configurations.
139: If the site has access to the capital-I Internet,
140: then usually all hosts belong to the capital-I Internet community,
141: e.g.,
142: \begin{quote}\small\begin{verbatim}
143: ts_communities: internet
144: \end{verbatim}\end{quote}
145: It is possible that one or more hosts at this site may have access to the
146: International X.25,
147: and exactly these hosts would have connectivity to this second community:
148: \begin{quote}\small\begin{verbatim}
149: ts_communities: internet int-x25
150: \end{verbatim}\end{quote}
151:
152: \subsection {Defining a new OSI community}
153: Another common configuration is that a site has a single host that is
154: connected to the International X.25.
155: In addition,
156: there is a private LAN,
157: running the TCP/IP protocols,
158: that all hosts at the site are connected to.
159: In this case,
160: you need to define a community name for your site.
161: This is done by describing your community name as a macro in the
162: \man isomacros(5) file and then enabling use of this community in the
163: \man isotailor(5) file.
164:
165: To describe your community,
166: you create a macro of the form:
167: \begin{quote}\small\begin{verbatim}
168: name TELEX+value+stack+number+
169: \end{verbatim}\end{quote}
170: where:
171: \begin{describe}
172: \item[\verb"name":] is the name of your community;
173:
174: \item[\verb"value":] corresponds to the TELEX number at your site.
175: (This is traditionally a three-digit international code followed by a
176: national TELEX number.)
177: The combination of \verb"TELEX+value" defines an OSI address prefix which your
178: site uniquely administers;
179:
180: \item[\verb"stack":] is either \verb"RFC-1006" or \verb"X.25(80)" indicating
181: the TS-stack used for the addresses;
182: and,
183:
184: \item[\verb"number":] by convention is a two-digit decimal number from~01
185: to~99 (this allows you to define up to 99 communities at your site).
186: \end{describe}
187: Of course,
188: there are other methods for generating unique OSI addresses,
189: but this is the only method supported in the current implementation of the
190: ISODE.
191:
192: \subsubsection {Defining a new TCP-based community}
193: Consider the the case of an isolated LAN running the TCP/IP protocols.
194:
195: First,
196: edit the file \file{support/macros.local} in the source area and add a line
197: line like this:
198: \begin{quote}\small\begin{verbatim}
199: nott-ether TELEX+00738700+RFC-1006+01+
200: \end{verbatim}\end{quote}
201: where \verb"00738700" corresponds to your TELEX number.
202: Next,
203: type
204: \begin{quote}\small\begin{verbatim}
205: # ./make macros
206: \end{verbatim}\end{quote}
207: as the super-user.
208: This will install a new version of the \man isomacros(5) file.
209:
210: Second,
211: in the \man isotailor(5) file, you would add this line:
212: \begin{quote}\small\begin{verbatim}
213: ts_interim: nott-ether
214: \end{verbatim}\end{quote}
215: which tells the ISODE about your new community.
216: You would then add \verb"nott-ether" to the beginning of the value for the
217: run-time tailoring variable \verb"ts_communities".
218: So,
219: on the hosts with only TCP, you would have:
220: \begin{quote}\small\begin{verbatim}
221: ts_interim: nott-ether
222: ts_communities: nott-ether
223: \end{verbatim}\end{quote}
224: and on the host which also had connectivity to the International X.25,
225: you would have:
226: \begin{quote}\small\begin{verbatim}
227: ts_interim: nott-ether
228: ts_communities: nott-ether int-x25
229: \end{verbatim}\end{quote}
230: Note that it is {\bf critical\/} that the definition of \verb"ts_interim"
231: occur {\bf before\/} the definition of \verb"ts_communities".
232:
233: \subsubsection {Defining a new X.25-based community}
234: Consider the case of a site which has access to the International X.25 and
235: belongs to a private X.25 network.
236:
237: In this case,
238: the macro definition might be:
239: \begin{quote}\small\begin{verbatim}
240: nyser-wan TELEX+00738700+X.25(80)+02+
241: \end{verbatim}\end{quote}
242: So,
243: the tailoring variables would be
244: \begin{quote}\small\begin{verbatim}
245: ts_interim: nyser-wan
246: ts_communities: nyser-wan
247: \end{verbatim}\end{quote}
248: for those hosts which are only on the private X.25 network,
249: whilst
250: \begin{quote}\small\begin{verbatim}
251: ts_interim: nyser-wan
252: ts_communities: nyser-wan int-x25
253: \end{verbatim}\end{quote}
254: would be used for hosts on both the International X.25 and the private X.25
255: network.
256: Again, it is critical that the definition of \verb"ts_interim"
257: occur {before the definition of \verb"ts_communities".
258:
259: \subsection {Heuristic Support}
260: Finally,
261: there are some cases when the ISODE must look at a simple string and derive an
262: address.
263: If the string encoding for presentation address defined in
264: \cite{String.Addresses},
265: then the macro defined earlier will help.
266: But,
267: if a simpler string is used,
268: e.g.,
269: \begin{quote}\small\begin{verbatim}
270: % ftam gonzo
271: \end{verbatim}\end{quote}
272: or
273: \begin{quote}\small\begin{verbatim}
274: % ftam 00000511160013
275: \end{verbatim}\end{quote}
276: then it would be nice to have an intelligent default to use for the community
277: associated with these.
278: There are three run-time tailoring variables provided for this purpose:
279: \[\begin{tabular}{ll}
280: \multicolumn{1}{c}{\bf if it looks like}&
281: \multicolumn{1}{c}{\bf then use}\\
282: an OSI NSAP& \verb"default_nsap_community"\\
283: a X.25 DTE& \verb"default_x25_community"\\
284: a TCP address& \verb"default_tcp_community"
285: \end{tabular}\]
286: To continue our two examples of private communities.
287: for the private TCP/IP LAN,
288: it would make sense to add
289: \begin{quote}\small\begin{verbatim}
290: default_tcp_community: nott-ether
291: \end{verbatim}\end{quote}
292: to the \file{isotailor} file on each host.
293: For the private X.25--based community,
294: it would make sense to add
295: \begin{quote}\small\begin{verbatim}
296: default_x25_community: nyser-wan
297: \end{verbatim}\end{quote}
298: instead.
299:
300: \section {Transport-Service Bridges}
301: There is one last question which must be considered:
302: how can two hosts communicate if they do not have any communities in common?
303: If there is a third host,
304: which shares a community with the two other hosts,
305: then a {\em TS-bridge\/} can be used to achieve connectivity on
306: a per-connection basis.
307:
308: \subsection {Client Hosts}
309: For each host,
310: examine the value of the \verb"ts_communities" run-time variable.
311: For those communities which are not listed,
312: but which you wish that host to be able to communicate with,
313: you must add the definition of the appropriate TS-bridge to the
314: \verb"tsb_communities" run-time tailoring variable.
315: A definition consists of two tokens,
316: the name of the community that the TS-bridge can reach,
317: and the transport address of the TS-bridge
318: (using the string encoding defined in \cite{String.Addresses},
319: e.g.,
320: \begin{quote}\smaller\begin{verbatim}
321: tsb_communities: internet Int-X25(80)=31344152401010+PID+03018000
322: \end{verbatim}\end{quote}
323: This says that the capital-I Internet community can be reached by contacting
324: the TS-bridge located on the International X.25 at the specified DTE and PID.
325:
326: It is {\bf critical\/} to observe that the TS-bridge must share a common
327: community with the host containing this definition.
328: Thus,
329: a more instructive example is:
330: \begin{quote}\smaller\begin{verbatim}
331: ts_communities: int-x25 internet
332: tsb_communities: internet Int-X25(80)=31344152401010+PID+03018000
333: \end{verbatim}\end{quote}
334: which describes a host connected to the International X.25 that may wish to
335: talk to hosts in the capital-I Internet community.
336:
337: Similarly,
338: one could imagine a host belonging to the capital-I Internet community using
339: the following definitions:
340: \begin{quote}\smaller\begin{verbatim}
341: ts_communities: internet int-x25
342: tsb_communities: int-x25 Internet=gonzo.twg.com+17004
343: \end{verbatim}\end{quote}
344:
345: \subsection {Server Hosts}
346: Typically,
347: the entity responsible for a community also runs a TS-bridge which connects
348: that community to the other Interim communities.
349: Obviously,
350: this host must support each of the Interim communities to be connected to the
351: local community.
352: The \verb"tsb_default_address" run-time tailoring variable is used to define
353: the transport address (usually containing multiple network addresses) where
354: the TS-bridge listens.
355:
356: So, to continue with the nott-ether example,
357: the host on which the TS-bridge resides might have these definitions:
358: \begin{quote}\tiny\begin{verbatim}
359: ts_interim: nott-ether
360: ts_communities: nott-ether int-x25
361: tsb_default_address: Nott-Ether=sheriff+17004\|Int-X25(80)=23426020017299+PID+03018000
362: \end{verbatim}\end{quote}
363: The rule is simple,
364: for each community named in the \verb"ts_communities" run-time tailoring
365: variable,
366: a network address is present in the run-time tailoring variable
367: \verb"tsb_default_address".
368: By convention,
369: for TCP-based addresses,
370: TCP port 17004 is used,
371: whilst for X.25--based addresses,
372: PID 0301800 is used.
373:
374: \section {In Retrospect}
375: What a mess! There's a lot to be said for the focused ``one transport
376: protocol, one network service'' approach used by the Internet suite of
377: protocols.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.