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. -Benjamin > 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) > > <i...@kuehlewind.net>: > > > > 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 6.6.2.2. (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 <mel...@fugue.com>: > >> > >> 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! > >> > >> > > > _______________________________________________ DNSOP mailing list DNSOP@ietf.org https://www.ietf.org/mailman/listinfo/dnsop