Allow weight to be assigned to Subnets.
Tinc allows multiple nodes to own the same Subnet, but did not have a sensible way to decide which one to send packets to. Tinc also did not check the reachability of nodes when deciding where to route packets to, so it would not automatically fail over to a reachable node. Tinc now assigns a weight to each Subnet. The default weight is 10, with lower weights having higher priority. The Subnets are now internally sorted in the same way as the kernel's routing table, and the Subnets are search linearly, skipping those of unreachable nodes. A small cache of recently used addresses is used to speed up the lookup functions.
This commit is contained in:
parent
76a1bcaffc
commit
5674bba5c5
5 changed files with 148 additions and 67 deletions
|
@ -394,7 +394,7 @@ Either the PEM format is used, or exactly one of the above two options must be s
|
|||
in each host configuration file,
|
||||
if you want to be able to establish a connection with that host.
|
||||
|
||||
.It Va Subnet Li = Ar address Ns Op Li / Ns Ar prefixlength
|
||||
.It Va Subnet Li = Ar address Ns Op Li / Ns Ar prefixlength Ns Op Li # Ns Ar weight
|
||||
The subnet which this tinc daemon will serve.
|
||||
.Nm tinc
|
||||
tries to look up which other daemon it should send a packet to by searching the appropriate subnet.
|
||||
|
@ -416,6 +416,13 @@ Read a networking HOWTO/FAQ/guide if you don't understand this.
|
|||
IPv6 subnets are notated like fec0:0:0:1:0:0:0:0/64.
|
||||
MAC addresses are notated like 0:1a:2b:3c:4d:5e.
|
||||
|
||||
.Pp
|
||||
A Subnet can be given a weight to indicate its priority over identical Subnets
|
||||
owned by different nodes. The default weight is 10. Lower values indicate
|
||||
higher priority. Packets will be sent to the node with the highest priority,
|
||||
unless that node is not reachable, in which case the node with the next highest
|
||||
priority will be tried, and so on.
|
||||
|
||||
.It Va TCPOnly Li = yes | no Pq no
|
||||
If this variable is set to yes,
|
||||
then the packets are tunnelled over the TCP connection instead of a UDP connection.
|
||||
|
|
|
@ -1015,7 +1015,7 @@ in each host configuration file, if you want to be able to establish a
|
|||
connection with that host.
|
||||
|
||||
@cindex Subnet
|
||||
@item Subnet = <@var{address}[/@var{prefixlength}]>
|
||||
@item Subnet = <@var{address}[/@var{prefixlength}[#@var{weight}]]>
|
||||
The subnet which this tinc daemon will serve.
|
||||
Tinc tries to look up which other daemon it should send a packet to by searching the appropiate subnet.
|
||||
If the packet matches a subnet,
|
||||
|
@ -1039,6 +1039,12 @@ example: netmask 255.255.255.0 would become /24, 255.255.252.0 becomes
|
|||
/22. This conforms to standard CIDR notation as described in
|
||||
@uref{ftp://ftp.isi.edu/in-notes/rfc1519.txt, RFC1519}
|
||||
|
||||
A Subnet can be given a weight to indicate its priority over identical Subnets
|
||||
owned by different nodes. The default weight is 10. Lower values indicate
|
||||
higher priority. Packets will be sent to the node with the highest priority,
|
||||
unless that node is not reachable, in which case the node with the next highest
|
||||
priority will be tried, and so on.
|
||||
|
||||
@cindex TCPonly
|
||||
@item TCPonly = <yes|no> (no)
|
||||
If this variable is set to yes, then the packets are tunnelled over a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue