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