Messages in this thread | | | Date | Fri, 13 Oct 2023 11:19:58 -0500 | Subject | Re: [net] ipv4: Fix broken PMTUD when using L4 multipath hash | From | David Ahern <> |
| |
On 10/12/23 5:40 PM, Nabil S. Alramli wrote: > From: Suresh Bhogavilli <sbhogavilli@fastly.com> > > On a node with multiple network interfaces, if we enable layer 4 hash > policy with net.ipv4.fib_multipath_hash_policy=1, path MTU discovery is > broken and TCP connection does not make progress unless the incoming > ICMP Fragmentation Needed (type 3, code 4) message is received on the > egress interface of selected nexthop of the socket.
known problem.
> > This is because build_sk_flow_key() does not provide the sport and dport > from the socket when calling flowi4_init_output(). This appears to be a > copy/paste error of build_skb_flow_key() -> __build_flow_key() -> > flowi4_init_output() call used for packet forwarding where an skb is > present, is passed later to fib_multipath_hash() call, and can scrape > out both sport and dport from the skb if L4 hash policy is in use.
are you sure?
As I recall the problem is that the ICMP can be received on a different path. When it is processed, the exception is added to the ingress device of the ICMP and not the device the original packet egressed. I have scripts that somewhat reliably reproduced the problem; I started working on a fix and got distracted.
| |