This document describes Quality of Service (QoS) for Voice over IP (VoIP) in a LAN environment by mapping Type of Service (ToS) to Class of Service (CoS) parameters.
Until recently, the general consensus was that QoS would never be an issue in the enterprise side due to the bursty nature of network traffic and the capability of buffer overflow. The reason for QoS on the LAN side is due to buffering, not lack of bandwidth. For this reason, QoS tools are required to manage these buffers to minimize loss, delay, and delay variation. Transmit buffers have a tendency to fill to capacity in high-speed networks due to the bursty nature of data networks combined with the high volume of smaller Transmission Control Protocol (TCP) packets. If an output buffer fills, ingress interfaces are not able to immediately place new flow traffic into the output buffer. Once the ingress buffer fills (can happen quickly), packet drops occur. This is where voice quality may possibly degrade due to packet loss.
VoIP traffic is sensitive to both delayed packets and dropped packets. Delay should never be a factor, regardless of the size of the queue buffer, due to high speed on LAN links. However, drops always adversely affect voice quality in all networks. The use of multiple queues on transmit interfaces is the only way to eliminate the potential for dropped traffic caused by buffers that operate at 100% capacity. The separation of voice and video (both sensitive to delays and drops) into their own queues can prevent flows from being dropped at the ingress interface, even if data flows fill up the data transmit buffer.
In networks with high traffic loads, it is critical to manage the delivery of control traffic to ensure a positive user experience with VoIP. This is easily illustrated. For example, when an IP phone goes off-hook, it asks the Cisco CallManager what to do. Cisco CallManager then instructs the IP phone to play the dial tone. If the Skinny Client Protocol management and control traffic is dropped or delayed, the user experience is adversely affected. In order to provide QoS, mark packet headers with a higher precedence and map them correctly to the Layer 2 headers for Catalysts to understand. This ensures proper prioritization on the voice packets across the LAN.
There are no specific prerequisites for this document.
The information in this document is based on these software and hardware versions.
Cisco 3725 Voice Gateway with Cisco IOS® Software Release 12.3(4)T .
Catalyst 4000 switch
Cisco CallManagers and IP phones
The information presented in this document was created from devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If you are working in a live network, ensure that you understand the potential impact of any command before using it.
For more information on document conventions, see the Cisco Technical Tips Conventions.
In this section, you are presented with the information to configure the features described in this document.
This document uses the network setup shown in this diagram.
This document uses these configurations.
This configuration shows how to map ToS/differentiated services code point (DSCP) values into a CoS value in the 802.1p header portion. There are many ways to implement this and the slight differences vary depending on your design. The two configuration examples here are equivalent and either one can be used to achieve the same result. Be sure to only allow VoIP packets that have an IP precedence of critical (5) in the ToS bit. No other traffic should have this bit set to critical. This causes overlap of unwanted traffic in the voice queue.
Note: LLQ configuration is done on other devices in the network such as the Catalyst 4000, which is not discussed in this document.
In this first example, only the RTP streams that match IP precedence 5 are tagged, and not RTCP or any H.225/245 signaling and messaging packets.
|Cisco 3660 (example 1)|
! ip cef ! !--- The Cisco Express Forwarding (CEF) mechanism needs to be enabled !--- in order for the set cos command that is !--- configured later to take effect. !--- If this is not on, the router reminds you with !--- the error "CEF switching needed for 'set' operations". ! class-map match-all RTP match ip precedence 5 !--- This command matches on all packets with the IP precedence of 5. ! policy-map OutboundPolicy class RTP set CoS 5 !--- For all packets which previously matched on class-map RTP for !--- having precedence of 5, the CoS bit is now set to 5. class class-default set CoS 0 !--- All other traffic has a CoS of 0 and !--- carries a lower priority of delivery. ! interface FastEthernet0/0 no ip address no ip mroute-cache duplex auto speed auto ! interface FastEthernet0/0.816 encapsulation dot1Q 816 !--- There must be subinterfaces for FastEthernet to enable trunking, !--- as well as either dot1q or isl encapsulation. ip address 10.120.16.112 255.255.255.0 service-policy output OutboundPolicy !--- Apply the QoS to the interface that connects to the LAN !--- via the Catalyst 4000. ! dial-peer voice 99131 voip destination-pattern 9913109 session target ipv4:10.120.17.133 ip qos dscp cs5 media no vad !
Note: The command ip qos dscp was introduced in Cisco IOS Software Release 12.2(2)T. It replaces the ip precedence (dial-peer) command. All routers that run on Cisco IOS Software Release 12.2(2)T and earlier can use ip precedence in the dial-peer configuration.
The second example has different matching parameters for classes of policy-map. The Cisco 3660 configuration matches on the H.225 call setup packets as well as the RTP streams. The matching criteria for the RTP stream is also slightly different. Do not look at the IP headers, only look at the UDP port range. If it falls between 16384 and 32767, tag them and send them to policy-map.
|Cisco 3660 (example 2)|
! ip cef ! !--- The CEF mechanism needs to be enabled !--- in order for the set cos command that is !--- configured later to take effect. !--- If this is not on, the router reminds you with !--- the error "CEF switching needed for 'set' operations". ! class-map match-all Call-Control match access-group 101 ! class-map match-all RTP match ip rtp 16384 16383 !--- Match on UDP port range 16384-32767 to single out !--- VoIP packets for policy-map. ! access-list 101 permit tcp host 10.120.16.112 any eq 1720 !--- Match on all packets using TCP port 1720 which is !--- dedicated for H.225 call setup. ! policy-map OutboundPolicy class RTP set CoS 5 !--- For all VoIP packets that match the UDP port range listed above, !--- set the CoS bit to 5. class Call-Control set CoS 3 set ip precedence 3 !--- For all signaling and control packets that match access-list !--- 101, set the CoS bit to 3 and IP precedence to 3. class class-default set CoS 0 !--- All other traffic has a CoS of 0 and carries a !--- lower priority of delivery. ! interface FastEthernet0/0 no ip address no ip mroute-cache duplex auto speed auto ! interface FastEthernet0/0.816 encapsulation dot1Q 816 ip address 10.120.16.112 255.255.255.0 service-policy output OutboundPolicy !--- Apply your QoS to the interface that connects to the !--- LAN via the Catalyst 4000. ! dial-peer voice 99131 voip destination-pattern 9913109 session target ipv4:10.120.17.133 ip qos dscp cs5 media no vad !
This section provides information you can use to confirm your configuration is working properly.
show policy-map interface —Displays match counters for all classes of a specified service policy-map.
The routers are now configured to map the ToS bit to the CoS bit. Use the show policy-map interface command to make sure the traffic is actually marked according to the configuration.
In this first example output, the 539 VoIP packets match the class-map and all 539 packets have the CoS bit marked to a value of critical as a result. This type of queuing does not have to wait for congestion to be active. As long as there is voice traffic that traverses the FastEthernet link, it marks all packets accordingly. In the second example, all the VoIP packets marked to CoS value of 5 and all the signaling packets are marked to a CoS value of 3 according to the configuration.
From the first 3660 example configuration:
vdtl-3660-16a#show policy-map interface fastethernet 0/0.816 FastEthernet0/0.816 Service-policy output: OutboundPolicy Class-map: RTP (match-all) 539 packets, 42042 bytes 5 minute offered rate 2000 bps, drop rate 0 BPS Match: ip precedence 5 QoS Set CoS 5 Packets marked 539 Class-map: class-default (match-any) 13 packets, 1803 bytes 5 minute offered rate 0 BPS, drop rate 0 BPS Match: any QoS Set CoS 0 Packets marked 13
From the second 3660 example configuration:
vdtl-3660-16a#show policy-map interface fastethernet 0/0.816 FastEthernet0/0.816 Service-policy output: OutboundPolicy Class-map: RTP (match-all) 370 packets, 28860 bytes 5 minute offered rate 0 BPS, drop rate 0 BPS Match: ip rtp 16384 16383 QoS Set CoS 5 Packets marked 370 Class-map: Call-Control (match-all) 26 packets, 2697 bytes 5 minute offered rate 0 BPS, drop rate 0 BPS Match: access-group 101 QoS Set ip precedence 3 Packets marked 26 CoS 3 Packets marked 26 Class-map: class-default (match-any) 4363 packets, 515087 bytes 5 minute offered rate 0 BPS, drop rate 0 BPS Match: any QoS Set CoS 0 Packets marked 4363 vdtl-3660-16a#
There is currently no specific troubleshooting information available for this configuration.
The Cisco Support Community is a forum for you to ask and answer questions, share suggestions, and collaborate with your peers.
Refer to Cisco Technical Tips Conventions for information on conventions used in this document.