文章教程

中级通信工程师考试12.1.2VLAN技术

8/24/2020 11:08:17 PM 人评论 次浏览

12.1.2 VLAN技术

1.VLAN的概念

VLAN(Virtual Local Area Network)又称为虚拟局域网,是指在交换局域网的基础上采用网络管理软件构建的可跨越不同网段、不同网络的端到端的逻辑网络。一个VLAN组成一个逻辑子网,即一个逻辑广播域,它可以覆盖多个网络设备,允许处于不同地理位置的网络用户加入到一个逻辑子网中。VLAN工作在OSI参考模型的第2层和第3层,VLAN之间的通信是通过第3层的路由器来完成的。

广播域指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严格地说,并不仅仅是广播帧,多播帧(Multicas tFrame)和目标不明的单播帧(Unknown Unicast Frame)也能在同一个广播域中畅行无阻。

本来,二层交换机只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。

为什么需要分割广播域?那是因为,如果仅有一个广播域,有可能会影响到网络整体的传输性能。具体原因,请参看图12-1加深理解。

图12-1 广播帧传播示意图

在图12-1中,是一个由5台二层交换机(交换机1~5)连接了大量客户机构成的网络。假设这时计算机A需要与计算机B通信。在基于以太网的通信中,必须在数据帧中指定目标MAC地址才能正常通信,因此计算机A必须先广播“ARP请求(ARP Request)信息”,来尝试获取计算机B的MAC地址。交换机1收到广播帧(ARP请求)后,会将它转发给除接收端口外的其他所有端口,也就是Flooding了。接着,交换机2收到广播帧后也会Flooding。交换机3、4、5也还会Flooding。最终ARP请求会被转发到同一网络中的所有客户机上。

注意,这个ARP请求原本是为了获得计算机B的MAC地址而发出的。也就是说,只要计算机B能收到就万事大吉了。可是事实上,数据帧却传遍整个网络,导致所有的计算机都收到了它。如此一来,一方面,广播信息消耗了网络整体的带宽;另一方面,收到广播信息的计算机还要消耗一部分 CPU时间来对它进行处理。造成了网络带宽和CPU运算能力的大量无谓消耗。

网络中广播帧会非常频繁地出现。利用TCP/IP协议栈通信时,除了前面出现的ARP外,还有可能需要发出DHCP、RIP等很多其他类型的广播信息。ARP广播,是在需要与其他主机通信时发出的。当客户机请求DHCP服务器分配IP地址时,就必须发出DHCP的广播。而使用RIP作为路由协议时,每隔30秒路由器都会对邻近的其他路由器广播一次路由信息。RIP以外的其他路由协议使用多播传输路由信息,这也会被交换机转发(Flooding)。除了TCP/IP以外,NetBEUI、IPX和AppleTalk等协议也经常需要用到广播。例如,在Windows下双击打开“网络计算机”时就会发出广播(多播)信息。

2.VLAN的实现机制

下面了解交换机是如何使用VLAN分割广播域的。首先,在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口(Flooding)。例如,在图12-2中,计算机A发送广播信息后,会被转发给端口2、3、4。

这时,如果在交换机上生成两个VLAN,如图12-3所示;同时设置端口1、2属于左边的VLAN、端口3、4属于右边的VLAN。再从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口,也就是同属于左边VLAN的端口2,不会再转发给属于右边VLAN的端口。

图12-2 交换机广播示意图

图12-3 交换机划分VLAN后广播示意图

就这样,VLAN通过限制广播帧转发的范围分割了广播域。VLAN的划分,在实际使用中是用“VLANID”来区分的。

在交换机上设置VLAN后,如果未做其他处理,VLAN间是无法通信的。明明接在同一台交换机上,但却偏偏无法通信—这个事实也许让人难以接受。但它既是VLAN方便易用的特征,又是使VLAN令人难以理解的原因。

又该如何是好呢?请大家再次回忆,VLAN是广播域。而当需要在不同的VLAN间通信时,通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称做“VLAN间路由”。

VLAN间路由,可以使用普通的路由器,也可以使用三层交换机。

3.VLAN的划分方法

VLAN的划分可以是事先固定的、也可以是根据所连的计算机而动态改变设定。前者被称为“静态VLAN”、后者自然就是“动态VLAN”了。

(1)静态VLAN

静态VLAN又称为基于端口的VLAN(Port Based VLAN)。顾名思义,就是明确指定各端口属于哪个VLAN的设定方法,如图12-4所示。

图12-4 基于端口的VLAN划分

由于需要一个个端口地指定,因此当网络中的计算机数目超过一定数字(比如数百台)后,设定操作就会变得繁杂无比。并且,客户机每次变更所连端口,都必须同时更改该端口所属VLAN的设定。这显然不适合那些需要频繁改变拓扑结构的网络。

(2)动态VLAN

另一方面,动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN。这就可以避免上述的更改设定之类的操作。动态VLAN可以大致分为如下3类。

·基于MAC地址的VLAN(MAC Based VLAN)。

·基于子网的VLAN(Subnet Based VLAN)。

·基于用户的VLAN(User Based VLAN)。

其差异主要在于根据OSI参照模型哪一层的信息决定端口所属的VLAN。基于MAC地址的VLAN,就是通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属。假定有一个MAC地址“A”被交换机设定为属于VLAN1,那么不论MAC地址为“A”的这台计算机连在交换机哪个端口,该端口都会被划分到VLAN10中去,如图12-5所示。

由于是基于MAC地址决定所属VLAN的,因此可以理解为这是一种在OSI的第二层设定访问链接的办法。

但是,基于MAC地址的VLAN,在设定时必须调查所连接的所有计算机的MAC地址并加以登录。而且如果计算机交换了网卡,还是需要更改设定。

图12-5 基于MAC的VLAN划分

基于子网的VLAN是通过所连计算机的IP地址,来决定端口所属VLAN的。不像基于MAC地址的VLAN,即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要它的IP地址不变,就仍可以加入原先设定的VLAN,如图12-6所示。

图12-6 基于子网的VLAN划分

因此,与基于MAC地址的VLAN相比,能够更为简便地改变网络结构。IP地址是OSI参照模型中第三层的信息,可以理解为基于子网的VLAN是一种在OSI的第三层设定访问链接的方法。一般路由器与三层交换机都使用基于子网的方法划分VLAN。

基于用户的VLAN是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。

总的来说,决定端口所属VLAN时利用的信息在OSI中的层面越高,就越适于构建灵活多变的网络。

就目前来说,对于VLAN的划分主要采取上述基于端口的VLAN和基于子网的VLAN两种,而基于MAC地址和基于用户的VLAN一般作为辅助性配置使用。

4.VLAN帧结构

在交换机的汇聚链接上,可以通过对数据帧附加VLAN信息,构建跨越多台交换机的VLAN。附加VLAN信息的方法,最具有代表性的有IEEE802.1Q和ISL。

(1)IEEE 802.1Q

IEEE 802.1Q俗称“Dot One Q”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。

IEEE 802.1Q所附加的VLAN识别信息位于数据帧中“发送源MAC地址”与“类别域(Type Field)”之间。具体内容为2字节的TPID和2字节的TCI,共计4字节。在数据帧中添加了4字节的内容,那么CRC值自然也会有所变化。这时数据帧上的CRC是插入TPID、TCI后,对包括它们在内的整个数据帧重新计算后所得的值,如图12-7所示。

基于IEEE 802.1Q附加的VLAN信息,就像在传递物品时附加的标签。因此,它也被称做“标签型VLAN(Tagging VLAN)”。

图12-7 基于IEEE802.1Q的VLAN标记

1)TPID

Tag Protocol Identifier,也就是EtherType,是IEEE定义的新的类型,表明这是一个加了802.1Q标签的帧。TPID包含了一个固定的值0X8100。

2)TCI

Tag Control Information,包括用户优先级(Use rPriority)、规范格式指示器(Canonical Format Indicator)和VLANID。

·User Priority:该字段为3bit,用于定义用户优先级,总共有8个优先级别。IEEE802.1P为3bit的用户优先级位定义了操作。最高优先级为7,应用于关键性网络流量,如路由选择信息协议(RIP)和开放最短路径优先(OSPF)协议的路由表更新。优先级6和5主要用于延迟敏感(delay-sensitive)应用程序,如交互式视频和语音。优先级4到1主要用于受控负载(controlled-load)应用程序,如流式多媒体(streaming multimedia)和关键性业务流量(business-critical traffic),优先级0是默认值,并在没有设置其他优先级值的情况下自动启用。

·CFI:CFI值为0说明是规范格式,1为非规范格式。它被用在令牌环/源路由FDDI介质访问方法中来指示封装帧中所带地址的比特次序信息。

·VID:该字段为12bit,VLANID是对VLAN的识别字段,在标准IEEE802.1Q中常被使用。支持4096个VLAN的识别。在4096可能的VID中,VID=0用于识别帧优先级。4095(FFF)作为预留值,所以VLAN配置的最大可能值为4094。所以有效的VLANID范围一般为1~4094。

(2)ISL(Inter Switch Link)

ISL是Cisco产品支持的一种与IEEE 802.1Q类似的、用于在汇聚链路上附加VLAN信息的协议。使用ISL后,每个数据帧头部都会被附加26字节的“ISL报头(ISL Header)”,并且在帧尾带上通过对包括ISL报头在内的整个数据帧进行计算后得到的4字节 CRC值。换而言之,就是总共增加了30字节的信息。在使用ISL的环境下,当数据帧离开汇聚链路时,只要简单地去除ISL报头和新CRC就可以了。由于原先的数据帧及其CRC都被完整保留,因此无需重新计算,如图12-8所示。

图12-8 基于ISL的VLAN标记

ISL有如用ISL报头和新CRC将原数据帧整个包裹起来,因此也被称为“封装型VLAN(Encapsulated VLAN)”。需要注意的是,不论是IEEE 802.1Q的“Tagging VLAN”,还是ISL的“Encapsulated VLAN”,都不是很严密的称谓。不同的书籍与参考资料中,上述词语有可能被混合使用,因此需要大家在学习时格外注意。并且由于ISL是Cisco独有的协议,因此只能用于Cisco网络设备之间的互联。

IEEE 802.Q和ISL的异同如下所述。

·相同点:都是显式标记,即帧被显式标记了VLAN的信息。

·不同点:IEEE 802.1Q是公有的标记方式,ISL是Cisco私有的;ISL采用外部标记的方法,802.1Q采用内部标记的方法;ISL标记的长度为30字节,802.1Q标记的长度为4字节。

5.交换机的端口类型

交换机的端口,可以分为以下3种。

·访问链接(Access Link)。

·汇聚链接(Trunk Link)。

·混合链接(Hybrid Link)。

(1)Access端口

Access即用户接入端口,该类型端口只能属于1个VLAN,一般用于连接计算机的端口。

·收端口:收到untagged frame,加上端口的PVID(默认VLAN编号)和defaultpriority再进行交换转发;对于tagged frame不论VID(VLAN编号)等于PVID还是VID不等于PVID则有的厂家是直接丢弃,而有的厂家是能够接收VID等于PVID的TAG包。一般Access端口只接收untagged frame,部分产品可能接收tagged frame。

·发报文:对于VID等于PVID的tagged frame去除标签并进行转发。对于VID不等于PVID的数据包丢弃不进行转发,untagged frame则无此情况。

注:所说的删除标签是指删除4字节的VLAN标签,并且CRC经过重新计算。

(2)Trunk端口

当需要设置跨越多台交换机的VLAN时则需要设置TRUNK功能。

在规划企业级网络时,很有可能会遇到隶属于同一部门的用户分散在同一座建筑物中的不同楼层的情况,这时可能就需要考虑如何跨越多台交换机设置VLAN的问题了。假设有如图12-9所示的网络,且需要将不同楼层的A、C和B、D设置为同一个VLAN。

这时最关键的就是交换机1和交换机2该如何连接才好呢?最简单的方法,就是在交换机1和交换机2上为每个VLAN各设一个VLAN专用的接口并互联,如图12-10所示。

图12-9 VLAN规划示意图

图12-10 每个VLAN设置专用线路通信

但是,这个办法从扩展性和管理效率来看都不好。例如,在现有网络基础上再新建VLAN时,为了让这个VLAN能够互通,就需要在交换机间连接新的网线。建筑物楼层间的纵向布线是比较麻烦的,一般不能由基层管理人员随意进行。并且,VLAN越多,楼层间(严格地说是交换机间)互联所需的端口也越来越多,交换机端口的利用效率低是对资源的一种浪费、也限制了网络的扩展。为了避免这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这时使用的就是汇聚链接(Trunk Link)。

技术领域中把Trunk翻译为中文是“主干、干线、中继线、长途线”,不过一般不翻译,直接用原文。

所谓Trunking即汇聚端口,该类型端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,一般用于交换机之间或交换机与路由器之间连接的端口。汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。

现在再回过头来考虑刚才那个网络如果采用汇聚链路又会如何呢?用户只需要简单地将交换机间互联的端口设定为汇聚链接就可以了。这时使用的网线还是普通的UTP线,而不是什么其他的特殊布线。

接下来,再具体看看汇聚链接是如何实现跨越交换机间的VLAN的。如图12-11所示,A发送的数据帧从交换机1经过汇聚链路到达交换机2时,在数据帧上附加了表示其所属VLAN的标记。交换机2收到数据帧后,经过检查VLAN标识发现这个数据帧是属于左边VLAN的,因此去除标记后根据需要将复原的数据帧只转发给其他属于左边VLAN的端口。这时的转送,是指经过确认目标MAC地址并与MAC地址列表比对后只转发给目标MAC地址所连的端口。只有当数据帧是一个广播帧、多播帧或是目标不明的帧时,它才会被转发到所有属于左边VLAN的端口。

通过汇聚链路时附加的VLAN识别信息,有可能支持标准的“IEEE802.1Q”协议,也可能是Cisco产品独有的“ISL(Inter Switch Link)”。如果交换机支持这些规格,那么用户就能够高效率地构筑横跨多台交换机的VLAN。

默认条件下,汇聚链接会转发交换机上存在的所有VLAN的数据。换一个角度看,可以认为汇聚链接(端口)同时属于交换机上所有的VLAN。由于实际应用中很可能并不需要转发所有VLAN的数据,因此为了减轻交换机的负载、也为了减少对带宽的浪费,我们可以通过用户设定限制能够经由汇聚链路互联的VLAN。

图12-11 相同VLAN跨交换机TRUNK链路通信

另外,由于Trunk端口属于多个VLAN,所以需要设置默认VLANID即PVID(port vlan ID)。默认情况下,Trunk端口的PVID为VLAN1。如果设置了端口的PVID,当端口接收到不带VLANTag的报文后,则加上端口的PVID并将报文转发到属于默认VLAN的端口;当端口发送带有VLANTag的报文时,如果该报文的VLANID与端口默认的VLANID相同,则系统将去掉报文的VLANTag,然后再发送该报文。

Trunk的输入输出端口对数据包的处理如下。

·接收端口:同时都能够接收VID等于PVID和VID不等于PVID的tagged frame,不改变TAG;对于untaged frame则加上端口的PVID和default priority再进行交换转发。

·发送端口:对于VID等于PVID的TAG包则去掉VIDTAG再进行转发。对于VID不等于PVID的TAG包则转发不修改TAG,对于UNTAG包则无此情况。

(3)Hybrid端口

Hybrid即混合端口模式,该类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,交换机与路由器之间,也可以用于交换机与用户计算机的连接。

Hybrid的输入输出端口对数据包的处理如下。

·接收端口:同时都能够接收VID等于PVID和VID不等于PVID的tagged frame,不改变TAG;对于untaged frame则加上端口的PVID和default priority再进行交换转发。

·发送端口:判断该VLAN在本端口的属性,如果输入为untag包,则在输出端口剥离VLAN信息,再发送,如果是tag则直接发送。

Hybrid端口和Trunk端口的不同之处在于Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许默认VLAN的报文发送时不打标签。Access端口只属于1个VLAN,所以它的默认VLAN就是它所在的VLAN,不用设置;Hybrid端口和Trunk端口属于多个VLAN,所以需要设置默认VLANID。默认情况下,Hybrid端口和Trunk端口的默认VLAN为VLAN1。如果设置了端口的默认VLANID,当端口接收到不带VLANTag的报文后,则将报文转发到属于默认VLAN的端口;当端口发送带有VLANTag的报文时,如果该报文的VLANID与端口默认的VLANID相同,则系统将去掉报文的VLANTag,然后再发送该报文。

教程类别