Network Working Group P. Tsuchiya INTERNET-DRAFT Bellcore January 1993 Pip Identifiers Status of this Memo This document is an Internet Draft. Internet Drafts are working documents of the Internet Engineering Task Force (IETF), its Areas, and its Working Groups. Note that other groups may also distribute working documents as Internet Drafts). Internet Drafts are draft documents valid for a maximum of six months. Internet Drafts may be updated, replaced, or obsoleted by other documents at any time. It is not appropriate to use Internet Drafts as reference material or to cite them other than as a "working draft" or "work in progress." Please check the I-D abstract listing contained in each Internet Draft directory to learn the current status of this or any other Internet Draft. Abstract Pip is an internet protocol intended as the replacement for IP version 4. The Pip header defines source and destination ID fields whose primary function it is to identify the source and destination of a Pip packet. While Pip systems treat the IDs as flat for the purpose of identification, it is useful to have hierarchical structure in the ID for other purposes, such as for doing a reverse DNS lookup on the ID. This internet-draft defines the structure of Pip IDs. Acknowledgements I want to thank John Curren and Bob Smart for their observations on the need for administrative structure in Pip IDs that led to this draft. Pip WG, Expires July 1, 1993 [Page 1] INTERNET-DRAFT Pip Identifiers January 1993 1. Changes From Previous Version The major change to this version is in how IP addresses are encoded in the Pip ID. Whereas before they were encoded in the ASN.1 nota- tion (and thus spread over 5 octets), now they are always encoded in the low-order 32 bits of the Pip ID. In addition, code points were added for E.164 numbers, and for form- ing Pip IDs that are only locally unique (for the sake of auto- configuration). 2. Introduction Pip is an internet protocol intended as the replacement for IP ver- sion 4. The Pip header defines source and destination ID fields whose function, in the context of host processing of Pip headers, is to only identify the source and destination of a Pip packet. While Pip systems treat the IDs as flat for the purpose of identification, it is useful to have hierarchical structure in the ID for other pur- poses, such as for doing a reverse DNS lookup on the ID. This internet-draft defines the structure of Pip IDs. Pip IDs have the following characteristics: 1. With well-known exceptions, they are globally unique binary strings 8 octets in length. 2. They are hierarchically structured. 3. Each component of the hierarchy is contiguous, and each hierarchical component is positioned in the Pip ID adjacent to its parent and child components. 4. The hierarchical structure is self-describing. That is, the hierarchical structure can be determined by examination of the ID alone. 5. Pip IDs may be used for group identification, but such a Pip ID is not self-describing as being a group Pip ID. 6. Certain Pip IDs are well-known and have local meaning, such as Pip WG, Expires July 1, 1993 [Page 2] INTERNET-DRAFT Pip Identifiers January 1993 "all routers on the subnet" and "this host". Pip IDs are formed by a hierarchy of number authorities, each of which is responsible for assigning the next lower level of the hierarchy. While it is the intent that the hierarchical structure of Pip IDs follow administrative hierarchy (versus, for instance, topo- logical hierarchy), it is up to each number authority to determine how the next level is assigned. The top-level number authority for Pip IDs is the Internet Assigned Number Authority (IANA). 3. Pip ID structure Semantically, the Pip ID is a series of integers, with each integer being hierarchically above the following one. For instance, the Pip ID 12.96.4993.5 has four levels of hierarchy. The IANA assigns the top-level (12). The number authority represented by the top-level number 12 assigns the following level (96), and so on. The encoding of a Pip ID is similar to (but not the same as) that of the Object Identifier encoding in ASN.1. That is, it is encoded as a series of (eight) octets, with the first bit of each octet indicating whether the next octet is part of the same integer or a new integer. If the first bit of the octet is 0, then it is the last octet of the integer. If the first bit of the octet is 1, then the following octet is part of the same integer. For instance, the integer 127 is encoded as 01111111. The integer 128, however, is encoded as 10000001 00000000. The leading 1 in the first octet indicates that the next octet is part of the same integer. The leading 0 is the second octet indicates that it is the final octet of the integer. The value 128 comes from concatinating the seven least significant bits from each of the two octets. 3.1. Exceptions to the Above Rule There are three exceptions to the above rule--padding octets, the "IP Address Follows" octet, and the low order octet. These exceptions are discussed here. Pip WG, Expires July 1, 1993 [Page 3] INTERNET-DRAFT Pip Identifiers January 1993 Padding In encoded form, all Pip IDs are padded out to the full 8 octets. The pad consists of a single octet of value 10000000 followed by 0 or more octets of value 11111111. This is how the Pip ID encoding differs from the ASN.1 Object Identifier encoding. In the ASN.1 encoding, an octet of 1000 0000 is illegal, because it represents a "wasted" octet in the case where the string of octets is variable length. The reason that we do not pad with multiple octets of 10000000 is because it would be ambiguous with one of the IP address encodings. As another example, consider the Pip ID 12.96.4993.5. It is encoded as: 12 00001100 96 01100000 4993 10100111 00000001 5 00000101 pad 10000000 11111111 11111111 The 12 and 96 take up one octet each. The 4993 is greater than 127 (largest 7-bit integer), but smaller than 16383 (largest 14-bit integer), so it requires 2 octets. The 5 is the final digit. The remaining 3 octets are padded with 10000000 followed by two octets of 11111111. IP Address Follows The second exception is for the case of embedding an IP address in the Pip ID. This exception exists because embedding IP addresses in Pip IDs is an integral part of transition to Pip, and a router will need to extract IP addresses from Pip IDs on a packet by packet basis. If we encode the IP address in the ASN.1 notation, then the 32-bit IP address gets spread over 40 bits of Pip ID, and a series of shift, mask, and OR operations are required to extract the IP address in its contiguous 32-bit form. As a result, we allow the 32-bit IP address to be embedded in the Pip ID in its contiguous form. For the sake of simplicity and effi- ciency, we require that the IP address always be in the low order 32 bits of the Pip ID. In order that a Pip ID with an IP address be self-describing as such, we specify that the octet preceeding the IP address be 10000000. Note that this is also the "start of padding" Pip WG, Expires July 1, 1993 [Page 4] INTERNET-DRAFT Pip Identifiers January 1993 octet. However, if the remainder of the Pip ID really padding, then it is followed by four octets of 11111111. However, an IP address of all 1's is illegal, so 5 octets of padding cannot be mistaken for an IP address. Low Order Octet Except for the case of an IP address, the values 10000001 - 11111110 in the low order octet do not make sense, because the "1" in the indicates "more digits follow" when there are in fact no more digits. Thus, the values 10000001 - 11111110 in the low order octet, except for the IP address encoding, are illegal. In the future, these values may be used to imply an extension of the Pip ID. 4. Assigned Top-level Pip ID Numbers It is expected that the IANA will generally assign top-level Pip ID numbers directly to organizations. This document, however, defines a number of special, non-organizational assignments. These are for the purposes of grandfathering existing numbering plans, and for delegat- ing countries as second level assignment authorities. The assignments below consume all of the 1-octet top-level numbers (0 - 127) and a small number of 2-octet top-level numbers (128 - 316 are assigned of a possible maximum 2-octet number of 16383). Thus there are approximately 16,000 2-octet and 2,000,000 3-octet top-level numbers available for assignment directly to organizations. Any of these 2- and 3-octet assignments allow the designated organi- zation to form Pip IDs with IP addresses embedded. Any 4-octet or greater assignment does not allow the designated organization to form a Pip ID with an embedded IP address (except on an ad hoc basis). Thus it is recommended that the IANA assign 2- and 3- octet numbers to organizations for the forseeable. Since 2-octet numbers are at a premium, it may be desirable to reserve these numbers and only assign 3-octet numbers, or to assign 2-octet numbers only to very large organizations. The following Pip ID assignments are defined: Pip WG, Expires July 1, 1993 [Page 5] INTERNET-DRAFT Pip Identifiers January 1993 4.1. IEEE 802 Address An IEEE 802 address can be used to create a globally unique Pip ID. Thus, anybody with an IEEE 802 address can use it to form a globally unique Pip ID. The format for an IEEE 802 Pip ID is: 1.IEEE802address The top-level integer is value "1". The remainder of the Pip ID is a single IEEE 802 address. Since the IEEE 802 address is 48 bits in length, and since the remaining 7 octets only encode 49 bits, there is no room for a third level of hierarchy. 4.2. Locally Unique IDs During auto-configuration, it is necessary for a Pip host to be able to construct a Pip ID that is with very high probability unique among the systems that share a physical network with it. If the host has an IEEE 802 interface, then it can form a Pip ID of the form 1.IEEE802address as described in the preceeding section. This Pip ID is globally unique. If, however, the host does not have a globally unique IEEE 802 number with which to form a Pip ID, it can use (one of) its physical inter- face address(es) to form a Pip ID that is unique for the systems on the physical network (presuming that the physical addresses on the network are unique among each other). The format for this number is: 2.physicalAddress.randomNumber The top-level integer is value "2". The next level integer is created using the physicalAddress. The lowest level integer is a randomly generated number truncated to fit within the space remaining after the physical address. Thus, the Locally Unique Pip ID has three levels of hierarchy. Note that the 2.physicalAddress alone should be sufficient to insure Pip WG, Expires July 1, 1993 [Page 6] INTERNET-DRAFT Pip Identifiers January 1993 uniqueness on the local physical network. The random number, how- ever, increases the probability that the number will be unique on the local physical network and beyond. 4.3. CCITT E.164 A CCITT E.164 address can be used to create a globally unique Pip ID. Thus, anybody with an E.164 address can use it to form a globally unique Pip ID. The format for an IEEE 802 Pip ID is: 3.flatE164number 4.flatE164number The top-level integer is value "3" or "4". The reason that two top- level assignments are required for E.164 is because the maximum pos- sible E.164 number is 15 digits. To encode all 15 digit numbers in binary requires 50 bits. Not including the high order octet, how- ever, there are only 49 significant bits in the Pip ID. Thus, we must "steal" the low order bit of the high order octet in order to insure that all E.164 numbers can be encoded. The algorithm for creating a Pip ID from an E.164 number is to form the single integer flatE164number from the E.164 number (that is, the contatination of country code and remaining digits). If flatE164number integer is less than 2^49, then use the top-level assignment of 3 followed by flatE164number. If, on the other hand, flatE164number is greater than or equal to 2^49, then subtract 2^49 from flatE164number and use the top-level assignment of 4 followed by the modified flatE164number. The reverse of this is used to extract an E.164 from a Pip ID with a top-level integer of 3 or 4. 4.4. Flat Well-Known IDs Pip WG, Expires July 1, 1993 [Page 7] INTERNET-DRAFT Pip Identifiers January 1993 There are any number of uses for identifying systems of a certain type, rather than specific systems. For instance, an ID for "all routers on the LAN" is useful for router discovery. This specifica- tion defines the following well-known Pip IDs. These well-known Pip IDs consist of a single hierarchy level (the top-level), but are so large that only one level of hierarchy is possible. Any Router Decimal Notation = 2^56 - 1 Pip ID encoding = ff ff ff ff ff ff ff 7f Any Host Decimal Notation = 2^56 - 2 Pip ID encoding = ff ff ff ff ff ff ff 7e Any System Decimal Notation = 2^56 - 3 Pip ID encoding = ff ff ff ff ff ff ff 7d The above three well-known Pip IDs serve for functions such as "all routers on a subnet", for instance in configuration algorithms such as router discovery. Other well-known Pip IDs are expected to be defined in the future. 4.5. Country Codes While it is probably adequate to assign top-level Pip ID numbers directly to organizations, there may be good reasons to assign them to countries. One reason is that it reduces the administrative bur- den on IANA for assigning top-level numbers to every possible organi- zation. Another reason is that the number of organizations in the world may be large enough that a layer of hierarchy above the organi- zation is needed for such purposes as ID-to-name directory service lookups. Therefore, this specification has reserved a block of numbers for country codes. The actual number values have not yet been assigned. A consideration in assigning these numbers is whether the number takes up one octet or two octets. A one octet number leaves more room for further assignment, and is therefore more desirable. How- ever, there are enough countries that not all of them can have a one-octet top-level number (ISO 3166 lists 235 countries). Pip WG, Expires July 1, 1993 [Page 8] INTERNET-DRAFT Pip Identifiers January 1993 A reasonable approach to assigning these numbers, however, would be to assign one-octet values to those countries with the largest Gross National Produce (GNP) or population. CCITT assigns 1 or 2-digit E.164 country codes to 47 countries (and 3-digit country codes to the remaining countries), so it is probably reasonable to give the 47 or so countries with the highest GNPs one-octet country codes, and assign 2-octet codes to the remaining countries. (The 8 most popu- lous nations are among the 40 nations with highest GNP.) Therefore, this standard tentatively reserves top-level numbers 80 - 127 for those countries with the highest GNPs, and 128 - 316 for the remaining countries. 4.6. CCITT and ISO assignments The following top-level numbers are assigned to CCITT and ISO: CCITT 10 ISO 11 Joint CCITT/ISO 12 5. Summary of Top-Level Pip ID Numbers 0 Reserved 1 IEEE 802 2 Locally Unique 3 and 4 CCITT E.164 5 to 9 Reserved 10 CCITT (other than E.164) 11 ISO 12 Joint CCITT/ISO 13 to 79 Reserved 80 to 316 Country Codes 317 to 16383 Reserved 2-octet 16384 to 2097151 Reserved 3-octet 2097151 to 2^56 - 4 Reserved other 2^56 - 3 to 2^56 - 1 Well-known IDs Pip WG, Expires July 1, 1993 [Page 9]