From: Mat Martineau <mathew.j.martineau@linux.intel.com>
To: Matthieu Baerts <matthieu.baerts@tessares.net>
Cc: mptcp@lists.linux.dev, Paolo Abeni <pabeni@redhat.com>
Subject: Re: [PATCH mptcp-next] mptcp: full fully established support after ADD_ADDR
Date: Thu, 12 Aug 2021 15:30:53 -0700 (PDT) [thread overview]
Message-ID: <cb97b91e-99d-d7b-4338-a83ddba4e83b@linux.intel.com> (raw)
In-Reply-To: <20210812162757.282366-1-matthieu.baerts@tessares.net>
On Thu, 12 Aug 2021, Matthieu Baerts wrote:
> If directly after an MP_CAPABLE 3WHS, the client receives a valid
> ADD_ADDR from the server, it is enough to prove exchanged MPTCP options
> are valid. Indeed, the ADD_ADDR contains an HMAC generated using both
> the client and server keys.
The ADD_ADDR HMAC is validated after the call to
check_fully_established(), so I'm not sure this condition is fully met
with the patch as-is. Looks like an ADD_ADDR with a bad HMAC could change
the fully_established flag when it shouldn't.
Mat
>
> It was then OK to enable the fully_established flag on the MPTCP socket.
>
> But that is not enough. On one hand, the path-manager has be notified
> the state has changed. On the other hand, the fully_established flag on
> the subflow socket should be turned on as well, not to re-send the
> MP_CAPABLE 3rd ACK content with the next ACK.
>
> Fixes: 84dfe3677a6f ("mptcp: send out dedicated ADD_ADDR packet")
> Suggested-by: Paolo Abeni <pabeni@redhat.com>
> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
> ---
>
> Notes:
> Once applied, we can close issue 221. But this patch alone is not enough
> to fix issue 221, hence no "Closes" tag.
>
> Because the PM was not notified, I think it is best to send it to -net.
> Before, I think we were overriding MPC ACK options when sending the echo
> ADD_ADDR so the issue was not visible.
>
> Here it is visible (and this is covered by out tests) since the
> introduction of commit 32c3e4d50806 ("Squash-to: "mptcp: move
> drop_other_suboptions check under pm lock"")
>
> With this patch, the packetdrill tests are all OK!
> (And the other selftests as well even if I still have other issues with
> mptcp_join.sh but it doesn't seem related.)
>
> net/mptcp/options.c | 9 ++-------
> 1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/net/mptcp/options.c b/net/mptcp/options.c
> index d94ff50c29b3..175563c95c0b 100644
> --- a/net/mptcp/options.c
> +++ b/net/mptcp/options.c
> @@ -945,20 +945,15 @@ static bool check_fully_established(struct mptcp_sock *msk, struct sock *ssk,
> return subflow->mp_capable;
> }
>
> - if (mp_opt->dss && mp_opt->use_ack) {
> + if ((mp_opt->dss && mp_opt->use_ack) || mp_opt->add_addr) {
> /* subflows are fully established as soon as we get any
> - * additional ack.
> + * additional ack, including ADD_ADDR.
> */
> subflow->fully_established = 1;
> WRITE_ONCE(msk->fully_established, true);
> goto fully_established;
> }
>
> - if (mp_opt->add_addr) {
> - WRITE_ONCE(msk->fully_established, true);
> - return true;
> - }
> -
> /* If the first established packet does not contain MP_CAPABLE + data
> * then fallback to TCP. Fallback scenarios requires a reset for
> * MP_JOIN subflows.
> --
> 2.32.0
>
>
>
--
Mat Martineau
Intel
next prev parent reply other threads:[~2021-08-12 22:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-12 16:27 [PATCH mptcp-next] mptcp: full fully established support after ADD_ADDR Matthieu Baerts
2021-08-12 16:33 ` Paolo Abeni
2021-08-12 22:30 ` Mat Martineau [this message]
2021-08-13 11:06 ` Matthieu Baerts
2021-08-13 14:14 ` Paolo Abeni
2021-08-14 0:37 ` Mat Martineau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cb97b91e-99d-d7b-4338-a83ddba4e83b@linux.intel.com \
--to=mathew.j.martineau@linux.intel.com \
--cc=matthieu.baerts@tessares.net \
--cc=mptcp@lists.linux.dev \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox