路由表和FIB表的区别和联系

如题所述

FIB表是根据路由表生成的,它主要存储的是有效的路由,如果你的路由全部有效,那么FIB表与路由表内容完全一样,这种情况路由器可以直接转发。路由表是属于控制层,FIB属于转发层,也就是说,路由表是配置时候生成的下一跳,这个下一跳不一定可直达可达,FIB是转发的,下一跳必须直接可达。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-19
1.路由表
  路由信息最终要存储在用于路由器的主机或者专业路由器上,存放这些信息的地方称为路由表。其中包含三元素:目标地址,掩码,下一跳。
  1.1.查询路由表的开销
  有人认为查询路由表是一件和交换机查询mac地址一样的事,那就大错特错了,查询mac地址/端口对是一种固定的数据查找,mac地址都是固定的48字节,而ip地址呢,自从cidr出现以后,地址成了“无类”的了,因此任意位的掩码都能成为正确的掩码,另外,聪明的管理员想出了路由汇聚,这些家伙将负担转嫁给了系统的实现者,从而系统实现者必须实现“最长掩码”匹配,既然掩码是不固定的,因此查询就是不固定的,这是很麻烦的事。
  2.转发表
  数据包到达路由器的时候,要根据“指示”前往特定的端口,类似交换机的地址信息表,路由器上存放这个“指示”的地方叫做转发表
  3.两个表的关系
  3.1.联系
  转发表直接作用于数据包,而路由表是转发表生成的依据,转发表通过路由表生成。一个特定的进程可以通过使用路由表中的信息,加上自身的主机方面的信息-比如网卡等信息-加以综合,得到一张转发表。路由信息和主机是没有任何关系的,它只描述网络链路状态和方向。
  3.2.区别
  两表存储的信息是不同的,路由表只存储三元素-目标,掩码,下一跳;而转发表存储更详细的信息,比如输出端口信息,比如标记信息等。转发表描述了主机方面的信息,在主机内部将一个数据包从一个端口导向另一端口,而路由表描述网络信息,将数据包从一个机器导向另一机器。
  4.误区
  当前很多人都懂一个系统的实现,这些人不外乎3类,第一类精通linux内核,第二类精通cisco设备的配置,第三类精通windows网络编程以及ndis。三类人一般的交集很少,因此大部分熟悉linux内核的人都不会去区分路由表和转发表,因为linux内核本身就不区分这两个表,每到一个数据包都会查路由表(当然前面还有一个缓存...但这不是转发表);因此熟悉cisco的家伙会认为两个表是一定要区分的,否则mpls怎么实现?熟悉windows核心的人呢?可能并不关心这些,因为windows几乎不用于路由器。
  5.区分二表的好处之实例
  mpls是区分路由表和转发表的一个明显的例子,首先声明,mpls是一个网络,而不是运行特定协议的一个节点。在mpls中,完全通过标签进行数据包转发,在mpls网络可用于数据业务之前(中间也可以通过标签分发协议动态调整),mpls转发表就建好了,它的表项包含三元素:来源数据自带标签/转发到的端口/转发出去携带的标签。这个表项是通过路由表建立的,我们将之视为转发表。实现mpls需要在入口路由器上为数据包单独打上一个标签,这样直到出去mpls网络,数据包就可以快速被转发了,省去了直接查询路由表的开销。
相似回答