DualPI2, Accurate ECN, TCP Prague patch series
From: | chia-yu.chang-AT-nokia-bell-labs.com | |
To: | netdev-AT-vger.kernel.org, ij-AT-kernel.org, ncardwell-AT-google.com, koen.de_schepper-AT-nokia-bell-labs.com, g.white-AT-CableLabs.com, ingemar.s.johansson-AT-ericsson.com, mirja.kuehlewind-AT-ericsson.com, cheshire-AT-apple.com, rs.ietf-AT-gmx.at, Jason_Livingood-AT-comcast.com, vidhi_goel-AT-apple.com | |
Subject: | [PATCH net-next 00/44] DualPI2, Accurate ECN, TCP Prague patch series | |
Date: | Tue, 15 Oct 2024 12:28:56 +0200 | |
Message-ID: | <20241015102940.26157-1-chia-yu.chang@nokia-bell-labs.com> | |
Cc: | Chia-Yu Chang <chia-yu.chang-AT-nokia-bell-labs.com> | |
Archive-link: | Article |
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-acc...) * 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 -- 2.34.1