Consider the following network:
[Host-1]if12 ---------- if21[Host-2]if23 ---------- if32[Host-3]
Step 0 (Initialization)
ARP caches of all hosts are initially empty.
Step1 (Host-1 pings Host-2)
- Host-1 checks its ARP cache whether there is an entry for Host-2's MIP address. Host-1 broadcasts ''who is Host-2?'' (a broadcast Ethernet frame with SDU Type set to MIP-ARP, containing a MIP-ARP Request message). Note that Host-2 will reply back the MAC address of the interface where the broadcast message was received (RAW sockets descriptor can distinguish different interfaces).
- Host-2 receives the broadcast message, replies back to Host-1 with a MIP-ARP response (unicast message to Host-1, SDU Type: MIP-ARP, with a payload containing a Response message), and both update their caches.
- Host-1 sends the ping packet to Host-2 and Host-2 responds.
The updated ARP caches of all hosts will be as following:
MIP address |
MAC address |
---|---|
2 |
if_21 MAC address |
MIP address | MAC address |
---|---|
1 | if_12 MAC address |
MIP address | MAC address |
---|---|
Step 2 (Host-3 pings Host-2)
- Host-3 checks its ARP cache whether there is an entry for Host-2's MIP address. Host-3 broadcasts "who is Host-2" (see above).
- Since Host-2 receives the broadcast message from if_23 interface, it will reply back to Host-3 the MAC address of if_23 interface. Host-3 receives the ARP Response and updates its cache.
- Host-3 sends the ping packet to Host-2 and Host-2 responds.
After this step, the ARP caches will be as following:
MIP address | MAC address |
---|---|
2 | if_21 MAC address |
MIP address | MAC address |
---|---|
1 | if_12 MAC address |
3 | if_32 MAC address |
MIP address | MAC address |
---|---|
2 | if_23 MAC address |
Step 3 (Host-1 pings Host-2 again)
- Host-1 should use the MIP-ARP-cache table instead of broadcasting a MIP-ARP message. It should directly send the ping to the already known Host-2, where Host-1 is also already known and a “PONG” response can directly be sent.
- Host-1 cannot ping Host-3.