Re: [tcpm] 793bis: IP ID

David Borman <> Thu, 19 December 2019 22:32 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id BFA951201DC for <>; Thu, 19 Dec 2019 14:32:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 65WQjT1LBP8y for <>; Thu, 19 Dec 2019 14:32:01 -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 23B7F1200CC for <>; Thu, 19 Dec 2019 14:32:01 -0800 (PST)
Received: from ( []) (authenticated bits=0) by (8.14.7/8.14.7) with ESMTP id xBJMam2W031830 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 19 Dec 2019 16:36:48 -0600
From: David Borman <>
Message-Id: <>
Content-Type: multipart/alternative; boundary="Apple-Mail=_3E26A449-B878-489E-8E3A-6555E3BEE2AF"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Thu, 19 Dec 2019 16:31:28 -0600
In-Reply-To: <>
Cc: Gorry Fairhurst <>,
To: Michael Tuexen <>
References: <> <> <> <> <> <>
X-Mailer: Apple Mail (2.3445.104.11)
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: Thu, 19 Dec 2019 22:32:04 -0000

Yes, the reality is that I don’t think any full featured TCP implementation today would want/be able to take advantage of this.  Some things were much simpler when RFC 1122 was published, a lot has changed since then.  But with IoT and very small and tiny TCP implementations, there may be some places where this makes sense.

I do agree with Gorry, rather than calling out a few example fields that also must not have changed, keep it simple:

If a retransmitted packet is identical to the original packet (which implies not only that the data boundaries have not changed, but also the headers have not changed),


> On Dec 19, 2019, at 11:47 AM, Michael Tuexen <> wrote:
>> On 19. Dec 2019, at 18:32, Gorry Fairhurst <> wrote:
>> I get this - but if we keep this, I think it should expliclity say *all headers have not changed*.
> The TCP timestamp option comes up to my mind. For TCP retransmission, the TSVal would be different.
> Best regards
> Michael
>> I still think this is a terrible hack to say the transport touches something in the network layer - because I have no idea how this sits with using TSOpt to disam=biguate retransmissions and extension headers, should they be used.
>> Anyway, this is so very IPv4 centric, I think if we keep this, we should call IPv4 out explicitly.
>> Gorry
>> On 19/12/2019, 17:21, 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
> _______________________________________________
> tcpm mailing list