InfoQ Live Feb 22: How do traditional security approaches scale in Cloud Native architectures? Register Now
InfoQ Homepage News 100 days of IPv4 left
Using Reinforcement Learning To Beat Go Masters and Write Java Unit Tests (Live Webinar Feb 10th, 2022) - Save Your Seat
100 days of IPv4 left
Alex Blewitt
The internet is based upon a networking protocol called IPv4, which is the underlying basis for both TCP (used by HTTP and chat applications) and UDP (used for video and audio applications). This uses a 4-byte IP address, like 192.168.54.32, to identify both of the end-points in the channel. (Most humans and many applications use a DNS name instead, which translates www.infoq.com into a numeric IPv4 address like 63.246.7.184.)
Unfortunately, the IPv4 address space is running out, and quickly. According to @ipv4countdown, we have passed the 100 day mark for available addresses; the total stands at less than 160 million addresses left. To put it in perspective, that's around 9.137.0.0 addresses left. We've burnt through (or aren't able to allocate) 245.0.0.0 IPv4 addresses, so they're running out fast. The data is shown in a countdown at Hurricane Electric, an IPv6 provider.
There are still some IPv4 addresses available. Some of the early pioneers of networking have a large number of (potentially unused) IP addresses; and due to some acquisitions mean that a single organisation owns a significant chunk of the internet. However, this is merely delaying the inevitable, probably only by a matter of months. This 2006 Map of the Internet by xkcd shows the top level /8 addresses (i.e. 1.0.0.0) and the fact that companies like Apple, DEC, Bell Labs and Boeing each got given 1/256th of the IPv4 address space shows some concern.
Some argue that use of NAT (combined with UPnP) solves the problem, by reducing the demand for public IP addresses, but this is rarely the case. Mobile networks typically use an IPv4 NAT to allocate devices one of the "private" classes of network, such as the 10.x.x.x network or the 192.168.x.x network commonly found at hotspots. These work by not being publicly routable, but the router itself still needs an IPv4 address in order to operate at all.
The only long term solution is IPv6. This increases the space massively for networks, and most network gear made in the last decade supports IPv6, as well as operating systems which support it natively as well. The key problem has been in the delayed roll out of IPv6 to end customers, or for xDSL modems to be able to support IPv6 (most of which only support IPv4). British Telecom has been rolling out its 21st century network (moving telephony to an IP backbone) but laughably on 20th century networking protocols.
IPv6 itself uses a different notation to IPv4 addresses. Instead of four dotted decimal digits, IPv6 uses 128 bits (c.f. IPv4's which are represented as groups of hex like 1234:5678:90ab:cdef:1234:5678:90ab:cdef. To support backward compatibility, IPv4 addresses can be written as 0000:0000:0000:0000:0000:0000:63.246.7.184. (This also helps demonstrate the massive increase in numbers that IPv6 brings over IPv4). Fortunately, for any number with a 0 prefix, the 0 can be inferred; so 0:0:0:0:0:0:63.246.7.184 is the same address; and any (single) consecutive sequence of 0 can be replace with a double colon, so ::63.246.7.184 has exactly the same value.
A couple of translation mechanisms exist. Firstly, a website can have both an IPv4 address (with an A record) and an IPv6 address (with an AAAA record). Sites which have both can be accessible over either network; the system will try both addresses and return the first. (Some systems looked up an IPv6 address initially and then fell back to IPv4 - however, the latest Mac OSX update switched the priority of the two.)
Another advantage of IPv6 is that network cards can be self configuring. Using a discovery mechanism, IPv6 clients can discover an IPv6 address by a broadcast from an IPv6 router. The client then uses its Mac address (or a random number) to fill in the bottom part of the address, giving a unique address on the local system. Whilst this works well for clients, servers often need to be configured with a specific IP address so that it can be registered in DNS.
Some special addresses are used at the moment. FF01:: is used as a node-local multicast network (i.e. for that specific machine), whilst FF02:: and FF05:: are for link-local (same immediate network) and site-local multicast respectively. Others are ::1, which is localhost (c.f. 127.0.0.1). Local addresses (automatically discovered) begin FE80::. If you have a computer which supports IPv6 networking, you'll already have an FE80:: address assigned; unlike IPv4, each network card can have many IPv6 addresses assigned to it (including loopback) at one time. And unlike IPv4, which allocates one IP address per block to be a 'broadcast' address, IPv6 usually uses a link-local or other broadcast mechanism instead of a specific address to which machines broadcast data.
When the IPv4 address space runs out, countries will exhaust their national supply, which might take another six to twelve months. Once that's done, no new IP addresses will be allocatable and any new connections will have to be hidden behind NAT or a migration to IPv6.
Fortunately, this has not gone unnoticed by cable providers and ISPs, who are investing in IPv6 but not rolling it out aggressively. However, there may be a rush to provide IPv6 connectivity in the next year or two; the question is, is it too litte, too late?
This content is in the Java topic
February 10th, 2022, 11 AM EST
Using Reinforcement Learning To Beat Go Masters and Write Java Unit Tests
Presented by: Andy Piper - VP of Engineering at Diffblue
SPONSORED BY DIFFBLUE
Java News Roundup: JDK 18, JDK 19, Groovy DSL for Spring Integration, JHipster, Micronaut Foundation
Java News Roundup: State of Project Valhalla by Brian Goetz, GlassFish 7.0-M1 and Project Loom Lab
Google Protocol Buffers Support Idiomatic Kotlin Bindings
End of Year Learnings from Minecraft's Migration to JDK 16 and Q&A with the Mojang Team
Java News Roundup: More Log4Shell Statements, Spring and Quarkus Updates, New Value Objects JEP
Migrating Neo4j Graph Schemas with Neo4j Migrations
MicroStream 6.0 Supports JDK 17, Spring Boot and Helidon
Java InfoQ Trends Report—December 2021
Java & JVM Panel
Six Features From Java 12 to 17 to Get Excited About!
Lightweight External Business Rules
Introducing the KivaKit Framework
Keeping Pace with Java
What Does the Future Hold for Java?
Why and How to Upgrade to Java 16 or 17
What's New in Java 16
The InfoQ eMag: Building Microservices in Java