路由表被称为路由信息库(Routing Information Base,RIB),转发表也叫转发信息库(Forwarding Information base,FIB)
具备路由功能的华为数通设备(路由器、三层交换机等),都维护着两种重要的数据表:路由表(RIB)、转发表(FIB)。
RIB路由表
路由表通常存储在设备的动态内存中,如RAM随机存储器中,
每台路由器都维护着一张全局路由表,另外路由器所运行的每种路由协议也维护着该协议自己的路由表。
全局路由表,就是通过display ip routing-table命令输出的表格。
路由器可以通过多种途径获取路由信息,它可以运行多种动态路由协议,而每一种通过动态路由协议所获知的路由信息首先存储于该协议自己的路由表中,然后路由器根据路由优先级和度量值等信息来进行路由的优选,并将优选路由加载到全局路由表中。
将路由表视为路由器的控制平面,转发表位于数据平面。
实际上路由表并不直接指导数据转发,也就是说,路由器在执行路由查询时,并不是在路由表中进行报文目的地址的查询,真正指导数据转发的是FIB表。由于两张表的一致性,在绝大多数场合中,我们阐述路由器转发数据过程时,会用“路由器查询路由表来决定数据转发的路径”这一说法,但需要注意的是,路由器查询的是FIB表,位于控制层面的路由表只是提供了路由信息而已。
FIB转发表
FIB表是位于路由器数据平面的表格,实际上它外观上与路由表非常相似,FIB的表项被称为转发表项,每条转发表项都指定要到达的某个目的地,所需要通过的出接口及下一跳IP地址等信息。
路由器将优选的路由存储在路由表中,而将路由表中活跃的路由下载到FIB表,并使用FIB表转发数据。
FIB表中数据往往被存储在一个ASIC专用集成电路中,这使得设备在FIB表中进行数据查询时,可以实现相当高的速度。当然,FIB表空间是有限的,因此,大型网络中要关注设备的路由表规模,在保证数据可达的前提下,通过各种机制及手段来减小设备路由表的规模。
路由器转发分组的关键是FIB表,在系统中报文转发时查看的是FIB表而非路由表。这是因为路由表表示所有的有效路由所形成的表项,并不指导转发。FIB表是网络层用来控制数据转发送的。
FIB表的匹配
1)在路由表选择出路由后,路由表会将激活路由下发到FIB表中。当报文到达路由器时,会通过查找FIB表进行转发。
2)FIB表中每条转发项都指明到达某网段或某主机的报文应通过路由器的哪个物理接口或逻辑接口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。
FIB表的匹配遵循最长匹配原则。查找FIB表时,报文的目的地址和FIB中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表项中的网络地址则匹配。最终选择一个最长匹配的FIB表项转发报文。
flag:转发标志
G:-GATEWAY ROUTE:网关路由:表示下一跳是网关
H-HOST route:主机路由:表示该路由为主机路由
U-Up route:可用路由状态为up
S-static route:表示该路由为手工配置的
D-dynamic route:动态路由:表示该路由通过路由算法自动生成或者传递而来的、
B-Black hole route:黑洞路由
L-Vlink route:虚拟路由