📄 rfc1561.txt
字号:
Network Working Group D. PiscitelloRequest for Comments: 1561 Core CompetenceCategory: Experimental December 1993 Use of ISO CLNP in TUBA EnvironmentsStatus 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 1993Conventions 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 19933. 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 19934. 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 TUBAPiscitello [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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -