Pip Working Group R. Govindan INTERNET-DRAFT P. Francis (formerly P. Tsuchiya) Bellcore June 1993 PCMP: Pip Control Message Protocol 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. This specification describes the packets used for various control purposes. Acknowledgements I would like to acknowledge Chris Petrilli for his initial work on this protocol. Conventions All functions in this specification are mandatory. Pip WG, Expires December, 1993 [Page 1] INTERNET-DRAFT PCMP June 1993 1. Introduction Pip is an internet protocol intended as the replacement for IP ver- sion 4. This specification describes the packets used for various control purposes, called Pip Control Message Protocol (PCMP). PCMP is Pip's analog to IP's ICMP. 2. Message Formats All PCMP messages are encapsulated in Pip headers. The value of the Protocol field when PCMP is used is 1. PCMP messages have the following format: +===========================+ | Fixed Part | +===========================+ | PCMP Body | +===========================+ The Fixed Part is formatted as follows: length, in bits +===========================+ | Type | 8 +---------------------------+ | Code | 8 +---------------------------+ | Checksum | 16 +===========================+ The Type field indicates the type of PCMP message. The meaning of the Code field depends on the PCMP message Type. The checksum is the 16-bit ones's complement of the one's complement sum of the PCMP mes- sage starting with the PCMP Type, and including the entire PCMP mes- sage. For computing the checksum, the checksum field is zero. 3. Transmitting a PCMP Message PCMP messages are transmitted in Pip headers. Because of Pip's Pip WG, Expires December, 1993 [Page 2] INTERNET-DRAFT PCMP June 1993 tunneling feature, PCMP messages are not always sent to the host that transmitted the original Pip packet to which the PCMP message is responding (as, for instance, ICMP messages are). Sometimes it is desirable to send a PCMP message to the originating host, and some- times to the entry system of a tunnel. In the latter case, the entry system may determine that the PCMP message should further go back to the source. For example, consider the case where the tunnel exit system is unreachable. A router within the tunnel will send the PCMP Packet Not Delivered to the tunnel entry system. If the tunnel entry system has another tunnel it can try, then it does not need to send the PCMP Packet Not Delivered further back. If the tunnel entry system has no other means of forwarding the packet, however, then it should forward the PCMP back to the source. Thus, a Pip system has two ways of forming a PCMP packet. One, the target of the PCMP packet is the originating host. Two, the target of the PCMP packet is the tunnel entry system. The target of the PCMP packet is determined by PCMP Type and Code. 3.1. Targeting the Originating Host When the target of the PCMP packet is the originating host, PCMP mes- sages are encapsulated in a Pip header as follows: 1. The Protocol field is set to PCMP. 2. An attempt is made to reverse each of the Transit Parts in the received Pip packet. (How to "reverse" a Pip Transit Part depends on the address family used, and is described in [4].) If any of the Transit Parts cannot be reversed, then the Pip header is formatted as though the target was the lowest tunnel entry system. (Note that, in the near-term Pip architecture, all routers will be able to reverse all Transit Parts.) 3. The Source ID field of the Pip header is set to be that of the sys- tem that originated the PCMP message. (If the PCMP message is being sent by a tunnel entry system as a result of receiving a PCMP message from a router in the tunnel, then the Source ID field is copied over from that of the received Pip header.) 4. The Dest ID field of the Pip header is set to that of the host that Pip WG, Expires December, 1993 [Page 3] INTERNET-DRAFT PCMP June 1993 originated the original Pip packet. (If the PCMP message is being sent by a tunnel entry system as a result of receiving a PCMP mes- sage from a router in the tunnel, then the Dest ID field is copied over from the Source ID field of the received Pip header which is stored in the Received Pip Header field of the PCMP message.) 3.2. Targeting the Tunnel Entry System When a PCMP packet is being returned to the tunnel entry system, the PCMP message is encapsulated in a Pip header as follows: 1. The Protocol field is set to PCMP. 2. The Source ID field of the Pip header is set to be that of the sys- tem sending the PCMP message. 3. The Dest ID field of the Pip header is set to the "any router" Pip ID value [1]. 4. Only the lowest Pip Transit Part is reversed. In addition, the lowest level FTIF of the tunnel entry system (now the target sys- tem) is modified to indicate that the packet should be received rather than forwarded. (How to make this modification depends on the address family used, and is described in the relevant specifi- cations. For hierarchical unicast Pip Addresses, the modification is described in [4].) This causes the tunnel entry system receiving the PCMP message to recognize that the packet is destined for it, and to send the packet to its PCMP module for processing (after checking the Dest ID field). 3.3. PCMP Message Processing by the Tunnel Entry System When a tunnel entry system receives a PCMP message, the message may be targeted to it either because 1) the PCMP Type and Code dictates that the tunnel entry system is the target, or 2) the originating host is the real target, but the sending system could not reverse all of the Transit Parts. In the former case, the tunnel entry system receives the PCMP message and processes it as a PCMP message. This may result in the tunnel Pip WG, Expires December, 1993 [Page 4] INTERNET-DRAFT PCMP June 1993 entry system originating a PCMP message of its own, possibly to the originating host. In this case, the Received Pip Header field remains the same as in the received PCMP message. The Pip Header of the received PCMP message is used to form the Pip Header of the transmitted PCMP message. The lowest Transit Part is stripped (this is the Transit Part that was reversed by the originator of the origi- nal PCMP message). The remaining Transit Parts need to be reversed. The tunnel entry system reverses the remaining Transit Parts accord- ing to the above rules for forming a PCMP message. In the latter case, the tunnel entry system does not process the PCMP message per se (though of course it must look at the Type and Code to determine if it should process the PCMP message or not). Instead, the tunnel entry system attempts to forward the packet to the ori- ginating host according to the rules above. 4. PCMP Messages 4.1. Type 101: Packet Not Delivered This PCMP message essentially replaces the ICMP Destination Unreach- able message. The PCMP body format of Packet Not Delivered is as follows: length, in bits +===========================+ | Information | 32 +---------------------------+ | Received Pip Header | variable +---------------------------+ | Original Datagram Data | 64 +===========================+ The contents of the Information field depends on the Code. Following is a description of the codes. 4.1.1. Code 1: Options Contents Unknown This PCMP Packet Not Delivered message is sent when the system does Pip WG, Expires December, 1993 [Page 5] INTERNET-DRAFT PCMP June 1993 not have a local mapping for the Options Contents field value. This PCMP message is sent to the originating host. The Information field is transmitted as zeros, and ignored upon receipt. 4.1.2. Code 2: Individual Option Unknown This code is sent when one or more of the options are unknown, and at least one of the options has handling type 5 (Discard Packet with Notification). The PCMP message is sent to the originating host. The Information field is formatted as follows: length, in bits +===========================+ | Unknown Options Bit Mask | 8 +---------------------------+ | zeros | 24 +===========================+ The Unknown Options Bit Mask indicates which options in the original packet are unknown (including those that do not require notification if unrecognized). The bits of the Unknown Options Bit Mask correspond to the bits of the Options Present field in the received Pip header. A 1 indicates that the option is unknown, and a 0 indi- cates that the option is either known or not present in the received packet. 4.1.3. Codes 3 and 4: Protocol These PCMP codes are sent when either the protocol indicated by the Protocol field of the received packet does not exist (code 3), or it exists but is administratively prohibited for the originating host (code 4). This PCMP message is sent to the originating host. The Information field is transmitted as zeros, and ignored upon receipt. 4.1.4. Codes 5 and 6: Port These PCMP codes are sent when either the TCP or UDP port of the received packet cannot receive the packet (code 5), or it can receive Pip WG, Expires December, 1993 [Page 6] INTERNET-DRAFT PCMP June 1993 the packet but is administratively prohibited for the originating host (code 6). This PCMP message is sent to the originating host. The Information field is transmitted as zeros, and ignored upon receipt. 4.1.5. Codes 7, 8, and 9: Dest ID These PCMP codes are sent by a Pip system X when the received packet can't be delivered to the Pip system Y indicated by the Dest ID. Code 7 is used when system Y is known not to exist within the domain of systems indicated by the Routing Directive. Code 8 is used when the originating host is administratively prohibited from sending packets to system Y. Code 9 is used otherwise. For example, if the Pip packet reaches the final router on the desti- nation subnetwork, and the router knows that the Dest ID does not exist on the subnetwork, then code 7 is used. If as far as the router knows the Dest ID could exist on the subnetwork but can't be reached (for instance, there is no response to ARP requests), then it would send Code 9. These PCMP messages are sent to the originating host. The Informa- tion field is transmitted as zeros, and ignored upon receipt. 4.1.6. Code 10: Hop Count Expired This PCMP code is sent when the Hop Count field is decremented to 0 by the forwarding router. (Hosts do not decrement the hop count field.) This PCMP message is sent to the originating host. The Information field is transmitted as zeros, and ignored upon receipt. 4.1.7. Code 11: HD Contents Unknown This PCMP Packet Not Delivered message is sent when the system does not have a local mapping for the HD Contents field value. The PCMP message is sent to the system identified by the source portion of the lowest Transit Part. The Information field is transmitted as zeros, and ignored upon receipt. Pip WG, Expires December, 1993 [Page 7] INTERNET-DRAFT PCMP June 1993 4.1.8. Code 12: Individual HD Parameter Unknown This code is sent when one or more of the parameters in the HD are unknown, and at least one of the parameters has handling type 5 (Dis- card Packet with Notification). The PCMP message is sent to the sys- tem identified by the source portion of the lowest Transit Part. The Information field is formatted as follows: length, in bits +===========================+ | Unknown HD Parameters Mask| 32 +===========================+ The Unknown HD Parameters Mask indicates which HD parameters in the original packet are unknown (including those that do not require notification if unrecognized). The bits of the Unknown HD Parameters Mask correspond to the bits of the HD field in the received Pip header. All 1's indicates that the parameter is unknown, and all 0's indicates that the parameter is known. The PCMP message is sent to the system identified by the source por- tion of the lowest Transit Part. The zeros field is transmitted as zeros, and ignored upon receipt. 4.1.9. Code 13: RC Contents Unknown This PCMP Packet Not Delivered message is sent when the system does not have a local mapping for the RC Contents field value. The PCMP message is sent to the system identified by the source portion of the lowest Transit Part. The Information field is transmitted as zeros, and ignored upon receipt. 4.1.10. Code 14: Individual RC Parameter Unknown This code is sent when one or more of the parameters in the RC are unknown, and at least one of the parameters has handling type 5 (Dis- card Packet with Notification). The PCMP message is sent to the sys- tem identified by the source portion of the lowest Transit Part. The Information field is formatted as follows: Pip WG, Expires December, 1993 [Page 8] INTERNET-DRAFT PCMP June 1993 length, in bits +===========================+ | Unknown RC Parameters Mask| 16 +---------------------------+ | zeros | 16 +===========================+ The Unknown RC Parameters Mask indicates which RC parameters in the original packet are unknown (including those that do not require notification if unrecognized). The bits of the Unknown RC Parameters Mask correspond to the bits of the RC field in the received Pip header. All 1's indicates that the parameter is unknown, and all 0's indicates that the parameter is known. The PCMP message is sent to the system identified by the source por- tion of the lowest Transit Part. The zeros field is transmitted as zeros, and ignored upon receipt. 4.1.11. Codes 15, 16, and 17: FTIF These PCMP Packet Not Delivered messages are sent when a packet can't be forwarded based on the contents of the active FTIF field. Code 15 is used when the Pip hosts represented by that FTIF are known not to exist. Code 16 is used when the originating host is administratively prohibited from sending packets to the systems represented by the FTIF. Code 17 is used otherwise. The Information field for these codes is formatted as follows: length, in bits +===========================+ | Active RC | 16 +---------------------------+ | zeros | 8 +---------------------------+ | Active FTIF Offset | 8 +===========================+ The purpose of the Active RC and Active FTIF Offset fields are to indicate which FTIF the PCMP message refers to, and the Routing Con- text associated with that FTIF. It is necessary to convey this Pip WG, Expires December, 1993 [Page 9] INTERNET-DRAFT PCMP June 1993 information separately (as opposed to using the corresponding fields in the Received Pip Header area) because the Routing Context and failed FTIF may not be those of the received Pip header. For instance, the Pip forwarding engine may have successfully parsed one or more FTIFs before reaching the failed FTIF. The routing context may also have changed, for instance because the hierarchical level may have changed. The PCMP message is sent to the system identified by the source por- tion of the lowest Transit Part. The zeros field is transmitted as zeros and ignored upon receipt. 4.1.12. Codes 18: Maximum Transmission Unit (MTU) Exceeded This PCMP message is sent when the router cannot transmit a Pip packet because the packet size exceeds the maximum deliverable by the transmitting interface. The Information field is formatted as follows: length, in bits +===========================+ | Next-Hop MTU | 32 +===========================+ The Next-Hop MTU field contains the size in octets of the largest datagram that could be forwarded, along the path of the original datagram, without being fragmented at this router. The size includes the Pip header and Pip payload, and does not include any lower-level headers. Because of tunneling, the received Pip header may be larger than that sent by the originating host. The originating host can compare the size of the received Pip header with that of what it sent (as indi- cated by the combined values of the Packet SubID, Protocol, Dest ID, and Source ID), and appropriately calculate the required payload size. This PCMP message is sent to the originating host. Pip WG, Expires December, 1993 [Page 10] INTERNET-DRAFT PCMP June 1993 4.2. Type 102: PCMP Echo PCMP Echo has two Codes. Code 0 is the PCMP Echo query, and Code 1 is the PCMP Echo reply. PCMP Echo replies are sent to the originat- ing host. When a PCMP Echo query is sent, the Dest ID field of the Pip header may contain either the ID of the system that the PCMP Echo is des- tined for, or it may contain the "Any System", "Any Host", or "Any Router" Pip IDs [1]. If a router receives a PCMP Echo query with either the Any System or Any Router Pip IDs, and, based on the con- tents of the Routing Directive, the router is not able to further forward the packet, then the router responds with a PCMP Echo reply. If a host receives a PCMP Echo query with the Any System or Any Host Pip IDs, then it responds with a PCMP Echo reply regardless of the RD. In both cases, the Source ID in the Pip header of the PCMP Echo reply contains the Pip ID of the transmitting router or host. The PCMP Body of the PCMP Echo message is formatted as follows: length, in bits +===========================+ | Identifier | 32 +---------------------------+ | Sequence Number | 32 +---------------------------+ | Data | Variable +===========================+ The Identifier, Sequence Number, and Data are returned in the PCMP Echo reply as received in the corresponding PCMP Echo query. 4.3. Type 103: PCMP Router Advertisement The PCMP Router Advertisement message is similar to the ICMP Router Advertisement message [2]. The body of the PCMP Router Advertisement message is formatted as follows. Pip WG, Expires December, 1993 [Page 11] INTERNET-DRAFT PCMP June 1993 length, in bits +===========================+ | Num Addrs | 16 +---------------------------+ | Lifetime | 16 +===========================+ | Length of address[1] | 16 +---------------------------+ | Preference Level[1] | 16 +===========================+ | Router Address[1] | variable number of 32 bit words +===========================+ | Length of address[2] | 16 +---------------------------+ | Preference Level[2] | 16 +===========================+ | Router Address[2] | variable number of 32 bit words +===========================+ | .... | The PCMP code value associated with this message is zero. Num Addrs is the number of router addresses advertised in this message and Lifetime is the maximum number of seconds that the advertised addresses can be considered valid. The "Length of address[i]" is the length in 32-bit words of the ith address advertised. "Preference Level[i]" indicates the preferability of the ith advertised address, as a default router address, relative to other router addresses on the same subnet; it is a signed, twos-complement number and higher values mean greater preferability. Each router address consists of a variable number of 32-bit words, each of which encodes a Pip address number. These words are ordered by increasing metalevel and level values of the Pip address numbers they encode. Each word contains the Pip address number in the lower 16-bits and a 1 in the upper 16- bits if the Pip address number is on a different metalevel from the preceding Pip address number. When a Router Advertisement is sent, the destination ID field in the Pip header contains the Pip ID of the host that the advertisement is directed towards or the "Any host" Pip ID [1]. If a host receives a Router Advertisement with the "Any Host" Pip ID, the host then uses the advertised addresses in a manner discussed in [3]. Pip WG, Expires December, 1993 [Page 12] INTERNET-DRAFT PCMP June 1993 4.4. Type 104: PCMP Router Solicitation The PCMP Router Solicitation message is similar to the ICMP Router Solicitation message [2]. The body of the PCMP Router Solicitation message is formatted as follows: length, in bits +===========================+ | Reserved | 32 +===========================+ The reserved field is sent as zero and ignored upon reception. The PCMP code value associated with this message is zero. When a Router Solicitation message is sent, the destination ID field in the Pip header contains the "Any Router" Pip ID [1]. If a router receives a Router Solicitation and the RD indicates that the router is an intended recipient, it may respond with a Router Advertisement. 4.5. Local Redirect To be supplied...... 4.6. Parameter Problem To be supplied...... 4.7. Router Discovery To be supplied...... 4.8. Provider Redirect To be supplied...... Pip WG, Expires December, 1993 [Page 13] INTERNET-DRAFT PCMP June 1993 4.9. Reformat Transit Part To be supplied...... 4.10. Host Mobility To be supplied...... 4.11. Exit PDN Address To be supplied...... References [1] P. Francis, "Pip Identifiers", Internet-draft [2] "ICMP Router Discovery Messages", S. Deering ed., RFC 1256. [3] "Pip System Discovery", to be written. [4] P. Francis, "Pip Address Conventions", Pip WG, Expires December, 1993 [Page 14]