![]() ![]() |
|
|
![]() |
![]() |
![]() ![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
|
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|||
![]() |
Close Window | ![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
All contents copyright © 2003 Cisco Systems, Inc. All rights reserved. |
![]() ![]() |
Overview |
|
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.1 |
![]() |
Internet Control Message Protocol (ICMP) |
IP is an unreliable method for delivery of
network data. It is known as a best effort delivery mechanism. It has no
built-in processes to ensure that data is delivered in the event that
problems exist with network communication. If an intermediary device such as
a router fails, or if a destination device is disconnected from the network,
data cannot be delivered. Additionally, nothing in its basic design allows
IP to notify the sender that a data transmission has failed. Internet
Control Message Protocol (ICMP) is the component of the TCP/IP protocol
stack that addresses this basic limitation of IP.
![]()
|
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.2 |
![]() |
Error reporting and error correction |
ICMP is an error reporting protocol for IP.
When datagram delivery errors occur, ICMP is used to report these errors
back to the source of the datagram. For example, if Workstation 1 in Figure
![]() When Router C receives the datagram from Workstation 1, it knows only the source and destination IP addresses of the datagram. It does not know about the exact path the datagram took on the way to Router C. Therefore, Router C can only notify Workstation 1 of the failure, and no ICMP messages are sent to Router A and Router B. ICMP reports on the status of the delivered packet only to the source device. It does not propagate information about network changes to routers.
|
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.3 |
![]() |
ICMP message delivery |
ICMP messages are encapsulated into
datagrams in the same way any other data is delivered using IP. Figure
![]() Since ICMP messages are transmitted in the same way as any other data, they are subject to the same delivery failures. This creates a scenario where error reports could generate more error reports, causing increased congestion on an already ailing network. For this reason, errors created by ICMP messages do not generate their own ICMP messages. It is thus possible to have a datagram delivery error that is never reported back to the sender of the data.
|
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.4 |
![]() |
Unreachable networks |
Network communication depends upon certain
basic conditions being met. First, the sending and receiving devices must
have the TCP/IP protocol stack properly configured. This includes the
installation of the TCP/IP protocol and proper configuration of IP address
and subnet mask. A default gateway must also be configured if datagrams are
to travel outside of the local network. Second, intermediary devices must be
in place to route the datagram from the source device and its network to the
destination network. Routers serve this function. A router also must have
the TCP/IP protocol properly configured on its interfaces, and it must use
an appropriate routing protocol.
If these conditions are not met, then network communication cannot take place. For instance, the sending device may address the datagram to a non-existent IP address or to a destination device that is disconnected from its network. Routers can also be points of failure if a connecting interface is down or if the router does not have the information necessary to find the destination network. If a destination network is not accessible, it is said to be an unreachable network. Figures
|
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.5 |
![]() |
Using ping to test destination reachability |
The ICMP protocol can be used to test the
availability of a particular destination. Figure
![]() The echo request message is typically
initiated using the ping
command as shown in Figure
|
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.6 |
![]() |
Detecting excessively long routes |
Situations can occur in network
communication where a datagram travels in a circle, never reaching its
destination. This might occur if two routers continually route a datagram
back and forth between them, thinking the other should be the next hop to
the destination. This is an example of faulty routing information.
![]()
The limitations of the routing protocol can
result in destinations being unreachable.
In either of these cases, an excessively long route exists. Whether the actual path includes a circular routing path or too many hops, the packet will eventually exceed the maximum hop count. This is also known as reaching its time-to-live (TTL), because the TTL value typically matches the maximum hop count defined by the routing protocol. A TTL value is defined in each datagram. As each router processes the datagram, it decreases the TTL value by one. When the TTL of the datagram value reaches zero, the packet is discarded. ICMP uses a time exceeded message to notify the source device that the TTL of the datagram has been exceeded.
|
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.7 |
![]() |
Echo messages |
As with any type of packet, ICMP messages
have special formats. Each ICMP message type shown in Figure
![]()
The type field indicates the type of ICMP message being sent. The code field includes further information specific to the message type. The checksum field, as in other types of packets, is used to verify the integrity of the data. Figure
|
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.8 |
![]() |
Destination unreachable message |
Datagrams cannot always be forwarded to
their destinations.
![]() ![]()
Figure
A destination unreachable message may also be sent when packet fragmentation is required in order to forward a packet. Fragmentation is usually necessary when a datagram is forwarded from a Token-Ring network to an Ethernet network. If the datagram does not allow fragmentation, the packet cannot be forwarded, so a destination unreachable message will be sent. Destination unreachable messages may also be generated if IP related services such as FTP or Web services are unavailable. To effectively troubleshoot an IP network, it is necessary to understand the various causes of ICMP destination unreachable messages. |
![]() ![]() |
8.1 |
![]() |
Overview of TCP/IP Error Message | |
8.1.9 |
![]() |
Miscellaneous error reporting |
Devices that process datagrams may not be
able to forward a datagram due to some type of error in the header. This
error does not relate to the state of the destination host or network but
still prevents the datagram from being processed and delivered. In this
case, an ICMP type 12 parameter problem message is sent to the source of the
datagram. Figure
![]() The parameter problem message includes the pointer field in the header. When the code value is 0, the pointer field indicates the octet of the datagram that produced the error. |
![]() ![]() |
8.2 |
![]() |
TCP/IP Suite Control Messages | |
8.2.1 |
![]() |
Introduction to control messages |
The Internet Control Message Protocol (ICMP)
is an integral part of the TCP/IP protocol suite. In fact, all IP
implementations must include ICMP support. The reasons for this are simple.
First, since IP does not guarantee delivery, it has no inherent method to
inform hosts when errors occur. Also, IP has no built-in method to provide
informational or control messages to hosts. ICMP performs these functions
for IP.
Unlike error messages, control messages are
not the results of lost packets or error conditions which occur during
packet transmission. Instead, they are used to inform hosts of conditions
such as network congestion or the existence of a better gateway to a remote
network. Like all ICMP messages, ICMP control messages are encapsulated
within an IP datagram.
Multiple types of control messages are used
by ICMP. Some of the most common are shown in Figure
|
![]() ![]() |
8.2 |
![]() |
TCP/IP Suite Control Messages | |
8.2.2 |
![]() |
ICMP redirect/change requests |
A common ICMP control message is the ICMP
redirect/change request. This type of message can only be initiated by a
gateway, which is a term commonly used to describe a router. All hosts that
communicate with multiple IP networks must be configured with a default
gateway. This default gateway is the address of a router port connected to
the same network as the host. Figure
![]() Figure
Default gateways only send ICMP redirect/change request messages if the following conditions are met:
The ICMP redirect/change request uses the
format shown in Figure
The Router Internet Address field in the ICMP
redirect is the IP address that should be used as the default gateway for a
particular network. In the example in Figure
|
![]() ![]() |
8.2 |
![]() |
TCP/IP Suite Control Messages | |
8.2.3 |
![]() |
Clock synchronization and transit time estimation |
The TCP/IP protocol suite allows systems to
connect to one another over vast distances through multiple networks. Each
of these individual networks provides clock synchronization in its own way.
As a result, hosts on different networks who are trying to communicate using
software that requires time synchronization can sometimes encounter
problems. The ICMP timestamp message type is designed to help alleviate this
problem.
The ICMP timestamp request message allows a
host to ask for the current time according to the remote host. The remote
host uses an ICMP timestamp reply message to respond to the request.
The type field on an ICMP timestamp message can be either 13 (timestamp request) or 14 (timestamp reply). The code field value is always set to 0 because there are no additional parameters available. The ICMP timestamp request contains an originate timestamp, which is the time on the requesting host just before the timestamp request is sent. The receive timestamp is the time that the destination host receives the ICMP timestamp request. The transmit timestamp is filled in just before the ICMP timestamp reply is returned. Originate, receive and transmit timestamps are computed in numbers milliseconds elapsed since midnight Universal Time (UT). All ICMP timestamp reply messages contain the originate, receive and transmit timestamps. Using these three timestamps, the host can estimate transit time across the network by subtracting the originate time from the transit time. It is only an estimate however, as true transit time can vary widely based on traffic and congestion on the network. The host that originated the timestamp request can also estimate the local time on the remote computer. While ICMP timestamp messages provide a simple way to estimate time on a remote host and total network transit time, this is not the best way to obtain this information. Instead, more robust protocols such as Network Time Protocol (NTP) at the upper layers of the TCP/IP protocol stack perform clock synchronization in a more reliable manner.
|
![]() ![]() |
8.2 |
![]() |
TCP/IP Suite Control Messages | |
8.2.4 |
![]() |
Information requests and reply message formats |
The ICMP information requests and reply
messages were originally intended to allow a host to determine its network
number. Figure
![]() Two type codes are available in this message. Type 15 signifies an information request message, and type 16 identifies an information reply message. This particular ICMP message type is considered obsolete. Other protocols such as BOOTP and Dynamic Host Configuration Protocol (DHCP) are now used to allow hosts to obtain their network numbers. |
![]() ![]() |
8.2 |
![]() |
TCP/IP Suite Control Messages | |
8.2.5 |
![]() |
Address mask requirements |
When a network administrator uses the
process of subnetting to divide a major IP address into multiple subnets, a
new subnet mask is created. This new subnet mask is crucial in identifying
network, subnet, and host bits in an IP address. If a host does not know the
subnet mask, it may send an address mask request to the local router. If the
address of the router is known, this request may be sent directly to the
router. Otherwise, the request will be broadcast. When the router receives
the request, it will respond with an address mask reply. This address mask
reply will identify the correct subnet mask. For example, assume that a host
is located within a Class B network and has an IP address of 172.16.5.2.
This host does not know the subnet mask, thus it broadcasts an address mask
request:
This broadcast is received by 172.16.5.1, the local router. The router responds with the address mask reply:
The frame format for the address mask request
and reply is shown in Figure
|
![]() ![]() |
8.2 |
![]() |
TCP/IP Suite Control Messages | |
8.2.6 |
![]() |
Router discovery message |
When a host on the network boots, and the
host has not been manually configured with a default gateway, it can learn
of available routers through the process of router discovery. This process
begins with the host sending a router solicitation message to all routers,
using the multicast address 224.0.0.2 as the destination address. Figure
![]() When a router that supports the discovery
process receives the router discovery message , a router advertisement is
sent in return. The router advertisement frame format is shown in Figure
|
![]() ![]() |
8.2 |
![]() |
TCP/IP Suite Control Messages | |
8.2.7 |
![]() |
Router solicitation message |
A host generates an ICMP router solicitation
message in response to a missing default gateway.
![]() ![]() ![]()
|
![]() ![]() |
8.2 |
![]() |
TCP/IP Suite Control Messages | |
8.2.8 |
![]() |
Congestion and flow control messages |
If multiple computers try to access the same
destination at the same time, the destination computer can be overwhelmed
with traffic. Congestion can also occur when traffic from a high speed LAN
reaches a slower WAN connection. Dropped packets occur when there is too
much congestion on a network. ICMP source-quench messages are used to reduce
the amount of data lost. The source-quench message asks senders to reduce
the rate at which they are transmitting packets. In most cases, congestion
will subside after a short period of time, and the source will slowly
increase the transmission rate as long as no other source-quench messages
are received. Most Cisco routers do not send source-quench messages by
default, because the source-quench message may itself add to the network
congestion.
A small office home office (SOHO) is a
scenario where ICMP source-quench messages might be used effectively. One
such SOHO could consist of four computers networked together using CAT-5
cable and Internet connection sharing (ICS) over a 56K modem. It is easy to
see that the 10Mbps bandwidth of the SOHO LAN could quickly overwhelm the
available 56K bandwidth of the WAN link, resulting in data loss and
retransmissions. With ICMP messaging, the host acting as the gateway in the
ICS can request that the other hosts reduce their transmission rates to a
manageable level, thus preventing continued data loss. A network where
congestion on the WAN link could cause communication problems is shown in
Figure
|
![]() ![]() |
Summary |
An understanding of the following key points
should have been achieved:
|