With the current "old" implementation of the set protocols static arp we have two drawbacks:
- As this it's a tagNode, once an entry is changed and commit is called, the script which handles ARP entries is called as many times as there are ARP entries. In addition, the entries are added and removed as many times as there are static ARP entries configured.
- We can not configure "per interface" static ARP entries making it impossible to work with multiple VRF instances
VRF
vyos@vyos# set vrf name red table 1000 vyos@vyos# set interfaces ethernet eth0 address 172.18.201.10/24 vyos@vyos# set interfaces ethernet eth1 vrf red vyos@vyos# set interfaces ethernet eth1 address 172.18.201.10/24 vyos@vyos# commit vyos@vyos# run show int Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 172.18.201.10/24 u/u eth1 172.18.201.10/24 u/u lo 127.0.0.1/8 u/u ::1/128
Manually add per interface ARP entires
vyos@vyos# sudo arp -i eth0 -s 172.18.201.1 00:01:02:03:04:AA vyos@vyos# sudo arp -i eth1 -s 172.18.201.1 00:01:02:03:04:BB
vyos@vyos# arp Address HWtype HWaddress Flags Mask Iface 172.18.201.1 ether 00:01:02:03:04:aa CM eth0 172.18.201.1 ether 00:01:02:03:04:bb CM eth1
Migration
The interface for a static ARP entry should be enforced.
A migration script must be used to read the current static ARP entries and compare it to the current configured L3 interfaces on a system. If the ARP entry is within an interface, use this interface and re-write the config.