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
