Types of ICMPv6 messages, ICMPv6 message format, ICMPv6 message fields
Why we need ICMPv6 (Internet Control Message Protocol version 6) along with IPv6? Well, the backbone protocol for moving data from one node to another node in a computer network is Internet Protocol version 6 (IPv6). But, the Internet Protocol version 6 (IPv6) needs additional functionalities to move data from one computer to another computer.
Examples of the additional functionalities required are; error reporting while packet transmission, router discovery, diagnostics, provision for ping command etc. For Internet Protocol version 6 (IPv6), all these additional functionalities are provided by Internet Control Message Protocol version 6 (ICMPv6).
ICMPv6 (Internet Control Message Protocol version 6) is the implementation of the Internet Control Message Protocol for IPv6 (Internet Protocol version 6). IPv6 (Internet Protocol version 6) uses the ICMPv4 (Internet Control Message Protocol) as defined in RFC 792 written for IPv4, with a number of additional changes. ICMPv6 (Internet Control Message Protocol version 6) has a number of additional changes from its predecessor ICMPv4 (Internet Control Message Protocol version 4). The Next Header value for ICMPv6 in IPv6 header is 58.
Please click the next link, if you are not sure what an RFC is.
In this lesson, we will learn about different types of ICMPv6 messages exchanged between IPv6 enabled nodes. Generally, ICMPv6 messages are classified into two types. The two types of ICMPv6 Messages are ICMPv6 Error Messages and ICMPv6 Informational Messages.
ICMPv6 Message Format
Following images shows ICMPv6 message format. Please note that the below image is the general format for an ICMPv6 message. There are ICMPv6 messages, having different format than general format.
As you can see from the above image, Type and Code fields in ICMPv6 message are binary numbers, 8-bits long. So, the equivalent decimal values for the Type and Code fields can be between 0 to 255. Please refer following link to learn more about binary, decimal and hexadecimal numbers.
Following table explains different fields in an ICMPv6 message.
Field | Number of bits | Description |
---|---|---|
Type | 8 bits | The Type field in ICMPv6 message is used to inform the receiving computer-like device or a router about the Type of the ICMPv6 message. ICMPv6 message types are ICMPv6 Error messages and ICMPv6 informational messages. |
Code | 8 bits | The Code field in ICMPv6 message header is dependent on the Type field of the ICMPv6 message header. Code field is used to provide additional information about the ICMPv6 message. |
Checksum | 16 bits | The Checksum field is used to detect data corruption in ICMPv6 message header. |
Reserved | 32 bits | Currently not in use. Set to 0 by the sender and ignored by the receiver. |
Message body | Variable | The size of the Message body field of the ICMPv6 message is variable. The contents of the Message Body field depend on the Message Type and Message Code of the ICMPv6 message header. |
Types of ICMPv6 messages
Following table lists the Types of ICMPv6 messages.
Type field value in ICMPv6 Message | Description | RFC | Classification |
---|---|---|---|
0 | Reserved | RFC 4443 | Error message |
1 | Destination Unreachable | RFC 4443 | Error message |
2 | Packet Too Big | RFC 4443 | Error message |
3 | Time Exceeded | RFC 4443 | Error message |
4 | Parameter Problem | RFC 4443 | Error message |
100 | Private Experimentation | RFC 4443 | Error message |
101 | Private Experimentation | RFC 4443 | Error message |
102 to 126 | Unassigned | RFC 4443 | Error message |
127 | Reserved for the Expansion of ICMPv6 Error Messages | RFC 4443 | Error message |
128 | Echo Request | RFC 4443 | Informational message |
129 | Echo Reply | RFC 4443 | Informational message |
130 | Multicast Listener Query | RFC 2710 | Informational message |
131 | Multicast Listener Report | RFC 2710 | Informational message |
132 | Multicast Listener Done | RFC 2710 | Informational message |
133 | Router Solicitation | RFC 4861 | Informational message |
134 | Router Advertisement | RFC 4861 | Informational message |
137 | Redirect Message | RFC 4861 | Informational message |
138 | Router Renumbering | RFC 2894 | Informational message |
139 | ICMP Node Information Query | RFC 4620 | Informational message |
140 | ICMP Node Information Response | RFC 4620 | Informational message |
141 | Inverse Neighbor Discovery Solicitation Message | RFC 3122 | Informational message |
142 | Inverse Neighbor Discovery Advertisement Message | RFC 3122 | Informational message |
143 | Version 2 Multicast Listener Report | RFC 3810 | Informational message |
144 | Home Agent Address Discovery Request | RFC 6275 | Informational message |
145 | Home Agent Address Discovery Reply | RFC 6275 | Informational message |
146 | Mobile Prefix Solicitation | RFC 6275 | Informational message | 147 | Mobile Prefix Advertisement | RFC 6275 | Informational message |
148 | Certification Path Solicitation | RFC 3971 | Informational message |
149 | Certification Path Advertisement | RFC 3971 | Informational message |
150 | ICMP message utilized by experimental mobility protocols | RFC 4065 | Informational message |
151 | Multicast Router Advertisement | RFC 4286 | Informational message |
152 | Multicast Router Solicitation | RFC 4286 | Informational message |
153 | Multicast Router Termination | RFC 4286 | Informational message |
154 | FMIPv6 Messages | RFC 5568 | Informational message |
155 | RPL Control Message | RFC 9010 | Informational message |
156 to 199 | Unassigned | Unassigned | Informational message |
200 | Private experimentation | RFC 4443 | Informational message |
201 | Private experimentation | RFC 4443 | Informational message |
255 | Reserved | RFC 4443 | Informational message |
ICMPv6 Error messages
ICMPv6 error messages are used to report errors happened while IPv6 packet transmission in forwarding or delivery. ICMPv6 error messages are normally sent by a destination node computer-like device or a router.
The left-most bit (high order bit) of the 8-bit Type field of an ICMPv6 Error Message is reserved as 0. So, the value of the Type field in an ICMPv6 Error Message can be between 0 to 127.
Click the following link to learn more about binary, decimal and hexadecimal numbers.
Following paragraph is copied from RFC 792
ICMPv6 messages are grouped into two classes: error messages and informational messages. Error messages are identified as such by a zero in the high-order bit of their message Type field values. Thus, error messages have message types from 0 to 127; informational messages have message types from 128 to 255.
Below image shows the minimum and maximum possible values for Type field in an ICMPv6 Error message. Please refer below image.
Type and Code values for ICMPv6 Error messages
Following table lists important Type and Code values for ICMPv6 Error Messages. Please note that the Type field value for ICMPv6 error messages are between 0 and 127.
Type Field in ICMPv6 Message | Code Field in ICMPv6 Message | Description |
---|---|---|
Destination Unreachable (Value 1) | 0 | No Route to destination network |
1 | Administratively prohibited | |
2 | Beyond scope of source address | |
3 | IPv6 address unreachable | |
4 | Port unreachable | |
5 | Source address failed | |
6 | Reject route to destination | |
7 | Error in Source Routing Header | |
Packet Too Big (Value 2) | 0 | Packet too big for next hop link |
Time Exceeded (Value 3) | 0 | Hop Limit exceeded |
1 | Fragment reassembly time exceeded | |
Parameter Problem (Value 4) | 0 | Header field error |
1 | Unrecognized Next Header type | |
2 | Unrecognized IPv6 option | |
Private experimentation (100) | Private experimentation. Not for general use. | |
Private experimentation (101) | Private experimentation. Not for general use. | |
Reserved (127) | Reserved for future expansion |
ICMPv6 Informational messages
ICMPv6 (Internet Control Message Protocol version 6) Informational Messages provide diagnostic functions and additional host functionalities like Multicast Listener Discovery (MLD) and Neighbor Discovery (ND) in an IPv6 network. ICMPv6 (Internet Control Message Protocol version 6) Informational Messages are used to communicate information related with test, diagnosis, connectivity checks, support etc. between nodes in an IPv6 network.
The left-most bit (high order bit) of the 8-bit Type field of an ICMPv6 Informational Message is reserved as 1. So, the value of the Type field in an ICMPv6 Informational Message can be between 128 to 255.
Click the following link to learn more about binary, decimal and hexadecimal numbers.
Following paragraph is copied from RFC 792
ICMPv6 messages are grouped into two classes: error messages and informational messages. Error messages are identified as such by a zero in the high-order bit of their message Type field values. Thus, error messages have message types from 0 to 127; informational messages have message types from 128 to 255.
Below image shows the minimum and maximum possible values for Type field in an ICMPv6 Informational message. Please refer below image.
Type and Code values for ICMPv6 Informational messages
Type Field in ICMPv6 Message | Code Field in ICMPv6 Message | Description |
---|---|---|
Echo Request (Value 128) | 0 | ICMPv6 Echo Request messages are used for network reachability testing in an IPv6 network. IPv6 Ping command uses ICMPv6 Echo Request and Echo Reply messages. |
Echo Reply (Value 129) | 0 | ICMPv6 Echo Reply messages are used for network reachability testing in an IPv6 network. IPv6 Ping command uses ICMPv6 Echo Request and Echo Reply messages. |
Multicast Listener Query (Value 130) | 0 | Multicast Listener Query messages are sent by an IPv6 multicast-capable router to query to it's link for multicast group membership. There are two subtypes of Multicast Listener Query. General Query is used to learn which multicast addresses have listeners on a subnet and Multicast-Address-Specific Query is used to learn if a particular multicast address has any listeners on a subnet. These two subtypes are differentiated by the contents of the Multicast Address field. Please refer (RFC 2710 - Multicast Listener Discovery (MLD) for IPv6.) Used for multicast group management. |
Multicast Listener Report (Value 131) | 0 | Multicast Listener report messages are sent by a listener, to a multicast address FF02::16 (all MLDv2-capable routers), as a reply to a Query or as an unsolicited message. The purpose of an IPv6 Multicast Listener report message is to register for a multicast group. |
Multicast Listener Done (Value 132) | 0 | Multicast Listener Done messages are sent if a node no longer wants to receive multicast traffic for a particular multicast group. |
NDP Router Solicitation (Value 133) | 0 | Neighbor Discovery Protocol (NDPƑRouter Solicitation (RS) messages are multicast messages sent by hosts to an IPv6 network. NDP Router Solicitation (RS) messages are sent to IPv6 multicast address FF02::2 (all-routers multicast address). Main purpose of NDP Router Solicitation (RS) message is to find IPv6 capable routers in the network. |
NDP Router Advertisement (Value 134) | 0 | Neighbor Discovery Protocol (NDP) Router Advertisement (RA) Messages are sent by IPv6 routers in response to Router Solicitation (RS) messages. Router Advertisement (RA) Messages are also sent periodically to provide network configuration information to devices on the network. Router Advertisement (RA) Messages are sent to FF02::1 (IPv6 all-nodes multicast address) Router Advertisement (RA) Messages are also sent as a unicast message to a particular host. |
NDP Neighbor Solicitation (Value 135) | 0 | Neighbor Discovery Protocol (NDP) Neighbor Solicitation (NS) Messages are sent by the nodes to find the corresponding link-layer address (layer-two address or MAC address) of an IPv6 address on the local link. Neighbor solicitation messages are also used for DAD (Duplicated Address Detection). |
NDP Neighbor Advertisement (Value 136) | 0 | Neighbor Discovery Protocol (NDP) Neighbor Advertisement (NA) Messages are sent in response with Neighbor Solicitation (NS) Messages. Neighbor Advertisement (NA) Messages are also sent unsolicited to network devices, to inform them any change. |
NDP Redirect Message (Value 137) | 0 | Neighbor Discovery Protocol (NDP) Redirect Messages are used by routers to show a better default-gateway address to forward, for the destination address. |
Router Renumbering (Value 138) | 0 | Router Renumbering feature allow routers in an autonomous system to be renumbered, by configuring them with new network prefixes. |
Node Information Query (Value 139) | 0 | Node Information Query messages are used to request certain network information, such as its hostname or FQDN (Fully-qualified Domain Name). Code 0 indicates that Data field contains an IPv6 address |
1 | Code 1 indicates that Data field contains a Name | |
2 | Code 2 indicates that Data field contains an IPv4 address | |
Node Information response (Value 140) | 0 | A successful reply to the Query |
1 | Responder refuses to answer the query. The result data field will be empty. | |
2 | Query is unknown to the responder | |
Inverse Neighbor Discovery Solicitation Message (Value 141) | 0 | The Inverse Neighbor Discovery Solicitation Message is used to obtain the full list of IPv6 addresses from a remote link. A node sends an Inverse Neighbor Discovery Solicitation message to request an IPv6 address corresponding to a link-layer address (commonly MAC address) of the target node while also providing its own link-layer address to the target. Please refer RFC 3122 - Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification. |
Inverse Neighbor Discovery Advertisement Message (Value 142) | 0 | Inverse Neighbor Discovery Advertisement Message is used as a response to an Inverse Neighbor Discovery Solicitation Message. Please refer RFC 3122 - Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification. |
Version 2 Multicast Listener Report (Value 143) | 0 | Multicast Listener Discovery Protocol version 2 (MLDv2) is a protocol which helps IPv6 router to discover the presence of multicast listeners on its links, and to discover which multicast addresses are of interest to those neighboring nodes. MLDv1 and MLDv2 are interoperable. MLDv2 has additional source-specific multicast capabilities. |
Home Agent Address Discovery Request (Value 144) | 0 | Home Agent Address Discovery Request messages are sent by a mobile node to Mobile IPv6 Home-Agents for dynamic home agent address discovery. |
Home Agent Address Discovery Reply (Value 145) | 0 | Home Agent Address Descovery Reply messages are sent by an IPv6 Home-Agent to complete the dynamic home agent address discovery process. |
Mobile Prefix Solicitation (Value 146) | 0 | Mobile Prefix Solicitation messages are sent by a mobile node, to find if any changes in the prefix configuration at its home link. |
Mobile Prefix Advertisement (Value 147) | 0 | Mobile Prefix Advertisement is the reply for Mobile Prefix Solicitation message. Home-Agents may also send unsolicited Mobile Prefix Advertisement messages at regular intervals. |
Certification Path Solicitation (Value 148) | 0 | Certification Path Solicitation messages are related with SEcure Neighbor Discovery (SEND). Certification Path Solicitation messages are used to prompt routers to generate Certification Path Advertisements. |
Certification Path Advertisement (Value 149) | 0 | Certification Path Advertisement messages are related with SEcure Neighbor Discovery (SEND). Certification Path Advertisement messages are sent by routers in response to a Certification Path Solicitation. |
ICMP message utilized by experimental mobility protocols (Value 150) | 0 | Informational message |
Multicast Router Advertisement (Value 151) | 0 | Multicast Router Discovery (MRD) protocol is used for identifying multicast routers without a depending on multicast routing protocols. Multicast Router Advertisement are sent unsolicited periodically on all router interfaces on which multicast forwarding is enabled. |
Multicast Router Solicitation (Value 152) | 0 | Multicast Router Discovery (MRD) protocol is used for identifying multicast routers without a depending on multicast routing protocols. Multicast Router Solicitation messages are sent by devices, whenever they want to discover multicast routers on their directly attached link. |
Multicast Router Termination (Value 153) | 0 | Multicast Router Termination |
Private experimentation. (Value 200) | Private experimentation. Not for general use. | |
Private experimentation. (Value 201) | Private experimentation. Not for general use. | |
Reserved (Value 255) | Reserved for future expansion |
Written by Jajish Thomas. Last updated on 19th May, 2024.