mbox series

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

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

Message

Geliang Tang July 28, 2021, 9:35 a.m. UTC
From: Geliang Tang <geliangtang@xiaomi.com>

v6: only rebased patch 1
 - move the struct member 'fail_seq' behind 'ext_copy'.
 - define OPTION_MPTCP_FAIL to BIT(12), BIT(11) is used by DSS
 - move the MP_FAIL writing code at the beginning of mptcp_write_options,
   and add the 'unlikely' tag.
 - tag: export/20210728T080904

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

Paolo Abeni July 28, 2021, 10:37 a.m. UTC | #1
On Wed, 2021-07-28 at 17:35 +0800, Geliang Tang wrote:
> From: Geliang Tang <geliangtang@xiaomi.com>
> 
> v6: only rebased patch 1
>  - move the struct member 'fail_seq' behind 'ext_copy'.
>  - define OPTION_MPTCP_FAIL to BIT(12), BIT(11) is used by DSS
>  - move the MP_FAIL writing code at the beginning of mptcp_write_options,
>    and add the 'unlikely' tag.
>  - tag: export/20210728T080904
> 
> 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(-)

I had a couple of minor comments, but they could be addressed with
squash-to or even completely unrelated changes.

Overall LGTM, thanks!

/P