diff options
author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2020-02-06 18:30:36 +0100 |
---|---|---|
committer | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2020-02-14 18:18:30 +0100 |
commit | 05ca004b804b85343f450c99792b065254c5ccc3 (patch) | |
tree | 4d37c93a47c6ee36238b8c097a3e03c7aa625ea9 /pimd/pim_mlag.h | |
parent | pimd: register with MLAG on the first VxLAN SG (diff) | |
download | frr-05ca004b804b85343f450c99792b065254c5ccc3.tar.xz frr-05ca004b804b85343f450c99792b065254c5ccc3.zip |
pim: DF election for tunnel termination mroutes in an anycast-VTEP setup
1. Upstream entries associated with tunnel termination mroutes are
synced to the MLAG peer via the local MLAG daemon.
2. These entries are installed in the peer switch (via an upstream
ref flag).
3. DF (Designated Forwarder) election is run per-upstream entry by both
the MLAG switches -
a. The switch with the lowest RPF cost is the DF winner
b. If both switches have the same RPF cost the MLAG role is
used as a tie breaker with the MLAG primary becoming the DF
winner.
4. The DF winner terminates the multicast traffic by adding the tunnel
termination device to the OIL. The non-DF suppresses the termination
device from the OIL.
Note: Before the PIM-MLAG interface was available hidden config was
used to test the EVPN-PIM functionality with MLAG. I have removed the
code to persist that config to avoid confusion. The hidden commands are
still available.
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_mlag.h')
-rw-r--r-- | pimd/pim_mlag.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/pimd/pim_mlag.h b/pimd/pim_mlag.h index e86fdae78..dab29cc9a 100644 --- a/pimd/pim_mlag.h +++ b/pimd/pim_mlag.h @@ -37,4 +37,10 @@ extern void pim_mlag_deregister(void); extern int pim_zebra_mlag_process_up(void); extern int pim_zebra_mlag_process_down(void); extern int pim_zebra_mlag_handle_msg(struct stream *msg, int len); +extern void pim_mlag_up_local_add(struct pim_instance *pim, + struct pim_upstream *upstream); +extern void pim_mlag_up_local_del(struct pim_instance *pim, + struct pim_upstream *upstream); +extern bool pim_mlag_up_df_role_update(struct pim_instance *pim, + struct pim_upstream *up, bool is_df, const char *reason); #endif |