mbox series

[mptcp-next,v9,0/6] mptcp: fixes and enhancements related to path management

Message ID 20220329021401.1196466-1-kishen.maloor@intel.com (mailing list archive)
Headers show
Series mptcp: fixes and enhancements related to path management | expand

Message

Kishen Maloor March 29, 2022, 2:13 a.m. UTC
This patch series incorporates fixes and enhancements related to
path management over MPTCP connections, particularly in support of
userspace PMs. The changes ensure that the required bits of
information are conveyed through MPTCP netlink events which
would be consumed by the path manager in making its decisions.
Further it adds flexibility in establishing paths and from
both ends of MPTCP connections.

v6:
-Dropped framework and functionality around the use of kernel
listening sockets for receiving MPJs.

v7:
-Fixed bug caught by the CI build.

v8:
-Fixed logic to achieve the desired outcome of not responding to
address advertisements when a userspace PM is offline.
-Factored out minor changes to mptcp_pm_is_userspace() to be
squashed into an earlier commit.

v9:
-Removed an explicit 'struct inet_sock *' cast in a patch which was
not necessary.

Kishen Maloor (6):
  Squash-to: mptcp: Bypass kernel PM when userspace PM is enabled
  mptcp: bypass in-kernel PM restrictions for non-kernel PMs
  mptcp: store remote id from MP_JOIN SYN/ACK in local ctx
  mptcp: reflect remote port (not 0) in ANNOUNCED events
  mptcp: establish subflows from either end of connection
  mptcp: expose server_side attribute in MPTCP netlink events

 include/uapi/linux/mptcp.h |  1 +
 net/mptcp/options.c        |  4 ++--
 net/mptcp/pm.c             | 21 +++++++++++++++++----
 net/mptcp/pm_netlink.c     | 24 +++++++++++++++++++++---
 net/mptcp/protocol.c       |  5 +----
 net/mptcp/protocol.h       | 22 ++++++++++++++++------
 net/mptcp/subflow.c        |  5 ++++-
 7 files changed, 62 insertions(+), 20 deletions(-)


base-commit: 8e1fca01ac83e646133bd647abdae74d6d6449ba
--
2.31.1

Comments

Paolo Abeni April 1, 2022, 9:42 a.m. UTC | #1
On Mon, 2022-03-28 at 22:13 -0400, Kishen Maloor wrote:
> This patch series incorporates fixes and enhancements related to
> path management over MPTCP connections, particularly in support of
> userspace PMs. The changes ensure that the required bits of
> information are conveyed through MPTCP netlink events which
> would be consumed by the path manager in making its decisions.
> Further it adds flexibility in establishing paths and from
> both ends of MPTCP connections.
> 
> v6:
> -Dropped framework and functionality around the use of kernel
> listening sockets for receiving MPJs.
> 
> v7:
> -Fixed bug caught by the CI build.
> 
> v8:
> -Fixed logic to achieve the desired outcome of not responding to
> address advertisements when a userspace PM is offline.
> -Factored out minor changes to mptcp_pm_is_userspace() to be
> squashed into an earlier commit.
> 
> v9:
> -Removed an explicit 'struct inet_sock *' cast in a patch which was
> not necessary.
> 
> Kishen Maloor (6):
>   Squash-to: mptcp: Bypass kernel PM when userspace PM is enabled
>   mptcp: bypass in-kernel PM restrictions for non-kernel PMs
>   mptcp: store remote id from MP_JOIN SYN/ACK in local ctx
>   mptcp: reflect remote port (not 0) in ANNOUNCED events
>   mptcp: establish subflows from either end of connection
>   mptcp: expose server_side attribute in MPTCP netlink events
> 
>  include/uapi/linux/mptcp.h |  1 +
>  net/mptcp/options.c        |  4 ++--
>  net/mptcp/pm.c             | 21 +++++++++++++++++----
>  net/mptcp/pm_netlink.c     | 24 +++++++++++++++++++++---
>  net/mptcp/protocol.c       |  5 +----
>  net/mptcp/protocol.h       | 22 ++++++++++++++++------
>  net/mptcp/subflow.c        |  5 ++++-
>  7 files changed, 62 insertions(+), 20 deletions(-)
> 
> 
> base-commit: 8e1fca01ac83e646133bd647abdae74d6d6449ba
> --
> 2.31.1
> 
This series LGTM, thanks!

There is a consistent self-test failure on test:

098 userspace pm type echoes add_addr. 

I *think* it can be addressed even after merging this series. @Kishen,
could you please have a look at that?

Paolo
Mat Martineau April 1, 2022, 9:48 p.m. UTC | #2
On Mon, 28 Mar 2022, Kishen Maloor wrote:

> This patch series incorporates fixes and enhancements related to
> path management over MPTCP connections, particularly in support of
> userspace PMs. The changes ensure that the required bits of
> information are conveyed through MPTCP netlink events which
> would be consumed by the path manager in making its decisions.
> Further it adds flexibility in establishing paths and from
> both ends of MPTCP connections.
>
> v6:
> -Dropped framework and functionality around the use of kernel
> listening sockets for receiving MPJs.
>

Thanks Kishen. This first series looks good to me, and Paolo acked too. 
The second series needs a rebase and a few more tweaks.


For this series:

Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>


Matthieu, I sent two additional selftest-only patches so that the behavior 
implemented in this series (which is correct: don't send ADD_ADDR echoes 
if there's no userspace daemon) is correctly tested. They're pretty short 
and simple, hopefully you can review and apply with Kishen's series. As I 
mentioned in 
https://lore.kernel.org/mptcp/20220401193714.10268-1-mathew.j.martineau@linux.intel.com/ 
:

   If you could add the squash-to patch at the beginning of [the] series to
   revert the bad test, and add the new self test commit after "mptcp:
   bypass in-kernel PM restrictions for non-kernel PMs" I think that
   addresses the test problem.


Mat

> v7:
> -Fixed bug caught by the CI build.
>
> v8:
> -Fixed logic to achieve the desired outcome of not responding to
> address advertisements when a userspace PM is offline.
> -Factored out minor changes to mptcp_pm_is_userspace() to be
> squashed into an earlier commit.
>
> v9:
> -Removed an explicit 'struct inet_sock *' cast in a patch which was
> not necessary.
>
> Kishen Maloor (6):
>  Squash-to: mptcp: Bypass kernel PM when userspace PM is enabled
>  mptcp: bypass in-kernel PM restrictions for non-kernel PMs
>  mptcp: store remote id from MP_JOIN SYN/ACK in local ctx
>  mptcp: reflect remote port (not 0) in ANNOUNCED events
>  mptcp: establish subflows from either end of connection
>  mptcp: expose server_side attribute in MPTCP netlink events
>
> include/uapi/linux/mptcp.h |  1 +
> net/mptcp/options.c        |  4 ++--
> net/mptcp/pm.c             | 21 +++++++++++++++++----
> net/mptcp/pm_netlink.c     | 24 +++++++++++++++++++++---
> net/mptcp/protocol.c       |  5 +----
> net/mptcp/protocol.h       | 22 ++++++++++++++++------
> net/mptcp/subflow.c        |  5 ++++-
> 7 files changed, 62 insertions(+), 20 deletions(-)
>
>
> base-commit: 8e1fca01ac83e646133bd647abdae74d6d6449ba
> --
> 2.31.1
>
>

--
Mat Martineau
Intel
Matthieu Baerts April 2, 2022, 11:01 a.m. UTC | #3
Hi Kishen, Paolo, Mat,

On 29/03/2022 04:13, Kishen Maloor wrote:
> This patch series incorporates fixes and enhancements related to
> path management over MPTCP connections, particularly in support of
> userspace PMs. The changes ensure that the required bits of
> information are conveyed through MPTCP netlink events which
> would be consumed by the path manager in making its decisions.
> Further it adds flexibility in establishing paths and from
> both ends of MPTCP connections.

Thank you for the patches and the reviews!

Now in our tree (feat. for net-next next) with Paolo's ACK and Mat's RvB
tags + my RvB tag on Mat's patch:

New patches for t/upstream:
- 427906c8a699: "squashed" patch 1/6 in "mptcp: Bypass kernel PM when
userspace PM is enabled"
- 6640ff7f4de5: "Signed-off-by" + "Co-developed-by"
- Results: 463bac3cb3eb..6ecd31441499 (export)

- ab5c3fe24c5d: "squashed" patch 1/2 in "selftests: mptcp: Add tests for
userspace PM type"
- Results: 6ecd31441499..bdcfe21e5935 (export)

- 3fd4c2a2d672: mptcp: bypass in-kernel PM restrictions for non-kernel PMs
- 564dcdfa9e21: selftests: mptcp: ADD_ADDR echo test with missing
userspace daemon
- f9900267d0b8: mptcp: store remote id from MP_JOIN SYN/ACK in local ctx
- fc1a120f5a70: mptcp: reflect remote port (not 0) in ANNOUNCED events
- 12d4f5bc7b1c: mptcp: establish subflows from either end of connection
- 653a3596c18f: mptcp: expose server_side attribute in MPTCP netlink events
- Results: bdcfe21e5935..580d91d8ba51 (export)

Builds and tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20220402T105856
https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export

Cheers,
Matt