IPv6 over IPv4

From Exterior Memory
Jump to: navigation, search
This article is unfinished.

Multiple mechanisms exist to transport IPv6 traffic over an IPv4-only network.

RFC 2893 - Transition Mechanisms for IPv6 Hosts and Routers

Uses 0::0:V4ADDR and 0::FFFF:V4ADDR addresses (first to signify host has both IPv4 and IPV6 address; second that host has no valid IPv6 address)

Section 2.5.5 of RFC 3513 ("IPv6 Addresses with Embedded IPv4 Addresses") says:

  The IPv6 transition mechanisms [TRAN] include a technique for hosts
  and routers to dynamically tunnel IPv6 packets over IPv4 routing
  infrastructure.  IPv6 nodes that use this technique are assigned
  special IPv6 unicast addresses that carry a global IPv4 address in
  the low-order 32 bits.  This type of address is termed an "IPv4-
  compatible IPv6 address" and has the format:
  |                80 bits               | 16 |      32 bits        |
  |0000..............................0000|0000|    IPv4 address     |
  Note: The IPv4 address used in the "IPv4-compatible IPv6 address"
  must be a globally-unique IPv4 unicast address.
  A second type of IPv6 address which holds an embedded IPv4 address is
  also defined.  This address type is used to represent the addresses
  of IPv4 nodes as IPv6 addresses.  This type of address is termed an
  "IPv4-mapped IPv6 address" and has the format:
  |                80 bits               | 16 |      32 bits        |
  |0000..............................0000|FFFF|    IPv4 address     |

RFC 2529 - Transmission of IPv6 over IPv4 Domains without Explicit Tunnels

Name: "6over4"

Uses part of the link-local address space: FE80::V4ADDR

Uses IP protocol 41

RFC 3056 - Connection of IPv6 Domains via IPv4 Clouds

Name: "6to4"

Uses 2002:V4ADDR::/48 addresses

Uses IP protocol 41

Can be fully automatic. Very useful to give end-nodes an IPv6 address, while they're in a IPv4 network.

Compatible routers who can make the transition from 6to4 to IPv6 and visa versa (6to4 Relay Routers) do so by announcing the special IPv4 address in the IPv4 namespace. See RFC 3068 - An Anycast Prefix for 6to4 Relay Routers for details.

printf "2002:%02x%02x:%02x%02x::1" `echo $ipv4 | tr "." " "`
printf "%d.%d.%d.%d" `echo $ipv6 | sed 's/2002:\(..\)\(..\):\(..\)\(..\):.*/0x\1 0x\2 0x\3 0x\4/'`


RFC 4380 - Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs)

Uses 2001:0000:V4ADDR:FLAGS:PORT:V4ADDR/32 addresses (The first V4ADDR is the server IPv4 address; the second V4ADDR is the Client IPv4 address)

Uses UDP (IP protocol 17)

Relatively new RFC, deployment status and goal is not entirely clear to me at the time of this writing.