图文并茂 VLAN 详解,让你看一遍就理解 VLAN( 六 )


7.2、三层交换机(Layer 3 Switch)
为了解决上述问题,三层交换机应运而生 。三层交换机,本质上就是“带有路由功能的(二层)交换机” 。路由属于OSI参照模型中第三层网络层的功能,因此带有第三层路由功能的交换机才被称为“三层交换机” 。
关于三层交换机的内部结构,可以参照下面的简图 。

图文并茂 VLAN 详解,让你看一遍就理解 VLAN

文章插图
在一台本体内,分别设置了交换机模块和路由器模块;而内置的路由模块与交换模块相同,使用ASIC硬件处理路由 。因此,与传统的路由器相比,可以实现高速路由 。并且,路由与交换模块是汇聚链接的,由于是内部连接,可以确保相当大的带宽 。
7.3、使用三层交换机进行VLAN间路由(VLAN内通信)
在三层交换机内部数据究竟是怎样传播的呢?基本上,它和使用汇聚链路连接路由器与交换机时的情形相同 。
假设有如下图所示的4台计算机与三层交换机互联 。当使用路由器连接时,一般需要在LAN接口上设置对应各VLAN的子接口;而三层交换机则是在内部生成“VLAN接口(VLAN Interface)” 。VLAN接口,是用于各VLAN收发数据的接口 。
注:在Cisco的Catalyst系列交换机上,VLAN Interface被称为SVI——Switched Virtual Interface
图文并茂 VLAN 详解,让你看一遍就理解 VLAN

文章插图
为了与使用路由器进行VLAN间路由对比,让我们同样来考虑一下计算机A与计算机B之间通信时的情况 。首先是目标地址为B的数据帧被发到交换机;通过检索同一VLAN的MAC地址列表发现计算机B连在交换机的端口2上;因此将数据帧转发给端口2 。
7.4、使用三层交换机进行VLAN间路由(VLAN间通信)
接下来设想一下计算机A与计算机C间通信时的情形 。针对目标IP地址,计算机A可以判断出通信对象不属于同一个网络,因此向默认网关发送数据(Frame 1) 。
图文并茂 VLAN 详解,让你看一遍就理解 VLAN

文章插图
整体的流程,与使用外部路由器时的情况十分相似——都需要经过“发送方→交换模块→路由模块→交换模块→接收方”这样的流程 。
八、加速VLAN间通信的手段
8.1、流(Flow)
根据到此为止的学习,我们已经知道VLAN间路由,必须经过外部的路由器或是三层交换机的内置路由模块 。但是,有时并不是所有的数据都需要经过路由器(或路由模块) 。
例如,使用FTP(File Transfer Protocol)传输容量为数MB以上的较大的文件时,由于MTU的限制,IP协议会将数据分割成小块后传输、并在接收方重新组合 。这些被分割的数据,“发送的目标”是完全相同的 。发送目标相同,也就意味着同样的目标IP地址、目标端口号(注:特别强调一下,这里指的是TCP/UDP端口) 。自然,源IP地址、源端口号也应该相同 。这样一连串的数据流被称为“流(Flow)” 。
图文并茂 VLAN 详解,让你看一遍就理解 VLAN

文章插图
只要将流最初的数据正确地路由以后,后继的数据理应也会被同样地路由 。
据此,后继的数据不再需要路由器进行路由处理;通过省略反复进行的路由操作,可以进一步提高VLAN间路由的速度 。
8.2、加速VLAN间路由的机制
接下来,让我们具体考虑一下该如何使用三层交换机进行高速VLAN间路由 。
首先,整个流的第一块数据,照常由交换机转发→路由器路由→再次由交换机转发到目标所连端口 。这时,将第一块数据路由的结果记录到缓存里保存下来 。需要记录的信息有:
  • 目标IP地址
  • 源IP地址
  • 目标TCP/UDP端口号
  • 源TCP/UDP端口号
  • 接收端口号(交换机)
  • 转发端口号(交换机)
  • 转发目标MAC地址
...
等等 。
同一个流的第二块以后的数据到达交换机后,直接通过查询先前保存在缓存中的信息查出“转发端口号”后就可以转发给目标所连端口了 。
这样一来,就不需要再一次次经由内部路由模块中继,而仅凭交换机内部的缓存信息就足以判断应该转发的端口 。
这时,交换机会对数据帧进行由路由器中继时相似的处理,例如改写MAC地址、IP包头中的TTL和Check Sum校验码信息等 。
图文并茂 VLAN 详解,让你看一遍就理解 VLAN

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


推荐阅读