On 8/3/20 11:53 PM, Stefano Brivio wrote: > Currently, processes sending traffic to a local bridge with an > encapsulation device as a port don't get ICMP errors if they exceed > the PMTU of the encapsulated link. > > David Ahern suggested this as a hack, but it actually looks like > the correct solution: when we update the PMTU for a given destination > by means of updating or creating a route exception, the encapsulation > might trigger this because of PMTU discovery happening either on the > encapsulation device itself, or its lower layer. This happens on > bridged encapsulations only. > > The output interface shouldn't matter, because we already have a > valid destination. Drop the output interface restriction from the > associated route lookup. > > For UDP tunnels, we will now have a route exception created for the > encapsulation itself, with a MTU value reflecting its headroom, which > allows a bridge forwarding IP packets originated locally to deliver > errors back to the sending socket. > > The behaviour is now consistent with IPv6 and verified with selftests > pmtu_ipv{4,6}_br_{geneve,vxlan}{4,6}_exception introduced later in > this series. > > v2: > - reset output interface only for bridge ports (David Ahern) > - add and use netif_is_any_bridge_port() helper (David Ahern) > > Suggested-by: David Ahern <dsah...@gmail.com> > Signed-off-by: Stefano Brivio <sbri...@redhat.com> > --- > include/linux/netdevice.h | 5 +++++ > net/ipv4/route.c | 5 +++++ > 2 files changed, 10 insertions(+) >
Reviewed-by: David Ahern <dsah...@gmail.com>