使用路由器进行
VLAN
间路由时的问题
现在,我们知道只要能提供
VLAN
间路由,就能够使分属不同
VLAN
的计算机互相通信。但是,如果使用路由器进行
VLAN
间路由的话,随着
VLAN
之间流量的不断增加,很可能导致路由器成为整个网络的瓶颈
。
交换机使用被称为
ASIC
(
Application Specified Integrated Circuit
)的专用硬件芯片处理数据帧的交换操作,在很多机型上都能实现以缆线速度(
Wired Speed
)交换。而路由器,则基本上是基于软件处理的。即使以缆线速度接收到数据包,也无法在不限速的条件下转发出去,因此会成为速度瓶颈。就
VLAN
间路由而言,流量会集中到路由器和交换机互联的汇聚链路部分,这一部分尤其特别容易成为速度瓶颈。并且从硬件上看,由于需要分别设置路由器和交换机,在一些空间狭小的环境里可能连设置的场所都成问题。
三层交换机(
Layer 3 Switch
)
为了解决上述问题,三层交换机应运而生。三层交换机,本质上就是“带有路由功能的(二层)交换机”。路由属于
OSI
参照模型中第三层网络层的功能,因此带有第三层路由功能的交换机才被称为“三层交换机”。
关于三层交换机的内部结构,可以参照下面的简图。
在一台本体内,分别设置了交换机模块和路由器模块;而内置的路由模块与交换模块相同,使用
ASIC
硬件处理路由
。因此,与传统的路由器相比,可以实现高速路由。并且,路由与交换模块是汇聚链接的,由于是内部连接,可以确保相当大的带宽。
使用三层交换机进行
VLAN
间路由(
VLAN
内通信)
在三层交换机内部数据究竟是怎样传播的呢?基本上,它和使用汇聚链路连接路由器与交换机时的情形相同。
假设有如下图所示的
4
台计算机与三层交换机互联。当使用路由器连接时,一般需要在
LAN
接口上设置对应各
VLAN
的子接口;而三层交换机则是在内部生成“
VLAN
接口(
VLAN Interface
)”
。
VLAN
接口,是用于各
VLAN
收发数据的接口。(注:在
Cisco
的
Catalyst
系列交换机上,
VLAN Interface
被称为
SVI
——
Switched Virtual Interface
)
为了与使用路由器进行
VLAN
间路由对比,让我们同样来考虑一下计算机
A
与计算机
B
之间通信时的情况。首先是目标地址为
B
的数据帧被发到交换机;通过检索同一
VLAN
的
MAC
地址列表发现计算机
B
连在交换机的端口
2
上;因此将数据帧转发给端口
2
。
使用三层交换机进行
VLAN
间路由(
VLAN
间通信)
接下来设想一下计算机
A
与计算机
C
间通信时的情形。针对目标
IP
地址,计算机
A
可以判断出通信对象不属于同一个网络,因此向默认网关发送数据(
Frame 1
)
。
交换机通过检索
MAC
地址列表后,经由内部汇聚链接,将数据帧转发给路由模块。在通过内部汇聚链路时,数据帧被附加了属于红色
VLAN
的
VLAN
识别信息(
Frame 2
)
。
路由模块在收到数据帧时,先由数据帧附加的
VLAN
识别信息分辨出它属于红色
VLAN
,据此判断由红色
VLAN
接口负责接收并进行路由处理
。因为目标网络
192.168.2.0/24
是直连路由器的网络、且对应蓝色
VLAN
;因此,接下来就会从蓝色
VLAN
接口经由内部汇聚链路转发回交换模块。在通过汇聚链路时,这次数据帧被附加上属于蓝色
VLAN
的识别信息(
Frame 3
)
。
交换机收到这个帧后,检索蓝色
VLAN
的
MAC
地址列表,确认需要将它转发给端口
3
。由于端口
3
是通常的访问链接,因此转发前会先将
VLAN
识别信息除去(
Frame 4
)。最终,计算机
C
成功地收到交换机转发来的数据帧。
整体的流程,与使用外部路由器时的情况十分相似——都需要经过发送方
→
交换模块
→
路由模块
→
交换模块
→
接收方
。