目录

简介

先决条件

要求

使用的组件

规则

语音VLAN概述

配置

网络图

配置

基于可信CoS值

使用非Cisco IP电话时

基于IP报头中的受信任DSCP值

验证

相关信息

简介

本文档提供Cisco Catalyst 2960/2950系列交换机上语音VLAN的示例配置。具体而言，本文档显示如何在Cisco Catalyst 2950交换机上配置语音VLAN功能。

先决条件

要求

尝试进行此配置之前，请确保满足以下要求：

- 了解Cisco Catalyst 2960/2950系列交换机的基本配置知识。

- 基本了解语音VLAN。

使用的组件

本文档中的信息基于 Cisco Catalyst 2950 交换机。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

规则

有关文档约定的更多信息，请参考 Cisco 技术提示约定。

语音VLAN概述

语音VLAN功能允许交换机端口从IP电话传输具有第3层IP优先级和第2层服务类别(CoS)值的语音流量。基于IEEE 802.1p CoS，交换机支持服务质量(QoS)，该服务质量(QoS)使用分类和调度从交换机发送网络流量。您可以配置Cisco IP电话以转发具有IEEE 802.1p优先级的流量，并将交换机配置为信任或覆盖IP电话分配的流量优先级。

您可以配置与IP电话连接的交换机端口，使其将一个VLAN用于语音流量，将另一个VLAN用于连接到IP电话接入端口的设备的数据流量。您可以配置交换机上的接入端口以发送Cisco发现协议(CDP)数据包，以指示连接的IP电话通过以下任一方法将语音流量发送到交换机：

- 在标记有第2层CoS优先级值的语音VLAN中

- 在带有第2层CoS优先级值标记的接入VLAN中

- 在接入VLAN中，无标记（无第2层CoS优先级值）

交换机可以处理来自连接到IP电话上接入端口的设备的数据流量。您可以配置发送CDP数据包的交换机端口，这些数据包指示连接的IP电话为电话上的接入端口配置模式（受信任或不受信任模式）。

在受信任模式下，IP电话上的接入端口会从PC传递流量，而不会发生任何更改。在不受信任模式下，IP电话上的接入端口接收IEEE 802.1Q帧中包含已配置第2层CoS值的所有流量。默认的第2层CoS值为0。默认为不可信模式。

配置

在本节中，您将获得配置本文档中描述的语音VLAN功能的信息。

在交换机中，语音VLAN功能默认为禁用。在端口上启用语音VLAN时，所有未标记流量都会根据默认CoS优先级发送。在启用语音VLAN之前，请发出mls qos 全局配置命令在交换机上启用QoS，并通过发出mls qos trust cos 接口配置命令将端口的信任状态配置为trust。

默认情况下，交换机端口会丢弃硬件中的所有标记帧。为了在交换机端口上接受标记帧，应在端口上配置以下命令之一：

- switchport voice vlan dot1p

- switchport voice vlan V_VLAN_ID

- switchport mode trunk

使用switchport voice vlan dot1p命令以指示交换机端口使用IEEE 802.1p优先级标记通过本征（接入）VLAN转发具有更高优先级的所有语音流量。

使用switchport voice vlan V_VLAN_ID命令以配置指定的语音VLAN，因此IP电话可以使用第2层CoS值在IEEE 802.1Q帧中发送语音流量。Cisco IP电话也可以发送无标记语音流量，也可以使用自己的配置将语音流量发送到交换机的接入VLAN。

使用switchport priority extend trust命令将信任状态扩展到连接到IP电话的设备(PC)。通过发出此命令，交换机将指示电话如何处理来自连接到Cisco IP电话接入端口的设备的数据包。PC生成的数据包使用802.1q报头中分配的CoS值。电话不应更改（信任）从PC到达电话端口的帧的优先级。

必须在IP电话所连的交换机端口上启用CDP。默认情况下，CDP在交换机接口上全局启用。CDP是交换机和Cisco IP电话之间用于配置Cisco IP电话以与交换机端口通信的机制。CDP是Cisco Systems的专有协议，其他制造商的电话可能无法使用此方法配置IP电话以匹配交换机的端口配置。

注意：使用命令查找工具(仅限注册客户)可获取有关本节中使用的命令的详细信息。

网络图

本文档使用以下网络设置：

此图是Cisco Catalyst 2950交换机上语音VLAN配置的示例。交换机端口FastEthernet 0/6和0/8与思科IP电话连接，两个IP电话上的接入端口与PC连接。

配置

本文档使用以下配置：

基于可信CoS值

在2950交换机中，FastEthernet 0/6端口已为语音VLAN配置VLAN 10(带dot1p)，以对语音流量使用IEEE 802.1p优先级标记，并为来自连接到Cisco PC接入端口的PC的数据流量配置了trust模式IP电话。在此，Cisco IP电话通过CoS信任笔记本电脑或PC，并且数据流量使用本征VLAN。此配置通常用于管理工作站、高优先级用户或高CoS价值应用。

当Cisco电话与交换机执行CDP时，信任边界始终扩展到IP电话。即，IP电话的数据包从不从CoS 5更改为CoS默认值。这就是为什么在笔记本电脑或PC上使用switchport priority extend trust命令的原因。它通过CDP发送，以告知IP电话不要重写高优先级数据包。

FastEthernet 0/8端口配置了用于语音和数据流量的单独VLAN。在本示例中，VLAN 10用于语音流量，VLAN 20用于数据流量。此配置用于典型的Cisco IP电话，而不信任笔记本电脑或PC。流量使用IEEE 802.1Q帧类型。

使用mls qos trust cos命令,Catalyst交换机的端口将查看以太网报头上的CoS值以对入口流量进行分类，并信任来自Cisco IP电话的标记数据包的CoS值。默认情况下，以太网端口变为不可信，因此来自语音VLAN和数据VLAN的流量将不可信。

在尝试退出端口以防止抖动时，请使用priority-queue out命令为语音数据包提供行首权限。spanning tree portfast命令从生成树协议中删除接口，而bpduguard命令可在拔掉IP电话后尝试将新交换机连接到该交换机时保护网络。如果交换机要插入，端口将转为err-disable。这些端口通常会添加到电话端口。

Cisco Catalyst 2950 交换机

Switch#configure terminal

Switch(config)#mls qos

Switch(config)#interface fastethernet 0/6

!--- Set the interface to classify incoming traffic packets by using the packet CoS value.

Switch(config-if)#mls qos trust cos

!--- Configure the phone to use IEEE 802.1p priority tagging for voice traffic.

Switch(config-if)#switchport voice vlan dot1p

Switch(config-if)#switchport voice vlan 10

!--- Trust the CoS value the PC sends in on the data VLAN.

Switch(config-if)#switchport priority extend trust

Switch(config-if)#priority-queue out

Switch(config-if)#spanning-tree portfast

Switch(config-if)#spanning-tree bpduguard enable

Switch(config-if)#exit

Switch(config)#interface gigabitethernet0/8

Switch(config-if)#mls qos trust cos

!--- Configure specified VLANs for voice and data traffic.

Switch(config-if)#switchport voice vlan 10

Switch(config-if)#switchport access vlan 20

Switch(config-if)#priority-queue out

Switch(config-if)#spanning-tree portfast

Switch(config-if)#spanning-tree bpduguard enable

Switch(config-if)#exit

使用非Cisco IP电话时

如果您使用的非思科IP电话无法识别思科专有CDP并自动设置中继端口，则必须手动配置中继。在此配置示例中，我们将VLAN限制为10和20，并阻止默认本征VLAN 1或VLAN 0。VLAN 10用于语音流量，VLAN 20用于数据流量。非Cisco IP电话通过手动配置或在启动过程中下载的TFTP文件获取其标记数据包的正确VLAN。本示例使用以下配置：

Cisco Catalyst 2950 交换机

Switch#configure terminal

Switch(config)#interface fastethernet 0/6

!---Trusts tagged packets CoS value; all untagged packets reset DSCP value in IP header to 0.

Switch(config-if)#mls qos trust cos

!--- Turn off DTP (dynamic trunking protocol).

Switch(config-if)#switchport nonegotiate

!--- Forces the port into trunking mode.

Switch(config-if)#switchport mode trunk

Switch(config-if)#switchport trunk native vlan 20

!--- Restricts the VLANs.

Switch(config-if)#switchport trunk allowed vlans 10,20

Switch(config-if)#priority-queue out

Switch(config-if)#spanning-tree portfast trunk

Switch(config-if)#spanning-tree bpduguard enable

Switch(config-if)#exit

基于IP报头中的受信任DSCP值

此处，我们使用可信DiffService代码点(DSCP)值，而不是CoS值，因为CoS提供了一种只通过查看其L2报头来了解数据包重要性的方法。DSCP是IP数据包中的6位字段。请使用mls qos trust DSCP命令以信任IP报头中的DSCP值。在这种情况下，IP电话在其数据包中正确设置其DSCP，而笔记本电脑则正确设置其DSCP。本示例使用以下配置：

Cisco Catalyst 2950 交换机

Switch#configure terminal

Switch(config)#interface fastethernet 0/6

!---Trust the DSCP value in the IP header.

Switch(config-if)#mls qos trust DSCP

!--- IP phone VLAN

Switch(config-if)#switchport voice vlan 10

Switch(config-if)#switchport access vlan 20

!--- Trust the DSCP value the PC sends in on the data VLAN.

Switch(config-if)#switchport priority extend trust

Switch(config-if)#priority-queue out

Switch(config-if)#spanning-tree portfast

Switch(config-if)#spanning-tree bpduguard enable

Switch(config-if)#exit

验证

使用本部分可确认配置能否正常运行。

命令输出解释程序（仅限注册用户）(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。

- 使用show interfaces interface-id switchport命令以验证语音VLAN配置。

例如：

Switch#show interfaces FastEthernet 0/6 switchport

Name: Fa0/6

Switchport: Enabled

Administrative Mode: dynamic desirable

Operational Mode: static access

Administrative Trunking Encapsulation: dot1q

Operational Trunking Encapsulation: native

Negotiation of Trunking: On

Access Mode VLAN: 1 (default)

Trunking Native Mode VLAN: 1 (default)

Voice VLAN: dot1p

Administrative private-vlan host-association: none

Administrative private-vlan mapping: none

Administrative private-vlan trunk native VLAN: none

Administrative private-vlan trunk encapsulation: dot1q

Administrative private-vlan trunk normal VLANs: none

Administrative private-vlan trunk private VLANs: none

Operational private-vlan: none

Trunking VLANs Enabled: ALL

Pruning VLANs Enabled: 2-1001

Capture Mode Disabled

Capture VLANs Allowed: ALL

Protected: false

Unknown unicast blocked: disabled

Unknown multicast blocked: disabled

Appliance trust: trusted

- 使用show running-config interface interface-id命令验证特定接口的语音VLAN条目。

例如：

Switch#show running-config interface fastEthernet 0/6

Building configuration...

Current configuration : 139 bytes

!

interface FastEthernet0/6

switchport voice vlan dot1p

switchport voice vlan 10

switchport priority extend trust

mls qos trust cos

priority-queue out

spanning-tree portfast

spanning-tree bpduguard enable

end

Switch#show running-config interface fastEthernet 0/8

Building configuration...

Current configuration : 137 bytes

!

interface FastEthernet0/8

switchport voice vlan 10

switchport access vlan 20

mls qos trust cos

priority-queue out

spanning-tree portfast

spanning-tree bpduguard enable

end

相关信息

- Cisco Catalyst 2950 系列交换机支持页面

- Cisco Catalyst 2960 系列交换机支持页面

- 交换机产品支持

- LAN 交换技术支持

- 技术支持和文档 - Cisco Systems