← На главную

Обход для UniFi: PPPoE Half-Bridge на OpenWrt разгоняет до 5000 Mbps

03.08.2026 08:34 · hackernews

В офисе ArcBox Labs стоит 5-гигабитное PPPoE-подключение за шлюзом UniFi, но скорость далека от заявленной. UDM Pro Max с трудом тянет нагрузку и теряет стабильность. Это знакомая история для многих пользователей UniFi: большинство шлюзов, от UDM Pro/SE и UXG Pro до EFG, используют CPU без аппаратного ускорения PPPoE и NAT. Поэтому на PPPoE пропускная способность серьёзно проседает. UDM Pro/SE выдаёт 1200–1500 Mbps, UDM Pro Max — 1400–1800 Mbps, EFG — 1400–2400 Mbps. Зато UCG Fiber на MediaTek Filogic 880 имеет аппаратное ускорение и легко превышает 5000 Mbps.

Почему PPPoE так тормозит? Протокол добавляет всего 8 байт заголовков, но дело не в них. Роутеру нужно на каждый пакет добавлять PPPoE-заголовок при отправке и снимать его при приёме. Это требует либо мощного CPU, либо специальной ASIC. Без аппаратного ускорения почти все реализации PPPoE однопоточные: даже на многоядерном CPU обработка сидит на одном ядре. В pfSense есть RSS, в Linux — RPS/XPS, но они помогают только при нескольких PPPoE-сессиях. Обычный случай — одна сессия, и она привязана к одному ядру.

На апрель 2026 года лишь единичные UniFi-шлюзы, вроде UCG Fiber, имеют аппаратное ускорение PPPoE. И чем дороже шлюз, тем меньше шансов: EFG построен на Marvell OCTEON TX2, где такой поддержки нет. Прошивка тут не поможет — корень проблемы в железе.

Решение — PPPoE Half-Bridge (или Zero IP Bridge). Отдельное устройство, например, на OpenWrt, само поднимает PPPoE-сессию, получает публичный IPv4, снимает его с виртуального интерфейса ppp0 и отдаёт нижестоящему UniFi-шлюзу через DHCP. Так UniFi получает публичный IP, не тратя CPU на PPPoE. Некоторые ONT/ONU от провайдеров уже умеют это делать (Advanced DMZ, IP Passthrough, DMZplus), но не все.

Готовая реализация лежит в GitHub-репозитории arcboxlabs/pppoe-half-bridge. Она использует hotplug.d в OpenWrt: файл 99-half-bridge срабатывает при успешном поднятии PPPoE и запускает start-half-bridge.sh. Скрипт отключает NAT/MASQUERADE, читает адрес с ppp0, вычисляет /24, настраивает DHCP-сервер так, чтобы отдать публичный IPv4 на шлюз, добавляет политику маршрутизации, перезапускает DHCP и физический интерфейс. Для UniFi приходится дополнительно прописывать статические ARP-записи — у них багованная реализация ARP.

Тестировали на Banana Pi BPI-R4 Pro с OpenWrt, но подойдёт любой совместимый девайс. В тестах удалось пробить 5000 Mbps.

Читать оригинал →