01The loop: mark → trust → prioritize
Three steps, one line each: iperf3 stamps a DSCP on the packets, the switch is told to trust DSCP and map it to a queue, and you confirm the packets carried the mark and hit the right queue.
QoS test = iperf3 (mark DSCP) + Aruba (trust DSCP → queue) + verify (capture + queue counters)
02DSCP ↔ ToS ↔ CoS: the conversion table
iperf3 sets the full 8-bit ToS byte, but people think in DSCP (the top 6 bits). Convert with one operation — ToS = DSCP × 4 (shift left 2, because the low 2 bits are ECN). The full mapping, colored by service class (warmer = higher priority):
| Class | DSCP | Dec | Binary | ToS dec | ToS hex | CoS | iperf3 -S |
|---|---|---|---|---|---|---|---|
| Network control | CS7 | 56 | 111000 | 224 | 0xE0 | 7 | 0xE0 |
| Internetwork ctrl | CS6 | 48 | 110000 | 192 | 0xC0 | 6 | 0xC0 |
| Voice (VoIP) | EF | 46 | 101110 | 184 | 0xB8 | 5 | 0xB8 |
| Signaling | CS5 | 40 | 101000 | 160 | 0xA0 | 5 | 0xA0 |
| Interactive video | AF41 | 34 | 100010 | 136 | 0x88 | 4 | 0x88 |
| Interactive video | AF42 | 36 | 100100 | 144 | 0x90 | 4 | 0x90 |
| Interactive video | AF43 | 38 | 100110 | 152 | 0x98 | 4 | 0x98 |
| Interactive video | CS4 | 32 | 100000 | 128 | 0x80 | 4 | 0x80 |
| Streaming video | AF31 | 26 | 011010 | 104 | 0x68 | 3 | 0x68 |
| Streaming video | AF32 | 28 | 011100 | 112 | 0x70 | 3 | 0x70 |
| Streaming video | AF33 | 30 | 011110 | 120 | 0x78 | 3 | 0x78 |
| Broadcast video | CS3 | 24 | 011000 | 96 | 0x60 | 3 | 0x60 |
| Low-latency data | AF21 | 18 | 010010 | 72 | 0x48 | 2 | 0x48 |
| Low-latency data | AF22 | 20 | 010100 | 80 | 0x50 | 2 | 0x50 |
| Low-latency data | AF23 | 22 | 010110 | 88 | 0x58 | 2 | 0x58 |
| OAM / network mgmt | CS2 | 16 | 010000 | 64 | 0x40 | 2 | 0x40 |
| Bulk data | AF11 | 10 | 001010 | 40 | 0x28 | 1 | 0x28 |
| Bulk data | AF12 | 12 | 001100 | 48 | 0x30 | 1 | 0x30 |
| Bulk data | AF13 | 14 | 001110 | 56 | 0x38 | 1 | 0x38 |
| Scavenger | CS1 | 8 | 001000 | 32 | 0x20 | 1 | 0x20 |
| Best effort | DF / CS0 | 0 | 000000 | 0 | 0x00 | 0 | 0x00 |
- Control
- Voice
- Signaling
- Interactive video
- Streaming video
- Data
- Bulk / scavenger
- Best effort
ToS byte = DSCP × 4 · DS field = DSCP (6 bits) + ECN (2 bits) · CoS ≈ DSCP ÷ 8
03Mark the traffic with iperf3
Server on one host; client on the other, marking EF with -S 0xB8. Run a best-effort flow too, so you can compare:
# receiver (10.0.0.2) iperf3 -s # sender (10.0.0.1): EF-marked UDP, then plain best-effort iperf3 -c 10.0.0.2 -u -b 100M -t 10 -S 0xB8 # DSCP 46 (EF) iperf3 -c 10.0.0.2 -u -b 100M -t 10 # DSCP 0 (best effort) # newer iperf3 also accepts: --dscp 46 (or a name, e.g. --dscp ef)
-S is the ToS byte from the table above. That's the entire client-side story.
04Make Aruba prioritize it
By default AOS-CX trusts nothing (marks are ignored). Tell it to trust DSCP and map EF to the top local-priority (which the queue profile sends to the priority queue):
switch(config)# qos trust dscp # honour incoming DSCP markings switch(config)# qos dscp-map 46 local-priority 7 name EF-Voice # DSCP 46 (EF) -> local-priority 7 # per-port override if you don't want it global: switch(config)# interface 1/1/1 switch(config-if)# qos trust dscp
That's it: EF now rides local-priority 7 into the highest queue; everything at DSCP 0 stays best-effort.
05Verify it worked
On the wire — confirm the packets actually carry EF (ToS 0xb8) leaving the sender:
tcpdump -ni eth0 -v 'host 10.0.0.2 and udp' | grep -i tos
IP (tos 0xb8, ttl 64) 10.0.0.1.5xxxx > 10.0.0.2.5201: UDP, length 1450 <- 0xb8 = EF, good
On the switch — watch the per-queue counters; under congestion the EF queue keeps moving while best-effort drops:
switch# show qos dscp-map # confirm 46 -> local-priority 7 switch# show interface 1/1/1 qos # per-queue tx / drops
DSCP local-priority name 46 7 EF-Voice Queue 7: tx 84213 pkts drops 0 <- EF protected Queue 0: tx 61190 pkts drops 3122 <- best-effort absorbs the loss
proof = capture shows tos 0xb8 + EF queue drops ≈ 0 while best-effort drops rise
06Where to go next
Scale the same recipe: mark AF41 (-S 0x88) for video alongside EF, congest the link, and
watch each class land in its queue. On older ArubaOS-Switch (2930/5400) the equivalent
is qos type-of-service diff-services to trust DSCP plus qos dscp-map <codepoint>
priority <0-7>. Back to the Knowledge Base, or more
Networking guides.