三层交换是什么?
三层交换中的三层指的是 0S|七层中的第三层,即网络层。网络层的核心设备是路由器,传统的交换机位于第二层,那么把第三层和交换机联系在一起,意味着该交换机可以工作在第三层,运行路由协议。所以,三层交换机是一个普通的二层交换机和三层路由器的结合体,它同时具备二层交换特性及三层路由特性
为什么需要三层交换?
单臂路由的缺陷
对于单臂路由的缺陷,这里只说明其最为致命的缺陷。在路由器与交换机之间连接的链路,对于整个网络而言无疑是核心骨干链路,自然很容易成为整个网络流量的瓶颈。不仅如此骨干链路的上端是借助路由器的子接口实现的,这些子接口堆积在路由器的一个物理接口上,无疑给转发性能本来就不强的路由器带来了很大的压力。如果公司业务对网络流量的需求不是很大,则这种缺陷可能不太明显。但如果公司网络的 VLAN 数量众多,或公司业务对流量的需求很高,这种缺陷就尤为明显,甚至能导致整个网络瘫痪,
下图很形象地展示了这一点,当客户端 VLAN 的数量增加时,将会带动路由器与交换机之间骨干链路流量的增加,而且所有 VAN 的网关集中在路由器的物理接口上,这给路由器增加了很大的转发压力。试想一下,每个 VLAN 的每个数据帧都需要让路由器完成 MAC 地址的封装、VLAN 标签的封装,这对路由器而言将是怎样的灾难?
大家也许会有其他的疑问,为什么一定要“单臂”路由,多几个“臂”不是可以很好地缓解上述问题吗?如图所示,为了缓解压力,在路由器的F0/0、F0/1 两个物理接口上配置单臂路由来实现全 VLAN 互通。
这种情况下,如果上图中客户端主机都处于不同 VLAN 的不同网段自然没有问题。但如果主机 A与主机C处于同- VLAN 的同一网段,同一路由器上两个物理接口不能配置相同的P地址,那么应该如何配置子接口的IP地址呢?而且在实际需求中,公司中部署 VLAN 的结构有时是需要调整的,如员工物理位置发生变化、部门合并拆分等,这时就需要重新配置路由器的子接口地址,它很不灵活,给维护工作带来了很大的麻烦。
此外还有一个问题,当网络规模相对较大时,公司网络需要的将不仅仅是客户端主机之间的交换,而是各个 VLAN 之间的交换。一般情况下,不同VAN配置不同的P地址段,因此单靠二层交换是无法完成上述需求的,而路由器虽然是三层设备,但其一般应用于网关设备,路由功能方面比较强大,交换的能力要差很多。一个非常现实的问题是,作为集团分公司的路由网关中可能会有相对庞大的路由表((集团网本身较复杂),借助该路由器实现单臂路由时,即使是在分公司内部的 VLAN之间互相通信,也需要查询整个路由表来判断数据包的走向,这将严重浪费该路由器的性能。在这样的一种机制下,网络规模稍微大一点,就需要大幅提升路由设备本身的硬件资源,从而在成本方面出现严重的浪费
综上所述
单臂路由的缺陷可以归结为以下三点
★“单臂”本身是网络的骨干链路,容易形成网络瓶颈,
★子接口依然依托于物理接口,就实际应用而言不灵活
★每次 VLAN 间转发都需要查看路由表,严重浪费设备资源
三层交换机的原理
三层交换机通过硬件来交换和路由数据包。为完成在硬件中处理数据包的高层信息,CiscoCatalyst 交换机使用传统的MLS体系结构或基于CEF的MLS 体系结构。传统的MLS 是一种老式特性,而所有新型的 Catalys交换机都支持 CEF 多层交换。
1.传统的 MLS
MLS 让 ASIC(Application-Specific Integrated Circuit,应用专用集成电路)能够对被路由的数据包执行第二层重写操作。第二层重写操作包括重写源 MAC 地址和目标 MAC 地址,以及写入重新计
算得到的 CRC(Cyclic Redundancy Check,循环冗余校验码)。支持传统的 MLS 的 Catalyst 交换机使用一种 MLS 协议从MLS路由器那里获悉第二层重写信息使用传统的 MLS 时,第三层引擎(路由处理器)和交换 ASIC 协同工作,在交换机上建立第三层条目使用传统 MLS 时,交换机将数据流中的第一个数据包转发给第三层引擎,后者以软件交换的方式对数据包进行处理。对数据流中的第一个数据包进行路由处理后,第三层引擎对硬件交换组件进行程序处理,使之为后续的数据包选择路由。
如图所示,处于 VAN1中的主机要将数据包发送给连接在 VLAN2中的主机,这个过程需要经过以下几个步骤。
(1)VLAN1的主机将数据包发送给默认网关。三层交换机是主机的网关,因此,三层交换机上VLAN1的端口接收到主机发来的数据包。在这个数据帧中,源 MAC 地址是 VLAN1 主机的 MAC 地址,目标 MAC 地址是默认网关的 MAC 地址:
(2)三层交换机的第三层引擎接收到这个数据包,在转发数据包前重写数据帧的二层封装。三
层交换机首先要使用 ARP 来获得 VLAN2 主机的 MAC 地址。(3)三层交换机用VLAN2主机的 MAC 地址作为发送帧的目标 MAC 地址来封装数据帧,并重写CRC 值,同时,在硬件中创建一个MLS条目,以便能够重写和转发这个数据流中的后续数据包,(4)VLAN1主机发送给 VLAN2主机的后续数据包直接由三层交换机的 ASIC 进行处理,ASIC根据刚才创建的 MLS 条目重写第二层封装,并快速转发数据包,如图所示。
这个过程常常被称为“一次路由,多次交换”。卡也就是说,交换机的三层引擎只需要处理数据流中的第一个数据包,而后续的数据全部由硬件来执行转发,这样就实现了三层交换机的快速转发功能
2.基于CEF的MLS
CEF 是一种基于拓扑的转发模型,可预先将所有路由选择信息加入到FB中。这样,交换机就能够快速查找路由选择信息
CEF 主要包含如下两个转发用的信息表。
FIB:CEF 使用 FB 来做出基于目标 P 前缀的转发决策。从概念上说,FB 类似于路由表,包>含路由表中转发信息的镜像。当网络的拓扑发生变化时,路由表将被更新,而FB 也将随之变化。FIB 中包含下一跳地址信息,这些信息是根据路由表中的信息得到的。使用基于CEF的 MLS 时,第三层引擎和硬件交换组件都维护一个FB。
邻接关系表:在网络中,如果两个节点之间在数据链路层只有一跳,则它们彼此相邻。除FB 外,CEF还使用邻接关系表来存储第二层编址信息。对于每个FB 条目,邻接关系表中都包含相应的第二层地址。和 FB 一样,使用基于 CEF 的 MLS 时,第三层引擎和硬件交换组件都维护一个邻接关系表。
如图所示,在使用基于 CEF 的 MLS 情况下,连接在 VAN1 上的主机 A 要通过三层交换机将数据发送给连接在 VLAN2上的主机B时,需要经过以下步。
(1)主机A发送数据包给自己的默认网关,三层交换机是主机A的网关,因而可接收到这个数
据包(2)三层交换机查找FB 表,数据包的目的P地址 10.20.20.2与三层交换机直连(3)三层交换机查找邻接关系表,在邻接关系表中,有P地址与源 MAC地址,目标 MAC 地址的对应关系,并找到转发端口。
(4)三层交换机的硬件交换组件根据邻接关系表重写数据帧的二层封装,并快速转发