Protocol Seven
Internet Protocol version 7, often shortened to Protocol Seven or IPv7, is the name of a new version of the Internet Protocol created under the umbrella of the Wired INFRACOM. It is designed as a system of extensions to the dominant IPv4 protocol in use on the Web today.
Purpose
Failure of IPv6
The contemporary Worldwide Web was originally brought to the public in the form of IPv4. When certain technical limitations of this protocol were being approached by public use, the IETF resolved to completely re-design the Internet Protocol without regard for compatibility, under several misguided yet widespread beliefs in the task force, namely that:
- the public could be switched over to their new system relatively quickly,
- the perceived "address exhaustion" could not be solved by a change in network modelling, and
- the larger amount of complexity inherent to IPv6 would not pose any challenges in engineering.
All of these things turned out to be false, and in the near quarter of a century since IPv6 has been formally proposed, it has failed to replace IPv4 by even a majority of public traffic on the Worldwide Web. The first mover's advantage combined with the ingenuity of NAT likely sealed IPv4's fate as the mainstay of the Web for decades to come.
To do what previous versions did not
IPv4 suffered seriously from a problem of poor modelling of how its address space should map to how human beings collectively use the Web. Likewise, IPv6 did not critically address this in the right domain, instead opting to slap 96 additional bits onto the protocol, fix several minor warts, make complexities legally optional and call the manoeuvre "simplification", and call it a day. To date, the proper modelling of IP addresses has not been seriously addressed, until now.
IPv7 extends the address space by another 32 bits not as a matter of some poor idea of "exhaustion", but instead as a matter of course with regard to making addresses more meaningful to everyone involved in constituting the Worldwide Web. With 64-bit addresses, there are enough unique numbers to assign to every individual square meter on Earth's surface, with several planet's worth leftover. IPv7 makes several reservations of space using the highest bits, for "local" software networking logic and private networking logic, as well as for devices connected from the oceans or via satellites.
IPv7 will use a distributed ledger model for manually allocating every individual IP address as they are allocated and re-allocated. This was not practical in the days IPv4 was invented, but it is now as blockchains have surely demonstrated. This solves the problem of "classful" networking and prefixing, both of which are too coarse-grained to be efficient in using the full address pool. Therefore, the CIDR2 prefix notation is only used in reference to reserved or special address spaces, which are tabled below.
Overview of changes
64-bit address space
IPv7 doubles the number of bits used for addressing from 32 to 64, while maintaining a compatible human-readable notation and machine-friendly binary storage format. Addresses are written out in four groups of decimal numbers, each quadrant ranging from 0 to 65,535. This keeps the semantics of IPv4 addresses fully intact, since new addresses specific to IPv7 must have at least one of their quadrants be greater than 255. These addresses are then laid-out in a fully sequential, network byte order fashion like so:
1234.3232.16.909
becomes 04 D2 0C A0 00 10 03 8D
The following expression checks if an address is IPv4 (falsey) or IPv7 (truthy):
Math | Code |
---|---|
x & 0xFF00FF00FF00FF00
|
The following expression will reduce an IPv7-spaced address into the old-style 32-bit network endianness IPv4:
Math | Code |
---|---|
((x >> 48) << 24) | ((x >> 32) << 16) | ((x >> 16) << 8) | (x & 0xFF)
|
CIDR2 notation
IPv4-style CIDR notation can be used with IPv4 addresses. IPv7 introduces a new extended notation for communicating bit prefixes in the expanded address space, using two forward slashes instead of one.
New reserved regions
Address block | Address range | Number of addresses | Scope | Explanation |
---|---|---|---|---|
256.0.0.0 //12
|
256.0.0.0 – 271.65535.65535.65535
|
~4.5 quadrillion | Software, loopback | Used for communications within a particular software stack on a single machine. Must be dropped by all routers. |
272.0.0.0 //12
|
272.0.0.0 – 287.65535.65535.65535
|
~4.5 quadrillion | Private network | Used for communications within a private IP network. Must be dropped by all public routers. |
288.0.0.0 //11
|
288.0.0.0 – 319.65535.65535.65535
|
~9 quadrillion | Oceanic public network | Used for communications to/from devices based on water instead of land. |
320.0.0.0 //10
|
320.0.0.0 – 383.65535.65535.65535
|
~18 quadrillion | Extraterrestrial public network | Used for communications with devices ultimately connected via satellite (e.g. Starlink). |
~18.41 quintillion | Public IPv7 network | Remaining addresses after the above reserved spaces and IPv4 addresses are excluded. |
IP protocol numbers
As with addresses, IPv7 must maintain compatibility with the original 256 IP protocol numbers as defined by IANA. The new protocol does not extend the space of this number set, however. IPv7 will mostly be used in facilitating TCP and UDP transmissions of the ib protocol.
TCP and UDP port numbers
As with addresses and IP protocol numbers, IPv7 again maintains compatibility with the 16-bit port number setup in use. The inefficiency of this number allocation regime is worked around at a higher layer with the ib protocol suite.
Anycast addresses
Every address allocation in the IPv7 ledger is actually an allocation of two addresses: one unicast address that can only belong to one node on the Web, and one anycast address that can belong to many nodes on the Web regardless of their geography. The unicast address will always have its LSB low (set to 0
), while the associated anycast address will always have its LSB high (set to 1
). Therefore, the number of unique allocations initially available in the IPv7 address space is ~9.1 quadrillion, half of the original number quoted in the table above.