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.