VLAN 基础知识 - 由浅入深带你探究VLAN(1)

1. VLAN的作用

「VLAN概念解析」

       要了解VLAN,我们需要首先知道它是什么,是用来做什么的。

        VLAN(Virtual Local Area Network),翻译成中文是“虚拟局域网”。其中,LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。

        那么什么是广播域呢?

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

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

「分隔广播域的必要性」

        那么,为什么需要分割广播域呢?

        因为,如果仅有一个广播域,有可能会影响到网络整体的传输性能。具体原因如下:

        上图中,是一个由5台二层交换机(交换机1~5)连接了大量客户机构成的网络。假设这时,计算机A需要与计算机B通信。在基于以太网的通信中,必须在数据帧中指定目标MAC地址才能正常通信,因此计算机A必须先广播“ARP请求信息”,来尝试获取计算机B的MAC地址。

        交换机1收到广播帧(ARP请求)后,会将它转发给除接收端口外的其他所有端口,也就是Flooding了。接着,交换机2收到广播帧后也会Flooding。交换机3、4、5也还会Flooding。最终ARP请求会被转发到同一网络中的所有客户机上。

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

        看到这里,你或许会有疑问,上述这种「广播信息」是经常发出的吗?

        是的!实际上广播帧会非常频繁地出现。利用TCP/IP协议栈通信时,除了前面出现的ARP外,还有可能需要发出DHCP、RIP等很多其他类型的广播信息。除了TCP/IP以外,NetBEUI、IPX和Apple Talk等协议也经常需要用到广播。例如在Windows下双击打开“网络计算机”时就会发出广播(多播)信息。(Windows XP除外……)

        总之,广播就在我们身边。下面是一些常见的广播通信:

  • ARP请求:建立IP地址和MAC地址的映射关系。
  • RIP:一种路由协议。
  • DHCP:用于自动设定IP地址的协议。
  • NetBEUI:Windows下使用的网络协议。
  • IPX:NovellNetware使用的网络协议。
  • Apple Talk:苹果公司的Macintosh计算机使用的网络协议。

        如果整个网络只有一个广播域,那么一旦发出广播信息,就会传遍整个网络,并且对网络中的主机带来额外的负担。因此,在设计LAN时,需要注意如何才能有效地分割广播域。

「如何分割广播域」

        分割广播域时,一般都必须使用到路由器。使用路由器后,可以以路由器上的网络接口(LAN Interface)为单位分割广播域。

        但是,通常情况下路由器上不会有太多的网络接口,其数目多在1~4个左右。随着宽带连接的普及,宽带路由器(或者叫IP共享器)变得较为常见,但是需要注意的是,它们上面虽然带着多个(一般为4个左右)连接LAN一侧的网络接口,但那实际上是路由器内置的交换机,并不能分割广播域。况且使用路由器分割广播域的话,所能分割的个数完全取决于路由器的网络接口个数,使得用户无法自由地根据实际需要分割广播域。

        与路由器相比,二层交换机一般带有多个网络接口。因此如果能使用它分割广播域,那么无疑运用上的灵活性会大大提高。

        用于在二层交换机上分割广播域的技术,就是VLAN。通过利用VLAN,我们可以自由设计广播域的构成,提高网络设计的自由度。

2. VLAN分割广播域原理

        在理解了“为什么需要VLAN”之后,接下来让我们来了解一下交换机是如何使用VLAN分割广播域的。

        首先,在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口(Flooding)。例如,计算机A发送广播信息后,会被转发给端口2、3、4。

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

        同样,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口。

        就这样,VLAN通过限制广播帧转发的范围分割了广播域。上图中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用“VLAN ID”来区分的。

        如果要更为直观地描述VLAN的话,我们可以把它理解为将一台交换机在逻辑上分割成了数台交换机。在一台交换机上生成红、蓝两个VLAN,也可以看作是将一台交换机换做一红一蓝两台虚拟的交换机。

        在红、蓝两个VLAN之外生成新的VLAN时,可以想象成又添加了新的交换机。

        但是,VLAN生成的逻辑上的交换机是互不相通的。因此,在交换机上设置VLAN后,如果未做其他处理,VLAN间是无法通信的。

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

        那么如何在不同VLAN间进行通信呢?

        VLAN是广播域,而通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称作“VLAN间路由”。

        VLAN间路由,可以使用普通的路由器,也可以使用三层交换机,具体的方法与原理将在第3章节的「汇聚链接」中为大家阐述。

3. 访问链接与汇聚链接

「交换机的端口类型」

        交换机的端口,可以分为以下两种:

  • 访问链接(Access Link)
  • 汇聚链接(Trunk Link)

        接下来就让我们来依次学习这两种不同端口的特征

「访问链接」

        访问链接,指的是“只属于一个VLAN,且仅向该VLAN转发数据帧”的端口。在大多数情况下,访问链接所连的是客户机。

        通常设置VLAN的顺序是:

  • 生成VLAN
  • 设定访问链接(决定各端口属于哪一个VLAN)

        设定访问链接的手法,可以是事先固定的、也可以是根据所连的计算机而动态改变设定。前者被称为“静态VLAN”,后者被称为“动态VLAN”。

静态VLAN(基于端口的VLAN)

        静态VLAN又被称为基于端口的VLAN(PortBased VLAN)。顾名思义,就是明确指定各端口属于哪个VLAN的设定方法。

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

动态VLAN

        动态VLAN是根据每个端口所连的计算机的某个属性,随时改变端口所属的VLAN。这就可以避免上述静态VLAN面临的复杂的更改设定之类的操作。

        动态VLAN可以大致分为3类:

  • 基于MAC地址的VLAN(MAC Based VLAN)
  • 基于子网的VLAN(Subnet Based VLAN)
  • 基于用户的VLAN(User Based VLAN)

        上述三种动态VLAN间的差异,主要在于根据OSI参照模型哪一层的信息决定端口所属的VLAN,下面将分别展开介绍

        首先,我们先来看基于MAC地址的VLAN:

        基于MAC地址的VLAN,就是通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属。假定有一个MAC地址“A”被交换机设定为属于VLAN “10”,那么不论MAC地址为“A”的这台计算机连在交换机哪个端口,该端口都会被划分到VLAN 10中去。计算机连在端口1时,端口1属于VLAN 10;而计算机连在端口2时,则是端口2属于VLAN 10。

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

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

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

        因此,与基于MAC地址的VLAN相比,基于子网的VLAN能够更为简便地改变网络结构。IP地址是OSI参照模型中第三层的信息,所以我们可以理解为基于子网的VLAN是一种在OSI的第三层设定访问链接的方法。

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

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

「汇聚链接」

产生的原因

        到此为止,我们学习的都是使用单台交换机设置VLAN时的情况。那么,如果需要设置跨越多台交换机的VLAN时又如何呢?

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

        最简单的方法,自然是在交换机1和交换机2上各设一个红、蓝VLAN专用的接口并互联了,如下图所示。

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

        为了避免这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这时使用的就是汇聚链接(Trunk Link)。

概念解析

        汇聚链接(Trunk Link)指的是能够转发多个不同VLAN的通信的端口。

        汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。

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

        接下来,让我们具体看看汇聚链接是如何实现跨越交换机间的VLAN的。

        A发送的数据帧从交换机1经过汇聚链路到达交换机2时,在数据帧上附加了表示属于红色VLAN的标记。

        交换机2收到数据帧后,经过检查VLAN标识发现这个数据帧是属于红色VLAN的,因此去除标记后根据需要将复原的数据帧只转发给其他属于红色VLAN的端口。这时的转送,是指经过确认目标MAC地址并与MAC地址列表比对后只转发给目标MAC地址所连的端口。只有当数据帧是一个广播帧、多播帧或是目标不明的帧时,它才会被转发到所有属于红色VLAN的端口。

        蓝色VLAN发送数据帧时的情形也与此相同。

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

        另外,汇聚链路上流通着多个VLAN的数据,自然负载较重。因此,在设定汇聚链接时,有一个前提就是必须支持100Mbps以上的传输速度。

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

VLAN的汇聚协议

        在上述针对汇聚链接的附加的VLAN识别信息的介绍中,我们提到了两个相关标准协议,分别是IEEE 802.1Q和ISL,下面我们来分别学习一下这两种协议分别如何对数据帧附加VLAN信息。

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

        首先,大家先回忆一下以太网数据帧的标准格式。IEEE 802.1Q所附加的VLAN识别信息,位于数据帧中“发送源MAC地址”与“类别域”(Type Field)之间。具体内容为2字节的TPID(Tag Protocol IDentifier)和2字节的TCI(Tag Control Information),共计4字节。

        在数据帧中添加了4字节的内容,那么CRC值自然也会有所变化。这时数据帧上的CRC是插入TPID、TCI后,对包括它们在内的整个数据帧重新计算后所得的值。

        而当数据帧离开汇聚链路时,TPID和TCI会被去除,这时还会进行一次CRC的重新计算。

        TPID字段在以太网报文中所处位置与不带VLAN Tag的报文中协议类型字段所处位置相同。TPID的值固定为0x8100,它标示网络帧承载的802.1Q类型,交换机通过它来确定数据帧内附加了基于IEEE 802.1Q的VLAN信息。而实质上的VLAN ID,是TCI中的12位元。由于总共有12位,因此最多可供识别4096个VLAN。

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

        ISL,是Cisco产品支持的一种与IEEE 802.1Q类似的、用于在汇聚链路上附加VLAN信息的协议。

        使用ISL后,每个数据帧头部都会被附加26字节的“ISL包头(ISL Header)”,并且在帧尾带上通过对包括ISL包头在内的整个数据帧进行计算后得到的4字节CRC值。换而言之,就是总共增加了30字节的信息。

        在使用ISL的环境下,当数据帧离开汇聚链路时,只要简单地去除ISL包头和新CRC就可以了。由于原先的数据帧及其CRC都被完整保留,因此无需重新计算CRC。

        ISL有如用ISL包头和新CRC将原数据帧整个包裹起来,因此也被称为“封装型VLAN”(Encapsulated VLAN)。

        需要注意的是,不论是IEEE802.1Q的“Tagging VLAN”,还是ISL的“Encapsulated VLAN”,都不是很严密的称谓。不同的书籍与参考资料中,上述词语有可能被混合使用,因此需要大家在学习时格外注意。

        并且由于ISL是Cisco独有的协议,因此只能用于Cisco网络设备之间的互联。

4. 承上启下

        根据目前为止介绍的VLAN知识,我们已经知道两台计算机即使连接在同一台交换机上,只要所属的VLAN不同就无法直接通信。那么接下来我们需要学习的就是:如何在不同的VLAN间进行路由,使分属不同VLAN的主机能够互相通信呢?

        该部分相关内容,我们将在下一篇「VLAN 间路由- 由浅入深带你探究VLAN(2)」带大家继续探究!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棱角码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值