I am seeking, I am striving, I am in it with all my heart.
—— Vincent van Gogh(1853.3.30—1890.7.29)
本章摘要
虚拟局域网(VLAN,Virtual LAN)对交换机逻辑的许多部分都有影响。如在每个VLAN中发生的帧转发,MAC学习后添加到MAC表条目,这些条目包括相关的VLAN。即使是本书第一部分重点讨论的生成树协议(STP,Spanning Tree Protocol),也经常在每个VLAN(per-VLAN)上使用。
本章研究了交换机在VLAN环境工作时,涉及到的核心功能。本章在第一部分先讲概念,在第二部分进行配置和验证。主题包括VLAN概念、VLAN中继、VLAN间路由,加上语音和数据VLAN。
目录
虚拟LAN的概念
在理解VLAN之前,我们首先对LAN的定义需要有一个特定的理解。
从某个角度看,一个LAN包括一个位置内所有的网络设备,包括用户设备、服务器、交换机、路由器、电缆和无线接入点。从另一个角度看,局域网包括同一个广播域中的所有设备。
一个广播域(broadcast domain)指的是所有LAN连接设备的集合,当任意设备发送广播帧时,所有其他设备都将获得该帧的副本。所以,在某种意义上,局域网和广播域是一样的。
默认情况下,交换机会认为它的所有接口都在同一个广播域中。也就是说,当一个广播帧进入一个交换机端口时,该交换机将该广播帧转发到所有其他端口。按照这种逻辑,要创建两个不同的LAN广播域,必须购买两台交换机,如图1-1 所示。

图1-1 使用两台物理交换机创建两个广播域,并且没有VLAN |
---|
通过对VLAN的支持,可以使用一台交换机创建两个广播域,将一部分接口配置为一个广播域,将另一部分接口配置为另一个,从而创建多个广播域。这样由交换机创建的独立广播域称为虚拟局域网(VLAN,virtual LAN)。
例如在图1-2 中,单台交换机创建了两个VLAN,将每个VLAN中的端口视为完全独立的。该交换机不会将Dino(在VLAN 1中)发送的帧转发给Wilma或Betty(都在VLAN2中)。

图1-2 使用一台交换机和VLAN,创建两个广播域 |
---|
下面的列表总结了为什么在设计园区局域网时,建议选择创建较小广播域(即VLAN):
- 减少接收广播帧的设备数量,以减少每个设备上的CPU开销
- 通过减少接收交换机发送的帧副本(广播、多播和未知单播)的主机数量来降低安全风险
- 提高发送敏感数据的主机的安全性,方法是将这些主机放在单独的VLAN上
- 创建更灵活的设计,将用户按部门,或按工作组来分组,而不是按物理位置分组
- 为了更快地解决问题,因为许多的故障区域与相同广播域中的设备集是相同的
- 通过将VLAN限制为单独的访问交换机,以减少生成树协议(STP)的工作负载
本章并没有更深入地讨论使用VLAN的所有原因。但是,要知道大多数企业网络都使用VLAN。本章的其余部分将详细介绍VLAN如何跨多个Cisco交换机工作的机制,包括所需的配置。为此,下一节将讨论VLAN中继(VLAN trunking),这是存在多台LAN交换机上运行VLAN时所需的特性。
使用Trunking创建跨多路交换机的VLAN
在单台交换机上如何配置VLAN?只需配置每个端口,告诉它该端口所属的VLAN号。对于多台交换机,您必须考虑关于如何在交换机之间转发流量(traffic)。
当在具有多台互连交换机的网络中使用VLAN时,交换机需要在交换机之间的链路上使用VLAN中继(VLAN trunking)。交换机使用一个称为VLAN标记(VLAN tagging)的进程,通过这个进程,帧在发送前会添加额外的报文头。
这个额外的中继报头(trunking header)包含一个VLAN标识符(VLAN ID,VLAN identifier)字段,以便发送方的交换机可以将这个帧与一个特定的VLAN ID关联起来,然后接收方交换机可以知道每个帧属于哪个VLAN。
图1-3 多台交换机在没有VLAN Trunk的情况 |
---|
图1-3 所示的设计是可行的,但是它的伸缩性不是很好。每新增支持一个VLAN,它就要在交换机之间新建一条物理链路。如果设计需要10或20个VLAN,那么您将需要铺设10或20条链路,这将会占用交换机大量的端口。
VLAN 打标签的概念
VLAN trunking在交换机之间创建一条链路,可以支持您所需要的VLAN。作为VLAN中继(VLAN trunk),交换机将这条链路也视为所有VLAN的一部分。
与此同时,trunk将VLAN的流量分离,因此VLAN 10中的帧不会进入VLAN 20中的设备,反之亦然,因为每一帧在经过中继时,都使用VLAN编号来标识。
图1-4 显示了这个想法,两个交换机之间只有一条物理链路。

图1-4 多台交换机使用trunk |
---|
Trunk的使用方法:允许交换机在帧中添加一个小报头,将来自多个VLAN的帧传递到一条物理链路上。例如图1-5,步骤如下:
- PC11在接口Fa0/1上发送广播帧。为了要洪泛该帧,交换机SW1需要将广播帧转发给交换机SW2。
- SW1需要让SW2知道该帧是VLAN 10的一部分,以便在接收到该帧之后,SW2将只将该帧发送到VLAN 10,而不发送到VLAN 20。因此,如②所示,在发送帧之前,SW1将一个VLAN标头添加到原始的以太网帧中。
- 当SW2接收到帧时,它知道该帧属于VLAN 10,然后,SW2删除VLAN标头,将原始帧从属于VLAN 10的端口(即Fa0/1,Fa0/2)转发出去。

图1-5 两台交换机之间的VLAN Trunk |
---|
802.1Q和ISL VLAN中继协议
多年来,Cisco支持两种不同的中继协议(trunking protocol):内部交换链路(ISL,Inter-Switch Link)和IEEE 802.1Q。
早在802.1Q出来之前Cisco就创建了ISL,部分原因是IEEE还没有定义VLAN trunking 标准。多年以后,IEEE才完成关于802.1Q 标准化工作,其标准定义了一种不同的中继方式。今天,802.1Q变成了主流协议,Cisco甚至在新出的交换机系统中都不支持ISL,包括在本书的示例中使用的2960型交换机。
虽然ISL 和802.1Q 都使用VLAN ID来标记每一帧,但是细节有所不同。如图1-6 的顶部所示,在原始帧的以太网报头中插入一个额外的4字节的802.1Q VLAN报头。在802.1Q报头里的字段中,只有12位VLAN ID字段与本书讨论的主题有关。这个12位字段理论上最多支持212(=4096)个VLANs,但实际上最多支持4094个VLANs。(802.1Q和ISL都使用12位来标记VLAN ID,并使用两个保留值[0和4095]。)

图1-6 802.1Q Trunking |
---|
Cisco交换机将VLAN ID(1-4094)的范围分为两个范围:正常范围和扩展范围。
所有交换机都可以使用正常范围的VLAN ID,其值从1到1005。只有一些交换机可以扩展范围的VLAN ID,其值从1006到4094。使用扩展范围的VLAN的规则取决于VLAN中继协议(VTP,VLAN Trunking Protocol)的配置。
802.1Q 还在每条trunk上定义一个特殊的VLAN ID作为native VLAN(本征VLAN,默认使用VLAN 1)。根据定义,802.1Q 不向native VLAN中的帧添加802.1Q报头。当trunk另一端的交换机接收到的帧,没有802.1Q报头,则交换机就知道该帧属于native VLAN。注意,由于这种行为,两个交换机必须就哪个VLAN是native VLAN达成一致。
802.1Q的native VLAN还有个有趣的功能,可以支持不理解trunk的设备。例如,一个Cisco交换机可以连接到一个不理解802.1Q trunk的交换机,则可以在native vlan中发送帧,这意味着该帧没有trunk头,以便其他交换机能够理解该帧。
本征VLAN的概念为交换机提供了至少在单个VLAN(即native VLAN)中传递流量的能力,这允许将一些基本功能(如telnet的可达性)加入到交换机中。
在VLAN之间转发数据
在一个包含许多个VLAN的园区局域网中,所有设备仍然希望能够与其他设备进行交互,这导致了VLAN间转发数据的概念。
基于第二层逻辑转发数据的局域网交换机通常被称为第二层交换机(Layer 2 switch),但有一些有着更多的功能,使用由第三层协议定义的附加逻辑来完成一些功能,比如路由器,被称为多层交换机(multilayer switch),或三层交换机(Layer 3 switch)。
使用路由器在VLAN间路由

图1-7 第二层交换机不在VLAN之间路由 |
---|
为了不分散注意,图中的子网和VLAN使用同一个编号。注意子网号不必与VLAN号相同。
图1-7 显示的交换机就像被中间打断一样,以强调二层交换机不会在两个VLAN之间转发数据。但是整个网络需要支持流量可以进出每一个VLAN,此功能可由路由器实现。
因此,网络是在两个VLAN之间路由三层数据包,而不是直接在两个VLAN之间交换二层以太网帧。
例如,图1-8 显示了由路由器来完成在两个子网之间路由IP数据包的工作。现在,路由器R1用一个LAN物理接口连接到交换机并分配给VLAN 10,另一个接口连接到交换机并分配给VLAN 20。

图1-8 通过两个物理接口,实现两个VLAN之间的路由 |
---|
从第三层的角度看,Fred将IP包发送到它的默认路由器(R1),R1将包从另一个接口(F0/1)路由到Betty所在的子网。虽然设计可行,但它使用了太多的物理接口(每个VLAN一个)。
一个更便宜(也更受欢迎)的选项是在交换机和路由器之间使用一条VLAN中继(VLAN trunk),只需要路由器和交换机之间的一条物理链路,即可以支持所有VLAN。Trunking可以在选择支持它的任意两个设备之间工作:两台交换机之间、路由器和交换机之间,甚至服务器硬件和交换机之间。
图1-9 显示了这样的设计思想,用VLAN trunking代替了每个VLAN的单独连接。

图1-9 在路由器上使用一条Trunk,实现两个VLAN之间的路由 |
---|
因为路由器有一条单独的物理链路连接到LAN交换机,所以这种设计有时被称为“单臂路由”(router-on-a-stick)。
请注意“在VLAN间路由”在字面上并不正确,因为它指的是路由包(第3层的概念)和VLAN(第2层的概念)。因此,其真实含义是:在3层子网之间路由3层数据包,每一个子网都映射到一个2层VLAN。
使用三层交换机来路由包
使用物理的路由器来路由数据包,即便使用单臂路由(router-on-a-stick),仍然有一个重要的问题:性能(performance)。物理链路的比特数设置了上限,而价格较低的路由器往往功能较弱,而且可能无法每秒转发足够多的数据包(pps,packets per second),以满足流量需求。
最终的解决方案是将路由功能转移到局域网交换机硬件中。供应商很久以前就开始将他们的第二层LAN交换机的硬件和软件特性,与他们的第三层路由器结合在一起,创造了名叫三层交换机(Layer 3 switch,也称multilayer switch)的产品。三层交换机可以配置为仅支持二层功能,也可以配置为同时支持第二层交换和第三层路由。
今天,许多大中型企业园区的局域网使用三层交换机在校园内的子网(VLANs)之间路由数据包。图1-10 精确地显示了这个概念。

图1-10 多层交换机:第2层交换和第3层路由包含在一台设备中 |
---|
VLAN和VLAN Trunking配置和验证
Cisco交换机默认上电即可工作。但是,如果您想使用VLAN功能,则需要配置。
本章将VLAN配置细节分为两个部分。第一部分介绍如何配置access接口,这些接口是不使用VLAN中继的交换机接口。第二部分介绍如何配置使用VLAN trunking的接口。
创建VLAN,给接口分配访问VLAN
为了转发特定VLAN中的帧,必须将Cisco交换机配置,让其相信VLAN存在。另外,交换机必须有分配给VLAN的非中继接口(即访问接口,access interfaces)或支持VLAN的中继接口。
访问接口的配置:
- 配置VLAN步骤如下:
- 在全局配置模式下,命令
vlan vlan-id
,创建VLAN,并带用户到VLAN配置模式下。 - (可选)在VLAN配置模式下,使用命令
name name
列出VLAN的名称,如果没有修改过,那VLAN名称为VLANZZZZ,其中ZZZZ是四位十进制的VLAN ID。
- 在全局配置模式下,命令
- 对于每一个访问接口,步骤如下:
- 使用全局配置模式下,命令
interface type number
,带用户到接口配置模式。 - 使用接口配置模式下,命令
switchport access vlan id-number
,指定接口的VLAN号。 - (可选)在接口配置模式下,命令
switchport mode access
,将接口配置为接入模式。
- 使用全局配置模式下,命令
术语default VLAN指的是命令switchport access vlanvlan-id
上的缺省设置,该缺省设置为VLAN ID 1。换句话说,默认情况下,每个端口都被分配给访问VLAN 1。
VLAN配置举例1:VLAN全套配置
图1-11 显示了在这个例子中,使用的网络有一台局域网交换机(SW1)和各有两台主机的三个VLAN(1、2和3)。

图1-11 一台交换机和三个VLAN的网络 |
---|
示例1-1 配置VLAN和给接口分配VLAN
SW1# show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- ---------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/10, Fa0/11,Fa0/12
Fa0/13, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/20
Fa0/21, Fa0/22, Fa0/23, Fa0/24
Gi0/1, Gi0/2
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
! Above, VLANs 2 and 3 do not yet exist. Below, VLAN 2 is added, with name Freds-vlan, with two interfaces assigned to VLAN 2.
SW1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)# vlan 2
SW1(config-vlan)# name Freds-vlan
SW1(config-vlan)# exit
SW1(config)# interface range fastethernet 0/13 - 14
SW1(config-if)# switchport access vlan 2 将端口分配到这个VLAN2中
SW1(config-if)# switchport mode access 告诉交换机只允许端口为接入端口模式
SW1(config-if)# end
! Below, the show running-config command lists the interface subcommands on
! interfaces Fa0/13 and Fa0/14.
SW1# show running-config
! Many lines omitted for brevity
! Early in the output:
vlan 2
name Freds-vlan
!
! more lines omitted for brevity
interface FastEthernet0/13
switchport access vlan 2
switchport mode access
!
interface FastEthernet0/14
switchport access vlan 2
switchport mode access
!
SW1# show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/10, Fa0/11, Fa0/12
Fa0/15, Fa0/16, Fa0/17, Fa0/18
Fa0/19, Fa0/20, Fa0/21, Fa0/22
Fa0/23, Fa0/24, Gi0/1, Gi0/2
2 Freds-vlan active Fa0/13, Fa0/14
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
SW1# show vlan id 2
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
2 Freds-vlan active Fa0/13, Fa0/14
VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
2 enet 100010 1500 - - - - - 0 0
Remote SPAN VLAN
----------------
Disabled
Primary Secondary Type Ports
------- --------- ----------------- ----------------------------------------—
曾几何时,除了以太网协议,还有其他的局域网协议,光纤分布式数据接口(FDDI,Fiber Distributed Data Interface)和令牌环很常见,并具有许多优越的功能,因此,将FDDI或令牌环桥接到以太网局域网是一个常见的需求。
当今Catalyst OS系统预留以太网VLAN ID 1002-1005,用来连接桥接FDDI或令牌环(毕竟使用路由太贵而且性能不足)。后来,管理这个过程的代码仍然留在IOS SX软件中,因为它与其他VLAN代码紧密绑定,无法删除。今天,这些VLAN仍然是保留的。 但在最新的Cisco Nexus交换机中,新的软件平台不包含任何遗留代码,因此没有这个限制。
VLAN配置举例2:VLAN配置的简短化
注意到,SW1开始并不知道没有VLAN3,因此自动创建VLAN。
示例1-2 更简短的VLAN配置(VLAN3)
`SW1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)# interface range Fastethernet 0/15 - 16
SW1(config-if-range)# switchport access vlan 3
% Access VLAN does not exist. Creating vlan 3
SW1(config-if-range)# ^Z
SW1# show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/10, Fa0/11, Fa0/12
Fa0/17, Fa0/18, Fa0/19, Fa0/20
Fa0/21, Fa0/22, Fa0/23, Fa0/24
Gi0/1, Gi0/2
2 Freds-vlan active Fa0/13, Fa0/14
3 VLAN0003 active Fa0/15, Fa0/16
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
VLAN中继协议
在展示更多的配置示例之前,我们还需要了解cisco协议和VLAN中继协议(VTP,VLAN Trunking Protocol,也称虚拟局域网干道协议)工具。VTP是Cisco交换机上的一个专用工具,它通告在交换机上配置的所有VLAN的消息,以便园区内所有其他交换机都能了解该VLAN。然而,由于种种原因,许多企业不选择使用VTP。
VTP模式有三种:服务器模式、客户端模式或透明模式,交换机使用其中一种。当交换机希望使用VTP来动态通告VLAN配置信息时,它可以使用VTP服务器模式,也可以使用客户端模式。然而,交换机使用透明模式来禁用VTP。
本书中的所有示例中的交换机,都被设置为VTP透明模式(全局命令vtp mode transparent
),或者VTP禁用模式(全局命令vtp mode off
)。
在实际工作中,如果您看到VLAN的异常结果,请使用命令show VTP status
检查VTP状态。如果你的交换机使用VTP服务器或客户端模式,你会发现:
- 服务器交换机只能在标准范围内配置VLAN(1-1005)
- 客户端交换机无法配置VLAN
- 服务器和客户机都可能从其他交换机学习新的VLAN,也可能看到自己的VLAN被删除
- 命令
show running-config
不再列出vlan
命令
不需要修改任何交换机上的VTP设置,除非你知道VTP是如何工作的。
配置VLAN Trunking
如果我们只是在两台Cisco交换机之间静态地配置中继(trunk),那可能非常简单,只需要在链路上的两端输入接口子命令switchport mode trunk
。
然而,Cisco交换机上的中继配置包含更多的选项,包括动态地协商各种关于trunking的设置。配置可以预先定义,或者告诉交换机协商设置,如下所示:
- 中继类型(The type of trunking):IEEE 802.1Q,ISL,或者协商使用一种;
- 管理模式(The administrative mode):使用中继,不使用中继,协商
首先,考虑中继的类型。支持ISL和802.1Q的Cisco交换机可以使用动态中继协议(DTP,Dynamic Trunking Protocol)协商使用哪种类型。如果两个交换机同时支持两个协议,它们就使用ISL;否则,它们使用双方都支持的协议。
今天,许多Cisco交换机不支持旧的ISL中继协议。支持这两种类型中继的交换机使用接口子命令switchport trunk encapsulation {dot1q | isl | negotiate}
来配置类型或允许DTP协商类型。
根据本地交换机端口的管理模式,DTP还可以协商链路上的两个设备是否完全同意trunk。管理模式(administrative mode)是指判断是否应该使用中继的配置设置。每个接口也有一个运行模式(operational mode),它指的是当前在接口上发生的事情,并且可能是由DTP与其他设备协商选择后决定的。Cisco交换机使用接口子命令switchport mode
来定义管理trunk模式,如表1-2所示。
例如,考虑图1-12,两台交换机使用一条千兆以太网链路作为trunk。在这种情况下,默认情况下不会动态形成trunk,因为这两个2960型交换机都默认为dynamic auto
的管理模式,这意味着双方都不会启动trunk协商过程。通过将一台交换机更改为使用启动自协商的dynamic desirable
模式,交换机协商使用trunk,仅只是802.1Q。
示例1-3 显示这两台交换机,并使用默认配置,不会发生中继。
SW1# show interfaces gigabit 0/1 switchport
Name: Gi0/1
Switchport: Enabled
Administrative Mode: dynamic auto 默认管理模式设置
Operational Mode: static access
Administrative Trunking Encapsulation: dot1q唯一支持的中继类型(802.1Q)
Operational Trunking Encapsulation: native
Negotiation of Trunking: On
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
Voice VLAN: none
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
Voice VLAN: none
Administrative private-vlan host-association: none
Administrative private-vlan mapping: none
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk Native VLAN tagging: enabled
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: none
! Note that the next command results in a single empty line of output.
SW1# show interfaces trunk
SW1#
在一个同时支持ISL和802.1Q的交换机上,
Administrative Trunking Encapsulation
值在默认情况下会列出negotiate
,表示封装的类型是可协商的。最后,运行的trunk类型为native
,这是对802.1Q 本征VLAN的引用。
再看示例1-4 SW1请求交换机主动开始双方协商,而不是等待协商。接口会重启,传输方式从access变成了trunk。
示例1-4 dynamic auto到dynamic desirable,SW1的变化
SW1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)# interface gigabit 0/1
SW1(config-if)# switchport mode dynamic desirable
SW1(config-if)# ^Z
SW1#
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/1, changed state to
down
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/1, changed state to
up
SW1# show interfaces gigabit 0/1 switchport
Name: Gi0/1
Switchport: Enabled
Administrative Mode: dynamic desirable
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: On
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
! lines omitted for brevity
! The next command formerly listed a single empty line of output; now it lists
! information about the 1 operational trunk.
SW1# show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gi0/1 desirable 802.1q trunking 1
Port Vlans allowed on trunk
Gi0/1 1-4094
Port Vlans allowed and active in management domain
Gi0/1 1-3
Port Vlans in spanning tree forwarding state and not pruned
Gi0/1 1-3
SW1# show vlan id 2
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
2 Freds-vlan active Fa0/13, Fa0/14, G0/1
VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
2 enet 100010 1500 - - - - - 0 0
Remote SPAN VLAN
----------------
Disabled
Primary Secondary Type Ports
------- --------- ----------------- ----------------------------------------—
表1-3 列出了trunking管理模式和由设置产生的预期运行模式(trunk或access)的组合。该表在左侧列出了链路一端使用的管理模式,顶部列出了另一端交换机使用的管理模式。
思科建议禁用大多数端口的trunk协商(trunk negotiation),以获得更好的安全性。大多数交换机上的端口将用于连接用户。根据习惯,可以使用接口子命令
switchport nonegotiate
完全禁用DTP协商。
实现连接到话机的接口
下一个主题是一个奇怪的主题,至少在访问链路和主干链路中是这样。
在IP电话的世界中,话机通过IP地址,使用IP数据包来收发语音。要实现这一功能,交换机的以太网端口表现出双重性,既像接入(access)端口,又像中继(trunk)端口。
数据和语音VLAN的概念
在IP电话出现之前,个人电脑和话机是分离的,话机使用UTP电缆连接到语音设备,通常称为语音交换机(voice switch)或专用分支交换机(PBX,private branch exchange)。图1-13 显示了这个想法。

图1-13 在IP电话之前:PC和电话,各一根电缆,连接到两个不同的设备 |
---|
术语IP电话(IP telephony)指的是组网里面的一个分支,在这个分支中,话机使用IP包来发送和接收语音,这些语音由IP包的数据部分中的比特表示。这些新的IP电话没有通过电缆直接连接到语音交换机,而是将内置于话机中的以太网端口,使用以太网电缆连接到IP网络。然后,电话通过IP网络与软件进行通信,这些软件取代了电话设置和PBX的其他功能。
目前cisco公司生产的执行这种IP电话控制功能的产品被称为思科统一通信管理(Cisco Unified Communications Manager)。
从使用已经安装的电话电缆到新IP电话的迁移,给办公室造成了问题。特别是:
- 老式的非ip电话使用的是一种UTP电缆,通常不支持100-Mbps或1000-Mbps以太网。
- 大多数办公室都有一条从配线间到每个办公桌的UTP电缆,但现在有两台设备(PC和新的IP电话)都需要从桌面到配线间的电缆。
- 在每个桌子上安装一根新电缆会很贵,而且你需要更多的交换机端口。
为了解决这个问题,Cisco在每部话机中都嵌入了一个小型三端口交换机。
图1-14 显示了基本的布线,其中PC通过一根跳线(patch cable)连接到话机内部的交换机端口,话机连接到布线室(wiring closet)。

图1-14 将PC、IP电话、交换机用电缆连接 |
---|
现在每个访问端口都有两个设备。此外,思科在IP电话设计方面的最佳实践告诉我们,要将电话放在一个VLAN中,而将PC放在另一个VLAN中。为了实现这一点,交换机端口表现有点像access(用于PC的流量),有点像trunk(用于电话的流量),因此定义了两个VLAN,如下所示:
- 数据VLAN(Data VLAN):与access端口上的access VLAN具有相同的思想和配置,但定义为该链路上的VLAN,用于转发连接话机的设备(通常是用户的PC)的流量。
- 语音VLAN(Voice VLAN):定义为在链路上用于转发电话流量的VLAN。此VLAN中的流量通常使用802.1Q标头进行标记。
图1-15 说明了这种设计,在支持IP电话的访问端口上有两个VLAN。

图1-15 一种LAN设计,数据在VLAN 10中,电话在VLAN 11中 |
---|
数据和语音VLAN的配置和验证
一旦知道了Data VLAN ID和Voice VLAN ID,配置一个交换机端口来支持IP电话就很容易了。一旦配置好了,用show
命令来理解它们可能是一个挑战。该端口在许多方面表现像access端口。但是,在大多数配置选项中,语音帧(voice frame)使用802.1Q报头,因此该链接支持传输两个VLAN中的帧。但是这会产生一些不同的show
命令输出。
示例1-5 给出了一个示例,其中四个交换端口F0/1-F0/4与图1-15 相匹配。
示例1-5 在连接话机的端口上配置Data VLAN 和Voice VLAN
SW1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#vlan 10
SW1(config-vlan)#vlan 11
SW1(config-vlan)#interface range FastEthernet0/1 - 4
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 10
SW1(config-if)#switchport voice vlan 11
SW1(config-if)#^Z
SW1#
下面的列表详细说明了配置步骤,以便更容易地回顾和学习:
- 全局配置模式命令
vlan vlan-id
,来创建Data VLAN和Voice VLAN。 - 配置data VLAN就像一个access VLAN:
- 在全局配置模式下命令
interface type number
,进入接口配置模式。 - 在接口配置模式下命令
switchport access vlan id-number
,定义data VLAN。 - 在接口配置模式下命令
switchport mode access
,让该端口始终在access模式下工作(即not trunk)。
- 在全局配置模式下命令
- 在接口配置模式下使用
switchport voice vlan id-number
命令来设置Voice VLAN ID。
示例1-6 中进行结果验证。
示例1-6 验证Data VLAN(Access VLAN))和Voice VLAN
SW1# show interfaces FastEthernet 0/4 switchport
Name: Fa0/4
Switchport: Enabled
Administrative Mode: static access
Operational Mode: static access
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: native
Negotiation of Trunking: Off
Access Mode VLAN: 10 (VLAN0010)
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
Voice VLAN: 11 (VLAN0011)
! The rest of the output is omitted for brevity
示例1-7 允许的VLAN的列表和激活状态的VLAN的列表
SW1# show interfaces trunk
SW1# show interfaces F0/4 trunk
Port Mode Encapsulation Status Native vlan
Fa0/4 off 802.1q not-trunking 1
Port Vlans allowed on trunk
Fa0/4 10-11
Port Vlans allowed and active in management domain
Fa0/4 10-11
Port Vlans in spanning tree forwarding state and not pruned
Fa0/4 10-11
这些端口更像是accesss端口,而不是trunk端口。该命令大胆声明了这些端口
Operational Mode: static access
。该命令甚至显示了对voice frame打802.1Q标签的底层操作。而且端口没有出现在trunk 列表中。
F0/4端口的状态虽然为非中继(not-trunking),但是允许VLAN 10和11。 通常情况下,在access端口上,
Vlans allowed on trunk
一栏只会输出一个access VLAN。
总结:交换机上的IP电话端口
这个关于IP电话和交换机配置的简短主题似乎包含了许多曲折和琐事,但它确实做到了。最重要的是要记住以下几点:
- 首先将这些端口配置为一个普通的access端口:将其配置为一个静态访问端口(static access port)并为其分配一个access VLAN。
- 再添加一个命令
switchport voice vlan id-number
来定义语音VLAN。 - 在命令
show interfaces type number switchport
的输出中,查找Voice VLAN ID。 - 在命令
show interfaces type number trunk
的输出中,查找Voice VLAN ID和Data(access)VLAN ID。 - 不要期望通过命令
show interfaces trunk
查看正在运行的trunk列表中的端口。
本章回顾
命令总结

图1-16 VLAN相关命令总结 |
---|