chiark / gitweb /
polypath asymmetric routing: Handle data packet dupes
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 15 May 2019 20:40:40 +0000 (21:40 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 18 May 2019 01:16:37 +0000 (02:16 +0100)
commitcbc2519681f5fceab5c6153110215090663eb3e9
treedb26eed326db1df68e043726d6859d63cd7e0a8f
parent34afe8d7b8a75eddd44cccb8e6d8d35fa17a47d9
polypath asymmetric routing: Handle data packet dupes

If polypath has asymmetric routing, where path A upload is faster than
path B, but path A download is completely broken, then we need to
retain both paths A and B in our list of transport peers.

Stepping back, we need to treat dupes of recent packets as evidence
that the peer is at that address, even though we do not pass the
packets to the netlink.

We don't want to do this for arbitrarily old data packets.  The
heuristic we use here is rather crude: packets which are more than
32 (by default) out of order are treated as too old.  This will be too
short if path A is a high-bandwidth link and path B is quite slow, and
it will be too long if the link is very idle.  Hopefully this will not
matter in practice.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
site.c