Subject: [v6ops] Why is 0 UDP checksum not valid for IPv6?

From: Naveen Kottapalli <[email-masked]>
Date: Thu, 5 Jan 2017 14:13:18 +0530

Hello,

Can anyone tell why is 0 UDP checksum isn't valid for IPv6, whereas it is
valid for IPv4?

Yours,
Naveen.

---

From: [email-masked]
Date: Thu, 5 Jan 2017 10:32:51 +0100

Naveen,

> Can anyone tell why is 0 UDP checksum isn't valid for IPv6, whereas it is valid for IPv4?

RFC6935
RFC6936

Cheers,
Ole

---

From: Naveen Kottapalli <[email-masked]>
Date: Thu, 5 Jan 2017 15:37:55 +0530

I see those two RFCs talk mainly about the usage of UDP in tunneled
protocols, but couldn't find why it is mandated for a normal plain IPv6
packet carrying a UDP payload with a DNS query or a response.

In general am trying to find the reason why it is mandated in IPv6 base
specification (RFC2460) itself.

Can you please clarify on the above?

Yours,
Naveen.

---

From: Havard Eidnes <[email-masked]>
Date: Thu, 05 Jan 2017 11:11:02 +0100 (CET)

> Can you please clarify on the above?

6936 says:

   The key difference between UDP usage with IPv4 and IPv6 is that RFC
   2460 mandates use of a calculated UDP checksum, i.e., a non-zero
   value, due to the lack of an IPv6 header checksum.

Regards,

- Håvard

---

From: Naveen Kottapalli <[email-masked]>
Date: Thu, 5 Jan 2017 15:49:41 +0530

Thanks a lot.

Yours,
Naveen.

---

From: Fred Baker <[email-masked]>
Date: Thu, 5 Jan 2017 08:10:13 -0800

> On Jan 5, 2017, at 2:07 AM, Naveen Kottapalli <[email-masked]> wrote:
> 
> I see those two RFCs talk mainly about the usage of UDP in tunneled protocols, but couldn't find why it is mandated for a normal plain IPv6 packet carrying a UDP payload with a DNS query or a response.

The primary difference that triggered this is that whereas IPv4 has a header checksum, IPv6 does not, and there have been anecdotal reports of checksum errors being found in IPv4 packets in the wild. The IPv6 designers, mid-1990's, felt that not having a checksum AT ALL left room for concern, and leaving it to the application was too loose a rule.