selftest: packetdrill: Import TFO server tests.
From: | Kuniyuki Iwashima <kuniyu-AT-google.com> | |
To: | "David S. Miller" <davem-AT-davemloft.net>, Eric Dumazet <edumazet-AT-google.com>, Jakub Kicinski <kuba-AT-kernel.org>, Paolo Abeni <pabeni-AT-redhat.com> | |
Subject: | [PATCH v1 net-next 00/12] selftest: packetdrill: Import TFO server tests. | |
Date: | Fri, 26 Sep 2025 21:28:54 +0000 | |
Message-ID: | <20250926212929.1469257-1-kuniyu@google.com> | |
Cc: | Simon Horman <horms-AT-kernel.org>, Kuniyuki Iwashima <kuniyu-AT-google.com>, Kuniyuki Iwashima <kuni1840-AT-gmail.com>, netdev-AT-vger.kernel.org | |
Archive-link: | Article |
The series imports 15 TFO server tests from google/packetdrill and adds 2 more tests. The repository has two versions of tests for most scenarios; one uses the non-experimental option (34), and the other uses the experimental option (255) with 0xF989. Basically, we only import the non-experimental version of tests, and for the experimental option, tcp_fastopen_server_experimental_option.pkt is added. The following tests are not (yet) imported: * icmp-baseline.pkt * simple1.pkt / simple2.pkt / simple3.pkt The former is completely covered by icmp-before-accept.pkt. The later's delta is the src/dst IP pair to generate a different cookie, but supporting dualstack requires churn in default.sh, so defered to future series. Also, sockopt-fastopen-key.pkt covers the same function. The following tests have the experimental version only, so converted to the non-experimental option: * client-ack-dropped-then-recovery-ms-timestamps.pkt * sockopt-fastopen-key.pkt For the imported tests, these common changes are applied. * Add SPDX header * Adjust path to default.sh * Adjust sysctl w/ set_sysctls.py * Use TFO_COOKIE instead of a raw hex value * Use SOCK_NONBLOCK for socket() not to block accept() * Add assertions for TCP state if commented * Remove unnecessary delay (e.g. +0.1 setsockopt(SO_REUSEADDR), etc) With this series, except for simple{1,2,3}.pkt, we can remove TFO server tests in google/packetdrill. Kuniyuki Iwashima (12): selftest: packetdrill: Require explicit setsockopt(TCP_FASTOPEN). selftest: packetdrill: Define common TCP Fast Open cookie. selftest: packetdrill: Import TFO server basic tests. selftest: packetdrill: Add test for TFO_SERVER_WO_SOCKOPT1. selftest: packetdrill: Add test for experimental option. selftest: packetdrill: Import opt34/fin-close-socket.pkt. selftest: packetdrill: Import opt34/icmp-before-accept.pkt. selftest: packetdrill: Import opt34/reset-* tests. selftest: packetdrill: Import opt34/*-trigger-rst.pkt. selftest: packetdrill: Refine tcp_fastopen_server_reset-after-disconnect.pkt. selftest: packetdrill: Import sockopt-fastopen-key.pkt selftest: packetdrill: Import client-ack-dropped-then-recovery-ms-timestamps.pkt .../selftests/net/packetdrill/defaults.sh | 3 +- .../selftests/net/packetdrill/ksft_runner.sh | 6 +- ..._fastopen_server_basic-cookie-not-reqd.pkt | 32 ++++++++ ...cp_fastopen_server_basic-no-setsockopt.pkt | 21 ++++++ ...fastopen_server_basic-non-tfo-listener.pkt | 26 +++++++ ...cp_fastopen_server_basic-pure-syn-data.pkt | 50 +++++++++++++ .../tcp_fastopen_server_basic-rw.pkt | 23 ++++++ ...tcp_fastopen_server_basic-zero-payload.pkt | 26 +++++++ ...ck-dropped-then-recovery-ms-timestamps.pkt | 46 ++++++++++++ ...cp_fastopen_server_experimental_option.pkt | 37 ++++++++++ .../tcp_fastopen_server_fin-close-socket.pkt | 30 ++++++++ ...tcp_fastopen_server_icmp-before-accept.pkt | 49 ++++++++++++ ...tcp_fastopen_server_reset-after-accept.pkt | 37 ++++++++++ ...cp_fastopen_server_reset-before-accept.pkt | 32 ++++++++ ...en_server_reset-close-with-unread-data.pkt | 32 ++++++++ ...p_fastopen_server_reset-non-tfo-socket.pkt | 37 ++++++++++ ...p_fastopen_server_sockopt-fastopen-key.pkt | 74 +++++++++++++++++++ ...pen_server_trigger-rst-listener-closed.pkt | 21 ++++++ ...fastopen_server_trigger-rst-reconnect.pkt} | 10 ++- ..._server_trigger-rst-unread-data-closed.pkt | 23 ++++++ 20 files changed, 610 insertions(+), 5 deletions(-) create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_basic-cookie-not-reqd.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_basic-no-setsockopt.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_basic-non-tfo-listener.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_basic-pure-syn-data.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_basic-rw.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_basic-zero-payload.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_client-ack-dropped-then-recovery-ms-timestamps.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_experimental_option.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_fin-close-socket.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_icmp-before-accept.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_reset-after-accept.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_reset-before-accept.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_reset-close-with-unread-data.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_reset-non-tfo-socket.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_sockopt-fastopen-key.pkt create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_trigger-rst-listener-closed.pkt rename tools/testing/selftests/net/packetdrill/{tcp_fastopen_server_reset-after-disconnect.pkt => tcp_fastopen_server_trigger-rst-reconnect.pkt} (66%) create mode 100644 tools/testing/selftests/net/packetdrill/tcp_fastopen_server_trigger-rst-unread-data-closed.pkt -- 2.51.0.536.g15c5d4f767-goog