Estimate RTT, bandwidth and packet loss between nodes.
authorGuus Sliepen <guus@tinc-vpn.org>
Wed, 16 Jan 2013 15:31:56 +0000 (16:31 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Wed, 16 Jan 2013 15:31:56 +0000 (16:31 +0100)
commit61275547cdf950e1c4499f19044ff171a9a74af7
treebcd098ef6c5d6169e99e25ef69e3fcbfe4335808
parenteef25266cb862b5e2c24450d158d99e3cb43e511
Estimate RTT, bandwidth and packet loss between nodes.

Without adding any extra traffic, we can measure round trip times, estimate the
bandwidth and packet loss between nodes. The RTT and bandwidth can be measured
by timing the MTU probe packets. The RTT is the difference between the time a
burst of MTU probes was sent and when the first reply is received. The
bandwidth can be estimated by multiplying the size of the probe packets by the
time between succesive received probe replies of the same burst. The packet
loss can be estimated for incoming traffic by comparing how many packets have
actually been received to the increase in the sequence numbers.

The estimates are not perfect. Especially bandwidth is difficult to measure,
the only accurate way is to continuously send as much data as possible, but
that is obviously not desirable. The packet loss rate is also almost always
a few percent when sending a lot of data over the VPN via TCP, since TCP
*needs* packet loss to work properly.
src/net_packet.c
src/node.h