Re: [tcpm] 793bis: IP ID

Joe Touch <> Sat, 21 December 2019 01:00 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 2631A1209EC for <>; Fri, 20 Dec 2019 17:00:54 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.219
X-Spam-Status: No, score=-1.219 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779] autolearn=no autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id iVPkziaWvsCl for <>; Fri, 20 Dec 2019 17:00:52 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 271931209EB for <>; Fri, 20 Dec 2019 17:00:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;; s=default; h=To:References:Message-Id:Cc:Date:In-Reply-To: From:Subject:Mime-Version:Content-Transfer-Encoding:Content-Type:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=ajkJwa3BCFSc1qbYxzWWaJSk6PLuvzOXq2Cwi6+qPLg=; b=DRxdNDRMkGRc7+Cw1Hl4jMgVN+ +pgJ4Vk1gfcxep2qlgFC2ejx65HaZZ+xv59s59GeyvsP2IHn/49j/HgS9qJ2gN2AFt2eojhwUSJ+7 1fYUX9IvczaKt+Uv+2AyqgSGYHRW9KDjoOECG+tg9o10aBA1mqI/zT5b5TmiXoPoQebcelIYV9VrM +sUu+Wo3XD6J3+eVcMCuoJC3O2YDHI1h+9stsELVnoud1N5v5h/PHTGaB6wItegwlXJGteY2f0Zys oKe4fCvT0nwPS4pQSzrIUXTAaVtGm/X+LvQ4M/yH+tvrU2eZC/GDIUC8f1z8EZrugvbNSfAj+RXC9 MrzzluzA==;
Received: from ([]:65137 helo=[]) by with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92) (envelope-from <>) id 1iiT8I-001NI3-IB; Fri, 20 Dec 2019 20:00:43 -0500
Content-Type: multipart/alternative; boundary=Apple-Mail-502C74F0-3CD6-4F4D-9B37-2B128F7D94E1
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (1.0)
From: Joe Touch <>
In-Reply-To: <>
Date: Fri, 20 Dec 2019 17:00:38 -0800
Message-Id: <>
References: <>
To: David Borman <>
X-Mailer: iPhone Mail (17C54)
X-OutGoing-Spam-Status: No, score=-1.0
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname -
X-AntiAbuse: Original Domain -
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain -
X-Get-Message-Sender-Via: authenticated_id:
X-From-Rewrite: unmodified, already matched
Archived-At: <>
Subject: Re: [tcpm] 793bis: IP ID
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sat, 21 Dec 2019 01:00:54 -0000

Ps - make that DF=1

> On Dec 20, 2019, at 2:23 PM, Joe Touch <> wrote:
> Hi, David,
>> On 2019-12-20 12:37, David Borman wrote:
>> Yes, the IPID is only used for doing IP fragment reassembly, so the IPID really doesn't matter on retransmission when IP fragmentation is not possible.
> Right - it doesn't matter. But that also means it can be reused *even if the packet contents change*. It should have no impact unless fragmentation occurs; if it's "atomic" (not source fragmented and DF=0), then it can be reused *at will* (and already widely is).
>> So just stating that the IPID must not be reused on retransmission unless the packet is identical to the original should be sufficient.
> That's overkill. The ID can be (and already is) reused if the packets are atomic (per above).
>> We want to avoid having an implementation reuse IPIDs and cause problems, and then say "but the RFC didn't say we couldn't do that".
> Implementations of TCP need to know that they should not be using IP IDs for uniqueness, as already indicated in RFC 6864. We should be clear in supporting that advice here.
> Joe
>>             -David
>>> On Dec 19, 2019, at 8:44 PM, Joe Touch <> wrote:
>>> FWIW, the ID is now supposed to be ignored if fragmentation isn't possible (not source fragmented and not fragmentable).
>>> Perhaps this advice needs revision accordingly, esp. since TCP generally tries to run in that mode.
>>> I.e., retransmission should have no bearing on the IPv4 ID unless fragmentation occurs or is possible.
>>> Joe
>>>> On Dec 19, 2019, at 9:21 AM, David Borman <> wrote:
>>>> This has to do with the fact that the IPID field is used to do fragmentation reassembly.  It is ok to reuse the same IPID when retransmitting, as long as the retransmitted packet is identical to the original packet, not just the TCP data, but also all the TCP headers.  If the two packets aren't identical and they are fragmented, then using the same IPID could cause the receiver to not properly reassemble the packet.
>>>> What this also says is that, if a TCP implementation is such that it buffers up previously sent packets for possible retransmission and retransmits them verbatim, it doesn't have to change the IPID just because it is a retransmission.  But if there are any differences between the original and the retransmitted packet, then the IPID must be updated.
>>>>             -David Borman
>>>>> On Dec 19, 2019, at 11:04 AM, Wesley Eddy <> wrote:
>>>>> While I think Gorry's comment below is pretty much correct, this is direct from RFC 1122's material on TCP.  I'm proposing not to change anything about this at the moment, since I don't think any harm is done by saying this.
>>>>>> On 8/28/2019 11:39 AM, Gorry Fairhurst wrote:
>>>>>> Section 3.8.1
>>>>>> OLD:
>>>>>>  If a retransmitted packet is identical to the original packet (which
>>>>>>  implies not only that the data boundaries have not changed, but also
>>>>>>  that the window and acknowledgment fields of the header have not
>>>>>>  changed), then the same IP Identification field MAY be used (see
>>>>>>  Section of RFC 1122) (MAY-4).
>>>>>> - What is this MAY about? Is it about the IPv4 IPID field and is that really
>>>>>> important for a TCP spec?
>>>>> _______________________________________________
>>>>> tcpm mailing list
>>>> _______________________________________________
>>>> tcpm mailing list
>>> _______________________________________________
>>> tcpm mailing list