MAC地址表、ARP表、路由表(RIB表/FIB表)
MAC地址表
MAC地址表是交换机等网络设备记录MAC地址和端口的映射关系,代表了交换机从哪个端口学习到了某个MAC地址,交换机把这个信息记录下来,后续交换机需要转发数据的时候就可以根据报文的目的MAC地址去根据MAC地址表转发数据。
ARP表
ARP表就是路由器等网络设备记录IP地址和MAC地址对应关系的表项
当我们需要转发数据的时候除了需要对方的目的IP地址,还需要知道对方的MAC地址,那么正常情况下我们优先会在本地ARP表中查看是否有目的IP对应的MAC地址。
RIB与FIB表的关系
在每一个路由器设备中,通常都维护了两张比较相似的表,分别为:
-
路由信息表(Routing Information Base),简称为RIB表、路由表
路由表是网络设备根据路由协议生成的表
-
转发信息表(Forwarding Information Base), 简称为FIB表、转发表
fib表是网络设备根据路由表生成的转发表
RIB与FIB表的关系:
- 路由表(RIB表)用来决策路由;转发表用来转发分组
- 由于路由器的核心工作便是为经过路由器的每一个数据包找到最佳路径。在众多路径中选择最快、质量最好、路径最短、…等指标选择最优的路径,并将到达不同网络的最优路径对应的路由组成一张新的表格,即FIB表(转发表)。
- fib表和路由表不一样的地方在于,路由表中可能存在下一跳非直连的情况,而fib表就不存在这种情况。fib表通过下一跳迭代,避免了下一跳非直连的情况发生。
- 路由器通过路由表选择路由,通过FIB表指导报文进行转发。
- 每台路由器中都保存着一张本地核心路由表(即设备的IP路由表),同时各个路由协议也维护着自己的路由表。路由器使用本地核心路由表用来保存决策优选路由,并负责把优选路由下发到FIB表,通过FIB表指导报文进行转发。这张路由表依据各种路由协议的优先级和度量值来选取路由。
- 路由器使用本地核心路由表用来保存决策优选路由,并负责把优选路由下发到FIB表,通过FIB表指导报文进行转发。这张路由表依据各种路由协议的优先级和度量值来选取路由。
- FIB强调的是作为转发的路由表,RIB是用来做路由管理的。通常有了动态路由协议的参与才能理解这个问题。RIP、OSPF、BGP、ISIS都是动态路由协议,它们学习到的路由首先要通告给RIB表。RIB表把所有路由协议学习到的路由汇总到一起,经过优选,把优选结果的路由加入到FIB表,供转发使用。所以FIB是RIB的一个子集。
路由表(RIB表)
路由表就是路由器用于指导数据包如何转发的表项,记录了去往目的IP的下一跳去哪里
转发表(FIB表)
-
在路由表选择出路由后,路由表会将激活路由下发到FIB表中。当报文到达路由器时,会通过查找FIB表进行转发。
-
FIB表中每条转发项都指明到达某网段或某主机的报文应通过路由器的哪个物理接口或逻辑接口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。
-
FIB表的匹配遵循最长匹配原则。查找FIB表时,报文的目的地址和FIB中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表项中的网络地址则匹配。最终选择一个最长匹配的FIB表项转发报文。
Linux的RIB表与FIB表
注意:当相同路由不存在多路径情况下,RIB表和FIB表几乎相等
RIB表
[luzejia@localhost ~]$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens192
10.10.10.0 0.0.0.0 255.255.254.0 U 100 0 0 ens192
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-d84b5901962a
FIB表
[luzejia@localhost ~]$ route -F
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens192
10.10.10.0 0.0.0.0 255.255.254.0 U 100 0 0 ens192
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-d84b5901962a