Page MenuHomeFreeBSD

routing: actually sort nexthops in nhgs by # ascending.
ClosedPublic

Authored by melifaro on Jun 25 2022, 8:06 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Aug 16, 8:20 PM
Unknown Object (File)
May 24 2024, 7:51 PM
Unknown Object (File)
Apr 27 2024, 6:17 PM
Unknown Object (File)
Apr 27 2024, 6:17 PM
Unknown Object (File)
Apr 27 2024, 6:12 PM
Unknown Object (File)
Apr 27 2024, 4:39 PM
Unknown Object (File)
Mar 20 2024, 6:16 PM
Unknown Object (File)
Jan 12 2024, 3:02 PM
Subscribers

Details

Summary

Nexthops in the nexthop groups needs to be deterministically sorted by some of their property to simplify reporting when changing between large next hop-groups.

Fix reporting by actually sorting next hops by their indices (wn_cmp_idx()). calc_min_mpath_slots_fast() has different assumption - that next hops are sorted using their relative weight in the nexthop groups, which is now broken. The latter sorting is required to quickly determine the layout of the next hops in the actual forwarding group (how do we split the traffic between nhops with weights 19,31 and 47?). Note that this is only required during nexthop group creation. Note also that normally all next hops would be of the same weight.
With that in mind, (a) use spare 32 bytes inside struct weightened_nexthop to avoid memory allocation for such sorted array and (b) use insertion sort to sort the nexthop weights.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable