Routing – Does Reply Use the Same Path as Ping Request?

routing

Is there any rule in networking which says that the ping(echo request) reply should come from the same path from which the ping(echo request) has been sent? For example If I ping 192.168.2.1 from R1's se0/0, according to my configuration the ping(echo request) should go from R1->R2->R3'(se0/1) and reply(echo request reply) should come from R3->R4->R1'(se0/0) since I have given static routes on all routers.

Configurations are as below:

R1#show ip int br | i up
Serial0/0                  192.168.1.1     YES NVRAM  up                    up
Serial0/1                  192.168.4.1     YES NVRAM  up                    up
R1#show running-config |  sec ip route
ip route 192.168.2.2 255.255.255.255 192.168.1.2

R2#show ip int br | i up
Serial0/0                  192.168.1.2     YES NVRAM  up                    up
Serial0/1                  192.168.2.2     YES NVRAM  up                    up
R2#show running-config | sec ip route
ip route 192.168.3.1 255.255.255.255 192.168.2.1

R3#show running-config | sec ip route
ip route 192.168.4.2 255.255.255.255 192.168.3.2
R3#show ip int br | i up
Serial0/0                  192.168.3.1     YES NVRAM  up                    up
Serial0/1                  192.168.2.1     YES NVRAM  up                    up
R3#show running-config | sec ip route
ip route 192.168.4.2 255.255.255.255 192.168.3.2

R4#show ip int br | i up
Serial0/0                  192.168.3.2     YES NVRAM  up                    up
Serial0/1                  192.168.4.2     YES NVRAM  up                    up
R4#show running-config | sec ip route
ip route 192.168.1.1 255.255.255.255 192.168.4.1

Topology:

enter image description here

Best Answer

There is absolutely no rule to the effect that pings follow the same path on return, quite the opposite in fact.

ICMP packets are routed based on their destination, so if you have asymetrical routing somewhere in your network, the ICMP request will take one path, and the reply will take another. This is also why it is often useful when troubleshooting to get traceroutes from both ends of your network.

In this case though, are you not missing some routes ? On R1 for instance you have a route towards 192.168.2.2/32, but not towards 2.1.