Reading Monitoring and Maintaining ARP Information Documentation was helpful to understand ARP, ARPing and ARP Caching.
ARP was developed to enable communications on an internetwork...Routers and Layer 3 switches need ARP to map IP addresses to MAC hardware addresses so that IP packets can be sent across networks.
...To minimize broadcasts and limit wasteful use of network resources, ARP caching was implemented....the ARP subsystem refreshes dynamic ARP entries periodically (as configured or every four hours by default) so that the ARP table reflects any changed, aged-out, or removed dynamic routes.
I ran show ip arp
to see a list of ARPs cached, aged time and Interface name. I then ran show intefaces
and confirmed that the ARP Timeout is at the default of 4 hours.
However according to my ISP the ARPings or ARP refresh requests are being received by them at varying times. Usually just under 4 hours but occasionally just over 4 hours (when the connection is dropped). For the last two connection drops, time between pings was 4:10 and 4:15.
I read on a Cisco Community Post: ARP cache timeout on Cisco routers:
Richard Burts "the request to refresh the arp entry is generated near
the end of the arp lifetime...Cisco adds a variable amount of time in determining when to generate the arp request. The logic is that they want to avoid synchronization of the arp entries. If we have flushed all the entries in the table and re-learned all the entries at approximately the same time then when they are about to expire we do not want to flush them all at the same time
paul driver's testing revealed what Richard Burts further described:
"while the arp timeout was set to one hour the requests to refresh the entries were all longer than an hour. So the variability that Cisco adds can be longer than the time...the bottom line is that the arp timeout is not a precise timer but an approximation of when the entries will be refreshed or be purged from the table."
It seams the best solution at this point is to reduce the ARP Timeout on my router.
cisco(config-if)#int f0/0
cisco(config-if)#arp timeout 10800