ICMPv6 Feng Zhou SW2 ZyXEL Communications Corp. 03/27/2006 ZyXEL Confidential Outline Review ICMPv4 Overview of ICMPv6 ICMPv6 Error Messages ICMPv6 Informational Messages ICMPv4 vs. ICMPv6 Path MTU Discovery Q&A ZyXEL Confidential Review ICMPv4 ICMPv4 Header Type ||||||| Code ||||||| Chucksum ||||||||||||||| Message Body …………… protocol field in IPv4 header is 1 ZyXEL Confidential Overview of ICMPv6 Next Header = 58 Functions • Reporting errors • Diagnostic function for troubleshooting • Additional information message – ND (Neighbor Discovery) – MLD (Multicast Listener Discovery) ZyXEL Confidential Overview of ICMPv6 Types of ICMPv6 Messages • Error Messages – Report forwarding or delivery errors by either a router or the destination host • Informational Messages – Provide a simple diagnostic capability to aid in troubleshooting – MLD and ND ZyXEL Confidential Overview of ICMPv6 ICMPv6 Header Type ||||||| Code ||||||| Chucksum ||||||||||||||| Message Body …………… Type(8bits): Indicates the type of ICMPv6 message. Code(8bits): Differentiates among multiple messages within a given message type. Chucksum(16bits): Stores a checksum of the ICMPv6 message. Message Body: Contains ICMPv6 message-specific data. ZyXEL Confidential ICMPv6 Error Messages Type: 0~127 (the first bit of Type field is 0) Consist • Destination Unreachable – The packet cannot be forwarded to the destination node or upperlayer protocol • Packet Too Big – The packet cannot be forwarded because the link MTU on the forwarding interface of a router is smaller than the size of the IPv6 packet • Time Exceeded – The Hop Limit field in the IPv6 header becomes zero after decrementing its value during the forwarding process • Parameter Problem – There is an error in the IPv6 header or an extension header that prevents IPv6 from performing additional processing ZyXEL Confidential ICMPv6 Error Messages Rate limiting • To conserve network bandwidth, ICMPv6 error messages are not sent for every error encountered, they are rate limiting • Rate limiting can be based on either of the following: – A timer ● One error message per source or any source for every T ms. RFC 2463 suggests a value of 1000 ms – A percentage of bandwidth ● Error messages sent per interface is some percentage P of the link's bandwidth. RFC 2463 suggests a value of 2% ZyXEL Confidential Destination Unreachable Message Structure Type ||||||| =1 Code ||||||| =0~4 Chucksum ||||||| ||||||| Unused ||||||| ||||||||||||||||| |||||||| Portion of Discarded Packet ……………………… • Portion of Discarded Packet: fit as much invoking packet as possible without exceeding the minimum IPv6 MTU ZyXEL Confidential Destination Unreachable Code Field Value Code Description Example 0 No Route to Destination Communication with Destination Administratively Prohibited Beyond Scope of Source Address Address Unreachable Port Unreachable No route matching the destination was found in the routing table 1 2 3 4 packet is discarded by a firewall packet is forwarded using an interface that is not within the scoped zone of the source address an inability to resolve the destination's link-layer address Packet received but no application ZyXEL Confidential + Frame: Base frame properties + ETHERNET: EType = IPv6 IP6: Version = 6 (0x6) IP6: Traffic Class = 0 (0x0) IP6: Flow Label = 0 (0x0) IP6: Payload Length = 88 (0x58) IP6: Next Header = 58 (ICMP6) IP6: Hop Limit = 128 (0x80) IP6: Source Address = fec0::2:201:2ff:fe44:87d1 IP6: Destination Address = fec0::2:260:97ff:fe02:6e8f IP6: Payload: Number of data bytes remaining = 88 (0x0058) ICMP6: Destination Unreachable (No route) ICMP6: Type = 1 (Destination Unreachable) ICMP6: Code = 0 (No route) ICMP6: Checksum = 0xD498 ICMP6: Unused ICMP6: Data: Number of data bytes remaining = 80 (0x0050) ZyXEL Confidential Packet Too Big Message Structure Type ||||||| =2 Code ||||||| =0 Chucksum ||||||| ||||||| MTU ||||||| ||||||||||||||||| |||||||| Portion of Discarded Packet ……………………… • MTU: stores the link MTU of the interface over which the packet was being forwarded ZyXEL Confidential Time Exceeded Message Structure Type ||||||| =3 Code ||||||| =0 or 1 Chucksum ||||||| ||||||| Unused ||||||| ||||||||||||||||| |||||||| Portion of Discarded Packet ……………………… Code • 0 (Hop Limit Exceeded in Transit) – Sent by a router when the Hop Limit field in the IPv6 header is decremented to 0, or this value of an arriving packet is 0 • 1 (Fragment Reassembly Time Exceeded) – Sent by a host when the fragmentation reassembly time of the destination host expires ZyXEL Confidential Parameter Problem Message Structure Type ||||||| =4 Code ||||||| =0~2 Chucksum ||||||| ||||||| Pointer ||||||| ||||||||||||||||| |||||||| Portion of Discarded Packet ……………………… • Pointer: indicates the byte offset (starting at 0) in the IPv6 packet at which the error was encountered ZyXEL Confidential Parameter Problem Code Field Value Code Description 0 Erroneous Header Field Encountered 1 Unrecognized Next Header Type Encountered 2 Unrecognized IPv6 Option Encountered Unrecognized IPv6 Option Encountered message is used when both of the following are true: • An option in a Hop-by-Hop Options header or a Destination Options header is not recognized. • Within the option's Option Type field, the 2 high-order bits are set to either 10 (binary) or 11 (binary) ZyXEL Confidential ICMPv6 Informational Messages Type: 128~255 (the first bit of Type is 1) Consist • Echo Request – Sent to a destination to solicit an immediate Echo Reply message. The Echo Request/Echo Reply message facility provides a simple diagnostic function to aid in the troubleshooting of a variety of reach ability and routing problems • Echo Reply – Sent in response to the receipt of an ICMPv6 Echo Request message ZyXEL Confidential Echo Request Message Structure Type ||||||| =128 Code ||||||| =0 Chucksum ||||||| ||||||| Identifier ||||||| ||||||| Sequence Number ||||||| ||||||| Data ……………………… • The Identifier and Sequence Number fields are set by the sending host so that they can be used to match an incoming Echo Reply message with a sent Echo Request message ZyXEL Confidential Echo Reply Message Structure Type ||||||| =129 Code ||||||| =0 Chucksum ||||||| ||||||| Identifier ||||||| ||||||| Sequence Number ||||||| ||||||| Data ……………………… The Identifier, Sequence Number, and Data fields are set with the same values as those in the Echo Request message that prompted the Echo Reply ZyXEL Confidential ICMPv4 vs. ICMPv6 ICMPv4 Destination Unreachable-Network Unreachable (Type 3, Code 0) ICMPv6 Destination Unreachable-No Route to Destination (Type 1, Code 0) Destination Unreachable-Host Unreachable (Type 3, Code 1) Destination Unreachable-Address Unreachable (Type 1, Code 3) Destination Unreachable-Protocol Unreachable (Type 3, Code 2) Parameter Problem-Unrecognized Next Header Type Encountered (Type 4, Code 1) Destination Unreachable-Port Unreachable (Type 3, Code 3) Destination Unreachable-Port Unreachable (Type 1, Code 4) Destination Unreachable-Fragmentation Needed and DF Set Packet Too Big (Type 2, Code 0) (Type 3, Code 4) Destination Unreachable-Communication with Destination Host Administratively Prohibited (Type 3, Code 10) Destination Unreachable-Communication with Destination Administratively Prohibited (Type 1, Code 1) Source Quench (Type 4, Code 0) This message is not present in IPv6 Redirect (Type 5, Code 0) Neighbor Discovery Redirect message (Type 137, Code 0) Time Exceeded-TTL Exceeded in Transit (Type 11, Code 0) Time Exceeded-Hop Limit Exceeded in Transit (Type 3, Code 0) Time Exceeded-Fragment Reassembly Time Exceeded (Type 11, Code 1) Time Exceeded-Fragment Reassembly Time Exceeded (Type 3, Code 1) Parameter Problem (Type 12, Code 0) Parameter Problem (Type 4, Code 0 or Code 2) ZyXEL Confidential Path MTU Discovery PMTU • the smallest link MTU supported by any link in the path between a source and a destination Link MTU • the maximum-sized link-layer payload that can be sent on the link ZyXEL Confidential Path MTU Discovery PMTU Discovered Process 1. The sending node assumes that the destination PMTU is the link MTU of the interface on which the traffic is being forwarded 2. The sending node sends IPv6 packets at the assumed PMTU size 3. If a router on the path is unable to forward the packet, it sends an ICMPv6 Packet Too Big message back. The ICMPv6 Packet Too Big message contains the link MTU of the interface on which forwarding failed 4. The sending node sets the new assumed PMTU to the value of the MTU field in the ICMPv6 Packet Too Big message The sending node starts again at step 2 and repeats steps 2 through 4 until when either no Packet Too Big messages are received or an response or acknowledgment packet is received from the destination. ZyXEL Confidential Changes in PMTU Decreases in path MTU • Immediately discovered through the receipt of ICMPv6 Packet Too Big messages Increases in path MTU • Detected by the sending node. The sending node can attempt to send a larger IPv6 packet after a minimum of 5 minutes (10mins are recommended) upon receiving an ICMPv6 Packet Too Big message ZyXEL Confidential Path MTU Discovery Flowchart Set PMTU to Link MTU Send packet at PMTU Size Packet Too Big received Y Set PMTU to Link MTU N PMTU < Link MTU N Y PMTU timer expired? Y N ZyXEL Confidential Q&A Q&A ZyXEL Confidential Training course arrangement Date Subject 03/10 Introduction to IPv6 03/16 IPv6 Addressing 03/23 03/27 IPv6 Header & Extensions ICMPv6 Lecturer Joe Zhao Milo Liu Joe Zhao Feng Zhou 03/30 Neighbor Discovery Protocol Billy Bian 03/30 Multicast Listener Discovery Jeffrey Zhou 04/06 Address Autoconfigurator 04/06 IPv6 Routing Feng Zhou Milo Liu ZyXEL Confidential Training course arrangement Date 04/13 04/20 Subject Lecturer IPv6 Migration Mechanisms Joe Zhou IPv6 Mobility Milo Liu Setting Up an IPv6 Test Lab ZyXEL Confidential