From nobody Tue Feb 18 17:11:48 2025 X-Original-To: freebsd-net@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Yy5fn2KZNz5ntgG for ; Tue, 18 Feb 2025 17:12:01 +0000 (UTC) (envelope-from y.jaeyong@gmail.com) Received: from mail-ua1-x933.google.com (mail-ua1-x933.google.com [IPv6:2607:f8b0:4864:20::933]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Yy5fl52XJz3CgK for ; Tue, 18 Feb 2025 17:11:59 +0000 (UTC) (envelope-from y.jaeyong@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20230601 header.b="b77l/pte"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of y.jaeyong@gmail.com designates 2607:f8b0:4864:20::933 as permitted sender) smtp.mailfrom=y.jaeyong@gmail.com Received: by mail-ua1-x933.google.com with SMTP id a1e0cc1a2514c-868e8ce3f73so1546832241.3 for ; Tue, 18 Feb 2025 09:11:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739898718; x=1740503518; darn=freebsd.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=gMuG6+ySMBpEgy26YHjvYYr3YOJllSniOWFJG7hMbdY=; b=b77l/pteu6ulktpiqghHN+VV1w1BIGb9+gSlepxJ+AEdLqH6+VnViWs+y6UPvj77Yp BcvLJHeczA18Fko+Uiu2KZJEl/N1ZodEX8G4zT289d3FlxyMNxz0ebcDNztyWPZK8Cd5 +Jrz1KTpzlRY8RBeBFo1L3VSttqH5GE5S/Dvkq9iaAVrrvcxVmygAl2juW6OmGng2/Ju SpxqcdJdRYQWAASxa50v6C0utslFrMVyvET82JHUjCiSMW+R2FqZQxdA9vU0jME7LoHt MWqdq/Fq5FqiQaHLQoWtpf9izR96jvQvKLMP7gGBYJjruqJiOvhywcqeTDaP5HnT9sUK JiUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739898718; x=1740503518; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=gMuG6+ySMBpEgy26YHjvYYr3YOJllSniOWFJG7hMbdY=; b=tgSynt5sZpSkbCuGz8CxP/MC22oVFoK1MgyBhLkKpoax0qafV16Mpr0knBZ5ZFR/J5 uWziFD+xobsyQKwiq6Ki60wioOPqodhbP7rx+envoRfhBPlTyaBBkgG5nogSXIjkqkTm zK7XRhtsXeDnx4XqvGUaOufCUlHUYkJ5gD9TspGfdH3vjiIQd8zLsRof5hDxnuA9PGwe g36GNOBgrviojCjqWdUl2JW/ugd73KMMUYLEai6m/NO4Sl29HcYAh0D/KLOqKopaVkeT Qri39oK6YvrsXoZZ/uWJGzedQIq9IbzyQbkrijNAE1/fsHCq1M+Vne/saPaAK724kHOH 9kxA== X-Gm-Message-State: AOJu0YyVJGPJcFonY56WJ9ZfJi+rliYsloexzVKhAs/Wf022UH5T8LfH OBcoPGkwrMD407pRJlGDKwfw5d3RaPBnxSTBsnT+YHXPA1GSTwXGWvf9s87vaHUCSVyOZX9DZVg lvaYyq47dmxJzutNNZW0lhKe16Dxt4W9KymI= X-Gm-Gg: ASbGncsOyTXa+GcMgM4CII5C/mn94i1kvqUcByIbplT5u5+Q3hox0yekmGIR/IrPl1p IxuFCHUe/2S9rjPItH4OOMfxlHElSom1er6dzOGfBayWuLfzOaUV516n1gLmNt5Qe0/uw2YJ2Kv uo3r1l8zPDjaaM7n8bvH5NEz7u6zY6UAg= X-Google-Smtp-Source: AGHT+IFz33TMz0NOt/6CFxAuh/xH5AcUQQ9BRBWyGqQd1lif4TRY/0I6q0sMkVHQNv+PMq53chQEY3LiXivqY82PhSY= X-Received: by 2002:a05:6102:419e:b0:4ba:eb24:fb1b with SMTP id ada2fe7eead31-4bd3fe55f69mr8096882137.23.1739898718699; Tue, 18 Feb 2025 09:11:58 -0800 (PST) List-Id: Networking and TCP/IP with FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-net List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-net@FreeBSD.org MIME-Version: 1.0 From: jaeyong yoo Date: Tue, 18 Feb 2025 12:11:48 -0500 X-Gm-Features: AWEUYZkXI1v2Iturt8Kkgbh1gCgMDhjVYD0DNe7o3ANaS6HPt3BAHuzDMzpFtjs Message-ID: Subject: Sending empty segment upon receiving partial ACK To: freebsd-net@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Spamd-Result: default: False [-3.99 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.99)[-0.989]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36:c]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20230601]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; ARC_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; TAGGED_FROM(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_TRACE(0.00)[0:+]; FROM_HAS_DN(0.00)[]; MISSING_XM_UA(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; PREVIOUSLY_DELIVERED(0.00)[freebsd-net@freebsd.org]; TO_DN_NONE(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; MID_RHS_MATCH_FROMTLD(0.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; MLMMJ_DEST(0.00)[freebsd-net@freebsd.org]; RCVD_COUNT_ONE(0.00)[1]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::933:from] X-Rspamd-Queue-Id: 4Yy5fl52XJz3CgK X-Spamd-Bar: --- Hi freebsd-net, I am observing somewhat strange pcap behavior. Scenario: A --> B A is the only sender of the data and B is the only receiver. Note that we use PRR. When B is sending partial ACKs to A, there are cases when A sends out just an empty segment with the same sequence number to B. Which seems to be pure overhead. After digging through the code, I think this could be triggered by the following sequence: 1. https://github.com/freebsd/freebsd-src/blob/main/sys/netinet/tcp_input.c#L2892 during prr-partial ack processing, it calls tcp_output with ACKNOW flag. 2.https://github.com/freebsd/freebsd-src/blob/main/sys/netinet/tcp_output.c#L415 in tcp_output, it determines "len" how much to send and when ACKed bytes in partial ack is small enough, this "len" becomes zero. 3. https://github.com/freebsd/freebsd-src/blob/main/sys/netinet/tcp_output.c#L702 As the flag is set to "ACKNOW", with zero length, it anyway sends out a segment with 0 length. My question is, is there some check before sending out like checking if the length is zero? Thanks, Jaeyong