Recently Apple decided to remove a central app for communication in Hong Kong, just to add it later again.
With this move Apple effectively disrupted the communication between people demonstrating in Hong Kong and at the same time endangered those who wanted to protect themselves from violance on the streets.
In this article I want to show how this problem can be mitigated by the use of IPv6.
The core problem: centralisation
The main problem is that we depend on centralised services. One of the questions is, why do we depend on centralised services at all? The reason for this is that there are not enough IPv4 addresses and for that reason we use NAT to hide multiple devices behind one IPv4 address. Wait what? Let's take it a bit slower.
How NAT works
In the old times of the Internet, every device in the Internet used to have a public IPv4 address. However when the number of devices began to exceed amount of officially available IPv4 addresses, NAT was introduced and it works as follows:
Many devices are hidden behind one Public IP address. So for a phone to communicate with another phone, it needs to connect via a central, publicly available IPv4 server. So in the end, the complete picture looks as follows:
How IPv6 solves the problem
In the IPv6 world, there are enough IP addresses available. So every device, every smart phone, every alarm clock, every computer can have a public IP address. Because every device can have a public IPv6 address, they can communicate directly with each other:
How to communicate with IPv6?
So how does it look like with IPv6? Instead of relying on a central entity (Apple in this case), you can directly connect to the phone of your friends. This way, you could even use your standard browser like Firefox, Chrome or Safari to write a message to your friend's phone.
So, what to do now?
At the moment IPv6 is picking up pace in deployment and ISPs everywhere in the world are moving forward with it. However, if you do not have IPv6 connectivity, ungleich provides IPv6 VPNs that enable you world wide to have IPv6. If you are an application developer, I urge you to checkout whether your application supports IPv6, because in the future you might enable people to talk to each other, just by supporting IPv6 now already.