On Sat, Aug 15, 2026 at 9:04 AM Jiayuan Chen <[email protected]> wrote: > > The MSS a host puts in its SYN tells the peer how big a segment it may > send us. Right now we can shrink it with a PMTU we learned on our own > send path, which is the wrong direction entirely. > > On asymmetric paths this bites - think DSR load balancers, where the > request side goes through a smaller-MTU overlay. We learn a small PMTU > going out, then advertise a small MSS, and the peer stays capped for the > whole connection even though its path back to us is wide. MSS only shows > up in the SYN and never grows back. > > On symmetric paths we lose nothing by dropping it either: the peer runs > its own PMTU discovery and usually already knows the real path MTU. > > So work out the advertised MSS from the configured route or device MTU > and ignore the learned PMTU. Our send side is unchanged, still clamped by > tcp_current_mss(). Add ip_dst_mtu_configured()/ip6_dst_mtu_configured() > and use them from the two default_advmss() paths. > > Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") > Fixes: 164a5e7ad531 ("ipv4: ipv4_default_advmss() should use route mtu") > Cc: [email protected] > Signed-off-by: Jiayuan Chen <[email protected]>
Reviewed-by: Eric Dumazet <[email protected]>

