mbox series

[v5,mptcp-next,0/5] MP_FAIL support

Message ID cover.1627281326.git.geliangtang@xiaomi.com (mailing list archive)
Headers show
Series MP_FAIL support | expand

Message

Geliang Tang July 26, 2021, 6:45 a.m. UTC
From: Geliang Tang <geliangtang@xiaomi.com>

v5:
 - patch 1, change "ret = true;" to "return true;"
 - patch 3, in the single-subflow case, send MP_FAIL and receive the
   echo, then temporarily handled by reset.

v4:
 - just deal with the multiple subflows case, put the single subflow
   case into the new 'infinite mapping' part.

v3:
 - respond with MP_FAIL
 - add single subflow check
 - add infinite mapping sending and receiving
 - export/20210626T054902

v2:
 - MP_FAIL logic:
   * Peer B send a DSS to peer A, and the data has been modify by the
  middleboxes, then peer A detects the bad checksum.
   * In the multiple subflows case, peer A sends MP_FAIL+RST back to peer B,
  and peer A discards the data following the bad data sequence number. Peer
  B receives this MP_FAIL+RST, and close this subflow.
   * In the single subflow case, using the simple implementation, peer A
  sends MP_FAIL back to peer B, and peer A fallback to a regular TCP. Peer
  B receives this MP_FAIL, and fallback to a regular TCP.

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/52

Geliang Tang (5):
  mptcp: MP_FAIL suboption sending
  mptcp: MP_FAIL suboption receiving
  mptcp: send out MP_FAIL when data checksum fails
  mptcp: add the mibs for MP_FAIL
  selftests: mptcp: add MP_FAIL mibs check

 include/net/mptcp.h                           |  5 +-
 net/mptcp/mib.c                               |  2 +
 net/mptcp/mib.h                               |  2 +
 net/mptcp/options.c                           | 78 ++++++++++++++++++-
 net/mptcp/pm.c                                | 20 +++++
 net/mptcp/protocol.h                          | 20 +++++
 net/mptcp/subflow.c                           | 18 +++++
 .../testing/selftests/net/mptcp/mptcp_join.sh | 38 +++++++++
 8 files changed, 178 insertions(+), 5 deletions(-)

Comments

Mat Martineau July 28, 2021, 12:27 a.m. UTC | #1
On Mon, 26 Jul 2021, Geliang Tang wrote:

> From: Geliang Tang <geliangtang@xiaomi.com>
>
> v5:
> - patch 1, change "ret = true;" to "return true;"
> - patch 3, in the single-subflow case, send MP_FAIL and receive the
>   echo, then temporarily handled by reset.
>

Hi Geliang -

Thanks for the v5 changes. The changes are looking good in terms of manual 
code review. Since the selftest changes in patch 5 only confirm that 
MP_FAIL was not sent, I'm going to do some testing tomorrow to force 
checksum failures in single and multiple subflow cases so I can check some 
packet traces. It would be good to have some packetdrill checksum test 
cases to cover that, but we don't yet.


- Mat


> v4:
> - just deal with the multiple subflows case, put the single subflow
>   case into the new 'infinite mapping' part.
>
> v3:
> - respond with MP_FAIL
> - add single subflow check
> - add infinite mapping sending and receiving
> - export/20210626T054902
>
> v2:
> - MP_FAIL logic:
>   * Peer B send a DSS to peer A, and the data has been modify by the
>  middleboxes, then peer A detects the bad checksum.
>   * In the multiple subflows case, peer A sends MP_FAIL+RST back to peer B,
>  and peer A discards the data following the bad data sequence number. Peer
>  B receives this MP_FAIL+RST, and close this subflow.
>   * In the single subflow case, using the simple implementation, peer A
>  sends MP_FAIL back to peer B, and peer A fallback to a regular TCP. Peer
>  B receives this MP_FAIL, and fallback to a regular TCP.
>
> Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/52
>
> Geliang Tang (5):
>  mptcp: MP_FAIL suboption sending
>  mptcp: MP_FAIL suboption receiving
>  mptcp: send out MP_FAIL when data checksum fails
>  mptcp: add the mibs for MP_FAIL
>  selftests: mptcp: add MP_FAIL mibs check
>
> include/net/mptcp.h                           |  5 +-
> net/mptcp/mib.c                               |  2 +
> net/mptcp/mib.h                               |  2 +
> net/mptcp/options.c                           | 78 ++++++++++++++++++-
> net/mptcp/pm.c                                | 20 +++++
> net/mptcp/protocol.h                          | 20 +++++
> net/mptcp/subflow.c                           | 18 +++++
> .../testing/selftests/net/mptcp/mptcp_join.sh | 38 +++++++++
> 8 files changed, 178 insertions(+), 5 deletions(-)
>
> -- 
> 2.31.1
>
>
>

--
Mat Martineau
Intel
Geliang Tang July 28, 2021, 3:04 a.m. UTC | #2
Hi Mat,

Mat Martineau <mathew.j.martineau@linux.intel.com> 于2021年7月28日周三 上午8:27写道:
>
> On Mon, 26 Jul 2021, Geliang Tang wrote:
>
> > From: Geliang Tang <geliangtang@xiaomi.com>
> >
> > v5:
> > - patch 1, change "ret = true;" to "return true;"
> > - patch 3, in the single-subflow case, send MP_FAIL and receive the
> >   echo, then temporarily handled by reset.
> >
>
> Hi Geliang -
>
> Thanks for the v5 changes. The changes are looking good in terms of manual
> code review. Since the selftest changes in patch 5 only confirm that
> MP_FAIL was not sent, I'm going to do some testing tomorrow to force
> checksum failures in single and multiple subflow cases so I can check some
> packet traces. It would be good to have some packetdrill checksum test
> cases to cover that, but we don't yet.

I use a similar test for MP_FAIL to force checksum failures. I have put
it in the attachment.

Thanks,
-Geliang

>
>
> - Mat
>
>
> > v4:
> > - just deal with the multiple subflows case, put the single subflow
> >   case into the new 'infinite mapping' part.
> >
> > v3:
> > - respond with MP_FAIL
> > - add single subflow check
> > - add infinite mapping sending and receiving
> > - export/20210626T054902
> >
> > v2:
> > - MP_FAIL logic:
> >   * Peer B send a DSS to peer A, and the data has been modify by the
> >  middleboxes, then peer A detects the bad checksum.
> >   * In the multiple subflows case, peer A sends MP_FAIL+RST back to peer B,
> >  and peer A discards the data following the bad data sequence number. Peer
> >  B receives this MP_FAIL+RST, and close this subflow.
> >   * In the single subflow case, using the simple implementation, peer A
> >  sends MP_FAIL back to peer B, and peer A fallback to a regular TCP. Peer
> >  B receives this MP_FAIL, and fallback to a regular TCP.
> >
> > Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/52
> >
> > Geliang Tang (5):
> >  mptcp: MP_FAIL suboption sending
> >  mptcp: MP_FAIL suboption receiving
> >  mptcp: send out MP_FAIL when data checksum fails
> >  mptcp: add the mibs for MP_FAIL
> >  selftests: mptcp: add MP_FAIL mibs check
> >
> > include/net/mptcp.h                           |  5 +-
> > net/mptcp/mib.c                               |  2 +
> > net/mptcp/mib.h                               |  2 +
> > net/mptcp/options.c                           | 78 ++++++++++++++++++-
> > net/mptcp/pm.c                                | 20 +++++
> > net/mptcp/protocol.h                          | 20 +++++
> > net/mptcp/subflow.c                           | 18 +++++
> > .../testing/selftests/net/mptcp/mptcp_join.sh | 38 +++++++++
> > 8 files changed, 178 insertions(+), 5 deletions(-)
> >
> > --
> > 2.31.1
> >
> >
> >
>
> --
> Mat Martineau
> Intel