In a congested environment, Quality of Service(QoS) helps with ensuring that latency-sensitive traffic (such as voice) are prioritized over other traffic.
QoS generally involves the following 4 aspects:
- Classification of Traffic
- Defining traffic to queue mapping (Forwarding Classes)
- Defining rules for each queue which help in priority, bandwidth control, providing congestion management etc. of the traffic on each interface (Scheduler and re-write rules)
- Applying QoS components on the interfaces
At Mist, the above has been abstracted to enable QoS on a per interface basis.
QoS Configuration Example
1. Enabling QoS for Port profile
2. Assigning port profile to the respective port(s)
Best Practice for enabling QoS
QoS should be enabled for both downstream and upstream profiles in order to obtain optimum results.
QoS with Mist
Classification:
At Mist, QoS classification implementation utilizes Behavior Aggregate (BA) Classification, where the classification is driven on the DSCP/CoS values marked by the incoming traffic. The BA classifier maps a CoS value in the packet header to a forwarding class and loss priority.
Traffic Queues:
Enabling QoS for a Port profile and assigning it to a port/range of ports will add DSCP markings based on class and rewrite rules for that interface. Incoming packets with a DSCP marking will be mapped to one of the 7 forwarding classes and output the queue in an order according to the table below.
Code Point/Loss Priority | Forwarding Class | Transmit Queue | Buffer Size(%) | Transmit Rate(%) | Priority |
be | default-app | 0 | Remainder | Remainder | Low |
af41/Low af42/High af43/High cs4/Low |
video | 1 | 8 | 8 | Low |
af31/Low af32/High af33/High cs3/Low |
bizapp-af3 | 2 | 10 | 10 | Low |
af21/Low af22/High af23/High |
bizapp-af2 | 3 | 10 | 10 | Low |
af11/Low af12/High af13/High |
net-tools | 4 | 3 | 3 | Low |
cs5/Low ef/Low |
voice | 5 | 10 | 10 | Strict-High |
nc1/Low nc2/Low |
net-control | 7 | 3 | 3 | Low |
As we observe from the table above, in the case of Traffic Congestion on the link, delay/Jitter sensitive traffic (e.g. voice traffic) will be given a higher priority for transmission (assuming the incoming traffic is marked appropriately). Mist also automatically configures re-write rules in order to retain markings as the packets exit out of the switch.
Validating QoS setting from API
In the Following example “enable_qos”: true is set for port profiles qos-test and uplink
"port_usages": { "qos-test": { "name": "qos-test", "mode": "access", "disabled": false, "port_network": "vl10", "voip_network": null, "stp_edge": false, "all_networks": false, "networks": [], "port_auth": null, "speed": "auto", "duplex": "auto", "mac_limit": 0, "poe_disabled": false, "enable_qos": true }, "uplink": { "mode": "trunk", "all_networks": true, "stp_edge": false, "port_network": "vlan3", "voip_network": null, "name": "uplink", "disabled": false, "networks": [], "port_auth": null, "speed": "auto", "duplex": "auto", "mac_limit": 0, "poe_disabled": false, "enable_qos": true } },
To see advanced QoS Verification, see this page: https://www.mist.com/documentation/advanced-qos-verification/