VLAN间路由以及三层交换加速路由转发的原理

2018年8月4日16:00:57 发表评论 639 views

   我们已经知道了VLAN之间没有二层通信,那么VLAN之间该如何通信呢?答案是通过路由。我们知道,LAN内的通信需要知道MAC地址,而在TCP/IP协议中,获取MAC的方式ARP请求。而ARP是广播报文,这就意味着,如果两个电脑不在一个广播域里,就无法解析MAC地址,也就无法直接通信,因此两个VLAN之间无法通过二层通信,只有通过路由来通信。那么VLAN间路由的具体过程是什么样的呢?在讲述过程之前,我们首先解决一个问题,那就是接口扩展性。

  采用VLAN间路由最直观的方式,就是每个VLAN提供一个路由接口,如下图:

[转载]VLAN间路由以及三层交换加速路由转发的原理

  可以看出,红色VLAN内部的报文可以走二层转发,而红色和蓝色VLAN通信的报文则要经过路由器,通过IP的方式来通信。但是这就遇到了和之前跨交换机VLAN交换类似的问题,接口扩展性不好,每个VLAN都需要增加一个接口,增加更多的投资。因此,在路由器上采用了子接口的概念。具体实现过程为:首先将用于连接路由器的交换机端口设为TRUNK口,而路由器上的端口也必须支持TRUNK协议。双方用于TRUNK链路的协议自然也必须相同。接着在路由器上定义对应各个VLAN子接口(Sub Interface)”。尽管实际与交换机连接的物理端口只有一个,但在理论上我们可以把它分割为多个虚拟端口。这样改进后的网络设计图如下所示:

[转载]VLAN间路由以及三层交换加速路由转发的原理

   同一个VLAN内部的通信,此处不再赘述,在交换机内部即可。这里描述一下两个VLAN之间的通信过程,请考虑一下下图A到C的通信过程。

[转载]VLAN间路由以及三层交换加速路由转发的原理

   计算机A从通信目标的IP地址(192.168.2.1)得出C与本机不属于同一个网段。因此会向设定的默认网关(Default GatewayGW)转发数据帧。在发送数据帧之前,需要先用ARP获取路由器的MAC地址。在得到路由器端口的MAC地址后,A会发送去往C的报文,但是MAC地址是路由器端口的地址,也就是报文①。

   交换机在端口1上收到①的数据帧后,检索MAC地址列表中与端口1同属一个VLAN的表项。由于TRUNK链路会被看作属于所有的VLAN,因此这时交换机的端口6也属于红色VLAN中。这样交换机就知道往路由器MAC发送数据帧,需要经过端口6转发。从端口6发送数据帧时,由于它是TRUNK链接,因此会被附加上红色VLAN识别信息,也就是报文②。

   路由器收到的数据帧后,确认其VLAN识别信息,由于它是属于红色VLAN的数据帧,因此交由负责红色VLAN的子接口接收。由于目标网络192.168.2.0/24是蓝色VLAN,,且该网络通过子接口与路由器直连,因此只要从负责蓝色VLAN的子接口转发就可以了。这时,数据帧的目标MAC地址被改写成计算机C的MAC地址;并且由于需要经过TRUNK链路转发,因此被附加了属于蓝色VLAN的识别信息。这就是报文③。

   交换机收到的数据帧后,根据VLAN标识信息从MAC地址列表中检索属于蓝色VLAN的表项。由于通信目标计算机C连接在端口3上、且端口3为普通的access链接,因此交换机会将数据帧除去VLAN识别信息后从端口3转发给计算机C,也就是报文④。

   至此,A就完成了和C的通信。在整个过程中,不同VLAN间的通信需要经过发送方——交换机——路由器——交换机——接收方的过程。

   在上述过程中,我们可以看到,这个过程不仅需要二层交换,也需要三层路由,而路由器基本上是软件处理,不像交换机大多是高速处理的硬件,因此这个过程往往会拖慢网络速度,逐渐成为网络转发中的瓶颈。由此,三层交换机应运而生。

   在前面的文章里,我们已经大致了解了三层交换与路由器之间的区别。三层交换机实际上是一个带有路由模块的交换机,如果不加以改进,VLAN间的交换实际上和刚才描述的过程完全一样,只是将所有的步骤移到了一个交换机内部实现,如下图所示。

[转载]VLAN间路由以及三层交换加速路由转发的原理

   因此,VLAN间的通信还是要遵循发送方交换模块路由模块交换模块接收方的模式,并没有很大的改进。因此三层交换机对整个过程做了改进,加速VLAN间的通信。

   在实际的网络传输中,五元组相同的报文实际上传输的过程也完全一致(五元组:源目IP、源目端口和协议,我们称之为一条数据流)。因此只要知道一条数据流的第一个报文从哪个端口转发,那么后续所有的报文也从这个端口转发即可。如下图所示。[转载]VLAN间路由以及三层交换加速路由转发的原理

   因此,三层交换机的加速办法就是:在第一个报文的通信完成后,将这条数据流的信息保存在缓存中,后续的报文也从相同的端口转发出去,也不需要经过路由模块了。转发过程如下图所示。

[转载]VLAN间路由以及三层交换加速路由转发的原理

   通过在交换机上缓存路由结果,实现了以缆线速度(Wired Speed)接收发送方传输来数据的数据、并且能够全速路由、转发给接收方。当然加速的原理大致如此,实际加速的办法各个厂商会有不同的实现方式。

   讲到这里,你也许会有疑问,既然三层交换可以完成路由的工作,而且速度更快,那么为什么还需要路由器呢?

   关于路由器的必要性,主要体现在以下三个方面:

1、用于与WAN连接

  三层交换机终究是“交换机”。也就是说,绝大多数机型只配有LAN(以太网)接口。在少数高端交换机上也有用于连接WAN的串行接口或是ATM接口,但在大多数情况下,连接WAN还是需要用到路由器。

2、保证网络安全

  在三层交换机上,通过数据包过滤也能确保一定程度的网络安全。但是使用路由器所提供的各种网络安全功能,用户可以构建更为安全可靠的网络。路由器提供的网络安全功能中,除了最基本的数据包过滤功能外,还能基于IPSec构建VPN(Virtual Private Network)、利用RADIUS进行用户认证等等。

3、支持除TCP/IP以外的网络架构

  尽管TCP/IP已经成为当前网络协议架构的主流,但还有不少网络利用Novell Netware下的IPX/SPX或Macintosh下的Appletalk等网络协议。三层交换机中,除了部分高端机型外基本上还只支持TCP/IP。因此,在需要使用除TCP/IP之外其他网络协议的环境下,路由器还是必不可少的。

   下图就是一个交换机和路由器配合构建LAN的实例。

[转载]VLAN间路由以及三层交换加速路由转发的原理

   在这个例子中,我们利用在各楼层配置的二层交换机定义VLAN,连接TCP/IP客户计算机。各楼层间的VLAN间通信,利用三层交换机的高速路由加以实现。如果网络环境要求高可靠性,还可以考虑冗余配置三层交换机。

  与WAN的连接,则通过带有各种网络接口的路由器进行。并且,通过路由器的数据包过滤和VPN等功能实现网络安全。此外,使用路由器还能支持Novell Netware等TCP/IP之外的网络。

  只有在充分掌握了二层、三层交换机以及传统路由器的基础上,才能做到物尽其用,构筑出高效率、高性价比的网络。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: