diff options
| author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2020-02-16 13:42:18 +0100 | 
|---|---|---|
| committer | Sander Vrijders <sander@ouroboros.rocks> | 2020-02-16 18:32:21 +0100 | 
| commit | af8e7f78af9b13c2cf6615dc9eb6c52c51b2bc2c (patch) | |
| tree | d9ff5e60b3bf8be2477b46ee98fc441c815cab63 /src/tools | |
| parent | 52e44a55d3b12819a79566067ff0361854da5002 (diff) | |
| download | ouroboros-af8e7f78af9b13c2cf6615dc9eb6c52c51b2bc2c.tar.gz ouroboros-af8e7f78af9b13c2cf6615dc9eb6c52c51b2bc2c.zip | |
Add equal-cost multipath routing policy
This adds an equal-cost multipath routing policy to Ouroboros, based
on Nick Aerts' code. When selected, flows will send packets over all
paths with equal cost (hop count). Path selection is round-robin. It
does not yet take into account flows that are down.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/irm/irm_ipcp_bootstrap.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/src/tools/irm/irm_ipcp_bootstrap.c b/src/tools/irm/irm_ipcp_bootstrap.c index 7b844ba7..84b6759a 100644 --- a/src/tools/irm/irm_ipcp_bootstrap.c +++ b/src/tools/irm/irm_ipcp_bootstrap.c @@ -78,6 +78,7 @@  #define FLAT_RANDOM_ADDR_AUTH  "flat"  #define LINK_STATE_ROUTING     "link_state"  #define LINK_STATE_LFA_ROUTING "lfa" +#define LINK_STATE_ECM_ROUTING "ecmp"  static void usage(void)  { @@ -98,7 +99,7 @@ static void usage(void)                 "                [autobind]\n"                 "where ADDRESS_POLICY = {"FLAT_RANDOM_ADDR_AUTH"}\n"                 "      ROUTING_POLICY = {"LINK_STATE_ROUTING " " -               LINK_STATE_LFA_ROUTING "}\n" +               LINK_STATE_LFA_ROUTING " " LINK_STATE_ECM_ROUTING "}\n"                 "      ALGORITHM = {" SHA3_224 " " SHA3_256 " "                 SHA3_384 " " SHA3_512 "}\n\n"                 "if TYPE == " UDP "\n" @@ -224,6 +225,9 @@ int do_bootstrap_ipcp(int     argc,                          else if (strcmp(LINK_STATE_LFA_ROUTING,                                          *(argv + 1)) == 0)                                  routing_type = ROUTING_LINK_STATE_LFA; +                        else if (strcmp(LINK_STATE_ECM_ROUTING, +                                        *(argv + 1)) == 0) +                                routing_type = ROUTING_LINK_STATE_ECMP;                          else                                  goto unknown_param;                  } else { | 
