Re: [tcpm] More TCP option space in a SYN: draft-briscoe-tcpm-syn-op-sis-02

Andrew Yourtchenko <ayourtch@cisco.com> Thu, 25 September 2014 19:22 UTC

Return-Path: <ayourtch@cisco.com>
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 79FE51A00DA for <tcpm@ietfa.amsl.com>; Thu, 25 Sep 2014 12:22:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.687
X-Spam-Level:
X-Spam-Status: No, score=-14.687 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, J_CHICKENPOX_14=0.6, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.786, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] 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 L1iHWhUZUeAZ for <tcpm@ietfa.amsl.com>; Thu, 25 Sep 2014 12:22:17 -0700 (PDT)
Received: from alln-iport-1.cisco.com (alln-iport-1.cisco.com [173.37.142.88]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A907A1A8856 for <tcpm@ietf.org>; Thu, 25 Sep 2014 12:22:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=5693; q=dns/txt; s=iport; t=1411672934; x=1412882534; h=date:from:to:cc:subject:in-reply-to:message-id: references:mime-version; bh=BPOQrBdAre+b/PMmURuu4xYUkiGntkw5sF+NgKF7y/U=; b=NvdEo0+fuwyF8qrxknE+9h4QfG48bLSbTqDerCwd8gauyFar+cYjf5Zc ZdqZsrE76T+4VJphCXXNPpQ5XGpsnH2a1BZ/okmupH/PEJMz2L9xfyk0r LropRdO7K3vn6unGb67TF5+zVL5YUDqS7XqQYS3BTuPuvje9SfB1KIMVj A=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AssLAOpqJFStJV2S/2dsb2JhbABXCQ6DAFNXBLYeDAEBAQEBAQUBcgGTRYdMAoEGFgF7hAMBAQEDAScRAj8QCxguVwYOIIgbCA3BawEXhhKJMRlCB4RLAQSPSIZSiGuTdIMjQmoBAYEGQIECAQEB
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="81256312"
Received: from rcdn-core-10.cisco.com ([173.37.93.146]) by alln-iport-1.cisco.com with ESMTP; 25 Sep 2014 19:22:13 +0000
Received: from xhc-aln-x03.cisco.com (xhc-aln-x03.cisco.com [173.36.12.77]) by rcdn-core-10.cisco.com (8.14.5/8.14.5) with ESMTP id s8PJMD35016750 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Thu, 25 Sep 2014 19:22:13 GMT
Received: from ams-ayourtch-8813.cisco.com (10.55.47.212) by xhc-aln-x03.cisco.com (173.36.12.77) with Microsoft SMTP Server (TLS) id 14.3.195.1; Thu, 25 Sep 2014 14:22:13 -0500
Date: Thu, 25 Sep 2014 21:21:54 +0200
From: Andrew Yourtchenko <ayourtch@cisco.com>
X-X-Sender: ayourtch@ayourtch-mac
To: Joe Touch <touch@isi.edu>
In-Reply-To: <54244E05.9040009@isi.edu>
Message-ID: <alpine.OSX.2.00.1409252043550.69041@ayourtch-mac>
References: <201409222045.s8MKjZdD002071@bagheera.jungle.bt.co.uk> <542344DA.9020905@isi.edu> <201409250956.s8P9uae9013452@bagheera.jungle.bt.co.uk> <alpine.OSX.2.00.1409251716260.69041@ayourtch-mac> <54244E05.9040009@isi.edu>
User-Agent: Alpine 2.00 (OSX 1167 2008-08-23)
MIME-Version: 1.0
Content-Type: text/plain; charset="US-ASCII"; format="flowed"
X-Originating-IP: [10.55.47.212]
Archived-At: http://mailarchive.ietf.org/arch/msg/tcpm/bZ-vwJidURqMwdszWAQwcNyhFUA
Cc: tcpm IETF list <tcpm@ietf.org>
Subject: Re: [tcpm] More TCP option space in a SYN: draft-briscoe-tcpm-syn-op-sis-02
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: Thu, 25 Sep 2014 19:22:20 -0000

On Thu, 25 Sep 2014, Joe Touch wrote:

>
>
> On 9/25/2014 9:41 AM, Andrew Yourtchenko wrote:
>> Bob, Joe, all,
>>
>> some comments below, maybe with some obvious questions as I did not
>> follow the latest discussions very closely.
>>
>> On Thu, 25 Sep 2014, Bob Briscoe wrote:
>>
>>> Joe,
>>>
>>> At 23:25 24/09/2014, Joe Touch wrote:
>>>> Hi, Bob (et al.),
>>>>
>>>> It's good to have a more detailed description of the proposal.
>>>>
>>>> I still find a dual-SYN solution untenable, though, as it has been for
>>>> other upgrade paths in the past (e.g., IPv6).
>>>
>>> That's why I prefer syn-op-sis because it only uses 2 SYNs for
>>> transition.
>>
>> Both syn-op-sis and tcp-syn-ext-opt talk about using
>> different port pairs
>
> tcp-syn-ext-opt describes two different approaches:
>
> 	SYN-EOS-OOB	uses one port pair, sends only one SYN
>
> 	SYN-EOS-DS	uses two port pairs
>
> the DS variant is very similar to the one in syn-op-sis; both are Bob's
> suggestion. Mine was SYN-EOS-OOB.

Thanks for the clarification!

>
> Bob - let me know if its useful to retain SYN-EOS-DS or if you want to
> replace it with syn-op-sis.
>
>> - is this due to the explosion with the number of
>> possibilities for the three-way handshake recovery ?
>
> Two ports are used only when two SYNs are sent, largely to avoid the
> second SYN from affecting the progress of the first that arrives at a
> legacy endpoint.

Makes sense, if both are valid SYNs for the legacy endpoint, indeed.

>
>> (Of course the application will anyway see only 1 file descriptor, which
>> will assume the identity of the connection that succeeds, right ?)
>
> Yes.
>
>>> I've included a new section on ways to use only 1 SYN during
>>> transition (building a white-list) and ultimately moving to 1 SYN in
>>> the future, only falling back to the legacy SYN in series rather than
>>> parallel if you hit a legacy listener.
>>
>> The fundamental difference between the transition to the extended option
>> space and IPv4->IPv6 transition is the absence of the DNS to signal the
>> capabilities of the endpoint before the connection even starts - if the
>> target host has A&AAAA you only have to deal with the failures on the
>> path, while if the target host does not have AAAA record, it's worthless
>> to try IPv6.
>>
>> OTOH, when attempt to negotiate the extended option space, you do not
>> have any hints about the remote end - besides maybe past memory.
>
> You could have similar hints in SRV records, though those are used much
> less frequently.

They're used quite frequently outside of HTTP
(http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/dns-srv-record-use-by-clients.html)
though the "outside of HTTP" part makes it quite infrequent.

OTOH, the SRV record has just priority,weight,port,target-name - there is 
no space for the hint as such. OTOH maybe a new record type that could be 
returned in "additional" field within the reply?

Regardless, the DNS "hint"'s presence could change the game quite a lot - 
if you know that the remote end is supporting the new cool extension, you 
you might want to make a leap of faith and give it a chance first, with 
the quick enough fallback to make the impact minimal yet avoid two SYNs if 
possible.

>
> ...
>> In today's conditions, a simple 300ms headstart for IPv6 if AAAA is
>> advertised might be sufficient, as the subpar IPv6 connectivity
>> disappears, and more of the corner cases get into play for RTTs.
>>
>> So, depending on how much of a drop rate we'd expect for a "new" SYN
>> across the variety of network scenarios, the simpler approach of just
>> using 300ms delay could be reasonable due to its simplicity - an
>> experiment could show.
>
> Sure, but it also has creates delay on either the legacy or upgraded
> connection - depending on which SYN is stalled.

Exactly. The connecting side may decide it makes sense if it knows upfront 
from either the hint in DNS, or its own cache of previous connections to 
that host (which may not be valid, BTW - because the network inbetween 
might have changed)

>
> That's the advantage of the OOB method - there's no need to insert a
> stall on the sending side (an upgraded receiver might cache OOBs that
> arrive briefly before SYNs to avoid the need for an additional exchange)

It's a tradeoff.

two-SYN methods stall one of the connections during the 
transition period at initiator's discretion (with maybe using DNS hints 
or its local cache to decide which one to stall and the protocol type to 
decide for how long to stall), *or* cause two SYNs race which is not very 
nice. Assuming the stall delay is X, the session establishment time in the 
worst case is ~(1.5RTT+X)

OOB method has a permanent decision to stall the connection if the 
upgraded server receives SYN-EOS OOB but no OOB segment (say, it's 
being blocked by the middleboxes?), "after a certain time". This time 
supposedly should be much shorter than the stall in the 
two-SYN case, ideally a function of jitter on the path, let's call it Y.

If the client then proceeds as if the connection was legacy, the session 
establishment time is ~(1.5RTT+Y) - so, better than two-SYNs.

But if the client decides to retransmit the OOB (the worse performing 
case of the, the overall connection establishment time will be 
~(2.5*RTT+Y). And there'd need to be logic to still fallback to the legacy 
behavior if the (Second, third?) OOB packet gets dropped.

If the above estimates make sense, then it's a tough call to make 
which one is better without trying in the wild, IMHO.

--a