Re: [tcpm] New Version Notification for draft-touch-tcpm-tcp-edo-01.txt

John Leslie <john@jlc.net> Sat, 31 May 2014 01:46 UTC

Return-Path: <john@jlc.net>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 581251A0671 for <tcpm@ietfa.amsl.com>; Fri, 30 May 2014 18:46:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.851
X-Spam-Level:
X-Spam-Status: No, score=-4.851 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.651] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JdTC7lbM5BbH for <tcpm@ietfa.amsl.com>; Fri, 30 May 2014 18:46:20 -0700 (PDT)
Received: from mailhost.jlc.net (mailhost.jlc.net [199.201.159.4]) by ietfa.amsl.com (Postfix) with ESMTP id 045D11A02BE for <tcpm@ietf.org>; Fri, 30 May 2014 18:46:20 -0700 (PDT)
Received: by mailhost.jlc.net (Postfix, from userid 104) id 07EC0C94BF; Fri, 30 May 2014 21:46:12 -0400 (EDT)
Date: Fri, 30 May 2014 21:46:12 -0400
From: John Leslie <john@jlc.net>
To: Joe Touch <touch@isi.edu>
Message-ID: <20140531014612.GF23373@verdi>
References: <201405221710.s4MHAY4S002037@bagheera.jungle.bt.co.uk> <537E3ACD.5000308@isi.edu> <1AD79820-22C1-4500-84D1-1383F264D68C@weston.borman.com> <201405231213.s4NCDa5P005525@bagheera.jungle.bt.co.uk> <537F8202.4020907@isi.edu> <201405281715.s4SHFMm0014634@bagheera.jungle.bt.co.uk> <538623B9.2060209@isi.edu> <201405301642.s4UGgcvY030471@bagheera.jungle.bt.co.uk> <5388EB6F.4010405@isi.edu> <5389263C.8010202@isi.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <5389263C.8010202@isi.edu>
User-Agent: Mutt/1.4.1i
Archived-At: http://mailarchive.ietf.org/arch/msg/tcpm/QtZlSjSTagXMMCUKeHL-n05IyGo
Cc: "tcpm@ietf.org" <tcpm@ietf.org>
Subject: Re: [tcpm] New Version Notification for draft-touch-tcpm-tcp-edo-01.txt
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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: Sat, 31 May 2014 01:46:22 -0000

Joe Touch <touch@isi.edu> wrote:
> 
> Some additional information below about "another trick" I proposed, 
> inspired by Bob's dual-SYN mechanism, courtesy a few long discussions 
> today with Ted Faber.

   This _is- as interesting idea...

> I'll be glad to offer this as a potential solution in the doc.

   I'd _much_ rather this be detailed in a separate document. The edo
proposal is reasonably easy to understand, while this contains multiple
layers of complexity.

   I _don't_ claim to understand it all -- if we try to publish this
in an RFC, a _lot_ of work will be needed to clarify everything...

> On 5/30/2014 1:34 PM, Joe Touch wrote:
> ...
>> Here's another trick that might clean up the above a little:
> 
> FWIW, I had explained it below as being based on sending out-of-window 
> data; Ted pointed out that I had been assuming that the FBP ACK bit 
> wasn't set - which means the sequence number might be more usefully 
> matched to that of the SYN.

   I see you now give the "second" packet the same sequence number.
I feel a need to describe the FBP more exactly. I'm guessing it's the
same port pair (but I very much dislike guessing!). Obviously it's
the same IP-address pair (but can we really depend upon middleboxes
to translate both packets the same?). I won't venture a guess as to
whether it has the SYN bit set (but thanks for saying the ACK bit
is clear). Et cetera...

> See below...
> 
>>     aso - after SYN option

   This is an option within the Options field of the first SYN, right?

> 		length = 2 (just a flag)
> 		length = 3 (or 4) indicating the length of the
> 			FBP expected

   What does length==2 tell us about the FBP?

>>     FBP - front bumper packet (best I could do on names today)
>>         a packet
> 		ISN = same as the associated SYN
> 		ACK = cleared (i.e., a data packet NOT part of
> 		synchronized connection - see why that's useful below)

   Does this have SYN set?

   How does the sender of the FBP learn what the receiver of the FBP
took it to mean? (Assuming, of course, it was received at all...)

>>     new endpoint sends:

   What's a "new endpoint"?

>>         SYN + aso + fix_opt
>>         FBP + aso + extra_opt
> 
> 		extra_opt in the data field
> 		total length < min MTU (576 for IPv4, 1280 for IPv6)
> 		again ACK bit is zero

   I get very nervous about using the data field before the handshake
is complete.

>>             legacy endpoint sends back one connections:
>>                 SYN-ACK + fix_opt

   Presumably the legacy endpoint ignores the FBP... but what happens
if only the FBP arrives (the initial SYN being lost or mangled by a
middlebox)?

>>                 if seg arrives before SYN,

   Am I supposed to assume "seg" here means FBP?

> 			it is silently dropped, because
> 			the ACK bit is clear (this is
> 			explicit in RFC793)
> 
> >                 if seg arrives after SYN,
> 
> 			it is silently dropped, because
> 			the ACK bit is clear (this is also
> 			explicit in RFC793)
>>             ----
>>
>>             new endpoint sends back one connection:
>>
>>                 SYN-ACK + options + ....
>>
>>             a) if FBP arrives before SYN,
> 
> 			it can be silently dropped, but
> 			it's probably useful for new endpoints
> 			to hold onto these (without action)
> 			for a while; they can be silently
> 			discarded if there are too many
> 			(which will just result in a
> 			retransmission and an extra RTT)

   Your hands are waving...

>>             b) if FPB arrives with the SYN, they can be
>>             processed together
>>
>>                 the SYN-ACK can include responses to
>>                 the extra_opts in addition to the
>>                 fix_opts, and says "FBP received"

   How would it say "FBP received"?

>>             c) if FPB arrives after the SYN:
>>
>>                 SYN-ACK proceeds, but sends
>>                 back "wait for option response".

   How would it send that?

>>                 at this point, the source re-sends FBP
>>                 until an ACK is received that indicates
>>                 "FBP received", or times-out as with
>>                 any connection that doesn't finish TWHS

   This sounds like the timeout wouldn't be rare -- a middlebox might
pretty automatically drop the FBP, depending...

>>             I'm still thinking as to whether the ACK number
>>             might indicate whether FBP has been received,

   That sounds strange...

> There are a few ways to handle this, but IMO the best is to have:
> 
> 		SYN-ACK aso with length=2 means "waiting for FBP"
> 
> 		SYN-ACK aso with length=3 (or 4) could mean
> 		"got the FBP", or might even indicate how
> 		many bytes the FBP extension contained

   That's limiting...

> Note - the SYN-ACK and all subsequent segments can assume that aso == 
> edo, i.e., they can use the same EDO as spec'd in version 01 of this draft.

   Please! No!

   (Option numbers aren't that scarce.)

--
John Leslie <john@jlc.net>