[quagga-dev 4369] Re: multipath policy support for quagga

Bill Rugolsky Jr. brugolsky at telemetry-investments.com
Wed Sep 20 13:59:51 BST 2006

On Wed, Sep 20, 2006 at 08:26:24AM -0400, Andrew J. Schorr wrote:
> On Tue, Sep 19, 2006 at 12:13:30AM +0200, Piotr Chytla wrote:
> > In last few days or maybe more ;) I've been working on multipath routing ,
> > enable-multipath for quagga works great , routes inserted for ex. by ospf 
> > to routing table have 2 or more nexthops , but problem is that
> > packet distribiution is based on route cache. Route cache can't balance traffic 
> > between two or more connections (I've 2 machines connected with 2 ethernet connections, 
> > with ospf between them) , when route is cached , all 
> > flows will goes only via one connection.
> > I've write patch for quagga 0.99.4 (It will also fit to cvs), that
> > implement selection of multipath policy(multipath policy is in linux
> > kernel from 2.6.12) . 
> This sounds interesting, but I have a preliminary stupid question:
> where is this linux multipath policy feature documented? 
> I couldn't find it with google...


        bool "IP: equal cost multipath"
        depends on IP_ADVANCED_ROUTER
          Normally, the routing tables specify a single action to be taken in
          a deterministic manner for a given packet. If you say Y here
          however, it becomes possible to attach several actions to a packet
          pattern, in effect specifying several alternative paths to travel
          for those packets. The router considers all these paths to be of
          equal "cost" and chooses one of them in a non-deterministic fashion
          if a matching packet arrives.

        bool "IP: equal cost multipath with caching support (EXPERIMENTAL)"
        depends on IP_ROUTE_MULTIPATH
          Normally, equal cost multipath routing is not supported by the
          routing cache. If you say Y here, alternative routes are cached
          and on cache lookup a route is chosen in a configurable fashion.

          If unsure, say N.

        tristate "MULTIPATH: round robin algorithm"
        depends on IP_ROUTE_MULTIPATH_CACHED
          Mulitpath routes are chosen according to Round Robin

        tristate "MULTIPATH: random algorithm"
        depends on IP_ROUTE_MULTIPATH_CACHED
          Multipath routes are chosen in a random fashion. Actually,
          there is no weight for a route. The advantage of this policy
          is that it is implemented stateless and therefore introduces only
          a very small delay.

        tristate "MULTIPATH: weighted random algorithm"
        depends on IP_ROUTE_MULTIPATH_CACHED
          Multipath routes are chosen in a weighted random fashion. 
          The per route weights are the weights visible via ip route 2. As the
          corresponding state management introduces some overhead routing delay
          is increased.

        tristate "MULTIPATH: interface round robin algorithm"
        depends on IP_ROUTE_MULTIPATH_CACHED
          Connections are distributed in a round robin fashion over the
          available interfaces. This policy makes sense if the connections 
          should be primarily distributed on interfaces and not on routes. 

More information about the Quagga-dev mailing list