IPv4 Free Pool Drops Below 10%, 1.0.0.0/8 Allocated
mysidia writes "A total of 16,777,216 IP address numbers were just allocated to the Asian Pacific Network Information Centre IP address registry for assignment to users. Some venerable IP addresses such as 1.1.1.1 and 1.2.3.4 have been officially assigned to the registry itself temporarily, for testing as part of the DEBOGON project. The major address blocks 1.0.0.0/8 and 27.0.0.0/8, are chosen accordance with a decision by ICANN to assign the least-desirable remaining IP address ranges to the largest regional registries first, reserving most more desirable blocks of addresses for the African and Latin American internet users, instead of North America, Europe, or Asia. In other words: of the 256 major networks in IPv4, only 24 network blocks remain unallocated in the global free pool, and many of the remaining networks have been tainted or made less desirable by unofficial users who attempted an end-run around the registration process, and treated 'RESERVED' IP addresses as 'freely available' for their own internal use. This allocation is right on target with projected IPv4 consumption and was predicted by the IPv4 report, which has continuously and reliably estimated global pool IP address exhaustion for late 2011 and regional registry exhaustion by late 2012. So, does your enterprise intranet use any unofficial address ranges for private networks?" Reader dude_nl sends in a summary of the issues with allocating from 1.0.0.0/8 from the BGPmon.net blog. "As Alain Durand mentioned on Nanog: 'Who said the water at the bottom of the barrel of IPv4 addresses will be very pure? We ARE running out and the global pain is increasing.'"
Run this script to get your own IPv6 address today:
CUR_IP=(`ip -4 addr show ${CUR_DV} | awk '/inet / { print $2 }' | sed -e 's/^\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*$/\1/'`)
IPV6_ADDR=$(printf "2002:%02x%02x:%02x%02x:%04x::%04x" $(echo "${CUR_IP} ${SLA_INTF} ${INTF_ID}" | tr '.' ' '))
ip tunnel add tun6to4 mode sit remote any local ${CUR_IP} ::/0 via ::192.88.99.1 dev tun6to4 metric 1
ip link set dev tun6to4 up
ip -6 addr add ${IPV6_ADDR}/64 dev tun6to4
ip -6 route add 2002::/16 dev tun6to4
ip -6 route add
Install radvd if you want to share your new IPv6 subnet with other people on your local network.
This is all it takes. You do not need to wait for your ISP to get a clue.
Only problem is this does not work with NAT.
When I discovered m0n0wall 1.3 hit the pavement, with support for IPv6, I made the move to transition my home network to v6, for no other reason than it seemed like an interesting thing to do (what can I say, I like to tinker). In the process, I looked to moving all my services to v6... obviously I can't completely abandon v4 internally, but I figured, why not move all my internal stuff over? Problem is, among the software I use, the following don't support v6 at all:
Linux NFS client and server
MySQL
MythTV
rtorrent
m0n0wall's VPN implementations (both IPSec (ironically) and PPTP)
And those are just the first four that popped up (though at least I was able to patch rtorrent). God knows what other software out there doesn't support v6. Of course, many of these things can live in private v4 networks for the time being, but until application vendors catch up with the times, it seems v4 and v6 will be living side-by-side for a long time to come.
I actually called my ISP last week and asked if I could get an IPv6 address. They told me Cisco said they won't have to worry about it for at least a couple of years, so they (my ISP) haven't even started thinking about it, yet. I guess they're going to wait until the last IPv4 addresses run out and have a mad rush to assign IPv6 addresses. That'll be fun...
Sit, Ubuntu, sit. Good dog.
There has been an increasing amount of IPv6 support out there. Part of the problem in terms of going IPv6 right away is that many of the high end routers out there accelerate IPv4 but don't accelerate IPv6. Basically when you deal with large amounts of data, it is infeasible to do everything in software. So you have ASICs to help speed everything up. Works great, but said ASICs have limits to what they can do and being hardware, can't simply be reprogrammed. This means you have to buy new hardware to support IPv6, which is of course expensive.
We had that situation on the campus I work on a few years ago. Some people were wanting IPv6 but we didn't support it. Technically, it could be enabled and run on the routers' CPUs but that would only work if a few people used it. If usage got higher, the routers would crash under the load. We needed new routers (or more properly new supervisor modules for them) to support it. However, it was really expensive, a few million for all of campus. That money was not going to be spent just so people could play with IPv6.
However, we've had to upgrade the routers anyhow to support more traffic and such, so now they have IPv6 hardware and IPv6 is routed on campus.
Thus I think you'll see this continue to happen. New hardware supports IPv6, companies will get it, and will then be able to support IPv6 no problem. It just won't be an immediate process. They aren't going to go and buy IPv6 hardware just to get IPv6 support if they don't need it. However, when they need new hardware anyhow, the stuff they get will have IPv6 support.
I think we are more likely to see a gradual change. More and more networks will start supporting IPv6, and people will start using it because it'll be cheap. An ISP will say something like "Well sure, you can buy IPv4 addresses for $10/month each, however your account includes more IPv6 addresses than you can ever use for free anyhow." So people will start using it.
POSIX support is easy if you use the new generic getaddrinfo and getnameinfo. Code needs to be ported from the old way which hardcoded IPv4 addresses (AF_INET). A properly written program will support both IPv4 and IPv6 and will use the right one based on network interfaces and DNS.