当前位置:首页 > 生活 > 正文

从二层交换机来说为什么三层交换机比路由器转发速率快(三层交换机和二层)

我们都知道二层交换机工作的数据链路层,依靠mac地址来进行数据通信的,而路由器是工作在网络层,依靠ip地址来通信的,为了说明三层交换机比路由器的转发速率快,那我们还是先从二层交换机入手。

首先我们来比较下二层交换机与路由器的报文转发速率(当然严格意义上是不能这样比较的,毕竟一个是二层设备,一个是三层设备,这主要是为下面说明三层交换机与路由器之间的比较做铺垫)

二层交换机:接收到由自己的物理层送上来的二层数据帧时,根据源mac地址学习并写入mac地址表中,根据目的mac地址查找mac地址表决定是转发还是广播,这里交换机查找mac地址表和转发都是由硬件ASIC芯片来完成,而且二层交换机没有对数据帧做过任何封装,解封装动作(忽略物理层bit数据流还原成二层以太帧),并且没有对数据帧做过任何改写

路由器:工作在网络层,对接收到的数据帧必须解封装,获取三层数据,根据三层数据的目的ip,查找路由表,封装下一跳的mac等等一系列动作,相比二层交换机而言,路由器查找路由表是通过基于软件的cpu来查找,比二层交换机查找mac地址表用的ASIC硬件芯片慢,另外路由器还得对数据进行拆封,解封动作,而且还改写了数据帧(只改写二层数据帧的目的mac、源mac、FCS,不会改变三层数据包的内容)

由上可知:基于软硬件的查找转发方式(路由器通过软件的相对慢些)以及对数据包的处理(路由器相对来说复杂),这两个原因导致二层交换机的转发性能通常高于路由器(严格意义上这样的比较是没有意义的,毕竟一个是二层设备、一个是三层设备,主要是为下面做铺垫)

下面开始说三层交换机

以前的文章中也提到过,三层交换机的核心思想是:“一次路由,多次转发”,实现了数据包的快速转发:三层交换机技术=二层交换技术+三层路由转发技术

也即是:

三层交换技术=1次三层路由转发技术+多次(N)二层交换技术

路由器=(N+1)次三层路由转发技术

再结合上面所写的二层交换机的转发速率高于路由器,可以得出三层交换机的转发速率同样高于路由器

三层交换机的硬件架构

假设两个使用ip协议的站点A、B通过第三层交换机进行通信,发送站点A在开始发送时,把自己的ip地址与B站点的ip地址进行比较,判断B站是否与自己再同一个子网内,若在同一个子网内,则进行二层转发(没经过三层的必要);若A、B站点不在同一个子网内,那么发送站点A要向“缺省网关”发出arp请求,而“缺省网关”的ip地址其实就是三层交换机上站点A所属vlan的接口ip地址,当A向“缺省网关”发送一个arp请求时,交换机就向发送站点A回一个arp回应报文,同时通过软件把站点A的ip地址、mac地址、与交换机直接相连的端口号等信息写到交换芯片的三层硬件表项中;站点A收到回复报文后,进行目的mac的替换,把要发到B的包首先发给交换机。交换机收到这个包之后,进行源mac地址学习,目的mac地址查找,由于此时目的mac地址为交换机的mac地址,在这种情况下将会把该报文送到交换芯片的三层 引擎处理,由于站点B属于交换机的直连网段之一,cpu收到这个ip报文以后,会直接以B的ip为索引检查arp缓存,若没有站点B的mac地址,则根据路由信息向B站广播一个arp请求,B站收到此请求后向交换机回复其mac地址,cpu收到这个arp回复的同时,同样把站点B的ip地址、mac地址、端口信息等写入交换芯片的三层硬件转发表项中,然后把由站点A发来的ip报文转发给站点B,这样就完成了站点A到站点B的第一次单向通信。由于芯片内部的三层引擎中已经保存站点A、B的路由信息,以后站点A、B之间进行通信或其它网段的站点想要与A、B进行通信,交换芯片则会直接把包从三层硬件表项中指定的端口转发出去,而不必再把包交给cpu处理,这就是“一次路由,多次转发”的实现,大大提高了转发速度.

平常所说的三层交换机基本上是指硬件三层交换机,三层交换机其实也有软件三层交换机,它们的区别在于三层交换 引擎,硬件三层交换机的三层交换引擎通常是用专用的ASIC芯片来完成(类似二层交换机),而软件三层交换机的三层交换引擎通常是由cpu来完成(类似路由器),没有特别说明情况下一般是指硬件三层交换机.