Quality of service (QoS) for wireless applications is an important topic because it can lead, if misunderstood, to many structural mistakes in wireless networks deployments and poor quality when QoS-dependent devices (for example, VoIP phones) are added. Expect to be tested extensively on this topic on the IUWVN exam. Make sure to understand the concepts and their related configuration.
QoS is described as a tool for network convergence (that is, the efficient coexistence of VoIP, video, and data in the same network). QoS does not replace bandwidth, but provides a means to ensure that all traffic gets the best treatment (adapted to each traffic type) in times of network congestion. QoS can be implemented in three different ways:
- Best effort, this is basically “no implementation”: All traffic is treated the same way. When buffers are full, additional frames are dropped, regardless of what type of traffic they carry.
- Integrated services (IntServ), also called “hard” QoS: Out-of-band control messages are used to check and reserve end-to-end bandwidth before sending packets into the network. Resource Reservation Protocol (RSVP) and H.323 are both examples of IntServ QoS methods. Each node on the path must support IntServ, which is difficult to achieve in large IP networks.
- Differentiated services (DiffServ), the most common method: Each type of traffic receives an importance value represented by a number. Each node on the path independently implements one or several prioritization techniques based on each traffic number.
DiffServ is the method used in most IP networks and can be implemented with different techniques, as detailed in the following sections. You can use each alone or in combination with others.
Classification and Marking
The first step in a QoS approach is to identify the different types of traffic that traverse the network and classify them into categories, such as:
- Internetwork control traffic: Control and Provisioning of Wireless Access Points (CAPWAP) Protocol, Enhanced Interior Gateway Routing Protocol (EIGRP) updates that need to be transmitted for the network to function
- Critical traffic: VoIP that cannot be delayed without impacting the call quality
- Standard data traffic: Email, web browsing, and so on
- Scavenger traffic: Traffic that is accepted but receives the lowest priority, such as peer-to-peer file download and so forth
Classification can be done through deep packet inspection to look at the packet content at Layer 7 (for example, Cisco Network Based Application Recognition [NBAR]) is a function of the IOS that can recognize applications); through access control lists (ACL) based on incoming interface, source, or destination ports or addresses; or through many other techniques. Once each traffic type is established, mark each identified packet with a number showing the traffic priority value. This marking should be done as close to the packet source as possible. Some devices (IP phones, for example) can mark their own traffic. You should decide where traffic is identified and marked, and from where marking is trusted (called the trust boundary). This trust boundary should be as close as possible to the point where the packet enters the network (for example, at the sending device network interface, or at the access switch where the device connects). You cannot always trust devices or user marking, or that the access switch will perform the classification, so you might have to move this trust boundary to the distribution switch.
To apply marking on Cisco IOS using standard QoS configuration commands (called the Modular QoS Console [MQC]), which is a component of the IOS command set), you can create a class map and specify one or several conditions that identify the traffic. (Each condition can be enough to identify the traffic if you use the keyword match-any, or they must all match if you use the keyword match-all.) Example 1-1 shows a class map.
Example 1-1 Class Map
Router(config)# access-list 101 permit tcp any host 192.168.1.1 eq 80 Router(config)# class-map match-any MyExample Router(config-cmap)# match ip dscp 46 Router(config-cmap)# match ip precedence 5 Router(config-cmap)# match access-group 101 Router(config-cmap)# match protocol http Router(config-cmap)# exit
Marking can be done at Layer 2 or Layer 3. At Layer 2, the priority tag can be inserted into the Class of Service (CoS) field available in the 802.1p section of the 802.1Q 4-byte element, which is added to frames transiting on a trunk. The CoS field offers 3 bits and 8 values (from 0  to 7 ). Its limitations are that it is only present on frames that have an 802.1Q VLAN tag (that is, not on frames sent on switch ports set to access mode, and not on frames using the native VLAN on trunks) and that it does not survive routing (a router removes the Layer 2 header before routing a packet, thus losing the CoS value). Its advantage is that it is on a low layer and can be used efficiently by Layer 2 switches.
At Layer 3, the Type of Service (ToS) field in the IP header can be used for marking. One way to use this field is called IP Precedence, and uses 3 bits to duplicate the Layer 2 CoS value and position this value at Layer 3, allowing the QoS tag to survive routing. Eight values may still be a limited range for advanced classification, and the ToS field contains 8 bits. Therefore, another way to use this field exists: Differentiated Service Code Point (DSCP). DSCP uses 6 of the 8 bits (allowing for 64 QoS values). The last 2 bits are used to inform the destination point about congestion on the link. The first 3 bits are used to create a priority category (or class). There are four types of classes: Best Effort (BE) for class 000, Assured Forwarding (AF) for classes 001 to 100, and Expedited Forwarding (EF) for class 101. A special class, Class Selector (CS), is also used when only these first 3 bits are used (and the other bits set to 0), thus mapping perfectly to IP Precedence and CoS. The next 2 bits are used to determine a drop probability (DP); a higher DP means a higher probability for the packet to be dropped if congestion occurs. (Therefore, within a class, a packet with a DP value of 2 is dropped before another packet of the same class with a DP of 1 or 0.) The last bit is usually set to 0. Figure 1-1 shows the various tagging methods.
Figure 1-1 Marking Techniques