H3C 【网络大爬虫】三层交换原理

来源:互联网 发布:毛利润算法 编辑:程序博客网 时间:2024/04/28 15:30

原文地址:

http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_One/Home/Catalog/200911/655251_97665_1.htm

 

下面分别以两种组网情况下的主机间通信来解释三层交换机的转发原理。

组网1如图12所示,通信的源、目的主机连接在同一台三层交换机上,但它们位于不同VLAN(网段)。对于三层交换机来说,这两台主机都位于它的直连网段内,它们的IP对应的路由都是直连路由。

                                                                                                                                                                       图12 三层转发组网1

12中标明了两台主机的MACIP地址、网关,以及三层交换机的MAC、不同VLAN配置的三层接口IP。当 PC A PC B 发起ICMP请求时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)

(1)             根据前面的描述,PC A首先检查出目的IP地址2.1.1.2PC B)与自己不在同一网段,因此它发出请求网关地址1.1.1.1对应MACARP请求;

(2)             L3_SW收到PC AARP请求后,检查请求报文发现被请求IP是自己的三层接口IP,因此发送ARP应答并将自己的三层接口MACMAC S)包含在其中。同时它还会把PC AIP地址与MAC地址对应(1.1.1.2<==>MAC A)关系记录到自己的ARP表项中去(因为ARP请求报文中包含了发送者的IPMAC);

(3)             PC A得到网关(L3_SW)的ARP应答后,组装ICMP请求报文并发送,报文的目的MACMAC S、源MACMAC A、源IP1.1.1.2、目的IP2.1.1.2

(4)             L3_SW收到报文后,首先根据报文的源MAC+VID(即VLAN ID)更新MAC地址表。然后,根据报文的目的MACVID查找MAC地址表,发现匹配了自己三层接口MAC的表项。这里说明一下,三层交换机为VLAN配置三层接口IP后,会在交换芯片的MAC地址表中添加三层接口MACVID的表项,并且为表项的三层转发标志置位。当报文的目的MAC匹配这样的表项以后,说明需要作三层转发,于是继续查找交换芯片的三层表项;

(5)             交换芯片根据报文的目的IP去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到CPU去进行软件处理;

(6)             CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(PC B对应的网段),于是继续查找其软件ARP表,仍然查找失败。然后L3_SW会在目的网段对应的VLAN 3的所有端口发送请求地址2.1.1.2对应MACARP请求;

(7)             PC B收到L3_SW发送的ARP请求后,检查发现被请求IP是自己的IP,因此发送ARP应答并将自己的MACMAC B)包含在其中。同时,将L3_SWIPMAC的对应关系(2.1.1.1<==>MAC S)记录到自己的ARP表中去;

(8)             L3_SW收到PC BARP应答后,将其IPMAC对应关系(2.1.1.2<==>MAC B)记录到自己的ARP表中去,并将PC AICMP请求报文发送给PC B,报文的目的MAC修改为PC BMACMAC B),源MAC修改为自己的MACMAC S)。同时,在交换芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括IPMAC、出口VLAN、出端口),这样后续的PC A发往PC B的报文就可以通过该硬件三层表项直接转发了;

(9)             PC B收到L3_SW转发过来的ICMP请求报文以后,回应ICMP应答给PC AICMP应答报文的转发过程与前面类似,只是由于L3_SW在之前已经得到PC AIPMAC对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给PC A

(10)         这样,后续的往返报文都经过查MAC=>查三层转发表的过程由交换芯片直接进行硬件转发了。

从上述流程可以看出,三层交换机正是充分利用了一次路由(首包CPU转发并建立三层硬件表项)、多次交换(后续包芯片硬件转发)的原理实现了转发性能与三层交换的完美统一。

下面介绍另一种组网情况的三层转发流程,如图13所示。

      

                                                                                                                                                                       图13 三层转发组网2

13中标明了两台主机的MACIP地址、网关,以及两台三层交换机的MAC、不同VLAN配置的三层接口IP。假设L3_SW1上配置了静态路由:ip route 2.1.1.0 255.255.255.0 3.1.1.2L3_SW2上配置了静态路由:ip route 1.1.1.0 255.255.255.0 3.1.1.1。当然,路由信息也可以通过动态路由协议的交互来获得,有关路由的知识请查阅相关文档。

这种组网情况下的转发过程与图12的组网1情况是类似的,下面的流程讲解中将省略部分前面已经分析过的细节内容。当 PC A PC B 发起ICMP请求时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)

(1)            PC A首先检查出目的IP地址2.1.1.2PC B)与自己不在同一网段,因此它通过ARP解析得到网关地址1.1.1.1对应的MACMAC S1)。然后,PC A组装ICMP请求报文并发送,报文的目的MACMAC S1、源MACMAC A、源IP1.1.1.2、目的IP2.1.1.2

(2)            L3_SW1收到报文后,首先根据报文的源MAC+VID更新MAC地址表。然后,根据报文的目的MACVID查找MAC地址表,发现匹配了自己三层接口MAC的表项,于是继续查找芯片的三层转发表;

(3)            由于之前未建立任何表项,因此三层转发表查找失败,于是将报文送到CPU去进行软件处理;

(4)            CPU根据报文的目的IP去查找其软件路由表,发现匹配路由2.1.1.0/24,其下一跳IP地址为3.1.1.2,于是继续查找3.1.1.2是否有对应的ARP,仍然查找失败。然后L3_SW1在下一跳地址3.1.1.2对应的VLAN 4内发起ARP请求,并得到L3_SW2的回应,从而得到IPMAC对应关系(3.1.1.2<==>MAC S2);

(5)            L3_SW1PC A发出的ICMP请求报文转发给L3_SW2,报文的目的MAC修改为L3_SW2MACMAC S2),源MAC修改为自己的MACMAC S1)。同时,将刚刚用到的转发信息添加到交换芯片的三层转发表中去,包括匹配的网段2.1.1.0/24、下一跳地址的MACMAC S2)、出口VLAN、出端口。这样,后续发往2.1.1.2的报文就可以直接通过交换芯片硬件转发了;

(6)            L3_SW2收到报文后,与组网1中的处理类似,经过查MAC=>查三层转发表=>CPU=>匹配直连路由=>ARP解析=>转发报文同时添加硬件表项的过程,将报文转发给PC B,此时报文的目的MAC修改为PC BMACMAC B),源MAC修改为L3_SW2MACMAC S2)。这样后续发往2.1.1.2的报文就直接由交换芯片硬件转发了;

(7)            PC B收到来自PC AICMP请求报文后进行ICMP应答。由于在ICMP请求报文转发的过程中,每个网段的两端节点都已经通过ARP解析得到了对方的IPMAC对应关系,因此应答报文的转发完全由交换芯片完成(查MAC=>查三层转发表=>发送);

(8)            这样,后续的往返报文都经过查MAC=>查三层转发表的过程由交换芯片直接进行硬件转发了。

 

从上述两种组网情况下的转发流程可以看出,三层交换机的转发具有以下特点:

(1)              首包通过CPU转发,同时建立交换芯片硬件表项;后续包由交换芯片直接硬件转发,即常说的一次路由、多次交换

(2)              交换芯片的硬件转发并不关心路由的具体下一跳IP地址是多少,硬件三层表项中只包含了目的地址(或网段)、目的IP(或下一跳IP)对应的MAC、出口VLAN、出端口;(这里说明一下,并不是所有的三层交换机的硬件三层表项都会包含出端口的,这一点后面会有具体介绍。)

(3)              IP报文每经过一次三层转发,它的源、目的MAC都会变化,但是源、目的IP是始终不变的。