FritzBox: traffic optimaliseren
Het dataverkeer optimaal prioriteren
Als een videostream blijft haperen, downloads opeens blijven hangen of een first-person-shooter na de eerste stappen niet meer verder komt, moet je bij je router eens naar de functies voor de Quality of Service kijken. We hebben met een Fritzbox gemeten wat die techniek oplevert en geven advies over welke instellingen je het beste kunt gebruiken.
Moderne routers regelen met de Quality of Service (QoS) het uitgaande internetverkeer, zodat meerdere internettoepassingen parallel en vloeiend blijven werken. Omdat de meeste internetaansluitingen asymmetrisch zijn (met een snellere downlink dan uplink), is de verbindingssnelheid in de zendrichting een schaars goed. QoS dient ervoor om die krappe resources zo goed mogelijk over alle internettoepassingen te verdelen. De techniek werkt alleen op de pakketten die een router zelf verstuurt.
Standaard is het grootste deel van de QoS-functies niet actief. Dat is bij bijna alle routers zo – en dat is ook zinvol omdat de fabrikanten niet weten welke toepassingen bij jouw aansluiting voorrang moeten hebben en welke wat minder belangrijk zijn. Een Fritzbox geeft in de standaardinstellingen alleen voorrang aan TCP-bevestigingen (Acknowledge, ACK), DNS-, IGMP- en TR-069-pakketten en VoIP-data. Voor je eigen wensen moet je de instellingen handmatig aanpassen. Met een beetje knowhow is dat echter niet zo moeilijk. Eerst de basisinstellingen: een Fritzbox heeft filters voor uitgaand IP-verkeer en heeft daar drie zend-queues met drie prioriteiten voor (QoS-categorieën): 'Realtime Applications' hebben de hoogste prioriteit, daarna volgen na elkaar de 'Prioritized Applications' en de 'Background Applications'.
Pakketten voor internettelefonie (VoIP) die een Fritzbox zelf genereert, zijn bij de Real-time Applications ingedeeld. De overige rubrieken zijn standaard leeg. De Fritzbox heeft geen instellingen voor het prioriteren van TCP-, DNS-, IGMP- en TR-069-pakketten.
QoS-prioritering heb je alleen nodig bij situaties met concurrentie, dus als meerdere toepassingen zoveel mogelijk bandbreedte willen hebben. Als de uplink maar door één toepassing gebruikt wordt, krijgt die sowieso de hele bandbreedte,
dus dan hoef je niets in te stellen. VoIP- en ACK-pakketten hebben zo kort mogelijke looptijden nodig (latentie), dus die krijgen voorrang boven andere pakketten. Korte latenties zijn bij VoIP nodig voor een snelle spraakweergave. Bij latenties van meer dan 200 milliseconden onderbreken de sprekers elkaar omdat ze spreekpauzes niet meer herkennen. Als de pakketten dan pas aankomen als de ontvangstbuffer leeg is, treden er uitvallers op. Als te veel pakketten te laat aankomen, wordt de verbinding verbroken.
TCP-ACK-pakketten zijn bevestigingen die voor veel toepassingen essentieel zijn. Als die bevestigingen bij een download bijvoorbeeld vertraagd verstuurd worden omdat de zendrichting op dat moment met iets anders bezig is (het sturen van mail, cloudsynchronisatie, et cetera), dan verlaagt de server de downloadsnelheid. Als de bevestigingen te lang uitblijven, wordt de download afgebroken. Alleen met QoS kan een download ondanks gelijktijdige upload met maximale snelheid blijven lopen.
Het is echter niet altijd zinvol om ACK-pakketten met de hoogste prioriteit te versturen. Dat is bij een sterk asymmetrische aansluiting het geval, dus als de uplink een veelvoud langzamer is dan de downlink (bijvoorbeeld bij een kabelaansluiting). Dan kunnen zeer snelle downloads de upload indirect verstoppen door de vele ACK-pakketten en blijft er onder bepaalde omstandigheden te weinig zendcapaciteit over voor VoIP en andere realtime toepassingen. Een Fritzbox stopt de TCP-ACK-pakketten altijd bij de geprioriteerde toepassingen.
Drie niveaus
Er is een maximum aan wat je kunt verzenden. Als je ergens in een concurrentiesituatie voorrang aan wilt geven, moet je andere toepassingen afremmen. Mogelijke kandidaten voor een lagere QoS-categorie zijn browsen, mailen en cloudsynchronisaties. Dergelijke toepassingen hebben weinig of geen last van hoge latenties – het duurt alleen wat langer voordat een mail verstuurd wordt of het synchroniseren met de cloud klaar is.
Pakketten uit de realtime-categorie mogen de complete zendcapaciteit voor korte tijd in beslag nemen en de twee andere categorieën afremmen. Als pakketten van verschillende toepassingen bij dezelfde categorie behoren, verdeelt de Fritbox de zendcapaciteit daar gelijkmatig tussen.
Pakketten die bij de tweede categorie horen ('Prioritized Applications'), mogen op een aantal modellen 90 procent van de uploadcapaciteit benutten en bij andere modellen zelfs tot 100 procent. Ze krijgen voorrang boven de achtergrondprocessen.
Zo werkt prioriteren
Om QoS-regels voor je toepassingen op te stellen, ga je naar de webinterface van de router en meld je je aan. Schakel bij het menu rechtsboven de 'Advanced View' in. De QoS-instellingen staan dan in het menu 'Internet / Filters / Prioritization'.
Voor een handvol gangbare toepassingen heeft AVM al pakketfilters gedefinieerd, zodat je die alleen nog maar aan een hogere prioriteitscategorie hoeft toe te voegen. Naast het VoIP-verkeer zijn dat browsen, HTTP-server, FTP-server, eMule, BitTorrent, MS remote-desktop, SSH, Telnet en 'Everything except surfing and mail'.
Om een van de kant-en-klare pakketfilters aan een prioriteitscategorie toe te wijzen, klik je bij de gewenste prioriteitscategorie op 'New Rule'. In het volgende venster selecteer je de netwerkapparaten waarvoor de instelling moet gelden in het drop-downmenu. Dat kan voor allemaal of voor een bepaald ip-adres. In het onderste menu selecteer je de netwerktoepassing. Na een klik op 'OK' staat de toepassing
voor het gewenste apparaat bij de betreffende categorie. Als je filesharing-diensten als BitTorrent en eMule gebruikt, is het aan te raden die aan de achtergrondapplicaties toe te voegen en daar een regel voor alle netwerkapparaten voor aan te maken.
Als je SSH-verbindingen gebruikt, is het zinvol om daar een hoge prioriteit aan te geven. Dan worden toetsenbordaanslagen ook met maximale snelheid weergegeven als andere toepassingen druk aan het zenden zijn.
Als je een webserver via internet toegankelijk wilt maken om bijvoorbeeld van buitenaf naar de beelden van een webcam te kunnen kijken, voeg je 'HTTP Server' toe aan de 'Prioritized Applications' en beperk je de regel tot het ip-adres waarmee de webcam bereikbaar is.
Strategieën
Bij toepassingen waar AVM nog geen instellingen voor heeft, kun je met de volgende vier stappen aan de slag: maak eerst een lijst van toepassingen die in je netwerk draaien en deel die in drie categorieën in. Maak vervolgens per categorie voor elke toepassing die bij die categorie moet horen een filterregel aan.
Identificeer eerst alle tijdkritische toepassingen die je gebruikt. Maak voor elk daarvan een eigen filterregel bij de categorie 'Prioritized Applications'.
De beide andere categorieën kun je naar eigen goeddunken gebruiken. Als browsen bijvoorbeeld belangrijk voor je is, voeg je het HTTP-verkeer via de optie 'Surfing' toe aan de geprioriteerde toepassingen. Dan krijgen alle HTTP-requests voorrang. Het versturen van mails, VPN-verkeer, cloudsynchronisatie, dat zijn allemaal kandidaten voor de categorie 'Background Applications'. Als je veel thuiswerkt, is VPN voor de verbinding met je bedrijf belangrijk. Die hoort dan bij de categorie 'Prioritized Applications'. Dat is ook het geval als er tijdkritische toepassingen via de VPN-tunnel verstuurd moeten worden. Dan kun je de VPN-filterregel toevoegen aan de 'Real-time Applications'. Dat is bijvoorbeeld zo als je via VPN SSH- of remote-control-verbindingen opbouwt.
Ook het ontvangen van high-res videostreams hoort bij de 'Prioritized Applications' (Netflix, YouTube en dergelijke). Voor streams is een gelijkmatige weergave belangrijk. Daar is eigenlijk een hoge en tegelijkertijd constante datasnelheid voor nodig. Omdat het internet die niet kan garanderen, bouwen programmeurs grote ontvangstbuffers bij videostreamapps in. Hoe groter die buffer, des te groter de kans dat die buffer de zwalkende ontvangstsnelheid gelijk kan strijken, zodat de stream zonder haperingen weergegeven wordt. Door het prioriteren van het uitgaande streamingverkeer gaan de aanvraagpakketten zo snel de deur uit dat de stream met maximale snelheid aankomt – als het traject tot aan je router tenminste niet de bottleneck is.
Het downloaden van updates, online gamen op platformen als Steam, Origin en Uplay en filesharing hebben geen korte latenties en hoge of constante datarate nodig. Dat zijn voorbeelden van 'Background Applications'. Pakketten daarvan
worden door de Fritzbox pas het huis uit gestuurd als er geen pakketten van een van de hogere categorieën staat te wachten. Anders moeten die programma's wachten tot er vrije zendtijd is. Als de aansluiting continu door andere toepassingen belast wordt, krijgt het achtergrondverkeer niets toebedeeld.
Als je dezelfde toepassing voor verschillende computers anders wilt toebedelen, moet je daar aparte filterregels voor aanmaken. Je kunt het SMTP-mailverkeer van een zakelijk gebruikte pc bijvoorbeeld voorrang geven en al het andere SMTP-verkeer als achtergrondtoepassing behandelen.
Het heeft in principe geen nut om alle toepassingen een hoge prioriteit te geven. De toepassingen die alleen goed werken met een korte latentie worden dan door de andere afgeremd, en de andere zijn met elkaar aan het concurreren. Het gaat meer om een afgewogen verdeling van de uplinkcapaciteit van je aansluiting. Hou bij het maken van filterregels alleen rekening met apparaten in je LAN en wifinetwerk die internetverbindingen opbouwen.
Nieuwe filters
Pakketfilters voor toepassingen die niet standaard door AVM aangemaakt zijn, kun je toevoegen bij 'Internet / Filters / Lists'. Klik op de knop 'Add Network Application' en geef de nieuwe toepassing een eenduidige naam – bij voorkeur de naam van het programma of het type dataverkeer.
Klik op 'New Protocol', selecteer het protocol (meestal TCP of UDP) en geef de bron- en doelpoort op. Wat die moeten zijn, kun je meestal vinden in de handleiding van de betreffende toepassing. We hebben bij de link onderaan dit artikel een verwijzing naar de bijbehorende poorten voor een aantal toepassingen staan. Als die ook niet helpen, kun je met een zoekmachine nog wat boven tafel krijgen. Voorbeelden van zinvolle zoekwoorden zijn 'ports protocol' en de naam van de toepassing, bijvoorbeeld 'ports protocol openvpn' of 'ports protocol battlefield'.
Bij de optie 'Port' is één poortnummer in te vullen, maar bij de optie 'Port … to …' kun je poortbereiken opgeven. Bevestig je invoer met 'OK' en herhaal deze procedure tot je alle protocollen en poorten ingevoerd hebt. Een paar voorbeelden: als je een IMAPmailserver op je router hebt aangesloten, is het aan te raden IMAP-pakketten een hoge prioriteit te geven, zodat de server de mails snel kan versturen. Maak de netwerkapplicatie IMAP aan, ken daar het protocol TCP en als bron- en doelpoort 993 aan toe (met SSL versleutelde IMAP). Op een vergelijkbare manier kun je een pc achter de router via SSH van buitenaf beheren, maar dan gebruik je poort 22 in plaats van 993. Voor Netflix maak je een filter aan voor de TCP-poorten 22 en 33001 en de UDP-poorten 33001 tot 33010. Sla de netwerkapplicatie op, zodat hij tevoorschijn komt bij het aanmaken van een nieuwe regel bij 'Internet / Filters / Prioritization'. Vervolgens kun je die netwerkapplicatie bij de verschillende prioriteitscategorieën toekennen.
Als je nieuwe filterregels aanmaakt, moet je zo gedetailleerd mogelijk te werk gaan en voor elke afzonderlijke toepassing een eigen regel aanmaken. Filterregels voor grote poortbereiken, die voor veel toepassingen tegelijkertijd gelden, zijn onhandig omdat ze niet gedocumenteerde besturingssysteemdiensten kunnen afremmen. Bovendien verdwijnen er in de loop der tijd ook weer toepassingen en komen er nieuwe bij, zodat ruim ingestelde filterregels wellicht ook effect hebben op toepassingen waarvoor je ze niet bedoeld hebt.
Welk effect een bepaalde QoS-regel heeft, kun je alleen achterhalen door hem uit te proberen. Als het ondanks een zinvolle QoS-indeling dan nog niet lekker loopt, helpen twee dingen: een kortetermijnoplossing is om altijd slechts één tijdkritische toepassing tegelijkertijd uit te voeren en de andere naar later te verschuiven. Het probleem is voor de langere termijn alleen met een extra investering te lossen: zorg voor een snellere of een extra internetaansluiting …
Het is daarbij van belang de uplinkprestatie van een aansluiting goed in te schatten. Een enkel VoIP-gesprek kost ongeveer 100 kbit/s van de uplinkcapaciteit. De telefoonmodules van WhatsApp, Signal en Facetime en dergelijke comprimeren de spraaksignalen sterker. De beste apps uit die categorie hebben genoeg aan de helft van deze capaciteit [1].
Metingen
Bij het testen verliep het VoIP-verkeer zonder uitvallers – op de Fritzbox staat dat bij QoS standaard op hoge prioriteit ingeschakeld. Ook als je tegelijkertijd meerdere VoIP-gesprekken voert, vielen daarbij geen dingen weg.
Games en databasetoegang via HTTP of HTTPS behoren bij de tijdkritische toepassingen waarbij QoS-effecten snel zichtbaar worden. Bij een contentmanagementsysteem heb je bijvoorbeeld veel te maken met databasetoegang. Een hoge prioriteit voor het CMS-verkeer heeft dan tot gevolg dat toetsenbordaanslagen ook meteen in het browservenster verschijnen als er parallel andere data verstuurd worden.
Online games hebben niet veel zendcapaciteit nodig, maar wel een liefst zo laag en constant mogelijke latentie. Een lage variatie (jitter) en korte latentie
(vaak gemeten met het ping-commando) verbeteren bij een first-person-shooter bijvoorbeeld het bijwerken van de spelfiguurpositie en de trefzekerheid van de schoten. AVM adviseert dergelijke games minstens als 'Prioritized Application' te behandelen. Als er op je aansluiting geen echte realtime-toepassingen draaien, kun je dergelijke games ook bij de eerste QoScategorie indelen.
We hebben de QoS-effecten bij Battlefield 1 nader onderzocht. De game berekent de posities van alle spelers 60 maal per seconde (tick-rate = 60 Hz). Als Battlefield de internetaansluiting alleen en zonder prioritering gebruikt, is de latentie ongeveer 30 ms met kleine uitschieters naar boven tot 40 ms. Met een gelijktijdige download of videostream steeg de latentie naar ongeveer 85 ms en de variatie (jitter) naar ±30 ms.
Een QoS-filter voor Battlefield heeft aardig wat poorten nodig (TCP 5222, 9988, 17502, 20000 tot 20100, 22990 en 42127, en UDP 3659, 14000 tot 14016, 22990 tot 23006 en 25200 tot 25300). Als we die regel aan de realtime-toepassingen toevoegden, daalde de latentie ook bij een parallelle download van 85 naar 70 ms en waren er duidelijk minder latentieschommelingen. Het spelen van de game voelde duidelijk directer aan, minder haperend.
Het downloaden ging er slechts iets langzamer door, wat betekent dat de router het versturen van de ACK-pakketten eigenlijk maar amper vertraagde. Zonder gelijktijdige download of stream nam de jitter duidelijk af als het QoS-filter ingeschakeld was.
Andere instellingen
Naast het prioriteren van het dataverkeer met behulp van QoS biedt een Fritzbox nog meer mogelijkheden om het dataverkeer in het LAN en wifinetwerk voor bepaalde toepassingen te optimaliseren. IPTV-streams worden via internet in de multicast-modus verstuurd. Daarmee bespaart de exploitant resources. Als het doel van een IPTV-stream in het LAN zit, wordt de stream gewoon op maximale snelheid doorgegeven. Als het doel alleen via wifi bereikbaar is, worden de multicast-pakketten als broadcasts verstuurd. Broadcasts zijn bruto echter beperkt tot 1 tot 6 Mbit/s. Daar blijft netto maar nauwelijks de helft van over. Dat is voor high-res IPTV-streams te weinig. Daarom maken de betere routers van IPTV-multicasts unicasts. Dan staat de maximale wifisnelheid van de betreffende radiomodule ter beschikking. Die functie is bij een Fritzbox standaard geactiveerd. Dat kun je controleren bij het menu 'Wireless / Radio Channel / Radio Channel Settings'. Klik op 'Additional settings'. Dan moet bij 'Optimize wireless transmission for live TV' als het goed is een vinkje staan.
Bovendien kun je met de 'Parental Controls' de datastroom reduceren die naar internet gestuurd wordt. Je kunt daarmee bijvoorbeeld filesharing-diensten als eMule op de pc van de kinderen en voor gasten blokkeren.
Klik bij 'Internet / Filters / Access Profiles' op 'New Access Profile', geef het profiel een naam, selecteer bij 'Block network application' de gewenste toepassingen uit het drop-downmenu en bevestig je keuze met 'OK'. Ken dat profiel vervolgens via het menu 'Internet / Filters / Parental Controls' aan de afzonderlijke clients toe. De router filtert dan het ip-verkeer van die clients en laat alleen de niet geblokkeerde data naar internet door.