Project

General

Profile

Actions

Todo #1521

open

Multipath Routing GUI Support

Added by Jim Pingle almost 13 years ago. Updated 8 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
Routing
Start date:
05/23/2019
Due date:
05/23/2019 (over 4 years late)
% Done:

0%

Estimated time:
Plus Target Version:
Release Notes:

Description

It would be nice to have multiple gateways for a given route with metrics that get properly respected for route preference, without the need for a dynamic routing protocol.

This would make a lot of things easier:
  • Multiple "default" gateways with an order of preference handled purely in the routing table, and the ability to round-robin traffic if two routes have the same metric
  • Multiple gateways/paths to a single remote network that can failover gracefully without the need for a dynamic routing protocol
  • And many more.

This is mainly a note to check in on this in the future (2.1, 2.2, way beyond). Perhaps involving ECMP as well.


Related issues

Follows Feature #9545: Enable Multipath Routing in the KernelResolvedJim Pingle05/22/2019

Actions
Actions #1

Updated by Jim Pingle 8 months ago

  • Subject changed from Investigate FreeBSD route metric support for future versions to Multipath Routing GUI Support
  • Target version changed from Future to Plus-Next

As of Plus 23.05.1 and CE 2.7.0, the OS supports multipath routing (i.e. ECMP).

However, outside of FRR, there isn't a way to configure it in the GUI yet.

There are a few hurdles to add this into the GUI and it's not clear what the best way to handle them might be, so it's open for debate:

  • system_routes_edit.php disallows multiple entries for the same remote destination network -- would it be better to remove that limitation OR would it be better to allow the user to select multiple gateways on a single entry?
  • Each destination+gateway pair can have a unique weight that controls the proportion of traffic which will use each route. The weight is not a property of the gateway but of the destination+gateway combination. This complicates the first point as allowing multi-select would then also need to have a way to set a weight for each gateway in the list. A rowhelper for the gateway+weight may work.
  • in system.inc, the function delete_static_route() would need to account for the fact that there may be multiple gateways and delete only the entries which are no longer needed. The exact differences here would vary a bit depending on which method is used for the first point.
  • It's not clear if/how the OS would ever take a gateway out of use if it's "down" -- that may mean we need to remove route entries for down gateways in some automated way, so a couple of the points in the original description are not viable.

Note: Even the same gateway used for multiple destination lands in a "nexthop" group based on each destination. The weight of each gateways inside each "group" determine the proportion of traffic that will take the gateway, with higher weights receiving more traffic. Equal weights get equal traffic. These groups and weights are visible in netstat -4OnW and netstat -6OnW

It's also unclear what effect, if any, this might have on OpenVPN instances with conflicting routing configurations (multiple instances with overlapping remote network lists, for example).

Actions #2

Updated by Jim Pingle 8 months ago

See also: #9545, #14641

Actions #3

Updated by Jim Pingle 8 months ago

  • Due date set to 05/23/2019
  • Start date changed from 05/12/2011 to 05/23/2019
  • Follows Feature #9545: Enable Multipath Routing in the Kernel added
Actions

Also available in: Atom PDF