summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1561.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc1561.txt')
-rw-r--r--doc/rfc/rfc1561.txt1403
1 files changed, 1403 insertions, 0 deletions
diff --git a/doc/rfc/rfc1561.txt b/doc/rfc/rfc1561.txt
new file mode 100644
index 0000000..f4b9c22
--- /dev/null
+++ b/doc/rfc/rfc1561.txt
@@ -0,0 +1,1403 @@
+
+
+
+
+
+
+Network Working Group D. Piscitello
+Request for Comments: 1561 Core Competence
+Category: Experimental December 1993
+
+
+ Use of ISO CLNP in TUBA Environments
+
+Status of this Memo
+
+ 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.
+
+Abstract
+
+ 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).
+
+ 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.
+
+Acknowledgments
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 1]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+Conventions
+
+ The following language conventions are used in the items of
+ specification in this document:
+
+ * MUST, SHALL, or MANDATORY -- the item is an absolute
+ requirement of the specification.
+
+ * SHOULD or RECOMMENDED -- the item should generally be
+ followed for all but exceptional circumstances.
+
+ * MAY or OPTIONAL -- the item is truly optional and may be
+ followed or ignored according to the needs of the
+ implementor.
+
+1. Terminology
+
+ 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.
+
+2. Introduction
+
+ 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.
+
+ [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.
+
+
+
+
+
+Piscitello [Page 2]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+3. Overview of CLNP
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+
+
+
+
+
+Piscitello [Page 3]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ Table 1 provides a high-level comparison of CLNP to IP:
+
+ 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
+
+ Table 1. Comparison of IP to CLNP
+
+ 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.
+
+ [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.]
+
+
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 4]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+4. Proposed Internet Header using CLNP
+
+ A summary of the contents of the CLNP header, as it is proposed for
+ use in TUBA environments, is illustrated in Figure 4-1:
+
+ 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 |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Note that each tick mark represents one bit position.
+
+ Figure 4-1. CLNP for TUBA
+
+
+
+Piscitello [Page 5]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ 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.
+
+ 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.)
+
+ The encoding of CLNP fields for use in TUBA environments is as
+ follows.
+
+4.1 Network Layer Protocol Identification (NLP ID)
+
+ This one-octet field identifies this as the ISO/IEC 8473 protocol; it
+ MUST set to binary 1000 0001.
+
+4.2 Header Length Indication (Header Length)
+
+ 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.
+
+4.3 Version
+
+ This one-octet field identifies the version of the protocol; it MUST
+ be set to a binary value 0000 0001.
+
+4.4 Lifetime (TTL)
+
+ 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.]
+
+
+
+
+Piscitello [Page 6]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ Unless otherwise directed, a host SHOULD use a value of 255 as the
+ initial lifetime value.
+
+4.5 Flags
+
+ Three flags are defined. These occupy bits 0, 1, and 2 of the
+ Flags/Type octet:
+
+ 0 1 2
+ +---+---+---+
+ | F | M | E |
+ | P | F | R |
+ +---+---+---+
+
+ 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.
+
+ [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.]
+
+ 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.
+
+ 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).
+
+
+
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 7]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+4.6 Type field
+
+ The type field distinguishes data CLNP packets from Error Reports
+ from Echo packets. The following values of the type field apply:
+
+ 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
+ +---+---+---+---+---+---+---+---+
+
+ Error Report packets are described in Section 5.
+
+ Echo packets and their use are described in RFC 1139 [9].
+
+4.7 Fragment Length
+
+ 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.
+
+ [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.]
+
+4.8 Checksum
+
+ 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.
+
+4.9 Addressing
+
+ 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
+
+
+
+Piscitello [Page 8]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ 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).
+
+ 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.
+
+ +-------------+
+ | <-- IDP --> |
+ +----+--------+----------------------------------+
+ |AFI | IDI | <-- DSP --> |
+ +----+--------+----+---+-----+----+-----+---+----+
+ | 47 | 0005 |DFI |AA |Rsvd | RD |Area |ID |Sel |
+ +----+--------+----+---+-----+----+-----+---+----+
+ octets | 1 | 2 | 1 | 3 | 2 | 2 | 2 | 6 | 1 |
+ +----+--------+----+---+-----+----+-----+---+----+
+
+ Figure 4-2 (a): GOSIP Version 2 NSAP structure.
+
+ +-------------+
+ |<-- IDP --> |
+ +----+--------+----------------------------------+
+ |AFI | IDI | <-- DSP --> |
+ +----+--------+----+---+-----+----+-----+---+----+
+ | 39 | 840 |DFI |ORG|Rsvd | RD |Area |ID |Sel |
+ +----+--------+----+---+-----+----+-----+---+----+
+ octets | 1 | 2 | 1 | 3 | 2 | 2 | 2 | 6 | 1 |
+ +----+--------+----+---+-----+----+-----+---+----+
+
+ Figure 4-2 (b): ANSI NSAP address format for DCC=840
+
+
+
+
+
+
+
+
+
+Piscitello [Page 9]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ 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
+
+4.9.1 Destination Address Length Indicator
+
+ This field indicates the length, in octets, of the Destination
+ Address.
+
+4.9.2 Destination Address
+
+ 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).
+
+ 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.
+
+ 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.
+
+4.9.3 Source Address Length Indicator
+
+ This field indicates the length, in octets, of the Source Address.
+
+4.9.4 Source Address
+
+ This field contains an OSI NSAP address, as described in Section 4.9.
+
+ 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).
+
+
+
+Piscitello [Page 10]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+4.10 Data Unit Identifier
+
+ 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.
+
+4.11 Fragment Offset
+
+ 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.
+
+4.12 Total Length
+
+ 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.
+
+4.13 Options
+
+ 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.
+
+4.13.1 Security
+
+ 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
+
+
+
+Piscitello [Page 11]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ 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.
+
+ [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.]
+
+ 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.
+
+ +--------+--------+--------+--------+--------+---//----+-
+ |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)
+
+ ---+------------+------------+----//-------+
+ ... | 10000101 | 000LLLLL | |
+ -----+------------+------------+----//-------+
+ EXTENDED EXTENDED EXTENDED OPTION
+ OPTION OPTION VALUE
+ TYPE (133) LENGTH
+
+ The syntax, semantics and processing of the Basic and Extended IP
+ Security Options are defined in RFC 1108.
+
+4.13.2 Type of Service
+
+ [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.]
+
+ 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
+
+
+
+Piscitello [Page 12]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ 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.
+
+ The encoding of this option is as follows:
+
+ +-----------+-----------+----------+
+ | 1100 0011 | 0000 0001 | 110ABCDE |
+ +-----------+-----------+----------+
+ CLNP QOS OPTION QOS FLAGS
+ TYPE (195) LENGTH
+
+ 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).
+
+ Bits 8-6 MUST be set as indicated in the figure. The flags "ABCDE"
+ are interpreted as follows:
+
+ 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
+
+4.13.3 Padding
+
+ 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.
+
+
+
+
+
+Piscitello [Page 13]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ +----------+----------+-----------+
+ | 11001100 | LLLLLLLL | VVVV VVVV |
+ +----------+----------+-----------+
+
+4.13.4 Source Routing
+
+ 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).
+
+ The parameter code for Source Routing is binary 1100 1000. The length
+ of the source routing parameter value is variable.
+
+ 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.
+
+ 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.
+
+4.13.5 Record Route
+
+ 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.
+
+
+
+
+Piscitello [Page 14]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ The parameter code for Record Route is binary 1100 1011. The length
+ of the record route parameter value is variable.
+
+ 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.
+
+ 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.
+
+ The third octet begins the list of network entity titles.
+
+4.13.6 Timestamp
+
+ [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.]
+
+ 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.
+
+ 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.
+
+
+
+
+
+
+Piscitello [Page 15]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ +--------+--------+--------+--------+
+ |11101110| length | pointer|oflw|flg|
+ +--------+--------+--------+--------+
+ | network entity title |
+ +--------+--------+--------+--------+
+ | timestamp |
+ +--------+--------+--------+--------+
+ | . |
+ .
+
+5. Error Reporting and Control Message Handling
+
+ 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.
+
+ 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.
+
+ 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:
+
+
+
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 16]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ 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 |
+ : :
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Note that each tick mark represents one bit position.
+
+ Figure 5-1. Error Report Format
+
+
+
+
+Piscitello [Page 17]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+5.1 Rules for processing an Error Report
+
+ The following is a summary of the rules for processing an Error
+ Report:
+
+ * An Error Report is not generated to report a problem
+ encountered while processing an Error Report.
+
+ * Error Reports MAY NOT be fragmented (hence, the
+ fragmentation part is absent).
+
+ * The Reason for Discard Code field is populated with one of
+ the values from Table 5-1.
+
+ * 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.
+
+ * 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.
+
+ * 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).
+
+ * 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 18]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+5.2 Comparison of ICMP and CLNP Error Messages
+
+ Table 5-1 provides a loose comparison of ICMP message types and codes
+ to CLNP Error Type Codes (values in Internet decimal):
+
+ 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)
+
+ Table 5-1. Comparison of CLNP Error Reports to ICMP Error Messages
+
+ 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.
+
+ 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.]
+
+
+
+
+
+
+
+Piscitello [Page 19]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+6. Pseudo-Header Considerations
+
+ 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.
+
+ 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:
+
+ * Destination Address Length Indicator
+
+ * Destination Address (including PROTO field)
+
+ * Source Address Length Indicator
+
+ * Source Address (including Reserved field)
+
+ * A two-octet encoding of the Protocol value
+
+ * TCP/UDP segment length
+
+ 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.
+
+ [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.]
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 20]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ Figure 6-1 illustrates the resulting pseudo-header when both source
+ and destination addresses are maximum length.
+
+ 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 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 6-1. Pseudo-header
+
+7. Security Considerations
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 21]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+8. Author's Address
+
+ David M. Piscitello
+ Core Competence
+ 1620 Tuckerstown Road
+ Dresher, PA 19025
+
+ Phone: 215-830-0692
+ EMail: wk04464@worldlink.com
+
+9. References
+
+ [1] ISO/IEC 8473-1992. International Standards Organization -- Data
+ Communications -- Protocol for Providing the Connectionless
+ Network Service, Edition 2.
+
+ [2] Callon, R., "TCP/UDP over Bigger Addresses (TUBA)", RFC 1347,
+ Internet Architecture Board, May 1992.
+
+ [3] Postel, J., "Transmission Control Protocol (TCP)", STD 7, RFC
+ 793, USC/Information Sciences Institute, September 1981.
+
+ [4] Postel, J., "User Datagram Protocol (UDP)", STD 6, RFC 768,
+ USC/Information Sciences Institute, September 1981.
+
+ [5] Postel, J., "Internet Protocol (IP)", STD 5, RFC 791,
+ USC/Information Sciences Institute, September 1981.
+
+ [6] Chapin, L., "ISO DIS 8473, Protocol for Providing the
+ Connectionless Network Service", RFC 994, March 1986.
+
+ [7] Postel, J., "Internet Control Message Protocol (ICMP)", STD 5,
+ RFC 792, USC/Information Sciences Institute, September 1981.
+
+ [8] Braden, R., Editor, "Requirements for Internet Hosts -
+ Communication Layers", STD 3, RFC 1122, Internet Engineering Task
+ Force, October 1989.
+
+ [9] Hagens, R., "An Echo Function for ISO 8473", RFC 1139, IETF-OSI
+ Working Group, May 1993.
+
+ [10] Sklower, K., "Improving the Efficiency of the ISO Checksum
+ Calculation" ACM SIGCOMM CCR 18, no. 5 (October 1989):32-43.
+
+ [11] ISO/IEC 8348-1992. International Standards Organization--Data
+ Communications--OSI Network Layer Service and Addressing.
+
+
+
+
+
+Piscitello [Page 22]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ [12] Callon, R., Gardner, E., and R. Hagens, "Guidelines for OSI NSAP
+ Allocation in the Internet", RFC 1237, NIST, Mitre, DEC, July
+ 1991.
+
+ [13] Piscitello, D., "Assignment of System Identifiers for TUBA/CLNP
+ Hosts", RFC 1526, Bellcore, September 1993.
+
+ [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.
+
+ [15] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340
+ USC/Information Sciences Institute, July 1992.
+
+ [16] Kent, S., "Security Option for IP", RFC 1108, BBN Communications,
+ November 1991.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 23]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+Appendix A. Checksum Algorithms (from ISO/IEC 8473)
+
+ Symbols used in algorithms:
+
+ 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
+
+ Addition is performed in one of the two following modes:
+
+ * modulo 255 arithmetic;
+
+ * eight-bit one's complement arithmetic;
+
+ The algorithm for Generating the Checksum Parameter Value is as
+ follows:
+
+ A. Construct the complete header with the value of the
+ checksum parameter field set to zero; i.e., c0 <- c1 <- 0;
+
+ B. Process each octet of the header sequentially from i=1 to L
+ by:
+
+ * c0 <- c0 + Bi
+
+ * c1 <- c1 + c0
+
+ C. Calculate X, Y as follows:
+
+ * X <- (L - 8)(c0 - c1) modulo 255
+
+ * Y <- (L - 7)(-C0) + c1
+
+ D. If X = 0, then X <- 255
+
+ E. If Y = 0, then Y <- 255
+
+ F. place the values of X and Y in octets 8 and 9 of the
+ header, respectively
+
+ The algorithm for checking the value of the checksum parameter is as
+ follows:
+
+
+
+
+Piscitello [Page 24]
+
+RFC 1561 CLNP in TUBA Environments December 1993
+
+
+ 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
+
+ B. Process each octet of the header sequentially from i = 1 to
+ L by:
+
+ * c0 <- c0 + Bi
+
+ * c1 <- c1 + c0
+
+ C. When all the octets have been processed, if c0 = c1 = 0,
+ then the checksum calculation has succeeded, else it has
+ failed.
+
+ 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:
+
+ If X = 0 and Y = 0 then do nothing, else if X = 0 or Y = 0 then the
+ checksum is incorrect, else:
+
+ X <- (k - n - 1)Z + X modulo 255
+
+ Y <- (n - k)Z + Y modulo 255
+
+ If X = 0, then X <- 255; if Y = 0, then Y <- 255.
+
+ 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:
+
+ X <- X + 5 Modulo 255
+
+ Y <- Y - 4 Modulo 255
+
+
+
+
+
+
+
+
+
+
+
+
+Piscitello [Page 25]
+ \ No newline at end of file