本文档通过将 Type of Service (ToS) 映射到 Class of Service (CoS) 参数,介绍 LAN 环境中 IP 语音 (VoIP) 的服务质量 (QoS)。
由于网络流量的突发性本质和缓冲区溢出功能,人们长久以来一直认为 QoS 在企业端从来都不是问题。这种观点直到最近才有所改变。QoS 在 LAN 端的问题源于缓冲,而不是缺乏带宽。为此,需要使用 QoS 工具管理这些缓冲区,以尽可能减少丢失、延迟和延迟波动。由于数据网络的突发性本质,加之大量小型传输控制协议 (TCP) 数据包的存在,传输缓冲区有充满高速网络容量的倾向。如果输出缓冲区充满,入口则不能立即将新流量放入输出缓冲区。入口缓冲区充满后(可能很快充满),就会发生丢包。这就是由于丢包导致语音质量降低的一种可能情况。
VoIP 流量对于数据包的延迟和丢弃都十分敏感。因为 LAN 链路的速度很快,所以无论队列缓冲区大小如何,延迟都不应该成为问题。然而,在所有网络中,丢包都会对语音质量产生不利影响。对传输接口使用多个队列是排除因缓冲区充满而可能造成数据流丢失的唯一方法。通过将语音和视频(都对延迟和丢包敏感)分别放入不同的队列,可以防止在入口处丢弃数据流(即使数据流填满数据传输缓冲区,也不会丢失)。
在承受高流量负载的网络中,管理控制流量的交付以保证良好的 VoIP 用户体验非常关键。这很容易说明。例如,IP 电话在摘机时会询问 Cisco CallManager 该做什么。然后,Cisco CallManager 指示 IP 电话播放拨号音。如果 Skinny Client Protocol 管理和控制流量发生丢失或延迟,就会对用户体验造成负面影响。为了提供 QoS,应为数据包报头标记较高的优先级,并将其正确映射到 Catalyst 的第 2 层报头以便于理解。这可以保证对 LAN 上的语音数据包合理划分优先级。
本文档没有任何特定的前提条件。
本文档中的信息基于以下软件和硬件版本。
使用 Cisco IOS® 软件版本 12.3(4)T 的 Cisco 3725 语音网关。
Catalyst 4000 交换机
Cisco CallManager 和 IP 电话
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
本部分提供有关如何配置本文档所述功能的信息。
注:要查找有关本文档中使用的命令的其他信息,请使用命令查找工具(仅注册客户)。
本文档使用此图所示的网络设置。
本文档使用以下配置。
此配置显示如何将 ToS/Differentiated Service Code Point (DSCP) 值映射到 802.1p 报头部分的一个 CoS 值。有很多种实现方法,这些方法根据您的设计可能稍有不同。这里的两个示例配置作用相同,无论使用哪一个,结果都是一样的。务必只允许 VoIP 数据包在 ToS 位中将 IP 优先级设置为关键 (5)。其他流量不应将此位设置为关键。这会在语音队列中造成不必要流量的重叠。
注意:LLQ配置在网络中的其他设备(如Catalyst 4000)上完成,本文档不讨论此问题。
在第一个示例中,只标记了匹配 IP 优先级 5 的 RTP 数据流,没有标记 RTCP 或任何 H.225/245 信令和消息包。
Cisco 3660(示例 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 ! |
注意:命令ip qos dscp在Cisco IOS软件版本12.2(2)T中引入。该命令取代了 p precedence (dial-peer) 命令。在Cisco IOS软件版本12.2(2)T及更早版本上运行的所有路由器都可以在拨号对等体配置中使用ip precedence。
第二个示例的策略映射类有不同的匹配参数。Cisco 3660 配置匹配 H.225 呼叫建立数据包以及 RTP 流。RTP 流的匹配标准也稍有不同。请勿查看 IP 报头,只查看 UDP 端口范围。如果位于 16384 和 32767 之间,请对它们进行标记并将其发送到策略映射。
Cisco 3660(示例 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 ! |
本部分所提供的信息可用于确认您的配置是否正常工作。
命令输出解释程序工具(仅限注册用户)支持某些 show 命令,使用此工具可以查看对 show 命令输出的分析。
show policy-map interface — 显示指定服务策略映射的所有类的匹配计数器。
路由器现已配置为将 ToS 位映射到 CoS 位。使用 show policy-map interface 命令可确保流量实际上根据配置进行标记。
在第一个示例的输出中,539 个 VoIP 数据包匹配类映射,结果全部 539 个数据包的 CoS 位都标记为关键值。这种类型的排队不必等到出现拥塞才发生。只要有横跨 FastEthernet 链路的语音流量,就会相应地标记所有数据包。在第二个示例中,所有 VoIP 数据包都标记为 CoS 值 5,并且所有信令包都根据配置标记为 CoS 值 3。
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
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#
目前没有针对此配置的故障排除信息。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
02-Feb-2006 |
初始版本 |