[PATCH mptcp-net 0/6] mptcp: fix inconsistent backup usage

Matthieu Baerts (NGI0) posted 6 patches 3 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/20240711-mptcp-backup-mpj-v1-0-d45506182a9e@kernel.org
There is a newer version of this series
include/trace/events/mptcp.h                        |  2 +-
net/mptcp/options.c                                 |  2 +-
net/mptcp/pm.c                                      |  9 ++++++---
net/mptcp/pm_netlink.c                              |  5 +++--
net/mptcp/pm_userspace.c                            |  6 ++++--
net/mptcp/protocol.c                                | 10 ++++++----
net/mptcp/protocol.h                                | 10 +++++++---
net/mptcp/subflow.c                                 |  8 ++++++--
tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c  |  3 ++-
tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c | 12 ++++++++----
tools/testing/selftests/net/mptcp/mptcp_join.sh     | 19 ++++++++++++++++---
11 files changed, 60 insertions(+), 26 deletions(-)
[PATCH mptcp-net 0/6] mptcp: fix inconsistent backup usage
Posted by Matthieu Baerts (NGI0) 3 months, 3 weeks ago
In all the backup tests we have, the backup flag is set on one side, and
the expected behaviour is to have both sides respecting this decision.

On the scheduler side, only the 'backup' field is checked, which is
supposed to be set only if the other peer flagged a subflow as backup.
But in various places, this flag is set when the local host flagged the
subflow as backup.

One last thing that has been fixed is the backup flag in 'signal'
endpoints: it was working only when setting the backup flag while the
connection was already opened. That's what the MPJ selftests were doing
to check that the signal endpoint were supporting the backup flag (on
purpose I guess, because the support was broken in MP_JOIN...).

The last two patches adapt the BPF selftests to mimic what is now done
by the in-kernel packets scheduler.

Note that the Packetdrill tests need to be updated because the behaviour
has been changed / fixed:

  https://github.com/multipath-tcp/packetdrill/pull/152

Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
Matthieu Baerts (NGI0) (6):
      mptcp: sched: check both directions for backup
      mptcp: distinguish rcv vs sent backup flag in requests
      mptcp: pm: only set request_bkup flag when sending MP_PRIO
      mptcp: pm: fix backup support in signal endpoints
      Squash to "selftests/bpf: Add bpf_bkup scheduler & test"
      Squash to "selftests/bpf: Add bpf_burst scheduler & test"

 include/trace/events/mptcp.h                        |  2 +-
 net/mptcp/options.c                                 |  2 +-
 net/mptcp/pm.c                                      |  9 ++++++---
 net/mptcp/pm_netlink.c                              |  5 +++--
 net/mptcp/pm_userspace.c                            |  6 ++++--
 net/mptcp/protocol.c                                | 10 ++++++----
 net/mptcp/protocol.h                                | 10 +++++++---
 net/mptcp/subflow.c                                 |  8 ++++++--
 tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c  |  3 ++-
 tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c | 12 ++++++++----
 tools/testing/selftests/net/mptcp/mptcp_join.sh     | 19 ++++++++++++++++---
 11 files changed, 60 insertions(+), 26 deletions(-)
---
base-commit: 3b378b48c0eb39df55dacebebb958187fd68d802
change-id: 20240711-mptcp-backup-mpj-2f8369fad366

Best regards,
-- 
Matthieu Baerts (NGI0) <matttbe@kernel.org>
Re: [PATCH mptcp-net 0/6] mptcp: fix inconsistent backup usage
Posted by MPTCP CI 3 months, 3 weeks ago
Hi Matthieu,

Thank you for your modifications, that's great!

Our CI did some validations and here is its report:

- KVM Validation: normal: Unstable: 4 failed test(s): packetdrill_mp_join packetdrill_mp_prio packetdrill_regressions packetdrill_syscalls 🔴
- KVM Validation: debug: Unstable: 4 failed test(s): packetdrill_mp_join packetdrill_mp_prio packetdrill_regressions packetdrill_syscalls 🔴
- KVM Validation: btf (only bpftest_all): Success! ✅
- Task: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/9894657332

Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/76eafcd3c762
Patchwork: https://patchwork.kernel.org/project/mptcp/list/?series=870531


If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:

    $ cd [kernel source code]
    $ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
        --pull always mptcp/mptcp-upstream-virtme-docker:latest \
        auto-normal

For more details:

    https://github.com/multipath-tcp/mptcp-upstream-virtme-docker


Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
Re: [PATCH mptcp-net 0/6] mptcp: fix inconsistent backup usage
Posted by Matthieu Baerts 3 months, 3 weeks ago
Hello,

On 11/07/2024 18:32, MPTCP CI wrote:
> Hi Matthieu,
> 
> Thank you for your modifications, that's great!
> 
> Our CI did some validations and here is its report:
> 
> - KVM Validation: normal: Unstable: 4 failed test(s): packetdrill_mp_join packetdrill_mp_prio packetdrill_regressions packetdrill_syscalls 🔴
> - KVM Validation: debug: Unstable: 4 failed test(s): packetdrill_mp_join packetdrill_mp_prio packetdrill_regressions packetdrill_syscalls 🔴

Just to avoid some confusions, and as mentioned in my cover-letter,
these errors were expected because these tests were looking for the
backup flags in the MPJ+SYN+ACK which were not supposed to be there:

  https://github.com/multipath-tcp/packetdrill/pull/152

Cheers,
Matt
-- 
Sponsored by the NGI0 Core fund.