Re: [DNSOP] Mirja Kühlewind's Discuss on draft-ietf-dnsop-session-signal-12: (with DISCUSS and COMMENT)

Benjamin Kaduk <> Tue, 16 October 2018 14:51 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 64475130DEB; Tue, 16 Oct 2018 07:51:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id uiWcNvbI6YOV; Tue, 16 Oct 2018 07:51:29 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 7D171130E0F; Tue, 16 Oct 2018 07:51:27 -0700 (PDT)
X-AuditID: 12074425-2b7ff70000007318-79-5bc5faea023b
Received: from ( []) (using TLS with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id B6.B1.29464.CEAF5CB5; Tue, 16 Oct 2018 10:51:24 -0400 (EDT)
Received: from (OUTGOING-AUTH-1.MIT.EDU []) by (8.13.8/8.9.2) with ESMTP id w9GEpHtp031493; Tue, 16 Oct 2018 10:51:19 -0400
Received: from ( []) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by (8.13.8/8.12.4) with ESMTP id w9GEp9tR029181 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Tue, 16 Oct 2018 10:51:12 -0400
Date: Tue, 16 Oct 2018 09:51:09 -0500
From: Benjamin Kaduk <>
To: "Mirja Kuehlewind (IETF)" <>
Cc: Ted Lemon <>, Tim Wicinski <>, dnsop WG <>, dnsop-chairs <>, The IESG <>,
Message-ID: <>
References: <> <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <>
User-Agent: Mutt/1.9.1 (2017-09-22)
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrLKsWRmVeSWpSXmKPExsUixG6nrvvm19Fog/a5uhZvtk9isbj75jKL xbz1a5gsZvyZyGzx4vpHZos3a44wWUxr28zswO7RdGEZu8fOWXfZPZYs+cnk0fJxIWsASxSX TUpqTmZZapG+XQJXxpZX1QW99hUrrrczNzC+M+xi5OSQEDCROPJ7DksXIxeHkMBiJokJsx6z QzgbGSU239jCCFIlJHCVSeJHrx6IzSKgKrGtrYcdxGYTUJFo6L7MDGKLCBhLHJ78nRWkmVng FqPEhs0vwBxhgaWMEudenWMDqeIF2rdi/wEmiKnbmCQufNOAiAtKnJz5hAXEZhZQl/gz7xLQ VA4gW1pi+T8OiLC8RPPW2WBhTgEniesfDEDCogLKEnv7DrFPYBSchWTQLCSDZiEMmoVk0AJG llWMsim5Vbq5iZk5xanJusXJiXl5qUW6Fnq5mSV6qSmlmxjBseGiuoNxzl+vQ4wCHIxKPLw/ rh+JFmJNLCuuzD3EKMnBpCTKq7HnaLQQX1J+SmVGYnFGfFFpTmrxIUYJDmYlEd70S0A53pTE yqrUonyYlDQHi5I476SWxdFCAumJJanZqakFqUUwWRkODiUJXjFgChASLEpNT61Iy8wpQUgz cXCCDOcBGi4DUsNbXJCYW5yZDpE/xWjJsWpGxwxmjran14FkB4gUYsnLz0uVEued8BOoQQCk IaM0D24mKNVJZO+vecUoDvSiMK8qSBUPME3CTX0FtJAJaKG77RGQhSWJCCmpBsa6s+ENTn0l 6RxrbZUOCe1e9vvDC6+PC/76L3u0NyhFIezAPs7zonwTri1IV+pjbhXZdkv/Yb2nG2/12/3c GnOszOKWmu3a1DZbtrGy+rnMZp6FIWtFLV7a2u/iXKe/Q7tqv5HbtxPh8u5WiRmO2qIL2rIz jkxbr922f9qlFAERzevmW/pn+yixFGckGmoxFxUnAgAFqQa0UAMAAA==
Archived-At: <>
Subject: Re: [DNSOP] =?iso-8859-1?q?Mirja_K=FChlewind=27s_Discuss_on_draft-ie?= =?iso-8859-1?q?tf-dnsop-session-signal-12=3A_=28with_DISCUSS_and_COMMENT?= =?iso-8859-1?q?=29?=
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF DNSOP WG mailing list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 16 Oct 2018 14:51:42 -0000

On Mon, Oct 15, 2018 at 04:56:18PM +0200, Mirja Kuehlewind (IETF) wrote:
> Sorry, one more comment on section 11.1:
> "DSO permits zero round-trip operation using TCP Fast Open [RFC7413]	
> with TLS 1.3 [RFC8446] 0-RTT to reduce or eliminate round trips in	
> session establishment.“
> This sounds like TCP Fast Open and TLS 0-RTT can only be used together. However these are to different mechanism with different properties/problems and I don’t think they should be mixed up.

If I remember correctly, it was intended in the rev to only use TFP
together with TLS 1.3 0-RTT and disallow using just one, though I forget
exactly how this came out of the discussion from my Discuss point about
specifying the TLS 1.3 0-RTT application profile.


> Data that is send with with TLS 0-RTT must be idempotent as for this data an reply attack is possible which is not the case for the rest of the TLS data. However with TCP without TLS (but maybe TFO) reply attacks are always possible, so that’s not an additional problem if TFO.
> With TFO however, a server could start processing without having a return routability proof, however, such a problem can also be addressed on the server-side by simply not stat processing large request before the TCP connection is fully established and that is actually safer than leaving the decisions to the client.
> Please clarify that TLS 0-RTT can be used without TFO (or TFO can be used without TLS) and I would also recommend to discuss the respective issue separately.
> Mirja
> > Am 15.10.2018 um 16:02 schrieb Mirja Kuehlewind (IETF) <>et>:
> > 
> > Hi Ted,
> > 
> > sorry for the delay, however, as you performed a couple of changes it took me a while to re-review. I believe I’m unfortunately not fully ready to release my discuss at this point, but close..
> > 
> > Regarding my first discuss point (delayed ACKs aso.) I think the text improved and  I would like to seem my minor wording question (comment 2) below addressed before I finally release the discuss here. However, I still think the extensive discussion as provided in section 9.5 now, does not necessarily belong in this document. Therefore I would rather would have preferred to move this text in a real appendix, or removed it completely and maybe document in an own informational RFC (in tcpm).
> > 
> > Regarding my second discuss point (keep-alives), the text seems still not quite right yet, or I’m really confused. Please also see also further below (comment 3).
> > 
> > Anyway here are my comments on the edited/new text in the order they appear in the draft:
> > 
> > 1) I think the following text in section 3 is not fully correct:
> > 
> > "Fast Open message: A TCP SYN packet that begins a DSO connection and
> >   contains early data ([RFC8446] section 2.3).  Fast Open is only
> >   permitted when using TLS encapsulation: a TCP SYN message that does
> >   not use TLS encapsulation but contains early data is not permitted.“
> > If TLS 0-RTT is used this data will not be carried in the TCP SYN, it will „just“ be send at the same time as the TLS handshake is performed (but after the TCP handshake). Only if TCP Fast Open (TFO) (see RFC7413) is used, data can also be sent in the TCP SYN. I guess you mainly need to fix the reference here, or maybe name both mechanisms separately.
> > 
> > 
> > 2) In section 5.5.1:
> >   "With a DSO request message, the TCP implementation waits for the
> >   application-layer client software to generate the corresponding DSO
> >   response message, which enables the TCP implementation to send a
> >   single combined IP packet containing the TCP acknowledgement, the TCP
> >   window update, and the application-generated DSO response message.
> >   This is more efficient than sending three separate IP packets.“
> > 
> > The phrasing here is a bit confusing, to me at least. It sounds a bit like there is a special TCP for DSO… maybe the following is a bit better:
> >   "With a DSO request message, TCP delayed acknowledge timer will usually
> >   make the implementation wait for the
> >   application-layer client software to generate the corresponding DSO
> >   response message before it sends out an TCP acknowledgment
> >   This will generate a 
> >   single combined IP packet containing the TCP acknowledgement, the TCP
> >   window update, and the application-generated DSO response message and
> >   is more efficient than sending three separate IP packets.“
> > 
> > (Note that the deplayed ack timer can be configured to a very small value as well, and as such it depends on the processing time and the value of the timer if a TCP implementation will wait or not.)
> > 
> > 3) Section 6.5.2
> > "For example, a (hypothetical and unrealistic)
> >   keepalive interval value of 100 ms would result in a continuous
> >   stream of ten messages per second or more, in both directions, to
> >   keep the DSO Session alive.  And, in this extreme example, a single
> >   packet loss and retransmission over a long path could introduce a
> >   momentary pause in the stream of messages of over 200 ms, long enough
> >   to cause the server to overzealously abort the connection.“
> > I think this example is still not correct (and the changes might made have it worse: how can there be more then 10 messages?)
> > 
> > So the point here is that there is a dependency on the RTT. Only if the RTT is smaller than 200ms this can happen, otherwise the connection is closed anyway after two keep-alives. However, if the RTT is much smaller than 100ms and e.g. TLP is used, it would still work even if one packet is lost.
> > 
> > In any case, I don’t think this example is actually very helpful. The point is that the keep-alives interval should always be much larger than the RTT to make this work appropriately. However, the point about keeping the network load is, is rather independent to the question of when the mechanism actually breaks. I would recommend to simply remove this example and just say that the interval MUST not be smaller than 10 sec to keep the network load reasonably low.
> > 
> > However, having read this and the previous section again, I think your implementation of the keep-alives mechanism could also be improved. Usually, there should be two intervals. One defines, how long the connection can be idle before an keeps-live is sent and one that defines when a keeper-lives should be retransmitted if it is deemed to be lost, where the first one just usually be larger than the second one (and both timers should always be larger than the RTT). That would enable faster failure if the connection is actually lost. 
> > 
> > 4) Section (Reconnecting After an Unexplained Connection Drop)
> >  "It is also possible for a server to forcibly terminate the
> >   connection; in this case the client doesn't know whether the
> >   termination was the result of a protocol error or a network outage.
> >   The client could determine which of the two is occurring by noticing
> >   if a connection is repeatedly dropped by the server; if so, the
> >   client can mark the server as not supporting DSO.“
> > How often should the client try and in which interval?
> > 
> > 5) Section 9.2:
> >   "In principle, anycast servers could maintain sufficient state that	
> >    they can both handle packets in the same TCP connection.“
> > Really? I mean in theory yes but has this ever been done in practice? I would think that sharing TCP state is even harder than sharing DSO state.
> > 
> > 
> > Thanks!
> > Mirja
> > 
> > 
> > 
> > 
> > 
> >> Am 27.09.2018 um 06:57 schrieb Ted Lemon <>om>:
> >> 
> >> Mirja, I notice that you are still holding a discuss on this document.   I believe that we addressed the concerns you raised in your discuss.   Could you please let us know if there is still work to do on this, and if not, clear the discuss?
> >> 
> >> Thanks!
> >> 
> >> 
> >