Send ICMPv6 ECHO_REQUEST packets to network hosts (UNIX)


ping6 [-dfHnNqRvw] [-a addrtype] [-b bufsiz] [-c count] 
      [-h hoplimit] [-I interface] [-i wait] [-l preload]
      [-p pattern] [-P policy] [-S sourceaddr] [-s packetsize] 
      [hops...] host

Runs on:



-a addrtype
Generate an ICMPv6 Node Information Node Addresses query (rather than ECHO_RESPONSE), where addrtype is a string constructed from the following characters:
Request that the responder's anycast addresses be returned (if not specified, return unicast addresses only). Note that the specification doesn't specify how to get responder's anycast addresses. This is an experimental option.
Request all of the responder's unicast addresses. If omitted, only the addresses that belong to the interface which has the responder's address are requests.
Request the responder's IPv4-compatible and IPv4-mapped addresses.
Request the responder's global-scope addresses.
Request the responder's link-local addresses.
Request the responder's site-local addresses.
-b bufsiz
Set the socket buffer size.
-c count
Stop after sending (and receiving) this many ECHO_RESPONSE packets.
Set the SO_DEBUG option on the socket being used.
Do a "flood ping": output packets either as fast as they come back or one hundred times per second, whichever is faster. For every ECHO_REQUEST sent, a "." is printed; for every ECHO_REPLY received a backspace is printed. This quickly shows how many packets are being dropped.
Note: Only the superuser (root) may use the -f option; it can be very hard on a network — use it with caution.
Try a reverse-lookup of the IPv6 addresses.
-h hoplimit
Set the IPv6 hoplimit.
-I interface
Source packets with the given interface address. This flag applies if the ping destination is a multicast address, or a link-local/site-local unicast address.
-i wait
Wait this many seconds between sending each packet (default is one second). This option is incompatible with -f.
-l preload
Send this many packets as fast as possible before returning to normal behavior. Only the superuser (root) may use this option.
Print numeric output only. No attempt is made to lookup symbolic names for host addresses.
Probe the node information multicast group (ff02::2:xxxx:xxxx). The host argument must be a string hostname of the target (it can't be a numeric IPv6 address). The node information multicast group is computed based on a given host, and is used as the final destination. Since the node information multicast group is a link-local multicast group, the destination link needs to be specified by -I.
-p pattern
Fill out the packet with this many "pad" bytes (maximum is 16). You should find this useful for diagnosing data-dependent problems in a network. For example, -p ff causes the sent packet to be filled with ones. If specified with -q, any ICMP error messages caused by its own ECHO_REQUEST messages are printed.
-P policy
Specify the IPsec policy to use for the probe.
Be quiet: display nothing except the summary lines at startup time and when finished.
Make the kernel believe that the target host (or the first hop if you specify hops) is reachable by injecting an upper-layer reachability confirmation hint. The option is meaningful only if the target host (or the first hop) is a neighbor.
-S sourceaddr
Specify the source address of request packets. The source address must be one of the unicast addresses of the sending node. If the outgoing interface is specified by the -I option as well, sourceaddr needs to be an address assigned to the specified interface.
-s packetsize
Send this many data bytes. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data. You may also need to specify -b to extend socket buffer size.
Verbosity. List all ICMP packets received.
Same as -w, but use the old packet format based on 03 draft. This option is present for backward compatibility.
Generate an ICMPv6 Node Information FQDN query, rather than ECHO_REQUEST. The -s option has no effect when -w is specified.
The IPv6 addresses for intermediate nodes, which are put into a type 0 routing header.
The IPv6 adddress of the final destination node.


The ping6 utility uses the ICMPv6 protocol's mandatory ICMP6_ECHO_REQUEST datagram to elicit an ICMP6_ECHO_RESPONSE from the given host or gateway. ICMP6_ECHO_REQUEST datagrams, known as pings, have an IPv6 header, and ICMPv6 header formatted as documented in RFC 2463.

Note: This utility needs to have the setuid ("set user ID") bit set in its permissions. If you use mkefs, mketfs, or mkifs on a Windows host to include this utility in an image, use the perms attribute to specify its permissions explicitly, and the uid and gid attributes to set the ownership correctly.

When using ping6 for isolating faults, you should first run it on the local host to verify that the local network interface is up and running. You should then "ping" hosts and gateways further and further away. Roundtrip times and packet-loss statistics are computed. If duplicate packets are received, they aren't included in the packet-loss calculation, although the roundtrip time of these packets is used in calculating the minimum/average/maximum roundtrip time numbers. When the specified number of packets has been sent (and received), or if you terminate ping6 with a SIGINT, a brief summary is displayed.

Note: The ping6 utility is intended for testing, measuring, and managing networks. Because of the load it can impose on the network, you shouldn't use ping6 during normal operations or from automated scripts.

Duplicate and damaged packets

The ping6 utility reports duplicate and damaged packets.

Although they should never happen when pinging a unicast address, duplicate packets can occur in many situations and seem to be caused by inappropriate link-level retransmissions. While duplicates are rarely (if ever) a good sign, the presence of low levels of duplicates isn't always cause for alarm. Duplicates are expected when pinging a broadcast or multicast address, since they're not really duplicates but replies from different hosts to the same request.

Damaged packets, on the other hand, are serious and often indicate malfunctioning hardware somewhere in the ping6 packet's path (in the network or in the hosts).

Trying different data patterns

The (inter)network layer should never treat packets according to the data contained in the data portion. Unfortunately, data-dependent problems have been known to sneak into networks and remain undetected for long periods of time. In many cases, the particular pattern that will have problems is something that doesn't have sufficient "transitions," such as all ones or all zeros, or a pattern right at the edge, such as almost all zeros. It isn't necessarily enough to specify a data pattern of all zeros, for example, on the command line because the pattern of interest is at the data-link level—the relationship between what you type and what the controllers transmit can be complicated.

So if you have a data-dependent problem, you'll probably have to do a lot of testing to find it. If you're lucky, you may manage to find a file that either can't be sent across your network or that takes much longer to transfer than other similar length files. You can then examine this file for repeated patterns that you can test using the -p option.

Based on:


The ping6 utility requires the shared library.

Exit status:

Success (the host is alive).
An error occurred. The arguments are incorrect or the host isn't responding.