Cisco's Troubleshooting and Maintaining Cisco IP Networks (TSHOOT) exam (642-832), which is one of three components making up the new CCNP certification, addresses troubleshooting best practices for a variety of technologies (for example, routing, switching, wireless, security, and voice). Interestingly, two of the troubleshooting targets presented in the TSHOOT course (and on the TSHOOT exam) are not covered in the other CCNP courses: ROUTE and SWITCH.
Therefore, the successful TSHOOT exam candidate needs a basic understanding of a collection of topics outside the realm of the ROUTE and SWITCH courses. One such target is the troubleshooting of voice quality. This article considers the fundamental concepts surrounding quality of service (QoS) mechanisms available on Cisco routers, which can recognize voice traffic and treat that special traffic in a special way.
What Is QoS?
To begin, let's consider a definition of quality of service. The best definition I've ever heard (from one of Cisco's older QoS courses) is that the essence of QoS is "managed unfairness." In other words, we're being politically incorrect to certain traffic types. We're saying, "Oh, you're that kind of packet. As a result, you're going to be treated this way." Or, "You're this other kind of packet, and as a result, you're going to be treated this other way."
Cisco defines three categories of QoS:
- Best-effort. The best-effort approach to QoS is really the absence of QoS. In other words, with best-effort, packets are not prioritized; the first packet to come into a router is the first packet to leave that router.
- Integrated services (IntServ). IntServ allows an application to make bandwidth reservations for the duration of that application. Resource Reservation Protocol (RSVP) is the primary protocol used when working with IntServ. Interestingly, RSVP doesn't share. For example, if an application has reserved 128 kbps of bandwidth, any currently unused bandwidth cannot be shared with another application that's in need of extra bandwidtheven if the reserving application doesn't currently need all 128 kbps.
- Differentiated services (DiffServ). DiffServ is the primary approach to QoS addressed in the TSHOOT curriculum, and it's the most common type of QoS you'll encounter in the real world. As its name suggests, with DiffServ a router's QoS mechanisms differentiate between different packet types. Specifically, QoS mechanisms can classify packets and then mark those packets. Once a packet is marked, the next router or the next switch along the packet's path can very quickly and efficiently examine that marking and make a decision to forward or drop the packet based on that marking. Unlike with IntServ, DiffServ mechanisms can share bandwidth. For example, imagine we allocate 128 kbps of bandwidth for web traffic and 256 kbps for FTP traffic. If the network's web traffic doesn't need all of its allocated 128 kbps at the moment, and the FTP traffic needs more than its allocated 256 kbps, the FTP traffic can use some of the web traffic's unused bandwidth.
DiffServ Mechanisms
Cisco IOS routers support multiple DiffServ QoS mechanisms. The following list discusses the categories of these QoS mechanisms:
- Classification. Classification is the ability to recognize traffic types, which can be performed in a variety of ways. For example, an access list could be used to recognize Telnet traffic by matching TCP port 23. Another popular classification mechanism is Network-Based Application Recognition (NBAR), which can recognize the signatures of many well-known applications.
- Marking. Once traffic is classified, it can be marked by altering bits. One such marking occurring at Layer 2 is Class of Service (CoS). A CoS marking uses three bits, and therefore has a range of values from 0[nd]7. Cisco tells us that values of 6 and 7 are reserved for network use, so our highest-priority markings should be no higher than 5. In fact, Cisco recommends marking voice media frames at Layer 2 with a CoS value of 5, which a Cisco IP phone does by default.
- Default. The default PHB has a DSCP decimal value of 0 and is often used for best-effort traffic.
- Class Selector (CS). Class Selector PHBs range from CS1[nd]CS7, where the number represents the equivalent IP Precedence value of that marking. In fact, CS PHBs provide pure backward compatibility with IP Precedence (useful in a network where some routers use IP Precedence markings and others use DSCP markings), because the fourth, fifth, and sixth bit positions in the ToS byte are zeroes, just as they would be in an IP Precedence marking.
- Assured Forwarding (AF). The Assured Forwarding PHBs are divided into four classes: AF1, AF2, AF3, and AF4, where the number represents the IP Precedence value of the marking. Each of these classes has three values, however, giving us a grand total of 12 AF values: AF11, AF12, AF13, AF21, AF22, AF23, AF31, AF32, AF33, AF41, AF42, and AF43. The second number after AF refers to the drop probability of the packet when a router's queue starts to become congested: 3 reflects high drop probability, 2 indicates medium drop probability, and 1 indicates low drop probability.
- Expedited Forwarding (EF). The Expedited Forwarding PHB is the marking Cisco recommends for use when marking voice media packets at Layer 3. The decimal equivalent value of the EF marking is 46.
- Congestion management. Classifying and marking traffic doesn't change the behavior of the traffic; we need additional QoS mechanisms to examine those markings and make a decision based on those markings. One such QoS mechanism is congestion management, also known as queuing. Imagine that a router is receiving traffic from a LAN connection at a rate of 100 Mbps, and then trying to send out that traffic on a WAN link that has only 512 kbps of bandwidthobviously, a big speed mismatch.
- Congestion avoidance. In connection with the Assured Forwarding collection of PHBs, I mentioned the use of a drop probability number. The mechanism that actually makes the dropping decision is Weighted Random Early Detection (WRED), which is a congestion-avoidance mechanism.
- Traffic conditioning. Instead of guaranteeing a minimum bandwidth amount for a class of traffic, as CB-WFQ does, traffic conditioners can set a "speed limit" on specified traffic types. The two main approaches to traffic conditioning are policing and shaping. Both policing and shaping can limit the amount of bandwidth consumed by a class of traffic. By default, policing drops traffic attempting to exceed the configured speed limit, whereas shaping buffers the excess traffic and then transmits that traffic when bandwidth becomes available.
- Link efficiency. Link efficiency mechanisms attempt to make the most efficient use of relatively limited WAN bandwidth. The two most common link efficiency approaches are compression and link fragmentation and interleaving (LFI). Compressing a packet's header and/or its payload allows the information included in the packet to be sent using less bandwidth. As a result, more information can be sent over a link without increasing the link's bandwidth. It's almost like getting free bandwidth (assuming that the router performing the compression has sufficient processing power to run the compression algorithms efficiently).
IP Precedence markings and Differentiated Services Code Point (DSCP) markings are both Layer 3 markings. IP Precedence uses the three leftmost bits in an IPv4 header's Type of Service (ToS) byte. Like CoS, with three bits at its disposal, IP Precedence markings have values in the range of 0[nd]7. Again, Cisco cautions us that values of 6 and 7 are reserved, so you should mark voice media with an IP Precedence value of 5. DSCP markings use the six leftmost bits of a ToS byte, giving us 64 potential values (in the range 0[nd]63). Rather than allowing haphazard value assignments, the IETF has identified and named a collection of preselected values, called per-hop behaviors (PHBs).
To solve this problem, the router stores those packets temporarily in the output interface's queue. While packets are in that queue, various queuing algorithms can be used to determine the order in which packets will be emptied from the queue. The two most popular queuing mechanisms used on Cisco routers today are Class-Based Weighted Fair Queuing (CB-WFQ) and Low Latency Queuing (LLQ). CB-WFQ can allocate minimum amounts of bandwidth for different classes of traffic. LLQ takes CB-WFQ a step further by adding a priority queue. Traffic (such as voice) placed in the priority queue gets sent first, up to a limit. For example, your configuration of LLQ might allocate 128 kbps of bandwidth for voice traffic, which allows the voice traffic to be prioritized ahead of other traffic types and sent first. However, the voice traffic will not consume more than the allotted 128 kbps of bandwidth, which otherwise could result in other traffic types being starved out.
Rather than "squeezing" information, LFI fragments large packets (such as FTP packets) into smaller packets that can be sent out of a serial interface faster than their larger counterparts could. LFI then can interleave smaller, latency-sensitive packets (such as voice packets) among the fragmented data packetsmuch like shuffling a deck of cards. As a result, latency-sensitive voice packets can exit a serial interface sooner than they would if they had to wait for a large data packet to exit.
Configuration
Now that we've covered some of the theory surrounding QoS, let's turn our attention to configuration. The DiffServ approach to QoS often uses a three-step command-line interface (CLI) configuration process called Modular QoS CLI (MQC):
- Classify traffic into various classes.
- Define a policy that dictates how the various traffic classes will be treated.
- Apply the policy (typically to an interface).
MQC can be used to configure QoS mechanisms such as the following:
- Class-Based Classification
- Class-Based Marking
- Class-Based Weighted Fair Queuing (CB-WFQ)
- Low Latency Queuing (LLQ)
- Class-Based Weighted Random Early Detection (CB-WRED)
- Class-Based Policing
- Class-Based Shaping
- Class-Based Header Compression
Let's consider a specific example:
- MQC's first step involves the creation of class maps. For example:
- After creating one or more class maps, the next step is to create a policy map that specifies which QoS mechanisms are applied to various traffic classes. For example:
- The final step of MQC is to apply the policy map somewhereusually to an interface:
class-map match-any INTERACTIVE match protocol telnet match protocol ssh
The class map name of INTERACTIVE in this example is case-sensitive. Also notice the match-any option specified in the class-map match-any INTERACTIVE command. The match-any option (as opposed to the default option of match-all) says that a packet will be classified by the INTERACTIVE class map if it matches any of the criteria specified by the class map's match commands.
Typically you'll create more than one class-map. The following class map matches voice traffic, which uses Real-time Transport Protocol (RTP) for transporting voice media. Notice that the audio option is used, because interactive video can also use RTP.
class-map VOIP match protocol rtp audio
At this point, we've created two class maps. However, a third class map exists that we didn't create. The class-default class map is created by default, and it matches any traffic that isn't matched by one of the class maps we create.
policy-map TSHOOT class INTERACTIVE bandwidth 256 class VOIP priority 128
Notice that after creating a policy map, you enter the class class_name command to enter policy-map-class configuration mode. From this mode, you can configure multiple QoS mechanisms. Here, the INTERACTIVE class map is guaranteed at least 256 kbps of bandwidth if it needs that much, and more bandwidth as needed if more is available. This is an example of CB-WFQ configuration. The VOIP class is guaranteed 128 kbps of priority bandwidth (meaning that it's transmitted first) if it needs that much, but no more (to avoid starving out other traffic). This is an example of LLQ configuration.
interface serial 1/0/0 service-policy output TSHOOT
When applying a policy map to an interface, you can specify whether the policy applies to traffic going out of or coming into the interface. In this example, the TSHOOT policy map is applied to traffic exiting the serial 1/0/0 interface.
Conclusion
In this article, I've provided you with a basic understanding of QoS so that you will be better able to interpret voice quality troubleshooting issues and resolutions that are presented in the TSHOOT curriculum. For more information on troubleshooting voice quality issues (and a ton of other issues), check out my book CCNP TSHOOT 642-832 Official Certification Guide.
