favero@grad.ufsc.br
2004-Aug-20 04:29 UTC
Load Balance adsl connections: a complete explanation of my case...
I have a linux server running Mandrake 10, with the kernel configured with "CONFIG_IP_ADVANCED_ROUTER=y CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_ROUTE_MULTIPATH=y" options, with 4 ethernet cards: - 2 ethernet used to connect to my lan (eth0=192.168.1.x and eth1=192.168.2.x) - 2 ethernet used to internet connection (2 adsl lines, both with 600/300 kbtis) The two lan are used to share the internet connetion with my friends. We run p2p services on the linux server, so all the heavy traffic is generated directly by the linux server. The main objective here is to load balance the traffic generated by the p2p services running on the server and the lan through the 2 adsl lines, and make the 2 adsl 600/300 kb/sec looks like a 1200/600 kb/sec connection... Here is a diagram of the network (i don´t know if it helps.. but.. here it is): ___________________ eth0 | |ppp0 _______| Linux Server |__________ | (Firewall + P2p | _______| +Traffic control |__________ eth1 | +Load Balance) |ppp1 |__________________| To make the traffic control i mark all packets using iptables, then i put identical cbq rules on each ppp connection. My ideia is that the packets go to the cbq qdiscs only after they was routed to that ppp connection... is that right? If it is, this might work... The load balance is a problem.. i tried to load balance using the commands below: ip rule add from 200.193.25.93 lookup 1 ip route add 192.168.1.0/24 via 192.168.1.1 table 1 ip route add 192.168.2.0/24 via 192.168.2.1 table 1 ip route add 0/0 via 200.138.225.254 table 1 ip rule add from 201.3.232.150 lookup 2 ip route add 192.168.1.0/24 via 192.168.1.1 table 2 ip route add 192.168.2.0/24 via 192.168.2.1 table 2 ip route add 0/0 via 201.3.196.254 table 2 ip route add default equalize nexthop via 200.138.225.254 dev ppp0 nexthop via 201.3.196.254 dev ppp1 But... when i use the above commands the lan can´t communicate with the internet, just the linux server can see the internet... so i need to put one of the ppp connection as a "default gateway" to make the lan see the internet, using the command: route add default gw 200.138.225.254 then, i get this route table: 200.138.225.254 * 255.255.255.255 UH 0 0 0 ppp0 201.3.196.254 * 255.255.255.255 UH 0 0 0 ppp1 192.168.4.0 * 255.255.255.0 U 0 0 0 eth3 192.168.2.0 * 255.255.255.0 U 0 0 0 eth1 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 201.3.196.254 0.0.0.0 UG 0 0 0 ppp1 default 200.138.225.254 0.0.0.0 UG 0 0 0 ppp0 But, in this case, the traffic coming from the lan don´t get load balanced... just go through the ppp0 (200.138.225.254), and looks very strange to me to have two "default gateway". Even if i keep the first configuration option, without using the "route add default gw 200.138.224.254" command, and keeping the lan disconnected (for test purposes) i can see that the traffic generated by the linux server use the 2 adsl lines, but it don´t make a "load balance"...if i make a "traceroute" it ALWAYS go through the first "NEXTHOP" ip configured on the "ip route add default equalize nexthop" command... Even if i give a "ip route list cache" and catch a ip that on the cache route list go through the second nexthop ip, the traceroute go through the first nexthop ip... So i don´t understand: why the traceroute don´t use the cached route? I can only imagine that something is wrong in my configuration... And worst: keeping the server running with two default gateways for a long time i can see that NEVER the traffic get more than 80 Kbytes/sec (640 Kbytes)...In a healthy system with correct configuration, running p2p services, with hundreds of simultaneous connections, the speeds should go near the 1000 kbits (125 Kbytes/seg) even if i consider the adsl overhead... Someone have some idea of where is the problem? Why i get a poor load balance that never gets more than 60% of the bandwidth of each adsl? The internet have just a few load balance information... i read almost all the pages google could find and i still can´t figure out what´s the problem.. I´ll appreciate all help u can give me! Tks in advance! Fernando Favero _______________________________________________ LARTC mailing list / LARTC@mailman.ds9a.nl http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/