ipv6: do not create neighbor entries for local delivery
Subsystems (3)
RFC PATCH 1/1 ipv6: do not create neighbor entries for local delivery
RFC comment:
Please note that I do not fully understand the impacts of this, thus why RFC. I don't know if this is the best way to address the issue.
I have a report that when using TPROXY and IPv6, neighbor cache gets flooded with empty entries, while this does not happen with IPv4. These empty entries looks like:
# ip -6 neigh show nud all (I masked some bits) ... 20xx::f0xx:x:3xdb dev lo lladdr 00:00:00:00:00:00 NOARP ...
Note that this address was not directly reachable by this host. It was 1 hop away, and still got a neighbor entry.
These entries seems to be not used during input. I disabled their creation and I could not notice any abnormal results.
Bellow the dashes, my original patch description. Applies to net-next.
Please advise.
Thanks,
Marcelo.
----------------
They will be created at output, if ever needed. This avoids creating empty neighbor entries when TPROXYing/Forwarding packets for addresses that are not even directly reachable.
Note that IPv4 already handles it this way. No neighbor entries are created for local input.
--- net/ipv6/route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/ipv6/route.c +1 -1
@@ -928,7 +928,7 @@ restart:dst_hold (&rt->dst);read_unlock_bh (&table->tb6_lock); -if (!rt->n && !(rt->rt6i_flags &RTF_NONEXTHOP )) +if (!rt->n && !(rt->rt6i_flags & (RTF_NONEXTHOP |RTF_LOCAL ))) nrt =rt6_alloc_cow (rt, &fl6->daddr, &fl6->saddr);else if (!(rt->dst.flags &DST_HOST )) nrt =rt6_alloc_clone (rt, &fl6->daddr);
Signature · 1 line
1.7.11.7