ICMPv6 main page


Description:

IPv6 uses the Internet Control Message Protocol (ICMP) as defined for IPv4 with a number of changes. The resulting protocol is called ICMPv6.
The ICMPv6 (Internet Control Message Protocol version 6 is an integral part of the IPv6 architecture and must be completely supported by all IPv6 implementations.
ICMPv6 combines functions previously subdivided among different protocols, such as ICMP (Internet Control Message Protocol version 4),
IGMP (Internet Group Membership Protocol), and ARP (Address Resolution Protocol), and it introduces some simplifications by eliminating obsolete types of messages no longer in use.


Protocol Overview:

ICMPv6 (in the following text called ICMP for the sake of brevity) is a multipurpose protocol; for example, it is used for reporting errors encountered in processing packets, performing diagnostics, performing Neighbor Discovery, and reporting multicast memberships. For this reason, ICMP messages are subdivided into two classes: error messages and information messages.
ICMP messages are transported within an IPv6 packet in which extension headers can also be present.
An ICMP message is identified by a value of 58 in the Next Header field of the IPv6 header or of the preceding Header.


Packets Format:

ICMPv6 packets have the format shown in the figure below. The 8-bit Type field indicates the type of the message. If the high order bit has value zero (values in the range from 0 to 127), it is an error message; if the high-order bit has value 1 (values in the range from 128 to 255), it is an information message. A list of currently defined message types is shown in the type table 1 below.
The 8-bit Code field content depends on the message type, and it is used to create an additional level of message granularity.
The Checksum field is used to detect errors in the ICMP message and in part of the IPv6 message.

MAC header IPv6 header ICMPv6 header ICMPv6 message


ICMPv6 header:

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Type Code Checksum
ICMPv6 message
:::


ICMPv6 (ICMP for IPv6):

ICMPv6 is used by IPv6 nodes to report errors encountered in processing packets, and to perform other internet-layer functions, such as diagnostics (ICMPv6 "ping"). ICMPv6 is an integral part of IPv6 and MUST be fully implemented by every IPv6 node.

ICMP Message Transmission:

A node that forwards an ICMP message has to determine both the source and the destination IPv6 addresses for the ICMP message.
Particular care must be put into the choice of the source address. If a node has more than one unicast address, it must choose the source address of the message as follows: When an ICMP node receives a packet, it must undertake actions that depend on the type of message (
RFC 1885 dealing with this subject).
Moreover, the ICMP protocol must limit the number of error messages sent to the same destination to avoid network overloading. For example, if a node continues to forward erroneous packets, ICMP will signal the error to the first packet and then do so periodically, with a fixed minimum period or with a fixed network maximum load.
An ICMP error message must never be sent in response to another ICMP error message.

Code. 8 bits.
Further qualifies the ICMP message.


Checksum. 16 bits.
Checksum that covers the ICMPv6 message. The checksum is the 16-bit one's complement of the one's complement sum of the entire ICMPv6 message starting with the ICMPv6 message type field, prepended with a pseudo-header of IPv6 header fields. The pseudo-header contains the following fields:

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Source IPv6 address
:::
Destination IPv6 address
:::
Upper layer packet length
0 Next header


ICMPv6 message. Variable length.
Contains the data specific to the message type indicated by the Type and Code fields.


Type. 8 bits.
Specifies the format of the ICMP message.

Table 1

Type Description Code References
1 Destination unreachable. 0 - no route to destination
1 - communication with destination administratively prohibited
2 - (not assigned)
3 - address unreachable
4 - port unreachable
RFC 2463
2 Packet too big. 0 RFC 2463
3 Time exceeded. 0 - hop limit exceeded in transit
1 - fragment reassembly time exceeded
RFC 2463
4 Parameter problem. 0 - erroneous header field encountered
1 - unrecognized Next Header type encountered
2 - unrecognized IPv6 option encountered
RFC 2463
128 Echo request. 0 RFC 2463
129 Echo reply. 0 RFC 2463
130 Group Membership Query. 0  
131 Group Membership Report. 0  
132 Group Membership Reduction. 0  
133 Router Solicitation. 0 RFC 2461
134 Router Advertisement. 0 RFC 2461
135 Neighbor Solicitation. 0 RFC 2461
136 Neighbor Advertisement. 0 RFC 2461
137 Redirect. 0 RFC 2461
138 Router Renumbering. 0 - Router Renumbering Command
1 - Router Renumbering Result
255 - Sequence Number Reset
RFC 2894
139 ICMP Node Information Query.    
140 ICMP Node Information Response.    
141 Inverse Neighbor Discovery Solicitation Message. 0 RFC 3122
142 Inverse Neighbor Discovery Advertisement Message. 0 RFC 3122



Security Considerations:


Changes from RFC 2463:

The following changes were made from
RFC 2463:

HOME


Copyright © 2003 ALAS, Inc. All Rights Reserved.