[LARTC] multipath device round robin not working?

zutph3n at gmail.com zutph3n at gmail.com
Sat Jan 13 12:54:24 CET 2007


Hi,

I have a linux server running kernel 2.6.19 that is connected with 2 
seperate 100Mbit links to the same isp:


                                 +---+
  +---------------+              | I |                        
+---------------+
  |               |              | S |                        
|               |
  |        eth0 --+--------------+ P |                        
|               |
  |               |              | S |                        
|               |
  | linux 2.6.19  |              | W |========================|  ISP 
GATEWAY  |
  |               |              | I |                        
|               |
  |        eth1 --+--------------+ T |                        
|               |
  |               |              | C |                        
|               |
  +---------------+              | H |                        
+---------------+
                                 +---+

Both links have their own ip but have the same gateway. The problem is I 
can't seem to get egress traffic load balanced over the 2 nics.

IP config after boot (dhcp from isp)
ip a:

1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo

2: eth0: <BROADCAST,MULTICAST,NOTRAILERS,UP,10000> mtu 1500 qdisc 
pfifo_fast qlen 1000
    link/ether 00:00:00:00:00:0f brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.110/24 brd 10.0.0.255 scope global eth0

3: eth1: <BROADCAST,MULTICAST,NOTRAILERS,UP,10000> mtu 1500 qdisc 
pfifo_fast qlen 1000
    link/ether 00:00:00:00:00:ed brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.120/24 brd 10.0.0.255 scope global eth1

Default routing table after boot
ip r:

10.0.0.0/24 dev eth0  scope link
10.0.0.0/24 dev eth1  scope link  metric 1
127.0.0.0/8 dev lo  scope link
default via 10.0.0.1 dev eth0
default via 10.0.0.1 dev eth1  metric 1

I enabled ip_forward and set arp_ignore to 1 for eth0 and eth1 to make 
sure the correct nic answers to arp requests.

I tried to get the egress load balancing to work by replacing the above 
two default routes with:

ip route add default mpath drr nexthop via 10.0.0.1 dev eth0 weight 1 
onlink nexthop via 10.0.0.1 dev eth1 weight 1 onlink

I assumed that with mpath device round robin both nics would be used 
more or less equally, but the reality is only one of the nics actually 
works and the second nic even stops responding to arp requests.

Am I doing something totally wrong or impossible here or is the device 
round robin code not working properly?


More information about the LARTC mailing list