I’ve been running NetBSD/i386 on my home firewall/router for almost a year now, initially version 2.0 (using ipfilter) and now version 3.0_BETA (using pf). NetBSD’s kernel pppoe(4) handles the PPPoE connection to my ISP, and for the most part works very well.

Recently I’ve started having a few problems with the connection dropping and not coming back up properly. ifwatchd(8) normally brings the connection back up, but in some cases the session is in an incorrect state, with the result that the PPPoE interface doesn’t come back up properly. Adding options PPPOE_TERM_UNKNOWN_SESSIONS to my kernel config helped sorted that out, but in some cases it still wouldn’t come up properly due to PAP failures. As a further failsafe, I’ve hacked together a script that runs every 15 minutes via cron and, if the PPPoE interface is down, it resets the authentication failures and brings the interface up. It seems to have helped – I haven’t had to bring the connection up manually for a few weeks.

You can grab the script here.