draft-ietf-ipngwg-icmp-00.txt   draft-ietf-ipngwg-icmp-01.txt 
Network Working Group A. Conta (Digital Equipment Corporation) Network Working Group A. Conta (Digital Equipment Corporation)
INTERNET-DRAFT S. Deering (Xerox PARC) INTERNET-DRAFT S. Deering (Xerox PARC)
December 1994 February 1995 |
ICMP for the Internet Protocol Version 6 (IPv6) ICMP for the Internet Protocol Version 6 (IPv6)
draft-ietf-ipngwg-icmp-00.txt draft-ietf-ipngwg-icmp-01.txt |
Status of this Memo Status of this Memo
This document is an Internet Draft. Internet Drafts are working This document is an Internet Draft. Internet Drafts are working
documents of the Internet Engineering Task Force (IETF), its Areas, documents of the Internet Engineering Task Force (IETF), its Areas,
and its Working Groups. Note that other groups may also distribute and its Working Groups. Note that other groups may also distribute
working documents as Internet Drafts. working documents as Internet Drafts.
Internet Drafts are draft documents valid for a maximum of six Internet Drafts are draft documents valid for a maximum of six
months. Internet Drafts may be updated, replaced, or obsoleted by months. Internet Drafts may be updated, replaced, or obsoleted by
skipping to change at page 2, line 7 skipping to change at page 2, line 7
Abstract Abstract
This document specifies a set of Internet Control Message Protocol This document specifies a set of Internet Control Message Protocol
(ICMP) messages for use with version 6 of the Internet Protocol (ICMP) messages for use with version 6 of the Internet Protocol
(IPv6). The Internet Group Management Protocol (IGMP) messages (IPv6). The Internet Group Management Protocol (IGMP) messages
specified in RFC-1112 have been merged into ICMP, for IPv6, and are specified in RFC-1112 have been merged into ICMP, for IPv6, and are
included in this document. included in this document.
Table of Contents Table of Contents
1. Introduction.......................................3 1. Introduction........................................3 |
2. ICMP for IPv6......................................3 2. ICMP for IPv6.......................................3 |
3. ICMP Error Messages................................7 3. ICMP Error Messages.................................7 |
3.1 Destination Unreachable Message.............7 3.1 Destination Unreachable Message..............7 |
3.2 Packet Too Big..............................9 3.2 Packet Too Big Message.......................8 |
3.4 Time Exceeded Message.......................10 3.3 Time Exceeded Message........................9 |
3.5 Parameter Problem Message...................12 3.4 Parameter Problem Message...................11 |
4. ICMP Non-Error Messages............................13 4. ICMP Informational Messages........................12 |
4.1 Echo Message................................13 4.1 Echo Request Message........................12 |
4.2 Echo Reply Message..........................14 4.2 Echo Reply Message..........................13 |
4.3 Group Membership Message....................16 4.3 Group Membership Messages...................15 |
5. References.........................................18 5. References.........................................16 |
6. Acknowledgements...................................19 6. Acknowledgements...................................17 |
7. Security Considerations............................19 7. Security Considerations............................17 |
8. Authors' Addresses.................................17 |
1. Introduction 1. Introduction |
The Internet Protocol, version 6 (IPv6) is a new version of IP. IPv6 The Internet Protocol, version 6 (IPv6) is a new version of IP. IPv6
uses the Internet Control Message Protocol (ICMP) as defined for IPv4 uses the Internet Control Message Protocol (ICMP) as defined for
[RFC-792], with a few changes. The Internet Group Membership IPv4 [RFC-792], with a number of changes. The Internet Group |
Membership |
Protocol (IGMP) specified for IPv4 [RFC-1112] has also been revised Protocol (IGMP) specified for IPv4 [RFC-1112] has also been revised
and has been absorbed into ICMP for IPv6. and has been absorbed into ICMP for IPv6.
This document describes the format of a set of control messages used This document describes the format of a set of control messages used
in ICMP for IPv6. This document does not describe the procedures in ICMP
that use these messages to achieve functions like Neighbor Discovery for IPv6. It does not describe the procedures for using these |
and Path MTU Discovery; these procedures are described in companion messages to achieve functions like Path MTU discovery or multicast |
documents ([IPv6-DISC], and respectively [RFC-1191]). Terminology group membership maintenance; such procedures are described in other |
defined in the IPv6 specification [IPv6] and the IPv6 Routing and documents (e.g., [RFC-1112, RFC-1191]). Other documents may also |
Addressing specification [IPv6-ADDR] applies to this document as introduce additional ICMP message types, such as Neighbor Discovery |
well. messages [IPv6-DISC], subject to the general rules for ICMP messages |
given in section 2 of this document. |
Terminology defined in the IPv6 specification [IPv6] and the IPv6
Routing and Addressing specification [IPv6-ADDR] applies to this
document as well.
2. ICMP for IPv6 2. ICMP for IPv6
IPv6 ICMP is used by IPv6 nodes to report errors encountered in IPv6 ICMP is used by IPv6 nodes to report errors encountered in
processing packets, and to perform other internet-layer functions, processing packets, and to perform other internet-layer functions,
such as diagnostics (ICMP "ping"), neighbor discovery, and multicast such as diagnostics (ICMP "ping") and multicast |
membership reporting. IPv6 ICMP is an integral part of IPv6 and MUST membership reporting. IPv6 ICMP is an integral part of IPv6 and MUST
be implemented by every IPv6 node. be implemented by every IPv6 node.
ICMP messages are grouped into two classes. ICMP messages are grouped into two classes: error messages and |
informational messages. Error messages are identified as such by |
ICMP error messages, such as: having a zero in the high-order bit of their message Type values. |
Thus, error messages have message Types from 0 to 127; informational |
Destination Unreachable messages have message Types from 128 to 255. |
Packet Too Big
Time Exceeded
Parameter Problem
ICMP non-error messages, such as:
Echo
Echo Reply
Group Membership Query
Group Membership Report
Group Membership Termination
Advertisment
Solicitation
This document defines the message formats for the following IPv6 ICMP
messages:
ICMP error messages:
Destination Unreachable (see section 3.1)
Packet Too Big (see section 3.2)
Time Exceeded (see section 3.3)
Parameter Problem (see section 3.4)
ICMP non-error messages:
Echo (see section 4.1)
Echo Reply (see section 4.2)
Group Membership (see section 4.3)
Other documents may define other ICMP messages. For example [IPv6-
DISC] defines in detail the format of the following IPv6 ICMP
messages:
Advertisment This document defines the message formats for the following IPv6 ICMP |
Redirect messages: |
Solicitation ICMP error messages: |
1 Destination Unreachable (see section 3.1) |
2 Packet Too Big (see section 3.2) |
3 Time Exceeded (see section 3.3) |
4 Parameter Problem (see section 3.4) |
ICMP informational messages: |
128 Echo Request (see section 4.1) |
129 Echo Reply (see section 4.2) |
130 Group Membership Qeury (see section 4.3) |
131 Group Membership Report (see section 4.3) |
132 Group Membership Termination (see section 4.3) |
Every IPv6 ICMP message is preceded by an IPv6 header and zero or Every IPv6 ICMP message is preceded by an IPv6 header and zero or |
more IPv6 extension headers. The ICMP header is identified by a Next more |
Header value of 1 in the immediately preceding header. IPv6 extension headers. The ICMP header is identified by a Next |
Header value of <TBD> in the immediately preceding header. (NOTE: |
this is different than the value used to identify ICMP for IPv4.) |
The IPv6 ICMP messages have the following general format: The IPv6 ICMP messages have the following general format:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum | | Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Body | | | |
| | + Message Body + |
| | |
The type field indicates the type of the message. Its value The type field indicates the type of the message. Its value |
determines the format of the remaining data. determines the format of the remaining data. |
The code field depends on the message type. It is used to create an The code field depends on the message type. It is used to create an
additional level of message granularity. additional level of message granularity.
The checksum is the 16-bit one's complement of the one's complement The checksum is the 16-bit one's complement of the one's complement
sum of the IPv6 Source Address, the IPv6 Destination Address, the sum of the IPv6 Source Address, the IPv6 Destination
IPv6 Payload Length, the IPv6 Next Header Type, and the entire ICMP Address (the final destination, if a Routing Header is being used), |
message starting with the ICMP message type. (The rationale for this the IPv6 Payload Length, the Next Header type that identifies IPv6 |
checksum computation is described in [IPv6]). For computing the ICMP(<TBD>), and the entire ICMP message starting with the ICMP |
checksum, the checksum field is set to zero. message type. For |
computing the checksum, the checksum field is set to zero.
Implementation Notes: (NOTE: the inclusion of the IPv6 header fields in the ICMP checksum |
is a change from IPv4; see [IPv6] for the rationale for this change.) |
An application that sends ICMP messages has to fill in both the Implementation Notes: |
Source and Destination IPv6 Addresses in the IPv6 header before
calculating the checksum. If the node has multiple source addresses,
it is necessary to make an appropriate selection, based on the
destination address, TClass, and flow id. This requires the
implementation of a function:
source_ipv6_address = get_source_address (
destination_ipv6_address,
TClass,
flow-id
)
The following rules are suggested for implementing this mapping:
(a) If the remote Internet address lies on one of the (sub)nets to
which the node is directly connected, a corresponding source
address may be chosen, unless the corresponding interface is
known to be down.
(b) The route cache may be consulted, to see if there is an active A node that sends an ICMP message has to determine both |
route to the specified destination network through any network the Source and Destination IPv6 Addresses in the IPv6 header before
interface; if so, a local IPv6 address corresponding to that calculating the checksum.
interface may be chosen. If the node has more than one unicast address, it must choose the |
Source Address of the message as follows: |
If the route cache does not contain information about static If the message is a response to a message sent to one of the |
routes or default routers, then consult similarly: node's unicast address, the Source Address of the reply must be |
that same address. |
(c) The table of static routes, and If the message is a response to a message sent to a multicast |
group in which the node is a member, the Source Address of the |
reply must be a unicast address belonging to the interface on |
which the multicast packet was received. |
(d) The table of default routers. As default routers may be Otherwise, the node's routing table must be examined to determine |
associated with a preference, chose the highest preference which interface will be used to transmit the message to its |
router. destination, and a unicast address belonging to that interface |
must be used as the Source Address of the message. |
Implementations MUST observe the following rules when processing IPv6 Implementations MUST observe the following rules when processing IPv6
ICMP messages (from [RFC-1122]): ICMP messages (from [RFC-1122]):
(a) If an IPv6 ICMP message of unknown type is received, it MUST (a) If an IPv6 ICMP message of unknown type is received, it MUST be
be silently discarded. silently discarded.
(b) Every IPv6 ICMP error message (the first four messages in
the above list) includes as much of the IPv6 offending
(invoking) packet (the packet that causes the error) as will
fit without making the error message packet exceed 576
octets.
In case the ICMP packet that would result exceeds the size (b) Every IPv6 ICMP error message (the first four messages in the
of 576 octets, then truncate the ICMP packet to a size of above list) includes as much of the IPv6 offending (invoking)
576 octets. If the ICMP packet contains a pointer to a bad packet (the packet that causes the error) as will fit without
parameter and the ICMP message had to be truncated, the making the error message packet exceed 576 octets.
pointer may point beyond the end of the ICMP message if the
bad parameter was in the part of the ICMP message that had
to be truncated.
(c) In those cases where the Internet layer is required to pass (c) In those cases where the Internet layer is required to pass a |
a IPv6 ICMP error message to the transport layer, the IPv6 IPv6 ICMP error message to the transport layer, the IPv6 |
Transport Protocol MUST be extracted from the original Transport |
header (contained in the body of the IPv6 ICMP error Protocol is extracted from the original header (contained in |
message) and used to select the appropriate transport the body of the IPv6 ICMP error message) and used to select the
protocol entity to handle the error. appropriate transport protocol entity to handle the error.
(d) An IPv6 ICMP error message MUST NOT be sent as a result of (d) An IPv6 ICMP error message MUST NOT be sent as a result of
receiving: receiving:
(d.1.)an IPv6 ICMP error message, or (d.1.)an IPv6 ICMP error message, or |
(d.2.)a packet destined to an IPv6 multicast address (an |
(d.2.)a packet destined to an IPv6 multicast address (an
exception to this rule is the Packet Too Big Message - exception to this rule is the Packet Too Big Message -
Section 3.2 - to allow Path MTU discovery to work for Section 3.2 - to allow Path MTU discovery to work for
IPv6 multicast), or IPv6 multicast), or
(d.3.)a packet sent as a link-layer multicast, or (d.3.) |
a packet sent as a link-layer multicast, (the exception |
from d.2. applies to this case too) or |
(d.4.)a packet sent as a link-layer broadcast, or (d.4.)
a packet sent as a link-layer broadcast, (the exception |
from d.2. applies to this case too) or |
(d.5.)a packet whose source address does not uniquely identify (d.5.)a packet whose source address does not uniquely identify
a single node -- e.g., the IPv6 Unspecified Address, or a single node -- e.g., the IPv6 Unspecified Address, or
an IPv6 multicast address. an IPv6 multicast address.
(e) Finally, to each sender of an erroneous data packet, an IPv6 (e) Finally, to each sender of an erroneous data packet, an IPv6
node MUST limit the rate of ICMP error messages sent. One node
could limit the rate based on not sending more than N ICMP MUST limit the rate of ICMP error messages sent, in order to |
error messages per second to a certain destination. For such limit the bandwidth and forwarding costs incurred by the the |
an implementation a value of <TBD> for N is recommended. error messages when a generator of erroneous packets does |
not respond to those error messages by ceasing its |
transmissions. There are a variety of ways of implementing |
the rate-limiting function, for example: |
(e.1.)Timer-based - for example, limiting the rate of |
transmission of error messages to a given source, or to |
any source, to at most once every T milliseconds. |
(e.2.)Bandwidth-based - for example, limiting the rate at |
which error messages are sent from a particular interface |
to some fraction F of the attached link's bandwidth. |
The limit parameters (e.g., T or F in the above examples) |
MUST be configurable for the node, with a conservative |
default value (e.g., T = 1 second, NOT 0 seconds, or F = 2 |
percent, NOT 100 percent). |
The following sections describe the message formats for the above The following sections describe the message formats for the above
IPv6 ICMP messages. IPv6 ICMP messages.
3. ICMP Error Messages 3. ICMP Error Messages
3.1. Destination Unreachable Message 3.1. Destination Unreachable Message
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum | | Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused | | Unused | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| As much of invoking packet | | As much of invoking packet |
| as will fit without ICMP packet | + as will fit without ICMP packet + |
| exceeding 576 octets | | exceeding 576 octets |
+ + |
| | | |
IPv6 Fields: IPv6 Fields: |
Source Address
The IPv6 address of the node that composes
(sends) the ICMP message.
Destination Address Destination Address |
The IPv6 address of the node to which the Copied from the Source Address field of the invoking |
ICMP message is sent. packet. |
IPv6 ICMP Fields: IPv6 ICMP Fields: |
Type 3 Type 1 |
Code 0 - intermediate router unreachable Code 0 - no route to destination |
1 - destination address unreachable (last hop) 1 - communication with destination |
2 - unused administratively prohibited |
3 - port unreachable 3 - address unreachable |
4 - unused 4 - port unreachable |
5 - unused
6 - destination router or prefix unkown
7 - destination address unknown (last hop)
8 - source node isolated
9 - communication with intermediate router
administratively prohibited
10 - communication with destination node
administratively prohibited (last hop)
Unused This field is unused for all code values. Unused This field is unused for all code values.
It must be initialized to zero by the sender It must be initialized to zero by the sender
and ignored by the receiver. and ignored by the receiver.
Description Description
A Destination Unreachable SHOULD be sent by a router in response to a A Destination Unreachable message SHOULD be generated by a router, or |
packet which it cannot forward either because the next router by the IPv6 layer in the originating node, in response to a packet |
destination address is unreachable (code 0), the node destination that cannot be delivered to its destination address for reasons other |
address is unreachable (code 1), the next router destination address than congestion. (If a packet is dropped due to congestion, no ICMP |
is unknown (code 6), the node destination address is unknown (code error message is generated.) If the reason for the failure to |
7), or if the router is administratively prohibited from forwarding deliver is lack of a matching entry in the forwarding node's routing |
packets to the destination of the IPv6 packet either to a router table, the Code field is set to 0 (NOTE: this error can occur only in |
(code 11), or to the final destination which is a node (code 12). routers that do not hold a "default route" in their routing tables). |
If the reason for the failure to deliver is administrative |
A host SHOULD generate a Destination Unreachable message in response prohibition, e.g., a "firewall filter", the Code field is set to 1. |
to a packet when the transport protocol indicated by the Next Header If there is any other reason for the failure to deliver, e.g., |
Type field (such as UDP) is unable to demultiplex the packet (code 3) inability to resolve the IPv6 destination address into a |
but has no protocol mechanisms to inform the sender. corresponding link address, or a link-specific problem of some sort, |
then the Code field is set to 3. |
NOTE:
The distinction between node or router for messages with code <0, or
1>, <6, or 7>, <9, or 10> is made by the ICMP packet generator based
on whether the packet is being forwarded to an intermediate router
(the packet is en route) or to its final destination node (last hop).
Also the distinction between messages with code <0, or 1>, and <6, or A destination node SHOULD send a Destination Unreachable message with |
7>is made by the ICMP packet generator based on whether the packet is Code 4 in response to a packet for which the transport protocol |
unreachable because of a link-level problem, or because the (e.g., UDP) has no listener, if that transport protocol has no |
destination is not in the route cache. alternative means to inform the sender. |
Upper layer notification Upper layer notification |
A node receiving the ICMP Destination Unreachable message MUST notify A node receiving the ICMP Destination Unreachable message MUST notify |
the upper layer. the upper layer. |
3.2. Packet Too Big Message 3.2. |
Packet Too Big Message |
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum | | Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MTU | | MTU |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| As much of invoking packet | | As much of invoking packet |
| as will fit without ICMP packet | + as will fit without ICMP packet + |
| exceeding 576 octets | | exceeding 576 octets |
+ + |
| | | |
IPv6 Fields: IPv6 Fields: |
Source Address
The IPv6 address of the node that composes
(sends) the ICMP message.
Destination Address Destination Address |
The IPv6 address of the node to which the Copied from the Source Address field of the invoking |
ICMP message is sent. packet. |
IPv6 ICMP Fields: IPv6 ICMP Fields: |
Type TBD Type 2 |
Code 0 Code 0
MTU The 32-bits of this field contain the next hop's link MTU The Maximum Transmission Unit of the next-hop link. |
Maximum Transmission Unit.
Description Description
A Packet Too Big MUST be sent by a router in response to a packet A Packet Too Big MUST be sent by a router in
which it cannot forward because the packet is larger than the MTU of response to a packet that it cannot forward because the packet is |
the outgoing link. larger than the MTU of the outgoing link. The information in this |
message is used as part of the Path MTU Discovery process [RFC-1191]. |
A node sending packets that cannot be forwarded by a router due to
the packets exceeding the MTU of the next-hop link will receive from
that router the ICMP Packet Too Big message, reporting the MTU of
that next-hop link.
The node SHOULD store that PMTU information and use it for subsequent
packets sent to the same destination. Using this mechanism, if the
packets are traversing several networks (forwarded by several
routers), a node may receive several ICMP Packet Too Big messages
until the PMTU to the final destination is learned. It is up to the
transport or application protocol to make sure that packets lost
because of inadequate PMTU are retransmitted.
The minimum legal value of the next-hop MTU field in a "packet too Sending a Packet Too Big Message makes an exception to the rules of |
big" message (code 4) received by an IPv6 node is 68 octets. While when to send an ICMP error message, in that unlike other messages, it |
IPv6 requires all links in the Internet to have an MTU of 576 octets is sent in response to a packet received with an IPv6 multicast |
or greater, the smaller minimum legal value is required to allow Path destination address, or a link-layer multicast or link-layer |
MTU discovery to work correctly when IPv6 packets are undergo broadcast address. |
translation to IPv4 packets (see Section 5 in [IPv6-SIT]).
Upper layer notification Upper layer notification
An incoming Packet Too Big message MUST be passed to the transport An incoming Packet Too Big message MUST be passed to the transport
layer. layer.
3.3. Time Exceeded Message 3.3.
Time Exceeded Message |
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum | | Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused | | Unused | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| As much of invoking packet | | As much of invoking packet |
| as will fit without ICMP packet | + as will fit without ICMP packet + |
| exceeding 576 octets | | exceeding 576 octets |
+ + |
| | | |
IPv6 Fields: IPv6 Fields: |
Source Address
The IPv6 address of the node that composes
(sends) the ICMP message.
Destination Address Destination Address |
The IPv6 address of the node to which the Copied from the Source Address field of the invoking |
ICMP message is sent. packet. |
IPv6 ICMP Fields: IPv6 ICMP Fields: |
Type 11 Type 3 |
Code 0 - hop limit exceeded in transit Code 0 - hop limit exceeded in transit
1 - fragment reassembly time exceeded 1 - fragment reassembly time exceeded
Unused It must be initialized to zero by the sender Unused This field is unused for all code values. |
and igmored by the receiver. It must be initialized to zero by the sender |
and ignored by the receiver. |
Description Description
If a router receives a packet with a Hop Limit of zero, or a router If a router receives a packet with a Hop Limit of zero, or a router
decrements a packet's Hop Limit to zero, it discards the packet and decrements a packet's Hop Limit to zero, it discards the packet and
sends an IPv6 ICMP Time Exceeded message with code 0. This indicates sends an IPv6 ICMP Time Exceeded message with
either a routing loop or too small an initial Hop Limit value. Code 0 to the source of the packet. This indicates either a routing |
loop or too small an initial |
Hop Limit value.
IPv6 systems are expected to avoid fragmentation by implementing Path IPv6 systems are expected to avoid fragmentation by implementing Path
MTU discovery. However, IPv6 defines an end-to-end fragmentation MTU discovery. However, IPv6 defines an end-to-end fragmentation
function for backwards compatibility with existing higher-layer pro- function for backwards compatibility with existing higher-layer |
tocols and IPv4-to-IPv6 translation. protocols. All IPv6 implementations are required to support |
reassembly |
From [RFC-1122], the IPv6 layer within IPv6 hosts MUST implement of IPv6 fragments. There MUST be a reassembly timeout. The
reassembly of IPv6 fragments. There MUST be a reassembly timeout. reassembly timeout SHOULD be a fixed value. It is recommended that
The reassembly timeout SHOULD be a fixed value. It is recommended this value lie between 60 and 120 seconds. If the timeout expires,
that this value lie between 60 and 120 seconds. If the timeout the
expires, the partially-reassembled datagram MUST be discarded. If the partially-reassembled packet MUST be discarded. If the fragment |
fragment with offset zero was received, the destination host SHOULD with offset zero was received, the destination host SHOULD also send
also send an IPv6 ICMP Time Exceeded message with code 1. an IPv6 ICMP Time Exceeded message with Code 1 to the source of the |
fragment. |
Upper layer notification Upper layer notification
An incoming Time Exceeded message MUST be passed to the transport An incoming Time Exceeded message MUST be passed to the transport
layer. layer.
2.5. Parameter Problem Message 3.4. |
Parameter Problem Message
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum | | Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pointer | | Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| As much of invoking packet | | As much of invoking packet |
| as will fit without ICMP packet | + as will fit without ICMP packet + |
| exceeding 576 octets | | exceeding 576 octets |
+ + |
| | | |
IPv6 Fields: IPv6 Fields: |
Source Address
The IPv6 address of the node that composes
(sends) the ICMP message.
Destination Address Destination Address |
The IPv6 address of the node to which the Copied from the Source Address field of the invoking |
ICMP message should be sent. packet. |
IPv6 ICMP Fields: IPv6 ICMP Fields: |
Type 12 Type 4 |
Code 0 means Pointer field indicates incorrect parameter. Code 0 - erroneous header field encountered |
1 means unrecognized Next Header type 1 - unrecognized Next Header type encountered |
2 means unrecognized IPv6 option 2 - unrecognized IPv6 option encountered |
Pointer identifies the octet offset within the Pointer identifies the octet offset within the
invoking packet where an error was detected. invoking packet where the error was detected. |
The pointer will point beyond the end of the ICMP packet, The pointer will point beyond the end of the ICMP |
if the parameter in error is beyond what can fit in the packet if the field in error is beyond what can fit |
576-byte limit of an ICMP error message. in the 576-byte limit of an ICMP error message. |
Description Description
If an IPv6 node processing a packet finds a problem with a field in |
If an IPv6 node processing a packet finds a problem with the parame- the IPv6 header or extension headers such that it cannot complete |
ters in the IPv6 header or extension headers such that it cannot com- processing the packet, it MUST discard the packet and SHOULD send an |
plete processing the packet, it MUST discard the packet and SHOULD ICMP Parameter Problem message to the packet's source, indicating the |
send an ICMP Parameter Problem message. type and location of the problem. |
Upper layer notification Upper layer notification
A node receiving this ICMP message MUST notify the upper layer. A node receiving this ICMP message MUST notify the upper layer.
4. ICMP Non-Error Messages 4. |
ICMP Informational Messages |
4.1. Echo Message 4.1.
Echo Request Message |
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum | | Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number | | Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ... | Data ...
+-+-+-+-+- +-+-+-+-+-
IPv6 Fields: IPv6 Fields: |
Source Address
The IPv6 address of the node that composes
(sends) the ICMP message.
Destination Address
The IPv6 address of the node to which the
ICMP message should be sent.
Destination Address |
Any legal IPv6 address. |
|
IPv6 ICMP Fields: IPv6 ICMP Fields:
Type 8 - Echo Message Type 128 |
Code 0 Code 0
Identifier If code = 0, some identifier to match echo messages Identifier If code = 0, an identifier to aid in matching |
with echo replies. May be zero. Echo Replies to this Echo Request. May be zero. |
Sequence Number If code = 0, a sequence number to aid in matching
echo messages with echo replies. May be zero.
Description
Every node MUST implement an ICMP Echo server function that receives
Echo Requests and sends corresponding Echo Replies. A node SHOULD
also implement an application-layer interface for sending an Echo
Request and receiving an Echo Reply, for diagnostic purposes.
An Echo Reply SHOULD be sent in response to an Echo message sent to Sequence If code = 0, a sequence number to aid in matching |
an IPv6 multicast address. The source address of the reply MUST be a Number Echo Replies to this Echo Request. May be zero. |
unicast address belonging to the interface on which the multicast
Echo message was received.
The source address of an Echo Reply sent in response to a unicast Data If code = 0, zero or more octets of arbitrary data. |
Echo message MUST be the same as the destination address of that Echo
message.
Upper layer notification Description
A node receiving this ICMP message MUST notify the upper layer. Every node MUST implement an ICMP Echo responder function that |
receives Echo Requests and sends corresponding Echo Replies. A node
SHOULD also implement an application-layer interface
for sending Echo Requests and receiving Echo Replies, for |
diagnostic purposes.
Implementation Note: Upper layer notification |
An application that sends ICMP Echo messages has to fill in both the A node receiving this ICMP message MAY notify the upper layer. |
Source and Destination IPv6 Addresses in the ICMP header before
calculating the checksum. Please see the Implementation Note in
Section 2.
4.2. Echo Reply Message 4.2. |
Echo Reply Message |
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum | | Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number | | Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ... | Data ...
+-+-+-+-+- +-+-+-+-+-
IPv6 Fields: IPv6 Fields: |
Source Address
The IPv6 address of the node that composes
(sends) the ICMP message.
Destination Address Destination Address |
The IPv6 address of the node to which the Copied from the Source Address field of the invoking |
ICMP message should be sent. Echo Request packet. |
IPv6 ICMP Fields: IPv6 ICMP Fields: |
Type 0 - Echo Reply Message Type 129 |
Code 0 Code 0
Identifier If code = 0, some identifier to match echo messages Identifier If code = 0, the identifier from the invoking |
with echo replies. May be zero. Echo Request message. |
Sequence Number If code = 0, a sequence number to aid in matching Sequence If code = 0, the sequence number from the invoking |
echo messages with echo replies. May be zero. Number Echo Request message. |
Data If code = 0, the data from the invoking |
Echo Request message |
Description Description
Every node MUST implement an ICMP Echo server function that receives Every node MUST implement an ICMP Echo responder function that |
Echo Requests and sends corresponding Echo Replies. A node SHOULD receives Echo Requests and sends corresponding Echo Replies. A node
also implement an application-layer interface for sending an Echo SHOULD also implement an application-layer interface
Request and receiving an Echo Reply, for diagnostic purposes. for sending Echo Requests and receiving Echo Replies, for |
diagnostic purposes.
An Echo Reply SHOULD be sent in response to an Echo message sent to The source address of an Echo Reply sent in response to a unicast |
an IPv6 multicast address. The source address of the reply MUST be a Echo Request message MUST be the same as the destination address of |
unicast address belonging to the interface on which the multicast that Echo Request message. |
Echo message was received.
The source address of an Echo Reply sent in response to a unicast An Echo Reply SHOULD be sent in response to an Echo Request message |
Echo message MUST be the same as the destination address of that Echo sent |
message. to an IPv6 multicast address. The source address of the reply MUST
be a unicast address belonging to the interface on which
the multicast Echo Request message was received. |
The data received in the ICMP Echo message MUST be returned entirely The data received in the ICMP Echo Request message MUST be returned |
and unmodified in the ICMP Echo Reply message. However, if the Echo entirely and unmodified in the ICMP Echo Reply message, unless the |
Reply would exceed the path MTU of the path back to the Echo Echo Reply would exceed the MTU of the path back to the Echo |
requestor, then the Echo Reply message MUST be truncated to the path requester, in which case the data is truncated to fit that path MTU. |
MTU size and sent.
Upper layer notification Upper layer notification
Echo Reply messages MUST be passed to the ICMP user interface, unless Echo Reply messages MUST be passed to the ICMP user interface, unless
the corresponding Echo Request originated in the IP layer. the corresponding Echo Request originated in the IP layer.
Implementation Note: 4.3. |
Group Membership Messages |
An application that sends ICMP ECHO messages has to fill in the ICMP
header both the Source and Destination IPv6 Addresses before
calculating the checksum. See the Implementation Note in Section 2.
4.3. Group Membership Messages
The ICMP Group Membership Messages have the following format: The ICMP Group Membership Messages have the following format: |
0 1 2 3 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 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Type | Code | Checksum | | Type | Code | Checksum | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Unused | | Maximum Response Delay | Unused | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
+ + + +
| Multicast | | Multicast |
+ + + +
| Address | | Address |
+ + + +
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv6 Fields: IPv6 Fields: |
Source Address Destination Address |
The IPv6 address of the node that composes (sends) the In a Group Membership Query message, the multicast |
ICMP message. address of the group being queried, or the Link-Local |
All-Nodes multicast address. |
Destination Address In a Group Membership Report or a Group Membership |
The IPv6 address of the node to which the ICMP message Termination message, the multicast address of the |
is sent. group being reported or terminated. |
Hop Limit 1 |
IPv6 ICMP Fields: IPv6 ICMP Fields:
Type TBD - Group Membership Query Type 130 - Group Membership Query |
TBD - Group Membership Report 131 - Group Membership Report |
TBD - Group Membership Termination 132 - Group Membership Termination |
Code In Query messages, the Code field specifies the Code 0 |
maximum time that responding Reports may be delayed.
In Report and Termination messages, the Code field Maximum Response Delay |
In Query messages, the maximum time that responding |
Report messages may be delayed, in milliseconds. |
In Report and Termination messages, this field is |
is initialized to zero by the sender and ignored by is initialized to zero by the sender and ignored by
receivers. receivers.
Unused Initialized to zero by the sender; ignored by receivers. Unused Initialized to zero by the sender; ignored by receivers.
Multicast Address Multicast Address
The address if the multicast group about which the The address if the multicast group about which the
message is being sent. In Query messages, the Multicast message is being sent. In Query messages, the Multicast
Address field may be zero, implying a query for all Address field may be zero, implying a query for all
groups. groups.
Description Description
The ICMP Group Membership messages are to convey information about The ICMP Group Membership messages are used to convey information |
about |
multicast group membership from nodes to their neighboring routers. multicast group membership from nodes to their neighboring routers.
The details of their usage is given in [RFC-1112]. The details of their usage is given in [RFC-1112].
4.4. Solicitation and Advertisment 5. References |
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Body |
+ +
| |
Type 33 - solicitation
34 - advertisment
[IPv6-DISC] defines in detail this ICMP message header format.
5. References
[IPv6]R. Hinden, "Internet Protocol Version 6 Specification", [IPv6]R. Hinden, "Internet Protocol Version 6 Specification", |
Internet Draft, <DRAFT-HINDEN-IPNG-IPV6-SPEC-00.TXT>. October February 1995 |
1994
[IPv6-ADDR] [IPv6-ADDR]
R. Hinden. IP Next Generation Addressing Architecture. R. Hinden, "IP Next Generation Addressing Architecture", |
Internet Draft <DRAFT-HINDEN-IPNG-ADDR-00.TXT>. October 1994. February 1995 |
[IPv6-DISC] [IPv6-DISC]
W. A. Simpson "Neighbor Discovery", Internet Draft, <DRAFT- W. A. Simpson, "IPv6 Neighbor Discovery", February 1995 |
SIMPSON-IPV6-DISCOV-FORMATS-01.TXT>, November 1994
[IPv6-SIT]
R.Gilligan, E. Nordmark, "Simple Internet Transition
Overview", Internet Draft, <DRAFT-GILLIGAN-IPV6-SIT-OVERVIEW-
01.TXT>, November 1994
[RFC-792]
J. Postel, "Internet Control Message Protocol", RFC 792.
[RFC-1112]
S. Deering, "Host Extensions for IP Multicasting", RFC 1112.
[RFC-1122] [RFC-792] |
R. Braden, "Requirements for Internet Hosts - Communication J. Postel, "Internet Control Message Protocol", RFC 792. |
Layers", RFC 1122.
[RFC-1191] [RFC-1112] |
J. Mogul and S. Deering, "Path MTU Discovery", RFC 1191. S. Deering, "Host Extensions for IP Multicasting", RFC 1112. |
[RFC-1256] [RFC-1122] |
S. Deering, "ICMP Router Discovery", RFC 1256. R. Braden, "Requirements for Internet Hosts - Communication |
Layers", RFC 1122. |
[TRANS-MECH] [RFC-1191] |
R. Gilligan, E. Nordmark. IPv6 Transition Mechanisms for Hosts J. Mogul and S. Deering, "Path MTU Discovery", RFC 1191. |
and Routers. Internet Draft <draft-gilligan-ipv6-trans-
mechanisms-00.txt>. November 1994.
6. Acknowledgements 6. Acknowledgements |
The document is derived from the "ICMP and IGMP for SIPP" document The document is derived from the "ICMP and IGMP for SIPP" document
published as a draft by Ramesh Govindan and Steve Deering in March published as a draft by Ramesh Govindan and Steve Deering in March
1994. 1994.
Extensive review information and feedback was provided by Robert Elz, The working group and particularly Robert Elz, Jim Bound, and Bill |
Jim Bound, and others. Simpson provided extensive review information and feedback. |
7. Security Considerations 7. Security Considerations |
Security considerations are not discussed in this memo. Security considerations are not discussed in this memo.
Authors' Addresses: Authors' Addresses:
Alex Conta Stephen Deering Alex Conta Stephen Deering
Digital Equipment Corporation Xerox Palo Alto Research Center Digital Equipment Corporation Xerox Palo Alto Research Center
110 Spitbrook Rd 3333 Coyote Hill Road 110 Spitbrook Rd 3333 Coyote Hill Road
Nashua, NH 03062 Palo Alto, CA 94304 Nashua, NH 03062 Palo Alto, CA 94304
+1-603-881-0744 +1-415-812-4839 +1-603-881-0744 +1-415-812-4839
 End of changes. 116 change blocks. 
427 lines changed or deleted 337 lines changed or added

This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/