Subject: [tram] Review of draft-ietf-tram-stun-pmtud-03

From: Brandon Williams <[email-masked]>
Date: Tue, 27 Dec 2016 14:27:32 -0500

Hi all,

Apologies for taking so long to complete a review of this one.

Although my list of notes is long, there's nothing really substantive 
here. All of my comments are just suggestions to improve the document's 
clarity. Incorporate or discard as you see fit.

Please let me know if any of the following is unclear.

--Brandon

1. Introduction

I find the second paragraph a tiny bit difficult to read. Here's a
suggestion.

OLD:

   This document only describes how probing mechanisms are implemented
   with Session Traversal Utilities for NAT (STUN). The algorithm to
   find the Path MTU is described in [RFC4821].

NEW:

   This document describes probing mechanisms for Session Traversal
   Utilities for NAT (STUN) for use in implementing the Path MTU
   Discovery algorithm described in [RFC4821].

I also find the fourth paragraph a tiny bit difficult to read.

OLD:

   Additional network characteristics like the network path (using the
   STUN Traceroute mechanism described in
   [I-D.martinsen-tram-stuntrace]) and bandwidth availability (using the
   mechanism described in [I-D.martinsen-tram-turnbandwidthprobe]) can
   be discovered using complementary techniques.

NEW:

   Complimentary techniques can be used to discover addition network
   characteristics, such as the network path (using the STUN Traceroute
   mechanism described in [I-D.martinsen-tram-stuntrace]) and bandwidth
   availability (using the mechanism described in
   [I-D.martinsen-tram-turnbandwidthprobe]).

2. Overview of Operations

In paragraph three, the first "it" in the paragraph should be expanded.

OLD: ... then it initiates Probe transactions, ...

NEW: ... then the Client initiates Probe transacations, ...

Same comment for the next paragraph.

OLD: ... then it sends Probe Indications of various sizes ...

NEW: ... then the Client sends Probe Indications of various sizes ...

4. Probing Mechanisms

In paragraph six, I think the SHOULD requirement about retransmissions
belongs in section 4.1.1, which already describes this requirement in
other terms ("the Rc parameter ... is set to 3."). This part of section
4 should stick to providing the MUST/MAY requirements for which of the
mechanisms are to be implemented.

Additionally, I think that paragraph six could be moved to be text
for the currently empty section 4.1. Simple Probing Mechanism. In
that case, paragraphs 7-10 could be moved to be text for the
currently empty section 4.2. Complete Probing Mechanism. I think
moving the high-level descriptions of the two mechanisms into their
respective sections improves the document flow.

Finally, in the last paragraph of the section, it states "... the
client adds a sequence number in front of each UDP packet sent."
I think you mean "... the client prepends the UDP data with a
header that provides a sequence number." At least, this is what the
description in the later section indicates to me.

4.1.1. Sending a Probe Request

This section should indicate the STUN method type used for a Probe
Request (prefered) or forward reference section 8.1.

Regarding authentication, why would an implementation authenticate
the Probe transaction? Is doing so recommended? If so, why? This is
discussed later in security considerations, but it was unclear to me at 
this point in the document.

Regarding the FINGERPRINT attribute, why is it required?

4.1.2. Receiving a Probe Request

Here again, why is the FINGERPRINT attribute required?

4.1.3. Receiving a Probe Response

OLD: If the Probe transactions times out ...

NEW: If the Probe transaction times out ...

4.2.1. Sending the Probe Indications and Report Request

Why MUST the Probe Indication be authenticated, when this is not
required (only allowed) for a Probe Request? Here again, it's discussed 
later, but was unclear to me here.

Also, same question as above about FINGERPRINT here.

This section should indicate the STUN method type used for a
Report Request (prefered) or forward reference section 8.1.

4.2.3. Receiving a Probe Indication and Report Request

I suggest that you forward reference the section that describes
construction of the IDENTIFIERS attribute in the last paragraph.

4.2.4. Receiving a Report Response

The description of Probe Failure is a bit incomplete. It should
include a little more detail.

OLD:

   If the Probe Indication identifier cannot be found in the Report
   Response, this is interpreted as a Probe Failure, as defined in
   [RFC4821] Section 7.5.

NEW:

   If the Probe Indication identifier cannot be found in the Report
   Response but identifiers for other packets sent before or after
   the Probe Indication can all be found, this is interpreted as a
   Probe Failure as defined in [RFC4821] Section 7.5.

4.2.5. Using Checksums as Packet Identifiers

The second paragraph states "The algorithm used to calculate the
checksum is the same as the algorithm used for the FINGERPRINT
attribute." I find this description a bit unclear, since the
description of the FINGERPRINT calculation in RFC5389 discusses
the STUN header fields, etc. Here, you're just talking about
generating a CRC-32 value XORed with 0x5354554e. It might be
more clear to just say that.

5.2. Implicit Probe Support Signaling Mechanism

I'm a little concerned about the idea of just injecting probes
as a way to figure out whether the receiver supports them. It's
hard to know for every possible protocol that this will work and
will not break the protocol. Maybe add a cautionary note.

6.1. IDENTIFIERS

Sections 4.2.5. and 4.2.6. each describe 32 bit identifiers. I
think section 6.1. should say a little more than just "contents
are opaque". I suggest that you describe specifically what the
attribute value will look like if one of the two 32 bit schemes
is used and declare that other protocols may generate different
values.

6.2. PMTUD-SUPPORTED

For clarity, I suggest something a little more like the value
description of DONT-FRAGMENT from RFC5766.

OLD: This attribute is empty.

NEW:

   This attribute has no value part and thus the attribute
   length field is 0.

---

From: Marc Petit-Huguenin <[email-masked]>
Date: Tue, 27 Dec 2016 12:33:46 -0800

Thanks Brandon, your timing is perfect as I was planning to work on a new revision next week-end.

I'll send a more complete response when it is done.

On 12/27/2016 11:27 AM, Brandon Williams wrote:
> Although my list of notes is long, there's nothing really substantive here. All of my comments are just suggestions to improve the document's clarity. Incorporate or discard as you see fit.
> 
> discussed later in security considerations, but it was unclear to me at this point in the document.
> 
> required (only allowed) for a Probe Request? Here again, it's discussed later, but was unclear to me here.
> 
> _______________________________________________
> tram mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/tram
> 

-- 
Marc Petit-Huguenin
Email: [email-masked]
Blog: https://marc.petit-huguenin.org
Profile: https://www.linkedin.com/in/petithug