Commit 7cb8e8e
bgpd: [EVPN GR] fix EVPN GR for non default vrf
Consider a case where default vrf is EVPN enabled and there are some
tenant VRFs with no peers which imports some routes from default VRF.
With the current code for EVPN GR, BGP declares GR completion
after the default VRF is complete and not wait for other VRFs to complete
its deferral path selection.
Reason for this is because of the following sequence of events,
a) Since there are no peers in tenant VRFs(non default VRFs), we
prematurely send UPDATE_PENDING + UPDATE_COMPLETE in
peer_unshut_after_cfg().
b) When bgp_do_deferred_path_selection() is invoked for default VRF, it
completes the deferred path calculation and calls
bgp_evpn_handle_deferred_bestpath_for_vrfs() to enqueue the deferred
path selection for non default VRFs.
c) It then(for default VRF) sends UPDATE_COMPLETE followed by GR done
for all instances from BGP pov because the deferral related variables
are not set appropriately for non default VRFs (especially
gr_route_sync_pending)
Fixing the above by setting deferral related variables for non default
VRFs appropriately and sending UPDATE_PENDING accordingly.
Signed-off-by: Rajasekar Raja <[email protected]>
Signed-off-by: Chirag Shah <[email protected]>
Signed-off-by: Vijayalaxmi Basavaraj <[email protected]>1 parent 60f542a commit 7cb8e8e
1 file changed
+27
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4281 | 4281 | | |
4282 | 4282 | | |
4283 | 4283 | | |
| 4284 | + | |
| 4285 | + | |
| 4286 | + | |
| 4287 | + | |
| 4288 | + | |
| 4289 | + | |
| 4290 | + | |
| 4291 | + | |
| 4292 | + | |
| 4293 | + | |
| 4294 | + | |
| 4295 | + | |
| 4296 | + | |
| 4297 | + | |
| 4298 | + | |
| 4299 | + | |
| 4300 | + | |
| 4301 | + | |
| 4302 | + | |
| 4303 | + | |
| 4304 | + | |
| 4305 | + | |
| 4306 | + | |
| 4307 | + | |
| 4308 | + | |
| 4309 | + | |
| 4310 | + | |
4284 | 4311 | | |
4285 | 4312 | | |
4286 | 4313 | | |
| |||
0 commit comments