Een efficiënte QoS configureren op MikroTik RouterOS
Bufferbloat verminderen met CAKE, de wachtrij dimensioneren onder de werkelijke doorvoer, alleen de nuttige stromen classificeren en vermijden dat FastTrack de QoS omzeilt.
Een internetverbinding kan 500 Mbit/s behalen op een snelheidstest en toch een videovergadering pijnlijk traag maken zodra een back-up start. Het probleem is niet altijd een gebrek aan bandbreedte : het komt vaak door een te lange wachtrij, die zich in de modem of bij de operator bevindt. Grote overdrachten vullen deze, kleine interactieve pakketten wachten, en de latentie explodeert. Dit fenomeen wordt bufferbloat genoemd.
QoS creëert geen bandbreedte. Het organiseert een beperkte capaciteit zodat stem, interactieve toepassingen en het web reactief blijven terwijl downloads gebruiken wat overblijft. Op RouterOS 7 combineert CAKE shaping, actief wachtrijbeheer (AQM), eerlijkheid tussen stromen en ondersteuning voor DiffServ. Voor veel kleine netwerken maakt het het mogelijk om een beter resultaat te bereiken met minder regels dan een grote boomstructuur gebaseerd op poorten.
De juiste wachtrij kiezen
RouterOS biedt verschillende disciplines. Ze lossen niet allemaal hetzelfde probleem op.
| Type | Wat het goed doet | Wanneer kiezen |
|---|---|---|
| FIFO | Behandelt pakketten in volgorde met zeer weinig rekenkracht | Niet-verzadigde verbinding of zeer beperkte hardware ; geen echte bescherming tegen bufferbloat |
| PCQ | Verdeelt de capaciteit over substromen, bijvoorbeeld op basis van bron- of bestemmingsadres | Eerlijke verdeling tussen veel clients, vooral op oudere hardware |
| FQ-CoDel | Isoleert stromen en vermindert de persistente wachtrij | Goed compromis wanneer CAKE te veel processor vraagt of wanneer DiffServ niet nodig is |
| CAKE | Combineert eerlijkheid, AQM, shaping, host-isolatie en DiffServ-klassen | Aanbevolen keuze hier voor een internetverbinding voor thuis, lab of klein bedrijf |
CAKE, FQ-CoDel en CoDel zijn beschikbaar in RouterOS sinds tak 7.1. Hun CPU-kost hangt af van de snelheid, de grootte van de pakketten en het routermodel. Er bestaat dus geen universele tabel die garandeert dat een apparaat 500 Mbit/s of 1 Gbit/s zal aankunnen met CAKE : meet de belasting op uw eigen configuratie.
Behouden architectuur
Deze gids gebruikt een Simple Queue voor een IPv4-netwerk, met een afzonderlijk CAKE-type voor zenden en ontvangen. De upload past dual-srchost toe zodat een werkstation dat veel verbindingen opent niet de upload monopoliseert. De download gebruikt dual-dsthost om de gegevens eerlijk te verdelen over de LAN-clients.
De voorbeelden gaan ervan uit :
- een LAN
192.168.88.0/24; - een stabiele gemeten snelheid van 200 Mbit/s bij ontvangst en 20 Mbit/s bij zenden ;
- een WAN-interface die al in de lijst
WANis geplaatst en de lokale interfaces inLAN; - een router die zelf zorgt voor IPv4-NAT.
Vervang deze waarden door de uwe. De volgorde upload/download van een Simple Queue is belangrijk : in ons voorbeeld betekent 19M/190M 19 Mbit/s naar het internet en 190 Mbit/s naar het LAN.
1. Meten voor het configureren
Sluit een computer aan via Ethernet, onderbreek de back-ups en herhaal verschillende tests op verschillende tijdstippen. Behoud de lage waarde die werkelijk beschikbaar blijft, niet het beste resultaat van de dag. Meet ook de latentie in rust en tijdens een verzadigende overdracht.
/ping 1.1.1.1 interval=200ms count=100
Start tegelijkertijd een download en vervolgens een upload vanaf een client. Als de ping bijvoorbeeld stijgt van 12 ms naar 150 ms, lijdt de verbinding aan wachttijd onder belasting. Voor een vaste verbinding begint u best op 90–95 % van de waargenomen lage snelheid. Hier wordt 200/20 dus 190/19. Op een zeer variabele radio- of mobiele verbinding kan een grotere marge nodig zijn.
2. Back-up maken en werken in Safe Mode
Een fout op FastTrack of de wachtrijen kan een externe sessie verbreken. Voer de eerste ingebruikname uit vanuit het LAN, activeer de Safe Mode met Ctrl+X, en sla vervolgens een export en een binaire back-up op.
/export file=avant-qos
/system backup save name=avant-qos
/system resource print
/queue type print
/queue simple print
/ip firewall filter print where action=fasttrack-connection
3. De twee CAKE-types aanmaken
Het profiel diffserv4 biedt vier klassen die gemakkelijk te auditen zijn : Bulk, Best Effort, Video en Voice. Het is over het algemeen eenvoudiger te onderhouden dan acht niveaus. De modus cake-nat=yes laat CAKE de interne hosts achter de NAT terugvinden wanneer het de eerlijkheid toepast.
/queue type
add name=cake-upload kind=cake \
cake-bandwidth=19M \
cake-flowmode=dual-srchost cake-nat=yes \
cake-diffserv=diffserv4 cake-rtt-scheme=internet
add name=cake-download kind=cake \
cake-bandwidth=190M \
cake-flowmode=dual-dsthost cake-nat=yes \
cake-diffserv=diffserv4 cake-rtt-scheme=internet
De waarden cake-bandwidth moeten coherent blijven met de max-limit van de Simple Queue. Het schema RTT internet komt overeen met 100 ms en is geschikt voor de meerderheid van de internetverbindingen. Kies niet voor lan om een internetverbinding te shapen : dit profiel veronderstelt een lokaal Ethernet-netwerk van ongeveer 1 ms.
Als de verbinding PPPoE, VDSL, DOCSIS of een VLAN gebruikt, kan overheadcompensatie de nauwkeurigheid verbeteren. De juiste cake-overhead-scheme hangt af van de werkelijke inkapseling. Kopieer niet zomaar een waarde die voor een andere technologie is gevonden : vraag de toegangsmodus aan de operator of begin met een voorzichtige snelheidsmarge.
4. De Simple Queue aanmaken
/queue simple
add name="QoS Internet CAKE" target=192.168.88.0/24 \
max-limit=19M/190M \
queue=cake-upload/cake-download
Vermijd target=0.0.0.0/0 wanneer het lokale subnet bekend is : een precies doel beperkt de ambiguïteiten met het verkeer van de router, de VPN's en de andere netwerken. Als meerdere VLAN's dezelfde verbinding moeten delen, voeg dan hun prefixen toe aan het doel of ontwerp een expliciete hiërarchie nadat u de richting van de stromen hebt gecontroleerd.
5. Voorkomen dat FastTrack de wachtrij omzeilt
FastTrack versnelt IPv4 TCP- en UDP-verbindingen door verschillende RouterOS-functies te omzeilen. De MikroTik-documentatie specificeert dat het onder andere de Simple Queues en Queue Trees waarvan de parent global is, omzeilt. Zolang de CAKE-wachtrij de volledige internetverbinding moet verwerken, moet de algemene FastTrack-regel dus worden uitgeschakeld.
/ip firewall filter
disable [find where action=fasttrack-connection]
Verwijder de regel niet : het uitschakelen vergemakkelijkt het terugdraaien. De CPU-belasting zal stijgen, soms sterk. Controleer dit tijdens een test op volle snelheid.
/tool profile cpu=all duration=30
/queue simple print stats-detail where name="QoS Internet CAKE"
/queue type print detail where name~"cake-"
Als de processor 100 % bereikt vóór de doelsnelheid, verlaag dan de snelheid, probeer FQ-CoDel, behoud PCQ voor de verdeling tussen clients of gebruik krachtigere apparatuur. Een test die beperkt wordt door de CPU valideert de QoS niet.
6. DiffServ alleen toevoegen waar het iets oplevert
CAKE werkt al zonder enige classificatieregel : elke stroom krijgt een eerlijke wachtrij. Begin dus met de Best Effort-modus en meet. Voeg vervolgens enkele klassen toe die op een duidelijk beleid zijn gebaseerd, niet op honderd poorten.
Poorten maken het niet meer mogelijk om een toepassing correct te identificeren. HTTPS groepeert talloze toepassingen op TCP 443, QUIC transporteert een groot deel van het web en video via UDP 443, en toepassingen kunnen dynamische poortbereiken gebruiken. Alle verkeer op poort 443 voorrang geven, zou betekenen dat u aan versleutelde back-ups dezelfde prioriteit geeft als aan vergaderingen.
Een robuuste methode bestaat erin toegewijde terminals te classificeren. Het volgende voorbeeld kent EF 46 toe aan een IP-telefoon en plaatst een back-upserver in CS1 8. De verbindingsmarkering maakt de beslissing symmetrisch : de heen- en terugpakketten van dezelfde verbinding krijgen dezelfde DSCP. De regels connection-mark=no-mark vermijden het overschrijven van een markering die al door policy routing of een VPN wordt gebruikt.
/ip firewall address-list
add list=qos-voice address=192.168.88.20 comment="IP-telefoon"
add list=qos-bulk address=192.168.88.50 comment="Back-upserver"
/ip firewall mangle
add chain=prerouting in-interface-list=LAN \
src-address-list=qos-voice connection-state=new \
connection-mark=no-mark action=mark-connection \
new-connection-mark=qos_voice passthrough=yes \
comment="QoS: spraakverbinding"
add chain=prerouting connection-mark=qos_voice \
action=change-dscp new-dscp=46 passthrough=no \
comment="QoS: voix EF"
add chain=prerouting in-interface-list=LAN \
src-address-list=qos-bulk connection-state=new \
connection-mark=no-mark action=mark-connection \
new-connection-mark=qos_bulk passthrough=yes \
comment="QoS: back-upverbinding"
add chain=prerouting connection-mark=qos_bulk \
action=change-dscp new-dscp=8 passthrough=no \
comment="QoS: sauvegarde CS1"
Voor een videovergadering reserveert u AF41 34 voor een zaalterminal of een beheerd VLAN. Vermijd het prioriteit geven aan een volledige veelzijdige computer : zijn synchronisaties en updates zouden dezelfde behandeling erven. DNS, zeer licht, profiteert over het algemeen meer van een korte wachtrij dan van een overdreven hoog niveau.
7. Het resultaat testen
De nuttige test bestaat er niet in om exact de contractuele snelheid terug te vinden. Ze bestaat erin om beide richtingen te verzadigen terwijl u de latentie meet en een oproep doet.
- Meet de ping in rust gedurende één minuut.
- Verzadig de download, dan de upload, dan beide tegelijk.
- Controleer of de tellers van
QoS Internet CAKEtoenemen. - Verifieer de snelheid, de latentie onder belasting, de verliezen en de CPU-belasting.
- Herhaal met een echte back-up en videovergadering.
/queue simple print stats-detail where name="QoS Internet CAKE"
/ip firewall mangle print stats where comment~"QoS:"
/ip firewall connection print where connection-mark~"qos_"
/system resource print
Een lichte daling van de maximale snelheid is normaal : ze koopt de controle over de wachtrij. Pas het plafond aan in stappen van 1 tot 2 %. Als de latentie nog sterk oploopt, verlaag het. Als ze stabiel blijft en de lijn onderbenut is, verhoog het dan met voorzichtigheid.
Geval van een variabele snelheid
CAKE biedt cake-autorate-ingress om een variërende inkomende capaciteit in te schatten, bijvoorbeeld op een mobiele verbinding. Deze functie kan echter in alle omstandigheden geen verdere beperking in het netwerk correct raden. Op een stabiele verbinding blijft een gemeten plafond voorspelbaarder. Op een variabele verbinding test u de autorate gedurende meerdere dagen en vergelijkt u deze met een conservatief plafond.
PCQ-alternatief voor een bescheidener router
PCQ vervangt de AQM van CAKE niet, maar verdeelt gewoon de capaciteit tussen de hosts. RouterOS biedt al pcq-upload-default met de classificator src-address en pcq-download-default met dst-address. Voor een beperkt apparaat kan men hetzelfde plafond behouden en de wachtrijtypes vervangen :
/queue simple
set [find where name="QoS Internet CAKE"] \
queue=pcq-upload-default/pcq-download-default
De verdeling tussen clients zal eerlijker zijn, maar de latentie bij congestie kan minder goed beheersbaar blijven. FQ-CoDel vormt vaak de tussenstap : beter wachtrijbeheer dan PCQ, minder ingebouwde functies dan CAKE.
Probleemoplossing
| Symptoom | Waarschijnlijke oorzaak | Actie |
|---|---|---|
| Wachtrijtellers bijna nul | FastTrack actief of verkeerd doel | FastTrack uitschakelen, subnet en richting upload/download controleren |
| Snelheid lager dan plafond, CPU op 100 % | Router beperkt door softwareverwerking | FQ-CoDel/PCQ proberen, snelheid verlagen of hardware versterken |
| Latentie altijd hoog | Plafond te dicht bij werkelijke snelheid of variabele capaciteit | Max-limit verlagen en op meerdere uren meten |
| Stem neemt de Voice-klasse niet | Verkeerd adres, mangle-volgorde of verbindingsmarkering | Tellers, interfacelijsten en bestaande markeringen controleren |
| Een werkstation monopoliseert nog steeds de verbinding | Verkeerde flowmode of NAT niet in aanmerking genomen | Dual-srchost/dual-dsthost en cake-nat=yes controleren |
| De router wordt instabiel | Wachtrij te kostelijk of riskante externe wijziging | Terugkeren naar Safe Mode, FastTrack heractiveren en vorige wachtrij herstellen |
Terugdraaien
De opmerkingen en expliciete namen maken het mogelijk om enkel de elementen van deze gids te verwijderen.
/queue simple remove [find where name="QoS Internet CAKE"]
/ip firewall mangle remove [find where comment~"QoS:"]
/ip firewall address-list remove [find where list~"qos-"]
/queue type remove [find where name="cake-upload"]
/queue type remove [find where name="cake-download"]
/ip firewall filter enable [find where action=fasttrack-connection]
De laatste opdracht heractiveert alle uitgeschakelde FastTrack-regels. Als er meerdere beleidsregels bestaan, heractiveer dan liever de exacte regel die u vóór de wijziging had genoteerd.
Conclusie
Een efficiënte QoS berust eerst en foremost op een realistisch plafond en een wachtrij die bufferbloat bestrijdt. CAKE kan al stromen en hosts delen : het is niet nodig om elke dienst van het netwerk te herkennen. Enkele betrouwbare classificaties — beheerde telefoon, vergaderruimte, back-up — zijn beter dan een lange lijst van poorten die in onbruik is geraakt.
Het resultaat wordt beoordeeld op de latentie onder belasting, de verliezen, de kwaliteit van de oproepen en de CPU-belasting, niet alleen op het cijfer van een speedtest. Met een Simple Queue die net onder de werkelijke capaciteit is geplaatst, twee CAKE-profielen die op de verkeersrichting zijn afgestemd en een beheerste FastTrack, kan RouterOS een reactieve verbinding behouden, zelfs wanneer deze volledig wordt benut.
Technische referenties
- MikroTik : RouterOS-wachtrijen, Simple Queue, Queue Tree, PCQ, FQ-CoDel en CAKE
- MikroTik : CAKE-parameters, flow modes, DiffServ en overheadcompensatie
- MikroTik : Connection Tracking en functies omzeild door FastTrack
- MikroTik : bandbreedteverdeling met PCQ
- IETF RFC 4594 : aanbevelingen voor DiffServ-klassen
Discussie
Reacties
Nog geen reacties. U kunt de discussie openen met een vraag of uw eigen ervaring.