[tcpm] Beware the ordering of TCP options

"Adam Langley" <agl@imperialviolet.org> Mon, 27 October 2008 17:15 UTC

Return-Path: <tcpm-bounces@ietf.org>
X-Original-To: tcpm-archive@megatron.ietf.org
Delivered-To: ietfarch-tcpm-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 946A73A6804; Mon, 27 Oct 2008 10:15:48 -0700 (PDT)
X-Original-To: tcpm@core3.amsl.com
Delivered-To: tcpm@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 91A363A67C0 for <tcpm@core3.amsl.com>; Mon, 27 Oct 2008 10:15:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.977
X-Spam-Level:
X-Spam-Status: No, score=-1.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id L7pWpad4YjpA for <tcpm@core3.amsl.com>; Mon, 27 Oct 2008 10:15:46 -0700 (PDT)
Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.238]) by core3.amsl.com (Postfix) with ESMTP id ADAD13A6358 for <tcpm@ietf.org>; Mon, 27 Oct 2008 10:15:46 -0700 (PDT)
Received: by rv-out-0506.google.com with SMTP id b25so2114110rvf.49 for <tcpm@ietf.org>; Mon, 27 Oct 2008 10:15:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:mime-version:content-type:content-transfer-encoding :content-disposition:x-google-sender-auth; bh=xo0VSMvL+9H/rshcaB8Wfg/LBH3sLMZ31m3Y0KCCH0g=; b=ly64r18Z/JeEywf7gS4MRHcWffSP4na+TyM8JHufSoxJbK8VewmN5j11Cf04CFZXPF OHjuJLE52Um6ZBMWCG8qGciSOz+/HMN8KGvvYxCS8JFJYNFLqIs7I3c789tGpeIzIm3f PzIVu163Yaj01kLArtH/qZN7wNnH+ZVTC9lgo=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:mime-version:content-type :content-transfer-encoding:content-disposition:x-google-sender-auth; b=jNFHOlUWkEDx7bNCwsbcIDgaODmwB52mDMiS/NfR+/upvR70GIuSxUulyGk5dqekAw mbn3Gl4IfLe8mbQULKmPQMRqcBKikmdaQ9oEfue2EI/s/LAj4ADzsh3pgRlUseWQJowQ yUZ7VOuvWECZMJ5w7E/v6zzzoXeQgtOlQFPFQ=
Received: by 10.141.206.13 with SMTP id i13mr3378436rvq.211.1225127745891; Mon, 27 Oct 2008 10:15:45 -0700 (PDT)
Received: by 10.141.48.20 with HTTP; Mon, 27 Oct 2008 10:15:45 -0700 (PDT)
Message-ID: <396556a20810271015s636f0585p41e413c4c37888e0@mail.gmail.com>
Date: Mon, 27 Oct 2008 10:15:45 -0700
From: Adam Langley <agl@imperialviolet.org>
To: tcpm@ietf.org
MIME-Version: 1.0
Content-Disposition: inline
X-Google-Sender-Auth: 1c9e4deafd742b2f
Subject: [tcpm] Beware the ordering of TCP options
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://www.ietf.org/mailman/private/tcpm>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: tcpm-bounces@ietf.org
Errors-To: tcpm-bounces@ietf.org

The general fact that ordering of TCP options can be important is
probably old news to many here. However, the specifics may be
interesting.

With Linux 2.6.27 the kernel changed the default ordering of options.
With the default sysctls the ordering changed from:

<MSS: 4 bytes><SACK PERM: 2 bytes><Timestamp: 10 bytes>

To

<SACK Advert: 2 bytes><Timestamp: 10 bytes><MSS: 4 bytes>

This was my fault and it broke the world :( Many routers dropped the
new packets on the floor, breaking connectivity for many people:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/264019
http://www.ubuntu.com/getubuntu/releasenotes/810
https://qa.mandriva.com/show_bug.cgi?id=43372
http://wiki.mandriva.com/en/2009.0_Errata#TCP_timestamps

Disabling the timestamps sysctl fixes the issue. The options in this
case looked like:

<NOP><NOP><SACK PERM: 2 bytes><MSS: 4 bytes>

And that is seemingly ok with these routers. It seems that SACK PERM
cannot be the first option.



AGL

-- 
Adam Langley agl@imperialviolet.org http://www.imperialviolet.org
_______________________________________________
tcpm mailing list
tcpm@ietf.org
https://www.ietf.org/mailman/listinfo/tcpm