Designing and Managing Behavior Models - Using Other Data Sources - NerveCenter's Built-In Triggers - Ping Requests -
Previous: SNMP Requests     Next: Built-in Trigger Firing Sequence

Ping Requests

NerveCenter retries ICMP requests as many times as configured or until NerveCenter receives a good, non-error response that it can match to a pending ICMP request. (NerveCenter uses the number of retries and retry interval specified on the SNMP tab in the NerveCenter Administrator. Refer to the Managing NerveCenter guide or Administrator help for details.) If NerveCenter receives no response after the configured number of retries, then NerveCenter fires two built-in triggers: ERROR, followed by ICMP_TIMEOUT. For more information about the order in which NerveCenter fires built-in triggers, see Built-in Trigger Firing Sequence.

After the configured number of retries is exceeded, NerveCenter examines the error list, determines which of the matching errors occurred most often, and selects the last packet received from that set. If there is a tie between two or more types of errors, NerveCenter selects the last error packet received. (NerveCenter does not accumulate timeouts. One or more timeouts is counted as only one timeout.)

Error details are stored in ICMP/IP fields that NerveCenter includes with each instance of ICMP_ERROR that it fires. Using a Perl subroutine or a NerveCenter poll expression, you can extract this data (Type, Code, Destination Address, and Source Address) to learn more specific information about the ICMP error that occurred.

The exception to this rule is when NerveCenter receives an ICMP error that contain values for a net, host, or port unreachable condition (where the ICMP fields Type = 3 and Code = 0, 1, or 3). In this situation, NerveCenter fires an ERROR built-in trigger first, followed by an ICMP_ERROR trigger, and then finally either a NET_UNREACHABLE, NODE_UNREACHABLE, or PORT_UNREACHABLE built-in trigger.

If the poll times out, NerveCenter fires two built-in triggers: ERROR, followed by either an ICMP_TIMEOUT or SNMP_TIMEOUT trigger.

Multiple Errors Examples

For example, you poll a node with addresses A1, A2, A3, A4 and A5 with the number of retries set to three in the NerveCenter Administrator. The replies are as follows:

Original response = ICMP error E1 from address A1

Response from First retry = ICMP error E1 from address A2

Response from Second retry = no reply within retry interval from address A3

Response from Third retry = ICMP error E2 from address A4

Even though error E4 (third retry) was the last error received, NerveCenter discards it and uses error E1 to produce a response, because it occurred most often. The actual data packet that NerveCenter returns with error E1 is from the first retry, because NerveCenter retains only the last packet for each error code. (The packet from the first retry overwrote the packet from the original response because their error codes matched.)

In this example if any of the ICMP errors contain values for a net, host, or port unreachable condition (where the ICMP fields Type = 3 and Code = 0, 1, or 3), NerveCenter fires an ERROR built-in trigger first, followed by an ICMP_ERROR trigger, and then finally either a NET_UNREACHABLE, NODE_UNREACHABLE, or PORT_UNREACHABLE built-in trigger. If error E1 is any other ICMP error, then NerveCenter fires two triggers: first, an ERROR built-in trigger, followed by an ICMP_ERROR built-in trigger that contains data from the first retry packet. For more information about the order in which NerveCenter fires built-in triggers, see Built-in Trigger Firing Sequence.

Consider a second example in which the replies are as follows:

Original response = ICMP error E1 from address A1

Response from First retry = ICMP error E2 from address A2

Response from Second retry = ICMP error E3 from address A3

Response from Third retry = no reply within retry interval from address A4

NerveCenter uses error E3 to produce a response because it was the last error received, and no error type occurred more than once. Even though a timeout occurred on the last response, NerveCenter discards it because an error takes precedence over a timeout.


Previous: SNMP Requests Next: Built-in Trigger Firing Sequence
Please send comments or corrections to Information Development
This file was last updated on 10 October 2000