[mrtg] Re: Packet Loss from Ping

Jeff Liebermann jeffl at comix.santa-cruz.ca.us
Tue Dec 5 03:19:24 MET 2000

On Thu, Nov 16, 2000 at 07:04:28PM -0500, cpt2 at daimlerchrysler.com wrote:
> Has anyone implemented a graph of this from a Windoze box?  I'd like to get
> a graph of percent packet loss (as the ping command reports) on my NT
> server and was wondering if there is an existing script for this.

Can I talk you out of this idea?  Accurate packet loss is a
function of how many packets you ping with.  For example, if
you just ping with 3 packets, your choices are 0, 33%, 67%,
and 100%.  If you want 1% resolution, you'll need to ping
with 100 packets every 5 minutes.  If traffic gets high, many
routers simply drop or delay ICMP ping packets to insure the
important stuff gets through.  Using the ping packet loss is
not what I would consider practical or useful.

May I suggest you monitor TCP retransmissions at:
and TCP traffic at:  (in)  (out)
The Retrans are the number of TCP "segments" that have to get
resent usually because of packet loss.  While this does nothing
for ICMP and UDP traffic, it does serve as a good indication
that something is amis in the link.  I use the percentage of 
TCP retrans to measure wireless link reliability which can
easily have a packet loss of 50% or more.

For NT ping times, I use the following mess.  Note that this
requires the Windoze 95/98 version of ping.exe which I
renamed to ping95.exe.
# Plagerized by Jeff Liebermann from original by Tim Pozar.
# 09/14/00  First hack for NT.

$ipaddr = "NULL";
$ipaddr = $ARGV[0];
$numpings = 3;

if ($ipaddr eq "NULL"){
        print "Usage mrtgping.pl [ipaddress]\n";

# Requires Windoze 95/98 version ping.exe renamed to ping95.exe
# Windoze 95/98 ping will return...
#    Minimum = 494ms, Maximum =  574ms, Average =  520ms
$result = `ping95 -n $numpings $ipaddr | find /i "average" `;

# Break result apart at the commas.
($Mins,$Maxs,$Avgs) = split(/,/,$result);

# Break each value apart at the = sign.
($Mint,$min) = split(/=/,$Mins);
($Maxt,$max) = split(/=/,$Maxs);
($Avgt,$avg) = split(/=/,$Avgs);

# Remove the "ms" at the end.
$min1 = substr($min,0,-2);
$max1 = substr($max,0,-2);
$avg1 = substr($avg,0,-2);
$min1 =~ s/ //g;
$max1 =~ s/ //g;
$avg1 =~ s/ //g;

print "$avg1\n";
print "$max1\n";
print "0\n";
print "$ipaddr\n";

# Jeff Liebermann  Liebermann Design  150 Felker St #D  Santa Cruz  CA  95060
# 831.336.2558 voice   831.426.1240 fax   831.421.6491 digital_pager
# jeffl at comix.santa-cruz.ca.us  http://www.cruzio.com/~jeffl

Unsubscribe mailto:mrtg-request at list.ee.ethz.ch?subject=unsubscribe
Archive     http://www.ee.ethz.ch/~slist/mrtg
FAQ         http://faq.mrtg.org    Homepage     http://www.mrtg.org
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi

More information about the mrtg mailing list