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ć.

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.

OpenWrt — 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).

OpenWrt — SQM QoS — Basic Settings

W zakładce Queue Discipline zmieniłam z domyślnego fq_codel na cake oraz wybrałem skrypt piece_of_cake.qos.

OpenWrt — SQM QoS — Queue Discipline

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.

OpenWrt — SQM QoS — Link Layer Adaptation

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.

Przed (bez SQL QoS):

Bufferbloat pre SQM QoS

Po (SQL QoS, Cake, piece_of_cake, LLA 44):

Bufferbloat post SQM QoS

Widać różnicę? 😎

Pozdrawiam.

Komentarze
Kategorie