认识RIB与FIB
RIB:Routing Information Base,路由信息库 ,路由器的控制平面
FIB:Forwarding Information Base,转发信息库,路由器的数据平面
路由的 3 种来源 ( 直连路由、静态路由、动态路由 )
路由迭代计算(出一个直连的下一跳)
路由引入( import-route , 具有方向性,注意:路由优先级、路由回灌、路由度量值)
常见路由的优先级(direct 0 ,OSPF内部 10 ,OSPF外部 150,静态60,ISIS 15,BGP 255)
当路由器收到一个IP数据包,路由器会根据数据包的目的IP地址查找FIB表,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳转发出去。
路由器获取路由的方式有三种,分别是动态路由(例如OSPF)、静态路由、直连路由。
当路由器收到一个IP报文时,路由器根据该IP报文的目的地址匹配路由条目(或路由表项)。
若有匹配的路由条目,则依据该条目中的出接口或下一跳等信息进行报文转发;
若无匹配的路由条目,则路由器没有相关路由信息用于指导报文转发,此时会丢弃该报文。
⦁ 路由表:
⦁ 可以将路由表视为位于路由器的控制平面,实际上路由表并不直接指导数据转发。路由器在执行路由查询时,并不是在路由表中进行报文目的地址的查询,真正指导数据转发的是FIB表,路由器将路由表中的最优路由下载到FIB表,此后如果路由表中的相关表项发生变化,FIB表也将立即同步。
⦁ 由于两张表的一致性,且路由表阅读起来更直观,因此在绝大多数场合,在阐述路由器数据转发过程时,会用“路由表”这个说法,实际上,路由器查询的是FIB表,位于控制层面的路由表只是提供路由信息。
⦁ FIB表:
⦁ FIB表位于路由器的数据平面,亦被称为转发表项,每条转发表项都指定要到达某个目的地所需通过的出接口及下一跳IP地址等信息。
RIB和FIB的区别在于,RIB存储了所有学习到的路由信息,而FIB只存储实际使用的最优路由信息。在路由表的转发过程中,数据包首先会经过FIB的查找,找到最优路由信息后,就会转发给相应的下一跳地址。
每个路由器都有路由表,而路由表又分为本地核心路由表和协议路由表。
协议路由表是单个路由协议所学习到的路由信息,而本地核心路由表是所有路由协议和管理员手动配置的路由信息所组成的路由表。协议路由表和本地核心路由表的主要区别在于所包含的路由信息不同,前者仅包含单个路由协议所学习到的路由信息,而后者包含所有可用的路由信息。
协议路由表中存放着该协议发现的路由信息。
以OSPF路由表为例。
Public routing table : OSPF
Destinations : 1 Routes : 1
OSPF routing table status :
Destinations : 1 Routes : 1
Destination/Mask Proto Pre Cost NextHop Interface
10.3.3.3/32 OSPF 10 1 10.0.1.1 GigabitEthernet0/0/0
OSPF routing table status :
Destinations : 0 Routes : 0
这条路由的目的地是10.3.3.3/32,使用的路由协议是OSPF,路由优先级为10,开销值为1,下一跳地址为10.0.1.1,出接口为GigabitEthernet0/0/0。同时,OSPF路由表中只有这一条路由记录。最后一行 “OSPF 路由表状态Destinations : 0 Routes : 0 目的地 : 0 路由 : 0” 表示OSPF路由表状态信息,其中目的地和路由记录的数目均为0,说明该路由表中没有任何记录。
本地核心路由表
每台路由器中都保存着一张设备的本地核心路由表。路由器对各个协议的路由表中相同的表项进行优选,得到本地核心路由表,并把本地核心路由下发到FIB,指导转发。
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 Static 60 0 10.0.2.2 GigabitEthernet0/0/1
10.3.3.3/32 OSPF 10 1 10.0.1.1 GigabitEthernet0/0/0
10.4.4.4/32 EBGP 255 0 10.0.2.2 GigabitEthernet0/0/1
10.0.1.0/24 Direct 0 0 10.0.1.2 GigabitEthernet0/0/0
10.0.1.2/32 Direct 0 0 127.0.0.1 GigabitEthernet0/0/0
10.0.3.0/24 EBGP 255 0 10.0.2.2 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoopBack0
这段文本描述了一个名为“Public”的路由表,其中包含了10个目的地和对应的路由信息。
Destinations : 10 Routes : 10“目的地 : 10 路线 : 10” 表示该路由表中有10个目的地和10条路由记录。
“Destination/Mask” 列指定了目的地的IP地址和掩码。
“Proto” 列指定了路由协议。
“Pre” 列指优先级
“Cost” 列指定了路由的开销值,也称为路由的度量值。
“NextHop” 列指定了到达目的地所需的下一跳地址。
“Interface” 列指定了数据包将从哪个接口转发出去。
具体来看:
- 第一行 “0.0.0.0/0” 表示默认路由,使用Static静态路由协议,优先级为60,开销值为0,下一跳地址为10.0.2.2,出接口为GigabitEthernet0/0/1。
- 第二行 “10.3.3.3/32” 表示目的地为10.3.3.3/32的路由,使用OSPF协议,优先级为10,开销值为1,下一跳地址为10.0.1.1,出接口为GigabitEthernet0/0/0。
- 第三行 “10.4.4.4/32” 表示目的地为10.4.4.4/32的路由,使用EBGP协议,优先级为255,开销值为0,下一跳地址为10.0.2.2,出接口为GigabitEthernet0/0/1。
- 第四行 “10.0.1.0/24” 表示目的地为10.0.1.0/24的路由,使用Direct直连路由协议,优先级为0,开销值为0,下一跳地址为10.0.1.2,出接口为GigabitEthernet0/0/0。
- 第五行 “10.0.1.2/32” 表示目的地为10.0.1.2/32的路由,使用直连路由协议,优先级为0,开销值为0,下一跳地址为127.0.0.1,出接口为GigabitEthernet0/0/0。
- 第六行 “10.0.3.0/24” 表示目的地为10.0.3.0/24的路由,使用EBGP协议,优先级为255,开销值为0,下一跳地址为10.0.2.2,出接口为GigabitEthernet0/0/1。
- 第七行 “127.0.0.0/8” 表示目的地为127.0.0.0/8的路由,使用直连路由协议,优先级为0,开销值为0,下一跳地址为127.0.0.1,出接口为InLoopBack0。
- InLoopBack0不是物理接口,而是一个逻辑接口。它是一个本地环回接口,通常用于本地主机和路由器内部通信,用于在设备上测试和配置IP地址和其他网络协议。该接口不需要任何物理设备支持,因为它是通过操作系统内核模拟的虚拟接口。在路由器上,可以使用该接口来模拟连接到本地网络的远程设备,以便测试路由器的配置和运行状况。通常情况下,InLoopBack0接口的IP地址为127.0.0.1,也可以配置为其他可用的IP地址。
Preference用于不同路由协议间路由优先级的比较,Cost用于同一种路由协议内部不同路由的优先级的比较。
Pre优先级
在路由器上,当使用不同的路由协议时,每个路由协议都会根据自己的算法和规则计算出一组路由表。当有多个协议路由表可用时,路由器会使用路由优先级(也称为路由偏好)来确定使用哪个协议的路由表。路由优先级是一个数字值,用于比较不同协议的路由表,该值越小,优先级越高。在思科IOS
- 直接连接路由(connected route):0
- 静态路由(static route):1
- OSPF路由:110
- IS-IS路由:115
- RIP路由:120
- EIGRP路由:90
因此,当路由器接收到来自不同协议的路由表时,它将首先考虑具有最低优先级值的协议的路由表。如果该协议没有适当的路由,则路由器将考虑具有次低优先级值的协议的路由表,以此类推。如果有多个协议的路由表都包含有关同一目标网络的路由,则路由器将使用最具体(最长前缀匹配)的路由表。如果有多个最具体路由,则路由器将使用具有最低优先级值的路由表。