Illustrated TCP/IP Illustrated TCP/IP
by Matthew G. Naugle
Wiley Computer Publishing, John Wiley & Sons, Inc.
ISBN: 0471196568   Pub Date: 11/01/98
  

Previous Table of Contents Next


Chapter 177
ICMPv6 Error Messages

ICMPv6 Error Messages

  Destination Unreachable:
  No route to destination
  Communication with destination administratively prohibited
  Not a neighbor
  Address Unreachable
  Port Unreachable
  Packet Too Big:
  Returns the largest packet size available for the forwarded port
  Destination Unreachable
Type: 1
Code:
0 No Route to Destination. There was no corresponding route in the router’s forwarding table (only for routers that do not possess a default route entry).
1 Communication with Destination Administratively Prohibited. For example, a firewall or other restrictive administrative command.
2 Not a Neighbor. There was an attempt to deliver the datagram to a neighbor that was indicated in the strict source routing entries, but the next hop indicated is not a neighbor of this router.
3 Address Unreachable. The router could not resolve the link-layer address for the indicated network address.
4 Port Unreachable. The destination does not have a service port available (not a hardware port!). For example, the datagram is intended for TCP, but all available resources are taken for TCP (there are no listener ports available). Or, the datagram was sent to a service port that the destination does not support; for example, whois, or finger, or the route daemon.

The first 32 bits after the ICMP header are unused and must be initialized to 0 by the sender and ignored by the receiver. Destination Unreachable messages generally originate from a router, but can also be generated by the originated node. They are generated for any reason except congestion. There are no ICMP messages to indicate congestion (other protocols monitor and report this condition).
  Packet Too Big
Type: 2
Code: 0
The first 32 bits after the ICMP header indicate the maximum transmission unit (MTU) for the selected forwarded (next hop) port. This error message is important, for datagrams do not necessarily have to be 576 bytes in size. FDDI-to-Token-Ring topologies, for example, do very well with streaming large packets. This is an indicator of the size of a packet to be forwarded along the path from source to destination. This is the path MTU discovery procedure, which is outlined in RFC 1191. This error message also provides an exception to the rules: It can be sent in response to a packet received with an IPv6 multicast destination address, or a link-layer multicast or link-layer broadcast address.
  Time Exceeded
Type: 3
Code:
0 Hop limit exceeded in transit
1 Fragment reassembly time exceeded
The first 32 bits of the ICMP message are specified as unused for all code values and must be initialized to 0 by the sender and ignored by the receiver. This can be sent if a router receives a packet with a hop limit of 0, or a router decrements a packet’s hop limit to 0. The packet then must be discarded, and an ICMPv6 Time Exceeded message with Code 0 must be sent to the source of the packet. This indicates either a routing loop or too small an initial hop limit value.

ICMPv6 Error Messages (continued)

  Time Exceeded.
  Hop limit exceeded in transit
  Fragment reassembly time exceeded
  Parameter Problem.
  Erroneous header field encountered
  Unrecognized nest header type encountered
  Unrecognized IPv6 option
  Parameter Problem
Type: 4
Code:
0 Erroneous header field encountered
1 Unrecognized Next Header type encountered
2 Unrecognized IPv6 option encountered
The first 32 bits of the ICMP message comprise a pointer that identifies the octet offset within the invoking packet where the error was detected. It points beyond the end of the ICMPv6 packet if the field in error is larger than the 576-byte limit of an ICMPv6 error message.

If an IPv6 node cannot process the datagram due to some error in the headers, it must discard the packet and should send an ICMPv6 Parameter Problem message to the packet’s source, indicating the type and location of the problem. A pointer field is provided to indicate the type of problem. The pointer field indicates the point in the originating header where the error was detected. For example, an ICMPv6 message with Type field = 4, Code field = 1, and Pointer field = 40, would indicate that the IPv6 extension header following the IPv6 header of the original packet holds an unrecognized Next Header field value.


Previous Table of Contents Next