e.janz@barceloviajes.com
2007-Apr-18 11:06 UTC
The "ip route get" returns wrong interface and gateway in an multipath routing environment
Hi, I think I found a problem in iproute or ubuntu kernel. I think that the "ip route get" returns wrong interface and gateway in an multipath routing environment on Ubuntu 6.06 LTS. I reported it also to launchpad as a bug: https://bugs.launchpad.net/ubuntu/+source/iproute/+bug/105521 The easiest way to reproduce it is to start an Ubuntu 6.06 LTS Live on a system with three IF''s and setup the environment as follows: root@ubuntu:~# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 up root@ubuntu:~# ifconfig eth1 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up root@ubuntu:~# ifconfig eth2 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255 up root@ubuntu:~# ip route add default nexthop via 192.168.1.254 dev eth1 weight 1 nexthop via 192.168.2.254 dev eth2 weight 1 root@ubuntu:~# ip rule add prio 111 from 192.168.1.1 table 111 root@ubuntu:~# ip rule add prio 222 from 192.168.2.1 table 222 root@ubuntu:~# ip route add default table 111 via 192.168.1.254 root@ubuntu:~# ip route add default table 222 via 192.168.2.254 root@ubuntu:~# ip route ls 192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.1 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1 default nexthop via 192.168.1.254 dev eth1 weight 1 nexthop via 192.168.2.254 dev eth2 weight 1 root@ubuntu:~# ip rule ls 0: from all lookup local 111: from 192.168.1.1 lookup 111 222: from 192.168.2.1 lookup 222 32766: from all lookup main 32767: from all lookup default root@ubuntu:~# ip route ls table 111 default via 192.168.1.254 dev eth1 root@ubuntu:~# ip route ls table 222 default via 192.168.2.254 dev eth2 root@ubuntu:~# uname -a Linux ubuntu 2.6.15-23-386 #1 PREEMPT Tue May 23 13:49:40 UTC 2006 i686 GNU/Linux root@ubuntu:~# ip -V ip utility, iproute2-ss041019 root@ubuntu:~# ip route get 1.2.3.1 1.2.3.1 via 192.168.2.254 dev eth2 src 192.168.1.1 cache mtu 1500 advmss 1460 hoplimit 64 root@ubuntu:~# ip route get 1.2.3.2 1.2.3.2 via 192.168.2.254 dev eth2 src 192.168.2.1 cache mtu 1500 advmss 1460 hoplimit 64 As you can see, the "ip route get" always returns ".. via 192.168.2.254 dev eth2 ..." and only switches the source ip but not the corresponding interface and gateway. I saw this behaviour a long time ago on Debian, but by now, on Debian Woody this is working fine as least on kernel 2.6.14 and 2.6.16 with the same iproute package and the "ip route get" output also gives the right interface and gateway ( I did not test it on more environments ). On an installed Ubuntu 6.06 LTS the behaviour is also wrong ( I found this problem on a 2.6.15-28-server kernel with the same iproute package ). ¿ Any idea why this is happening ? ¿ Is this a regression ? ¿ Any suggestions ? Kind Regards, Eric Janz -- ADVERTENCIA LEGAL El contenido de este correo es confidencial y dirigido unicamente a su destinatario. Para acceder a su clausula de privacidad consulte http://www.barceloviajes.com/privacy LEGAL ADVISORY This message is confidential and intended only for the person or entity to which it is addressed. In order to read its privacy policy consult it at http://www.barceloviajes.com/privacy _______________________________________________ LARTC mailing list LARTC@mailman.ds9a.nl http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc