> We do a SIIT (Stateless IP/ICMP Translator) for the Linux kernel (2.2.14).
>
> ------------- -------- -------------
> | IPv6 only |----| SIIT |--------| IPv4 only |
> ------------- -------- -------------
> The IPv6 only host must send the packet with
> source address: IPv4 TRANSLATED IPv6 (::ffff:0:0:0/96 prefix)
> dest. address: IPv4 MAPPED IPv6 (::ffff:0:0/96 prefix)
>
> The SIIT gets the source and destination embedded addresses, drop the IPv6
> header (and the extension headers), put an IPv4 header into the packet,
> and send it.
>
> We have the following problem: if we want to connect to an IPv4_MAPPED
> address with IPv6, it opens an IPv4 socket instead of IPv6.
>
Here we got a problem for our box is not a real *IPv6-only* box.
i.e., it has a IPv4 implemention witch make the box a dual stack box.
In the dual stack kernel, when it finds a IPv4-mapped address as the dest
address, the kernel will use IPv4. So there is a rule: a dual stack kernel
dosen't need a SIIT, since it can understand both IPv6 and IPv4; while a
IPv6-only or IPv4-only box needs SIIT(RFC 2764) or NAT-PT(RFC 2765).
--Wang Hui.
IPv4 is IP before.
http://v6RT.ecn.6test.edu.cn/
|