Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Below is outdated. Please see: https://docs.zerotier.com/zerotier/multipath

Multipath link aggregation (e.g. bonding) allows the simultaneous use of multiple physical links to enable increased throughput, load balancing, redundancy, and fault tolerance. There are a variety of standard policies available that can be used right out of the box with no configuration. These policies are directly inspired by the policies offered by the Linux kernel but are now offered in user-space and hence available on all platforms that ZeroTier supports (including Windows!).

Standard policies

...

Policy name

Fault tolerance

Min. failover (sec.)

Default Failover (sec.)

Balancing

Aggregation efficiency

Redundancy

Sequence Reordering

none

None

60+

60+

none

none

1

No

active-backup

Brief interruption

0.25

10

none

low

1

Only during failover

broadcast

Fully tolerant

N/A

N/A

none

very low

N

Often

balance-rr

Self-healing

0.25

10

packet-based

high

1

Often

balance-xor

Self-healing

0.25

10

flow-based

very high

1

Only during failover

balance-aware

Self-healing

0.25

10

adaptive flow-based

very high

1

Only during failover and re-balance

A policy can be used easily without specifying any additional parameters:

...

ZeroTier measures various properties of a link (such as latency, throughput, jitter, packet loss ratio, etc) in order to arrive at a quality estimate. This estimate is used by bonding policies to make allocation and failover decisions:

Policy name

Role

active-backup

Determines the order of the failover queue. And if activeReselect=optimize whether a new active link is selected.

broadcast

Does not use quality measurements.

balance-rr

May trigger removal of link from bond.

balance-xor

May trigger removal of link from bond.

balance-aware

Informs flow assignments and (re-)assignments. May trigger removal of link from bond.

A link's eligibility for being included in a bond is dependent on more than perceived quality. If a path on a link begins to exhibit disruptive behavior such as extremely high packet loss, corruption, or periodic inability to process traffic it will be removed from the bond, its traffic will be appropriately reallocated and it will be punished. Punishments gradually fade and a link can be readmitted to the bond over time. However, punishments increase exponentially if applied more than once within a given window of time.

...