Subject: [MBONED] UDP Header draft for IPv6 AMT

From: Marshall Eubanks <[email-masked]>
Date: Tue, 16 Dec 2008 21:17:22 -0500

Hello;

Brian, Phil and I had lunch today and discussed the draft to allow  
zero checksums in IPv6 UDP under
certain circumstances.

Upon a careful reading of the AMT I-D it seems, based on discussions in
Minneapolis, that some people might be confused as to the situation  
and the proposed solution. In order to make things clear, I
wanted to go over this from the beginning. As one of those confused  
people might be me, please
feel free to correct me if I state it wrong.

AMT is a tunneling protocol which places an entire original Multicast  
UDP packet
inside another UDP packet. Both of these packets therefore have UDP  
headers and fields for UDP checksums. To make
it clear which we are referring to, we have been speaking of the  
"inner" header (the header of the
multicast data packet being encapsulated) and the "outer" header (the  
header of the packet encapsulating
the original data packet). The draft draft-ietf-mboned-auto- 
multicast-09.txt
refers to the inner packet as the "Multicast Data" and the outer  
packet as the "AMT Data message." Section 6.6 says :
6.6. AMT IP Multicast Data
The AMT Data message is a UDP packet encapsulating the IP Multicast  
data requested by the originator based on a previous AMT Membership  
Update message. It is sent from the unicast destination address of the  
Membership update to the source address of the Membership Update. The  
UDP source and destination port numbers should be the same ones sent  
in the original Query. The UDP checksum SHOULD be 0 in the AMT IP  
Multicast Data message.
-----
Now, it seems to me that this is a little unclear and needs  
amplification. If you read it carefully, it says that the _outer_  
headerUDP checksum should be zero, while the _inner_ header UDP  
checksum continues to protect the original multicast data (i.e., the  
contents of the original multicast packet), but it seemed clear to me  
in Minneapolis that some people thought that the _inner_ header  
checksum should be zero, while the _outer_ header checksum would  
protect the data against alteration. So

1.) I would suggest changing 6.6 to say
  The UDP checksum SHOULD be 0 in the AMT IP Multicast Data message  
(i.e., the packet encapsulating the original Multicast data
message).

2.) The above behavior is not currently allowed in IPv6. RFC2460 in  
Section 8.1 says
o Unlike IPv4, when UDP packets are originated by an IPv6 node, the  
UDP checksum is not optional. That is, whenever originating a UDP  
packet, an IPv6 node must compute a UDP checksum over the packet and  
the pseudo-header, and, if that computation yields a result of zero,  
it must be changed to hex FFFF for placement in the UDP header. IPv6  
receivers must discard UDP packets containing a zero checksum, and  
should log the error.

The whole point of our current effort is to allow this for AMT, and I  
wanted to make it clear that this will entail sending of unprotected  
IPv6 UDP packets across the Internet with checksums = 0. The reason  
for this is that the inner packet is still protected; the AMT authors  
feel strongly that routers receiving AMT IP Multicast Data messages  
should not be required to perform checksum operations, and that these  
are already done by the source and receivers of the "inner" Multicast  
packet. We understand that it is necessary that this exemption to 2460  
be very narrowly focused.

In Minneapolis, various people told me that they thought that there  
were other protocols that might need this or find it useful, but  
Brian, Phil and I were unable to come up with any examples we regarded  
as valid today.
If anyone feels that they know of other such protocols, please let us  
know.

Regards
Marshall

_______________________________________________
MBONED mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/mboned