Subject: Re: Last Call: <draft-ietf-6man-udpchecksums-06.txt> (IPv6 and UDP Checksums for Tunneled Packets) to Proposed Standard

From: John William Atwood <[email-masked]>
Date: Mon, 17 Dec 2012 18:56:09 -0500

Comments on draft-ietf-6man-udpchecksums-06

The following are comments on grammatical issues with the above-noted
document.  I apologize for waiting until IESG last call to make these
comments.

Abstract, line 5.  "for suitable" -> "for a suitable"

Page 3, para 4, line 2.  "Automatic IP Multicast Without Explicit
Tunnels" -> "Automatic Multicast Tunneling"

Page 4, section 3, para 1, second sentence.  This sentence has two
subordinate clauses and no principal clause.  I suggest removing the
second "where": in line 5:
"software, where the cost" -> "software, the cost"

Page 5, section 4.1, para 1, lines 4-5.  "thought safe" -> "thought to
be safe"

Bullet 1, line 1.  "Context (i.e. tunneling" -> "Context (i.e.,
tunneling)  (See below for the explanation.)

Line 9.  "that affect not only the" -> "that may affect much more than the"

Bullet 2, line 8.  "with both a non-zero-checksum and ones" -> "with a
non-zero-checksum and datagrams"   (There are two things wrong here.
First, the use of "both" could be taken to imply that the datagrams must
have both types of checksums (in the same packet), which is not what you
intend.  Second, when "both" is used, the two things referenced by
"both" should be "equal" grammatically.  In this case, one is "non-zero
checksum" and the other is "ones" (i.e., datagrams).  The proposed
rewording removes these problems.)

Bullet 3, line 1.  "packets" -> "packet"

Line 2.  "i.e." -> "i.e.,"

Line 4.  "i.e." -> "i.e.,"

Note:  Bullets 1 and 2 each begin with a sentence: "Context should be",
"Keep-alive datagrams should be".  Bullet 3 begins with a "header",
which is not a sentence.  In addition, it appears to me that you are
listing four things in the first sentence, and five things in the second
sentence.  Finally, you talk about the "protocol" with two senses in
sentence two.  I suspect that the second reference is really the
"protocol number" inside the tunneled packet.  You might consider
restructuring the first two sentences of the third bullet as follows:

"An attempt should be made to detect corruption of the address
information in an encapsulating packet.  A robust tunnel protocol should
track tunnel context based on the 5-tuple (tunneled protocol number,
IPv6 source address, IPv6 destination address, UDP source port, UDP
destination port)."

The third sentence should be left as it is.

Bullet 3, sub-bullet 1.  What does it mean, "the 5-tuple with a zero
checksum enabled"?  I _believe_ that you are trying to indicate that the
delivery mechanism has a data structure with the 5-tuple and an
indication that this context has enabled zero checksums and that the
incoming packet has a zero checksum and that the 5-tuple matches the one
in the data structure.  I am not sure what to suggest, but the potential
for erroneous coding seems high to me.

Bullet 3, sub-bullet 1.  If a payload is matched to the wrong context,
why is it delivered as if it were correct?  Is there something that I am
missing here?

Bullet 4 (on page 6).  Again, there is a "header", not a sentence.
However, at least this time the header ends with a colon, rather than a
period.

Page 7, Section 4.2, bullet 1, line 1.  "semantics that" -> "semantics,
which"  (See note at the end about which/that.)

Line 8.  "that an" -> "that any"

Bullet 3, line 5.  "effect" -> "affect"

Page 8, Bullet 1, line 6.  "spend" -> "spending  (to match "processing")

Section 4.3, line 5.  "needs" -> "need"  (has to agree with "protocols".)

Page 9, replacement text, para 1, lines 6-9.  This sentence has no
subject.  I suggest the following text:

"As an alternative usage for some protocols, such as protocols that use
UDP as a tunnel encapsulation, the zero-checksum mode MAY be enabled for
specific sets of ports."

I note, however, that the phrase "zero-checksum mode" is probably not
defined anywhere in RFC2460, so it may be necessary to be more specific
here: "a packet with a zero checksum MAY be allowed for specific sets of
ports."

NOTE on use of "which" and "that".  "that" is used when the phrase
following it is _required_ if we are going to be able to completely
identify what is being talked about, while "which" is used to introduce
supplementary information.  Some examples:

1) If there are three houses on the street, and only one of them is at
the corner, then you say:
"The house that is on the corner needs to be painted."
2) If there are three houses on the street, and only one of them is
yellow, then you say:
"The yellow house, which needs to be painted, is for sale."

In the first case, the observer cannot identify the exact house until
its position is given.  In the second case, the house is completely
identified by its colour, and the information about the need to be
painted is supplementary information.  This information is set off with
commas, and introduced with "which".

NOTES on the use of "i.e." and "e.g.".
"i.e." is an abbreviation for "id est", a Latin phrase meaning "that
is".  As such, it should be punctuated as if it were the full phrase.
Unless there is a parenthesis on one side or the other, it is always
preceded by a comma and a space, and always followed by a comma.
"e.g." is an abbreviation for "exempli gratia", a Latin phrase meaning
"for example".  It should also be punctuated as if the full phrase were
present.  Unless there is a parenthesis on one side or the other, it is
always preceded by a comma and a space, and always followed by a comma.

On 12/11/2012 8:15 PM, The IESG wrote:
> 
> The IESG has received a request from the IPv6 Maintenance WG (6man) to
> consider the following document:
> - 'IPv6 and UDP Checksums for Tunneled Packets'
>   <draft-ietf-6man-udpchecksums-06.txt> as Proposed Standard
> 
> The IESG plans to make a decision in the next few weeks, and solicits
> final comments on this action. Please send substantive comments to the
> [email-masked] mailing lists by 2012-12-25. Exceptionally, comments may be
> sent to [email-masked] instead. In either case, please retain the
> beginning of the Subject line to allow automated sorting.
> 
> Abstract
> 
> 
>    This document provides an update of the Internet Protocol version 6
>    (IPv6) specification (RFC2460) to improve the performance in the use
>    case when a tunnel protocol uses UDP with IPv6 to tunnel packets.
>    The performance improvement is obtained by relaxing the IPv6 UDP
>    checksum requirement for suitable tunneling protocol where header
>    information is protected on the "inner" packet being carried.  This
>    relaxation removes the overhead associated with the computation of
>    UDP checksums on IPv6 packets used to carry tunnel protocols.  The
>    specification describes how the IPv6 UDP checksum requirement can be
>    relaxed for the situation where the encapsulated packet itself
>    contains a checksum.  The limitations and risks of this approach are
>    described, and restrictions specified on the use of the method.
> 
> 
> 
> 
> The file can be obtained via
> http://datatracker.ietf.org/doc/draft-ietf-6man-udpchecksums/
> 
> IESG discussion can be tracked via
> http://datatracker.ietf.org/doc/draft-ietf-6man-udpchecksums/ballot/
> 
> 
> No IPR declarations have been submitted directly on this I-D.
> 
> 

-- 
Dr. J.W. Atwood, Eng.             tel:   +1 (514) 848-2424 x3046
Distinguished Professor Emeritus  fax:   +1 (514) 848-2830
Department of Computer Science
   and Software Engineering
Concordia University EV 3.185     email:[email-masked]
1455 de Maisonneuve Blvd. West    http://users.encs.concordia.ca/~bill
Montreal, Quebec Canada H3G 1M8

---

From: Magnus Westerlund <[email-masked]>
Date: Tue, 18 Dec 2012 11:31:45 +0100

Thanks John

The editorial nits we will take care of in an update. Many of these are
new due to the significant changes, and this is in fact the first chance
to comment on them. Thus, do not feel bad for it being IETF last call.

> for erroneous coding seems high to me.

A packet matching an existing context which has zero checksum enables
receives a packet not intended for this context, but due to some
corruption event of the address information it arrives in this context.

You are correct that there is basically nothing you can do against this
unless you actually have a checksum to detect the corruption. In the
case of a tunneling protocol is is also likely that the tunneling
protocol is so thin, i.e. no or few headers that using them to detect
that this packet is not intended for this context is difficult.
Correctly I think this is something you have to accept when using
non-checksum protected receivers. It can occur but more than 10000 times
as common when using Internet checksums.

> why is it delivered as if it were correct?  Is there something that I am

The receiving context interprets the packet according to the rules of
the existing context. If nothing in this processing is tripped then what
was in that packet will be used as a valid packet in that context.

To be clear here, we are describing the cases using full knowledge of
what occurs, but the receiving node can't see the difference between a
corrupted zero-checksummed packet and a correct one. That is what it
requires the checksum to do.

> here: "a packet with a zero checksum MAY be allowed for specific sets of

The zero-checksum mode is intended to be defined by this text, where the
zero-checksum mode is defined by the rules in draft-ietf-6man-udpzero. I
have some difficulties determining what changes would improve this.

Cheers

Magnus Westerlund

----------------------------------------------------------------------
Multimedia Technologies, Ericsson Research EAB/TVM
----------------------------------------------------------------------
Ericsson AB                | Phone  +46 10 7148287
Färögatan 6                | Mobile +46 73 0949079
SE-164 80 Stockholm, Sweden| mailto: [email-masked]
----------------------------------------------------------------------