Skip to content

EVPN MultiHoming Fast ReRoute for L3VNI-routed traffic - #2332

Draft
manamand2020 wants to merge 1 commit into
opencomputeproject:masterfrom
manamand2020:master
Draft

EVPN MultiHoming Fast ReRoute for L3VNI-routed traffic#2332
manamand2020 wants to merge 1 commit into
opencomputeproject:masterfrom
manamand2020:master

Conversation

@manamand2020

Copy link
Copy Markdown

Adds SAI support for hardware-driven fast reroute (FRR) of L3VNI-routed traffic to a cross-switch multihomed bridge port, extending the existing software-driven EVPN Multihoming fast-failover mechanism (autonomous ASIC switchover + async NOS notification, instead of NOS-driven SET_SWITCHOVER).

Changes
inc/saibridge.h: sai_bridge_port_protection_mode_t (SOFTWARE/HARDWARE/HARDWARE_NON_REVERTIVE) + SAI_BRIDGE_PORT_ATTR_BRIDGE_PORT_PROTECTION_MODE; sai_bridge_port_protection_state_t + read-only SAI_BRIDGE_PORT_ATTR_BRIDGE_PORT_PROTECTION_STATE; sai_bridge_port_protection_event_t, notification data struct, and callback typedef for HW switchover events.
inc/saiswitch.h: SAI_SWITCH_ATTR_BRIDGE_PORT_HW_PROTECTION_SWITCHOVER_NOTIFY to register the callback (mirrors the existing next-hop-group HW protection notify attribute).
inc/saitunnel.h: SAI_TUNNEL_ATTR_VXLAN_TUNNEL_MAC — inner DMAC for routed traffic re-encapsulated onto a P2P VXLAN tunnel after switchover.
doc/tunnel/SAI-Proposal-EVPN-Multihoming.md: new §3.2.6 spec, §4.6 workflow, Figure 7 object-model diagram.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@manamand2020 manamand2020 changed the title Initial draft EVPN MH HW FRR model Hardware-driven FastReRoute EVPN MultiHoming for L3VNI-routed traffic Aug 15, 2026
@manamand2020 manamand2020 changed the title Hardware-driven FastReRoute EVPN MultiHoming for L3VNI-routed traffic FastReRoute EVPN MultiHoming for L3VNI-routed traffic Aug 15, 2026
@manamand2020 manamand2020 changed the title FastReRoute EVPN MultiHoming for L3VNI-routed traffic Fast ReRoute EVPN MultiHoming for L3VNI-routed traffic Aug 15, 2026
@manamand2020
manamand2020 force-pushed the master branch 2 times, most recently from 6a392e8 to 406fde9 Compare August 15, 2026 08:35
Signed-off-by: Manas Kumar Mandal <manamand@cisco.com>

The route lookup resolves to a RIF/neighbor pair, which in turn resolves to the primary bridge port (`SAI_BRIDGE_PORT_TYPE_PORT`)
for the ES. That bridge port carries `SAI_BRIDGE_PORT_ATTR_BRIDGE_PORT_PROTECTION_MODE` and
`SAI_BRIDGE_PORT_ATTR_BRIDGE_PORT_PROTECTION_NEXT_HOP_GROUP_ID`, pointing to a `SAI_NEXT_HOP_GROUP_TYPE_BRIDGE_PORT`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey Manas, do you know why the next hop type being bridge port? The next hop id is vxlan tunnel, so this sounds a bit inconsistent (I am aware that this is somehow allowed in the SAI, but not sure why)

@manamand2020 manamand2020 Aug 15, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is following the existing section 3.2.1, :

A new nexthop type which will be part of groups of the above group type.

typedef enum _sai_next_hop_type_t
...
    /** Next hop group is for bridge port */
    SAI_NEXT_HOP_TYPE_BRIDGE_PORT,
} sai_next_hop_type_t;

Maybe the question is why SAI_NEXT_HOP_TYPE_TUNNEL_ENCAP is not being used instead. I think using the SAI_NEXT_HOP_TYPE_BRIDGE_PORT is only allowed for bridge nexthop group case as the comment mentions and implementation can distinguish this clearly.

/** Next hop group is for bridge port */

SAI_BRIDGE_PORT_PROTECTION_MODE_HARDWARE,

/** Hardware switchover. Does not switch back to the bridge port once it recovers */
SAI_BRIDGE_PORT_PROTECTION_MODE_HARDWARE_NON_REVERTIVE,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will need to make sure the recovery path of non-revertive flavor is more clear.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need an attribute for delayed recovery when the port is up again?

@manamand2020 manamand2020 Aug 15, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Intentionally kept this out of the scope here. I think delay/debouncing should be handled by the Port object itself. Like Link UP and Link Down debouncing. We already have attributes like SAI_PORT_ATTR_LINK_UP_DEBOUNCE_TIMEOUT and there is a proposal for link down in #2284.

For link damping as well we should extend the existing https://github.com/sonic-net/SONiC/blob/master/doc/link_event_damping/Link-event-damping-HLD.md
I see that this defines as switch level attribute to update the oper status using SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER.

@manamand2020 manamand2020 changed the title Fast ReRoute EVPN MultiHoming for L3VNI-routed traffic EVPN MultiHoming Fast ReRoute for L3VNI-routed traffic Aug 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants