On 10/5/10 12:32 PM, Phelan, Tom wrote:
[TomP] I am very against doing the checksum calculation twice, once for
UDP and then again for DCCP. In my opinion, implementations should know
which encapsulation is being used.
I hope I'm missing something, but ...
I'm *very* against usage-context sensitive protocol definitions.
Why should my DCCP stack need to know that it got wrapped in UDP
somewhere along the line?
If somebody wants to only generate one checksum, it is better that they
punt the UDP checksum.
Besides, my (admittedly old) copy of Stevens indicates that UDP
checksums are optional. Therefore, any random system routing the UDP
packets can legally smash that checksum, no?
In addition, on an embedded system, I have to carry the code around to
generate both a UDP checksum *and* a DCCP checksum if I have a DCCP
stack in order to comply with this encap. If the DCCP checksum is
extant, I can punt the UDP checksum code.
That's not being very nice to the people running small systems. So, for
example, if I want to run DCCP on a system with lwIP, I'm going to have
to go find the SO_NO_CHECK option in lwIP to enable UDP checksums, kick
it on, recompile *lwIP* (and reprogram my RTOS or similar), eat the code
space, and redeploy my *OS*--all just for DCCP. That's not going to win
many converts.
Whereas, if you don't force the UDP checksum on people, they can deploy
DCCP directly to application space without having to bash the lwIP/RTOS
that's already installed.
I would also like to point out, that it is *less* compute intensive for
DCCP to compute a checksum only on its headers (that is still in the
spec, right?) than for UDP to have to compute a checksum on the entire
DCCP packet.
So, given that all I can see are disadvantages, what am I missing? What
are the advantages to using the UDP checksum?
-a