1.2.4.3 ICMPv6 Module
This document specifies a set of APIs of Internet Control Message Protocol (ICMP) messages for use with version 6 of the Internet Protocol (IPv6).
The Internet Protocol, version 6 (IPv6) is a new version of IP, uses the Internet Control Message Protocol (ICMP) as defined for IPv4
, with a number of changes. It is called ICMPv6, and has an IPv6 Next Header value of 58.
ICMPv6 messages are used by IPv6 nodes to report error messages and information messages. ICMPv6 is also used for Ipv6 node diagnostic (i.e., IPv6 ping).
The ICMPv6 protocol also provides a framework for the following:
Neighbor Discovery
Neighbor Discovery is a series of five ICMPv6 messages that manage node-to-node communication on a link. Neighbor Discovery replaces Address Resolution Protocol (ARP), ICMP (IPv4) Router Discovery, and the ICMP (IPv4) Redirect message.
Multicast Listener Discovery (MLD)
Multicast Listener Discovery is a series of three ICMP messages that manage subnet multicast membership. Multicast Listener Discovery replaces version 2 of the Internet Group Management Protocol (IGMP) for IPv4.
Path MTU Discovery
The maximum transmission unit (MTU) for a path is the minimum link MTU of all links on a path between a source and a destination. IPv6 packets that are smaller than the path MTU do not require fragmentation by the host and are successfully forwarded by all routers on the path. To discover the path MTU, the sending host uses the receipt of ICMPv6 Packet Too Big messages.
ICMPv6 Common Messages | Functions |
---|---|
Echo Request | Sent to check IPv6 connectivity to a particular host. |
Echo Reply | Sent in response to an ICMPv6 Echo Request. |
Destination Unreachable | Sent by a router or the destination host to inform the sending host that the packet or payload cannot be delivered. |
Packet to big | Sent by a router to inform a sending host that a packet is too large to forward. |
Time exceeded | Sent by a router to inform a sending host that the Hop Limit of an IPv6 packet has expired. |
Parameter Problem | Sent by a router to inform a sending host that an error was encountered in processing the IPv6 header or an IPv6 extension header. |
Abstraction Model
This module provides software abstraction of the IPv6 module existent in any TCP/IP Stack implementation. It provides error reporting and diagnostics to the TCP/IP stack
IPv6 Block Diagram
NDP using ICMPv6 message type communication
Library Interface
Name | Description |
---|---|
Functions | |
TCPIP_ICMPV6_CallbackDeregister | Deregisters an upper-layer function from ICMPv6 callback. |
TCPIP_ICMPV6_Flush | Flushes a ICMPv6 packet. |
TCPIP_ICMPV6_HeaderEchoRequestPut | Allocates a packet, IPv6 Header, and Upper-layer header for an ICMPv6 echo request. |
TCPIP_ICMPV6_CallbackRegister | Registers an upper-layer function for ICMPv6 callback. |
TCPIP_ICMPV6_EchoRequestSend | Sends an ICMPv6 echo request to a remote node. |
Data Types and Constants | |
ICMPV6_ERR_DU_CODE | ICMPv6 Destination Unreachable error code. |
ICMPV6_ERR_PP_CODE | ICMPv6 Parameter Problem error code. |
ICMPV6_ERR_TE_CODE | ICMPv6 Time Exceeded error code. |
ICMPV6_HANDLE | ICMPv6 handle. |
ICMPV6_PACKET_TYPES | ICMPv6 packet types. |
ICMPV6_ERR_PTB_CODE | ICMPv6 Packet Too Big error code. |
ICMPV6_INFO_EREQ_CODE | ICMPv6 Packet Echo Request information code. |
ICMPV6_INFO_ERPL_CODE | ICMPv6 Packet Echo Reply information code. |
TCPIP_ICMPV6_PutHeaderEchoReply | This is macro TCPIP_ICMPV6_PutHeaderEchoReply. |