Using the following config:
set system ip arp table-size '32768' set system ipv6 neighbor table-size '32768'
The above is set in the system by (if I have traced this correctly):
IPv4:
/usr/libexec/vyos/conf_mode/system-ip.py
# Apply ARP threshold values # table_size has a default value - thus the key always exists size = int(dict_search('arp.table_size', opt)) # Amount upon reaching which the records begin to be cleared immediately sysctl_write('net.ipv4.neigh.default.gc_thresh3', size) # Amount after which the records begin to be cleaned after 5 seconds sysctl_write('net.ipv4.neigh.default.gc_thresh2', size // 2) # Minimum number of stored records is indicated which is not cleared sysctl_write('net.ipv4.neigh.default.gc_thresh1', size // 8)
IPv6:
/usr/libexec/vyos/conf_mode/system-ipv6.py
# Apply ND threshold values # table_size has a default value - thus the key always exists size = int(dict_search('neighbor.table_size', opt)) # Amount upon reaching which the records begin to be cleared immediately sysctl_write('net.ipv6.neigh.default.gc_thresh3', size) # Amount after which the records begin to be cleaned after 5 seconds sysctl_write('net.ipv6.neigh.default.gc_thresh2', size // 2) # Minimum number of stored records is indicated which is not cleared sysctl_write('net.ipv6.neigh.default.gc_thresh1', size // 8)
However verifying if this is actually set returns this:
vyos@vyos:~$ sudo sysctl -a | grep gc_thresh3 net.ipv4.neigh.default.gc_thresh3 = 8192 net.ipv6.neigh.default.gc_thresh3 = 8192
Meaning whatever I set through set system ip arp table-size and set system ipv6 neighbor table-size didnt have any effect (unless Im looking at the wrong place)?
Ref:
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
neigh/default/gc_thresh3 - INTEGER Maximum number of non-PERMANENT neighbor entries allowed. Increase this when using large numbers of interfaces and when communicating with large numbers of directly-connected peers. Default: 1024