当路由器收到一个IP数据包,路由器会根据数据包的目的IP地址查找FIB(Forwarding Information Base,转发信息库)表,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳转发出去。路由器获取路由的方式有三种,分别是动态路由(例如OSPF)、静态路由、直连路由。一个网络中可能会同时存在这三种方式,那么采用不同方式获取路由的路由器之间如何实现路由可达?
01 概述
当路由器收到一个IP报文时,路由器根据该IP报文的目的地址匹配路由条目(或路由表项)。
若有匹配的路由条目,则依据该条目中的出接口或下一跳等信息进行报文转发;若无匹配的路由条目,则路由器没有相关路由信息用于指导报文转发,此时会丢弃该报文。
具有路由功能的网络设备都维护两种重要的数据表:一是路由表RIB(Routing Information Base,路由信息库);二是转发表FIB。
路由表:可以将路由表视为位于路由器的控制平面,实际上路由表并不直接指导数据转发。路由器在执行路由查询时,并不是在路由表中进行报文目的地址的查询,真正指导数据转发的是FIB表,路由器将路由表中的最优路由下载到FIB表,此后如果路由表中的相关表项发生变化,FIB表也将立即同步。由于两张表的一致性,且路由表阅读起来更直观,因此在绝大多数场合,在阐述路由器数据转发过程时,会用“路由表”这个说法,实际上,路由器查询的是FIB表,位于控制层面的路由表只是提供路由信息。FIB表:FIB表位于路由器的数据平面,亦被称为转发表项,每条转发表项都指定要到达某个目的地所需通过的出接口及下一跳IP地址等信息。
02 路由表
每个路由器都有路由表,而路由表又分为本地核心路由表和协议路由表。协议路由表:协议路由表中存放着该协议发现的路由信息。以OSPF路由表为例:
本地核心路由表:每台路由器中都保存着一张设备的本地核心路由表。路由器对各个协议的路由表中相同的表项进行优选,得到本地核心路由表,并把本地核心路由下发到FIB,指导转发。本地核心路由表中的最优路由,是依据各种路由协议的优先级和度量值来选取的。
路由表中的关键字段:Destination:表示此路由的目的地址。用来标识IP包的目的地址或目的网络。Mask:表示此目的地址的子网掩码长度。与目的地址一起来标识目的主机或路由器所在的网段的地址。Proto(Protocol):表示学习此路由的路由协议。Pre(Preference):表示此路由的路由协议优先级。路由器分别定义了外部优先级和内部优先级。外部优先级是指用户可以手工为各路由协议配置的优先级,内部优先级则不能被用户手工修改。选择路由时先比较路由的外部优先级,当不同的路由协议配置了相同的优先级后,系统会通过内部优先级决定哪个路由协议发现的路由将成为最优路由。Cost:路由开销。NextHop:表示转发到此目的网络的下一跳。指明数据转发的下一个设备。Interface:表示转发到此目的网络的出接口。指明数据将从本地路由器哪个接口转发出去。Preference用于不同路由协议间路由优先级的比较,Cost用于同一种路由协议内部不同路由的优先级的比较。
03 IP路由查找的最长匹配原则
路由器查找FIB表时,将报文的目的IP地址和FIB表中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表中的网络地址则匹配。最终选择一个掩码最长的FIB表项转发报文。FIB表中每条转发项都指明到达某网段或某主机的报文应通过路由器的哪个物理接口或逻辑接口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。FIB表信息查看命令:display fib [ slot-id ]slot-id:显示指定槽位号的FIB表信息。整数形式,取值范围请根据设备实际配置选取。FIB表中的字段说明:Total number of Routes:路由表总数。Destination/Mask:目的地址/掩码长度。Nexthop:下一跳。Flag:当前标志,G、H、U、S、D、B的组合。G(Gateway):网关路由,表示下一跳是网关。H(Host):主机路由,表示该路由为主机路由。U(Up):可用路由,表示该路由状态是Up。S(Static):静态路由。D(Dynamic):动态路由。B(Black Hole):黑洞路由,表示下一跳是空接口。TimeStamp:时间戳,表示该表项存在的时间,单位是秒。Interface:到目的地址的出接口。TunnelID:表示转发表项索引。该值不为0时,表示匹配该项的报文通过隧道转发(如:MPLS隧道转发)。该值为0时,表示报文不通过隧道转发
04 路由的来源
1.直连路由(Direct)
设备自动生成指向本地直连网络的路由
2.静态路由(Static)
网络管理员手工配置的路由
3. 动态路由(Dynamic)
路由器运行动态路由协议学习到的路由
05 动态路由协议
动态路由协议根据作用范围不同,可分为:
内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。常见的IGP协议包括OSPF和IS-IS。外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP是目前最常用的EGP协议。
06 路由迭代
路由必须有直连的下一跳才能够指导转发,静态路由或BGP路由的下一跳可能不是直连的邻居,因此需要计算出一个直连的下一跳,这个过程就叫做路由迭代。
数据转发流程
PC1发送数据包到PC2的流程如下:
PC1将报文发往网关设备R1。R1查找路由表项,确定转发的下一跳、出接口,之后将报文转发给R2。R2通过查找路由表项转发给R3。R3收到后查找路由表项,发现IP报文的目的IP地址属于本地接口所在网段,则直接本地转发,最终该报文被发往目的主机PC2。
0 留言