I've been working to get UDP unicast packets implemented on an embedded system, using a Wiznet W5100S internet offload chip.

Their libraries enable the negotiation of DHCP, and I have successfully leased a local IP address from the gateway I am connected to. When the function to send a UDP unicast packet is invoked, the chip will automatically issue an ARP request if it has no previous memory of doing this before. I would expect the gateway to response with it's MAC, but I get no response at all and the embedded system reports "Dest_Unreach".

You can see both the DHCP negotiation (packet 8-14) and failed ARP request (24) below:

Successful DHCP, failed ARP I'm monitoring everything via wireshark, capture here: https://filebin.net/m4x2a2ujezk6hug8

Comparing the ARP request from my embedded system to that of my laptop, there is absolutely no difference in structure, aside from my embedded system has some trailing padding zeros. Comparison below:

Failed ARP vs working ARP

I wondered if something in DHCP set me up to fail ARP, but there is little difference when comparing with my laptop's negotiation and the client IP, gateway IP, and subnet mask all seem correct.

I've tried two gateways in case that was the problem, but no difference.

I've been really struggling to figure this out, any help would be greatly appreciated!


For anyone else finding this:

It appears that I was receiving an ARP response from the router all along. The main thing I failed to realise is that an ARP response is unicast, and so I cannot expect to see it on Wireshark running on my laptop at all, since it's not directed at that!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.