一文解决关于VLAN所有的疑惑

  • VLAN 基本概念
  • 为什么需要VLAN?
  • 怎么在交换机上划分VLAN,VLAN的工作原理
  • 有了子网,已经隔离了广播,还需要VLAN干啥?
    • 只进行子网划分,不进行VLAN划分
  • VLAN划分与子网划分
  • 附加VLAN信息的方法
  • VLAN划分
  • 交换机的端口类型(Access和Trunk)
    • 一、访问链接
    • 二、汇聚链接
      • 汇聚链接
  • VLAN间通信
    • 为什么要进行VLAN 间通信?
    • 路由器实现VLAN间通信
      • 路由器和交换机的连接方式
      • 通信细节
    • 三层交换机实现VLAN间通信
  • 加速VLAN间通信
  • 三层交换机与路由器
    • 三层交换机
    • 路由器
    • 路由器和交换机配合构建LAN的实例
  • 使用VLAN设计局域网的特点
    • VLAN增加网络的灵活性
      • 不使用VLAN的局域网中网络构成的改变
      • 使用VLAN的局域网中网络构成的改变
    • VLAN导致网络结构复杂化
    • 网络的逻辑结构与物理结构

VLAN 基本概念

VLAN(Virtual Local Network)是虚拟局域网的简称,所谓局域网一般指由路由器分割的子网,需要注意的是VLAN是一个二层概念,划分VLAN的作用是在第二层(数据链路层)划分广播域。

以下是百度百科对于VLAN的定义:
虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。

为什么需要VLAN?

VLAN的提出是为了在二层分隔广播域,在计算机网络中,广播信息频繁出现,如利用ARP广播获取IP对应的MAC地址,又如使当客户机请求DHCP服务器分配IP地址时,就必须发出DHCP的广播。在每次广播时,当前主机会向当前子网段内的所有主机发送广播数据,如果不加以限制,会消耗网络整体的带宽,此外,收到广播的主机还需要资源对广播信息进行处理,这些都会造成无谓的资源浪费。

未进行VLAN划分时,任何广播帧都会被转发给除接收端口外的所有其他端口,下图展示了未进行VLAN划分的场景,PC1、PC2、PC3、PC4属于1.1.1.0/24网段,PC5、PC6、PC7属于2.2.2.0/24网段,则在1.1.1.0/24网段发送的广播会达到2.2.2.0/24网段,会造成不必要的资源浪费,此外,2.2.2.0/24网段的主机也能收到1.1.1.0/24网段的广播包,由网络安全隐患。

怎么在交换机上划分VLAN,VLAN的工作原理

前面已经提到了,VLAN是在数据链路层进行划分,交换机为数据链路层设备,在实际应用中,只需要设置交换机每个端口的VLAN ID 即可完成VLAN划分,VLAN通过限制广播帧转发的范围来进行广播域的分割。相当于将一台交换机在逻辑上划分成了数台互不连通的交换机。

有了子网,已经隔离了广播,还需要VLAN干啥?

计算机网络中的广播在传递到网关时,一般会被隔绝(除非特殊设置),即广播一般终止于路由器,不会跨网段传播,路由器可以实现隔离广播的功能。既然如此,那还要VLAN有什么用呢?那下面我们就来看看如果只进行子网划分,不进行VLAN划分的情况

只进行子网划分,不进行VLAN划分

在实际应用中,VLAN的划分一般与网段的划分保持一致,如果该网段的所有主机都连接在一个交换机下,一般设置他们属于同一VLAN。此时,确实感知不到VLAN划分带来的好处。该种情况如图:

但还有一种情况,如下图,虽然子网1和子网2属于不同的网段,但是广播在二层传播的地址是FF:FF:FF:FF:FF:FF,因此该交换机上连接的所有主机,不管在哪个网段,均会收到广播信息,显然这对其他网段的主机造成了干扰,也浪费了不必要的资源。此时在交换机上进行VALN划分,在二层隔绝不同VLAN的广播就显得十分有必要了,因此,在交换机上进行VLAN划分通常适用于同一交换机上连接了多个网段的主机这种情况,通过划分VLAN构造多个虚拟的交换机。

总的来说,通过子网划分的网络,不同网段并没有真正意义上实现隔绝广播,在数据链路层广播数据包还是可能会发送到其他的网段,只是会直接拒绝。而使用了vlan可以在数据链路层隔绝广播,以后广播数据包只会在该vlan中传播,不会发送到其他vlan中,真正意义的隔绝广播。
需要注意的是,划分IP子网的目的是为了便于IP协议选择数据包输送的路径,对目的地进行近邻和远程两级规划,减轻网关负担提高路由效率。划分子网的目的不是为了阻断子网之间进行通讯,虽然结果上而言子网之间无法直接进行单播通讯(需通过路由器转发)。

VLAN划分与子网划分

为了进一步理解清楚网络通信过程,对VLAN划分与子网划分情况进行穷举:

VLAN和IP子网,各种划分,会有4种情形

  1. A和B相同IP子网,相同VLAN:可以正常通讯,单播和广播通讯都会送达。
  2. A和B不同IP子网,相同VLAN:需要路由器才能单播通讯,但是会有广播跨IP子网互相干扰。
  3. A和B相同IP子网,不同VLAN:完全无法通讯,即使有路由器也不行。因为IP协议认为是发给近邻直连网络,数据不会路由给网关,会进行ARP请求广播,企图直接与目的主机通讯,可是由于B在另一个VLAN,网关不予转发ARP请求广播,B收不到ARP请求。结局是网络层ARP无法解析获得数据链路层需要的目的MAC,通讯失败。(除非:路由器上对两个VLAN之间进行桥接;或者路由器上进行静态NAT转换;或者用物理办法拿一条网线把俩VLAN连上强行让它俩接入同一个广播域,若生成树设置不当容易把交换机搞死千万别作)
    4、A和B不同IP子网,不同VLAN:需要路由器才能进行单播通讯,不会有广播跨子网干扰。

情形1是常见的小型局域网;情形2不应出现在正确配置的网络里,因为花了钱买路由器(三层交换机)但是钱白花了,没能隔离广播风暴;情形3是常见的家庭WiFi路由器配置故障,一些运营商进户线路经过NAT是192.168.1.0/24的地址段,家用WiFi路由器恰好也用192.168.1.0/24这个地址段作为Lan口默认地址,路由器Lan端和WAN端冲突,傻掉了(可以这样理解:家用路由器的Lan端和WAN端分别处于两个不同的VLAN);情形4是常见的企业局域网。

附加VLAN信息的方法

在数据帧到达交换机端口时,交换机根据相关的VLAN配置给进入端口的帧附加相应的VLAN标签,在数据帧出交换机时,交换机会剥离帧中的在这个过程中需要用IEEE 802.1Q(英文缩写写为dot1q)和ISL等协议对数据帧附加VLAN信息。需要注意的是,VLAN技术对主机是透明的,主机不需要清楚网络的VLAN 划分,也不需要识别带有802.1Q标签的以太网帧,所有的事情都给交换机处理。

  1. IEEE 802.1
    IEEE 802.1Q,俗称“Dot One Q”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。在此,请大家先回忆一下以太网数据帧的标准格式。相比以太网帧,IEEE 802.1Q附加了4个字节的802.1Q标签,位于数据帧中“发送源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)。

  2. ISL(Inter Switch Link)
    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)。由于ISL是Cisco独有的协议,因此只能用于Cisco网络设备之间的互联。

VLAN划分

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

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

2. 动态VLAN
另一方面,动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN。这就可以避免上述的更改设定之类的操作。动态VLAN可以大致分为3类:
(1)基于MAC地址的VLAN(MAC Based VLAN)
(2)基于子网的VLAN(Subnet Based VLAN)
(3)基于用户的VLAN(User Based VLAN)
其间的差异,主要在于根据OSI参照模型哪一层的信息决定端口所属的VLAN。

(1)基于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地址并加以登录。而且如果计算机交换了网卡,还是需要更改设定。

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

因此,与基于MAC地址的VLAN相比,能够更为简便地改变网络结构。IP地址是OSI参照模型中第三层的信息,所以我们可以理解为基于子网的VLAN是一种在OSI的第三层设定访问链接的方法。
(3)基于用户的VLAN
基于用户的VLAN,则是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。

其中基于子网的VLAN和基于用户的VLAN有可能是网络设备厂商使用独有的协议实现的,不同厂商的设备之间互联有可能出现兼容性问题;因此在选择交换机时,一定要注意事先确认。总的来说,决定端口所属VLAN时利用的信息在OSI中的层面越高,就越适于构建灵活多变的网络。

交换机的端口类型(Access和Trunk)

交换机的端口有两种:访问链接(Access Link)和(Trunk Link)

一、访问链接

**访问链接,指的是“只属于一个VLAN,且仅向该VLAN转发数据帧”的端口。**通常用于连接主机。

二、汇聚链接

汇聚链接(Trunk Link)指的是能够转发多个不同VLAN的通信的端口。
汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。

汇聚链接常用的场景有两种:设置跨越多台交换机的VLAN时;VLAN间通信连接路由器和交换机时。下面从第一种场景展开进行说明:

访问链接只属于一个VLAN,且仅向该VLAN转发数据帧,那么当我们需要设置跨越多台交换机的VLAN时应该怎么办呢(在规划企业级网络时,很有可能会遇到隶属于同一部门的用户分散在同一座建筑物中的不同楼层的情况),汇聚链接就是为了这种场景设置的。

先设想一下如果没有汇聚链接怎么设置跨越多台交换机的VLAN?
假设有如下图所示的网络,且需要将不同楼层的A、C和B、D设置为同一个VLAN。

这时最关键的就是“交换机1和交换机2该如何连接才好呢?”
最简单的方法,自然是在交换机1和交换机2上各设一个红、蓝VLAN专用的接口并互联了。

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

为了避免这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这时使用的就是汇聚链接(Trunk Link)。**用户只需要简单地将交换机间互联的端口设定为汇聚链接就可以了。

接下来,让我们具体看看汇聚链接是如何实现跨越交换机间的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间通信

为什么要进行VLAN 间通信?

VLAN间通信是十分常见的应用场景,通常将同一子网的主机划分到同一VLAN,当不同网段间进行通信时,就涉及到VLAN间通信。首先必须明确的是,不同VLAN间是不能进行通信的。因为在LAN内的通信,必须在数据帧头中指定通信目标的MAC地址。而为了获取MAC地址,TCP/IP协议下使用的是ARP。ARP解析MAC地址的方法,则是通过广播。也就是说,如果广播报文无法到达,那么就无从解析MAC地址,亦即无法直接通信。计算机分属不同的VLAN,也就意味着分属不同的广播域,自然收不到彼此的ARP广播报文。因此,属于不同VLAN的计算机之间无法直接互相通信

因此,要实现不同VLAN间的通信,就要将数据在网络层进行转发,以打破由VLAN带来的隔离,即使用VLAN间路由,实现VLAN间路由的网络层设备有路由器和三层交换机两种。

路由器实现VLAN间通信

路由器和交换机的连接方式

通过路由器实现VLAN间路由时,将交换机与路由器连接,这里就涉及到连接方式的问题,前文已经讨论过了这一点,如果将路由器与交换机上的每个VLAN分别连接,即将交换机上用于和路由器互联的每个端口设为访问链接(Access Link),然后分别用网线与路由器上的独立端口互联,那么每增加一个VLAN时,就要消耗一个路由器接口,需要重新布置一条网线,而且路由器的LAN接口通常较少。所以通常采用**汇聚链接(Trunk Link)**的方式连接路由器和交换机,具体实现过程为:首先将用于连接路由器的交换机端口设为汇聚链接(Trunk Link),而路由器上的端口也必须支持汇聚链路。双方用于汇聚链路的协议自然也必须相同。接着在路由器上定义对应各个VLAN的“子接口”(Sub Interface)。尽管实际与交换机连接的物理端口只有一个,但在理论上我们可以把它分割为多个虚拟端口。VLAN将交换机从逻辑上分割成了多台,因而用于VLAN间路由的路由器,也必须拥有分别对应各个VLAN的虚拟接口。

采用这种方法的话,即使之后在交换机上新建VLAN,仍只需要一条网线连接交换机和路由器。用户只需要在路由器上新设一个对应新VLAN的子接口就可以了。

通信细节

  1. 同一VLAN内通信
    主机A给主机B发送信息时,首先判断出主机B和自己在一个子网段,因此无需通过网关转发,然后A发送ARP广播得到B的MAC地址,将MAC地址封装在数据帧中发送出去,交换机看到目的MAC地址,查找MAC表中和目的MAC对应的且与源MAC地址同VLAN的端口号,由该端口号将数据转发给B。(注意MAC表中记录了各端口号对应的VLAN号)

  2. VLAN间通信
    主机A给主机C发送信息,计算机A从通信目标的IP地址(192.168.2.1)得出C与本机不属于同一个网段。因此会向设定的默认网关(DefaultGateway,GW)转发数据帧。在发送数据帧之前,需要先用ARP获取路由器的MAC地址。
    得到路由器的MAC地址R后,接下来就是按图中所示的步骤发送往C去的数据帧。①的数据帧中,目标MAC地址是路由器的地址R、但内含的目标IP地址仍是最终要通信的对象C的地址。
    交换机在端口1上收到①的数据帧后,检索MAC地址列表中与端口1同属一个VLAN的表项。**由于汇聚链路会被看作属于所有的VLAN,因此这时交换机的端口6也属于被参照对象。**这样交换机就知道往MAC地址R发送数据帧,需要经过端口6转发。
    **从端口6发送数据帧时,由于它是汇聚链接,因此会被附加上VLAN识别信息。**由于原先是来自红色VLAN的数据帧,因此如图中②所示,会被加上红色VLAN的识别信息后进入汇聚链路。路由器收到②的数据帧后,确认其VLAN识别信息,由于它是属于红色VLAN的数据帧,因此交由负责红色VLAN的子接口接收。
    接着,根据路由器内部的路由表,判断该向哪里中继。
    由于目标网络192.168.2.0/24是蓝色VLAN,且该网络通过子接口与路由器直连,因此只要从负责蓝色VLAN的子接口转发就可以了。这时,数据帧的目标MAC地址被改写成计算机C的目标地址;并且由于需要经过汇聚链路转发,因此被附加了属于蓝色VLAN的识别信息。这就是图中③的数据帧。
    交换机收到③的数据帧后,根据VLAN标识信息从MAC地址列表中检索属于蓝色VLAN的表项。由于通信目标——计算机C连接在端口3上、且端口3为普通的访问链接,因此交换机会将数据帧去除VLAN识别信息后(数据帧④)转发给端口3,最终计算机C才能成功地收到这个数据帧。

    进行VLAN间通信时,即使通信双方都连接在同一台交换机上,也必须经过:“发送方——交换机——路由器——交换机——接收方”这样一个流程。

三层交换机实现VLAN间通信

现在,我们知道只要能提供VLAN间路由,就能够使分属不同VLAN的计算机互相通信。但是,如果使用路由器进行VLAN间路由的话,随着VLAN之间流量的不断增加,很可能导致路由器成为整个网络的瓶颈。
交换机使用被称为ASIC(ApplicationSpecified Integrated Circuit)的专用硬件芯片处理数据帧的交换操作,在很多机型上都能实现以缆线速度(Wired Speed)交换。而路由器,则基本上是基于软件处理的。即使以缆线速度接收到数据包,也无法在不限速的条件下转发出去,因此会成为速度瓶颈。就VLAN间路由而言,流量会集中到路由器和交换机互联的汇聚链路部分,这一部分尤其特别容易成为速度瓶颈。并且从硬件上看,由于需要分别设置路由器和交换机,在一些空间狭小的环境里可能连设置的场所都成问题。
为了解决上述问题,三层交换机应运而生。三层交换机,本质上就是“带有路由功能的(二层)交换机”。路由属于OSI参照模型中第三层网络层的功能,因此带有第三层路由功能的交换机才被称为“三层交换机”。
三层交换机在一台本体内,分别设置了交换机模块和路由器模块;而内置的路由模块与交换模块相同,使用ASIC硬件处理路由。因此,与传统的路由器相比,可以实现高速路由。并且,路由与交换模块是汇聚链接的,由于是内部连接,可以确保相当大的带宽。

使用三层交换机进行VLAN间通信和使用汇聚链路连接路由器与交换机进行VLAN通信的通信细节是一样的。假设有如下图所示的4台计算机与三层交换机互联。当使用路由器连接时,一般需要在LAN接口上设置对应各VLAN的子接口;而三层交换机则是在内部生成“VLAN接口”(VLAN Interface)。VLAN接口,是用于各VLAN收发数据的接口。(注:在Cisco的Catalyst系列交换机上,VLAN Interface被称为SVI——Switched Virtual Interface)


整体的流程,与使用外部路由器时的情况十分相似——都需要经过“发送方→交换模块→路由模块→交换模块→接收方”。

加速VLAN间通信

根据到此为止的学习,我们已经知道VLAN间路由,必须经过外部的路由器或是三层交换机的内置路由模块。但是,有时并不是所有的数据都需要经过路由器(或路由模块)。
例如,使用FTP(File Transfer Protocol)传输容量为数MB以上的较大的文件时,由于MTU的限制,IP协议会将数据分割成小块后传输、并在接收方重新组合。这些被分割的数据,“发送的目标”是完全相同的。发送目标相同,也就意味着同样的目标IP地址、目标端口号(注:特别强调一下,这里指的是TCP/UDP端口)。自然,源IP地址、源端口号也应该相同。这样一连串的数据流被称为“流”(Flow)。
只要将流最初的数据正确地路由以后,后继的数据理应也会被同样地路由。
据此,后继的数据不再需要路由器进行路由处理;通过省略反复进行的路由操作,可以进一步提高VLAN间路由的速度。

接下来,让我们具体考虑一下该如何使用三层交换机进行高速VLAN间路由。

首先,整个流的第一块数据,照常由交换机转发→路由器路由→再次由交换机转发到目标所连端口。这时,将第一块数据路由的结果记录到缓存里保存下来。需要记录的信息有:
(1)目标IP地址
(2)源IP地址
(3)目标TCP/UDP端口号
(4)源TCP/UDP端口号
(5)接收端口号(交换机)
(6)转发端口号(交换机)
(7)转发目标MAC地址
等等。

**同一个流的第二块以后的数据到达交换机后,直接通过查询先前保存在缓存中的信息查出“转发端口号”后就可以转发给目标所连端口了。这样一来,就不需要再一次次经由内部路由模块中继,而仅凭交换机内部的缓存信息就足以判断应该转发的端口。**这时,交换机会对数据帧进行由路由器中继时相似的处理,例如改写MAC地址、IP包头中的TTL和Check Sum校验码信息等。

通过在交换机上缓存路由结果,实现了以缆线速度(Wired Speed)接收发送方传输来数据的数据、并且能够全速路由、转发给接收方。

需要注意的是,类似的加速VLAN间路由的手法多由各厂商独有的技术所实现,并且该功能的称谓也因厂商而异。例如,在Cisco的Catalyst系列交换机上,这种功能被称为“多层交换”(Multi Layer Switching)。另外,除了三层交换机的内部路由模块,外部路由器中的某些机型也支持类似的高速VLAN间路由机制

三层交换机与路由器

三层交换机

三层交换机用在什么地方?三层交换机最主要最擅长的应用就是进行VLAN之间的数据路由转发,这种应用场合下它的转发速度要远胜过专业路由器,它可以做到以二层帧交换的速度进行跨VLAN三层路由转发作业。但是通常来说它NAT效率不如专业路由器或防火墙,不能跨二层协议处理数据包,通常把它用在局域网网络核心节点。在局域网网络末节,比如说Internet接入处,通常都会再专设一台路由器或防火墙来进行链路层协议转换和NAT转换。可以这么简单的理解,三层交换机是一种只有以太网接口,只能处理以太网协议的路由器。(难道除了以太网还有别的?当然有,比如串行、PPP)虽然三层交换机和路由器在内部运作机制上不一样,对于用户而言,数据路由转发这个功能它俩都具备。

三层交换机和路由器本质上都是通过逻辑接口+路由实现VLAN间通信,为什么要有逻辑接口?为什么后来又有三层交换机?当然是为了节省成本,在尽量少的硬件成本下做尽量多的功能,现在设备2或者3层设备单纯实现2或者3层功能的话其实已经意义不大,交换机可以路由,路由器可以交换已经是基本配置了。

路由器

三层交换机的价格,在问世之初非常昂贵,但是现在它们的价格已经下降了许多。目前国外一些廉价机型的售价,折合成人民币后仅为一万多元,而且还在继续下降中。
既然三层交换机能够提供比传统型路由器更为高速的路由处理,那么网络中还有使用路由器的必要吗?
答案是:“是”。
使用路由器的必要性,主要表现在以下几个方面:

  1. 用于与WAN连接
    **三层交换机终究是“交换机”。也就是说,绝大多数机型只配有LAN(以太网)接口。**在少数高端交换机上也有用于连接WAN的串行接口或是ATM接口,但在大多数情况下,连接WAN还是需要用到路由器。
  2. 保证网络安全
    在三层交换机上,通过数据包过滤也能确保一定程度的网络安全。但是使用路由器所提供的各种网络安全功能,用户可以构建更为安全可靠的网络。
    路由器提供的网络安全功能中,除了最基本的数据包过滤功能外,还能基于IPSec构建VPN(VirtualPrivate Network)、利用RADIUS进行用户认证等等。
  3. 支持除TCP/IP以外的异构网络架构
    尽管TCP/IP已经成为当前网络协议架构的主流,但还有不少网络利用Novell Netware下的IPX/SPX或Macintosh下的AppleTalk等网络协议。三层交换机中,除了部分高端机型外基本上还只支持TCP/IP因此,在需要使用除TCP/IP之外其他网络协议的环境下,路由器还是必不可少的。
    注:在少数高端交换机上,也能支持上述路由器的功能。例如Cisco的Catalyst 6500系列,就可以选择与WAN连接的接口模块;还有可选的基于IPSec实现VPN的模块;并且也能支持TCP/IP以外的其他网络协议。

路由器和交换机配合构建LAN的实例

下面让我们来看一个路由器和交换机搭配构建LAN的实例。

利用在各楼层配置的二层交换机定义VLAN,连接TCP/IP客户计算机。各楼层间的VLAN间通信,利用三层交换机的高速路由加以实现。如果网络环境要求高可靠性,还可以考虑冗余配置三层交换机。与WAN的连接,则通过带有各种网络接口的路由器进行。并且,通过路由器的数据包过滤和VPN等功能实现网络安全。此外,使用路由器还能支持Novell Netware等TCP/IP之外的网络。
只有在充分掌握了二层、三层交换机以及传统路由器的基础上,才能做到物竞其用,构筑出高效率、高性价比的网络。

使用VLAN设计局域网的特点

通过使用VLAN构建局域网,用户能够不受物理链路的限制而自由地分割广播域。另外,通过先前提到的路由器与三层交换机提供的VLAN间路由,能够适应灵活多变的网络构成。但是,由于利用VLAN容易导致网络构成复杂化,因此也会造成整个网络的组成难以把握。可以这样说,在利用VLAN时,除了有“网络构成灵活多变”这个优点外,还搭配着“网络构成复杂化”这个缺点。

VLAN增加网络的灵活性

不使用VLAN的局域网中网络构成的改变

假设有如图所示的由1台路由器、2台交换机构成的“不使用VLAN构建”的网络。

图中的路由器,带有2个LAN接口。左侧的网络是192.168.1.0/24,右侧是192.168.2.0/24。现在如果想将192.168.1.0/24这个网络上的计算机A转移到192.168.2.0/24上去,就需要改变物理连接、将A接到右侧的交换机上。并且,当需要新增一个地址为192.168.3.0/24的网络时,还要在路由器上再占用一个LAN接口并添置一台交换机。而由于这台路由器上只带了2个LAN接口,因此为了新增网络还必须将路由器升级为带有3个以上LAN接口的产品。

使用VLAN的局域网中网络构成的改变

接下来再假设有一个由1台路由器、2台交换机构成的“使用VLAN”的局域网。交换机与交换机、交换机与路由器之间均为汇聚链路;并且假设192.168.1.0/24对应红色VLAN、192.168.2.0/24对应蓝色VLAN。

需要将连接在交换机1上192.168.1.0/24这个网段的计算机A转属192.168.2.0/24时,无需更改物理布线。只要在交换机上生成蓝色VLAN,然后将计算机A所连的端口1加入到蓝色VLAN中去,使它成为访问链接即可。然后,根据需要设定计算机A的IP地址、默认网关等信息就可以了。如果IP地址相关的设定是由DHCP获取的,那么在客户机方面无需进行任何设定修改,就可以在不同网段间移动。

利用VLAN后,我们可以在免于改动任何物理布线的前提下,自由进行网络的逻辑设计。如果所处的工作环境恰恰需要经常改变网络布局,那么利用VLAN的优势就非常明显了。

并且,当需要新增一个地址为192.168.3.0/24的网段时,也只需要在交换机上新建一个对应192.168.3.0/24的VLAN,并将所需的端口加入它的访问链路就可以了。如果网络环境中还需要利用外部路由器,则只要在路由器的汇聚端口上新增一个子接口的设定就可以完成全部操作,而不需要消耗更多的物理接口(LAN接口)。要使用的是三层交换机内部的路由模块,则只需要新设一个VLAN接口即可。

网络环境的成长,往往是难以预测的,很可能经常会出现需要分割现有网络或是增加新网络的情况。而充分活用VLAN后,就可以轻易地解决这些问题。

VLAN导致网络结构复杂化

虽然利用VLAN可以灵活地构建网络,但是同时,它也带来了网络结构复杂化的问题。特别是由于数据流纵横交错,一旦发生故障时,准确定位并排除故障会比较困难

为了便于理解数据流向的复杂化,假设有下图所示的网络。计算机A向计算机C发送数据时,数据流的整体走向如下:
计算机A→交换机1→路由器→交换机1→交换机2→计算机C

首先计算机A向交换机1送出数据(①),其后数据被转发给路由器(②)进行VLAN间路由。路由后的数据,再从汇聚链路返回交换机1(③)。由于通信目标计算机C并不直连在交换机1上,因此还需要经过汇聚链路转发到交换机2(④)。在交换机2上,数据最终被转发到C所连的端口2上,这才完成整个流程(⑤)。
在这个例子中,仅由2台交换机构成网络,其数据流已经如此复杂,如果构建横跨多台交换机的VLAN的话,每个数据流的流向显然会更加难以把握。

网络的逻辑结构与物理结构

为了对应日渐复杂化的数据流,管理员需要从“逻辑结构”与“物理结构”两方面入手,把握好网络的现状。
物理结构,指的是从物理层和数据链路层观察到的网络的现状,表示了网络的物理布线形态和VLAN的设定等等。而逻辑结构,则表示从网络层以上的层面观察到的网络结构。下面我们就试着以路由器为中心分析一个IP网络的逻辑结构。

还是先前的那个例子,描绘了布线形态和VLAN设定的“物理结构”如下图所示。

分析这个物理结构并转换成以路由器为中心的逻辑结构后,会得到如下的逻辑结构图。当我们需要进行路由或是数据包过滤的设定时,都必须在逻辑结构的基础上进行。

把握这两种网络结构图的区别是十分重要的,特别是在VLAN和三层交换机大行其道的现代企业级网络当中。

本文参考资料:
https://blog.csdn.net/phunxm/article/details/9498829?spm=1001.2014.3001.5506
https://www.zhihu.com/question/51675361/answer/263300150

一文解决关于VLAN所有的疑惑相关推荐

  1. 三层交换解决了VLAN之间的通信问题

    开关的转发过程. 开关工作于OSI参考模型的第二层,也就是数据链路层.在每一个端口成功连接时,交换机内部的CPU通过对应MAC地址和端口形成一张MAC表.开关基于MAC地址表来转发数据. 路由转发过程 ...

  2. 三层交换机解决不同VLAN间的通信—Vecloud微云

    交换机的转发过程 交换机工作于OSI参考模型的第二层,即数据链路层.交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表.交换机根据MAC地址表转发数据. 路由器的转 ...

  3. django2.1支持的mysql版本_一文解决django 2.2与mysql兼容性问题

    Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,视图V和模版T.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS( ...

  4. 一文解决关于建立时间和保持时间的困惑

    公众号[TechDiary],专注技术分享,手把手教你成为技术大神 之前介绍数字电路复位信号设计的文章中有提到过很多次建立时间.保持时间的概念,事实上建立/保持时间(setup time & ...

  5. 一文扫清对 JavaScript 中的疑惑

    一文扫清对 JavaScript 中的疑惑 文章目录 一文扫清对 JavaScript 中的疑惑 一.前言 1. 写作原因 : 2. 阅读须知 : 3. 文章声明 : 二.荡平疑惑 1. 我的 JS ...

  6. 一文解决机器学习中的过拟合与欠拟合问题(正则化,数据增强,Dropout)

    一文解决机器学习中的过拟合与欠拟合问题(正则化,数据增强,Dropout,提前终止) 生活中的过拟合与欠拟合现象 过拟合与欠拟合的概念 解决过拟合与欠拟合问题的四大金刚 正则化 数据增强 Dropou ...

  7. 一文解决什么是关系模型

    一文解决什么是关系模型 前言 这里是 数据库系统原理 系列文章,主要介绍数据库系统理论以及数据库实用技术. 数据库技术是计算机学科中的一个重要分支,它的应用非常广泛,几乎涉及所有的应用领域. 注:本篇 ...

  8. Ubuntu18.04 键盘输入的汉字和拼音都成了藏文解决办法

    Ubuntu18.04 键盘输入的汉字和拼音都成了藏文解决办法 今天用Ubuntu安装完软件之后突然发现但凡可以打字的地方,用键盘输入的汉字或者英文都变成了藏文,具体情况如下: 网上多处查找资料,但是 ...

  9. python绘制小提琴图数据_Python数据处理从零开始----第四章(可视化)(16)一文解决小提琴图violin plot...

    原文:Python数据处理从零开始----第四章(可视化)(16)一文解决小提琴图violin plot​www.jianshu.com Python数据处理从零开始----第四章(可视化)(16)一 ...

最新文章

  1. 无意中发现一位大佬的算法刷题pdf笔记
  2. MySQL事务,这篇文章就够了
  3. Spring 中常用的设计模式对比
  4. 1、请简述DNS的作用,并说明当你输入网址“www.nxtc.edu.cn“按下回车后,DNS是怎么工作的?(关键步骤可以给出相应图示) 2、详细描述域名劫持攻击的过程及防御方式。
  5. linux快捷命令怎么拼日期,liunx常用命令,快捷键
  6. Objective-C马路成魔【14-关键C语言功能】
  7. python调用jenkinsAPI构建jenkins,并传递参数
  8. Windows Phone 7(accelerometer)重力感应编程
  9. 使用echarts(三)自定义图表仪表盘
  10. [转]STL的内存分配器
  11. 访问被拒绝:“Interop.jmail”
  12. Scala简介、安装、函数、面向对象
  13. Ant Design Vue 菜单刷新后保持菜单选中/点击菜单,收起其他展开的所有菜单,保持菜单聚焦简洁
  14. linux脚本while死循环,shell编程之while死循环
  15. 推荐一些stm32和DSP的学习视频和教程(资料)
  16. Go语言环境搭建详解(2020版)
  17. Windows10 MySQL8.0版本的压缩包安装方式
  18. Grafana密码重置
  19. 运行阶段及面向对象技巧
  20. CentOS8_CA

热门文章

  1. 不好意思,问一个比较菜的问题,请问高手,Blogs与FAQ有没有区别?
  2. 应用宝苹果版_密特拉之星应用宝下载-密特拉之星应用宝版本1.0.4 腾讯版
  3. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题
  4. 手写jQuery轮播图(无缝回到第一张)
  5. python排序算法——希尔排序(附代码)
  6. Word取消首字母大写
  7. sip里面的几个概念,会话 事务
  8. java excel 替换_Excel根据另一个工作表中的查找替换单元格值
  9. 报表统计sql应该如何写?
  10. 【西电-网信院】数据结构与算法分析2022期末考试