Re: [tcpm] 793bis: IP ID

David Borman <> Fri, 20 December 2019 20:37 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id B5D5B1209CF for <>; Fri, 20 Dec 2019 12:37:36 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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 PR53_qhJ6Wrf for <>; Fri, 20 Dec 2019 12:37:34 -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 41C5F120859 for <>; Fri, 20 Dec 2019 12:37:34 -0800 (PST)
Received: from ( []) (authenticated bits=0) by (8.14.7/8.14.7) with ESMTP id xBKKgoZL025438 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 20 Dec 2019 14:42:50 -0600
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
From: David Borman <>
In-Reply-To: <>
Date: Fri, 20 Dec 2019 14:37:31 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <> <> <>
To: Joe Touch <>
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: Fri, 20 Dec 2019 20:37:37 -0000

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.

So just stating that the IPID must not be reused on retransmission unless the packet is identical to the original should be sufficient.  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”.

> 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