Th.Oughts : Multiple route support (equalize)

Equalize ? Ring a bell ? No ? Ignore the crap or else read on!

equalize lets you do some nifty things to multipath routing in the linux kernel. While, normal multipath routing gives you the guarantee that flows are equalized over all the links, sometimes it becomes really necessary to equalize over packets. Now, when you think of the transport layer, the only name that comes to your mind may be TCP and then, you would think why on earth would you want to do something like that ? We are already living in a perfect world! Guess what, you are not! There are other interesting transport layer mechanisms that might have some good use of this feature. Nevertheless, you can still try out equalize over TCP.

How it works ? First, you have to patch your kernel with the "magical" patch and then you have to use the iproute2 utilities, a standard on all Linux distributions.You would run something like

ip route add destaddress/netmask equalize nexthop dev nexthop dev nexthop

There used to be a equalize patch for 2.4 but it never saw the light of the day for 2.6 (AFAIK) for several valid reasons, the primary factor being the memory requirements. Because, equalize works by flushing out the routing entry every time its done sending a packet. EVERY SINGLE TIME! This way, it ensures the switching between alternate devices for every packet. Kinda crude but it works :) I have been working on a equalize patch for the 2.6 kernel which is currently just a port of the 2.4 patch (very very beta, almost alpha). You can find it here.

This patch applies cleanly to 2.6.23 and you need to have CONFIG_IP_ROUTE_MULTIPATH enabled to actually use it. I plan to enhance it to use some probabilistic algorithm to make it more usable and efficient, the details of which I will post later. You may also want to have a look at the 2.4 patch here

If you have a setup where you can test the 2.6 patch, please try out the patch and let me know how it goes :)


blog comments powered by Disqus