Hoe WMM werkt
WMM werkt door verkeer op te delen in 4 access categories: background, best effort, video en voice. Het QoS-beleid (verschillende behandeling van access categories) wordt toegepast op verzonden pakketten, waardoor het verzendende apparaat verschillende pakketten anders behandelt; zo heeft een AP geen controle over hoe clients pakketten verzenden, en clients hebben geen controle over hoe de AP pakketten verzendt.
De Mikrotik AP en client classificeren packets op basis van de prioriteit die eraan is toegekend, volgens de tabel (conform de WMM-specificatie): 1,2 - background; 0,3 - best effort; 4,5 - video; 6,7 - voice.
Om meerdere WMM-toegangscategorieën te kunnen gebruiken, en niet alleen best effort waar alle pakketten met de standaardprioriteit 0 terechtkomen, moet er voor die pakketten een prioriteit worden ingesteld. Standaard hebben alle pakketten (inkomend en lokaal gegenereerd) binnen de router prioriteit 0.
De "Better"-toegangscategorie voor een pakket betekent niet noodzakelijk dat het via de lucht wordt verzonden vóór alle andere pakketten met de "slechtere" toegangscategorie. WMM werkt door de DCF-methode voor mediumtoegang uit te voeren met verschillende instellingen voor elke toegangscategorie (EDCF), wat betekent dat de "betere" toegangscategorie een hogere kans heeft om toegang tot het medium te krijgen - een station met WMM ingeschakeld kan worden beschouwd als 4 stations, één per toegangscategorie, en de stations met de "betere" toegangscategorie gebruiken instellingen die het waarschijnlijker maken dat ze de kans krijgen om te verzenden (door kortere backoff-timeouts te gebruiken) wanneer ze allemaal om het medium strijden. Details kunnen worden bestudeerd in de 802.11e- en WMM-specificaties.
Info WMM-ondersteuning kan worden ingeschakeld met de
wmm-support-instelling. Deze geldt alleen voor de banden B en G. Bij andere banden is deze ingeschakeld ongeacht deze instelling.
Hoe VLAN-prioriteit werkt
De VLAN-prioriteit is een 3-bits veld genaamd Priority Code Point (PCP) binnen een VLAN-getagde header, met waarden tussen 0 en 7. Het wordt gebruikt voor het implementeren van QoS op bridges en switches. MikroTik-apparaten versturen VLAN-pakketten (lokaal gegenereerd of ingekapseld) standaard met prioriteit 0. De RouterOS bridge stuurt VLAN-getagde pakketten ongewijzigd door, wat betekent dat ontvangen VLAN-getagde pakketten met een bepaalde VLAN-prioriteit de bridge met diezelfde VLAN-prioriteit verlaten. De enige uitzondering is wanneer de bridge het pakket untagt; in die situatie blijft de VLAN-prioriteit niet behouden doordat de VLAN-header ontbreekt.
Meer details zijn te bestuderen in de IEEE 802.1p-specificatie.
Hoe stel je prioriteit in
De prioriteit van pakketten kan worden ingesteld met action=set-priority in IP firewall mangle-regels of in bridge filter/nat-regels. De prioriteit kan op een specifieke waarde worden gezet of worden overgenomen uit de ingangsprioriteit met de instelling from-ingress. De ingangsprioriteit is de prioriteitswaarde die op het binnenkomende pakket is gedetecteerd, indien beschikbaar. Momenteel zijn er 2 bronnen van ingangsprioriteit: de prioriteit in de VLAN-header en de prioriteit uit het WMM-pakket dat via een wireless interface is ontvangen. Voor alle andere pakketten is de ingangsprioriteit 0.
Merk op dat de ingress-prioriteitswaarde niet automatisch wordt gekopieerd naar de priority-waarde van IP mangle. Hiervoor moet de juiste regel worden ingesteld.
Er zijn 2 manieren om prioriteit te beheren - prioriteit toewijzen met regels met bepaalde matchers (protocol, adressen, enz.) of deze instellen vanuit de ingress-prioriteit. Beide opties vereisen het opzetten van correcte regels.
Dit betekent in wezen dat als het niet mogelijk of niet gewenst is om pakketten met regels te classificeren, het netwerk zo geconfigureerd moet zijn dat de router de ingress-prioriteit uit binnenkomende frames kan halen. Onthoud dat er momenteel 2 bronnen hiervoor zijn: de VLAN-tag in pakketten en ontvangen WMM-pakketten.
Info Haal de prioriteit van wachtrijen niet door elkaar met de prioriteit die aan pakketten wordt toegekend. Prioriteiten van wachtrijen werken los daarvan en geven het "belang" van de wachtrij aan; ze hebben alleen betekenis binnen een bepaalde wachtrijopstelling. Zie de pakketprioriteit als een soort markering die door regels aan het pakket wordt gehangen. Houd er ook rekening mee dat deze markering momenteel alleen wordt gebruikt voor uitgaande pakketten over een link met WMM ingeschakeld, en wanneer er een VLAN-tagged pakket wordt verzonden (ongeacht of dat pakket lokaal wordt getagd of gebridged).
VLAN- of WMM-prioriteit instellen op basis van specifieke matchers
Het is mogelijk om de VLAN- en WMM-prioriteiten te wijzigen op basis van specifieke matchers in IP mangle- of bridge filter/nat-regels. In dit voorbeeld worden alle uitgaande ICMP-pakketten met een VLAN- of WMM-prioriteit verzonden met behulp van de IP mangle-regel:
/ip/firewall/mangle
add action=set-priority chain=output new-priority=2 protocol=icmp
Aangepaste prioriteitsmapping
Soms moeten bepaalde VLAN of WMM prioriteiten worden gewijzigd of naar een standaardwaarde worden teruggezet. We kunnen de matcher ingress-priority in IP mangle of in bridge firewall/nat regels gebruiken om alleen de benodigde prioriteiten te filteren en ze met de actie-instelling new-priority naar een andere waarde te wijzigen. Zo moeten bijvoorbeeld VLAN getagde pakketten die over een bridge worden doorgestuurd met prioriteit 5 worden gewijzigd naar 0.
/interface/bridge/filter
add action=set-priority chain=forward ingress-priority=5 new-priority=0
WMM-prioriteit vertalen naar VLAN-prioriteit binnen een bridge
Wanneer een draadloos pakket wordt ontvangen met een reeds ingestelde WMM-prioriteit, vertaalt de RouterOS-bridge deze niet automatisch naar een VLAN-header. Dit betekent dat ontvangen draadloze pakketten met WMM-prioriteit die door de bridge van een VLAN-tag worden voorzien, worden doorgestuurd met een VLAN-prioriteit van 0. We kunnen echter een bridge-filterregel met de instelling from-ingress gebruiken om de prioriteit in VLAN-pakketten te behouden. We willen bijvoorbeeld draadloze pakketten via ether2 doorsturen met een VLAN 10-header en de reeds ingestelde WMM-prioriteit (ingesteld door de draadloze client) behouden.
/interface/bridge
add name=bridge1 vlan-filtering=yes
/interface/bridge/port
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=wlan2 pvid=10
/interface/bridge/vlan
add bridge=bridge1 tagged=ether2 vlan-ids=10
# translates WMM priority to VLAN priority
/interface/bridge/filter
add action=set-priority chain=forward new-priority=from-ingress out-interface=ether2
Dezelfde situatie geldt wanneer draadloze pakketten door de draadloze interface van een VLAN-tag worden voorzien met de instellingen vlan-mode=use-tag en vlan-id. U moet nog steeds dezelfde bridge-filterregel gebruiken om de WMM-prioriteit naar VLAN-prioriteit te vertalen:
/interface/wireless
set [ find default-name=wlan2 ] vlan-mode=use-tag vlan-id=10
/interface/bridge
add name=bridge1
/interface/bridge/port
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=wlan2
# translates WMM priority to VLAN priority
/interface/bridge/filter
add action=set-priority chain=forward new-priority=from-ingress out-interface=ether2
Info Dezelfde principes gelden ook omgekeerd. RouterOS vertaalt VLAN-prioriteit niet automatisch naar WMM-prioriteit; u kunt de regel
new-priority=from-ingressgebruiken om deze vertaling uit te voeren.
De RouterOS bridge stuurt VLAN-getagde pakketten ongewijzigd door, wat betekent dat ze de bridge verlaten met dezelfde prioriteit waarmee ze binnenkwamen. De enige uitzondering doet zich voor wanneer de bridge het pakket untagt, omdat de prioriteitsinformatie verloren gaat wanneer de VLAN-header wordt verwijderd.
Prioriteit uit DSCP
Een andere manier om VLAN- of WMM-prioriteit in te stellen is via het DSCP-veld in de IP-header. Dit kan alleen met een IP firewall mangle-regel met de instellingen new-priority=``from-dscp of new-priority=from-dscp-high-3-bits en de action-eigenschap set-priority. Let op dat DSCP in de IP-header waarden 0-63 kan hebben, maar priority slechts 0-7. Bij gebruik van de instelling new-priority=``from-dscp is de priority gelijk aan de 3 lage bits van de DSCP-waarde, maar bij gebruik van new-priority=from-dscp-high-3-bits is de priority gelijk aan de 3 hoge bits van de DSCP-waarde.
Onthoud dat DSCP alleen op IP-pakketten benaderd kan worden en dat de DSCP-waarde in de IP-header ergens ingesteld moet worden (ofwel door clientapparaten ofwel door IP mangle-regels).
Het is het beste om de DSCP-waarde in de IP-header van pakketten in te stellen op een borderrouter (bijv. een hoofdrouter die gebruikt wordt voor de verbinding met het internet), op basis van het verkeerstype, bijv. stel de DSCP-waarde voor pakketten die van het internet komen en tot SIP-verbindingen behoren in op 7, en 0 voor de rest. Op deze manier hoeven pakketten maar op één plek gemarkeerd te worden. Vervolgens kunnen alle AP's in het netwerk de pakketprioriteit met slechts één regel op basis van de DSCP-waarde instellen.
VLAN- of WMM-prioriteit instellen op basis van DSCP
In dit voorbeeld stelt het AP-apparaat de WMM-prioriteit in op basis van DSCP wanneer pakketten via de draadloze interface worden gerouteerd.
/ip/firewall/mangle
add action=set-priority chain=forward new-priority=from-dscp out-interface=wlan2
Info Wanneer pakketten via een bridge worden doorgestuurd, is het mogelijk om pakketten door IP mangle-regels te laten gaan met
use-ip-firewall=yesin de bridge-instellingen.
DSCP op basis van Priority
Op vergelijkbare wijze kan de DSCP waarde worden ingesteld als het ontvangen pakket een VLAN of WMM prioriteit bevat. Dit kan worden bereikt met IP mangle regels met de instellingen new-dscp=from-priority of new-dscp=from-priority-to-high-3-bits en de actie-eigenschap change-dscp. Let op dat de prioriteit in VLAN of WMM pakketten waarden 0-7 kan hebben, terwijl DSCP in IP headers 0-63 is. Bij gebruik van de instelling new-dscp=from-priority stelt de waarde van de prioriteit de 3 lage bits van de DSCP in, maar bij gebruik van new-dscp=from-priority-to-high-3-bits stelt de waarde van de prioriteit de 3 hoge bits van de DSCP in.
Deze instelling kan echter niet rechtstreeks de ingress-prioriteit van ontvangen VLAN- of WMM-pakketten gebruiken. U moet eerst de prioriteit instellen met IP mangle- of bridge filter/nat-regels (in dat geval kan de ingress-prioriteit wel worden gebruikt) en pas daarna de DSCP-regel toepassen.
DSCP instellen op basis van VLAN- of WMM-prioriteit
In dit voorbeeld moet het AP-apparaat de DSCP instellen op basis van de WMM-prioriteit wanneer pakketten worden gerouteerd. Voeg eerst een regel toe om de prioriteit in te stellen. Die is nodig zodat de DSCP-regel de DSCP-waarde correct kan wijzigen. Deze regel kan de prioriteit van ingress overnemen. Voeg vervolgens de DSCP-regel toe om de waarde ervan te wijzigen.
/ip/firewall/mangle
add action=set-priority chain=prerouting in-interface=wlan2 new-priority=from-ingress
add action=change-dscp chain=prerouting in-interface=wlan2 new-dscp=from-priority
Info Wanneer pakketten via een bridge worden doorgestuurd, is het mogelijk om pakketten door IP mangle-regels te laten gaan met
use-ip-firewall=yesin de bridge-instellingen.
Het combineren van oplossingen voor het instellen en afhandelen van prioriteit
Complexe netwerken en uiteenlopende situaties kunnen worden aangepakt door verschillende benaderingen voor het meegeven van prioriteitsinformatie te combineren, om QoS te waarborgen en het gebruik van resources te optimaliseren, gebaseerd op de hierboven beschreven "bouwstenen". Enkele suggesties:
- Hoe minder filterregels in het hele netwerk, hoe beter (sneller). Probeer pakketten alleen te classificeren wanneer dat nodig is, en doe dit bij voorkeur op snelle routers, aangezien hoogstwaarschijnlijk connection tracking vereist zal zijn.
- Gebruik DSCP om prioriteitsinformatie mee te geven in IP-pakketten die in uw netwerk worden doorgestuurd. Zo kunt u die informatie gebruiken wanneer dat nodig is.
- Gebruik VLAN's waar nodig, aangezien deze ook prioriteitsinformatie meedragen. Zorg ervoor dat Ethernet-bridges en switches op het pad de prioriteitsinformatie in de VLAN-tag niet wissen.
- Onthoud dat QoS de doorvoer van verbindingen niet verbetert; het behandelt verschillende pakketten alleen verschillend, en houd er ook rekening mee dat WMM-verkeer over de wireless verbinding het gewone verkeer in de lucht benadeelt.