[tcpm] Using the ECN Nonce to detect spurious loss events

michawe <michawe@ifi.uio.no> Wed, 16 March 2011 09:33 UTC

Return-Path: <michawe@ifi.uio.no>
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 9F4413A68DA for <tcpm@core3.amsl.com>; Wed, 16 Mar 2011 02:33:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -106.599
X-Spam-Level:
X-Spam-Status: No, score=-106.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
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 otNZ2mYR64kT for <tcpm@core3.amsl.com>; Wed, 16 Mar 2011 02:33:05 -0700 (PDT)
Received: from mail-out1.uio.no (mail-out1.uio.no [129.240.10.57]) by core3.amsl.com (Postfix) with ESMTP id 902003A68D9 for <tcpm@ietf.org>; Wed, 16 Mar 2011 02:33:03 -0700 (PDT)
Received: from mail-mx1.uio.no ([129.240.10.29]) by mail-out1.uio.no with esmtp (Exim 4.72) (envelope-from <michawe@ifi.uio.no>) id 1Pzn7d-0005bc-0y for tcpm@ietf.org; Wed, 16 Mar 2011 10:34:29 +0100
Received: from 1x-193-157-199-151.uio.no ([193.157.199.151]) by mail-mx1.uio.no with esmtpsa (TLSv1:AES128-SHA:128) user michawe (Exim 4.72) (envelope-from <michawe@ifi.uio.no>) id 1Pzn7b-0004pm-Nh for tcpm@ietf.org; Wed, 16 Mar 2011 10:34:28 +0100
From: michawe <michawe@ifi.uio.no>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Wed, 16 Mar 2011 10:34:26 +0100
Message-Id: <F93BAD94-39D8-414A-8364-9129B459A2CD@ifi.uio.no>
To: tcpm@ietf.org
Mime-Version: 1.0 (Apple Message framework v1082)
X-Mailer: Apple Mail (2.1082)
X-UiO-Ratelimit-Test: rcpts/h 1 msgs/h 1 sum rcpts/h 7 sum msgs/h 4 total rcpts 7537 max rcpts/h 36 ratelimit 0
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, T_RP_MATCHES_RCVD=-0.01, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: 7325AE3411A4BF3978F748CB6FD830A654867276
X-UiO-SPAM-Test: remote_host: 193.157.199.151 spam_score: -49 maxlevel 80 minaction 2 bait 0 mail/h: 1 total 24 max/h 4 blacklist 0 greylist 0 ratelimit 0
Subject: [tcpm] Using the ECN Nonce to detect spurious loss events
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: <http://www.ietf.org/mail-archive/web/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>
X-List-Received-Date: Wed, 16 Mar 2011 09:33:12 -0000

Hi all,

This is about an idea that I've been carrying around with me for a long time now. The plan was to continue the work - which is so far only based on simulations - with a real-life implementation, and then one day write a draft and suggest it to TCPM... but, having treated this as a low-priority item because of the ECN Nonce's shaky situation, time worked against me, and now I find myself wondering whether I should continue this at all or simply dump it. So I'd like to ask what the group thinks - continue or dump?

The idea is to update RFC 3540 (ECN Signaling with Nonces) to include a method for spurious loss event detection.

Here's how it works:
Say, we send a packet, and expect the nonce sum to be 1 in return. The packet is lost, we retransmit => this retransmission carries no nonce (by definition). The nonce sum in the ACK that was caused by this retransmitted packet should then be 0. So, if we get an ACK for the retransmitted packet which carries the nonce sum 1, this indicates that the loss event that led to this retransmission was spurious.

We probably can't rely on the receiver to send a 0 nonce sum on all ACKs that are caused by packets carrying no nonce; also, if the above is the only check done, a receiver would have a 50% chance of tricking a sender into believing that a loss event was spurious, thereby eliminating the very benefit that the nonce provides. We therefore have to wait for a sequence of correct nonce sums to come back - e.g. 4 would already give a reliability of around 94% (i.e. the receiver has a 6% chance of lying).

I see this mechanism as complementary to the other spurious loss event detection schemes (minus Eifel, of course) - it would sometimes kick in when the others don't. One of the nice things about it is that it seems to be easy to implement: it doesn't change anything about the nonce specification on the wire, it only adds a little more intelligence to how we interpret the nonce sums that come back.

I have a small page about this here:
http://heim.ifi.uio.no/~michawe/research/projects/spurious/index.html
where you can get the Globecom'08 paper that gives more details, and an updated implementation of the ECN Nonce for the Linux kernel (that was preparatory work towards a real-life implementation of the mechanism).

Of course, the big problem with this whole scheme is that it is based on the ECN Nonce, which is (it seems to me) probably going to be eliminated by conex (for a cause that I personally consider more valuable than the combination of the ECN nonce + my scheme). So - dump? Opinions?

Cheers,
Michael