Subject: Use of "IPv6" headers in IPv4?

From: Markku Savela <[email-masked]>
Date: Mon, 10 Apr 2000 16:29:40 +0300 (EET DST)

[I sent a message earlier to the list, but it appears to have lost]

While implementin a dual IPv6/Ipv4 stack I observed that the code was
happy to reply to ICMP6 Echo requests (protocol 58) that were directly
under IPv4 header (and my PING program was happy too...).

Similar feature seems to apply many other "IPv6" headers, I could have
Destination options, IPv6 fragment headers, etc. in plain
IPv4. Hmm.. Home address option? Routing headers?

The question is how much extra effort should I put into disabling
these things, or can I just call it a "feature"? :-)

-- 
Markku Savela ([email-masked]), Technical Research Centre of Finland
Multimedia Systems, P.O.Box 1203,FIN-02044 VTT,http://www.vtt.fi/tte/staff/msa/
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [email-masked]
--------------------------------------------------------------------

---

From: Markku Savela <[email-masked]>
Date: Mon, 10 Apr 2000 17:43:58 +0300 (EET DST)

> => and your ICMPv6 checksum check too?

Yes, naturally. The ICMPv6 checksum does not care what the IP header
was (of course, in ICMP6 in IPv4 case the pseudoheader is computed
using IPv4 mapped addresses).

> => you can get two problems:
>  - an IPv6 header and an IPv4 protocol with the same number but nothing
>    else in common (both spaces are 8 bit long, this is both large
>    and narrow :)

I can see that a router advertisement ICMP will not work inside Ipv4
frame, because there is no equivalent of link local address in Ipv4,
but this is required for router advertisement. But, unless no similar
"second level rule" prevents fully processing IPv6 header inside IPv4,
then why not let it go? That was my question about...

>  - pseudo-headers are very different for IPv4 and IPv6.

As said, in case of IPv4, the IPv6 upper layer pseudoheaders are
computed using IPv4 mapped addresses. Seems to work fine for TCP and
UDP, same code works for both IPv4 and IPv6.

---

From: Francis Dupont <[email-masked]>
Date: Mon, 10 Apr 2000 16:25:10 +0200

In your previous mail you wrote:

=> I've never seen it...

   
=> I can't find a reasonable meaning when an address is involved
(case of the home address option or not empty/useless routing headers).

=> you can get two problems:
 - an IPv6 header and an IPv4 protocol with the same number but nothing
   else in common (both spaces are 8 bit long, this is both large and narrow :)
 - pseudo-headers are very different for IPv4 and IPv6.

IMHO the only reasonable way to mix directly IPv4 and IPv6 is
by encapsulation (link-layer addresses for IPv6 over IPv4 tunnels,
as in 6over4 (RFC 2529), are another case but addresses are not at the
same layer).

Regards

[email-masked]