三层交换机主要由ASIC芯片和CPU两部分组成。ASIC芯片是专为高速数据转发设计的,它能够处理二层和三层的转发任务。它内部包含了MAC地址表和三层转发表,这些表项用于指导数据包的快速转发。而CPU则负责交换机的控制平面功能,它维护着路由表和ARP表等软件条目,并将这些信息传递给ASIC芯片,以配置其硬件转发表。
当我们谈论三层交换机中的“一次路由多次交换”时,我们其实是在描述数据包从一个网络传输到另一个网络的过程。这个过程可以通过以下场景来说明:
设想两台主机a和b位于不同的VLAN中,它们之间要通过三层交换机进行通信。这个过程始于主机a发起的ping操作。
首先,主机a需要确定主机b的MAC地址。由于a和b不在同一个网段,a知道它需要通过三层交换机来发送数据。a首先检查自己的ARP缓存,希望找到b的MAC地址,但未能找到。这时,a会广播一个ARP请求,试图从交换机那里获取b的MAC地址。
三层交换机收到这个广播请求后,识别出这是一个对自身ip地址的查询。于是,交换机回复一个ARP回应,将自己的MAC地址告诉主机a。
得到交换机的MAC地址后,主机a更新自己的ARP缓存,并构造一个新的ICMP数据包。这个数据包的目标MAC地址是交换机的三层接口MAC地址,而目标IP地址是主机b的IP地址。
当三层交换机接收到这个ICMP数据包时,它首先更新自己的MAC表,然后查找三层转发表。如果找不到匹配的三层条目,它会将数据包发送给CPU处理。CPU根据目标IP地址在路由表中查找,确定应该将数据包转发到哪个接口。由于是第一次查找,通常路由表中没有对应条目,因此CPU会在目标网段广播ARP请求来获取主机b的MAC地址。
一旦主机b响应ARP请求,交换机就会更新自己的MAC表和ARP表,并将ICMP数据包转发给b。同时,交换机在三层转发表中添加了一个新的表项,这样下次收到目的地为b的数据包时,就可以直接通过ASIC芯片硬件转发,从而实现了“一次路由多次交换”。
这个过程中,三层交换机不仅高效地完成了路由任务,而且通过学习和记忆,实现了对后续数据包的快速交换。这种方式大大减少了数据包转发的延迟,提高了网络的性能和效率。
什么是一次路由多次交换的三层交换机?
首先说说三层交换机的结构:ASIC芯片和CPU。
ASIC芯片用于完成二层和三层转发,包含用于二层转发的MAC地址表和用于ip转发的三层转发表。
CPU用于转发控制,主要维护一些软件条目(包括路由表和ARP表),根据软件条目的转发信息配置ASIC的硬件三层转发表。
真正决定高速交换转发的是ASCIC的二三层硬件表,而ASIC的硬件表来自CPU维护的软件表。
a和B位于不同的VLAN,它们通过第3层交换机的SVI(Vlanif端口)接口进行路由和转发。
A ping B过程分析如下:
1.主机A检查目标B的IP地址,发现和自己不在同一个网段,需要通过网关转发。一是查询ARP缓存,但是找不到网关的MAC,于是广播ARP请求(目标MAC全是F,源MAC是A的MAC,源IP是A的IP,目标IP是网关IP),请求网关的MAC地址;
2.三层交换机收到后发现是广播帧,解封装后发现目的IP是给自己的,于是返回ARP回复,通过ARP回复把自己的MAC告诉A。
3.A收到ARP回复后,更新ARP缓存,然后重新封装ICMP(目标MAC是网关,源MAC是A,目标IP是B,源IP是A)。交换机收到后,首先根据报文的源MAC+VlanID更新MAC表,根据报文的目的MAC+VID查找MAC表。找到自己的三层接口的MAC条目(注意:三层交换机分配SVI的IP地址时,会把三层接口的MAC+VID加到交换机的MAC条目上)。当报文中的目的MAC与这个三层接口的MAC条目匹配时,会分三层转发,找到三层条目。因为是空第一次搜索失败,所以消息交给CPU处理。根据目标IP,CPU搜索路由,匹配一个直连网段,然后查找ARP表。第一次是空,所以如果搜索失败,就在目标网段上广播ARP请求B的MAC地址,B收到后给出ARP回复。
4.交换机收到响应,更新MAC表和ARP表,同时重新封装ICMP发送给B(目标MAC为B,源MAC为三层交换接口的MAC,目标IP为B,源IP为A)。同时,交换机的三层表项根据三层转发刚刚获得的信息添加表项(包括IP、MAC、VLAM、出接口),这样如果后续报文与三层表项匹配,就可以直接通过硬件转发,称为一路由多交换。b收到后给出ICMP回复,是上面过程的逆过程,所以PING。