Cisco Qos - it's in the ASICs

Cisco Qos - it's in the ASICs

Cisco QoS, love it, hate it or just see it as a necessary evil? I've been with tons of customers who have found that the transition to the larger platforms (all switches, and any router bigger than a 7200), means learning to program ASICs by hand. Cisco tries to make light of the fact that they have had glaring omissions in their IOS software in that QoS is fundamentally limited and without a proper UI. Ultimately it is about providing QoE for applications and user traffic. It should be simple to configure per business and technical priorities, without necessitating the user to have a chip-level knowledge of the hardware to configure appropriately.

 

By limited, I mean that the following issues exist:

  • Configurations are specific to the ASIC or FPGA used on the given card, that's right, card, not even a whole platform
  • Furthermore it is complicated by a vast array of protocol and OSI layer dependent functions (ToS, CoS, EXP, DSCP, mappings, mutations), not the least of which is that no matter what protocol you are switching, most of the devices use an internal DSCP marking (yes, even MPLS)
  • Due to the one-to-many ASIC configurations you are locked into many features across multiple ports; there is not ability to configure QoS with complete granularity across individual ports
  • Inability to serve up 8 real queues, let alone 64; the best they can do a drop thresholds, and those are not equivalent, so you are stuck with less than 8 real queues, and in most cases just 3. This barely covers the cases of priority, best-effort and scavenger. Any serious enterprise has at least 8 distinct traffic classes.
  • Most chipsets support only a subset of the really useful options, like WRED, CBWFQ, PQ, LLQ, etc

 

The lack of any real UI means that:

  • The commands are non-intuitive (even in IOS nomenclature)
  • Some commands apply to multiple ports without telling you (the one-to-many ASIC problem)
  • The commands are literally direct programming for the ASICS, there is no real interpretive layer as there is with almost every other IOS command structure