On 2021-09-09 5:23 p.m., Alan Graham wrote:
Adding the 0.0.0.0/0 (or ":::") to the config is what is causing some
growth of the arp table, but it is not growing indefinitely. After
looking around for SupportsNeighborDiscovery and finding nothing, I
decided to check the repro. When not routing all traffic through an
interface the arp cache is basically static:
Thanks for looking into this, too.
I also suspect having the gateway set like this is probably necessary
for Windows to start adding ARP entries. How were you able to determine
that it is also sufficient? My guess is that if it is possible to
indicate to Windows that the interface does not support neighbour
discovery in general, doing so likely prevents ARP entries regardless of
the gateway values.
BTW, how did you determine that it does not grow indefinitely?
So I tend to agree with Jason that this is "harmless" and shouldn't
cause any serious problems. It would be nice for Microsoft to fix
Set-NetIPInterface, it looks like a bug that SupportsNeighborDiscovery
can't be set.
One "harm" might be that the OS keeping an easy-to-query list of all
(recent?) destinations in the ARP table, which could be undesirable.
I'm not sure it's a bug, per se. It seems by design that you cannot
change the value of SupportsNeighborDiscovery after the interface is
created. The documentation for SetIpInterfaceEntry()[1] says:
The MaxReassemblySize, MinRouterAdvertisementInterval,
MaxRouterAdvertisementInterval , Connected, SupportsWakeUpPatterns,
SupportsNeighborDiscovery, SupportsRouterDiscovery, ReachableTime,
TransmitOffload, and ReceiveOffload members of the MIB_IPINTERFACE_ROW
structure pointed to by the Row are ignored when the
SetIpInterfaceEntry function is called. These members are set by the
network stack and cannot be changed using the SetIpInterfaceEntry
function.
I noticed that the Cmdlet in PowerShell seems to treat the
-NeighborDiscoverySupported option as an input filter vs. a value that
you can set. While this surprised me, it is at least consistent with
the Win32 API docs.
1.
https://docs.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-setipinterfaceentry#remarks
--
Brad Spencer