October 11, 2015
Network dropouts related to ARP
Since I have my Karotz up and running on my Wifi network, it sometimes (or often) does not respond to a web request by different browsers of different devices. There are more people having this problem, and they solved it by pinging their Karotz on a regular basis.
I digged into this, and wrote a program running on my (Windows 2008) server, that does a web request (http on port 80) to my Karotz every 20 seconds. After running for days without any drop-outs on my server, I decided to look at my server at the moment a request failed on another device (PC, tablet, smart phone). Guess what: on the server, the connection was still good, and the requests were still answered, while on the other device a request failed.
After reading a lot (on the web) about these kind of problems, I suspected that this had something to do with the "Address Resolution Protocol" called ARP.
I did some experiments on my PC and discovered that sometimes, the Karotz doesn't respond to an ARP request, or does this much too late. When the Karotz doesn't respond at all, its MAC was not listed in the ARP table on my PC.
The above image is a capture of Wireshark, where you can see an ARP broadcast from my PC (Pegatron).
My PC says "Hey, does anybody know who has IP 192.168.178.130? Tell me please". An ARP broadcast is sent to all devices. Because it takes some time, the broadcast is sent multiple times. Seconds later, you see a response, from a device called Sparklan, that this IP belongs to MAC 00-0E-8E-2C-D4-11, my Karotz. So the Karotz is telling my PC what his MAC address is. This is a normal ARP question-and-answer process. Normal, but maybe a bit slow. Finally, I got the Open Karotz webpage I was requesting.
On this image, however, you'll see another request from my PC. This request is not answered quick enough, and my browser showed me a "something went wrong" page. After a refresh, the Open Karotz page showed up, but the Karotz was responding much too late: it took more then one minute to respond.
Trying to ping my Karotz on another PC gave me a negative response. Looking at the ARP table on that PC showed that the Karotz (192.168.178.130) was missing, as shown on the image below:
As a temporary workaround, I added a static ARP entry to the ARP table of my PC. I'm running Windows 10, and the command to do this on Windows 10 is:
netsh interface ip add neighbors "Ethernet" "192.168.178.130" "00-0e-8e-2c-d4-11"
"Ethernet" is the name of my network interface where I want to add a static entry. This command tells my PC that for network interface "Ethernet" the IP "192.168.178.130" is always on MAC "00-0e-8e-2c-d4-11".
After this, the ARP table looks like this:
Pinging now is successful.
I don't think that this is a permanent solution but it helps me staying connected to my Karotz on my PC's.
At the moment, I'm looking for more information about this problem. Maybe an update of the drivers of the networkcard of the Karotz will solve this problem, but I don't know if this is possible.
To be continued.
Update: if found this post where other people are describing the same behaviour: