Routing TCP/IP, Volume 1 (2nd Edition)
The Internet Control Message Protocol, or ICMP, described in RFC 792, specifies a variety of messages whose common purpose is to manage the network. ICMP messages might be classified as either error messages or queries and responses. Figure 1-16 shows the general ICMP packet format. The packets are identified by type; many of the packet types have more specific types, and these are identified by the code field. Table 1-6 lists the various ICMP packet types and their codes, as described in RFC 1700. Figure 1-16. The ICMP packet header includes a type field, a code field that further identifies some types, and a checksum. The rest of the fields depend on the type and code.
Example 1-11 and Example 1-12 show analyzer captures of two of the most well-known ICMP messagesEcho Request and Echo Reply, which are used by the ping function. Example 1-11. ICMP Echo message, shown with its IPv4 header.
Internet Protocol, Src Addr: 172.16.1.21 (172.16.1.21), Dst Addr: 198.133.219.25 (198.133.219.25) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) Total Length: 84 Identification: 0xabc3 (43971) Flags: 0x00 Fragment offset: 0 Time to live: 64 Protocol: ICMP (0x01) Header checksum: 0x8021 (correct) Source: 172.16.1.21 (172.16.1.21) Destination: 198.133.219.25 (198.133.219.25) Internet Control Message Protocol Type: 8 (Echo (ping) request) Code: 0 Checksum: 0xa297 (correct) Identifier: 0x0a40 Sequence number: 0x0000 Data (56 bytes) 0000 40 fd ab c2 00 0e 73 57 08 09 0a 0b 0c 0d 0e 0f @.....sW........ 0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................ 0020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !"#$%&'()*+,-./ 0030 30 31 32 33 34 35 36 37 01234567 Example 1-12. ICMP Echo Reply.
Internet Protocol, Src Addr: 198.133.219.25 (198.133.219.25), Dst Addr: 172.16.1.21 (172.16.1.21) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) Total Length: 84 Identification: 0xabc3 (43971) Flags: 0x00 Fragment offset: 0 Time to live: 242 Protocol: ICMP (0x01) Header checksum: 0xce20 (correct) Source: 198.133.219.25 (198.133.219.25) Destination: 172.16.1.21 (172.16.1.21) Internet Control Message Protocol Type: 0 (Echo (ping) reply) Code: 0 Checksum: 0xaa97 (correct) Identifier: 0x0a40 Sequence number: 0x0000 Data (56 bytes) 0000 40 fd ab c2 00 0e 73 57 08 09 0a 0b 0c 0d 0e 0f @.....sW........ 0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................ 0020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !"#$%&'()*+,-./ 0030 30 31 32 33 34 35 36 37 01234567
Although most ICMP types have some bearing on routing functionality, three types are of particular importance:
Example 1-13. Using the debugging function debug ip icmp, this router can be seen sending a redirect to host 10.158.43.25, informing it that the correct router for reaching destination 10.158.40.1 is reachable via gateway (gw) 10.158.43.10.
Pip#debug ip icmp ICMP packet debugging is on ICMP: redirect sent to 10.158.43.25 for dest 10.158.40.1, use gw 10.158.43.10 0 Pip#
An occasionally used trick to avoid redirects on data links with multiple attached gateways is to set each host's default gateway as its own IPv4 address. The hosts will then ARP for any address, and if the address is not on the data link, the correct router should respond via proxy ARP. The benefits of using this tactic merely to avoid redirects are debatable; redirects are decreased or eliminated, but at the expense of increased ARP traffic. Redirects are enabled by default in IOS and might be disabled on a per interface basis with the command no ip redirects. |