例解三层交换原理

    以后PCA与PCB之间进行通信,由于芯片内部的三层引擎中已经保存了从PCA达PCB完整转发路径信息。或其它网段的站点想要与PCA或PCB进行通信时,三层交换机的ASIC芯片就会直接把包从对应的三层硬件转发表项中指定的端口转发出去,而不必再把包交给CPU进行路由处理。这就是所谓的一次路由(指通过CPU路由表查到对应的直连网段)多次交换”原理,大大提高了转发速度。

    所以转发性能非常高。而三层交换机的三层转发也是依靠ASIC芯片完成的路由器的路由功能主要依靠CPU软件进行的但其中除了二层交换用的CA M表外,二层交换机的二层数据交换一般都是使用ASICApplicatSpecifIntegratCircuit专用集成电路)硬件芯片中的CA M表来实现的因为是硬件转发。还保管有专门用于三层转发的三层硬件转发表。

    不同网络环境下、不同厂家的三层交换机的三层交换流程都不完全相同。如图7-55所示的仅一个直接连接在一台三层交换机上的两个不同网段主机三层交换的基本流程,三层交换机的三层交换原理比较复杂。各主要方法解释如下:

    将自己的IP地址与目的主机的IP地址进行比拟,1源主机在发起通信之前。如果源主机判断目的主机与自己位于不同网段时,需要通过网关来递交报文的所以它首先需要通过一个ARP请求报文获取网关的MA C地址(源主机不知道网关MA C地址的情形下)即源主机先发送ARP请求帧以获取网关IP地址对应的MA C地址。

    应答报文中的源MA C地址”就包含了网关的MA C地址。2网关在收到源主机发来的ARP请求报文后以一个ARP应答报文进行回应。

     源主机再用网关MA C地址作为报文的目的MA C地址”以源主机的IP地址作为报文的源IP地址”以目的主机的IP地址作为“目的IP地址”先把发送给目的主机的数据发给网关。3得到网关的ARP应答后。

    由于检查得知源主机和目的主机的IP地址不在同一网段,4网关在收到源主机发送给目的主机的数据后。于是把数据报上传到三层交换引擎(ASIC芯片)里面检查有无目的主机的三层转发表。

    则向CPU请求检查软件路由表,5如果在三层硬件转发表中没有找到目的主机的对应表项。如果有目的主机所在网段的路由表项,则还需要得到目的主机的MA C地址,因为数据包在链路层是要经过帧封装的于是三层交换机CPU向目的主机所在网段发送一个ARP广播请求包,以获得目的主机MA C地址。

    向ARP表中添加对应的表项,6交换机获得目的主机MA C地址后。并转发由源主机到达目的主机的灵气包。同时三层交换机三层引擎会结合路由表生成目的主机的三层硬件转发表。

    不用再查看CPU中的路由表了以后到达目的主机的数据包就可以直接利用三层硬件转发表中的转发表项进行数据交换。

这时用于互连的交换机作三层交换转发。这就是一次路由,以上流程适用位于不同VLA N网段)中的主机互访时属于这种情况。多次交换”原理。

三层交换示例

    同一交换机上的不同网段主机通信和不同交换机上的不同网段主机通信的基本原理是一样的只是具体流程有所区别。本节仅以比较简单的同一交换机上的不同网段主机通信”这种情形来解释上节介绍的三层交换原理。三层交换中。

    通信的源、目的主机连接在同一台三层交换机上,如图7-56所示。但它位于不同VLA N也位于不同网段)对于三层交换机来说,这两台主机都位于它直连网段内,IP对应的路由都是直连路由。图中已标明了两台主机的MA C地址、IP地址、网关IP地址(也就是对应VLA N接口IP地址)以及三层交换机的MA C地址。

    那是因为在本示例中,本示例中虽然划分了VLA N但是下面的数据转发流程中我并没有提到VLA N标志。通信双方主机都连接到同一个三层交换机上,端口类型均为Access类型,发送和接收的数据帧都是无VLA N标志的下节介绍的示例中,数据的转发过程中将会涉及到VLA N标志问题。

    数据包的传输流程如下:假设三层交换机上当前还未建立任何硬件转发表项)当 PCA要第一次向 PCB发向数据包时。

    觉得就这样直接发送肯定不行,1PCA首先检查出目的IP地址2.1.1.2PCB与自己不在同一网段。于是把要发送的数据包先缓存起来。知道这个数据包必需经过网关来转发,所以先检查一下自己是已经知道网关的MA C地址(也就是PCA主机的ARP表中查看是否有与网关IP地址对应的MA C地址表项)如果有,则直接把要发送给PCB数据包在封装成数据帧时,把“目的MA C地址”字段的值设为网关的MA C地址(也就是三层交换机的MA C地址MA CS交换机上各端口、各VLA N共享一个或多个MA C地址的

则先向网关发出(其实是会向本VLA N内所有节点发出)一个ARP广播请求报文,2如果PCA自己的ARP表中没有找到网关MA C地址。以获取网关IP地址 1.1.1.1所对应的MA C地址。此ARP请求报文的源MA C地址”字段是PCAMA C地址“MA CA目的MA C地址”因为未知,以全0格式填充;源IP地址”和“目的IP地址”字段分别填上PCAIP地址(1.1.1.2和网关的IP地址(1.1.1.1

以太网帧头中的源MA C地址”字段值仍为PCAMA C地址“MA CA目的MA C地址”字段值为广播MA C地址FF-FF-FF-FF-FF-FF以,A RP请求报文向下传输到以太网数据链路层后被再次封装成以太网帧。帧类型”字段填上ARP协议号0x0806有关ARP报文和ARP帧格式参见本章7.3.10节。

    检查请求报文发现被请求IP地址(也就是目的IP地址”自己的三层接口IP地址,3三层交换机在收到PCA发来的ARP请求报文后。于是向PCA A发回一个ARP应答报文,并将对应的三层接口MA CMA CS填充在应答报文中的目的MA C地址“字段其中。同时通过对PCA发送的ARP请求报文分析,把PCAIP地址与MA C地址对应关系(1.1.1.2<==>MA CA记录到自己的ARP表中去,然后把PCAIP地址(作为“目的IP地址”MA C地址(作为“下一跳MA C地址”以及与交换机直接相连的端口号等信息下发到三层交换机ASIC芯片中的三层硬件转发表。此时在三层硬件转发表中就有了第一个转发表项,即PCA转发表项。

    最关键的就是有一个专门用于三层转发的三层硬件转发表”和“ARP表”之间有联系,【说明】三层交换机中。但也有区别。ARP表中只是IP地址和MA C地址的映射关系,不包括转发入口,也不包括对应的VLA NID而三层硬件转发表中则包括了全部这些,形成一个:目的IP地址、VLA NID端口和下一跳MA C地址的关系表项。因为在进行三层转发时,改变的帧封装后的源和目的MA C地址这两个字段,原来输入IP包中的目的MA C地址”作为转发的下一跳MA C地址”原来的源MA C地址”改为三层交换机自身的MA C地址,源和目的IP地址都不变(因为这是封装在帧的数据”局部)另外,三层转发表是存储在ASCI硬件芯片上的直接由ASIC芯片调用,而ARP表是存储在内在中,由CPU软件调用。但三层硬件转发表项还是由CPU提供的

    把要发送给PCB数据包经过帧封装后的目的MA C地址”修改为网关MA C地址(MA CS1其它不变,4PCA收到网关的ARP应答报文后。先把数据包发给网关(三层交换机)

    因为“目的MA C地址”为交换机自己的MA C地址,5三层交换机在收到这个数据包后。而且“目的IP地址”和“源IP地址”不在同一网段,所以会直接提交到负责三层交换的ASIC芯片,根据包中的目的IP地址”PCBIP地址2.1.1.2三层硬件转发表中检查有无对应表项,因为是第一次通信,所以结果是查找失败,于是将数据包再转送到CPU去进行软件路由处理。

   发现匹配了一个直连网段(PCB对应的网段)于是继续查在ARP表中查找对应的MA C地址项。同样是由于是第一次查找,6CPU同样会根据包中的目的IP地址”去查找其软件路由表。所以仍然查找失败。如果在ARP表中找到对应的MA C地址,则数据可以直接由软件路由表转发了

    查找“目的IP地址”为2.1.1.2所对应MA C地址。报文经过帧封装后的源MA C地址”三层交换机的MA C地址(MA CS目的MA C地址”全为0源IP地址”VLA N3网段的网关IP地址(2.1.1.1目的IP地址”PCBIP地址(2.1.1.27下面仍以在ARP表中也没找到PCB对应的MA C地址为例进行介绍。此时三层交换机CPU会在PCB所在网段的AN3中所有端口发送一个ARP广播请求报文。

    检查发现被请求的IP地址是自己的IP地址,8PCB收到三层交换机CPU发送的ARP请求报文后。于是发送一个ARP应答报文,并将自己的MA C地址 MA CB包括在其中。同时,将三层交换机上VLA N3网段的网关IP地址与MA C地址的对应关系(2.1.1.1<==>MA CS记录到自己的ARP表中去。

    将其IP地址和MA C地址对应关系(2.1.1.2<==>MA CB记录到自己的ARP表中去,9三层交换机CPU收到PCBARP应答报文后。把PCBIP地址、MA C地址、进入交换机的端口号等信息下发到三层交换机的三层转发中。此时转发表中就有到达PCA和PCB这两条对应的表项了

    以及软件路由表信息,10三层交换机CPU根据获得的PCBMA C地址和端口信息。把由PCA发来的IP数据包转发给PCB这样就完成了PCAPCB第一次单向通信。