====== Accel-ppp on OpenWrt with MESHdesk ======
===== Background =====
* One of the main goals of MESHdesk is to enable fast WiFi deployment with commercial off-the-shelf (COTS) hardware and open source firmware.
* Another goal is the ability to manage network usage.
* For **bandwidth** and **data usage** management we include a captive portal.
* An alternative to a captive portal is PPPoE.
* In 2021 we introduced PPPoE client support in MESHdesk and APdesk.
* PPPoE is used by most WISPs.
* In South Africa (and probably in most other countries) the PPPoE server of choice is provided by Mikrotik's RouterOS.
* This is combined with the CPE of choice (usually Ubiquiti).
* There is already a solid and feature-rich open source PPPoE server called **Accel-ppp** for Linux.
* As we strongly believe in open source we want to offer a completely open source system for Internet providers.
* The biggest hurdle was compiling Accel-ppp and getting it to run under OpenWrt.
* Then we had to integrate it with MESHdesk and APdesk.
* This was no easy task but thanks to the work that others have done in the past we were able to draw on this knowledge and develop this last missing piece of the puzzle.
* Now that this part is complete we can offer Internet providers a managed alternative that could serve as a drop-in replacement for their current vendor-specific PPPoE servers.
===== POC using a $15 AP =====
* When fishing, it is much more fun to catch a big fish with a light line.
* For this Proof Of Concept (POC), we decided to go light on the hardware too.
* The Xiaomi 4C was on special offer, so we grabbed a couple of them.
* The price of the special offer was equivalent to ~15USD per device.
{{:technical:pppoe:4c_special.png|}}
* MESHdesk and APdesk support WiFi 6 and hardware with up to three radios.
* We have deliberately chosen entry-level hardware for this POC to prove a point.
* Here are the technical details of the AP:
^ Model ^ SoC ^CPU MHz ^Flash MB ^RAM MB ^WLAN Hardware ^WLAN2.4 ^WLAN5.0 ^100M ports ^
| Mi Router 4C | MediaTek MT7628AN |580 |16 |64 |MT7628AN |b/g/n |- |3 |
===== POC networks =====
==== Jhb-South (Main Mesh) ====
* We used the Wizard in RADIUSdesk to create a cloud called **Jhb-South**.
* We edit the **Jhb-South** mesh Exit Points:
* Remove the bridge exit point
* Add a PPPoE server exit point.
* This connects then with the **Jhb-South Wireless** SSID
{{:technical:pppoe:ppp_poc_mesh_exit.png|}}
* Jhb-South will be our main mesh network to which various APs will connect via WiFi and PPPoE.
==== Client Mesh Networks ====
* We create two client mesh networks named **Jhb-South-Unit1** and **Jhb-South-Unit2**.
* These can typically be a unit in a gated community.
{{:technical:pppoe:ppp_poc_mesh.png|}}
==== PPPoE RADIUS users ====
* We create permanent users that are used by the gateway AP of the client mesh networks.
* Since Accel-ppp can serve as replacement for Mikrotik, we can use the old Mikrotik attributes as they are.
* Accel-ppp will interpret them and apply the desired shaping.
* Accel-ppp also supports the advanced shaping functions that the Mikrotik PPPoE server do such as bursting.
* Again, there is no need to change any of the current Mikrotik reply attributes from RADIUS. It will interpret and apply even the advanced Mikrotik reply values.
{{:technical:pppoe:ppp_poc_pppoe_mikrotik.png|}}
==== Add gateway nodes to client networks ====
* We add gateway nodes to our client networks.
* We specify their Internet Connection as **WiFi Client - PPPoE** and provide the required information.
{{:technical:pppoe:ppp_poc_pppoe_client.png|}}
==== Up and running overview ====
* Now that the client gateway nodes have been added, we can display everything in a grid.
{{:technical:pppoe:ppp_poc_nodes.png?nolink|}}
* A few important points about the screenshot above.
* The Jhb-South mesh has two nodes: PPPoE-GW and Node-2.
* The Internet connection for PPPoE-GW is via Ethernet (LAN).
* The Internet connection for Node-2 is the mesh.
* The nodes in the client networks use WiFi for the Internet (WiFi with PPPoE)
* Although not shown here, one client AP is connected to the WiFi of the PPPoE-GW. The other client AP is connected to the WiFi of Node-2.
{{:technical:pppoe:ppp_poc_mesh.png?nolink|}}
If it is necessary to extend the coverage of the client networks (Unit1 and Unit2), you can simply add more mesh nodes to the client networks.
==== RADIUS Activity ====
* Finally we show the active sessions of Unit1 and Unit2 in RADIUS
{{:technical:pppoe:ppp_poc_pppoe_users.png?nolink|}}
* Since this is a replacement for Mikrotik, the extended RADIUSdesk functions such as FUP also work on the Accel-ppp PPPoE server.
* http://radiusdesk.com/wiki/radiusdesk/profiles/fup
==== Load on PPPoE server ====
* We deliberately chose low-end hardware, and although we did not perform any stress tests, the memory and CPU utilization of the node running Accel-ppp looks very good, even when the two client APs are streaming Youtube.
{{:technical:pppoe:ppp_poc_load.png?nolink|}}
* Our PPPoE clients are limited to 2Mbps up and down.
{{:technical:pppoe:ppp_poc_sessions.png?nolink|}}