三层报文交换过程

根据上图所示,假设VPC2想访问VPC3,当我们使用ping命令进行验证时,报文是如何转发打VPC3的 1 . 首先,在VPC2上,会对自己的IP地址与掩码做一个与操作(192.168.1.1 与255.255.255.0进行与操作,得到网络号为192.168.1.0),然后根据网络号判断要访问的目的地址是否与自己属于同一网段内,根据上图,VPC2和VPC3不属于同一网段,因此要进行三层转发 2 . 由于VPC2与要访问的目标地址不在同一网段,因此需要将数据包发往网关 2.1 主机VPC2发送ARP广播获取网关MAC地址
ARP报文格式 根据上图我们可以得知以下信息

2.2 交换机在MAC地址表记录主机VPC2的信息,并用网关的MAC地址回应主机VPC2的ARP请求 交换机收到主机VPC2的ARP请求后,首先学习ARP报文头部Ethernet的S-MAC,交换机将自动将其VPC2的mac地址,接受该APR信息的交换机端口e0/0,以及该接口所属vlan等信息写入mac地址表,如下所示 Switch#show mac address-table Mac Address Table

Vlan Mac Address Type Ports


10 0050.7966.6802 DYNAMIC Et0/0

由于主机VPC2发送的ARP报文中的目的IP就是该交换机上接受ARP广播接口e0/0所属的VLAN10的IP地址,所以交换机将通过vlan10的mac地址作为源回复主机VPC2的ARP请求

2.3 主机VPC2收到网关的ARP回应报文后,主机VPC2会将网关MAC当成主机VPC3的MAC地址,所以主机VPC2给VPC3发送数据时,将网关MAC作为D-MAC来封装帧,如下所示

2.4 数据包到达交换机后,交换机通过转发表或者路由表进行三层转发 当交换机收到VPC2发来的数据包后,根据ethernet的目标MAC,去查找mac表,发现目标mac属于本地vlan10,此时交换机会将数据包交给三层转发引擎处理该数据包,此时需要分三种情况处理 (1) 硬件转发表有表项匹配,根据目标IP地址进行匹配 a. 如果目标地址属于本地IP地址,则完成数据包传输 b. 如果为其他IP地址,则交换机需要完成接下来的转发,将出接口mac地址最为新的源MAC,下一跳作为目标MAC,然后继续将数据包转发 (2) 如果(1)不匹配,则查找路由表,然后将数据包转发到下一跳 (3) 如果(2)不匹配,则将数据包丢弃 在我们的实验环境中,该目标地址属于其他IP地址,而且交换机中已经存在该转发表或路由表,所以将修改源MAC和目标MAC为vlan20的mac和VPC3的mac 这样就完成了不同网段的路由转发, 此时交换机的硬件转发表已经保存了VPC2和VPC3的表项。 注意:mac地址表和ARP表是有老化时间的,如果在老化时间内没有任何数据包交互,则将清除表项,后续有报文交换时,就需要重新进行上述过程。