Marking tells the network what matters. Queuing is where that information is used, and shaping is what creates a queue in the first place.
Get the order wrong — queue without shaping, or shape without a scheduler — and QoS becomes a configuration that looks correct and changes nothing.
Shaping versus policing
| Shaper | Policer | |
|---|---|---|
| Action | Buffers excess | Drops or re-marks excess |
| Effect on latency | Adds delay | Adds loss |
| Where | Before the bottleneck | At the bottleneck |
| Use | Egress toward a smaller circuit | ISP side, ingress |
Shape on egress to just under the circuit rate. Police only where you cannot shape, such as inbound.
Scheduling disciplines
| Discipline | Behavior | Use |
|---|---|---|
| FIFO | One queue, first in first out | Default, no QoS |
| Priority (strict) | Higher class always served first | Voice, with a cap |
| Weighted fair | Shares bandwidth by weight | Data classes |
| LLQ | Priority queue with a bandwidth limit | Voice plus weighted data |
Strict priority without a cap starves everything else the moment the priority class is busy. Cisco's LLQ and equivalents add the cap; if your platform calls it "priority," check whether it is capped.
Queue depth is a latency decision
A queue of 1000 packets on a 100 Mbps link is 80 ms of delay at MTU 1500. A voice call needs total one-way latency under 150 ms to stay comfortable.
| Queue depth | Serialization delay at 100 Mbps |
|---|---|
| 50 packets | ~6 ms |
| 200 packets | ~24 ms |
| 1000 packets | ~120 ms |
Deep queues improve throughput for bulk traffic and ruin latency for everything else. That is bufferbloat in one table.
AQM is the modern answer
Active queue management (CoDel, FQ-CoDel, CAKE) keeps queues short automatically by dropping or marking early. If your platform offers it, prefer it over hand-tuned depths — it adapts to changing link speeds.
Worked example: 100 Mbps circuit, LLQ
| Class | Allocation | Behavior |
|---|---|---|
| Voice (EF) | 10 Mbps cap | Priority, drops above cap |
| Video (AF41) | 30 Mbps | Weighted, low drop |
| Business (AF21) | 40 Mbps | Weighted |
| Bulk (CS1) | 15 Mbps | Weighted, first to drop |
| Default | Remainder | Weighted |
Shaper at 95 Mbps. Total allocations sum to 95, so nothing is promised twice.
What breaks in production
- Queuing without shaping, so the ISP's policer drops before your queue forms.
- Uncapped priority, starving every other class.
- Overcommitted allocations, where the sum of guarantees exceeds the link.
- Queue depth set to maximum, adding hundreds of milliseconds of delay.
- Shaping the LAN instead of the WAN, where there is no congestion to manage.
- No measurement under load, so nobody knows whether the policy works.
Checklist
- The shaper is on the egress toward the smaller link, set below line rate.
- Priority traffic is capped.
- Class allocations sum to no more than the shaper rate.
- Queue depth (or AQM) is chosen for latency, not throughput.
- QoS is verified under load, with voice quality measured.
- The ISP side is understood, even if it cannot be controlled.
Next
The queues exist. Continue with Voice, the traffic that punishes every mistake.