fping - A tool to quickly ping N number of hosts to determine their reachability without flooding the network. Roland J. Schemers III - Stanford University schemers@Slapshot.Stanford.EDU fping is a ping(1) like program which uses the Internet Control Message Protocol (ICMP) echo request to determine if a host is up. fping is different from ping in that you can specify any number of hosts on the command line, or specify a file containing the lists of hosts to ping. Instead of trying one host until it timeouts or replies, fping will send out a ping packet and move on to the next host in a round-robin fashion. If a host replies, it is noted and removed from the list of hosts to check. If a host does not respond within a certain time limit and/or retry limit it will be considered unreachable. Site Stanford University has a large TCP/IP network with over 12,000 assigned IP addresses and over 100 IP subnets. Problem and Issues With a large a number of IP addresses in use, its becomes more and more time consuming to check on which IP addresses are actively in use, and which critical machines (routers, bridges, servers, etc) are reachable. One example is we have a program which goes through all of our routers arp caches looking for IP addresses that are in use. After finding a list of IP addresses that aren't in any arp caches fping can then be used to see if these IP addresses really aren't being used, or are just behind the routers. Checking 2500 hosts (99% of which are unreachable) via ping can take hours. Solution fping was written to solve the problem of pinging N number of hosts in an efficient manner. By sending out pings in a round-robin fashion and checking on responses as they come in at random, a large number of hosts can be checked at once. Checking 2500 hosts (5 packets per host, 10 msec between ping packets) takes under 3 minutes. Also, using fping to check 30 routers that are currently reachable takes about 420 milliseconds (elapsed real time). Unlike ping, fping is meant to be used in scripts and its output is easy to parse.