Introduction to MeshOverIP

Due to multiple reasons that I will explain in this section, we desperately need a framework that takes advantage of the structure of mesh network and supports various services available in the network and helps the clients to connect to them. The essential principles that make up MeshOverIP (at this point) are

  1. Network for Everyone
  2. Zero Configuration
  3. End-to-end Encryption
  4. All Nodes Must Serve

Network for Everyone

Our objective is to create a network where any device with a WiFi radio, can participate without much hassle. Let us assume that the most commonly used device, is an Android smartphone. The Android OS does not allow the application developers to send or transmit packets below Layer 3. This makes it impossible to form a Layer 2 p2p network with the Android devices. This is equally true for other devices that run non-free OS, which doesn't support Layer 2 networking. With this mind, we decided to build our framework over IP.

Zero Configuration

In the current model of Internet, or any large network, both providing a service and connecting to a service are unnecessarily complicated. To make a service visible, one needs to register a name as proxy to the service (IP + PORT). To find a needed service, one needs support from a centralized DNS server. This is where zeroconf comes in.

Zero Configuration Networking, or commonly known as zeroconf, is a set of technologies that automatically creates a usable computer network. The three pillars of zeroconf are

  1. Addressing
  2. Naming
  3. Service Discovery

Without the help of a central server to manage addresses (DHCP) and names (DNS), zeroconf builds a network, where each device can choose and maintain its own IP address and domain name. Each device is responsible for announcing, claiming, defending and releasing, its IP address and names of services it offers. Service Discovery is built on top of addressing and naming. An user connected to this network can essentially browse through the list of services available in the network.

Despite the sophisticated nature of zeroconf, it is built for a small network. Bonjour, Apple's implementation of zeroconf, can only support a network of devices that are close to each other. By default, Bonjour doesn't allow devices in one broadcast domain (x.y.z.0 - x.y.z.255) to communicate with a device outside the domain (say x.y.m.124). Though, it is possible to connect two subnets (x.y.z.* and x.y.m.*), via a gateway.

Insert gateway figure here

But placing this gateway and manually configuring it, defeats the purpose of the mesh network. For one, mesh networks do not follow a hierarchy; each node connects to every other node in vicinity. Secondly, placing a gateway to connect two mesh clusters, introduces a single point of failure (SPOF) in the system (i.e.) if the gateway fails, the two mesh clusters A and B (refer to figure above) are permanently disconnected from each other, without any ability to seal heal.

End-to-end Encryption

Our physical universe has that property that makes it possible for an individual or a group of individuals to reliably, automatically, even without knowing, encipher something, so that all the resources and all the political will of the strongest super-power on earth may not decipher it.

Cypherpunks, Julian Assange

Every packet sent by a node to be received by another node, should be encrypted. An eavesdropper listening in, should not be able to decrypt the conversation. There are other security concerns including but not limited to,

  1. IP/MAC spoofing
  2. Denial-of-service attack
  3. Man in the middle
  4. ARP poisoning
  5. Network flooding

These issues need to addressed by adapting existing security measures to the mesh network.

All Nodes Must Serve

Valar Dohaeris

Every static resource in the network, should be decentralized. The end user reading a web page, should not have to, care about which node serves it. Failure of a node, should not in any way, affect the web page. This idea is inspired by ZeroNet, which aims to decentralize websites using Bitcoin crypto and BitTorrent network.

References

  1. List of projects aiming to decentralize Internet
  2. ZeroNet Documentation
  3. End-to-end Encryption
  4. ZeroConf