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

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.

unix.superglobalmegacorp.com

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