multiple DSL modems and pppoe sessions on the same ethernet ?
Luigi Rizzo
rizzo at icir.org
Wed Jul 26 14:12:34 UTC 2006
hi,
i am trying to run, on a single FreeBSD box, multiple (3 in my case)
pppoe instances talking to as many DSL modems on the same ethernet cable
------+--------------+--------------+--------------+-----
| | | |
+-[modem1] +-[modem2] +-[modem3] +-[FreeBSD/ppp]
DSL#1 DSL#2 DSL#3
Ideally, in /etc/ppp/ppp.conf i can write something like
modem1:
set device PPPoE:rl0:dsl1
...
modem2:
set device PPPoE:rl0:dsl2
...
modem3:
set device PPPoE:rl0:dsl3
...
and the PPPoE spec (RFC2516) says this should work as long as each
DSL line has a different 'service name' (tag 0x101 in the packet).
The problem is, my provider does not provide specific service names,
but it will accept anything i supply. So when i run the three ppp instances,
they will all match, and the code in ng_pppoe.c will happily take the
first reply as good.
The only approach left is then implement some form of MAC filtering,
e.g. overloading the 'service name' to specify the mac address of the
modem i am interested in.
There is a couple of ways to implement this, one is patching the
receive path (ng_pppoe_rcvdata(), case PADO_CODE) to filter replies
based on the source mac address, and the other one is to patch
the code transmitting the PADI packet to replace the broadcast
dst address with the unicast MAC taken from the "service name".
Any better ideas ?
cheers
luigi
More information about the freebsd-net
mailing list