Annotation of 43BSDReno/contrib/isode-beta/doc/manual/tswitch.tex, revision 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.