RE: [Fwd: WGLC comments for draft-ietf-dccp-dtls-02]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Gorry,

Yes, thanks to Pasi and Colin for their comments.  I'm still digesting
the issues and will respond soon...

Tom P.

> -----Original Message-----
> From: Gorry Fairhurst [mailto:gorry@xxxxxxxxxxxxxx]
> Sent: Friday, October 26, 2007 3:54 AM
> To: dccp@xxxxxxxx
> Cc: Pasi.Eronen@xxxxxxxxx
> Subject:  [Fwd: WGLC comments for draft-ietf-dccp-dtls-02]
> 
> Thank you Pasi!
> 
> This review was received by a reviewer for this WG, and should be
taken
> into consideration during the WGLC,
> 
> Best wishes,
> 
> Gorry
> 
> 
> -------- Original Message --------
> Subject: WGLC comments for draft-ietf-dccp-dtls-02
> Date: Thu, 25 Oct 2007 11:23:32 +0300
> From: <Pasi.Eronen@xxxxxxxxx>
> To: <gorry@xxxxxxxxxxxxxx>, <lars.eggert@xxxxxxxxx>,
> <tphelan@xxxxxxxxxxxx>
> CC: <dccp@xxxxxxxx>
> 
> 
> This is a quite short and straightforward draft. The main
> differences from DTLS-over-UDP come from being connection-oriented,
> and taking somewhat different approach to MTUs.
> 
> Covering PMTU-related issues first:
> 
> Section 3.3
> > Each DTLS record must fit within a single DCCP-Data packet.  DCCP
> > packets are normally transmitted with the DF (Don't Fragment) bit
> > set for IPv4, and of course all IPv6 packets are unfragmentable.
> > Because of this, DCCP performs Path Maximum Transmission Unit
> > (PMTU) Discovery.  In determining the maximum size for DTLS
> > records, a DTLS over DCCP implementation SHOULD use the
> > DCCP-managed value for PMTU.  A DTLS over DCCP implementation MAY
> > choose to use its own PMTU Discovery calculations, as specified
> > in [RFC4347], but MUST NOT use a value greater the value
> > determined by DCCP.
> 
> This topic is a bit complex, and probably needs some clarification.
> 
> RFC 4347 mostly uses an approach where the application is the
> "packetization layer" responsible for doing PMTUD (the exception
> being the DTLS handshake messages), including probing for larger
> PMTUs and maintaining PMTU estimates.  Partly, this is because
> "modern" PMTU (RFC 4821 style) can't be done without
> acknowledgements, and neither DTLS nor UDP has those. Also, neither
> DTLS nor UDP has a "packetization layer" (ability to split a single
> application message to multiple DTLS records or UDP datagrams),
> so the application has to be involved anyway.
> 
> This means DTLS should allow the application to request particular
> per-packet treatment, either "don't fragment" (set DF bit in IPv4,
> don't do local fragmentation even if IP layer PMTU estimate is
> exceeded), or "fragment if needed" (don't set DF bit in IPv4, do
> local fragmentation if exceeds IP layer PMTU estimate).
> 
> Also, the application should get feedback when possible (e.g.
> "packet could not be sent at all", or "warning, packet was sent but
> exceeded local PMTU estimate", or "IP PMTU estimate changed due to
> ICMP"), and have access to lower layer MTU-related parameters, such
> as the maximum transport datagram size (which can't be exceeded --
> for DCCP, the CCMPS minus any overhead?; for UDP, I guess usually
> 64K minus overhead), the maximum DTLS record size (16K), the local
> link MTU (exceeding which is possible, but will always trigger
> fragmentation), and if available, PMTU estimate maintained by IP
> layer (exceeding which is possible, but is likely to trigger
> fragmentation or result in lost datagram) (this PMTU estimate is
> based on "classical" PMTUD, and thus is likely to be larger than
> the actual PMTU)
> 
> However, I would guess most applications simply choose to ignore
> this complexity (and might not have really good ability to adjust
> their message size), and just tell DTLS to "fragment if needed"
> (as most apps using UDP do). Presumably, this could be the case
> even when running DTLS over DCCP?
> 
> Given this, the advice "in determining the maximum size of DTLS
> records, a DTLS over DCCP implementation SHOULD use the
> DCCP-managed value for PMTU" is a misleading. DTLS should certainly
> allow the application to find out what the DCCP-managed PMTU value
> is, but for most applications (which can't/don't want to adjust
> their message sizes, and don't want to implement PLPLMTUD), the
> maximum size of DTLS record would be larger.
> 
> One remaining case is retransmitting DTLS handshake messages. Even
> here, the advice to just use the DCCP-managed value for PMTU might
> not be very good one. Currently, RFC 4347 basically recommends
> starting with MTU or PMTU estimate given by the IP/transport
> layer(s), but decreasing the handshake message size if
> retransmissions are needed (essentially doing simplified "modern"
> PMTUD, which is more likely to work than "classical" PMTU).
> 
> I'm not quite sure how the text should be modified to take this
> into account. DCCP might also be slightly different in this regard,
> since it has some kind of acknowledgements, and thus can do the
> more reliable "modern" PMTUD (as suggested in RFC 4340, last
> paragraph of Section 14.1). However, this seems to be purely
> optional, and not something that DCCP is required to do.  (And if
> given the choice only between "classical PMTUD" and "fragment if
> needed", I'm not sure what applications would prefer).
> 
> ----------
> 
> Section 3.2:
> > However, the DCCP handshake packets DCCP-Request and
> > DCCP-Response have Application Data fields and can carry user
> > data during the DCCP handshake.  DTLS client implementations MAY
> > choose to transmit the ClientHello message in the DCCP-Request
> > packet.  DTLS server implementations MAY choose to respond to a
> > ClientHello message received in a DCCP-Request packet with a
> > HelloVerifyRequest message, if denial of service countermeasures
> > are to be used or, a ServerHelloDone message otherwise, in the
> > DCCP-Response packet.
> >
> > Subsequent DTLS handshake messages, and retransmissions of the
> > ClientHello message, if necessary, MUST wait for the completion
> > of the DCCP handshake.
> 
> This is somewhat inaccurate, as the things that can be piggybacked
> in DCCP-Request/Response are DTLS records, not necessarily whole
> DTLS handshake messages (and for the server, ServerHelloDone is not
> the first message sent).
> 
> I'd suggest rephrasing this along the lines "A DTLS client
> implementation MAY choose to transmit its first DTLS record(s) in
> the DCCP-Request packet. Similarly, a DTLS server implementation
> MAY choose to include DTLS record(s) in the DCCP-Response
> packet. The sending of subsequent DTLS records, including
> retransmissions, MUST wait for the completion of the DCCP
> handshake. Note that DCCP server may not accept the application
> data in DCCP-Request. If this happens, DTLS will eventually
> retransmit the message."
> 
> ----------
> 
> DTLS's Cookie/HelloVerifyRequest mechanism is meant to provide some
> protection against spoofed source IP address, so it isn't really
> that useful on connection-oriented transports like DCCP (which has
> its own Init Cookie option). The document should mention this, and
> perhaps recommend that when run over DCCP, this feature of DTLS
> should not be used (as it doesn't seem to add any value).
> 
> ----------
> 
> Should the document say something about DCCP checksums and their
> coverage?
> 
> ----------
> 
> RFC 4347, Section 4.1.1:
> > Some transports, such as DCCP, provide congestion control for
> > traffic carried over them.  If the congestion window is
> > sufficiently narrow, DTLS handshake retransmissions may be held
> > rather than transmitted immediately, potentially leading to
> > timeouts and spurious retransmission.  When DTLS is used over
> > such transports, care should be taken not to overrun the likely
> > congestion window.  In the future, a DTLS-DCCP mapping may be
> > specified to provide optimal behavior for this interaction.
> 
> This draft doesn't seem to address congestion at all. Is there
> perhaps something that needs to be said? (Possibly the answer
> is "no", but I'm not sure.)
> 
> ----------
> 
> Maybe this is obvious, but it might be worth mentioning explicitly
> that the DCCP "Service Code" is not protected by DTLS.
> 
> ----------
> 
> Minor editorial nits:
> 
> Section 3 says "Multiple DTLS records MAY be sent in one DCCP
> packet, as long as the resulting packet is within the Path
> Maximum Transfer Unit (PMTU) currently in force".
> 
> The construct "MAY do X as long as Y" is prone to different
> interpretations (it's not clear if it's supposed to imply
> "if not Y, MUST NOT do X"). I'd suggest rephrasing this simply as
> "Multiple DTLS records MAY be sent in one DCCP packet." (Avoiding
> fragmentation is just a strong recommendation, not an absolute
> prohibition.)
> 
> Section 3.3 says "of course all IPv6 packets are unfragmentable".
> This is a bit misleading; the sending host can fragment a single
> DCCP packet to multiple IPv6 packets.
> 
> Section 6.1, reference RFC4347 is missing the second author.
> 
> Section 6.1, reference SCODES could be changed to Informative (it
> provides useful information, but is not required to implement this
> spec) to avoid delays in publication.
> 
> ----------
> 
> Best regards,
> Pasi
> 
> 




[Index of Archives]     [Linux Kernel Development]     [Linux DCCP]     [IETF Annouce]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [DDR & Rambus]

  Powered by Linux