(1) 根据前面的描述,PC A首先检查出目的IP地址2.1.1.2(PC B)与自己不在同一网段,因此它发出请求网关地址1.1.1.1对应MAC的ARP请求;
(2) L3_SW收到PC A的ARP请求后,检查请求报文发现被请求IP是自己的三层接口IP,因此发送ARP应答并将自己的三层接口MAC(MAC S)包含在其中 。同时它还会把PC A的IP地址与MAC地址对应(1.1.1.2<==>MAC A)关系记录到自己的ARP表项中去(因为ARP请求报文中包含了发送者的IP和MAC);
(3) PC A得到网关(L3_SW)的ARP应答后,组装ICMP请求报文并发送,报文的目的MAC=MAC S、源MAC=MAC A、源IP=1.1.1.2、目的IP=2.1.1.2;
(4) L3_SW收到报文后,首先根据报文的源MAC+VID(即VLAN ID)更新MAC地址表 。然后,根据报文的目的MAC+VID查找MAC地址表,发现匹配了自己三层接口MAC的表项 。这里说明一下,三层交换机为VLAN配置三层接口IP后,会在交换芯片的MAC地址表中添加三层接口MAC+VID的表项,并且为表项的三层转发标志置位 。当报文的目的MAC匹配这样的表项以后,说明需要作三层转发,于是继续查找交换芯片的三层表项;
(5) 交换芯片根据报文的目的IP去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到CPU去进行软件处理;
(6) CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(PC B对应的网段),于是继续查找其软件ARP表,仍然查找失败 。然后L3_SW会在目的网段对应的VLAN 3的所有端口发送请求地址2.1.1.2对应MAC的ARP请求;
(7) PC B收到L3_SW发送的ARP请求后,检查发现被请求IP是自己的IP,因此发送ARP应答并将自己的MAC(MAC B)包含在其中 。同时,将L3_SW的IP与MAC的对应关系(2.1.1.1<==>MAC S)记录到自己的ARP表中去;
(8) L3_SW收到PC B的ARP应答后,将其IP和MAC对应关系(2.1.1.2<==>MAC B)记录到自己的ARP表中去,并将PC A的ICMP请求报文发送给PC B,报文的目的MAC修改为PC B的MAC(MAC B),源MAC修改为自己的MAC(MAC S) 。同时,在交换芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括IP、MAC、出口VLAN、出端口),这样后续的PC A发往PC B的报文就可以通过该硬件三层表项直接转发了;
(9) PC B收到L3_SW转发过来的ICMP请求报文以后,回应ICMP应答给PC A 。ICMP应答报文的转发过程与前面类似,只是由于L3_SW在之前已经得到PC A的IP和MAC对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给PC A;
(10) 这样,后续的往返报文都经过查MAC表=>查三层转发表的过程由交换芯片直接进行硬件转发了 。
从上述流程可以看出,三层交换机正是充分利用了“一次路由(首包CPU转发并建立三层硬件表项)、多次交换(后续包芯片硬件转发)”的原理实现了转发性能与三层交换的完美统一 。
下面介绍另一种组网情况的三层转发流程,如图13所示 。
文章插图
三层转发组网2
上图中标明了两台主机的MAC、IP地址、网关,以及两台三层交换机的MAC、不同VLAN配置的三层接口IP 。假设L3_SW1上配置了静态路由:ip route 2.1.1.0 255.255.255.0 3.1.1.2;L3_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.2(PC B)与自己不在同一网段,因此它通过ARP解析得到网关地址1.1.1.1对应的MAC(MAC S1) 。然后,PC A组装ICMP请求报文并发送,报文的目的MAC=MAC S1、源MAC=MAC A、源IP=1.1.1.2、目的IP=2.1.1.2;
(2) L3_SW1收到报文后,首先根据报文的源MAC+VID更新MAC地址表 。然后,根据报文的目的MAC+VID查找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的回应,从而得到IP和MAC对应关系(3.1.1.2<==>MAC S2);
推荐阅读
- 一文读懂常用开源许可证
- 抽水马桶是如何工作的?一文看懂虹吸原理
- Nginx高级篇:从原理到实战,彻底搞懂Nginx
- 交换机划分 VLAN 配置
- 根据交换机的工作原理可知,交换机可以多个端口对之间的数据传输
- 一文讲弄懂什么是vlan、三层交换机、网关、子网掩码
- 路由交换技术—VLAN原理及配置
- 交换机与路由器的区别
- 8分钟带你深入浅出搞懂Nginx
- 一文教您如何实现持续集成服务器环境搭建