North American Network Operators Group

Date Prev | Date Next | Date Index | Thread Index | Author Index | Historical

Re: Instant IPv6 PI solution for everyone

  • From: Iljitsch van Beijnum
  • Date: Mon Nov 29 05:53:51 2004

On 29-nov-04, at 10:59, Owen DeLong wrote:

2002:<AB>:<CD>::/48, eg, 192.0.2.42 becomes 2002:c000:22a::/48, 6to4,
quite in use and works fine when the 6to4 relays are close-by for both
ends.

OK... Seems a bit messier, and more wasteful of address space, but, if we
want to blow away 4 billion /48s to accomodate v4 connectivity, it's not
like we'll miss them.
:-)

Say, you currently have 192.0.2.0/24 (IPv4 doc prefix, can't use ;) then
you thus also have 2002:c000:22a::/48 or larger of course, depending on
your IPv4 space, though a /48 should be enough for most folks.

Actually, I think that would be 2002:c000:0200::, but, that's not a /48,
it's a /40 (2002:c000:0200:: to 2002:c000:02ff::). One of us must be
confused.
2002:c000:0200:: is a single IPv6 address. Since last 1 bit is bit 38, it _could_ be the address part for a /40, but the 6to4 prefix for 192.0.2.0 is 2002:c000:0200::/48 = 2002:c000:0200:0:0:0:0:0 (generally written as 2002:c000:0200::) - 2002:c000:0200:ffff:ffff:ffff:ffff:ffff.

Use http://www.bgpexpert.com/ipv6tools/ to save yourself the headache. (-:

So I don't understand how this ends up actually working.  How does the
rest of the world know which 6to4 relay to send which IPv4 prefixes to?
There are four cases:

1. regular IPv6 host to regular IPv6 host
2. 6to4 host to 6to4 host
3. 6to4 host to regular IPv6 host
4. regular IPv6 host to 6to4 host

Case 1 will work through normal native IPv6 connectivity or configured tunnels. In case 2, the sending host will take the IPv4 address from the destination IPv6 address and slap on an IPv4 header with this address in it so the packet is tunneled directly from host to host without involvement from relays.

In case 3 the 6to4 host has an IPv6 default route towards a 6to4 relay so the packet are tunneled towards the relay. There is a well known anycast address for this, which is 2002:c058:6301:<something> in IPv6 which resolves to 192.88.99.1 in IPv4.

In case 4 the packet will be forwarded across the IPv6 internet towards the closest place where a 6to4 gateway announces 2002::/16, and there the gateway performs the 6to4 tunneling.

Of course in Windows all of this is much more complex but figuring that out is left as an exercise for the reader...

I wouldn't recommend using 6to4 to leverage IPv4 multihoming as an IPv6 multihoming solution though, since the extra detour to find a 6to4 relay may be significant. On the other hand, we could allow 2002:: more specifics in the IPv6 routing table as PI, because filtering those out doesn't immediately break connectivity.