Introduce node IDs.
authorEtienne Dechamps <etienne@edechamps.fr>
Sun, 21 Sep 2014 17:17:02 +0000 (18:17 +0100)
committerEtienne Dechamps <etienne@edechamps.fr>
Sat, 4 Oct 2014 10:13:59 +0000 (11:13 +0100)
commit55a78da4e0b496fc599704473f41d5ea52669737
tree0a536df4dfb627a4bdaffb47239a8fd674441437
parentac77e3c1eb9d7503e30dd69e96e411e7baaa1dfd
Introduce node IDs.

This introduces a new type of identifier for nodes, which complements
node names: node IDs. Node IDs are defined as the first 6 bytes of the
SHA-256 hash of the node name. They will be used in future code in lieu
of node names as unique node identifiers in contexts where space is at
a premium (such as VPN packets).

The semantics of node IDs is that they are supposed to be unique in a
tinc graph; i.e. two different nodes that are part of the same graph
should not have the same ID, otherwise things could break. This
solution provides this guarantee based on realistic probabilities:
indeed, according to the birthday problem, with a 48-bit hash, the
probability of at least one collision is 1e-13 with 10 nodes, 1e-11
with 100 nodes, 1e-9 with 1000 nodes and 1e-7 with 10000 nodes. Things
only start getting hairy with more than 1 million nodes, as the
probability gets over 0.2%.
src/info.c
src/net.h
src/node.c
src/node.h
src/tincctl.c