How does 6rd (IPv6 Rapid Deployment) route over the public internet?
First 6to4:
6to4 allows IPv6 Packets to be transmitted over IPv4. It's used to connect two IPv6 'islands' - not enable IPv4 to talk to IPv6 or vice versa. IPv6 address 2002:AABB:CCDD:: becomes IPv4 address AA.BB.CC.DD and you slap a IPv4 packet header onto the IPv6 header, and forward that sucker off through the IPv4 network.
If I send a packet from one IPv6 Island in the 2002:AABB:CCDD:: space to another, my local 6to4 border router will recieve it, wrap it in IPv4 to AA.BB.CC.DD and forward it there. AA.BB.CC.DD is another 6to4 border router on an island who unwraps the IPv4 and sends it to the IPv6 address.
If I send a packet from an IPv6 Island in 2002:AABB:CCDD:: to a native IPv6 address like 2054::45, it will go to my border router who wraps it in IPv4 to 192.88.99.1 - the IPv4 anycast 6to4 Relay Router address. The nearest relay router (which could be run by anyone) will get it and unwrap it and forward it to the IPv6 address specified. To reply, 2054::45 will reply to my 2002:: address, which will be routed to the nearest relay router (who advertises it handles 2002::/16). The relay router will then wrap it in IPv4 to the AA.BB.CC.DD address where it goes to my border router, is unwrapped and sent to me.
I think I understand that right. It's 6rd I'm having problems with.
Sending a packet from my IPv6 Island to another 6rd island is the same as sending to a native IPv6 address - right? Because the ISP's 6rd router is in its assigned IPv6 address space, the IPv6 routers don't know it's a 6rd island.
If the 6rd island I'm trying to contact isn't connected to the broader IPv6 Internet - there's no way to reach it, right? It would need to go over IPv4, but my 6rd border router doesn't know how to turn an arbitrary IPv6 address into an IPv4 address... does it? And on the reverse trip, there's no 6rd relay router in the IPv6 internet to translate an IPv6 packet to what looks like a normal IPv6 address into IPv4 and send it to the right location.
Inside a single ISP:
6rd island - [6rd Border Router] - IPv4 ISP Internet - [6rd Border Router] - 6rd Island
This works fine, because the ISP controls the routes and can add routes to the 6rd Routers saying "If you're trying to reach 2054::something, send it over IPv4 to a.b.c.d. But I don't understand how 6rd routes over the broader IPv4 or IPv6 Internet.
Solution 1:
6rd is only used between the Border Relays (BR) operated by the ISP and the customer-router (CPE) at the user site. The user internally uses native IPv6. The prefix for this is calculated from (part of) the external IPv4 address and the IPv6 prefix provided by the ISP. This is not a special prefix as with 6to4 but a normal prefix that the ISP got from the regional internet registry. The CPE will encapsulate the native IPv6 traffic in IPv4 and send it over the ISP IPv4-backbone to the BR. There the packed is decapsulated and sent on to the real native IPv6 internet.
So the 6rd packets never travel over the public internet. You will only see them between the CPE and the BR. On the internal network of the user and on the internet it will just be plain native IPv6 traffic.
PS: Provisioning the CPE with the correct settings (IPv6 prefix, addresses of the BRs, which part of the IPv4 address to include in the IPv6 prefix) is usually done with DHCP for IPv4, but manual configuration is also possible on most CPEs.