UDP Packet Drop due to ARP DeadTimeout

107 views
Skip to first unread message

Odhran Reidy

unread,
Jul 25, 2016, 3:00:49 PM7/25/16
to ns-3-users
I modified the udp-client-server example to send a single packet with a configurable delay (see attached script).

I'm running into a problem when I set the delay to any value ~500 ms and above, wherein the packet will be shown as transmitted by the client's logging component but never received at the server.

Adding more logging components and comparing logs from delays of 400ms and 500ms (i.e. a successful and unsuccessful transfer), I realised the ARP request sent by the client times out after 1 second and it sends a second request. Effectively, the first ARP request sent by the client reaches the server, but before the response propagates back to the client, the client has already sent a second request. After sending this second request, the client receives the response to the first request and sends the UDP packet.

It's at this stage that my understanding of the problem breaks down. The packet is never received by the server, my best guess is that the server is busy responding to the second ARP request sent by the client?

My first attempt at solving the problem was trying to increase the DeadTimeout of the ARP requests sent by the client. I used the PopulateArpCache method that's been shared a few times on this group but after implementing the fixes in this thread to the best of my ability, I'm still getting an assert failure for IsWaitReply in arp-cache.cc:

assert failed. cond="m_state == WAIT_REPLY", file=../src/internet/model/arp-cache.cc, line=388
terminate called without an active exception

The attached log files, log400.out and log500.out correspond to the script running without the PopulateArpCache method with propagation delays of 400ms and 500ms respectively. The attached script my-udp-transfer.cc contains the PopulateArpCacheMethod which is causing the secondary error.

I'd really appreciate if someone could shed some light on what might be going wrong here, I'm still very much a novice using NS-3 and I've been running into brick walls with this problem for the last few days.

Thanks in advance.



log500.out
log400.out
my-udp-transfer.cc
Reply all
Reply to author
Forward
0 new messages