Hi list, I know there are three patches to provide zebra the ability of handling IPv6 ECMP routes received from protocol clients:
http://patchwork.quagga.net/patch/988/ (6WIND, 2014-06-25) http://patchwork.quagga.net/patch/916/ (Cumulus, 2013-10-24) http://patchwork.quagga.net/patch/678/ (Vincent Bernat, 2012-10-23) As you know, the 6WIND ECMPs were tested long time ago, before Cumulus and Vincent's ones because the Linux kernel's ECMP is from 6WIND in fact (Nicolas/cc'd) who did upstream it on netdev. But it does not prevent others to come with good ideas, so a taxonomy could help and I checked them today. Comparing with the 6WIND patch, the differences I can see from the other two patches are: (1) Cumulus vs. 6WIND I would say, the two patches are doing nearly the same thing - composing the multiple next-hops from the received IPv6 route, based on the rule - N gateway addresses followed by N interface indexes, which complies with the behavior in zapi_ipv6_route(). The only difference exists in the implementation detail. I made validations on this part of patch. And it seems work. Beyond that above, Cumulus patch did more: a) it validated each next-hop using rib_bogus_ipv6(); this would be good. b) it accepted at most MULTIPATH_NUM next-hops; I think it's better to remove this limitation. c) it enhanced rib_dump() to show both IPv4 and IPv6 routes; this is no more needed today. d) it did some fixes in netlink_route_multipath() and rib_add_ipv4(); this is no more needed today. (2) Vincent Bernat vs. 6WIND I would say, his patch could not work today (I made test). It re-used zread_ipv4_add() for both IPv4 and IPv6, and renamed it to zread_ipvX_add(). It did not notice that the IPv6 next-hops were not provided as the sequence of IPv4 ones (please refer to zapi_ipv6_route). See, it is a patch from 2 years ago. I did not check whether it could work at that time. Best regards, Feng Lu _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
