On Wed, 13 May 2026 13:40:48 -0700 Neil Spring wrote: > Add ecmp_rehash.sh with nine scenarios verifying that TCP rehash > selects a different local ECMP path for IPv6: > > - SYN retransmission (forward path blocked during setup) > - SYN/ACK retransmission (reverse path blocked during setup) > - Midstream RTO (forward path blocked on established connection) > - Midstream ACK rehash (reverse path blocked on established connection) > - PLB rehash (ECN-driven congestion on established connection) > - Hash policy 1 negative test (rehash attempted but path unchanged) > - No flowlabel leak (mp_hash does not alter on-wire flowlabel) > - Dst rebuild consistency (route replace does not change path) > - Dst rebuild consistency with syncookies (same via cookie_v6_check) > > The policy 1 test verifies that fib_multipath_hash_policy=1 computes > a deterministic 5-tuple hash, so txhash re-rolls do not change the > ECMP path while TcpTimeoutRehash still increments. > > The flowlabel leak test sets auto_flowlabels=0 and installs tc > filters that drop TCP packets with nonzero flowlabel, confirming > that fl6->mp_hash does not leak into the on-wire IPv6 flow label. > > The dst rebuild tests stream data, replace the ECMP route with > identical nexthops (invalidating the cached dst), and verify that > traffic stays on the same path. This confirms that the initial > route lookup in tcp_v6_connect() and cookie_v6_check() uses the > same hash as subsequent rebuilds via inet6_csk_route_socket(). > Set ECMP_REBUILD_ROUNDS=N for statistical confidence.
Hi Neil! The test appears to be too flaky: https://netdev.bots.linux.dev/contest.html?test=ecmp-rehash-sh -- pw-bot: cr
