In 3.1x kernel, the ARP table add an entry thresh hold number to control the arp table update.
the default value is 60. So when you arptable have more than 60 entry, then it begin to clear the arp table.Pls adjust the value to 1 according to yourrequirment at start up.
net/core/neighbour.c
neigh_periodic_work:
neigh_periodic_work:()
781 >.......if (atomic_read(&tbl->entries) < tbl->gc_thresh1)
782 >.......>.......goto out;
783
Solution:
#echo 1 >/proc/sys/net/ipv4/neigh/default/gc_thresh1