Recently, I try to understand the implementation of the routing subsystem.
It's so complex, and I'm quite confused by so many different structures.
As my understanding about the four structures fib_node, fib_alias, fib_info, and fib_nh:
fib_node can be used to identify a subnet or a host.
fib_alias is used to represent a route.
fib_info contains the real routing information.
fib_nh contains the information of the next hop.
I can understand fib_node can have a few fib_alias objects because Linux supports multipath. For the same subnet, there may exist several routes to it.
Several fib_alias objects share one fib_info, it's still reasonable because different routes may share the same parameter values of an existing fib_info object.
But why one fib_info can have several fib_nh objects? That means a route may have several next hops, but it seems unreasonable.
Can someone show me an example to help me understand it?
Thank you in advance.
Best,
Zheng Da