|
2 | 2 | # Recursive Route Handling HLD
|
3 | 3 | <!-- omit in toc -->
|
4 | 4 | ## Revision
|
5 |
| -| Rev | Date | Author | Change Description | |
6 |
| -|:---:|:-----------:|:----------------------:|-----------------------------------| |
7 |
| -| 0.1 | Oct 2023 | Yu Han / Yongxin Cao | Initial Draft | |
| 5 | +| Rev | Date | Author | Change Description | |
| 6 | +|:---:|:-----------:|:----------------------------:|-----------------------------------| |
| 7 | +| 0.1 | Oct 2023 | Lingyu Zhang / Yongxin Cao | Initial Draft | |
8 | 8 |
|
9 | 9 | <!-- omit in toc -->
|
10 | 10 | ## Table of Content
|
@@ -170,7 +170,7 @@ To streamline the discussion and ensure generality, we employ the following recu
|
170 | 170 | If one of the paths (path 10.1.0.28) for prefix 200.0.0.0/24 is removed, Zebra will actively update two routes during the recursive convergence handling, facilitated by the BGP client. One route update pertains to 200.0.0.0/24, while the other update concerns 2.2.2.2/32. In this scenario, route 200.0.0.0/24 experiences the removal of one path, while the reachability of route 2.2.2.2/32 remains unaffected. To minimize the traffic loss window, it's essential to promptly address the affected nexthops in the dataplane before zebra completes its route convergence process.
|
171 | 171 |
|
172 | 172 | <figure align=center>
|
173 |
| - <img src="images_recursive/path_remove.png" > |
| 173 | + <img src="images_recursive/path_remove_pic.png" > |
174 | 174 | <figcaption>Figure 3. The starting point for a path removal<figcaption>
|
175 | 175 | </figure>
|
176 | 176 |
|
@@ -315,6 +315,7 @@ BGP triggers 2.2.2.2 and other routes updates which are via 200.0.0.1. During 2.
|
315 | 315 | Notes:
|
316 | 316 | 1. Although this illustrations are on IGP remote link/node failure case, the similar work flow could be applied to local link failure and remote PE failure case as well.
|
317 | 317 | 2. The same logic and work flow could be applied to add paths to NHG, a.k.a zebra_rnh_fixup_depends() is a generic logic.
|
| 318 | +3. For SRV6 and EVPN type routing, their next hops store corresponding information such as vpn-sid and vni/label. This information, along with the changing routing address, together form the key for the nhg (Next Hop Group). We refer to this type of next hop as an overlay next hop. To address the issue where we cannot find the overlay NHE (Next Hop Entry) solely based on the route address, we create a separate additional pic nexthop for the next hops of SRV6 and EVPN type routes. This pic_nh will only contain the specific next hop address, and we establish dependents relationships for the pic_nh similar to those for other recursive type next hops. At the same time, we create an association between the pic_nh and the original overlay nh. Then at this point, we try to find the pic_nh based on the route address, and then quickly fix up according to the overlay nh pointed to by the pic_nh, ensuring fast traffic switching. |
318 | 319 |
|
319 | 320 | #### Throttle protocol client's route update events
|
320 | 321 | Zebra will always inform protocol clients that nexthop is changed. Protocol client could decide if it needs to throttle the corresponding routes update events if there is no changes in reachability and metrics. For SONiC, we will only consider BGP's handling.
|
|
0 commit comments