IP路由其实就是网络中的数据包从源地址发到目的地址的过程。这个过程就是通过各种协议(如ospf、is-is等)确定传输的路径,也就是路由信息。
在具备路由功能的设备中存在两个非常重要的数据表:路由表RIB、转发表FIB。其实在我的理解里,也算是一个表(莫打[dogo]),毕竟转发表FIB是在路由表RIB基础上得来的
两个表
路由表RIB
实际上路由表并不直接指导数据转发。路由器在执行路由查询时,并不是在路由表中进行报文目的地址的查询,真正指导数据转发的是FIB表,路由器将路由表中的最优路由下载到FIB表,此后如果路由表中的相关表项发生变化,FIB表也将立即同步。
由于两张表大致相同且路由表更加直观,所以在说明数据转发的这个过程,大家都会说是路由表,但路由器查询的是FIB表,位于控制层面的路由表只是提供路由信息。
每个路由器都有路由表,但路由表又分为协议路由表和本地核心路由表
协议路由表
协议路由表只存放各自协议路由的信息。如OSPF的协议路由表中只有OSPF协议的路由信息
本地核心路由表
本地核心路由表就比协议路由表的等级要高了。可以这么说,本地核心路由表就是各个协议路由表的最优组合,形成的最终路由表。其中的最优筛选方式就是比较路由的优劣(有点废话了。。。)
比较路由优劣:
- 掩码,掩码最长的为优
- 协议的优先级,数值越低,越优先
- 路由的开销,开销越低,越优先
转发表FIB
转发表可以当作路由表的子集,转发表FIB只收录路由表RIB中的最优路由。FIB表中每条转发表项都指定要到达某个目的地所需通过的出接口及下一跳IP地址等信息。
路由类型
路由分开来也就三个类型,分别为直连路由、静态路由、动态路由
- 直连路由:直连接口所在网段的路由,由设备自动生成
- 静态路由:由网络管理员手工配置的路由条目
- 动态路由:路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由。BGP ( Border Gateway Protocol,边界网关协议)是一种实现AS ( Autonomous System,自治系统)之间的路由可达,并选择最佳路由的距离矢量路由协议。AS是指在一一个实体管辖下的拥有相同选路策略的IP网络
动态路由中根据使用范围,又分为内部网关协议和外部网关协议
- 内部网关协议(IGP):
- 主要应用在自治系统(AS)内部的路由协议。
- 常见的IGP协议包括RIP(路由信息协议)、OSPF(开放式最短路径优先)、IS-IS(中间系统到中间系统)、EIGRP(增强型内部网关路由协议)等。
- 外部网关协议(EGP):
- 主要应用在自治系统之间的路由协议。
- 目前广泛使用的EGP协议是BGP(边界网关协议),它用于在AS之间传递路由信息,确保跨AS的数据包能够正确传输。
路由迭代
在路由中必须要由直连的吓一跳地址才能进行转发,那么在一个网络中不可能都进行直连,所以在查询路由表的这个过程就称为路由迭代
假设上图中R1要发送数据给192.168.21.0/24这个地址,那么传输数据之前,他会进行路由迭代,一步一步地查询直连吓一跳地地址
从 ip route-static 192.168.21.0 24 10.0.23.3 这条路由查到10.0.23.3
再从 ip route-static 10.0.23.3 24 10.0.12.2 这条路由查到直连的10.0.12.2
最后,查到直连的10.0.12.2地址之后,还要再查找这个直连地址对应的接口是哪个。这里从上到下,查询了3次,也可以说是迭代了3次
数据转发流程
PC3发送数据包到PC4的流程如下:
- PC1将报文发往网关设备R1
- R1查找路由表项, 确定转发的下一跳、出接口,之后将报文转发给R2
- R2通过查找路由表项转发给R3
- R3收到后查找路由表项,发现IP报文的目的IP地址属于本地接口所在网段,则直接本地转发,最终该报文被发往目的主机PC4