mbox series

[net-next,00/44] DualPI2, Accurate ECN, TCP Prague patch series

Message ID 20241015102940.26157-1-chia-yu.chang@nokia-bell-labs.com (mailing list archive)
Headers show
Series DualPI2, Accurate ECN, TCP Prague patch series | expand

Message

Chia-Yu Chang (Nokia) Oct. 15, 2024, 10:28 a.m. UTC
From: Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>

Hello,

Please find the enclosed patch series covering the L4S (Low Latency,
Low Loss, and Scalable Throughput) as outlined in IETF RFC9330:
https://datatracker.ietf.org/doc/html/rfc9330

* 1 patch for DualPI2 (cf. IETF RFC9332
  https://datatracker.ietf.org/doc/html/rfc9332)
* 40 pataches for Accurate ECN (It implements the AccECN protocol
  in terms of negotiation, feedback, and compliance requirements:
  https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn-28)
* 3 patches for TCP Prague (It implements the performance and safety
  requirements listed in Appendix A of IETF RFC9331:
  https://datatracker.ietf.org/doc/html/rfc9331)

Best regagrds,
Chia-Yu

Chia-Yu Chang (17):
  tcp: use BIT() macro in include/net/tcp.h
  net: sysctl: introduce sysctl SYSCTL_FIVE
  tcp: accecn: AccECN option failure handling
  tcp: L4S ECT(1) identifier for CC modules
  tcp: disable RFC3168 fallback identifier for CC modules
  tcp: accecn: handle unexpected AccECN negotiation feedback
  tcp: accecn: retransmit downgraded SYN in AccECN negotiation
  tcp: move increment of num_retrans
  tcp: accecn: retransmit SYN/ACK without AccECN option or non-AccECN
    SYN/ACK
  tcp: accecn: unset ECT if receive or send ACE=0 in AccECN negotiaion
  tcp: accecn: fallback outgoing half link to non-AccECN
  tcp: accecn: verify ACE counter in 1st ACK after AccECN negotiation
  tcp: accecn: stop sending AccECN option when loss ACK with AccECN
    option
  Documentation: networking: Update ECN related sysctls
  tcp: Add tso_segs() CC callback for TCP Prague
  tcp: Add mss_cache_set_by_ca for CC algorithm to set MSS
  tcp: Add the TCP Prague congestion control module

Ilpo Järvinen (26):
  tcp: reorganize tcp_in_ack_event() and tcp_count_delivered()
  tcp: create FLAG_TS_PROGRESS
  tcp: extend TCP flags to allow AE bit/ACE field
  tcp: reorganize SYN ECN code
  tcp: rework {__,}tcp_ecn_check_ce() -> tcp_data_ecn_check()
  tcp: helpers for ECN mode handling
  gso: AccECN support
  gro: prevent ACE field corruption & better AccECN handling
  tcp: AccECN support to tcp_add_backlog
  tcp: allow ECN bits in TOS/traffic class
  tcp: Pass flags to __tcp_send_ack
  tcp: fast path functions later
  tcp: AccECN core
  tcp: accecn: AccECN negotiation
  tcp: accecn: add AccECN rx byte counters
  tcp: allow embedding leftover into option padding
  tcp: accecn: AccECN needs to know delivered bytes
  tcp: sack option handling improvements
  tcp: accecn: AccECN option
  tcp: accecn: AccECN option send control
  tcp: accecn: AccECN option ceb/cep heuristic
  tcp: accecn: AccECN ACE field multi-wrap heuristic
  tcp: accecn: try to fit AccECN option with SACK
  tcp: try to avoid safer when ACKs are thinned
  gro: flushing when CWR is set negatively affects AccECN
  tcp: accecn: Add ece_delta to rate_sample

Koen De Schepper (1):
  sched: Add dualpi2 qdisc

 Documentation/networking/ip-sysctl.rst |   55 +-
 include/linux/netdev_features.h        |    5 +-
 include/linux/netdevice.h              |    2 +
 include/linux/skbuff.h                 |    2 +
 include/linux/sysctl.h                 |   17 +-
 include/linux/tcp.h                    |   31 +-
 include/net/inet_ecn.h                 |   20 +-
 include/net/netns/ipv4.h               |    2 +
 include/net/tcp.h                      |  299 +++++--
 include/uapi/linux/inet_diag.h         |   13 +
 include/uapi/linux/pkt_sched.h         |   34 +
 include/uapi/linux/tcp.h               |   16 +-
 kernel/sysctl.c                        |    2 +-
 net/ethtool/common.c                   |    1 +
 net/ipv4/Kconfig                       |   37 +
 net/ipv4/Makefile                      |    1 +
 net/ipv4/bpf_tcp_ca.c                  |    2 +-
 net/ipv4/inet_connection_sock.c        |    8 +-
 net/ipv4/ip_output.c                   |    3 +-
 net/ipv4/syncookies.c                  |    3 +
 net/ipv4/sysctl_net_ipv4.c             |   18 +
 net/ipv4/tcp.c                         |   26 +-
 net/ipv4/tcp_cong.c                    |    9 +-
 net/ipv4/tcp_dctcp.c                   |    2 +-
 net/ipv4/tcp_dctcp.h                   |    2 +-
 net/ipv4/tcp_input.c                   |  689 ++++++++++++++--
 net/ipv4/tcp_ipv4.c                    |   33 +-
 net/ipv4/tcp_minisocks.c               |  117 ++-
 net/ipv4/tcp_offload.c                 |   13 +-
 net/ipv4/tcp_output.c                  |  336 +++++++-
 net/ipv4/tcp_prague.c                  |  866 ++++++++++++++++++++
 net/ipv6/syncookies.c                  |    1 +
 net/ipv6/tcp_ipv6.c                    |   27 +-
 net/netfilter/nf_log_syslog.c          |    8 +-
 net/sched/Kconfig                      |   20 +
 net/sched/Makefile                     |    1 +
 net/sched/sch_dualpi2.c                | 1046 ++++++++++++++++++++++++
 37 files changed, 3519 insertions(+), 248 deletions(-)
 create mode 100644 net/ipv4/tcp_prague.c
 create mode 100644 net/sched/sch_dualpi2.c

Comments

Paolo Abeni Oct. 15, 2024, 10:51 a.m. UTC | #1
On 10/15/24 12:28, chia-yu.chang@nokia-bell-labs.com wrote:
> From: Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>
> 
> Hello,
> 
> Please find the enclosed patch series covering the L4S (Low Latency,
> Low Loss, and Scalable Throughput) as outlined in IETF RFC9330:
> https://datatracker.ietf.org/doc/html/rfc9330
> 
> * 1 patch for DualPI2 (cf. IETF RFC9332
>    https://datatracker.ietf.org/doc/html/rfc9332)
> * 40 pataches for Accurate ECN (It implements the AccECN protocol
>    in terms of negotiation, feedback, and compliance requirements:
>    https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn-28)
> * 3 patches for TCP Prague (It implements the performance and safety
>    requirements listed in Appendix A of IETF RFC9331:
>    https://datatracker.ietf.org/doc/html/rfc9331)
> 
> Best regagrds,
> Chia-Yu

I haven't looked into the series yet, and I doubt I'll be able to do 
that anytime soon, but you must have a good read of the netdev process 
before any other action, specifically:

https://elixir.bootlin.com/linux/v6.11.3/source/Documentation/process/maintainer-netdev.rst#L351

and

https://elixir.bootlin.com/linux/v6.11.3/source/Documentation/process/maintainer-netdev.rst#L15

Just to be clear: splitting the series into 3 and posting all of them 
together will not be good either.

Thanks,

Paolo
Koen De Schepper (Nokia) Oct. 15, 2024, 3:14 p.m. UTC | #2
We had several internal review rounds, that were specifically making sure it is in line with the processes/guidelines you are referring to.

DualPI2 and TCP-Prague are new modules mostly in a separate file. ACC_ECN unfortunately involves quite some changes in different files with different functionalities and were split into manageable smaller incremental chunks according to the guidelines, ending up in 40 patches. Good thing is that they are small and should be easily processable. It could be split in these 3 features, but would still involve all the ACC_ECN as preferably one patch set. On top of that the 3 TCP-Prague patches rely on the 40 ACC_ECN, so preferably we keep them together too...

The 3 functions are used and tested in many kernels. Initial development started from 3.16 to 4.x, 5.x and recently also in the 6.x kernels. So, the code should be pretty mature (at least from a functionality and stability point of view).

Koen.

-----Original Message-----
From: Paolo Abeni <pabeni@redhat.com>
Sent: Tuesday, October 15, 2024 12:51 PM
To: Chia-Yu Chang (Nokia) <chia-yu.chang@nokia-bell-labs.com>; netdev@vger.kernel.org; ij@kernel.org; ncardwell@google.com; Koen De Schepper (Nokia) <koen.de_schepper@nokia-bell-labs.com>; g.white@CableLabs.com; ingemar.s.johansson@ericsson.com; mirja.kuehlewind@ericsson.com; cheshire@apple.com; rs.ietf@gmx.at; Jason_Livingood@comcast.com; vidhi_goel@apple.com
Subject: Re: [PATCH net-next 00/44] DualPI2, Accurate ECN, TCP Prague patch series


CAUTION: This is an external email. Please be very careful when clicking links or opening attachments. See the URL nok.it/ext for additional information.



On 10/15/24 12:28, chia-yu.chang@nokia-bell-labs.com wrote:
> From: Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>
>
> Hello,
>
> Please find the enclosed patch series covering the L4S (Low Latency,
> Low Loss, and Scalable Throughput) as outlined in IETF RFC9330:
> https://datatracker.ietf.org/doc/html/rfc9330
>
> * 1 patch for DualPI2 (cf. IETF RFC9332
>    https://datatracker.ietf.org/doc/html/rfc9332)
> * 40 pataches for Accurate ECN (It implements the AccECN protocol
>    in terms of negotiation, feedback, and compliance requirements:
>
> https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn-28)
> * 3 patches for TCP Prague (It implements the performance and safety
>    requirements listed in Appendix A of IETF RFC9331:
>    https://datatracker.ietf.org/doc/html/rfc9331)
>
> Best regagrds,
> Chia-Yu

I haven't looked into the series yet, and I doubt I'll be able to do that anytime soon, but you must have a good read of the netdev process before any other action, specifically:

https://elixir.bootlin.com/linux/v6.11.3/source/Documentation/process/maintainer-netdev.rst#L351

and

https://elixir.bootlin.com/linux/v6.11.3/source/Documentation/process/maintainer-netdev.rst#L15

Just to be clear: splitting the series into 3 and posting all of them together will not be good either.

Thanks,

Paolo
Eric Dumazet Oct. 15, 2024, 5:52 p.m. UTC | #3
On 10/15/24 5:14 PM, Koen De Schepper (Nokia) wrote:
> We had several internal review rounds, that were specifically making sure it is in line with the processes/guidelines you are referring to.
>
> DualPI2 and TCP-Prague are new modules mostly in a separate file. ACC_ECN unfortunately involves quite some changes in different files with different functionalities and were split into manageable smaller incremental chunks according to the guidelines, ending up in 40 patches. Good thing is that they are small and should be easily processable. It could be split in these 3 features, but would still involve all the ACC_ECN as preferably one patch set. On top of that the 3 TCP-Prague patches rely on the 40 ACC_ECN, so preferably we keep them together too...
>
> The 3 functions are used and tested in many kernels. Initial development started from 3.16 to 4.x, 5.x and recently also in the 6.x kernels. So, the code should be pretty mature (at least from a functionality and stability point of view).


We want bisection to be able to work all the time. This is a must.

That means that you should be able to split a series in arbitrary chunks.

If you take the first 15 patches, and end up with a kernel that breaks, 
then something is wrong.

Make sure to CC edumazet@google.com next time.

Thank you.



> Koen.
>
> -----Original Message-----
> From: Paolo Abeni <pabeni@redhat.com>
> Sent: Tuesday, October 15, 2024 12:51 PM
> To: Chia-Yu Chang (Nokia) <chia-yu.chang@nokia-bell-labs.com>; netdev@vger.kernel.org; ij@kernel.org; ncardwell@google.com; Koen De Schepper (Nokia) <koen.de_schepper@nokia-bell-labs.com>; g.white@CableLabs.com; ingemar.s.johansson@ericsson.com; mirja.kuehlewind@ericsson.com; cheshire@apple.com; rs.ietf@gmx.at; Jason_Livingood@comcast.com; vidhi_goel@apple.com
> Subject: Re: [PATCH net-next 00/44] DualPI2, Accurate ECN, TCP Prague patch series
>
>
> CAUTION: This is an external email. Please be very careful when clicking links or opening attachments. See the URL nok.it/ext for additional information.
>
>
>
> On 10/15/24 12:28, chia-yu.chang@nokia-bell-labs.com wrote:
>> From: Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>
>>
>> Hello,
>>
>> Please find the enclosed patch series covering the L4S (Low Latency,
>> Low Loss, and Scalable Throughput) as outlined in IETF RFC9330:
>> https://datatracker.ietf.org/doc/html/rfc9330
>>
>> * 1 patch for DualPI2 (cf. IETF RFC9332
>>     https://datatracker.ietf.org/doc/html/rfc9332)
>> * 40 pataches for Accurate ECN (It implements the AccECN protocol
>>     in terms of negotiation, feedback, and compliance requirements:
>>
>> https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn-28)
>> * 3 patches for TCP Prague (It implements the performance and safety
>>     requirements listed in Appendix A of IETF RFC9331:
>>     https://datatracker.ietf.org/doc/html/rfc9331)
>>
>> Best regagrds,
>> Chia-Yu
> I haven't looked into the series yet, and I doubt I'll be able to do that anytime soon, but you must have a good read of the netdev process before any other action, specifically:
>
> https://elixir.bootlin.com/linux/v6.11.3/source/Documentation/process/maintainer-netdev.rst#L351
>
> and
>
> https://elixir.bootlin.com/linux/v6.11.3/source/Documentation/process/maintainer-netdev.rst#L15
>
> Just to be clear: splitting the series into 3 and posting all of them together will not be good either.
>
> Thanks,
>
> Paolo
>
>
Chia-Yu Chang (Nokia) Oct. 15, 2024, 7:30 p.m. UTC | #4
We will split into several chunks to follow this guideline and make sure Eric in CC'ed.
Thanks.

Chia-Yu

-----Original Message-----
From: Eric Dumazet <eric.dumazet@gmail.com> 
Sent: Tuesday, October 15, 2024 7:53 PM
To: Koen De Schepper (Nokia) <koen.de_schepper@nokia-bell-labs.com>; Paolo Abeni <pabeni@redhat.com>; Chia-Yu Chang (Nokia) <chia-yu.chang@nokia-bell-labs.com>; netdev@vger.kernel.org; ij@kernel.org; ncardwell@google.com; g.white@CableLabs.com; ingemar.s.johansson@ericsson.com; mirja.kuehlewind@ericsson.com; cheshire@apple.com; rs.ietf@gmx.at; Jason_Livingood@comcast.com; vidhi_goel@apple.com; edumazet@google.com
Subject: Re: [PATCH net-next 00/44] DualPI2, Accurate ECN, TCP Prague patch series


CAUTION: This is an external email. Please be very careful when clicking links or opening attachments. See the URL nok.it/ext for additional information.



On 10/15/24 5:14 PM, Koen De Schepper (Nokia) wrote:
> We had several internal review rounds, that were specifically making sure it is in line with the processes/guidelines you are referring to.
>
> DualPI2 and TCP-Prague are new modules mostly in a separate file. ACC_ECN unfortunately involves quite some changes in different files with different functionalities and were split into manageable smaller incremental chunks according to the guidelines, ending up in 40 patches. Good thing is that they are small and should be easily processable. It could be split in these 3 features, but would still involve all the ACC_ECN as preferably one patch set. On top of that the 3 TCP-Prague patches rely on the 40 ACC_ECN, so preferably we keep them together too...
>
> The 3 functions are used and tested in many kernels. Initial development started from 3.16 to 4.x, 5.x and recently also in the 6.x kernels. So, the code should be pretty mature (at least from a functionality and stability point of view).


We want bisection to be able to work all the time. This is a must.

That means that you should be able to split a series in arbitrary chunks.

If you take the first 15 patches, and end up with a kernel that breaks, then something is wrong.

Make sure to CC edumazet@google.com next time.

Thank you.



> Koen.
>
> -----Original Message-----
> From: Paolo Abeni <pabeni@redhat.com>
> Sent: Tuesday, October 15, 2024 12:51 PM
> To: Chia-Yu Chang (Nokia) <chia-yu.chang@nokia-bell-labs.com>; 
> netdev@vger.kernel.org; ij@kernel.org; ncardwell@google.com; Koen De 
> Schepper (Nokia) <koen.de_schepper@nokia-bell-labs.com>; 
> g.white@CableLabs.com; ingemar.s.johansson@ericsson.com; 
> mirja.kuehlewind@ericsson.com; cheshire@apple.com; rs.ietf@gmx.at; 
> Jason_Livingood@comcast.com; vidhi_goel@apple.com
> Subject: Re: [PATCH net-next 00/44] DualPI2, Accurate ECN, TCP Prague 
> patch series
>
>
> CAUTION: This is an external email. Please be very careful when clicking links or opening attachments. See the URL nok.it/ext for additional information.
>
>
>
> On 10/15/24 12:28, chia-yu.chang@nokia-bell-labs.com wrote:
>> From: Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>
>>
>> Hello,
>>
>> Please find the enclosed patch series covering the L4S (Low Latency, 
>> Low Loss, and Scalable Throughput) as outlined in IETF RFC9330:
>> https://datatracker.ietf.org/doc/html/rfc9330
>>
>> * 1 patch for DualPI2 (cf. IETF RFC9332
>>     https://datatracker.ietf.org/doc/html/rfc9332)
>> * 40 pataches for Accurate ECN (It implements the AccECN protocol
>>     in terms of negotiation, feedback, and compliance requirements:
>>
>> https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn-28
>> )
>> * 3 patches for TCP Prague (It implements the performance and safety
>>     requirements listed in Appendix A of IETF RFC9331:
>>     https://datatracker.ietf.org/doc/html/rfc9331)
>>
>> Best regagrds,
>> Chia-Yu
> I haven't looked into the series yet, and I doubt I'll be able to do that anytime soon, but you must have a good read of the netdev process before any other action, specifically:
>
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Felix
> ir.bootlin.com%2Flinux%2Fv6.11.3%2Fsource%2FDocumentation%2Fprocess%2F
> maintainer-netdev.rst%23L351&data=05%7C02%7Cchia-yu.chang%40nokia-bell
> -labs.com%7Cd3d50c18d3fd483af47908dced4228e5%7C5d4717519675428d917b70f
> 44f9630b0%7C0%7C0%7C638646115617608802%7CUnknown%7CTWFpbGZsb3d8eyJWIjo
> iMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%
> 7C&sdata=4ZRJsQYIsYDrKQV1olJEcrcY7uZ%2Bg7CPhR4lWWPDsL0%3D&reserved=0
>
> and
>
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Felix
> ir.bootlin.com%2Flinux%2Fv6.11.3%2Fsource%2FDocumentation%2Fprocess%2F
> maintainer-netdev.rst%23L15&data=05%7C02%7Cchia-yu.chang%40nokia-bell-
> labs.com%7Cd3d50c18d3fd483af47908dced4228e5%7C5d4717519675428d917b70f4
> 4f9630b0%7C0%7C0%7C638646115617637044%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> MC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7
> C&sdata=Yc3mqMnAOICPRzhPzRPbFmkOsuPReaBIgpZvtZaLPvc%3D&reserved=0
>
> Just to be clear: splitting the series into 3 and posting all of them together will not be good either.
>
> Thanks,
>
> Paolo
>
>