From 752e0662303a187002310a5ce5d2cf8517ce1ae6 Mon Sep 17 00:00:00 2001 From: Maxim Galaganov Date: Thu, 25 Nov 2021 13:50:26 +0300 Subject: [PATCH] mptcp: sockopt: add coverage for TCP_CORK and TCP_NODELAY Add coverage for new socket options that allow changing behavior of Nagle's algorithm on MPTCP sockets. Link: https://lore.kernel.org/mptcp/20211123070708.2897469-1-max@internet.ru/T/ Link: https://github.com/multipath-tcp/packetdrill/pull/75 Signed-off-by: Maxim Galaganov --- .../mptcp/sockopts/sockopt_cork_nodelay.pkt | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 gtests/net/mptcp/sockopts/sockopt_cork_nodelay.pkt diff --git a/gtests/net/mptcp/sockopts/sockopt_cork_nodelay.pkt b/gtests/net/mptcp/sockopts/sockopt_cork_nodelay.pkt new file mode 100644 index 00000000..5da40eea --- /dev/null +++ b/gtests/net/mptcp/sockopts/sockopt_cork_nodelay.pkt @@ -0,0 +1,53 @@ +// derived from tcp/nagle/sockopt_cork_nodelay.pkt +--tolerance_usecs=100000 +`../common/defaults.sh` + + ++0.0 socket(..., SOCK_STREAM, IPPROTO_MPTCP) = 3 ++0.0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 ++0.0 setsockopt(3, SOL_TCP, TCP_CORK, [1], 4) = 0 + ++0 bind(3, ..., ...) = 0 ++0 listen(3, 1) = 0 + ++0.0 < S 0:0(0) win 65535 ++0.0 > S. 0:0(0) ack 1 ++0.0 < . 1:1(0) ack 1 win 256 ++0 accept(3, ..., ...) = 4 + +// check that TCP_CORK was synced from listener ++0.0 getsockopt(4, SOL_TCP, TCP_CORK, [1], [4]) = 0 + ++0.0 write(4, ..., 40) = 40 ++0.05 write(4, ..., 40) = 40 + +// clearing TCP_CORK should push pending bytes out ++0.01 setsockopt(4, SOL_TCP, TCP_CORK, [0], 4) = 0 ++0.0 > P. 1:81(80) ack 1 ++0.01 < . 1:1(0) ack 81 win 256 + +// set TCP_CORK once again ++0.0 setsockopt(4, SOL_TCP, TCP_CORK, [1], 4) = 0 ++0.0 write(4, ..., 40) = 40 ++0.05 write(4, ..., 40) = 40 + +// setting TCP_NODELAY on a socket with TCP_CORK should push pending bytes out ++0.0 setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0 ++0.0 > P. 81:161(80) ack 1 ++0.1 < . 1:1(0) ack 161 win 256 + +// TCP_CORK has priority over TCP_NODELAY ++0.0 write(4, ..., 1) = 1 ++0.01 write(4, ..., 1) = 1 ++0.2 > P. 161:163(2) ack 1 ++0.0 < . 1:1(0) ack 163 win 256 + +// clearing TCP_CORK on the accepted connection (TCP_NODELAY stays enabled) ++0.01 setsockopt(4, SOL_TCP, TCP_CORK, [0], 4) = 0 + +// check that Nagle's algorithm is disabled ++0.0 write(4, ..., 1) = 1 ++0.01 write(4, ..., 1) = 1 ++0.0 > P. 163:164(1) ack 1 ++0.0 > P. 164:165(1) ack 1 ++0.0 < . 1:1(0) ack 165 win 256