FIB(Forward Information Base)

  • 内容
  • 评论
  • 相关

FIB(Forward Information Base)

FIB从概念上讲类似于路由表或信息库。它维护着一个IP路由表中包含的转发信息的镜象。当网络中路由或拓朴结构发生了变化时,IP路由表就被更新,而这些变化也反映在FIB中。FIB基于IP路由表中信息,维护着下一网络段的地址信息。
Linux内核中采用了FIB(Forward Information Base)这个名词代替了Routing Database,原因不详。可能是不想和应用层的路由数据库发生概念上的冲突吧。但是Linux内核还是有一个叫做RouteTable的数据结构的,不过,它只是FIB的一份cache而已,其关系如同计算机中内存和CPU cache的关系。系统中路由一般采取的手段是:先到路由缓存中查找表项,如果能查找到,那么就直接将对应的一项取出作为路由的规则;如果查不到,那么就到FIB中根据规则换算出来,并且增加一项新的,在路由缓存中将项目添加进去。所以在研究Linux代码时,应该注意这一点,不能抓着RouteTable不放而忽视了FIB。
和FIB相近的一个概念叫RIB(Route Information Base)。FIB强调的是作为转发的路由表,RIB是用来做路由管理的表。通常有了动态路由协议的参与才能理解这个问题。RIP、OSPF、BGP、ISIS都是动态路由协议,它们学习到的路由首先要通告给RIB表。RIB表把所有路由协议学习到的路由汇总到一起,经过优选,把优选结果的路由加入到FIB表,供转发使用。所以FIB是RIB的一个子集。