Re: PMTUD broken inside network namespace with multipath routing

2020-09-01 Thread David Ahern
On 9/1/20 4:40 AM, mastertheknife wrote: > > P.S: while reading the relevant code in the kernel, i think i spotted > some mistake in net/ipv4/route.c, in function "update_or_create_fnhe". > It looks like it loops over all the exceptions for the nexthop entry, > but always overwriting the first (an

Re: PMTUD broken inside network namespace with multipath routing

2020-09-01 Thread mastertheknife
Hello David, A quick correction; The issue is not solved, it was a mistake in my testing. The issue is still there. Kfir On Tue, Sep 1, 2020 at 1:40 PM mastertheknife wrote: > > Hello David. > > I was able to solve it while troubleshooting some fragmentation issue. > The VTI interfaces had MTU

Re: PMTUD broken inside network namespace with multipath routing

2020-09-01 Thread mastertheknife
Hello David. I was able to solve it while troubleshooting some fragmentation issue. The VTI interfaces had MTU of 1480 by default. I reduced to them to the real PMTUD (1366) and now its all working just fine. I am not sure how its related and why, but seems like it solved the issue. P.S: while re

Re: PMTUD broken inside network namespace with multipath routing

2020-08-14 Thread mastertheknife
Hello David, It's on a production system, vmbr2 is a bridge with eth.X VLAN interface inside for the connectivity on that 252.0/24 network. vmbr2 has address 192.168.252.5 in that case 192.168.252.250 and 192.168.252.252 are CentOS8 LXCs on another host, with libreswan inside for any/any IPSECs wi

Re: PMTUD broken inside network namespace with multipath routing

2020-08-12 Thread David Ahern
On 8/12/20 6:37 AM, mastertheknife wrote: > Hello David, > > I tried and it seems i can reproduce it: > > # Create test NS > root@host:~# ip netns add testns > # Create veth pair, veth0 in host, veth1 in NS > root@host:~# ip link add veth0 type veth peer name veth1 > root@host:~# ip link set veth

Re: PMTUD broken inside network namespace with multipath routing

2020-08-12 Thread mastertheknife
Hello David, I tried and it seems i can reproduce it: # Create test NS root@host:~# ip netns add testns # Create veth pair, veth0 in host, veth1 in NS root@host:~# ip link add veth0 type veth peer name veth1 root@host:~# ip link set veth1 netns testns # Configure veth1 (NS) root@host:~# ip netns

Re: PMTUD broken inside network namespace with multipath routing

2020-08-10 Thread David Ahern
On 8/3/20 12:39 PM, mastertheknife wrote: > In summary: It seems that it doesn't matter who is the nexthop. If the > ICMP response isn't from the nexthop, it'll be rejected. > About why i couldn't reproduce this outside LXC, i don't know yet but > i will keep trying to figure this out. do you have

Re: PMTUD broken inside network namespace with multipath routing

2020-08-03 Thread mastertheknife
Hi David, I found something that can shed some light on the issue. The issue only happens if the ICMP response doesn't come from the first nexthop. In my case, both nexthops are linux routers, and they are the ones generating the ICMP (because of IPSEC next). This is what I meant earlier, that the

Re: PMTUD broken inside network namespace with multipath routing

2020-08-03 Thread David Ahern
On 8/3/20 8:24 AM, mastertheknife wrote: > Hi David, > > In this case, both paths are in the same layer2 network, there is no > symmetric multi-path routing. > If original message takes path 1, ICMP response will come from path 1 > If original message takes path 2, ICMP response will come from pat

Re: PMTUD broken inside network namespace with multipath routing

2020-08-03 Thread mastertheknife
Hi David, In this case, both paths are in the same layer2 network, there is no symmetric multi-path routing. If original message takes path 1, ICMP response will come from path 1 If original message takes path 2, ICMP response will come from path 2 Also, It works fine outside of LXC. Thank you,

Re: PMTUD broken inside network namespace with multipath routing

2020-08-03 Thread David Ahern
On 8/3/20 5:14 AM, mastertheknife wrote: > What seems to be happening, is that when multipath routing is used > inside LXC (or any network namespace), the kernel doesn't generate a > routing exception to force the lower MTU. > I believe this is a bug inside the kernel. > Known problem. Original m

PMTUD broken inside network namespace with multipath routing

2020-08-03 Thread mastertheknife
Hi, I have observed that PMTUD (Path MTU discovery) is broken using multipath routing inside a network namespace. This breaks TCP, because it keeps trying to send oversized packets. Observed on kernel 5.4.44, other kernels weren't tested. However i went through net/ipv4/route.c and haven't spotted