home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1561.txt < prev    next >
Text File  |  1996-05-07  |  57KB  |  689 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                      D. Piscitello Request for Comments: 1561                               Core Competence Category: Experimental                                     December 1993 
  8.  
  9.                    Use of ISO CLNP in TUBA Environments 
  10.  
  11. Status of this Memo 
  12.  
  13.    This memo defines an Experimental Protocol for the Internet    community.  This memo does not specify an Internet standard of any    kind.  Discussion and suggestions for improvement are requested.    Distribution of this memo is unlimited. 
  14.  
  15. Abstract 
  16.  
  17.    This memo specifies a profile of the ISO/IEC 8473 Connectionless-mode    Network Layer Protocol (CLNP, [1]) for use in conjunction with RFC    1347, TCP/UDP over Bigger Addresses (TUBA, [2]).  It describes the    use of CLNP to provide the lower-level service expected by    Transmission Control Protocol (TCP, [3]) and User Datagram Protocol    (UDP, [4]).  CLNP provides essentially the same datagram service as    Internet Protocol (IP, [5]), but offers a means of conveying bigger    network addresses (with additional structure, to aid routing). 
  18.  
  19.    While the protocols offer nearly the same services, IP and CLNP are    not identical. This document describes a means of preserving the    semantics of IP information that is absent from CLNP while preserving    consistency between the use of CLNP in Internet and OSI environments.    This maximizes the use of already-deployed CLNP implementations. 
  20.  
  21. Acknowledgments 
  22.  
  23.    Many thanks to Ross Callon (Wellfleet Communications), John Curran    (BBN), Cyndi Jung (3Com), Paul Brooks (UNSW), Brian Carpenter (CERN),    Keith Sklower (Cal Berkeley), Dino Farinacci and Dave Katz (Cisco    Systems), Rich Colella (NIST/CSL) and David Oran (DEC) for their    assistance in composing this text. 
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37. Piscitello                                                      [Page 1] 
  38.  RFC 1561               CLNP in TUBA Environments           December 1993 
  39.  
  40.  Conventions 
  41.  
  42.    The following language conventions are used in the items of    specification in this document: 
  43.  
  44.          * MUST, SHALL, or MANDATORY -- the item is an absolute            requirement of the specification. 
  45.  
  46.          * SHOULD or RECOMMENDED -- the item should generally be            followed for all but exceptional circumstances. 
  47.  
  48.          * MAY or OPTIONAL -- the item is truly optional and may be            followed or ignored according to the needs of the            implementor. 
  49.  
  50. 1.  Terminology 
  51.  
  52.    To the extent possible, this document is written in the language of    the Internet. For example, packet is used rather than "protocol data    unit", and "fragment" is used rather than "segment".  There are some    terms that carry over from OSI; these are, for the most part, used so    that cross-reference between this document and RFC 994 [6] or ISO/IEC    8473 is not entirely painful.  OSI acronyms are for the most part    avoided. 
  53.  
  54. 2.  Introduction 
  55.  
  56.    The goal of this specification is to allow compatible and    interoperable implementations to encapsulate TCP and UDP packets in    CLNP data units. In a sense, it is more of a "hosts requirements"    document for the network layer of TUBA implementations than a    protocol specification. It is assumed that readers are familiar with    STD 5, RFC 791, STD 5, RFC 792 [7], STD 3, RFC 1122 [8], and, to a    lesser extent, RFC 994 and ISO/IEC 8473.  This document is compatible    with (although more restrictive than) ISO/IEC 8473; specifically, the    order, semantics, and processing of CLNP header fields is consistent    between this and ISO/IEC 8473. 
  57.  
  58.    [Note: RFC 994 contains the Draft International Standard version of    ISO CLNP, in ASCII text. This is not the final version of the ISO/IEC    protocol specification; however, it should provide sufficient    background for the purpose of understanding the relationship of CLNP    to IP, and the means whereby IP information is to be encoded in CLNP    header fields. Postscript versions of ISO CLNP and associated routing    protocols are available via anonymous FTP from merit.edu, and may be    found in the directory /pub/ISO/IEC. 
  59.  
  60.  
  61.  
  62.  
  63.  
  64. Piscitello                                                      [Page 2] 
  65.  RFC 1561               CLNP in TUBA Environments           December 1993 
  66.  
  67.  3.  Overview of CLNP 
  68.  
  69.    ISO CLNP is a datagram network protocol. It provides fundamentally    the same underlying service to a transport layer as IP. CLNP provides    essentially the same maximum datagram size, and for those    circumstances where datagrams may need to traverse a network whose    maximum packet size is smaller than the size of the datagram, CLNP    provides mechanisms for fragmentation (data unit identification,    fragment/total length and offset). Like IP, a checksum computed on    the CLNP header provides a verification that the information used in    processing the CLNP datagram has been transmitted correctly, and a    lifetime control mechanism ("Time to Live") imposes a limit on the    amount of time a datagram is allowed to remain in the internet    system. As is the case in IP, a set of options provides control    functions needed or useful in some situations but unnecessary for the    most common communications. 
  70.  
  71.    Note that the encoding of options differs between the two protocols,    as do the means of higher level protocol identification. Note also    that CLNP and IP differ in the way header and fragment lengths are    represented, and that the granularity of lifetime control (time-to-    live) is finer in CLNP. 
  72.  
  73.    Some of these differences are not considered "issues", as CLNP    provides flexibility in the way that certain options may be specified    and encoded (this will facilitate the use and encoding of certain IP    options without change in syntax); others, e.g., higher level    protocol identification and timestamp, must be accommodated in a    transparent manner in this profile for correct operation of TCP and    UDP, and continued interoperability with OSI implementations. Section    4 describes how header fields of CLNP must be populated to satisfy    the needs of TCP and UDP. 
  74.  
  75.    Errors detected during the processing of a CLNP datagram MAY be    reported using CLNP Error Reports. Implementations of CLNP for TUBA    environments MUST be capable of processing Error Reports (this is    consistent with the 1992 edition (2)  of the ISO/IEC 8473 standard).    Control messages (e.g., echo request/reply and redirect) are    similarly handled in CLNP, i.e., identified as separate network layer    packet types.  The relationship between CLNP Error and Control    messages and Internet Control Message Protocol (ICMP, [7]), and    issues relating to the handling of these messages is described in    Section 5. 
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  Piscitello                                                      [Page 3] 
  84.  RFC 1561               CLNP in TUBA Environments           December 1993 
  85.  
  86.     Table 1 provides a high-level comparison of CLNP to IP: 
  87.  
  88.  Function              | ISO CLNP               | DOD IP  ----------------------|------------------------|-----------------------  Header Length         | indicated in octets    | in 32-bit words  Version Identifier    | 1 octet                | 4 bits  Lifetime (TTL)        | 500 msec units         | 1 sec units  Flags                 | Fragmentation allowed, | Don't Fragment,                        | More Fragments         | More Fragments,                        | Suppress Error Reports | <not defined>  Packet Type           | 5 bits                 | <not defined>  Fragment Length       | 16 bits, in octets     | 16 bits, in octets  Header Checksum       | 16-bit (Fletcher)      | 16-bit  Total Length          | 16 bits, in octets     | <not defined>  Addressing            | Variable length        | 32-bit fixed  Data Unit Identifier  | 16 bits                | 16 bits  Fragment offset       | 16 bits, in octets     | 13 bits, 8-octet units  Higher Layer Protocol | Selector in address    | Protocol  Options               | Security               | Security                        | Priority               | TOS Precedence bits                        | Complete Source Route  | Strict Source Route                        | Quality of Service     | Type of Service                        | Partial Source Route   | Loose Source Route                        | Record Route           | Record Route                        | Padding                | Padding                        | <defined herein>       | Timestamp 
  89.  
  90.                  Table 1. Comparison of IP to CLNP 
  91.  
  92.    The composition and processing of a TCP pseudo-header when CLNP is    used to provide the lower-level service expected by TCP and UDP is    described in Section 6. 
  93.  
  94.    [Note: This experimental RFC does not discuss multicasting.    Presently, there are proposals for multicast extensions for CLNP in    ISO/IEC/JTC1/SC6, and a parallel effort within TUBA. A future    revision to this RFC will incorporate any extensions to CLNP that may    be introduced as a result of the adoption of one of these    alternatives.] 
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  Piscitello                                                      [Page 4] 
  107.  RFC 1561               CLNP in TUBA Environments           December 1993 
  108.  
  109.  4.  Proposed Internet Header using CLNP 
  110.  
  111.    A summary of the contents of the CLNP header, as it is proposed for    use in TUBA environments, is illustrated in Figure 4-1: 
  112.  
  113.    0                   1                   2                   3    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |        ........Data Link Header........       | NLP ID        |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |Header Length  |     Version   | Lifetime (TTL)|Flags|  Type   |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |        Fragment Length        |           Checksum            |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   | Dest Addr Len |               Destination Address...          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |               ... Destination Address...                      |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |               ... Destination Address...                      |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |               ... Destination Address...                      |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |               ... Destination Address...                      |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   | PROTO field   | Src  Addr Len |  Source  Address...           |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |               ... Source Address...                           |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |               ... Source Address...                           |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |               ... Source Address...                           |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |               ... Source Address...                           |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |Source Address |   Reserved    |       Data Unit Identifier    |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |         Fragment Offset       |   Total Length of packet      |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                   Options  (see Table 1)                      |   |                                                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                               Data                            |   |                                                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  114.  
  115.          Note that each tick mark represents one bit position. 
  116.  
  117.                      Figure 4-1. CLNP for TUBA 
  118.  
  119.  
  120.  
  121. Piscitello                                                      [Page 5] 
  122.  RFC 1561               CLNP in TUBA Environments           December 1993 
  123.  
  124.    Note 1: For illustrative purposes, Figure 4-1 shows Destination           and Source Addresses having a length of 19 octets,           including the PROTO/reserved field. In general, addresses           can be variable length, up to a maximum of 20 octets,           including the PROTO/reserved field. 
  125.  
  126.   Note 2: Due to differences in link layer protocols, it is not           possible to ensure that the packet starts on an even           alignment. Note, however, that many link level protocols           over which CLNP is operated use a odd length link           (e.g., IEEE 802.2). (In Figure 4-1, the rest of the CLNP           packet is even-aligned.) 
  127.  
  128.    The encoding of CLNP fields for use in TUBA environments is as    follows. 
  129.  
  130. 4.1  Network Layer Protocol Identification (NLP ID) 
  131.  
  132.    This one-octet field identifies this as the ISO/IEC 8473 protocol; it    MUST set to binary 1000 0001. 
  133.  
  134. 4.2  Header Length Indication (Header Length) 
  135.  
  136.    Header Length is the length of the CLNP header in octets, and thus    points to the beginning of the data. The value 255 is reserved. The    header length is the same for all fragments of the same (original)    CLNP packet. 
  137.  
  138. 4.3  Version 
  139.  
  140.    This one-octet field identifies the version of the protocol; it MUST    be set to a binary value 0000 0001. 
  141.  
  142. 4.4  Lifetime (TTL) 
  143.  
  144.    Like the TTL field of IP, this field indicates the maximum time the    datagram is allowed to remain in the internet system.  If this field    contains the value zero, then the datagram MUST be destroyed; a host,    however, MUST NOT send a datagram with a lifetime value of zero.    This field is modified in internet header processing.  The time is    measured in units of 500 milliseconds, but since every module that    processes a datagram MUST decrease the TTL by at least one even if it    process the datagram in less than 500 millisecond, the TTL must be    thought of only as an upper bound on the time a datagram may exist.    The intention is to cause undeliverable datagrams to be discarded,    and to bound the maximum CLNP datagram lifetime. [Like IP, the    colloquial usage of TTL in CLNP is as a coarse hop-count.]  
  145.  
  146.  
  147.  
  148. Piscitello                                                      [Page 6] 
  149.  RFC 1561               CLNP in TUBA Environments           December 1993 
  150.  
  151.     Unless otherwise directed, a host SHOULD use a value of 255 as the    initial lifetime value. 
  152.  
  153. 4.5  Flags 
  154.  
  155.    Three flags are defined. These occupy bits 0, 1, and 2 of the    Flags/Type octet: 
  156.  
  157.                           0   1   2                         +---+---+---+                         | F | M | E |                         | P | F | R |                         +---+---+---+ 
  158.  
  159.    The Fragmentation Permitted (FP) flag, when set to a value of one    (1), is semantically equivalent to the "may fragment" value of the    Don't Fragment field of IP; similarly, when set to zero (0), the    Fragmentation Permitted flag is semantically equivalent to the "Don't    Fragment" value of the Don't Fragment Flag of IP. 
  160.  
  161.    [Note: If the Fragmentation Permitted field is set to the value 0,    then the Data Unit Identifier, Fragment Offset, and Total Length    fields are not present. This denotes a single fragment datagram. In    such datagrams, the Fragment Length field contains the total length    of the datagram.] 
  162.  
  163.    The More Fragments flag of CLNP is semantically and syntactically the    same as the More Fragments flag of IP; a value of one (1) indicates    that more segments/fragments are forthcoming; a value of zero (0)    indicates that the last octet of the original packet is present in    this segment. 
  164.  
  165.    The Error Report (ER) flag is used to suppress the generation of an    error message by a host/router that detects an error during the    processing of a CLNP datagram; a value of one (1) indicates that the    host that originated this datagram thinks error reports are useful,    and would dearly love to receive one if a host/router finds it    necessary to discard its datagram(s). 
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179. Piscitello                                                      [Page 7] 
  180.  RFC 1561               CLNP in TUBA Environments           December 1993 
  181.  
  182.  4.6  Type field 
  183.  
  184.    The type field distinguishes data CLNP packets from Error Reports    from Echo packets. The following values of the type field apply: 
  185.  
  186.      0   1   2   3   4   5   6   7    +---+---+---+---+---+---+---+---+    |   flags   | 1 | 1 | 1 | 0 | 0 |  => Encoding of Type = data packet    +---+---+---+---+---+---+---+---+    |   flags   | 0 | 0 | 0 | 0 | 1 |  => Encoding of Type = error report    +---+---+---+---+---+---+---+---+    |   flags   | 1 | 1 | 1 | 1 | 0 |  => Encoding of Type = echo request    +---+---+---+---+---+---+---+---+    |   flags   | 1 | 1 | 1 | 1 | 1 |  => Encoding of Type = echo reply    +---+---+---+---+---+---+---+---+ 
  187.  
  188.    Error Report packets are described in Section 5. 
  189.  
  190.    Echo packets and their use are described in RFC 1139 [9]. 
  191.  
  192. 4.7  Fragment Length 
  193.  
  194.    Like the Total Length of the IP header, the Fragment length field    contains the length in octets of the fragment (i.e., this datagram)    including both header and data. 
  195.  
  196.    [Note: CLNP also may also have a Total Length field, that contains    the length of the original datagram; i.e., the sum of the length of    the CLNP header plus the length of the data submitted by the higher    level protocol, e.g., TCP or UDP. See Section 4.12.] 
  197.  
  198. 4.8  Checksum 
  199.  
  200.    A checksum is computed on the header only. It MUST be verified at    each host/router that processes the packet; if header fields are    changed during processing (e.g., the Lifetime), the checksum is    modified. If the checksum is not used, this field MUST be coded with    a value of zero (0). See Appendix A for algorithms used in the    computation and adjustment of the checksum. Readers are encouraged to    see [10] for a description of an efficient implementation of the    checksum algorithm. 
  201.  
  202. 4.9  Addressing 
  203.  
  204.    CLNP uses OSI network service access point addresses (NSAPAs); NSAPAs    serve the same identification and location functions as an IP    address, plus the protocol selector value encoded in the IPv4    datagram header, and  with additional hierarchy.  General purpose 
  205.  
  206.  
  207.  
  208. Piscitello                                                      [Page 8] 
  209.  RFC 1561               CLNP in TUBA Environments           December 1993 
  210.  
  211.     CLNP implementations MUST handle NSAP addresses of variable length up    to 20 octets, as defined in ISO/IEC 8348 [11]. TUBA implementations,    especially routers, MUST accommodate these as well. Thus, for    compatibility and interoperability with OSI use of CLNP, the initial    octet of the Destination Address is assumed to be an Authority and    Format Indicator, as defined in ISO/IEC 8348. NSAP addresses may be    between 8 and 20 octets long (inclusive). 
  212.  
  213.    TUBA implementations MUST support both ANSI and GOSIP style    addresses; these are described in RFC 1237 [12], and illustrated in    Figure 4-2.  RFC 1237 describes the ANSI/GOSIP initial domain parts    as well as the format and composition of the domain specific part. It    is further recommended that TUBA implementations support the    assignment of system identifiers for TUBA/CLNP hosts defined in [13]    for the purposes of host address autoconfiguration as described in    [14]. Additional considerations specific to the interpretation and    encoding of the selector part are described in sections 4.9.2 and    4.9.4. 
  214.  
  215.             +-------------+             | <-- IDP --> |             +----+--------+----------------------------------+             |AFI |  IDI   |           <-- DSP -->            |             +----+--------+----+---+-----+----+-----+---+----+             | 47 |  0005  |DFI |AA |Rsvd | RD |Area |ID |Sel |             +----+--------+----+---+-----+----+-----+---+----+      octets | 1  |   2    | 1  | 3 |  2  | 2  | 2   | 6 | 1  |             +----+--------+----+---+-----+----+-----+---+----+ 
  216.  
  217.                  Figure 4-2 (a): GOSIP Version 2 NSAP structure. 
  218.  
  219.             +-------------+             |<-- IDP -->  |             +----+--------+----------------------------------+             |AFI |  IDI   |          <-- DSP -->             |             +----+--------+----+---+-----+----+-----+---+----+             | 39 |  840   |DFI |ORG|Rsvd | RD |Area |ID |Sel |             +----+--------+----+---+-----+----+-----+---+----+      octets | 1  |   2    | 1  | 3 |  2  | 2  |  2  | 6 | 1  |             +----+--------+----+---+-----+----+-----+---+----+ 
  220.  
  221.              Figure 4-2 (b): ANSI NSAP address format for DCC=840 
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231. Piscitello                                                      [Page 9] 
  232.  RFC 1561               CLNP in TUBA Environments           December 1993 
  233.  
  234.          Definitions:                      IDP   Initial Domain Part                      AFI   Authority and Format Identifier                      IDI   Initial Domain Identifier                      DSP   Domain Specific Part                      DFI   DSP Format Identifier                      AA    Administration Authority                      ORG   Organization Name (numeric form)                      Rsvd  Reserved                      RD    Routing Domain Identifier                      Area  Area Identifier                      ID    System Identifier                      Sel   NSAP Selector 
  235.  
  236. 4.9.1  Destination Address Length Indicator 
  237.  
  238.    This field indicates the length, in octets, of the Destination    Address. 
  239.  
  240. 4.9.2  Destination Address 
  241.  
  242.    This field contains an OSI NSAP address, as described in Section 4.9.    It MUST always contain the address of the final destination. (This is    true even for packets containing a source route option, see Section    4.13.4). 
  243.  
  244.    The final octet of the destination address MUST always contain the    value of the PROTO field, as defined in IP.  The 8-bit PROTO field    indicates the next level protocol used in the data portion of the    CLNP datagram.  The values for various protocols are specified in    "Assigned Numbers" [15]. For the PROTO field, the value of zero (0)    is reserved. 
  245.  
  246.    TUBA implementations that support TCP/UDP as well as OSI MUST use the    protocol value (1Dh, Internet decimal 29) reserved for ISO transport    protocol class 4. 
  247.  
  248. 4.9.3  Source Address Length Indicator 
  249.  
  250.    This field indicates the length, in octets, of the Source Address. 
  251.  
  252. 4.9.4  Source Address 
  253.  
  254.    This field contains an OSI NSAP address, as described in Section 4.9. 
  255.  
  256.    The final octet of the source address is reserved. It MAY be set to    the protocol field value on transmission, and shall be ignored on    reception (the value of zero MUST not be used). 
  257.  
  258.  
  259.  
  260. Piscitello                                                     [Page 10] 
  261.  RFC 1561               CLNP in TUBA Environments           December 1993 
  262.  
  263.  4.10  Data Unit Identifier 
  264.  
  265.    Like the Identification field of IP, this 16-bit field is used to    distinguish segments of the same (original) packet for the purposes    of reassembly. This field is present when the fragmentation permitted    flag is set to one. 
  266.  
  267. 4.11  Fragment Offset 
  268.  
  269.    Like the Fragment Offset of IP, this 16-bit is used to identify the    relative octet position of the data in this fragment with respect to    the start of the data submitted to CLNP; i.e., it indicates where in    the original datagram this fragment belongs.  The offset is measured    in octets; the value of this field shall always be a multiple of    eight (8). This field is present when the fragmentation permitted    flag is set to one. 
  270.  
  271. 4.12  Total Length 
  272.  
  273.    The total length of the CLNP packet in octets is determined by the    originator and placed in the Total Length field of the header. The    Total Length field specifies the entire length of the original    datagram, including both the header and data. This field MUST NOT be    changed in any fragment of the original packet for the duration of    the packet lifetime. This field is present when the fragmentation    permitted flag is set to one. 
  274.  
  275. 4.13  Options 
  276.  
  277.    All CLNP options are "triplets" of the form <parameter code>,    <parameter length>, and <parameter value>.  Both the parameter code    and length fields are always one octet long; the length parameter    value, in octets, is indicated in the parameter length field. The    following options are defined for CLNP for TUBA. 
  278.  
  279. 4.13.1  Security 
  280.  
  281.    The value of the parameter code field is binary 1100 0101. The length    field MUST be set to the length of a Basic (and Extended) Security IP    option(s) as identified in RFC 1108 [16], plus 1.  Octet 1 of the    security parameter value field -- the CLNP Security Format Code -- is    set to a binary value 0100 0000, indicating that the remaining octets    of the security field contain either the Basic or Basic and Extended    Security options as identified in RFC 1108. This encoding points to    the administration of the source address (e.g., ISOC) as the    administration of the security option; it is thus distinguished from    the globally unique format whose definition is reserved for OSI use.    Implementations wishing to use a security option MUST examine the 
  282.  
  283.  
  284.  
  285. Piscitello                                                     [Page 11] 
  286.  RFC 1561               CLNP in TUBA Environments           December 1993 
  287.  
  288.     PROTO field in the source address; if the value of PROTO indicates    the CLNP client is TCP or UDP, the security option described in RFC    1108 is used. 
  289.  
  290.    [Note: If IP options change, TUBA implementations MUST follow the new    recommendations. This RFC, or revisions thereof, must document the    new recommendations to assure compatibility.] 
  291.  
  292.    The formats of the Security option, encoded as a CLNP option, is as    follows. The CLNP option will be used to convey the Basic and    Extended Security options as sub-options; i.e., the exact encoding of    the Basic/Extended Security IP Option is carried in a single CLNP    Security Option, with the length of the CLNP Security option    reflecting the sum of the lengths of the Basic and Extended Security    IP Option. 
  293.  
  294.    +--------+--------+--------+--------+--------+---//----+-    |11000100|XXXXXXXX|01000000|10000010|YYYYYYYY|         |      ...    +--------+--------+--------+--------+--------+---//----+----     CLNP       CLNP     CLNP     BASIC   BASIC    BASIC     OPTION    OPTION   FORMAT  SECURITY  OPTION   OPTION     TYPE      LENGTH    CODE    TYPE     LENGTH   VALUE     (197)                       (130) 
  295.  
  296.                           ---+------------+------------+----//-------+                      ...     |  10000101  |  000LLLLL  |             |                         -----+------------+------------+----//-------+                                 EXTENDED     EXTENDED    EXTENDED OPTION                                 OPTION       OPTION          VALUE                                TYPE (133)    LENGTH 
  297.  
  298.    The syntax, semantics and  processing of the Basic and Extended IP    Security Options are defined in RFC 1108. 
  299.  
  300. 4.13.2  Type of Service 
  301.  
  302.    [Note: Early drafts recommended the use of IP Type of Service as    specified in RFC 1349. There now appears to be a broad consensus that    this encoding is insufficient, and there is renewed interest in    exploring the utility of the "congestion experienced" flag available    in the CLNP QOS Maintenance option. This RFC thus recommends the use    of the QOS Maintenance option native to CLNP.] 
  303.  
  304.    The Quality of Service Maintenance option allows the originator of a    CLNP datagram to convey information about the quality of service    requested by the originating upper layer process. Routers MAY use    this information as an aid in selecting a route when more than one    route satisfying other routing criteria is available and the 
  305.  
  306.  
  307.  
  308. Piscitello                                                     [Page 12] 
  309.  RFC 1561               CLNP in TUBA Environments           December 1993 
  310.  
  311.     available routes are know to differ with respect to the following    qualities of service: ability to preserve sequence, transit delay,    cost, residual error probability. Through this option, a router may    also indicate that it is experiencing congestion. 
  312.  
  313.    The encoding of this option is as follows: 
  314.  
  315.       +-----------+-----------+----------+       | 1100 0011 | 0000 0001 | 110ABCDE |       +-----------+-----------+----------+        CLNP QOS     OPTION      QOS FLAGS        TYPE (195)   LENGTH 
  316.  
  317.    The value of the parameter code field MUST be set to a value of    binary 1100 0011 (the CLNP Quality of Service Option Code point).    The length field MUST be set to one (1). 
  318.  
  319.    Bits 8-6 MUST be set as indicated in the figure. The flags "ABCDE"    are interpreted as follows: 
  320.  
  321.          A=1  choose path that maintains sequence over               one that minimizes transit delay          A=0  choose path that minimizes transit delay over               one that maintains sequence          B=1  congestion experienced          B=0  no congestion to report          C=1  choose path that minimizes transit delay over               over low cost          C=0  choose low cost over path that               minimizes transit delay          D=1  choose pathe with low residual error probability over               one that minimizes transit delay          D=0  choose path that minimizes transit delay over               one with low residual error probability          E=1  choose path with low residual error probability over               low cost          E=0  choose path with low cost over one with low               residual error probability 
  322.  
  323. 4.13.3  Padding 
  324.  
  325.    The padding field is used to lengthen the packet header to a    convenient size. The parameter code field MUST be set to a value of    binary 1100 1100. The value of the  parameter length field is    variable. The parameter value MAY contain any value; the contents of    padding fields MUST be ignored by the receiver. 
  326.  
  327.  
  328.  
  329.  
  330.  
  331. Piscitello                                                     [Page 13] 
  332.  RFC 1561               CLNP in TUBA Environments           December 1993 
  333.  
  334.        +----------+----------+-----------+       | 11001100 | LLLLLLLL | VVVV VVVV |       +----------+----------+-----------+ 
  335.  
  336. 4.13.4  Source Routing 
  337.  
  338.    Like the strict source route option of IP, the Complete Source Route    option of CLNP is used to specify the exact and entire route an    internet datagram MUST take. Similarly, the Partial Source Route    option of CLNP provides the equivalent of the loose source route    option of IP; i.e., a means for the source of an internet datagram to    supply (some) routing information to be used by gateways in    forwarding the internet datagram towards its destination. The    identifiers encoded in this option are network entity titles, which    are semantically and syntactically the same as NSAPAs and which can    be used to unambiguously identify a network entity in an intermediate    system (router). 
  339.  
  340.    The parameter code for Source Routing is binary 1100 1000. The length    of the source routing parameter value is variable. 
  341.  
  342.    The first octet of the parameter value is a type code, indicating    Complete Source Routing (binary 0000 0001) or Partial Source Routing    (binary 0000 0000). The second octet identifies the offset of the    next network entity title to be processed in the list, relative to    the start of the parameter (i.e., a value of 3 is used to identify    the first address in the list). The offset value is modified by each    router using a complete source route or by each listed router using a    partial source route to point to the next NET. 
  343.  
  344.    The third octet begins the list of network entity titles. Only the    NETs of intermediate systems are included in the list; the source and    destination addresses shall not be included.  The list consists of    variable length network entity title entries; the first octet of each    entry gives the length of the network entity title that comprises the    remainder of the entry. 
  345.  
  346. 4.13.5  Record Route 
  347.  
  348.    Like the IP record route option, the Record route option of CLNP is    used to trace the route a CLNP datagram takes.  A recorded route    consists of a list of network entity titles (see Source Routing). The    list is constructed as the CLNP datagram is forwarded along a path    towards its final destination. Only titles of intermediate systems    (routers) that processed the datagram are included in the recorded    route; the network entity title of the originator of the datagram    SHALL NOT be recorded in the list. 
  349.  
  350.  
  351.  
  352.  Piscitello                                                     [Page 14] 
  353.  RFC 1561               CLNP in TUBA Environments           December 1993 
  354.  
  355.     The parameter code for Record Route is binary 1100 1011. The length    of the record route parameter value is variable. 
  356.  
  357.    The first octet of the parameter value is a type code, indicating    Complete Recording of Route (0000 0001) or Partial Recording of Route    (0000 0000). When complete recording of route is selected, reassembly    at intermediate systems MAY be performed only when all fragments of a    given datagram followed the same route; partial recording of route    eliminates or "loosens" this constraint. 
  358.  
  359.    The second octet identifies the offset where the next network entity    title entry (see Source Routing) MAY be recorded (i.e., the end of    the current list), relative to the start of the parameter.  A value    of 3 is used to identify the initial recording position. The process    of recording a network entity title entry is as follows. A router    adds the length of its network entity title entry to the value of    record route offset and compares this new value to the record route    list length indicator; if the value does not exceed the length of the    list, entity title entry is recorded, and the offset value is    incremented by the value of the length of the network entity title    entry. Otherwise, the recording of route is terminated, and the    router MUST not record its network entity title in the option. If    recording of route has been terminated, this (second) octet has a    value 255. 
  360.  
  361.    The third octet begins the list of network entity titles. 
  362.  
  363. 4.13.6  Timestamp 
  364.  
  365.    [Note: There is no timestamp option in edition 1 of ISO/IEC 8473, but    the option has been proposed and submitted to ISO/IEC JTC1/SC6.] 
  366.  
  367.    The parameter code value 1110 1110 is used to identify the Timestamp    option; the syntax and semantics of Timestamp are identical to that    defined in IP. 
  368.  
  369.    The Timestamp Option is defined in STD 5, RFC 791. The CLNP parameter    code 1110 1110 is used rather than the option type code 68 to    identify the Timestamp option, and  the parameter value conveys the    option length. Octet 1 of the Timestamp parameter value shall be    encoded as the pointer (octet 3 of IP Timestamp); octet 2 of the    parameter value shall be encoded as the overflow/format octet (octet    4 of IP Timestamp); the remaining octets shall be used to encode the    timestamp list. The size is fixed by the source, and cannot be    changed to accommodate additional timestamp information. 
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  Piscitello                                                     [Page 15] 
  376.  RFC 1561               CLNP in TUBA Environments           December 1993 
  377.  
  378.          +--------+--------+--------+--------+         |11101110| length | pointer|oflw|flg|         +--------+--------+--------+--------+         |         network entity title      |         +--------+--------+--------+--------+         |             timestamp             |         +--------+--------+--------+--------+         |                 .                 |                           . 
  379.  
  380. 5.  Error Reporting and Control Message Handling 
  381.  
  382.    CLNP and IP  differ in the way in which errors are reported to hosts.    In IP environments, the Internet Control Message Protocol (ICMP, [7])    is used to return (error) messages to hosts that originate packets    that cannot be processed. ICMP messages are transmitted as user data    in IP datagrams. Unreachable destinations, incorrectly composed IP    datagram headers, IP datagram discards due to congestion, and    lifetime/reassembly time exceeded are reported; the complete internet    header that caused the error plus (at least) 8 octets of the segment    contained in that IP datagram are returned to the sender as part of    the ICMP error message. For certain errors, e.g., incorrectly    composed IP datagram headers, the specific octet which caused the    problem is identified. 
  383.  
  384.    In CLNP environments, an unique message type, the Error Report type,    is used in the network layer protocol header to distinguish Error    Reports from CLNP datagrams. CLNP Error Reports are generated on    detection of the same types of errors as with ICMP.  Like ICMP error    messages, the complete CLNP header that caused the error is returned    to the sender in the data portion of the Error Report.    Implementations SHOULD return at least 8 octets of the datagram    contained in the CLNP datagram to the sender of the original CLNP    datagram. Here too, for certain errors, the specific octet which    caused the problem is identified. 
  385.  
  386.    A summary of the contents of the CLNP Error Report, as it is proposed    for use in TUBA environments, is illustrated in Figure 5-1: 
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. Piscitello                                                     [Page 16] 
  401.  RFC 1561               CLNP in TUBA Environments           December 1993 
  402.  
  403.      0                   1                   2                   3     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |        ........Data Link Header........       | NLP ID        |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |Header Length  |     Version   | Lifetime (TTL)| 000 | Type=ER |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |  TOTAL Length of Error Report |           Checksum            |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    | Dest Addr Len |               Destination Address...          |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Destination Address...                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Destination Address...                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Destination Address...                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Destination Address...                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    | PROTO field   | Src  Addr Len |  Source  Address...           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Source Address...                           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Source Address...                           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Source Address...                           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Source Address...                           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |       ... Source Address      | Reason for Discard (type/len) |    |                               |   1100 0001   | 0000 0010     |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |     Reason for Discard        |    Options...                 |    |   code        |   pointer     |                               |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                           Options                             |    :                                                               :    |                                                               |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                            Data                               |    :                                                               :    |                                                               |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  404.  
  405.              Note that each tick mark represents one bit position. 
  406.  
  407.                       Figure 5-1. Error Report Format 
  408.  
  409.  
  410.  
  411.  Piscitello                                                     [Page 17] 
  412.  RFC 1561               CLNP in TUBA Environments           December 1993 
  413.  
  414.  5.1  Rules for processing an Error Report 
  415.  
  416.    The following is a summary of the rules for processing an Error    Report: 
  417.  
  418.          * An Error Report is not generated to report a problem            encountered while processing an Error Report. 
  419.  
  420.          * Error Reports MAY NOT be fragmented (hence, the            fragmentation part is absent). 
  421.  
  422.          * The Reason for Discard Code field is populated with one of            the values from Table 5-1. 
  423.  
  424.          * The Pointer field is populated with number of the first            octet of the field that caused the Error Report to be            generated. If it is not possible to identify the offending            octet, this field MUST be zeroed. 
  425.  
  426.          * If the Priority or Type of Service option is present in the            errored datagram, the Error Report MUST specify the same            option, using the value specified in the original datagram. 
  427.  
  428.          * If the Security option is present in the errored datagram,            the Error Report MUST specify the same option, using the            value specified in the original datagram; if the Security            option is not supported by the intermediate system, no Error            Report is to be generated (i.e., "silently discard" the            received datagram). 
  429.  
  430.          * If the Complete Source Route option is specified in the            errored datagram, the Error Report MUST compose a reverse of            that route, and return the datagram along the same path. 
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  Piscitello                                                     [Page 18] 
  449.  RFC 1561               CLNP in TUBA Environments           December 1993 
  450.  
  451.  5.2  Comparison of ICMP and CLNP Error Messages 
  452.  
  453.    Table 5-1 provides a loose comparison of ICMP message types and codes    to CLNP Error Type Codes (values in Internet decimal): 
  454.  
  455.  CLNP Error Type  Codes            | ICMP Message           (Type, Code)  ----------------------------------|------------------------------------  Reason not specified          (0) | Parameter Problem           (12, 0)  Protocol Procedure Error      (1) | Parameter Problem           (12, 0)  Incorrect Checksum            (2) | Parameter Problem           (12, 0)  PDU Discarded--Congestion     (3) | Source Quench                (4, 0)  Header Syntax Error           (4) | Parameter problem           (12, 0)  Need to Fragment could not    (5) | Frag needed, DF set          (3, 4)  Incomplete PDU received       (6) | Parameter Problem           (12, 0)  Duplicate Option              (7) | Parameter Problem           (12, 0)  Destination Unreachable     (128) | Dest Unreachable,Net unknown (3, 0)  Destination Unknown         (129) | Dest Unreachable,host unknown(3, 1)  Source Routing Error        (144) | Source Route failed          (3, 5)  Source Route Syntax Error   (145) | Source Route failed          (3, 5)  Unknown Address in Src Route(146) | Source Route failed          (3, 5)  Path not acceptable         (147) | Source Route failed          (3, 5)  Lifetime expired            (160) | TTL exceeded                (11, 0)  Reassembly Lifetime Expired (161) | Reassembly time exceeded    (11, 1)  Unsupported Option          (176) | Parameter Problem           (12, 0)  Unsupported Protocol Version(177) | Parameter problem           (12, 0)  Unsupported Security Option (178) | Parameter problem           (12, 0)  Unsupported Src Rte Option  (179) | Parameter problem           (12, 0)  Unsupported Rcrd Rte        (180) | Parameter problem           (12, 0)  Reassembly interference     (192) | Reassembly time exceeded    (11, 1) 
  456.  
  457.     Table 5-1. Comparison of CLNP Error Reports to ICMP Error Messages 
  458.  
  459.  Note 1: The current accepted practice for IP is that source quench          should not be used; if it is used, implementations MUST          not return a source quench packet for every relevant packet.          TUBA/CLNP implementations are encouraged to adhere to these          guidelines. 
  460.  
  461.  Note 2: There are no corresponding CLNP Error Report Codes for the          following ICMP error message types:          - Protocol Unreachable  (3, 2)          - Port Unreachable      (3, 3)          [Note: Additional error code points available in the ER type               code block can be used to identify these message types.] 
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469. Piscitello                                                     [Page 19] 
  470.  RFC 1561               CLNP in TUBA Environments           December 1993 
  471.  
  472.  6.  Pseudo-Header Considerations 
  473.  
  474.    A checksum is computed on UDP and TCP segments to verify the    integrity of the UDP/TCP segment. To further verify that the UDP/TCP    segment has arrived at its correct destination, a pseudo-header    consisting of information used in the delivery of the UDP/TCP segment    is composed and included in the checksum computation. 
  475.  
  476.    To compute the checksum on a UDP or TCP segment prior to    transmission, implementations MUST compose a pseudo-header to the    UDP/TCP segment consisting of the following information that will be    used when composing the CLNP datagram: 
  477.  
  478.          * Destination Address Length Indicator 
  479.  
  480.          * Destination Address (including PROTO field) 
  481.  
  482.          * Source Address Length Indicator 
  483.  
  484.          * Source Address (including Reserved field) 
  485.  
  486.          * A two-octet encoding of the Protocol value 
  487.  
  488.          * TCP/UDP segment length 
  489.  
  490.    If the length of the {source address length field + source address +    destination address field + destination address } is not an integral    number of octets, a trailing 0x00 nibble is padded. If GOSIP    compliant NSAP addresses are used, this never happens (this is known    as the Farinacci uncertainty principle).  The last byte in the    Destination Address has the value 0x06 for TCP and 0x11 for UDP, and    the Protocol field is encoded 0x0006 for TCP and 0x0011 for UDP.  If    needed, an octet of zero is added to the end of the UDP/TCP segment    to pad the datagram to a length that is a multiple of 16 bits. 
  491.  
  492.    [Note: the pseudoheader is encoded in this manner to expedite    processing, as it allows implementations to grab a contiguous stream    of octets beginning at the destination address length indicator and    terminating at the final octet of the source address; the PROTOCOL    field is present to have a consistent representation across IPv4 and    CLNP/TUBA implementations.] 
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  Piscitello                                                     [Page 20] 
  503.  RFC 1561               CLNP in TUBA Environments           December 1993 
  504.  
  505.     Figure 6-1 illustrates the resulting pseudo-header when both source    and destination addresses are maximum length. 
  506.  
  507.     0                   1                   2                   3     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    | Dest Addr Len |               Destination Address...          |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Destination Address...                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Destination Address...                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Destination Address...                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Destination Address...                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |    (PROTO)    | Src  Addr Len |  Source  Address...           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Source Address...                           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Source Address...                           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Source Address...                           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |               ... Source Address...                           |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    | ...           | (Reserved)    |    Protocol                   |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |   UDP/TCP segment length      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  508.  
  509.                            Figure 6-1. Pseudo-header 
  510.  
  511. 7.  Security Considerations 
  512.  
  513.    ISO CLNP is an unreliable network datagram protocol, and is subject    to the same security considerations as Internet Protocol ([5], [8]);    methods for conveying the same security handling information    recommended for IP are described in Section 4.13.1, Security Option. 
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  Piscitello                                                     [Page 21] 
  526.  RFC 1561               CLNP in TUBA Environments           December 1993 
  527.  
  528.  8.  Author's Address 
  529.  
  530.    David M. Piscitello    Core Competence    1620 Tuckerstown Road    Dresher, PA 19025 
  531.  
  532.    Phone: 215-830-0692    EMail: wk04464@worldlink.com 
  533.  
  534. 9.  References 
  535.  
  536.    [1] ISO/IEC 8473-1992. International Standards Organization -- Data        Communications -- Protocol for Providing the Connectionless        Network Service, Edition 2. 
  537.  
  538.    [2] Callon, R., "TCP/UDP over Bigger Addresses (TUBA)", RFC 1347,        Internet Architecture Board, May 1992. 
  539.  
  540.    [3] Postel, J., "Transmission Control Protocol (TCP)", STD 7, RFC        793, USC/Information Sciences Institute, September 1981. 
  541.  
  542.    [4] Postel, J., "User Datagram Protocol (UDP)", STD 6, RFC 768,        USC/Information Sciences Institute, September 1981. 
  543.  
  544.    [5] Postel, J., "Internet Protocol (IP)", STD 5, RFC 791,        USC/Information Sciences Institute, September 1981. 
  545.  
  546.    [6] Chapin, L., "ISO DIS 8473, Protocol for Providing the        Connectionless Network Service", RFC 994, March 1986. 
  547.  
  548.    [7] Postel, J., "Internet Control Message Protocol (ICMP)", STD 5,        RFC 792, USC/Information Sciences Institute, September 1981. 
  549.  
  550.    [8] Braden, R., Editor, "Requirements for Internet Hosts -        Communication Layers", STD 3, RFC 1122, Internet Engineering Task        Force, October 1989. 
  551.  
  552.    [9] Hagens, R., "An Echo Function for ISO 8473", RFC 1139, IETF-OSI        Working Group, May 1993. 
  553.  
  554.   [10] Sklower, K., "Improving the Efficiency of the ISO Checksum        Calculation" ACM SIGCOMM CCR 18, no. 5 (October 1989):32-43. 
  555.  
  556.   [11] ISO/IEC 8348-1992. International Standards Organization--Data        Communications--OSI Network Layer Service and Addressing. 
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Piscitello                                                     [Page 22] 
  563.  RFC 1561               CLNP in TUBA Environments           December 1993 
  564.  
  565.    [12] Callon, R., Gardner, E., and R. Hagens, "Guidelines for OSI NSAP        Allocation in the Internet", RFC 1237, NIST, Mitre, DEC, July        1991. 
  566.  
  567.   [13] Piscitello, D., "Assignment of System Identifiers for TUBA/CLNP        Hosts", RFC 1526, Bellcore, September 1993. 
  568.  
  569.   [14] ISO/IEC 9542:1988/PDAM 1. Information Processing Systems -- Data        Communications -- ES/IS Routeing Protocol for use with ISO CLNP        -- Amendment 1: Dynamic Discovery of OSI NSAP Addresses by End        Systems. 
  570.  
  571.   [15] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340        USC/Information Sciences Institute, July 1992. 
  572.  
  573.   [16] Kent, S., "Security Option for IP", RFC 1108, BBN Communications,        November 1991. 
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  Piscitello                                                     [Page 23] 
  608.  RFC 1561               CLNP in TUBA Environments           December 1993 
  609.  
  610.  Appendix A. Checksum Algorithms (from ISO/IEC 8473) 
  611.  
  612.        Symbols used in algorithms: 
  613.  
  614.         c0, c1          variables used in the algorithms         i               position of octet in header (first                         octet is i=1)         Bi              value of octet i in the header         n               position of first octet of checksum (n=8)         L               Length of header in octets         X               Value of octet one of the checksum parameter         Y               Value of octet two of the checksum parameter 
  615.  
  616.    Addition is performed in one of the two following modes: 
  617.  
  618.          * modulo 255 arithmetic; 
  619.  
  620.          * eight-bit one's complement arithmetic; 
  621.  
  622.    The algorithm for Generating the Checksum Parameter Value is as    follows: 
  623.  
  624.   A.  Construct the complete header with the value of the       checksum parameter field set to zero; i.e., c0 <- c1 <- 0; 
  625.  
  626.   B.  Process each octet of the header sequentially from i=1 to L       by: 
  627.  
  628.          * c0 <- c0 + Bi 
  629.  
  630.          * c1 <- c1 + c0 
  631.  
  632.   C.  Calculate X, Y as follows: 
  633.  
  634.          * X <- (L - 8)(c0 - c1) modulo 255 
  635.  
  636.          * Y <- (L - 7)(-C0) + c1 
  637.  
  638.   D.  If X = 0, then X <- 255 
  639.  
  640.   E.  If Y = 0, then Y <- 255 
  641.  
  642.   F.  place the values of X and Y in octets 8 and 9 of the       header, respectively 
  643.  
  644.    The algorithm for checking the value of the checksum parameter is as    follows: 
  645.  
  646.  
  647.  
  648.  Piscitello                                                     [Page 24] 
  649.  RFC 1561               CLNP in TUBA Environments           December 1993 
  650.  
  651.    A.  If octets 8 and 9 of the header both contain zero, then the       checksum calculation has succeeded; else if either but not       both of these octets contains the value zero then the       checksum is incorrect; otherwise, initialize: c0 <- c1 <- 0 
  652.  
  653.   B.  Process each octet of the header sequentially from i = 1 to       L by: 
  654.  
  655.          * c0 <- c0 + Bi 
  656.  
  657.          * c1 <- c1 + c0 
  658.  
  659.   C.  When all the octets have been processed, if c0 = c1 = 0,       then the checksum calculation has succeeded, else it has       failed. 
  660.  
  661.    There is a separate algorithm to adjust the checksum parameter value    when a octet has been modified (such as the TTL). Suppose the value    in octet k is changed by Z = newvalue - oldvalue. If X and Y denote    the checksum values held in octets n and n+1 respectively, then    adjust X and Y as follows: 
  662.  
  663.    If X = 0 and Y = 0 then do nothing, else if X = 0 or Y = 0 then the    checksum is incorrect, else: 
  664.  
  665.    X <- (k - n - 1)Z + X   modulo 255 
  666.  
  667.    Y <- (n - k)Z + Y       modulo 255 
  668.  
  669.    If X = 0, then X <- 255; if Y = 0, then Y <- 255. 
  670.  
  671.    In the example, n = 89; if the octet altered is the TTL (octet 4),    then k = 4. For the case where the lifetime is decreased by one unit    (Z = -1), the assignment statements for the new values of X and Y in    the immediately preceeding algorithm simplify to: 
  672.  
  673.    X <- X + 5      Modulo 255 
  674.  
  675.    Y <- Y - 4      Modulo 255 
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  Piscitello                                                     [Page 25] 
  688.  
  689.