Jeff Croft wrote:
Hello --

I'm configuring FreeBSD 7.1 as a router/load-balancer and I just got stuck. I know this sounds like a newbie question, but hear me out.

I have three DSL line (AT&T in SF Bay Area, business class) connected via ethernet to the box, and one more ethernet connected to an internal network. The idea is to do some clever kind of load-balancing and/or logging of DSL connections using pf.

All three DSL lines are configured to use PPPoE. I can successfully bring any one of them up individually, but when I try to bring more than one up, using either ppp or mpd5, I get an error that looks like this (example from ppp):

ppp : tun0: Warning: iface add: ioctl(SIOCAIFADDR, X.X.X.X -> D.D.D.D ): File exists

and then the 2nd link goes down. mpd5 says the same thing, but the error is slightly different. For all three point-to-point links the remote side of the point to point (D.D.D.D) is always the same IP address, so naturally it doesn't want to add multiple routing table entries which point to the same destination.

The vendor claims to be unable to change the value of D.D.D.D because "everyone in your region has the same remote address." They also don't support mlppp, so multilink is out.

Did you try multilink PPP? they might not support, but it may work
anyway...

Also, I would like easy, real-time, programmatic access to the IP address of each individual DSL line.

So far, I've thought of the following workarounds:

1. Use cheap linksys boxen to hang off each DSL line so the FreeBSD network stack doesn't have to do the PPPoE. I'm concerned that they'll be able to handle the volume of individual connections I'm planning on, even with the firmware replaced with something decent. Plus it's three extra devices on my network! 2. Use network virtualization such as this. I don't have any experience with it, but I'm guessing it would do everything I want.
http://imunes.tel.fer.hr/virtnet/

Does anyone have any ideas how to solve this problem more elegantly?

Not elegantly, but you can change the remote peer address to something else. That is:
1) Bring up tun0, you get from IPCP 1.1.1.1 -> 2.2.2.2
        ifconfig tun0 1.1.1.1 3.3.3.3

2) Bring up tun1, you get 1.1.1.2 -> 2.2.2.2
        ifconfig tun1 1.1.1.2 4.4.4.4

3) Bring up tun2, you get 1.1.1.3 -> 2.2.2.2

The result will be:
tun0 1.1.1.1 3.3.3.3
tun1 1.1.1.2 4.4.4.4
tun2 1.1.1.3 2.2.2.2

You'll need to write a custom script, to modify
the addresses, I think both ppp and mpd can do that.

Are you going to use pf's route-to to forward packets
to all three interfaces? Since, the above hack doesn't
"solve" the next hop problem. You can only have one
next hop for each destination. On -CURRENT there is
support for ECMP, which may be a complete and correct
solution for this problem.

HTH, Nikos
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to