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 MessagesFunctions
Echo RequestSent to check IPv6 connectivity to a particular host.
Echo ReplySent in response to an ICMPv6 Echo Request.
Destination UnreachableSent by a router or the destination host to inform the sending host that the packet or payload cannot be delivered.
Packet to bigSent by a router to inform a sending host that a packet is too large to forward.
Time exceededSent by a router to inform a sending host that the Hop Limit of an IPv6 packet has expired.
Parameter ProblemSent 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

icmpv6

NDP using ICMPv6 message type communication

icmpv6_communication

Library Interface

NameDescription
Functions
TCPIP_ICMPV6_CallbackDeregisterDeregisters an upper-layer function from ICMPv6 callback.
TCPIP_ICMPV6_FlushFlushes a ICMPv6 packet.
TCPIP_ICMPV6_HeaderEchoRequestPutAllocates a packet, IPv6 Header, and Upper-layer header for an ICMPv6 echo request.
TCPIP_ICMPV6_CallbackRegisterRegisters an upper-layer function for ICMPv6 callback.
TCPIP_ICMPV6_EchoRequestSendSends an ICMPv6 echo request to a remote node.
Data Types and Constants
ICMPV6_ERR_DU_CODEICMPv6 Destination Unreachable error code.
ICMPV6_ERR_PP_CODEICMPv6 Parameter Problem error code.
ICMPV6_ERR_TE_CODEICMPv6 Time Exceeded error code.
ICMPV6_HANDLEICMPv6 handle.
ICMPV6_PACKET_TYPESICMPv6 packet types.
ICMPV6_ERR_PTB_CODEICMPv6 Packet Too Big error code.
ICMPV6_INFO_EREQ_CODEICMPv6 Packet Echo Request information code.
ICMPV6_INFO_ERPL_CODEICMPv6 Packet Echo Reply information code.
TCPIP_ICMPV6_PutHeaderEchoReplyThis is macro TCPIP_ICMPV6_PutHeaderEchoReply.