---
title: "X Ping"
description: ""
url: "https://docs.itrsgroup.com/docs/geneos/7.11.0/collection/x-ping/index.html"
---
## Introduction

Geneos X Ping plugin checks the network path to a specified target node and the availability of the node. It sends ICMP or TCP packets to the target host and measures the time it takes to reply. If no reply received after a defined time interval, the target node is assumed to be down or unreachable. The target host does not need to run any special software to provide the replies.

Multiple hosts can be monitored by one X Ping plugin.

## Views

### View

![X Ping dataview](https://docscdn.itrsgroup.com/geneos/images/plug-ins/xping-dataview.png)

#### Headline Legend

<div class="table-container">
<table class="legacy-table"   style="margin-left: 0;margin-right: auto;width: 100%;mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');" cellspacing="0">
                        <col style="width: 50%;" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col style="width: 50%;" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <thead>
                            <tr class="TableStyle-ref_2_col_table-Head-Header1">
                                <th class="TableStyle-ref_2_col_table-HeadE-Column1-Header1"><strong>Name</strong>
                                </th>
                                <th class="TableStyle-ref_2_col_table-HeadD-Column1-Header1"><strong>Description</strong>
                                </th>
                            </tr>
                        </thead>
                        <tbody valign="top">
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">localInterface</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">Name of the local interface used to
 send the packets.</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">sourceNode</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">The source IP address to be used in the
 outbound packets.</td>
                            </tr>
                        </tbody>
                    </table>
                    
</div>

#### Table Legend

<div class="table-container">
<table class="legacy-table"   style="mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');margin-left: 0;margin-right: auto;" cellspacing="0">
                        <col class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <thead>
                            <tr class="TableStyle-ref_2_col_table-Head-Header1">
                                <th class="TableStyle-ref_2_col_table-HeadE-Column1-Header1"><strong>Name</strong>
                                </th>
                                <th class="TableStyle-ref_2_col_table-HeadD-Column1-Header1"><strong>Description</strong>
                                </th>
                            </tr>
                        </thead>
                        <tbody valign="top">
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">targetNode</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">Name of the host that the ping requests
 are sent to.</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">targetAddress</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">IP address of the target host.</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">serviceName</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">
                                    <p class="first">If the plugin is configured
 to use ICMP, then this shows ICMP_ECHO.</p>
                                    <p class="last">If it is configured to use TCP,
 this shows the TCP service name that is used
 to send the echo packets. Defaults to ECHO
 (port 7), but can be configured to be any
 port/service.</p>
                                </td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">servicePort</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">If the plugin is configured to use ICMP,
 then this shows 0. Otherwise, it shows the service
 port number used.</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">turnaroundTime</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">Time in ms that a packet takes to travel to
 the target host and back.</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">status</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">
                                    <p>Status of the targetNode. Possible values are the following:</p>
                                    <ul>
                                        <li>
                                            <p><code>REACHABLE</code> &#8212; a reply is received within a
 timeout period that has a default value of five seconds.</p>
                                        </li>
                                        <li xmlns="">
                                            <p><code>UNREACHABLE</code> &#8212; no reply is received.</p>
                                        </li>
                                        <li xmlns="">
                                            <p><code>LISTENING</code> &#8212; the node has a process listening on that port.</p>
                                        </li>
                                    </ul>
                                </td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">failurePercent</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">Failure percentage from the initial packet sent up to the last (initial sampling up to the latest sampling).</td>
                            </tr>
                        </tbody>
                    </table>
                
</div>

## Plugin Configuration

### Basic Configuration

![Basic Configuration](https://docscdn.itrsgroup.com/geneos/images/plug-ins/xping-basic-config.png)

<div class="table-container">
<table class="legacy-table" style="width: 100%;margin-left: 0;margin-right: auto;mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');" class="TableStyle-ref_2_col_table" cellspacing="0">
                        <col class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <thead xmlns="">
                            <tr class="TableStyle-ref_2_col_table-Head-Header1">
                                <th class="TableStyle-ref_2_col_table-HeadE-Column1-Header1">Field</th>
                                <th class="TableStyle-ref_2_col_table-HeadD-Column1-Header1">Description</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">Target nodes<a name="targetNodes"/></td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">
                                    <p>Name or the IP address of the target node that
 is being monitored. </p>
                                    <p>Mandatory: Yes</p>
                                </td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">Recv interfaces<a name="var-recvInterfaces"/></td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">
                                    <p>Specifies a comma-separated list of network interface names
to be used. </p>
                                    <p>On UNIX machines, interface names can be found using the
 command <code>ifconfig -a</code>. Example names
 are <code>eth0</code> or <code>ce0</code>.</p>
                                    <p>On Windows machines, interface names can be listed
 by running Netprobe using the <code>-ifconfig</code>
 command-line option. A Windows interface name will
 look similar to the following:</p>
                                    <div class="highlight"><pre xml:space="preserve"><code class="hljs">\Device\NPF_{BDFE3EAC-0275-440A-923C-C9C4CE3B37F2}</code></pre>
                                    </div>
                                    <p>Mandatory: Yes</p>
                                </td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">Send interface<a name="sendInterface"/></td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">
                                    <p>Name of the network interface to be used to send packets (e.g. hme0). Usually the same as <em><a href="#var-recvInterfaces"><em>recvInterface</em></a></em> parameter, but can be set to a different value in certain network configurations.</p>
                                    <p>Mandatory: Yes</p>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                    
</div>

### Advanced Configuration

![Advanced Configuration](https://docscdn.itrsgroup.com/geneos/images/plug-ins/xping-adv-config.png)

| Field | Description |
|-------|-------|
| Source IP | The Source IP address to be used in the outbound test packets.
Mandatory: No
Default: Defaults to the default IP address on the card. |
| Timeout | Period within where a reply to a packet that was sent out is expected.
If a reply is not received within this period, then the packet is considered lost. Packets are only fired on sample. This means that if a packet is considered lost, then the next packet fire would occur at the next sample. Packets will not be re-fired as soon as the timeout has been reached. 
**Note**

With the **allowablePacketLoss** setting, multiple packets may be lost before the plugin reports that the particular target is unreachable. See [Example for timeout and allowablePacketLoss](#example-for-timeout-and-allowablepacketloss). 
 Mandatory: No
Default: `5` seconds |
| Allowable packet loss | Maximum number of consecutive packets that can be lost without setting the status to `UNREACHABLE`.
For example, if the allowable packet loss is set to `3`, then the plugin will ignore up to three consecutive packets being lost. If the fourth packet is lost, then the status becomes `UNREACHABLE`. See [Example for timeout and allowablePacketLoss](#example-for-timeout-and-allowablepacketloss).
Mandatory: No
Default: `3` |
| Recv port | Opens up a new port on the Netprobe host that listens to the TCP `ECHO` packet. The port is temporary and is immediately closed after the sample occurs, until the next sample.
Mandatory: No |
| Protocol | Type of protocol to use. Possible values are TCP or ICMP. ICMP is more likely to pass through routers and firewalls. If TCP is chosen, please see [TCP Protocol](#tcpprotocol) for more information.
Mandatory: No
Default: `echo` |
| ICMP payload size | Size of the payload to send with ICMP (ping) packets. The payload is an optional element in the packet sent to the target host, and is echoed back in the reply.
Mandatory: No
Default: `0` (no payload sent) |
| Check target host has changed IP | Forces X Ping to detect if the underlying IP address of a host name has changed. This will restart the packet capture engine so X Ping will continue to ping the correct host. In between restarts there is a potential for losing packets. 
**Note**

 Restarting the packet capture engine will affect all X-Set plugins as they too might miss packets. 
 Mandatory: No
Default: `false` |

#### Example for timeout and allowablePacketLoss

Sample period: 4 seconds

Timeout period: 2 seconds

allowablePacketLoss: 3 (default)

```log
0 sec [sample] Fire packet.
 1 sec
 2 sec Timeout has occurred. Packet is considered lost. (Total lost: 1)
 3 sec
 4 sec [sample] Re-fire packet.
 5 sec
 6 sec Timeout has occurred. Packet is considered lost. (Total lost: 2)
 7 sec
 8 sec [sample] Re-fire packet.
 9 sec
10 sec Timeout has occurred. Packet is considered lost. (Total lost: 3)
11 sec
12 sec [sample] Re-fire packet.
13 sec
14 sec Timeout has occurred. Packet is considered lost. (Total lost: 4)
15 sec
16 sec [sample] Re-fire packet. (report 'UNREACHABLE')
```

#### TCP Protocol

If `TCP` is chosen as the protocol, then you need to define the port number that packets are sent to, and optionally, the name of the service. If the name of the service is provided, then it will be displayed in the dataview. Otherwise, only the port number is shown.

![TCP Protocol](https://docscdn.itrsgroup.com/geneos/images/plug-ins/xping-TCP-protocol.png)

<div class="table-container">
<table class="legacy-table" style="width: 100%; mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css'); margin-left: 0; margin-right: auto;" class="TableStyle-ref_2_col_table" cellspacing="0">
                                <col class="TableStyle-ref_2_col_table-Column-Column1"/>
                                <col class="TableStyle-ref_2_col_table-Column-Column1"/>
                                <thead>
                                    <tr class="TableStyle-ref_2_col_table-Head-Header1">
                                        <th class="TableStyle-ref_2_col_table-HeadE-Column1-Header1">Field</th>
                                        <th class="TableStyle-ref_2_col_table-HeadD-Column1-Header1">Description</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                        <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">Name<a name="protocol__TCP__service__var-name"/></td>
                                        <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">
                                            <p>Name of service to ping.</p>
                                            <p>Mandatory: No</p>
                                        </td>
                                    </tr>
                                    <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                        <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">Port<a name="protocol__TCP__service__var-port"/></td>
                                        <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">
                                            <p>Port number of the service to ping.</p>
                                            <p>Mandatory: Yes</p>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        
</div>

## Permissions

The plugin needs to open network devices, so you should run the Netprobe using root or administrator permission on Unix and Windows, respectively.

On Linux kernel versions 2.6.24 and higher, an alternative to running the Netprobe as root is by setting the `CAP_NET_RAW` and `CAP_NET_ADMIN` Linux capabilities on the Netprobe binary using the following command:

```
setcap cap_net_raw,cap_net_admin+eip <netprobe binary>
```

When running the Netprobe with set capabilities, the  `lib64/startup` folder in the Netprobe directory should be in the `ld.so` trusted paths. Otherwise, the runtime libraries will not load properly. For guidance, see [Run Netprobe under elevated privileges in Linux](https://docs.itrsgroup.com/docs/geneos/7.11.0/collection/netprobe/installation/quickstart-linux-and-other-platforms/index.html#run-netprobe-under-elevated-privileges-in-linux).


## Third Party Libraries

Windows: The Npcap packet capture library needs to be installed on the host. If Npcap is not installed using WinPcap API-compatible mode, then the Npcap installation directory must be added in the `PATH` environment variable or the `DLL_PATH` registry variable.

Unix: The shared library `libpcap.so` needs to be in the `netprobe/lib64` directory. It is recommended to use `libpcap.so` version 1.0.0 or later.

Note:  As the Netprobe needs to be run as root, the `LD_LIBRARY_PATH` is ignored for security reasons.



