1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

RP-PPPOE on Tomato

Discussion in 'Tomato Firmware' started by zmahomedy, May 28, 2008.

  1. zmahomedy

    zmahomedy LI Guru Member

    Anyone know if there is a RP-PPPOE module with Tomato? I need to run multiple PPPoE connections and I believe it works with the RP-PPPOE module? If it is not included what are my options?
     
  2. mstombs

    mstombs Network Guru Member

    rp-pppoe is a plug-in for pppd. I believe the pppoe plugin used in Tomato is pppoecd, but take a look at the mod for MLPPP, they've introduced a recent full pppd module.
     
  3. Guspaz

    Guspaz Addicted to LI Member

    1) There is an actual standalone user-mode daemon called "rp pppoe", I believe. I understand that it's quite slow.

    2) pppoecd is a self-contained PPPoE client, not a module for anything else

    3) Tomato/MLPPP does indeed have an updated version of pppd (we're using the Debian patchset of it) with the rp-pppoe module (we replaced pppoecd with pppd). This also required us to backport some PPP stuff from OpenWRT's (newer) kernel to Tomato's. All UI support is focused on MLPPP, though, so you'd have to do everything manually if you want distinct PPP sessions, not bonded ones.

    All the connection handling stuff is pretty much being completely re-written in the next release of Tomato/MLPPP. The previous methods used worked, but weren't terribly reliable at handling failures, and made status reporting difficult at best. There will actually be n+1 copies of pppd running in the future, with one of them acting as a master copy that maintains the bundle without owning an LCP session itself. That effectively removes the primary/secondary (or master/slave) relationship entirely, fixing a lot of problems we had with that relationship.
     
  4. mstombs

    mstombs Network Guru Member

    Happy to be corrected, my modem uses rp-pppoe as a plugin to pppd, and probably supports multiple connections.

    Does make me wonder though - what does Tomato use the 300KB binary pppd for, there's also a 70KB pptp and a l2tpd, routers can't handle pppoa - so what's left?

    Code:
    pppd version 2.4.1
    Usage: pppd [ options ], where options are:
            <device>        Communicate over the named device
            <speed>         Set the baud rate to <speed>
            <loc>:<rem>     Set the local and/or remote interface IP
                            addresses.  Either one may be omitted.
            asyncmap <n>    Set the desired async map to hex <n>
            auth            Require authentication from peer
            connect <p>     Invoke shell command <p> to set up the serial line
            crtscts         Use hardware RTS/CTS flow control
            defaultroute    Add default route through interface
            file <f>        Take options from file <f>
            modem           Use modem control lines
            mru <n>         Set MRU value to <n> for negotiation
    See pppd(8) for more options.
     
  5. Guspaz

    Guspaz Addicted to LI Member

    PPPd is required for PPTP and L2TP tunnels, as they both use PPP for transport.

    rp pppoe stands for Roaring Penguin PPPoE. I believe it started out as a user-mode client, and then was turned into a module for pppd that does everything in kernel-mode.

    When developing Tomato/MLPPP, we remarked several things about getting rp-pppoe.so working:

    1) Tomato ships with an ancient kernel
    2) Tomato ships with an ancient build of PPPd
    3) Tomato's kernel does not have the included MLPPP bits compiled in
    4) Enabling the MLPPP bits was not enough to get MLPPP working
    5) PPPd didn't work at all unless we were using the Debian PPPd patches. PPPd itself hasn't been updated in years, and Tomato's version is years older than that. One of Debian's patches undoubtedly fixed something in pppd/rp-pppoe that we need. We didn't bother trying to figure out what, and just used Debian's version of pppd.
    6) Tomato's kernel doesn't like mlppp, so we backported the ppp code from the latest kernel. Grabbed it from OpenWRT's 2.4 kernel.

    Those issues were certainly the biggest obstacle in getting Tomato/MLPPP working, but beyond that most of the actual work has been in managing the connections and multiple copies of PPPd.
     

Share This Page