=head1 NAME oping - send ICMP ECHO_REQUEST to network hosts =head1 SYNOPSIS B [B<-4> | B<-6>] [B<-c> I] [B<-i> I] I [I [I ...]] B [B<-4> | B<-6>] [B<-c> I] [B<-i> I] B<-f> I B [B<-4> | B<-6>] [B<-c> I] [B<-i> I] I [I [I ...]] B [B<-4> | B<-6>] [B<-c> I] [B<-i> I] B<-f> I =head1 DESCRIPTION B uses ICMPv4 or ICMPv6 ECHO_REQUEST packets to measure a hosts reachability and the network latency. In contrast to the original L utility B can send ICMP packets to multiple hosts in parallel and wait for all ECHO_RESPONSE packets to arrive. In contrast to the B utility (URL is listed in L<"SEE ALSO">) B can use both, IPv4 and IPv6 transparently and side by side. B is an ncurses-based front-end to I which displays ping statistics online and highlights aberrant round-trip times if the terminal supports colors. =head1 OPTIONS =over 4 =item B<-4> Force the use of IPv4. =item B<-6> Force the use of IPv6. =item B<-c> I Send (and receive) I ICMP packets, then stop and exit. =item B<-i> I Send one ICMP packet (per host) each I seconds. This can be a floating-point number to specify sub-second precision. =item B<-t> I Set the IP Time to Live to I. This must be a number between (and including) 1EandE255. If omitted, the value B<64> is used. =item B<-I> I
Set the source address to use. You may either specify an IP number or a hostname. You B pass the interface name, as you can with GNU's L - use the B<-D> option for that purpose. =item B<-D> I Set the outgoing network device to use. =item B<-f> I Instead of specifying hostnames on the command line, read them from I. If I is B<->, read from C. If I is installed with the SetUID-bit, it will set the effective UID to the real UID before opening the file. In the special (but common) case that I is owned by the super-user (UIDE0), this means that privileges are temporarily dropped before opening the file, in order to prevent users from reading arbitrary files on the system. If your system doesn't provide I (this was an optional feature before POSIXE2001), the behavior is different because it is not possible to I drop privileges. The alternative behavior is: If the real user ID (as returned by L) and the effective user ID (as returned by L) differ, the only argument allowed for this option is "-" (i.e. standard input). =item B<-Q> I Specify the I (QoS) for outgoing packets. This is a somewhat tricky option, since the meaning of the bits in the IPv4 header has been revised several times. The currently recommended method is I which is used in IPv6 headers as well. There are shortcuts for various predefined I (PHBs): =over 4 =item B Selects the I behavior. This is the default behavior. =item B Selects the I (EF) per-hop behavior, as defined in I3246>. This PHB is characterised by low delay, low loss and low jitter, i.e. high priority traffic. =item B Selects the I (VA) per-hop behavior, as defined in I5865>. This traffic class is meant for I (VoIP) traffic which uses I (CAC) for reserving network capacity. =item BII

Selects one of 12Edifferentiated services code points (DSCPs), which are organized in four I with three I each. Therefore, I must be a number betweenE1 throughE4 and I

must be a number betweenE1 throughE3, for example "af13", "af22" and "af41". In each class, the lower priority number takes precedence over the higher priority number. =item BI Selects one of the eight I PHBs. I is a number betweenE0 throughE7. The class selectors have been defined to be compatible to the I field in the IPv4 header as defined in I791>. Please note that "cs0" is synonymous to "be". =back The old definition of the same bits in the IPv4 header was as I (ToS) field, specified in I1349>. It defined four possible values which have appropriate aliases. Please note that this use of the bits is B and the meaning is limited to IPv4! =over 4 =item B Minimize delay =item B Maximize throughput =item B Maximize reliability =item B Minimize monetary cost =back Alternatively, you can also specify the byte manually. You can use either a decimal number (0-255), a hexadecimal number (0x00-0xff) or an octal number (00-0377) using the usual "0x" and "0" prefixes for hexadecimal and octal respectively. The printed lines will contain information about the QoS field of received packets if either a non-standard QoS setting was used on outgoing packets or if the QoS byte of incoming packets is not zero. In other words, the QoS information is omitted if both, the outgoing and the incoming QoS bytes are zero. The received byte is always interpreted as I (DSCP) and I (ECN), even if the deprecated I (ToS) aliases were used to specify the bits of outgoing packets. =item B<-u>|B<-U> I B<-u> forces UTF-8 output, B<-U> disables UTF-8 output. If neither is given, the codeset is automatically determined from the locale. =item B<-g> B|B|B|B I Selects the graph to display. =over 4 =item B Do not show a graph. =item B Show a graph with time on the x-axis in a round-robin fashion, i.e. continue on the left if the right edge is reached. The y-axis shows the round-trip time. This is the default. =item B Show a I where the x-axis, i.e. the width of the window, is the round-trip time. The entire width of the window it the ping interval, set with the B<-i> option. The box is sized so it contains 50% of the replies. The vertical line shows the median. The whiskers are sized to contain 95% of the replies -- 2.5% below the whiskers and 2.5% above. |----------[#####|##########]--------------------------------------------| ^ ^ ^ ^ ^ 2.75% 25% 50% 75% 97.5% =item B Show a I of the round-trip times. The width of the window is taken as round-trip time from 0ms on the left to the I (the B<-i> option, default 1000ms) on the right. The height of the graph is scaled so that the most-used buckets vertically fills the line. The buckets are colored green up to and including the median, yellow up to and including the 95th percentile and red for the remainder. In addition, the histogram is colored, if supported by the terminal. The green bars include the median (50% of responses), yellow bars include the 95th percentile and outliers are colored red. =back =item B<-P> I Configures the latency percentile to report. I must be a number between zero and 100, exclusively in both cases. In general, defaults to B<95>. If B<-c> is given and a number less than 20, this would be the same as the maximum. In this case the default is chosen so that it excludes the maximum, e.g. if B<-cE5> is given, the default is I<80>. The calculated percentile has roughly millisecond precision. If precision is of importance, read on for a more detailed explanation. In order to calculate the percentile without keeping all replies in memory, I divides the I (the B<-i> option) in 1000 "buckets". Each bucket counts the number of packets received in the represented time. That means that the precision decreases if the interval is increased, because each bucket represents a larger (fraction of the) response time. The code looks for the first bucket representing at least I responses and returns the upper-bound latency represented by that bucket. Since the represented percentage may be larger than the configured percentile, this algorithm I the actual percentile by at most 1000th of I. =item B<-Z> I If any hosts have a drop rate higher than I, where I is a number between zero and 100 inclusively, exit with a non-zero exit status. Since it is not possible to have a higher drop rate than 100%, passing this limit will effectively disable the feature (the default). Setting the option to zero means that the exit status will only be zero if I replies for I hosts have been received. The exit status will indicate the number of hosts with more than I packets lost, up to a number of 255 failing hosts. =back =head1 COLORS If supported by the terminal, I will highlight the round-trip times (RTT) using the colors green, yellow and red. Green signals RTTs that are in the "expected" range, yellow marks moderately unusual times and times that differ a lot from the expected value are printed in red. The information used to categorize round-trip times is the I round-trip time and the I. RTTs that differ from the average by less than the standard deviation are considered to be "normal" and are printed in green. Times that differ from the average more than the standard deviation but less than twice the standard deviation are considered "moderately unusual" and are printed in yellow. Times differing more than twice the standard deviation from the average are considered to be "unusual" and are printed in red. =head1 SEE ALSO L, L, L =head1 AUTHOR liboping is written by Florian "octo" Forster Eff at octo.itE. Its homepage can be found at L. Copyright (c) 2005-2011 by Florian "octo" Forster.