wm: doc

ref: 731c595e710002bd1b1b56404a1cf24b44f9a30d
dir: /routing.ms/

View raw version
The splintering of the global Internet will create multiple national internets, each of which claim to be its own independent authority, each of which cannot be mutually routed with one another.

This creates a crisis of authority, since the original internet was designed with centralized control and a single canonical truth. Which internet is real, which is virtual?

This problem of how to route packets to mutually incompatible internets has been solved before: Network Address Translation. This technique can be re-used with a little twist.

With traditional NAT, the following address space is considered private and not routable globally:

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

This totals to 17,891,328 private IP addresses that are available to a single NAT.

With traditional NAT, the private IP addresses exist only virtually within the local area network, while the other addresses are the real, globally routable addresses. But because the Splinternet presents us with multiple, mutually incompatible internets, the situation can be treated from a relative perspective.

From this relative perspective, the real network is the internet you are currently on, and all other internets are virtual. Hence, from the perspective of an Inter9 user, the private IP addresses are real, and the others virtual.

For example, suppose user A is assigned IP address 10.0.2.4, and user B assigned IP address 192.168.4.5 inside the Inter9. Routing can be handled in the normal way, using routing protocols like OSPF.

Implicit in this model is the assumption that multiple public internets have colliding address spaces. Both Internet A and Internet B may have a host assigned the IP address 1.2.3.4. NAT can help demultiplex this situation.

An outgoing packet sent from the Inter9 to Internet A's 1.2.3.4 can use the port number 10080 for port 80 of A's 1.2.3.4. An outgoing packet sent from the Inter9 to Internet B's 1.2.3.4 can use port number 10080 for port 80 of B's 1.2.3.4.

No new routing protocols need to be introduced. Routing to incompatible internets is simply handled using NAT.

It is also possible to have 6-to-4 bridging by embedding an IPv4 address inside an IPv6 address. In this way, it will be possible to route to IPv4 addresses from any internet without the use of multiplexing by ports. (Thanks to mkf for this suggestion)

byte for byte compatibility with existing protocols on the wire is necessary to ensure compatibility