When I ping ping system a from system b; I get an avg of 1.494ms. When I ping system b from system a; I get an avg of .896ms.
I ran a test my pinging once every 10 second for 1.5 hours. I ran this on both machines. I then re-ran the test several times over 6 days at different times and for different lengths of time. In all cases, pings from b->a out performed pings from a->b by 20% to 50%
I then tried file transfers from a->b and b->a. They varied by less than 5%.
These are identical Linux RedHat servers. Same hardware, same software.
I fully understand that if I were a normal well adjusted person that wasn't obsessive and anal retentive I would have shrugged my shoulders and moved on after noticing the first discrepancy. But I am totally maddened by this.
What on earth could be causing this and how would I check if that is the case?
Thanks
It's worth doing a traceroute from A->B and B->A. Unless you know otherwise, it's entirely possible that traffic in the forward direction is taking a different path to that in the reverse direction.
You would expect this to be allowed for given that ICMP measures round trip time, but I have seen similar asymmetric ping times in networks where traffic in a given direction is biased over specific links.
I'm guessing that
a
andb
are in separate data centers? Possibly with different upstream carriers?Ping is implemented over ICMP, which is an entirely separate traffic type to TCP, and as such carriers are free (and commonly do) de-prioritize ping traffic. You may be seeing this effect in your testing.
You may be able to confirm this using tools like mtr, or tcpping, which use alternative methods to simulate a ping.
edit: Have you checked the duplex settings on each interface between
a
andb
? If something has failed auto detection and defaulted to half duplex this may explain the results you are seeing (although its less likely that you would get an acceptable transfer rate in the face of duplex mispmatch)