Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jul 2006 07:12:32 -0700
From:      Luigi Rizzo <rizzo@icir.org>
To:        net@freebsd.org
Subject:   multiple DSL modems and pppoe sessions on the same ethernet ?
Message-ID:  <20060726071232.A96367@xorpc.icir.org>

next in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060726071232.A96367>