《CCIE路由和交换认证考试指南(第5版) (第1卷)》——2.2节VLAN

2.2 VLAN
在以太网LAN中,一台设备发送的广播数据包可以被一组设备收到,这些设备所构成的集合就是一个广播域(Broadcast Domain)。在没有虚拟LAN(VLAN)概念的交换机上,交换机只是将所有广播向除收到该数据帧的接口外的所有接口转发。因此,一个交换机上的所有接口都属于相同的广播域。如果交换机连接了其他的交换机或者集线器,那些交换机和集线器上的接口也都在相同的广播域中。

VLAN是为了管理而定义的,是指属于相同广播域的交换机接口子集。接口可被分组到一台和多台互连交换机上的不同VLAN中。通过创建多个VLAN,交换机能够创建多个大小有限的广播域。如此,一个VLAN中的设备所发送的广播,只能被转发到相同VLAN中的其他设备上;而不会被转发给其他VLAN中的设备。

对于VLAN和IP的设计来说,最佳方案是将VLAN和IP子网一一对应起来。简单来说,一个VLAN中的设备通常也在一个相对应的IP子网中。此外,还可以将多个子网放在一个VLAN中,使用路由器上的辅助IP地址实现VLAN和子网间的路由。最后,CCIE笔试更关注熟练使用技术的能力,所以本书假设一个VLAN使用一个子网,除非有特别说明。

二层交换机在属于相同VLAN的设备之间转发数据帧,但不会为属于不同VLAN中的两台主机转发数据帧。为了转发两个VLAN之间的数据,需要多层交换机(MLS)或路由器的介入。第6章将详述MLS。

2.2.1 VLAN配置
在运行Cisco IOS的交换机上,VLAN主要由其数值ID进行标识,这是在创建、修改或删除VLAN时唯一的必需参数。工程师可以为VLAN分配名称,以更好地进行标识;只是在CLI中能够用VLAN名代替VLAN ID的地方并不多。VLAN也有运行状态:可为活跃,这是默认状态,也可为休眠。休眠的VLAN是暂停的——也就是这个VLAN存在但并不工作。在休眠VLAN中的Access接口不能实现通信,会丢弃所有数据帧,这与属于不存在的VLAN的接口类似。将休眠VLAN变为活跃状态也就恢复了该VLAN中所有接口的正常通信。

在Cisco交换机网络中,配置VLAN只需要几个简单的步骤。

步骤1  创建VLAN,可选地配置其名称和状态。

步骤2  为该VLAN关联正确的接口。

然而难点在于后台任务根据Cisco VLAN Trunk协议(VLAN Trunking Protocol,VTP)的配置有所不同,以及使用正常ID范围的VLAN还是扩展ID范围的VLAN。

1.使用VLAN数据库模式创建VLAN
考虑例2-1所示案例,其中显示了在VLAN数据库配置模式下创建VLAN的基本方式。此配置模式在现在的交换机上是过时的,甚至已无法支持,但工程师仍可以在较老的Catalyst平台,以及安装了交换模块的ISR和ISR G2路由器上使用。工程师可以使用VLAN数据库配置模式创建VLAN,对每个VLAN进行基本的管理性设置,以及验证VTP配置信息。只有正常范围(VLAN 1~1005)的VLAN可在此模式中配置,VLAN配置由名为vlan.dat的文件存储在Flash中。通常,工程师应该尽可能避免使用VLAN数据库配置模式,也希望读者将来不会需要使用此模式;然而,仍然有一些交换机,甚至是近期部署在网络中的路由器,不支持这种在全局配置模式中配置VLAN的新方式。

例2-1展示了VLAN数据库的配置模式,给出了图2-1中Switch3上的配置。示例中创建了VLAN 21和VLAN 22。

例2-1 在VLAN数据库模式中创建VLAN——Switch3

! Below, note that Fa0/12 and Fa0/24 are missing from the list, because they have
! dynamically become trunks, supporting multiple VLANs.

Switch3# 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/13
                           Fa0/14, Fa0/15, Fa0/16, Fa0/17
                           Fa0/18, Fa0/19, Fa0/20, Fa0/21
                           Fa0/22, Fa0/23

! Below, "unsup" means that this 2950 switch does not support FDDI and TR

1002 fddi-default          act/unsup
1003 token-ring-default       act/unsup
1004 fddinet-default        act/unsup
1005 trnet-default         act/unsup

! Below, vlan database moves user to VLAN database configuration mode.
! The vlan 21 command defines the VLAN, as seen in the next command output
! ( show current ), VLAN 21 is not in the "current" VLAN list.

Switch3# vlan database
Switch3(vlan)# vlan 21
VLAN 21 added:
  Name: VLAN0021

! The show current command lists the VLANs available to the IOS when the switch
! is in VTP Server mode. The command lists the VLANs in numeric order, with
! VLAN 21 missing.

Switch3(vlan)# show current
 VLAN ISL Id: 1
   Name: default
   Media Type: Ethernet
   VLAN 802.10 Id: 100001
   State: Operational
   MTU: 1500
   Backup CRF Mode: Disabled
   Remote SPAN VLAN: No
! Lines omitted for brevity
! Next, note that show proposed lists VLAN 21. The vlan 21 command
! creates the definition, but it must be "applied" before it is "current".

Switch3(vlan)# show proposed
 VLAN ISL Id: 1
   Name: default
   Media Type: Ethernet
   VLAN 802.10 Id: 100001
   State: Operational
   MTU: 1500
   Backup CRF Mode: Disabled
   Remote SPAN VLAN: No

 VLAN ISL Id: 21
   Name: VLAN0021
   Media Type: Ethernet
   VLAN 802.10 Id: 100021
   State: Operational
   MTU: 1500
   Backup CRF Mode: Disabled
   Remote SPAN VLAN: No

! Lines omitted for brevity
! Next, you could apply to complete the addition of VLAN 21,
! abort to not make the changes and exit VLAN database mode, or
! reset to not make the changes but stay in VLAN database mode.

Switch3(vlan)# ?
VLAN database editing buffer manipulation commands:
 abort  Exit mode without applying the changes
 apply  Apply current changes and bump revision number
 exit   Apply changes, bump revision number, and exit mode
 no    Negate a command or set its defaults
 reset  Abandon current changes and reread current database
 show   Show database information
 vla-   Add, delete, or modify values associated with a single VLAN
 vtp   Perform VTP administrative functions.

! The apply command was used, making the addition of VLAN 21 complete.

Switch3(vlan)# apply
APPLY completed.
! A show current now would list VLAN 21.

Switch3(vlan)# vlan 22 name ccie-vlan-22
VLAN 22 added:
  Name: ccie-vlan-22

! Above and below, some variations on commands are shown, along with the
! creation of VLAN 22, with name ccie-vlan-22 .
! Below, the vlan 22 option is used on show current and show proposed
! detailing the fact that the apply has not been done yet.

Switch3(vlan)# show current 22
VLAN 22 does not exist in current database
Switch3(vlan)# show proposed 22
 VLAN ISL Id: 22

! Lines omitted for brevity
! Finally, the user exits VLAN database mode using CTRL-Z, which does
! not inherently apply the change. CTRL-Z actually executes an abort.

Switch3(vlan)# ^Z

2.使用配置模式将接口加入VLAN
要想使用VLAN,首先必须创建VLAN,之后再将交换机接口分配到VLAN中。例2-2展示了在Switch3上将接口与VLAN关联的方法。

注释:
在例2-1的最后,工程师还没有成功创建VLAN 22。但在例2-2中,假设VLAN 22已成功创建。

例2-2 分配接口到VLAN——Switch3

! First, the switchport mode access command configures respective interfaces for
! static access mode, and the switchport access vlan command assigns them into
! respective VLANs.

Switch3# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch3(config)# int fa 0/3
Switch3(config-if)# switchport mode access
Switch3(config-if)# switchport access vlan 22
Switch3(config-if)# int fa 0/7
Switch3(config-if)# switchport mode access
Switch3(config-if)# switchport access vlan 21
Switch3(config-if)# ^Z

! Below, show vlan brief lists these same two interfaces as now being in
! VLANs 21 and 22, respectively.

Switch3# show vlan brief

VLAN Name                Status   Ports
---- -------------------------------- ---------  -------------------------------
1   default              active    Fa0/1, Fa0/2, Fa0/4, Fa0/5
                            Fa0/6, Fa0/8, Fa0/9, Fa0/10
                            Fa0/11, Fa0/13, Fa0/14, Fa0/15
                            Fa0/20, Fa0/21, Fa0/22, Fa0/23
21   VLAN0021             active    Fa0/7
22   ccie-vlan-22           active    Fa0/3

! Lines omitted for brevity
! While the VLAN configuration is not shown in the running-config at this point,
! the switchport access command that assigns the VLAN for the interface is in the
! configuration, as seen with the show run int fa 0/3 command.

Switch3# show run int fa 0/3
interface FastEthernet0/3
 switchport access vlan 22
 switchport mode access

3.使用配置模式创建VLAN
至此,工程师已经在Switch3上创建了两个新VLAN(21和22),两个接口也属于正确的VLAN中。然而,所有基于Cisco IOS的较新交换机还能够使用其他方式创建VLAN,如例2-3所示,也就是使用配置模式。如果设备支持这种配置方式的话,这是工程师的首选,这也是配置扩展范围VLAN和私有VLAN的唯一方式。所有VLAN的设置都是在全局配置的vlan vlan-id配置部分进行配置。变更后的配置只有在工程师退出vlan模式后才会生效;这是在IOS CLI环境中,输入独立的命令后,变更并不会立即生效的少数情况之一。

例2-3 在配置模式中创建VLAN——Switch3

! First, VLAN 31 did not exist when the switchport access vlan 31 command was
! issued. As a result, the switch both created the VLAN and put interface fa0/8
! into that VLAN. Then, the vlan 32 global command was used to create a
! VLAN from configuration mode, and the name subcommand was used to assign a
! non-default name.

Switch3# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch3(config)# int fa 0/8
Switch3(config-if)# switchport mode access
Switch3(config-if)# switchport access vlan 31
% Access VLAN does not exist. Creating vlan 31
Switch3(config-if)# exit
Switch3(config)# vlan 32
Switch3(config-vlan)# name ccie-vlan-32
Switch3(config-vlan)# ^Z
Switch3# show vlan brief

VLAN Name                Status   Ports
---- -------------------------------- --------- -------------------------------
1   default              active   Fa0/1, Fa0/2, Fa0/4, Fa0/5
                           Fa0/6, Fa0/9, Fa0/10, Fa0/11
                           Fa0/13, Fa0/14, Fa0/15, Fa0/16
                           Fa0/17, Fa0/18, Fa0/19, Fa0/20
                           Fa0/21, Fa0/22, Fa0/23
21   VLAN0021             active   Fa0/7
22   ccie-vlan-22           active   Fa0/3
31   VLAN0031             active   Fa0/8
32   ccie-vlan-32           active

! Portions omitted for brevity

例2-3显示了如何使用switchport access vlan子命令创建VLAN,并分配接口给该VLAN。注意在例2-3中,show vlan brief的输出内容显示出接口Fa0/8在VLAN 31中。因为尚未给VLAN 32分配接口,例2-3的最后一行没有显示任何接口信息。

4.修改VLAN的操作状态
VLAN的状态——活跃或休眠——可以在vlan database和配置模式中进行控制。一个VLAN可通过两种方式休眠:在整个VTP域中使用全局方式,以及在一台交换机上使用本地方式,该方式并不会影响其所在VTP域中,其他交换机的状态。工程师可以在vlan database和配置模式中使用命令state suspend,可以在全局环境中让某个VLAN休眠。要在本地将某个VLAN休眠,也称为“本地关闭VLAN”,工程师可以使用shutdown命令,只能在VLAN配置模式中使用该命令。请勿混淆VLAN中的shutdown命令和interface Vlan模式下的shutdown命令,两者的含义不同,也没有任何关系(后者表示关闭一个SVI而不妨碍相应VLAN自身的操作)。工程师可以独立地配置全局和本地的VLAN状态,但若要让一个VLAN在一台交换机上正常工作,它在这台交换机上必须全局和本地都处于活跃状态。例2-4中进一步展示了VLAN操作状态的控制及相关命令的使用。

在大型网络中,VLAN的创建过程虽简单但费事。如果存在许多VLAN,并且存在于多个交换机上,相比于在每台交换机上手动配置VLAN,工程师还可以使用VTP分发VLAN配置信息给其余的交换机。VTP将在本章稍后进行讨论。

例2-4 修改VLAN的操作状态

! First, put the VLAN 21 to global suspended state in vlan database mode. The state
! will be propagated by VTP to all switches in the VTP domain if VTP is used.

Switch3# vlan database
Switch3(vlan)# vlan 21 state ?
 active  VLAN Active State
 suspend VLAN Suspended State
Switch3(vlan)# vlan 21 state suspend
VLAN 31 modified:
  State SUSPENDED
Switch3(vlan)# exit
APPLY completed.
Exiting....

! VLAN 21 will now be listed as suspended

Switch3# show vlan brief
VLAN Name                 Status   Ports
---- -------------------------------- --------- -------------------------------
1   default               active   Fa0/1, Fa0/2, Fa0/4, Fa0/5
                            Fa0/6,  Fa0/9, Fa0/10, Fa0/11
                            Fa0/13,  Fa0/14, Fa0/15, Fa0/16
                            Fa0/17,  Fa0/18, Fa0/19, Fa0/20
                            Fa0/21,  Fa0/22, Fa0/23
21   VLAN0021              suspended Fa0/7

! Portions omitted for brevity

! Now use the configuration mode to reactivate the VLAN

Switch3# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch3(config)# vlan 21
Switch3(config-vlan)# state active
Switch3(config-vlan)# exit
Switch3(config)# do show vlan brief
VLAN Name                 Status   Ports
---- -------------------------------- --------- -------------------------------
1   default               active   Fa0/1, Fa0/2, Fa0/4, Fa0/5
                            Fa0/6, Fa0/9, Fa0/10, Fa0/11
                            Fa0/13, Fa0/14, Fa0/15, Fa0/16
                            Fa0/17, Fa0/18, Fa0/19, Fa0/20
                            Fa0/21, Fa0/22, Fa0/23
21 VLAN0021               active   Fa0/7

! Portions omitted for brevity

! To locally suspend a VLAN, enter its configuration context and issue
! the shutdown command, then exit. Alternatively, you may also use the
! shutdown vlan global level configuration command that has exactly
! the same effect. In the VLAN listing, the VLAN 21 will be reported as
! active in the VTP domain on other switches, yet locally shutdown.
! It is also possible to both use the state suspend to suspend the VLAN
! via VTP globally, and shutdown to also have it locally shut down.

Switch3(config)# vlan 21
Switch3(config-vlan)# shutdown
Switch3(config-vlan)# exit
Switch3(config)# do show vlan brief
VLAN Name                 Status   Ports
---- -------------------------------- --------- -------------------------------
1   default               active   Fa0/1, Fa0/2, Fa0/4, Fa0/5
                            Fa0/6, Fa0/9, Fa0/10, Fa0/11
                            Fa0/13, Fa0/14, Fa0/15, Fa0/16
                            Fa0/17, Fa0/18, Fa0/19, Fa0/20
                            Fa0/21, Fa0/22, Fa0/23
21   VLAN0021              act/lshut Fa0/7

! Portions omitted for brevity

! To reactivate the locally shut VLAN, enter the no shutdown command in vlan 21
! context, or more straightforward, enter the no shutdown vlan 21 command

Switch3(config)# no shutdown vlan 21
Switch3(config)# do show vlan brief

VLAN Name                Status   Ports
---- -------------------------------- --------- -------------------------------
1   default              active   Fa0/1, Fa0/2, Fa0/4, Fa0/5
                           Fa0/6, Fa0/9, Fa0/10, Fa0/11
                           Fa0/13, Fa0/14, Fa0/15, Fa0/16
                           Fa0/17, Fa0/18, Fa0/19, Fa0/20
                           Fa0/21, Fa0/22, Fa0/23
21   VLAN0021             active   Fa0/7

! Portions omitted for brevity

2.2.2 私有VLAN
工程师在设计VLAN的时候可能有许多目标。在现如今的许多环境中,最终处于同一个VLAN的设备只是由设备线缆的物理接入位置决定的。安全性是使用VLA的另一个动机:不同VLAN中的设备无法窃听对方的广播和其他可能的通信。此外,将主机分割到不同的VLAN和子网中,并要求在子网之间使用路由器或多层交换机,因为这些类型的设备通常能够提供更强大的安全功能。

无论工程师出于何种原因,将设备分组到不同的VLAN,好的设计方式通常要求工程师为每个VLAN使用一个IP子网。然而在有些情况下,将设备分割到许多小VLAN中以增加安全性的需求,与节省可用IP子网的目标相互冲突。RFC 5517中描述的Cisco私有VLAN特性解决了该问题。通过使用私有VLAN,交换机能够分离接口,就好像它们位于不同的VLAN中,但同时这些接口共同属于同一个子网。

私有VLAN最常见的部署是在服务提供商(SP),SP使用私有VLAN技术来提供多租户服务。SP可以只部署一台路由器和一台交换机,然后将多个客户的设备连接到交换机上。SP可以对整个大楼只使用一个子网,通过使用私有VLAN,将不同客户的交换机接口相互隔离,使其不能直接进行通信,并使用一台路由器和交换机支持所有客户。

从概念上讲,私有VLAN是一种机制,将特定VLAN划分成任意数量的不会相互重叠的子VLAN,或二级VLAN(Secondary VLAN)。划分过程对于外部网络是不可见的,外部网络只能看到原始的VLAN,称为主VLAN(Primary VLAN)。私有VLAN划分的一个重要结果是,从外部看主VLAN继续使用与原始VLAN相同的VLAN ID和IP子网。在内部,所有二级VLAN共用一个IP子网,而每个二级VLAN都使用不同且唯一的VLAN ID与主VLAN相互关联。因此,可以将私有VLAN描述为一个或多个二级VLAN的集群,展示给外部的是一个主VLAN。这与BGP联盟不同,BGP联盟中多个内部子AS作为单个AS展示给外部对等体。考虑图2-2所示的拓扑。

首先考虑一台交换机上的私有VLAN行为。之后将讨论如何通过Trunk将私有VLAN扩展到多个交换机。

二级VLAN可以分为两种类型:团体(Community)VLAN和隔离(Isolated)VLAN。属于相同团体VLAN的接口之间可以直接互相通信,但不能与其他VLAN中的接口直接通信。这种行为与普通VLAN相似。一个主VLAN可以与多个团体VLAN关联,每个团体VLAN代表一组设备,它们之间可以直接通信,但不能与其他组的设备直接通信。

另一方面,属于隔离VLAN的接口之间既不能互相通信,也不能与其他VLAN中的接口通信。一个主VLAN最多可以关联一个隔离VLAN,一个主VLAN关联多个隔离VLAN并没有什么意义。

一个主VLAN可以与零个或多个团体VLAN,以及最多一个隔离VLAN相关联。无论是团体VLAN还是隔离VLAN,一个二级VLAN必须只与一个主VLAN相关联。

举例来说,假设有一栋公寓楼需要完全联网,由工程师负责配置网络设备。最简单的方式是将所有公寓都连接到一台交换机,并为所有接口分配一个VLAN,比如VLAN 100.统一使用IP子网192.168.100.0/24。VLAN中的所有工作站共享该IP地址空间,并且它们之间可以直接通信;它们使用同一子网中的网关IP地址,比如192.168.100.254,来访问其他网络。然而,这样的网络有明显的安全性问题——独立公寓中的用户不可控也不能被信任。一个公寓住户的误操作,或者他使用了被感染的计算机,就可以对整个VLAN造成破坏。因此要求独立的公寓互相隔离,但仍继续使用之前的VLAN 100、相同的IP子网以及相同的默认网关。这可以通过创建一个新的二级隔离VLAN来实现,比如VLAN 199,将其与原始的VLAN 100相关联(使VLAN 100成为主VLAN),并将所有连接公寓的Access接口分配到隔离VLAN 199中。这样,独立的公寓之间将会相互隔离,但它们仍继续使用相同的IP地址空间和默认网关。外部世界将看不到任何区别。

然而生活并没有那么简单。有些用户可能在一段时间后找到工程师,要求同其他一些用户之间建立直接的可见性,因为他们希望共享文件、流媒体视频或玩网络游戏。可能会有许多相似的用户组希望他们之间能够建立相互的可见性,同时保持与其他用户的隔离。例如,考虑有3组独立的用户要求在楼内建立他们之间相互的连通性。显然,这些用户分别组成了3个团体,一个团体中的用户相互之间拥有完全的可见性,同时保持与其他团体以及与不属于任何团体的用户相互隔离。

能够满足这个需求的做法是创建3个二级团体VLAN,每个团体对应一个VLAN,并将每个团体中的成员分配到相同的团体VLAN中。在这个案例中,工程师可以为第一个组分配团体VLAN 101,为第二个团体分配团体VLAN 102,为其他组分配团体VLAN 103。二级团体VLAN 101~103与主VLAN 100相关联,共享IP地址空间和默认网关。所有其他的公寓仍属于隔离VLAN 199,保持完全隔离。

根据交换机接口所属二级VLAN的类型,可以将接口称为团体接口或隔离接口。在之前的例子中,配置在VLAN 101~103中的交换机接口是团体接口,配置在VLAN 199中的交换机接口是隔离接口。注意以上提及的接口都不在主VLAN 100中。团体接口和隔离接口都像正常的Access接口一样操作——从技术上说,它们属于单个VLAN且它们不标记数据帧。

根据上述的通信规则,某个团体VLAN中的主机只能与相同团体VLAN中的其他主机直接通信;某个隔离VLAN中的主机不能与任何主机直接通信。也就是说,到现在为止它不可能与私有VLAN外部的网络通信,也不能访问共享资源,比如网络打印机、存储或服务器。显然,这种VLAN的可用性是非常值得商榷的。因此,必须想办法定义一个特殊接口,使它能够与某个主VLAN下的任何二级VLAN的任何成员进行通信。连接到这种接口的设备——路由器、服务器、NAS、打印机等——可以被某个主VLAN下的所有二级VLAN中的所有主机访问,无论二级VLAN类型如何。

在私有VLAN的术语中,这种接口称为杂合接口。杂合接口不与任何具体的二级VLAN关联,而是与对应主VLAN关联。连接到杂合接口的设备可以与这个主VLAN关联的所有二级VLAN中的设备通信,反之亦然。与某个主VLAN关联的二级VLAN中的设备也可以与这个主VLAN中的所有杂合接口通信。如果主VLAN中有多个杂合接口,它们之间也可以互相通信。杂合接口的操作方式也和Access接口相似,它也不打标签。

在之前的示例中,如果默认网关192.168.100.254是外部路由器,工程师就会将它连接到配置有私有VLAN交换机的杂合接口上。此设置将允许VLAN 101~103和VLAN 199中的主机通过这台路由器与其他网络进行通信。

如果使用私有VLAN,一台交换机上的通信规则可以总结如下:

某个团体VLAN中的接口(即团体接口)可以与所有相同团体中的其他接口,以及相应主VLAN中的所有杂合接口进行通信;
某个隔离VLAN中的接口(即隔离接口)可以与相应主VLAN中的所有杂合接口进行通信;
某个主VLAN中的接口(即杂合接口)可以与同一主VLAN中的所有其他杂合接口,以及所有与此主VLAN关联的二级VLAN中的所有接口进行通信。
在一组交换机上扩展私有VLAN的操作是非常简单的。最根本的目标就是在增加私有VLAN范围的同时,保留其定义的行为及限制。某个团体VLAN中的接口应该可以与同一团体VLAN中的其他接口,以及所有交换机上相应主VLAN中的所有杂合接口进行通信。某个主VLAN中的杂合接口应该可以与这个主VLAN中的所有其他杂合接口,以及所有交换机上关联的所有二级VLAN中的所有接口进行通信。由于这些要求默认假设一个主VLAN或二级VLAN接口收到的数据帧可以通过Trunk接口转发到其他交换机上,因而建立了另一个通信规则:杂合、团体或隔离接口上收到的数据帧总是可以通过Trunk接口转发。

显然,如果主/二级VLAN、它们的ID、类型以及关联关系,在所有交换机(假设它们都支持私有VLAN特性)上的配置都相同的话,在它们针对某个VLAN建立了成员关系后,它们对数据帧会使用一致的操作行为。因为交换机之间的数据帧是通过Trunk接口传输的,所以了解如何在私有VLAN接口收到的数据帧上进行标记是很重要的。

如果交换机在团体或隔离接口上收到了数据帧,并且要通过Trunk转发这个数据帧,交换机会使用相应二级VLAN的VLAN ID标记数据帧。接收交换机将根据二级VLAN类型进一步转发收到的数据帧。

如果交换机在杂合接口上收到了数据帧,并且要通过Trunk转发这个数据帧,交换机会使用相应主VLAN的VLAN ID标记数据帧。接收交换机将按照对待来自杂合接口的数据帧的方式来转发数据帧。

私有VLAN中的通信和标记规则总结如下:

属于某个团体VLAN的接口(即团体接口)可以与同一团体VLAN中的所有其他接口、相应主VLAN中的所有杂合接口,以及所有Trunk接口进行通信;
属于某个隔离VLAN的接口(即隔离接口)可以与相应主VLAN中的所有杂合接口,以及所有Trunk接口通信;
某个主VLAN中的接口(即杂合接口)可以与同一主VLAN中的所有其他杂合接口、所有与此主VLAN关联的二级VLAN中的接口,以及所有Trunk接口通信;
在将从团体或隔离接口上接收到的数据帧从Trunk接口转发出去时,交换机会使用相应二级VLAN的ID标记数据帧;
在将从杂合接口上接收到的数据帧从Trunk接口转发出去时,交换机会使用相应主VLAN的ID标记数据帧;
从Trunk接口上收到有团体或隔离VLAN ID标记的数据帧后,交换机会按照本地相应的二级VLAN的团体或隔离接口的操作规则进行转发;
从Trunk接口上收到有主VLAN ID标记的数据帧后,交换机会按照本地相应主VLAN杂合接口的操作规则进行转发;
团体VLAN可被看作是承载“上行”流量的VLAN,“上行”流量是指一台主机发往同一团体VLAN主机,以及发往相应主VLAN杂合接口主机的流量。隔离VLAN也可被看作是承载“上行”流量的VLAN,这里的“上行”流量是指一台主机发往相应主VLAN杂合接口的流量。主VLAN可被看作是承载“下行”流量的VLAN,“下行”流量是指杂合接口发往其他杂合接口,以及发往所有关联二级VLAN中主机的流量。
表2-2总结了不同接口间的通信规则。

1团体VLAN和隔离VLAN是二级VLAN。
2杂合接口在主VLAN中,可以与其他所有接口通信。
关于私有VLAN在Trunk链路上的操作有两种常见的误解。第一种误解与标记有关。很多人通常会错误地认为私有VLAN会在Trunk上使用双标记。这种想法由二级VLAN嵌套在相关主VLAN中的理念而来。事实上,二级VLAN不在主VLAN“内部”;它们只是与其关联而已。这种关联只表示为:二级VLAN中收到的数据帧可以被转发给相关主VLAN中的杂合接口,反之亦然。

第二种误解与Trunk接口的类型有关。至此,本书已经描述了用于普通VLAN及私有VLAN的普通Trunk(switchport mode trunk)。然而,私有VLAN有两种特殊类型的Trunk接口,分别称为杂合PVLAN Trunk接口,以及隔离PVLAN Trunk接口。工程师不应该在支持私有VLAN的交换机之间,将这两种类型的接口用在普通的私有VLAN部署中;它们的使用仅限于一些特定的情形。为了更好地理解,参见图2-3,这个拓扑稍微修改了一些,其中VLAN 100是主VLAN,VLAN 101和102是团体VLAN,VLAN 199是隔离VLAN。此外,还有VLAN 999作为管理VLAN,跨越了路由器以及两台交换机。假设SW1交换机支持私有VLAN,而SW2不支持。

第一种特殊的Trunk类型是杂合PVLAN Trunk。当二级VLAN中的数据帧要从这样的Trunk接口发出时,它的VLAN标记将被改写为适当的主VLAN ID。当这个Trunk链路承载包含私有VLAN在内的多个VLAN,并且它连接的外部设备并不支持私有VLAN时,就需要进行重写;这样私有VLAN也可以访问外部设备,就好像外部设备连接在杂合接口一样。例如图2-3中的单臂路由器R1,它负责路由多个VLAN的流量,其中包括主VLAN,这个外部路由器不知道多个二级VLAN实际上映射到一个主VLAN。杂合PVLAN Trunk接口会把所有二级VLAN ID转换成对应的主VLAN ID,这样外部路由器就总是只能看到主VLAN。

第二种特殊的Trunk类型是隔离PVLAN Trunk。这种Trunk类型会将主VLAN ID转换为与主VLAN关联的隔离VLAN的ID。这样做就可以通过承载多VLAN的Trunk链路,将隔离VLAN扩展到并不支持PVLAN特性,但却能够隔离自己接口的交换机上。入门级的Catalyst交换机不支持私有VLAN,但支持所谓的保护接口(此特性有时被称为私有VLAN边界)。在这些交换机上,工程师可以使用switchport protected命令配置保护接口特性。配置了此命令的保护接口之间禁止互相通信——实质上,它们就像是隔离接口一样。如果主VLAN中的杂合接口收到了一个数据帧,并且交换机要从隔离PVLAN Trunk接口将其转发出去,这个数据帧当前主VLAN的VLAN标记会被重写为隔离VLAN ID。如果邻接交换机将保护接口分配给了隔离VLAN(由于不支持私有VLAN,该VLAN并未配置为隔离VLAN),它就能够将数据帧转发到正确的主机。在图2-3中,工程师使用隔离PVLAN Trunk,将隔离PVLAN 199从SW1扩展到不支持PVLAN的SW2上,SW2在本地隔离了VLAN 199中的接口。SW2不允许这些接口之间进行通信,但是允许它们与连接SW1的Trunk接口进行通信。SW1确保在VLAN 199中另一个隔离接口上收到的数据帧,并不会被从连接SW2的隔离PVLAN Trunk转发出去,而且保证从SW2隔离PVLAN Trunk发来的带有VLAN 199标记的数据帧,并不会被转发到相同二级VLAN中的任何其他隔离接口。这样一来,隔离二级VLAN就被扩展到了SW2,并且没有丢失其隔离属性。然而,如果R1或任何其他杂合接口上的设备想要向SW2上的站点发送数据包,这些数据包会正常地使用主VLAN 100标记。然而在SW1的隔离PVLAN Trunk上,标记100将被重写为199并转发给SW2,从而允许杂合Trunk上的R1能够与SW2上的站点进行通信。

所以实质上,这些Trunk的特殊性在于它们执行的标记重写行为:

杂合PVLAN Trunk接口在发送数据帧时,将二级VLAN ID重写为主PVLAN ID。当收到数据帧时,交换机不执行标记操作。而且,也不对普通VLAN的数据帧执行标记操作;
隔离PVLAN Trunk接口在发送数据帧时,将主VLAN ID重写为隔离二级VLAN ID。当收到数据帧时,交换机不执行标记操作。而且,也不对普通VLAN的数据帧执行标记操作。
只有特定类型的高端Catalyst交换机能够支持特殊的私有VLAN Trunk类型。

例2-5显示了私有VLAN的交换机配置。普通Trunk的配置未显示。

例2-5 配置私有VLAN

! If not running VTPv3, a switch must be put into VTP Transparent mode before
! configuring Private VLANs

AccessSw(config)# vtp mode transparent
Setting device to VTP Transparent mode for VLANS.

! One isolated secondary VLAN and three community secondary VLANs will now be
! created. Afterwards, they will be associated with the primary VLAN 100.

AccessSw(config)# vlan 199
AccessSw(config-vlan)# name Isolated
AccessSw(config-vlan)# private-vlan isolated
AccessSw(config-vlan)# vlan 101
AccessSw(config-vlan)# name Community1
AccessSw(config-vlan)# private-vlan community
AccessSw(config-vlan)# vlan 102
AccessSw(config-vlan)# name Community2
AccessSw(config-vlan)# private-vlan community
AccessSw(config-vlan)# vlan 103
AccessSw(config-vlan)# name Community3
AccessSw(config-vlan)# private-vlan community
AccessSw(config-vlan)# vlan 100
AccessSw(config-vlan)# name Primary1
AccessSw(config-vlan)# private-vlan primary
AccessSw(config-vlan)# private-vlan association 101-103,199
AccessSw(config-vlan)# exit

! The show vlan private-vlan command is useful to verify the types and associations
! of private VLANs and their member ports. At this moment, there are no ports
! assigned to these VLANs yet.

AccessSw(config)# do show vlan private-vlan

Primary Secondary Type         Ports
------- --------- ----------------- ------------------------------------------
100   101    community
100   102    community
100   103    community
100   199    isolated

! Now, ports will be assigned to these VLANs:
! Fa0/1 - 3: Secondary community VLAN 101
! Fa0/4 - 5: Secondary community VLAN 102
! Fa0/6 - 8: Secondary community VLAN 103
! Fa0/9 - 12: Secondary isolated VLAN 199
! Fa0/13: Promiscuous port in primary VLAN 100
! For brevity purposes, only the configuration of Fa0/1 - 3 will be shown, as all
! other ports in secondary VLANs, isolated or community, are configured similarly
! Afterwards, show vlan private-vlan is issued to verify the port assignment.
! As Fa0/13 is a promiscuous port, it will be shown in all associated secondary
! VLANs

AccessSw(config)# interface range fa0/1 - 3
AccessSw(config-if-range)# switchport mode private-vlan host
AccessSw(config-if-range)# switchport private-vlan host-association 100 101
AccessSw(config-if-range)# interface fa0/13
AccessSw(config-if)# switchport mode private-vlan promiscuous
AccessSw(config-if)# switchport private-vlan mapping 100 101-103,199
AccessSw(config-if)# do show vlan private-vlan

Primary Secondary Type        Ports
------- --------- ----------------- ------------------------------------------
100   101    community     Fa0/1, Fa0/2, Fa0/3, Fa0/13
100   102    community     Fa0/4, Fa0/5, Fa0/13
100   103    community     Fa0/6, Fa0/7, Fa0/8, Fa0/13
100   199    isolated      Fa0/9, Fa0/10, Fa0/11, Fa0/12, Fa0/13

! If a SVI is used as a gateway for devices associated with the primary VLAN 100,
! it must also be configured as promiscuous

AccessSw(config-if)# interface Vlan100
AccessSw(config-if)# private-vlan mapping 101-103,199
AccessSw(config-if)# ip address 192.168.100.254 255.255.255.0
时间: 2024-11-02 10:47:29

《CCIE路由和交换认证考试指南(第5版) (第1卷)》——2.2节VLAN的相关文章

《CCIE路由和交换认证考试指南(第5版) (第2卷)》——导读

目 录 第1章 BGP操作基础1.1节"我已经知道了吗?"测试题1.2节构建BGP邻居关系1.3节构建BGP表1.4节构建IP路由表1.5节多协议BGP1.6节理解与记忆 第2章 BGP路由策略 第3章 分类与标记 第4章 拥塞管理与拥塞避免 第5章 整形.监管与链路分段 第6章 WAN 第7章 IP多播概述 第8章 IP多播路由 第9章 设备和网络安全 第10章 隧道技术 第11章 MPLS 附录A "我已经知道了吗?"测试题答案

《CCNA ICND2(200-101)认证考试指南(第4版)》——1.2节基础内容

1.2 基础内容 CCNA ICND2(200-101)认证考试指南(第4版) 1.2.1 LAN 交换复习 提示: 该部分将复习一下ICND1考试和CCENT认证中的以太网LAN交换的基本内容.如果对以太网LAN的基本内容记得很牢,可直接跳到下一部分1.2.2节"生成树协议". 现代LAN是通过有线和无线网络连接将各种设备连接到一起建立起来的网络.这些连接赋予网络内任何设备相互之间发送和接收数据的基本手段.这些连接到LAN的设备,与WAN和互联网相结合,就能够与企业网络甚至世界另一端

《CCNA ICND2(200-101)认证考试指南(第4版)》——第1章定义生成树协议

第1章 定义生成树协议CCNA ICND2(200-101)认证考试指南(第4版)本章涵盖以下考试要点:LAN 交换技术了解高级的交换技术RSTPPVSTP以太网通道配置和验证PVSTP 操作解释根网桥选择生成树协议 (STP) 可以让以太网LAN 在LAN内安装冗余链路拥有额外好处的同时,还能克服在添加这些链路时会发生的已知问题.在LAN设计中采用冗余的链路,可以保证在某些链路失效甚至某些交换机完全失效时LAN依然能够工作.完备的LAN设计应当添加足够的冗余,保证任何单点失效不会令整个LAN崩

《CCENT/CCNA ICND1(100-101)认证考试指南(第4版)》——1.1节“我已经知道了吗?”小测试

1.1 "我已经知道了吗?"小测试CCENT/CCNA ICND1(100-101)认证考试指南(第4版)通过本节的小测试可以判断读者是否有必要略读本章或其中某个主要部分内容,甚至可以直接阅读本章的"考前准备".这些测试题可用来评估读者对该部分知识的掌握程度.本节小测试的答案参见随附光盘的附录C. 1.下列哪些协议属于TCP/IP传输层协议?(选择两个答案) a.以太网 b.HTTP c.IP d.UDP e.SMTP f.TCP 2.下列哪些协议属于数据链路层协议

《CCENT/CCNA ICND1(100-101)认证考试指南(第4版)》——1.2节基础内容

1.2 基础内容CCENT/CCNA ICND1(100-101)认证考试指南(第4版)本章将介绍有关计算机网络一些主要的基本观点,另外还定义两个网络模型结构:TCP/IP和OSI.本章开头部分主要介绍人们是如何看待网络并由此展开对CCNA的学习:中间为网络TCP/IP的一些主要功能:最后为OSI模型的一些额外概念和术语. 1.2.1 有关网络观点作为刚刚开始接触网络的新手,或许与大多数人一样,读者对网路的看法与其他网络用户所理解的相差无几,但与组建网络的网络工程师的观点相比,则可能有着天壤之别

《CCENT/CCNA ICND1(100-101)认证考试指南(第4版)》——1.3节考前准备

1.3 考前准备CCENT/CCNA ICND1(100-101)认证考试指南(第4版) 1.3.1 复习考试要点注意本章页边空白处的"考试要点"标志,这些相关知识点是本章的重点内容,表1-6列出了这些考试要点的内容. 1.3.2 解释关键术语学习本章后,尝试解释以下这些关键术语,但是在解释过程中并不一定要全对.最后利用术语词汇表检验答案. adjacent-layer interaction, deencapsulation, encapsulation, frame, networ

《CCNA ICND2(200-101)认证考试指南(第4版)》——1.3节考前准备

1.3 考前准备CCNA ICND2(200-101)认证考试指南(第4版) 1.3.1 复习考试要点注意本章页边空白处的"考试要点"标志,这些相关知识点是本章重点复习内容.表1-9列出了这些考试要点的内容. 1.3.2 根据记忆完成表格和列表打印附录D(可在随书光盘中找到)或者本章相关内容,根据记忆完成表格和列表.附录E也在光盘中,其中包括已完成的表格和列表,可用来核对自己的答案. 1.3.3 解释关键术语学习本章后,尝试解释这些关键术语,但是在解释过程中并不一定要全对.第22章会指

《CCENT/CCNA ICND1(100-101)认证考试指南(第4版)》——导读

目 录 第1部分 局域网(LAN)交换 第1章 TCP/IP 和OSI 网络模型 1.1 "我已经知道了吗?"小测试 1.2 基础内容 1.3 考前准备 第2章 以太网LAN 基础第3章 WAN 基础第4章 IPv4 寻址和路由选择基础第5章 TCP/IP 传输层和应用层基础第1部分 考前复习第2部分 以太网(LAN)交换第6章 TCP/IP 和OSI 网络模型第7章 思科 LAN 交换机操作和安装第8章 配置以太网交换机第9章 以太网VLAN的操作第10章 以太网LAN故障排除第3部

《CCNA ICND2(200-101)认证考试指南(第4版)》——导读

目 录 前言 入门 第1部分 LAN交换第1章 定义生成树协议1.1 "我已经知道了吗?"小测试 1.2 基础内容 1.3 考前准备 第2章 配置生成树协议(STP) 第3章 LAN交换故障排除 第1部分 考前复习 第2部分 IPv4路由选择 第4章 第1部分IPv4路由选择故障排除 第5章 第2部分IPv4路由选择故障排除 第6章 创建冗余第一跳路由器 第7章 虚拟专用网 第2部分 考前复习 第3部分 IPv4选择路由协议 第8章 实现IPv4 OSPF 第9章 理解EIGRP概念