Optymalizacja łącza internetowego na routerze z OpenWrt

Ostatnio grając w Call of Duty Mobile, od czasu do czasu doświadczałem nagłego spowolnienia objawiającego się zwiększonym pingiem, co powodowało, że granie stawało się przez chwilę niemożliwe.
W moim domu mam trochę podłączonych urządzeń do sieci. Dzięki usługom streamingowym nasze gospodarstwo domowe bez problemu pobiera przeszło 1TB (1000GB) danych w miesiącu przy ok. 50GB danych wysłanych. Przy łączu 100/10Mbps to naprawdę sporo.
Nagły skok obciążenia internetu objawia się niekorzystnie dla osób grających online w postaci tak zwanego laga.
Ten nagły skok, spowolnienie, wydłużenie czasu odpowiedzi (ping) związany jest z tak zwanym Bufferbloat — lagiem pomiędzy pakietami.
O ile, przy normalnym routerze ciężko sobie z tym poradzić (Linksys WRT32X wraz z fabrycznym oprogramowaniem wykorzystuje tzw. Killer Prioritization Engine w celu optymalizacji m.in. Bufferbloat), o tyle z OpenWrt nie ma z tym większego problemu, gdyż tego typu funkcjonalność możemy dodać.
Sprawdzone w wersji OpenWrt 21.02 oraz OpenWrt 22.03
W tym celu należy zainstalować pakiet SQM (Smart Queue Management):
opkg update
opkg install luci-app-sqm
lub z poziomu LuCI (System > Software).
Konfiguracja jest bajecznie prosta.
Przechodzimy do Network > SQM QoS.
W zakładce Basic Settings zaznaczmy, Enable this SQM instance oraz wybieramy nasz interfejs, do którego podłączone jest nasze łącze internetowe.
W dalszej kolejności należy ustawić prędkość naszego łącza internetowego.
Zalecane jest ustawienie prędkości w granicach do 95% pełnej prędkości łącza, chociaż, w ramach testu sami możecie zdecydować, które ustawienie jest najlepsze. Jako że każde połączenie posiada swego rodzaju zapas (overhead), z reguły jesteśmy w stanie osiągnąć więcej niż oficjalnie powiedziane.
Mój router od Virgin Media z przyznanej konfiguracji pozwala na otrzymanie nawet 117 Mbps (117000047 bps) przy pobieraniu oraz 10.50 Mbps (10500047 bps) przy wysyłaniu.
Na początku ustawiłem 100000 kbit/s download (odpowiednik 100 Mbps) oraz 10000 kbit/s upload (odpowiednik 10 Mbps), po czym zwiększyłem download do 110000 kbit/s (odpowiednik 110Mbps).
Aby nie zaśmiecać dziennika (log) naszego routera niepotrzebnymi wpisami, zmieniłem Verbosity na raportowanie jedynie błędów (error).
W zakładce Queue Discipline zmieniłam z domyślnego fq_codel na cake oraz wybrałem skrypt piece_of_cake.qos.
W zakładce Link Layer Adoptation wybrałem Ethernet oraz Per Packet overhead (byte): 44.
W zależności, od rodzaju połączenia, Per Packet overhead warto poesperymentować (22, 26, 34), chociaż 44 jest ustawieniem optymalnym.
I tyle.
Następnie Save & Apply i wszystko jest gotowe.
Jeżeli zauważyłeś, w zakładce Basic Settings widnieje zielony przycisk Add, który pozwala dodać dodatkową konfigurację, w przypadku gdy posiadamy dodatkowe połączenie internetowe na naszym routerze.
Oto jak z wykorzystaniem DSL Reports - Speed Test moje połączenie internetowe otrzymało nieco stabilności.
Po (SQL QoS, Cake, piece_of_cake, LLA 44):
Widać różnicę? 😎
Pozdrawiam.