cvs commit: src/sys/conf files options src/sys/net radix.c
route.c route.h rtsock.c src/sys/netinet in_proto.c ip_output.c
src/sys/netinet6 in6_proto.c in6_src.c nd6_nbr.c
andre at freebsd.org
Mon Apr 14 22:43:47 UTC 2008
Qing Li wrote:
> qingli 2008-04-13 05:45:14 UTC
> FreeBSD src repository
> Modified files:
> sys/conf files options
> sys/net radix.c radix.h route.c route.h rtsock.c
> sys/netinet in_proto.c ip_output.c
> sys/netinet6 in6_proto.c in6_src.c nd6_nbr.c
> This patch provides the back end support for equal-cost multi-path
> (ECMP) for both IPv4 and IPv6. Previously, multipath route insertion
Nice! Long overdue that we get this functionality. :-)
Do you do hash-based next-hop balancing ("flow"-aware) or packet
based round robin? Should it be made an option to switch between them
(globally) like on Cisco routers?
> is disallowed. For example,
> route add -net 18.104.22.168/24 10.9.44.1
> route add -net 22.214.171.124/24 10.9.44.2
> The second route insertion will trigger an error message of
> "add net 126.96.36.199/24: gateway 10.2.5.2: route already in table"
Would it make sense to retain this behavior by default (POLA) and have
multi-path being enabled via sysctl like packet forwarding in general?
Just adding the same route twice with different next-hops can lead to
very confusing situations for the users which are not used to multi-path.
> Multiple default routes can also be inserted. Here is the netstat
> default 10.2.5.1 UGS 0 3074 bge0 =>
> default 10.2.5.2 UGS 0 0 bge0
> When multipath routes exist, the "route delete" command requires
> a specific gateway to be specified or else an error message would
> be displayed. For example,
> route delete default
> would fail and trigger the following error message:
> "route: writing to routing socket: No such process"
> "delete net default: not in table"
Can this be made more descriptive? This messages are about as confusing
and non-descript as possible. Not being aware of the multipath functionality
I would pull out my last hair try to get rid of a route.
> On the other hand,
> route delete default 10.2.5.2
> would be successful: "delete net default: gateway 10.2.5.2"
> One does not have to specify a gateway if there is only a single
> route for a particular destination.
> I need to perform more testings on address aliases and multiple
> interfaces that have the same IP prefixes. This patch as it
> stands today is not yet ready for prime time. Therefore, the ECMP
> code fragments are fully guarded by the RADIX_MPATH macro.
> Include the "options RADIX_MPATH" in the kernel configuration
> to enable this feature.
How does this behave with common routing daemons; Quagga/Zebra, OpenBGPD,
OpenOSPFD? Do they have to be aware of the multipath functionality? Will
it confuse them?
What about the other big missing piece; new-arp? ;-) Something for BSDCan?
More information about the cvs-all