You got one? Duh! You’re reading this so you’ve got one. You used it to get to this blog. Technically, I used it to get this blog back to you. But no matter. You know what that IPv4 address is worth? Well, in IPv4 land it’s worth exactly one (1) IP address. As I write, my public IPv4 address is 72.218.45.48. I’ve got a bunch of computers and other networked gadgets around the house, all of which are using private IP addresses that are NAT-ed to the public address and sent out into the great yonder we call the Internet. Ah, but you know all of this, right? I guess an IPv4 address is worth something more than an IPv4 loosey if you factor NAT into the equation. But, if you’ve read my other blog entries or had the lovely opportunity to hear my tirade against NAT during class or at a Taco Bell, you know that I hate NAT.
Do you know what your IPv4 address is worth on the IPv6 Internet? At first thought, you’d think nothing, right? Since I bother to bring it up you’d be wrong, of course. Your single IPv4 address (yes, even the one you are using at your house) is actually worth more IPv6 addresses than the whole of the IPv4 Internet …several trillion times over (at the very least). Let me explain.
IPv6 addresses are 128 bits long. IPv4 addresses are 32 bits long. The first 64 bits of an IPv6 address ultimately identify the network. The last 64 bits of an IPv6 address ultimately identify the node. This means that each network in IPv6 has 2EXP64 (2 to the 64th power) possible IPv6 addresses. That’s 18.4 quintillion possible nodes (and some change). Crazy huge, I know. So if you had 2 networks you’d have 36.8 quintillion possible IPv6 addresses. Three networks would give you 55.2 quintillion possible nodes and so on. It may surprise you to know that your single IPv4 address is already pre-mapped to not one, not two and certainly not three IPv6 networks; it’s mapped to 65,536 IPv6 networks. That means your lonely little IPv4 address actually represents 18.4 quintillion X 65,536 possible IPv6 addresses. All for you. You better get shopping. You need more toys that have IP addresses.
But how? How does a single IPv4 address become so many? IPv6’s architects created a nifty little mechanism called 6to4 that actually does what I’m describing. They started with a prefix of 2002::/16 and told us to take our 32-bit IPv4 addresses, convert them into hex and append them to the 2002. Converting my current IPv4 address (70.218.45.48) to hex gives me 48.DA.2D.30. If I drop the dots we use in IPv4 and insert the colons we use in IPv6 it will be 48DA:2D30. Append that to the 2002 and I’ve got 2002:48DA:2D30. That’s a total of 48 bits (2002 is 16 bits + my 32 bit IPv4 address, now expressed in hex). Writing that in official IPv6 syntax it will be 2002:48DA:2D30::/48. Earlier I said that the network portion of an address was ultimately 64 bits long? Well, here are the first 48 of them. The next 16 bits (48+16=64) are your subnet bits. Sixteen subnet bits have 65,536 possible combinations. That means you have 65,536 possible subnets. Mine, for instance are:
2002:48DA:2D30:0000::/64 (which is actaully written as 2002:48DA:2D30::/64)
2002:48DA:2D30:0001::/64 (which is actaully written as 2002:48DA:2D30:1::/64)
2002:48DA:2D30:0002::/64 (which is actaully written as 2002:48DA:2D30:2::/64)
2002:48DA:2D30:0003::/64 (which is actaully written as 2002:48DA:2D30:3::/64)
2002:48DA:2D30:0004::/64 (which is actaully written as 2002:48DA:2D30:4::/64)
2002:48DA:2D30:0005::/64 (which is actaully written as 2002:48DA:2D30:5::/64)
2002:48DA:2D30:0006::/64 (which is actaully written as 2002:48DA:2D30:6::/64)
2002:48DA:2D30:0007::/64 (which is actaully written as 2002:48DA:2D30:7::/64)
2002:48DA:2D30:0008::/64 (which is actaully written as 2002:48DA:2D30:8::/64)
2002:48DA:2D30:0009::/64 (which is actaully written as 2002:48DA:2D30:9::/64)
2002:48DA:2D30:000A::/64 (which is actaully written as 2002:48DA:2D30:A::/64)
2002:48DA:2D30:000B::/64 (which is actaully written as 2002:48DA:2D30:B::/64)
2002:48DA:2D30:000C::/64 (which is actaully written as 2002:48DA:2D30:C::/64)
2002:48DA:2D30:000D::/64 (which is actaully written as 2002:48DA:2D30:D::/64
2002:48DA:2D30:000E::/64 (which is actaully written as 2002:48DA:2D30:E::/64)
2002:48DA:2D30:000F::/64 (which is actaully written as 2002:48DA:2D30:F::/64)
2002:48DA:2D30:0010::/64 (which is actaully written as 2002:48DA:2D30:10::/64)
2002:48DA:2D30:0011::/64 (which is actaully written as 2002:48DA:2D30:11::/64)
……….
…………….
………. 65,500 or so subnets later…….
2002:48DA:2D30:FFFF::/64 - the very last subnet.
Guess what? Yours are too. Notice that the first 48 bits never changed? Those are for you. So, I don’t want to hear any discussion about how you can’t tinker with IPv6 because you don’t have any IPv6 addresses available to you. It’s just not true. Now, go play.
How do you play with this shiny new toy? Well, tunnels are fun. Especially if your current ISP is the suck and doesn’t offer native IPv6 connectivity (like mine). Ask me and I’ll tell you how. It’s pretty cool.
Colin Weaver









