Distributed Numbering Architechure (DNA)

The Distributed Numbering Architecture (DNA) is a necessary component of a distributed mesh telephone network that must function without any kind of infrastructure (such as known and reachable directory servers), for example in post-disaster or remote areas.

The problem in such situations is that even though people may have a Mesh network connection with nearby devices, most people only know the regular telephone number of other people they wish to call. Without a central directory that maps phone numbers to mesh network addresses, how can the mesh be used to call a well known phone number?

The solution arrived at by The Serval Project is:

  • each person uses the Serval Mesh (app for Android) to enter their own, well known phone number, thereby “claiming” it on the mesh
  • anybody can claim any number on the mesh
  • to call a number, Serval Mesh (app for Android) broadcasts a DNA LOOKUP request to all nearby devices
  • the Mesh Datagram Protocol (MDP) broadcast mechanism on each device propagates the request (with as few duplicates or missing packets as possible) to all devices in a recursive fashion, as far as the TTL will permit
  • any device receiving the request checks its own claimed phone number, and if it matches, sends a DNA REPLY
  • the originating device collects all DNA REPLY responses and displays them to the user, who can choose which one to call
  • to assist this task, a Name can optionally be entered when claiming a phone number, and the DNA REPLY will contain the Name which will be displayed to the caller


The DNA mechanism for resolving phone numbers is open to abuse by people claiming a phone number in order to impersonate the true “owner” of that number. DID verification provides a way to record every authentic DNA REPLY so that imposters can be automatically excluded once the real owner of a number has been successfully contacted.

The DNA mechanism can be subverted by a man in the middle (MitM) attack. SID verification provides a mechanism to detect a MitM which is almost impossibly hard to defeat.