ICMP Monitor

The ICMP monitor tests the performance of the Internet Control Message Protocol service running on a network. To do this, the monitor uses the ICMP echo command.

The following table lists the ICMP monitor files.
Table 1. ICMP monitor files 
Monitor files Name or location
Monitor executable nco_m_icmp
Properties file $ISHOME/etc/props/icmp.props
Rules file $ISHOME/etc/rules/icmp.rules
Log file $ISHOME/log/icmp.log
Guidelines for configuring ICMP monitor

The ICMP monitor issues ICMP echo requests (commonly called pings) to target hosts and waits for an echo reply response. It records lookup times, round-trip times, and success rate metrics that provide an indication of how well the network is performing. When the monitor issues an echo request, the request may pass through one or more routers before it reaches the target host. These routers can respond to the monitor before the target host has received the echo request. If an echo request issued by the monitor passes through a router, the router may issue a reply to the monitor. This reply might indicate that the router cannot locate the target host, or that the router is too busy to process the request. It’s possible that the monitor might receive replies from multiple routers before it receives an echo-reply from the target host. If the monitor successfully receives an echo-reply from the target host, it records the time taken. If the monitor doesn’t receive a reply from the target server within the specified timeout period, the request is recorded as failed. You can configure the monitor to send multiple ICMP echo requests to the same target in each test. The monitor records statistics for each of the requests sent.

Note: Run the ICMP monitor as root because it opens a raw socket to send ICMP packets.
Configuring ICMP monitor service tests

Use the ICMP monitor configuration parameters to define service tests. When you configure the monitor, default values are shown for the timeout and poll interval parameters. These defaults are 30 and 300 seconds respectively. Other defaults listed in the table aren’t shown during configuration but are applied when the configuration details are saved if no value has been specified.

The followinf table lists the ICMP monitor configurations.

Table 2. ICMP monitor configuration
Field Description
server The host name or IP address of the server to which the echo requests are sent. Example is test.myconpany.com
description A text field for providing descriptive information on the element.
timeout

The time, in seconds, to wait for the server to respond to each echo request.

Default: 10

numberofpings

The number of echo requests to send.

Default: 5

packetinterval

The time, in seconds, to wait between sending echo requests.

Default: 1

packetsize

The size, in bytes, of each echo request sent.

Default: 64

typeofservice Sets the Type of Service field in the IP layer. Both IPv4-style Type Of Service (TOS) values and DSCP Differentiated Service Field values may be entered. Valid values are 0 -255.
retries

The number of times the monitor should retry each echo request before quitting.

Default: 0

poll

The time, in seconds, between each poll.

Default: 300

failureretests

The number of times to retest before indicating a failure.

Default: 0

retestinterval

The time, in seconds, to wait between each failure retest.

Default: 10

hostnamelookuppreference Determines which IP version, IPv6 or IPv4, is applied to the supplied host name. Options are:
  • default sets the monitor to use monitor-wide properties settings. This is the default.
  • 4Then6 selects IPv4 and then IPv6. Uses IPv4 addresses if they are available. If no IPv4 addresses are found, IPv6 addresses are used.
  • 6Then4 selects IPv6 and then IPv4. Uses IPv6 addresses if they are available. If no IPv6 addresses are found, IPv4 addresses are used.
  • 4Only selects IPv4 only. Uses IPv4 addresses only. If there are no IPv4 addresses, the poll returns an error.
  • 6Only selects IPv6 only. Uses IPv6 addresses only. If there are no IPv6 addresses, the poll returns an error.
  • 6Or4 selects either IPv4 or IPv6. Uses the first address returned from the host name.
Note: Monitor the availability of the host test.mycompany.com by checking the response times at 10-minute intervals. Attempt to connect to the server within 30 seconds and, if it times out, retry twice more. If it still fails, repeat the test three times with 5 seconds between each retry.
Monitor elements

In addition to the test results common to all elements, the ICMP monitor generates a set of test results containing data specific to ICMP service tests.

The following table describes the additional elements for the ICMP monitor.

Elements indicated by an asterisk (*) are available as attributes. The names of the attributes are shown within brackets below the element. Absence of an asterisk indicates there’s no equivalent attribute. Attributes shown in bracket but without an element indicate that they are only available as attributes, there’s no equivalent element.

Table 3. ICMP monitor elements
Element Description
$averageRTT*(AverageRTT) The average round-trip time in seconds.
$endTime The UNIX time the response was received.
$jitter The absolute value of the difference between the arrival times of two adjacent ICMP echo requests, minus their departure times. This value is calculated according to the formula specified in RFC2598. The element is created only if the number of echo requests is greater than one. If more than two echo requests are used, the value is the average jitter between all pairs of echo requests.
$lookupTime*(LookupTime) The time taken to obtain the IP address of the host server.
$maxRTT*(MaxRTT) The maximum round-trip time in seconds.
$minRTT*

(MinRTT)

The minimum round-trip time in seconds.
$numberPackets The number of ICMP echo requests sent, as specified in the profile element.
$packetInterval The time between sending each ICMP echo request, as specified in the profile element.
$packetRetries The number of times the monitor tried to resend ICMP echo requests before exiting.
$packetSize The size (in bytes) of each ICMP echo request, as specified in the profile element.
$pingAttempts Failed The number of attempts made for the first unsuccessful ICMP echo request.
$pingAttempts Responded The number of attempts made for the first successful ICMP echo request.
$pingMessageFailed The message returned for the first unsuccessful ICMP echo request.
$pingMessage Responded The message returned for the first successful ICMP echo request.
$pingReceivedTime Failed The UNIX time the first unsuccessful echo response was received.
$pingReceivedTime Responded The UNIX time the first successful echo response was received.
$pingRespondIP Failed The IP address that responded to the first unsuccessful ICMP echo request.
$pingRespondIP Responded The IP address that responded to the first successful ICMP echo request.
$pingRTTFailed The round-trip time for the first unsuccessful ICMP echo request in seconds.
$pingRTTResponded The round-trip time for the first successful ICMP echo request in seconds.
$pingSentTime Failed The UNIX time that the first unsuccessful ICMP echo request was sent.
$pingSentTime Responded The UNIX time that the first successful ICMP echo request was sent.
$pingsFailed The number of ICMP echo requests sent to which there was no echo response.
$pingsResponded The number of valid echo responses received.
$pingTime The time taken to receive the echo response after sending the ICMP echo request.
$respondPercent*
(RespondPercent)
The percentage of ICMP echo requests sent for which there was a response.
$responseTime The time taken for the target host to respond to an ICMP echo request.
$sentTime The UNIX time that the ICMP echo requests were sent.
$spreadRTT The difference between $maxRTT and $minRTT.
$startTime The UNIX time the test began.
$totalHostTime The time taken to receive the echo response after beginning the test.
$typeOfService

The Type of Service field in the IP layer, as specified when adding a new ICMP element. For details, see ICMP Monitor.

The ICMP monitor creates a separate set of $pingname elements to record the results for each ICMP echo request sent during the test. The number of requests sent is indicated by $numberPackets. For example, for the $pingRTT element, if $numberPackets is 3, the monitor creates three elements ($pingRTT1, $pingRTT2, and $pingRTT3), containing the round-trip time measurement for the three ICMP echo requests sent.

Status message

The ICMP monitor provides status messages in the ResultMessage attribute when using IBM® Application Performance Management. These messages indicate the result of the test.

The following table describes the ICMP status messages.

Table 4. ICMP monitor status messages 
Message Description
Pings Complete The ICMP echo request succeeded.
ICMP echo failed The monitor cannot issue the ICMP echo request because there’s a problem with the monitor host or its connection to the network.
Timed out The ICMP echo request timed out.
Unreachable This message is returned from a router and isn’t necessarily accurate.
Source quench A router is too busy to process the ICMP echo request.
Time exceeded This message is returned from a router. It indicates that the ICMP echo request has been forwarded around the network too many times.
Parameter problem This message is returned from a router. It indicates that the router can’t process the ICMP echo request. This might be because the message has been corrupted.
Properties

The properties specific to the ICMP monitor are described in the following.

Table 5. ICMP properties
Property name Property parameter Description
EventsPerSec not applicable This property isn’t supported.
IntraPingWait integer

The minimum time interval in milliseconds between all pings sent by the ICMP monitor. Use to tune your system to spread the network traffic over a longer period. For example, in an environment with thousands of targeted ICMP hosts, set IntraPingWait to 3.

Default: 0

Ipv6Address integer

The local address to bind to as an origin for ICMP echo requests when using ICMP IPv6.

Default: no address

MaxDNSResolvingThreads integer

The maximum number of threads to be used by the DNS Resolver.

Default: 20

MaxPacketSize integer

The maximum ICMP packet size in bytes.

PingsPerSec integer

The number of echo requests the monitor attempts to send per second. The number of actual requests sent dependents on CPU and network load.

Default: 100

SocketBufferSize integer

The size of the receiving socket buffer (in kilobytes).

Default: 32