2ping, a bi-directional ping utility

2ping is a bi-directional ping utility. It uses 3-way pings (akin to TCP SYN, SYN/ACK, ACK) and after-the-fact state comparison between a 2ping listener and a 2ping client to determine which direction packet loss occurs.

Download

2ping should work on any computer with Perl 5.6.0 or later. It has been tested on Linux, FreeBSD, Mac OS X, and Windows (with Strawberry Perl).

Usage

user@alice:~$ 2ping test.2ping.net
2PING test.2ping.net (209.177.154.210): 64 to 512 bytes of data.
Lost outbound packet to 209.177.154.210: ping_seq=1
64 bytes from 209.177.154.210: ping_seq=2 time=10.557 ms
Lost inbound packet from 209.177.154.210: ping_seq=3
64 bytes from 209.177.154.210: ping_seq=4 time=10.527 ms
^C
--- test.2ping.net 2ping statistics ---
4 pings transmitted, 2 received, 50% ping loss, time 4008ms
1 outbound ping losses (25%), 1 inbound (25%), 0 undetermined (0%)
rtt min/avg/max = 10.527/10.542/10.557 ms
6 raw packets transmitted, 3 received
user@alice:~$ _

Start a listener on a stable remote side by running 2ping --listen. Then on the local side, run 2ping against that host's name or IP, e.g. 2ping remotehost or 2ping 10.0.0.1. More information is available in the man page.

Public test listeners

If you would like to quickly test 2ping against a remote listener without setting one of your own up, there are several public test listeners available.

test.2ping.net runs the latest version of 2ping. The 2ping protocol is designed to be version-agnostic (that is, implementations are backwards and forwards compatible with each other), so as long as the client is at least version 1.0, it should be able to work with the latest version listener.

The following secondary servers are run by either myself or others in the community. They are not guaranteed to be running the latest version of 2ping, but as stated before, this should not matter.

HostnameLocationIPv4IPv6Run By
cromulent.colobox.comFremont, CA, USAYesYesRyan Finnie
linode-dallas.mirrors.finnix.orgDallas, Texas, USAYesYesFinnix, sponsored by Linode
linode-london.mirrors.finnix.orgLondon, United KingdomYesYesFinnix, sponsored by Linode
linode-tokyo.mirrors.finnix.orgTokyo, JapanYesYesFinnix, sponsored by Linode
vr-london.mirrors.finnix.orgLondon, United KingdomYesYesFinnix, sponsored by Host Virtual

Please do not abuse the listeners. Do not flood ping (any interval faster than 0.2 seconds), ping for excessive periods, or constantly send large padded packets.

Development

2ping development is managed with git, and is available in several locations:

Releases from 0.0.3 onward are tagged. Patches are welcome; please send to Ryan Finnie.

License

2ping is licensed under the GNU General Public License v2.0.

2ping, a bi-directional ping utility
Copyright (C) 2010 Ryan Finnie

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

The 2ping protocol specification is an open standard, and its text is also licensed under the GPLv2; see the protocol specification document for details.

About

2ping and the 2ping protocol were written by Ryan Finnie.

Your pings, let me show you them... again.