计算机网络工程实用教程(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.6 交换机的VLAN技术

3.6.1 VLAN技术介绍

1.传统网络的问题

① 网络结构。在传统的交换网络中,每台设备都可以看到被传输的数据帧,同时网络的规模扩大会导致数据流量的扩大,这样会增加网络的整体负担,甚至导致网络崩溃。

② 安全性。因为用户能够访问所有的设备,所以网络的安全性得不到保障。

③ 冗余路径。第二层交换机一般不容许有到目的地的冗余路径,而且不能智能地对数据进行负载均衡。

传统的基于共享媒体的局域网络已不能满足人们对带宽的要求,其固有的弱点造成网络的瓶颈现象日趋明显。

2.VLAN概述

VLAN是虚拟局域网(Virtual Local Area Network)的简称,是在一个物理网络上划分出来的逻辑网络;是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段,从而实现虚拟工作组的技术。VLAN可以很好地解决传统网络的许多问题,具有如下特征:

① VLAN与由物理位置决定的传统LAN有着本质不同,不受网络物理位置的限制,可跨越多个物理网络、多台交换机。可将网络用户按功能划分成多个逻辑工作组,每组为一个VLAN。

② 同一个VLAN中的广播只有VLAN中的成员才能听到,而不会传输到其他VLAN中去。因此,VLAN可隔离广播信息,每个VLAN为一个广播域,用户可以通过划分VLAN的方法来限制广播域,以防止广播风暴的发生。

如果要实现不同VLAN之间的主机通信,则必须通过一个路由器或者三层交换机。锐捷的三层交换机可以通过SVI接口来进行VLAN之间的IP路由。

③ 划分VLAN可有效提升带宽,我们可以将网络上的用户按业务功能划分成多个逻辑工作组,每一组为一个VLAN,这样,日常的通信交流信息绝大部分被限制在一个VLAN内部,使带宽得到有效利用。

④ VLAN均由软件实现定义与划分,使得建立与重组VLAN十分灵活,当一个VLAN中增加、删除或修改用户时不必从物理位置上调整网络。

3.VLAN的分类

VLAN是由支持VLAN协议的交换机来实现的,按照划分的方式,大致可以分为5类。

(1)基于端口的VLAN

基于端口的VLAN是指由网络管理员使用网管软件或直接设置交换机,将某些端口直接地、强制性地分配给某个VLAN。除非网管人员重新设置,否则,这些端口将一直属于该VLAN。因此,这种划分方式也称为静态VLAN,是最常用的一种划分VLAN的方式,目前,绝大多数支持VLAN协议的交换机都提供这种VLAN配置方法。注意,如果交换机某端口连接至一个集线器,那么该集线器以及其连接的所有计算机都将属于该端口的VLAN。

这种划分方式的优点:一是定义VLAN成员时非常简单、也相对安全、且容易配置和维护,只要将所有的端口都定义为相应的VLAN即可,适合于任何大小的网络;二是由于不同VLAN间的端口不能直接相互通信,因此每个VLAN都有自己独立的生成树;三是交换机之间在不同VLAN中可以有多个并行链路,以提高VLAN内部的交换速率,增加交换机之间的带宽。四是可以设置跨越交换机的VLAN,即将不同交换机的不同端口划分至同一VLAN,这就完全解决了将位于不同物理位置、连接至不同交换机中的用户划为同一VLAN的难题。例如,在一个拥有数百台计算机的校园网中,为了提高网络传输效率,可以将所有用户划分为行政和教学两个VLAN。虽然各学院、系、教研室位于不同的建筑物内,连接至不同的交换机,但仍然能够根据其连接的端口将其划分至同一VLAN。

这种划分方式的缺点是,如果某用户离开了原来的端口,到了一个新的交换机的某个端口,必须重新定义。

(2)基于MAC地址的VLAN

基于MAC的VLAN是指借助智能管理软件根据用户主机的MAC地址来划分VLAN,即对每个MAC地址的主机都配置它属于一个VLAN。交换机端口借助网络包的MAC地址将其划归不同的VLAN。当一用户主机刚连接到交换机时,此端口尚未分配,于是,交换机通过读取用户主机的MAC地址,动态地将该端口划入某个VLAN。一旦网管人员配置好后,用户的计算机就可以随意改变其连接的交换机端口,而不会由此而改变自己的VLAN。当网络中出现未定义的MAC地址,交换机可以按照预先设定的方式向网管人员报警,再由网管人员作相应的处理。因此,基于MAC的VLAN也称为动态VLAN。

这种划分方式的优点:一是当网络用户从一个物理位置移动到另一个物理位置时,自动保留其所属VLAN的成员身份,VLAN不用重新配置;二是由于MAC地址具有世界唯一性,因此,该VLAN划分方式的安全性较高。

这种划分方式的缺点:一是初始化时,所有的用户都必须进行配置,如果用户多的话,配置是非常烦琐的,通常适用于小型局域网;二是这种划分方式使得交换机的每一个端口可能存在多个VLAN组的成员,保存了许多用户的MAC地址,查询起来相当不便。

(3)基于IP地址的VLAN

基于IP地址的VALN是指根据IP地址来划分的VLAN,一般地,每个VLAN都是和一段独立的IP网段(子网)相对应。因此,当某一用户设置有多个IP地址时,或该端口连接到的集线器中拥有多个TCP/IP用户时,通过基于IP地址的VLAN,该用户或该端口就可以同时访问多个VLAN。在该方式下,位于不同VLAN的多个部门(如每种业务设置成一个VLAN)均可同时访问同一台网络服务器,也可同时访问多个VLAN的资源,还可让多个VLAN间的连接只需一个路由端口即可完成。

这种划分方式的优点:一是当某一用户主机的IP地址改变时,交换机能够自动识别,重新定义VLAN,不需要管理员干预;二是有利于在VLAN交换机内部实现路由,也有利于将动态主机配置(DHCP)技术结合起来。

这种划分方式的缺点:一是由于IP地址可以人为地、不受约束地自由设置,因此,使用该方式划分VLAN也会带来安全上的隐患;二是效率要比基于MAC地址的VLAN差,因为查看三层IP地址比查看MAC地址所消耗的时间多。

(4)基于网络层协议的VLAN

基于网络层协议的VLAN是指按网络层协议来划分VLAN,一般可分为IP、IPX、AppleTalk等VLAN网络。

这种划分方式的优点:一是用户的物理位置改变了,不需要重新配置所属的VLAN;二是可以根据协议类型来划分VLAN,这对网络管理者来说很重要;三是这种方式不需要附加的帧标签来识别VLAN,这样可以减少网络的通信量。

这种方式的缺点是效率低,因为要检查IP帧头,需耗费很多的时间。

(5)基于IP组播的VLAN

基于IP组播的VLAN是指动态地把那些需要同时通信的端口定义到一个VLAN中,并在VLAN中用广播的方法解决点对多点通信的问题;即认为一个IP组播组就是一个VLAN。

这种划分方式将VLAN扩大到了广域网,具有更大的灵活性,很容易通过路由器进行扩展,主要适用于不在同一地理范围的局域网用户组成一个VLAN。

4.VLAN数据帧的标识

传统的以太网数据帧不能对VLAN或子网进行标识,VLAN帧的标识是在每个数据帧内放入一个唯一性的标识符,每台交换机都检查这个帧的标识符,以决定该帧所属的VLAN,交换机可做出相应的判断,将该帧送到该VLAN内的目的端口。交换机还负责在帧被送到接收设备之前将VLAN信息删掉。

VLAN帧的标识方法有ISL、IEEE802.1q、LANE等,最具有代表性的是IEEE802.1q和ISL。锐捷交换机采用IEEE802.1q标准封装。

一般的数据帧格式如图3-23所示。

图3-23 一般的数据帧格式

采用IEEE 802.1q方法标识的数据帧格式如图3-24所示。

图3-24 采用IEEE802.1q方法标识的数据帧格式

采用ISL方法标识的数据帧格式如图3-25所示。

图3-25 采用ISL方法标识的数据帧格式

5.VLAN中的端口

一个VLAN是以vlan-id来标识的,最多支持4093个VLAN(vlan-id为1~4094),其中,VLAN 1是出厂默认设置的VLAN,若没有对交换机进行配置,则所有与交换机连接的设备都属于VLAN1,VLAN1是不可删除的VLAN。

VLAN的端口有两种类型:一种是Access端口,只能属于一个VLAN,并且是通过手工设置指定VLAN的,这个端口不能直接从另一个VLAN接收信息,也不能向其他VLAN发送信息;另一种是Trunk接口,默认情况下是属于本交换机所有VLAN的,能够转发所有VLAN的帧。也可以通过设置许可VLAN列表(allowed-vlans)来加以限制。

一个端口默认工作在第二层模式,一个二层端口的默认类型是Access端口。

6.VTP简介

VTP(VLAN Trunk Protocol)是VLAN中继协议,也被称为VLAN干道协议。它是Cisco交换机的一个私有协议,工作在OSI的第二层。它的主要作用是通过网络中的某一台交换机来管理其他交换机的VLAN增加、删除以及VLAN的名称变化等,以获得VLAN配置的一致性,使得在大规模的交换式网络上VLAN配置的维护更加简单、有效,从而减轻网络的管理负担。

VTP使用“域”(domain)关系组织互连的交换机,并在“域”内的所有交换机上维护VLAN配置信息的一致性。“域”关系是通过域名建立并维护的,一组使用同一个域名的交换机构成一个“域”,一个交换机只能被配置为属于一个VTP域。一个域中的交换机有三种工作模式:服务器模式(server mode)、客户机模式(client mode)和透明模式(transparent mode)。交换机出厂时的默认工作模式为服务器模式。

工作在服务器模式下的交换机可以创建、修改、删除vlan,可以为所属的VTP域配置全局参数。VTP有它自己的NVRAM,这意味着删除配置文件不能把VTP信息清除。当VLAN的配置信息被修改,该变动会被通告到VTP域中的所有交换机。另外,它也能够根据收到的VTP通告信息与其他交换机进行VLAN配置信息的同步。

工作在客户机模式下的交换机不能创建、修改、删除VLAN,但可以根据接收到的VTP通告信息更新自己的VLAN配置,客户机也可以向域中通告自己当前的VLAN配置信息。

工作在透明模式下的交换机不会发送VTP通告,也不会根据接受到VTP信息修改自己的VLAN配置,但可以转发VTP通告信息,也可以独立地创建、修改、删除自己的VLAN。

VTP运行原理:VTP通告信息是在交换机的trunk链路上传播的。在VTP通告信息中包含一项称为配置修订版本号(configuration revision number)的参数,配置修订版本号的高低代表着VLAN配置信息的新旧程度。高版本号代表更新的VLAN配置信息。只要交换机接收到一个有更高配置修订版本号的更新,它都用该VTP更新中的vlan信息覆盖当前的vlan信息,所以配置修订版本号在VTP更新中起着非常重要的作用。每当server上修改了VLAN的配置(包括创建、删除VLAN和更改VLAN的名称),其配置修订版本号就会加1,然后用新的版本号向域中通告。

如果通告的配置修订版本号比收到该通告的交换机的当前配置版本号高,交换机则使用新的信息更新自己当前的配置。这种更新过程意味着:当server删除了其所有VLAN并使用了更高配置版本号,那么域中的所有具有低配置版本号的设备也将删除它们的VLAN。

3.6.2 VLAN的基本配置

1.显示VLAN信息

在特权模式下,可以用下列命令查看所有或指定VLAN的ID、VLAN状态、VLAN成员端口及VLAN配置等信息。

模式:特权模式。

命令:show vlan [ id vlan-id]

参数:vlan-id是所要查看的VLAN的ID号。

【配置举例】查看所有VLAN和VLAN 2的信息。

              switch#show vlan                                          查看所有VLAN的信息
              switch#show vlan id 2                                     查看VLAN2的信息

2.创建、修改一个VLAN

在全局配置模式下,可以通过vlan命令创建或者修改一个VLAN,并进入VLAN配置模式,进行VLAN的其他配置。

模式:全局配置模式。

命令:vlan vlan-id

参数:vlan-id是要创建或修改的VLAN ID号,范围为1~4094。

说明:如果输入的是一个新的VLAN ID,则交换机会创建一个VLAN,如果输入的是已经存在的VLAN ID,则修改相应的VLAN。

3.定义VLAN的名称

在VLAN配置模式下,可以通过name命令给VLAN取一个名字。

模式:VLAN配置模式。

命令:name vlan-name

参数:vlan-nam是要给VLAN取的名字。

说明:如果不执行此命令,则交换机会自动为它起一个名字VLANxxxx,其中xxxx是用0开头的4位VLAN ID号。比如,VLAN0006就是VLAN 6的默认名字。

如果想把VLAN的名字改回默认名字,只需在VLAN配置模式下输入no name命令即可。

【配置举例】创建一个VLAN 10,将它命名为maths,并且显示VLAN情况。

              switch#configure terminal                                 进入全局配置模式
              switch(config)#vlan 10                                    创建VLAN10并进入VLAN配置模式
              switch(config-vlan)#name maths                            命名为maths
              switch(config-vlan)#end                                   回到特权模式
              switch#show vlan                                          显示VLAN配置信息
              switch#configure terminal                                 进入全局配置模式
              switch(config)#vlan 10                                    修改VLAN10
              switch(config-vlan)#no name                               将VLAN10的名字改回默认名字
              switch(config-vlan)#end                                   回到特权模式
              switch#show vlan                                          显示VLAN配置信息

在特权模式下,输入copy running-config startup-config命令后,VLAN的配置信息便被保存进配置文件。

4.删除一个VLAN

在全局配置模式下,可以通过no vlan命令删除一个VLAN。

模式:全局配置模式。

命令:no vlan vlan-id

参数:vlan-id是要删除的VLAN的ID号。

说明:不能删除默认VLAN(即VLAN1)。

【配置举例】将上例的VLAN 10删除。

              switch#configure terminal                                 进入全局配置模式
              switch(config)#no vlan 10                                 删除VLAN10
              switch(config-vlan)#end                                   回到特权模式
              switch#show vlan                                          显示VLAN配置信息

5.把Access接口分配给指定VLAN

在接口配置模式下,可以通过switchport access vlan命令将某个指定的Access接口分配给一个VLAN,如果把一个接口分配给一个不存在的VLAN,那么这个VLAN将自动创建。

模式:接口配置模式。

命令:switchport access vlan vlan-id

参数:vlan-id是VLAN的ID号。

【配置举例】将接口fastethernet 0/10分配给VLAN 10。

              switch#configure terminal                                     进入全局配置模式
              switch(config)#interface fastethernet0/10                     指定端口fastethernet0/10
              switch(config-if)#switchport mode access                      定义该端口为Access接口
              switch(config-if)#switchport access vlan 10                   将这个接口分配给VLAN10
              switch(config-if)#end                                         回到特权模式
              switch#show interfaces fastethernet0/10 switchport            显示指定接口的信息

6.配置SVI

(1)创建SVI接口

给一个VLAN配置一个IP地址,即可创建该VLAN的SVI。其方法步骤如下:

模式:全局配置模式。

      命令:interface vlan vlan-id              指定一个VLAN,进入SVI接口配置模式
            ip address ip-address subnet-mask   给这个VLAN配置IP地址和子网掩码,即成为SVI

(2)恢复SVI为VLAN

只要将SVI的IP地址删除,就可将SVI恢复为VLAN。

模式:全局配置模式。

命令:interface vlan vlan-id

no ip address

【配置举例】创建一个SVI 20,其中包含fastethernet0/1和fastethernet0/2两个端口。

              Switch>enable
              Switch#configure terminal
              Switch(config)#interface f0/1
              Switch(config-if)#switchport access vlan 20
              Switch(config-if)#interface f0/2
              Switch(config-if)#switchport access vlan 20
              Switch(config-if)#interface vlan 20
              Switch(config-if)#ip address 192.168.10.1255.255.255.0
              Switch(config-if)#end
              Switch#show interfaces vlan 20
              VLAN: V20
              Description: SVl 20

3.6.3 VLAN之间的通信

跨交换机实现相同VLAN之间的通信要将交换机互连的端口设置为Trunk模式,并进行相关设置。跨交换机实现不同VLAN之间的通信则要借助于路由器或三层交换机,并进行相关设置。这里讨论第一种情况的配置方法。

1.配置VLAN Trunk

Trunk接口一般用来连接一个或多个以太网交换机端口和其他网络设备(如路由器),一个Trunk接口可以在一条链路上传输多个VLAN信息。

在接口配置模式下,通过switchport mode trunk命令可以把一个普通的以太网端口或Aggregate Port设置为一个Trunk接口。

若把Trunk接口的所有Trunk相关属性都复位成默认值,可使用no switchport trunk命令。

【配置举例】将端口fastethernet 0/10设置为Trunk接口。

              switch#configure terminal                                     进入全局配置模式
              switch(config)#interface fastethernet0/10                     指定端口fastethernet0/10
              switch(config-if)#switchport mode trunk                       定义该端口为trunk接口
              switch(config-if)#end                                         回到特权模式
              switch#show interfaces fastethernet0/10 switchport            显示这个接口的完整信息
              switch#show interfaces fastethernet0/10 trunk                 显示这个端口的trunk设置

2.定义Trunk接口的许可VLAN列表

一个Trunk接口默认配置是可以传输本交换机支持的所有VLAN(1~4094)的流量,也可以通过设置Trunk接口的许可VLAN列表,来限制某些VLAN不能通过这个Trunk接口,但是不能将VLAN1从许可VLAN列表中移出。

模式:接口配置模式。

命令:switchport trunk allowed vlan { all | [add| remove |except]} vlan-list

参数:vlan-list是指VLAN列表,其中可以是一个VLAN,也可以是一系列VLAN,中间用减号连接,如“10-20”;all表示许可VLAN列表包含所有支持的VLAN;add表示将指定VLAN列表加入许可VLAN列表;remove表示将指定VLAN列表从许可VLAN列表中删除;except表示将除VLAN列表以外的所有VLAN加入许可VLAN列表。

说明:若将当前Trunk接口许可VLAN列表改为默认许可所有VLAN的状态,可使用no switchport trunk allowed vlan命令。

【配置举例】把VLAN 2从fastethernet 0/1中移出。

              Switch(config)#interface fastethernet0/1                     指定端口fastethernet0/1
              Switch(config-if)#switchport trunk allowed vlan remove 2     把VLAN2从fastethernet0/1中移出
              Switch(config-if)#end                                        回到特权模式
              Switch#show interfaces fastethernet0/1 switchport            显示该端口的完整信息

3.配置Native VLAN

Trunk Port需要配置一个Native VLAN作为默认VLAN。所谓Native VLAN,就是指在这个接口上收发的UNTAG报文,都被认为是属于这个VLAN的。显然,这个接口的默认VLAN ID就是Native VLAN的VLAN ID。同时,在Trunk上发送属于Native VLAN的帧,则必然采用UNTAG的方式。每个Trunk接口的默认Native VLAN是VLAN1。在配置Trunk链路时,需要配置连接链路两端的Trunk接口属于相同的Native VLAN。

模式:接口配置模式。

命令:switchport trunk native vlan vlan-id

例如:

              switch(config-if)#switchport trunk native vlan 10               配置该端口的native VLAN

把Trunk的Native VLAN列表改回默认值VLAN1,可用no switchport trunk native vlan命令。

4.验证连通性

模式:特权模式。

命令:ping <目的IP地址>

5.VLAN的通信举例

【例3-1】某单位设有技术生产部和销售部,这两个部门的计算机分散连接在两台交换机SwitchA和SwitchB上,SwitchA为三层交换机。相同部门和不同的部门之间有时候有通信的需要,现在要在交换机上做适当的配置来实现这一目标。

【方案设计】根据需求,设技术生产部有计算机B和计算机C,将其按端口划分为VLAN1,销售部有计算机A,将其按端口划分为VLAN2,连接拓扑图如图3-26所示。这里要解决的问题是要通过配置交换机,实现相同VLAN之间的通信和不同VLAN之间的通信。

图3-26 示例拓扑图

【配置步骤】首先使用ping命令验证各计算机之间的连通性,发现都不能ping通。

第一步:配置交换机A。

<1> 在SwitchA上建立VLAN 10,并将F0/5端口加入到VLAN 10中。

              switchA#configure terminal                                    进入全局配置模式
              switchA(config)#vlan 10                                       创建VLAN10
              switchA(config-vlan)#name A                                   命名为A
              switchA(config-vlan)#exit                                     回到全局配置模式
              switchA(config)#interface fastethernet0/5                     指定端口f0/10
              switchA(config-if)#switchport mode access                     定义该端口为access接口
              switchA(config-if)#switchport access vlan 10                  将这个口分配给VLAN10
              switchA(config-if)#end                                        回到特权模式
              switchA#show interfaces fastethernet0/5 switchport            显示指定接口的信息

<2> 在SwitchA上建立VLAN 20,并将F0/15端口加入到VLAN 20中。(略)

<3> 在SwitchA上将与SwitchA相连的端口F0/24,定义为Trunk模式。

              switchA#configure terminal                                    进入全局配置模式
              switchA(config)#interface fastethernet0/24                    指定端口fastethernet0/24
              switchA(config-if)#switchport mode trunk                      定义该端口为TRUNK接口
              switchA(config-if)#end                                        回到特权模式
              switchA#show interfaces fastethernet0/24 switchport           显示这个端口的完整信息
              switchA#show interfaces fastethernet0/24 trunk                显示这个端口的trunk设置

第二步:配置交换机B。

<1> 在SwitchB上建立VLAN 10,并将F0/5端口加入到VLAN 10中。(略)

<2> 在SwitchB上将与SwitchB相连的端口F0/24,定义为Trunk模式。(略)

第三步:验证在不同交换机上实现相同VLAN之间的通信。使用ping命令验证各计算机之间的连通性,发现计算机B、C之间可以ping通,而A、C和A、B之间不能ping通。

第四步:配置三层交换机A,创建SVI,实现不同VALN之间的通信。

              SwitchA(config)#interface vlan 10                               创建SVl 10
              SwitchA(config-if)#ip address 192.168.10.254255.255.255.0      配置SVl 10的lP地址为192.168.10.254
              switchA(config-if)#exit                                         回到全局配置模式
              SwitchA(config)#interface vlan 20                               创建SVl 20
              SwitchA(config-if)#ip address 192.168.20.254255.255.255.0      配置SVl 20的lP地址为192.168.20.254

第五步:将计算机B、C的默认网关设置为192.168.10.254,将计算机A的默认网关设置为192.168.20.254。

第六步:验证在不同交换机上实现不同VLAN之间的通信。使用ping命令验证各计算机之间的连通性,各计算机之间可以ping通。