I found fping very handy when I need to ping lots of IP addresses concurrently, thank you for providing this great tool!
Recently I noticed an issue when I want to bind to a particular interface using fping. My server machine has multiple interfaces, you can see that if I use "ping" with the same binding (eth2), it works. But if I use fping binding to eth2, it doesn't work. (claim unreachable). And then if I remove "-I eth2" from fping command line, it works again! I am wondering if there is a bug when working with the interface binding for fping since "ping" works with eth2 binding.. This is fairly easily reproducible: on my local machine, if I use binding to ping the ip address configued on that interface, it will say "unreachable". I am wondering why Linux system respond to fping and ping differently? Thanks! ============================================= [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 00:50:56:9F:79:8E inet addr:10.80.69.110 Bcast:10.80.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:18101440 errors:0 dropped:35509 overruns:0 frame:0 TX packets:7480471 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7763913987 (7.2 GiB) TX bytes:5479977217 (5.1 GiB) [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# ifconfig eth3 eth3 Link encap:Ethernet HWaddr 00:50:56:9F:B3:8B inet addr:10.80.69.111 Bcast:10.80.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:17347650 errors:0 dropped:35516 overruns:0 frame:0 TX packets:9847398 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8144976809 (7.5 GiB) TX bytes:6512479353 (6.0 GiB) ==> fping doesn't work with "-I eth2" [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# fping -I eth2 10.80.69.110 10.80.69.110 is unreachable [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# fping -I eth2 10.80.69.111 10.80.69.111 is unreachable ===> fping works without "-I eth2" [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# fping 10.80.69.111 10.80.69.111 is alive [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# fping 10.80.69.110 10.80.69.110 is alive ==> ping works either way: [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# ping -I eth2 10.80.69.110 PING 10.80.69.110 (10.80.69.110) from 10.80.69.110 eth2: 56(84) bytes of data. 64 bytes from 10.80.69.110: icmp_seq=1 ttl=64 time=0.019 ms 64 bytes from 10.80.69.110: icmp_seq=2 ttl=64 time=0.035 ms ^C --- 10.80.69.110 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.019/0.027/0.035/0.008 ms [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# ping 10.80.69.111 PING 10.80.69.111 (10.80.69.111) 56(84) bytes of data. 64 bytes from 10.80.69.111: icmp_seq=1 ttl=64 time=0.024 ms ^C --- 10.80.69.111 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# ping -I eth2 10.80.69.110 PING 10.80.69.110 (10.80.69.110) from 10.80.69.110 eth2: 56(84) bytes of data. 64 bytes from 10.80.69.110: icmp_seq=1 ttl=64 time=0.022 ms ^C --- 10.80.69.110 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.022/0.022/0.022/0.000 ms [controller-VMware-421f4145bd167fb7-1b45bb987799c3bb:~]# ping 10.80.69.110 PING 10.80.69.110 (10.80.69.110) 56(84) bytes of data. 64 bytes from 10.80.69.110: icmp_seq=1 ttl=64 time=0.020 ms ^C --- 10.80.69.110 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.020/0.020/0.020/0.000 ms ============= strace shows "fping -I eth2 " indeed didn't get response back: sendto(3, "\10\0\254\206Ky\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64, 0, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.80.69.111")}, 16) = 64 select(4, [3], [], NULL, {0, 500060}) = 0 (Timeout) sendto(3, "\10\0\254\205Ky\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64, 0, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.80.69.111")}, 16) = 64 select(4, [3], [], NULL, {0, 750000}) = 0 (Timeout) ==== While ping get response back. sendmsg(3, {msg_name(16)={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.80.69.111")}, msg_iov(1)=[{"\10\0\346\6L<\0\1\266\307\fY\0\0\0\0;\310\10\0\0\0\0\0\20\21\22\23\24\25\26\27"..., 64}], msg_controllen=32, {cmsg_len=28, cmsg_level=SOL_IP, cmsg_type=, ...}, msg_flags=0}, 0) = 64 recvmsg(3, {msg_name(16)={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.80.69.111")}, msg_iov(1)=[{"E\0\0T\23\v\0\0@\1\310!\nPEo\nPEn\0\0\356\6L<\0\1\266\307\fY"..., 192}], msg_controllen=32, {cmsg_len=32, cmsg_level=SOL_SOCKET, cmsg_type=0x1d /* SCM_??? */, ...}, msg_flags=0}, 0) = 84 write(1, "64 bytes from 10.80.69.111: icmp"..., 6064 bytes from 10.80.69.111: icmp_seq=1 ttl=64 time=0.106 ms -- You received this message because you are subscribed to the Google Groups "fping-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to fping-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.