Automatic load balancing/multipath routing support #649

Open
opened 2025-11-20 05:15:17 -05:00 by saavagebueno · 1 comment
Owner

Originally created by @stevefan1999-personal on GitHub (Feb 21, 2024).

Is your feature request related to a problem? Please describe.

Imagine if you have multiple netbird agents on private AWS, Azure networks, and on-premise respectively, can we connect in such a way that when one of the agents in AWS has bad connectivity with the on-premise network, but agents in Azure network is doing great with on-premise network, then the AWS agents would connect to the on-premise network via Azure network. An example would be easier to explain:

AWS <-> On-Premise: 5ms
Azure <-> On-Premise: 5ms
AWS <-> Azure: 8ms

Now if a network situation happens:

AWS <-> On-Premise: 100ms
Azure <-> On-Premise: 5ms
AWS <-> Azure: 8ms

Then Netbird should automatically route on-premise network via Azure! Because:

AWS <-> Azure <-> On-premise: 8 + 5 = 13ms!

There can be more metrics to consider as this simple example is based on Distance-vector routing. You can also add information such as bandwidth limits and other user-defined costs.

Describe alternatives you've considered

I have also experimented running Netbird with routing protocols such as B.A.T.M.A.N. by adding GENEVE on top of it, but the performance is not doing very well. Direct routing via BGP on top of Netbird and distribute all the routes automatically should be the best case, and while I do know this is a crazy idea, it should work in theory: a simple experiment can be done by running Calico on top of Netbird.

Although running BGP on top of Wireguard is not anything special. As a former dn42 operator (and I'm still trying to learn!) we usually use Wireguard as an encrypted transit and run BIRD on top of it to get routes and FIB.

Additional context

EIGRP should also give the best balance possible to load balance a network.

GoBGP is an implementation of BGP in Golang.

Originally created by @stevefan1999-personal on GitHub (Feb 21, 2024). **Is your feature request related to a problem? Please describe.** Imagine if you have multiple netbird agents on private AWS, Azure networks, and on-premise respectively, can we connect in such a way that when one of the agents in AWS has bad connectivity with the on-premise network, but agents in Azure network is doing great with on-premise network, then the AWS agents would connect to the on-premise network via Azure network. An example would be easier to explain: AWS <-> On-Premise: 5ms Azure <-> On-Premise: 5ms AWS <-> Azure: 8ms Now if a network situation happens: AWS <-> On-Premise: 100ms Azure <-> On-Premise: 5ms AWS <-> Azure: 8ms Then Netbird should automatically route on-premise network via Azure! Because: AWS <-> Azure <-> On-premise: 8 + 5 = 13ms! There can be more metrics to consider as this simple example is based on Distance-vector routing. You can also add information such as bandwidth limits and other user-defined costs. **Describe alternatives you've considered** I have also experimented running Netbird with routing protocols such as [B.A.T.M.A.N.](https://en.wikipedia.org/wiki/B.A.T.M.A.N.) by adding GENEVE on top of it, but the performance is not doing very well. Direct routing via BGP on top of Netbird and distribute all the routes automatically should be the best case, and while I do know this is a crazy idea, it should work in theory: a simple experiment can be done by running Calico on top of Netbird. Although running BGP on top of Wireguard is not anything special. As a former dn42 operator (and I'm still trying to learn!) we usually use Wireguard as an encrypted transit and run BIRD on top of it to get routes and FIB. **Additional context** [EIGRP](https://en.wikipedia.org/wiki/Enhanced_Interior_Gateway_Routing_Protocol) should also give the best balance possible to load balance a network. [GoBGP](https://github.com/osrg/gobgp) is an implementation of BGP in Golang.
saavagebueno added the feature-request label 2025-11-20 05:15:17 -05:00
Author
Owner

@nazarewk commented on GitHub (Apr 18, 2025):

I believe that currently we are evaluating network performance only during the establishment of the connectivity, but this would require constant monitoring and proactive switching when network conditions change?

@nazarewk commented on GitHub (Apr 18, 2025): I believe that currently we are evaluating network performance only during the establishment of the connectivity, but this would require constant monitoring and proactive switching when network conditions change?
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SVI/netbird#649