Vivaldi: A Decentralized Network Coordinate System

Vivaldi is a fully distributed, light-weight system for predicting latency between nodes in a peer-to-peer system. It attempts to map nodes onto a coordinate system so that the geometric distance between them corresponds to actual latency. It does this mostly passively, by piggybacking small RTT and coordinate packets onto regular internode traffic. It is designed to be independent of a particular coordinate system, since as of now there isn't one obviously best choice. But some experimentation has led the authors to believe that a simple 2D system augmented with a cost vector (to differentiate between fast and slow links) works well enough.

To deal with error, Vivaldi models nodes as bodies connected by springs, and maps the error between actual and predicted latency as force on that spring. Thus, minimizing global error can be accomplished by simulating spring dynamics (adjusting node coordinates according to the forces exerted on them). Through a process called adaptive timestepping (in which nodes that believe, because of a moving average of total error, that they have a more accurate idea of their coordinates act heavier than the nodes connected to them), the system manages to react quickly to changes in topology (eg node churn) without disrupting valid results.

In empirical testing against a global set of nodes whose latencies were calculated through the King method (based on recursive DNS queries), Vivaldi appeared to perform quite well, achieving accuracy that is competitive with GNP, a non-distributed positioning system.

Class discussion

Interesting links

Global Network Positioning (a less-distributed predecessor)