Finished IE Volume 1 QoS
Well I can’t explain the nuances of queue management in WFQ versus CBWFQ yet, but I got through IE Vol 1’s QoS section. I was a little bummed there weren’t more MQC tricks in there, but it punched pretty hard on FRTS, and went through the various nesting tricks you can really get tripped up on, so I’m happy. Some of the new and/or weirder things I encountered:
- It’s pretty well understood that any bandwidth reservations made via CBWFQ (”bandwidth”) or Low-Latency Queueing (LLQ) are subtracted from the max-reserved-bandwidth, not the interface bandwidth. But I created a policy-map that used Generic Traffic Shaping (GTS) to shape an interface (”shape average” in the class-default), then from that policy-map called another policy-map that enabled LLQ for VOIP traffic … and it circumvented the max-reserve logic check. Interesting. Specifically I pushed the CIR down to 56k on the interface then set LLQ to reserve and prioritize 48k for VOIP. When I applied the LLQ policy-map directly to the interface it errored as expected. When I took the exact same policy-map and nested it within a policy-map that used GTS to shape the interface to 56k, it took the 48k reservation without a problem.
- There was a lot of material on Frame-relay fragmentation, which was nice. I’ve always known there were several flavors but not quite gotten around to examining them. Turns out the differences (for the purpose of basic differentiation and configuration) are pretty easy.
- FRF.11 is puts a fragment header on all packets, while FRF.12 doesn’t bother with the fragment header if the payload size is less than the fragment size.
- FRF.11 and Cisco’s proprietary fragmentation never fragment voice packets.
- The way you determine which type of fragmentation you’re using is via a simple command under the DLCI - vofr = FRF.11, vofr cisco = … well, Cisco, and not specifying leaves the default of FRF.12.
- One thing I didn’t even know existed was Frame Relay PVC Interface Priority Queueing (FR PIPQ). This allows you to classify entire DLCIs into the old-school priority queues on an interface. It’s just a simple matter of enabling the feature via the interface level “frame interface-queue” command (I always wondered what that did…) and writing a quick map-class for a specific DLCI, using the same interface-queue command.
Other than that, they went over many of the bewildering numbers of ways to accomplish the same task in QoS. I believe that this is a large part of why QoS is so confusing. If you want to match and prioritize VOIP, for example, you can:
- Use priority queueing to match an ACL for the UDP ports
- Use FRTS to call the same PQ
- Use FRTS with the ip rtp priority statement
- Use LLQ with CBAC
- Use LLQ with the match ip rtp statement
- Use LLQ with an ACL
- Use FRTS to call the LLQ policy-map
- Send all VOIP traffic down a specific DLCI and prioritize *that* via PIPQ
To be honest I’m probably missing a couple. Fortunately it’s usually pretty easy to figure out which one they’re asking for, but only if you know all of them.
So on to Narbik’s QoS section, which is rather daunting, but something I’m looking forward to conquering, which I have about 1 hour to do before my wife gets annoyed enough to throttle ME.



