Re: [PATCH export v3 2/4] mptcp: reject joins after fallback in mptcp_is_fully_established

Matthieu Baerts <[email protected]>
Newsgroups dev.linux.lists.mptcp
Organization NGI0 Core
Message-ID <[email protected]>
Hi Gang,

On 13/08/2026 11:32, [email protected] wrote:
> August 12, 2026 at 11:32 PM, "Matthieu Baerts" <[email protected] mailto:[email protected]?to=%22Matthieu%20Baerts%22%20%3Cmatttbe%40kernel.org%3E > wrote:
> 
> 
>>
>> Note: Chenguang is looking at a bug where, when an MP_FAIL is received
>> before being in fully_established, the kernel accept going to fully
>> established, and creating new subflows, then reject them once done.
>>
>> Same when receiving a 4th packet without MPTCP options.
>>
>> I think the MP_FAIL should do a fallback if possible, but it is probably
>> also required to check the fallback status or something similar when
>> receiving an MPJ.
> 
> Hi, Matt
> 
> Sorry, I'm not very familiar with the details of this patch.
> 
> No offense intended, I just have a question I'd like to ask based on my
> understanding and the RFC documentation: Should MP_FAIL trigger a fallback?
> 
> For the multiple‑subflow case, if one subflow encounters an MP_FAIL, it should
> be closed with a RST, and the data will be retransmitted over the other healthy
> subflows. This should not cause the entire MPTCP connection to fallback to regular
> TCP, right?
> RFC8684's contents:
> '''
> The receiver of this option MUST discard all data following the data sequence number
> specified. Failed data MUST NOT be DATA_ACKed and so will be retransmitted on other subflows.
> '''

Correct, in this case it shouldn't fallback.

> For the single‑subflow case, according to the RFC, MP_FAIL should subsequently
> lead to a fallback under the infinite mapping (INFINITEMAP) situation, shouldn't it?
> RFC 8684's contents:
> '''
> A special case is when there is a single subflow and it fails with a checksum error.
> If it is known that all unacknowledged data in flight is contiguous (which will usually
> be the case with a single subflow), an infinite mapping can be applied to the subflow
> without the need to close it first, essentially turning off all further MPTCP signaling.
> '''

Correct.

Please note that when I said "the MP_FAIL should [cause] a fallback if
possible", I'm referring to what is done in mptcp_try_fallback() → a
fallback is only possible in the single subflow situation, without
reordering at the MPTCP level.

In addition, in the case we are trying to fix here, the MP_FAIL is
received before switching to fully established: the RFC doesn't explain
this particular case, but it sounds like there is no need to send the
infinite mapping, and a fallback can be done directly *I think*. The
thing is this situation shouldn't happen: we are not supposed to receive
an MP_FAIL at that stage, no data has been exchanged at the MPTCP level,
so let's do the minimal -- i.e. just a fallback -- to avoid issues and
reduce the complexity, no?

Cheers,
Matt
-- 
Sponsored by the NGI0 Core fund.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.