Hi Tom,
Thanks very much for having a look and providing feedback.
Post by Tom HerbertPost by Mark SmithHi,
I've been thinking about this for a while and finally put together a
draft. It's partly the next step on from a draft I wrote a few years
ago ("Enhancing Virtual Network Encapsulation with IPv6") and also in
response to the recent inserting EH's proposals.
Mark,
In section "9.1. Skinny IPv6-in-IPv6 EH Construction" I think you need
to consider the checksum for protocols that include a pseudo header.
Since the IP addresses are being changed in the packet the TCP or UDP
checksum should be updated to reflect that in the encap/decap
procedures.
I don't think they need to be, as the TCP or UDP checksum isn't
evaluated by any device while the inner packet is being carried over
the Skinny IPv6-in-IPv6 tunnel.
When the reconstructed inner packet arrives at the final destination
where the TCP or UDP checksum is evaluated, it will be post Skinny
IPv6-in-IPv6 decapsulation, and therefore any Skinny IPv6-in-IPv6
related addressing changes that would have caused the TCP or UDP
checksum to be invalid should have been completely reversed.
Post by Tom HerbertHowever, I think the the bigger problem is that when the
original addresses are moved to an extension header they would no
longer be included in any checksum and so corruption of the EH could
ultimately lead to misdelivery. Maybe the EH should include a
checksum?
I think that same risk exists with vanilla IPv6 packets, since there
is no IPv6 Header Checksum, as there was in IPv4.
Post by Tom HerbertFrom memory, I understand from Christian's "IPv6 - The New Internet
Protocol" book (really good for lots of the reasons why IPv6 is the
way it is), that it was decided the risks of delivery to the wrong
node were worth it compared to the performance gains of not evaluating
a per-hop IPv6 header checksum. Protection against corruption over a
link is provided by a link-layer checksum, and as this was the reason
why the UDP checksum became mandatory, end-to-end TCP, UDP etc.
checksums protect against corruption inside devices like routers.
So delivery to the wrong node is possible, however that node will
ignore it because TCP, UDP etc. checksum will fail.
Skinny IPv6-in-IPv6 is using IPv6 as a virtual link-layer, so it could
be argued this should have a link-layer checksum, however there will
be real link-layers underneath with checksums, so a checksum in Skinny
IPv6-in-IPv6 is probably not necessary.
I'm not against including a checksum if useful and know that GRE does
have that option. I'm not sure how often the GRE checksum option is
used, although I haven't heard of it being used and I'm around people
who might. A search for "GRE checksum" only finds one link on the
first page of the search results that is related to operationally
enabling it, and the person answering the question also says in their
experience it isn't commonly used.
I'll look to include some of the above comments in the draft as they
sound like they could be common queries.
Thanks again for having a look.
Regards,
Mark.