Use plain old PACKET for TCP packets sent directly to a neighbor.
authorEtienne Dechamps <etienne@edechamps.fr>
Sun, 12 Oct 2014 11:14:46 +0000 (12:14 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 25 Dec 2014 16:59:38 +0000 (17:59 +0100)
commit7730d5f3ed9bd7c011dced5808130ffcbd74ea6b
tree0db882f3dfca9a066a251aa2fbe8ef3607e42203
parent0356efecb6385b59a69bea220057396d6daa30bc
Use plain old PACKET for TCP packets sent directly to a neighbor.

Currently, when sending packets over TCP where the final recipient is
a node we have a direct metaconnection to, tinc first establishes a
SPTPS handshake between the two neighbors.

It turns out this SPTPS tunnel is not actually useful, because the
packet is only being sent over one metaconnection with no intermediate
nodes, and the metaconnection itself is already secured using a separate
SPTPS handshake.

Therefore it seems simpler and more efficient to simply send these
packets directly over the metaconnection itself without any additional
layer. This commits implements this solution without any changes to the
metaprotocol, since the appropriate message already exists: it's the
good old "plaintext" PACKET message.

This change brings two significant benefits:

- Packets to neighbors can be sent immediately - there is no initial
  delay and packet loss previously caused by the SPTPS handshake;

- Performance of sending packets to neighbors over TCP is greatly
  improved since the data only goes through one round of encryption
  instead of two.

Conflicts:
src/net_packet.c
src/net_packet.c