一、概述
前面我们在上一阶段时候已经简单学习了路由的基础知识了,但是很多东西不是学完就可以了,需要不断复习总结归纳,然后基于原有技术学习更高级的知识的,关于路由的知识会一直反复进行学习和巩固。
参考:路由基础
二、IP路由基础
二层交换机通过MAC地址表进行端口转发,当路由器收到一个IP数据包,路由器会根据数据包的目的IP地址查找FIB(Forwarding Information Base,转发信息库)表,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳转发出去。
路由器功能:
-
查表:根据目的网络查询路由表 -
转发:匹配到路由器依据出接口或下一跳进行转发
路由工作原理:
路由器是根据目的地址进行查找本地路由表,有匹配才会进行转发,如果都没有则丢弃而不会像二层交换机进行广播和泛洪操作,因此一般我们出口访问互联网都会配置一条目的地址为0.0.0.0 0.0.0.0 的默认路由,因为我们不能具体定义到达所有互联网的具体路由,但是路由器的特性又要求我们必须有路由才能转发,因此我们写的全0默认路由。
路由器接收到IP报文依据报文的目的地址匹配路由表项:
-
如果匹配则依据出接口或下一跳进行报文转发 -
如果没有匹配则直接丢弃
三、路由表与转发表
那路由表是什么?
具有路由功能的网络设备都维护两种重要的数据表:一是路由表RIB(Routing Information Base,路由信息库);二是转发表FIB。这里路由功能的设备包括路由器、三层交换机、防火墙等三层设备。
路由表: 可以将路由表视为位于路由器的控制平面,实际上路由表并不直接指导数据转发。路由器在执行路由查询时,并不是在路由表中进行报文目的地址的查询,真正指导数据转发的是FIB表,路由器将路由表中的最优路由下载到FIB表,此后如果路由表中的相关表项发生变化,FIB表也将立即同步。
由于两张表的一致性,且路由表阅读起来更直观,因此在绝大多数场合,在阐述路由器数据转发过程时,会用“路由表”这个说法,实际上,路由器查询的是FIB表,位于控制层面的路由表只是提供路由信息。
转发表FIB: FIB表位于路由器的数据平面,亦被称为转发表项,每条转发表项都指定要到达某个目的地所需通过的出接口及下一跳IP地址等信息。真正意义上进行数据转发的表项。
总的来说就是路由器根据不同的路由协议进行比较,最优的路由条目会下发同步到FIB转发表,实际上设备是根据FIB进行转发,但是由于一般情况下两者相似一致,所以也说依据路由表转发。
这里如图看到上面涉及到不同路由协议的路由表,就是不同类型的路由都会有自己的路由表,然后路由器先进行不同类型的比较,然后相同类型路由表再根据优先级选择最优路由,然后下发到FIB表。
# 不同的路由表项
<KL_HC_JT_FW_01>dis ip routing-table protocol ?
bgp BGP routes
direct Direct routes
eigrp EIGRP routes
guard Guard routes
isis IS-IS routes
lisp LISP routes
ospf OSPF routes
rip RIP routes
static Static routes
# 直连路由表项
<KL_HC_JT_FW_01>dis ip routing-table protocol direct
Summary count : 40
Direct Routing table status : <Active>
Summary count : 33
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.0.0.0/30 Direct 0 0 10.0.0.1 GE1/0/0
10.0.0.0/32 Direct 0 0 10.0.0.1 GE1/0/0
10.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
# 静态路由表项
<KL_HC_JT_FW_01>dis ip routing-table protocol static
Summary count : 41
Static Routing table status : <Active>
Summary count : 41
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 Static 60 0 0.0.0.0 Dia0
0.0.0.0 Dia1
10.0.0.4/30 Static 60 0 10.0.0.2 GE1/0/0
10.0.0.8/30 Static 60 0 10.0.0.2 GE1/0/0
# 还有很多其它的
每个路由器都有路由表,而路由表又分为本地核心路由表和协议路由表。
协议路由表-->本地核心路由表-->FIB表
关键相关字段:
-
Destination:表示此路由的目的地址。用来标识IP包的目的地址或目的网络。 -
Mask:表示此目的地址的子网掩码长度。与目的地址一起来标识目的主机或路由器所在的网段的地址。 -
Proto(Protocol):表示学习此路由的路由协议。 -
Pre(Preference):表示此路由的路由协议优先级。 -
Cost:路由开销。 -
NextHop:表示转发到此目的网络的下一跳。指明数据转发的下一个设备。 -
Interface:表示转发到此目的网络的出接口。指明数据将从本地路由器哪个接口转发出去。
最长匹配原则: 路由器查找FIB表时,将报文的目的IP地址和FIB表中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表中的网络地址则匹配。
简单点说就是掩码越长比如32位就是代表越具体的目的,比/24的优先匹配,就像我们知道姓名、年龄、身份证号越具体越优先,而不是先从省份、城市、性别再查找。
四、路由的来源
路由器是依据路由表进行查找转发,那路由表信息怎么来的呢?大概了自己产生的和从其它地方学习到的:大概如下几种方式:
-
直连路由:直连接口所在网段的路由,由设备自动生成。端口必须配置地址且接口状态UP。 -
静态路由:由网络管理员手工配置的路由条目。下一跳可达才生效。 -
动态路由:路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由。
直连就是路由器直接连接设备而自动产生的路由,静态就是管理员手工配置的路由。而动态是通过动态路由协议从其它邻居获取然后存放在本地的路由表项,后面会专门学习这些。
路由协议分类:
-
(1)动态静态:静态路由协议、动态路由协议 -
(2)业务范围:组播路由协议IGMP、 单播路由协议(OSPF) -
(3)有类无类:无类路由协议 、有类路由协议(RIPv1外全部是无类路由协议) -
(4)范围来分:IGP 、 EGP(当前只有一种BGP) -
(5)算法来分:LS(链路状态 OSPF ISIS) 、 DV(距离矢量 RIP)
路由递归: 路由表项里面有一个下一跳字段,路由必须有直连的下一跳才能够指导转发,静态路由或BGP路由的下一跳可能不是直连的邻居,因此需要计算出一个直连的下一跳,这个过程就叫做路由迭代。
如果到达目的网段的下一跳不可达,需要再增加一条目的网段为下一跳网段的路由,逐条路由。
简单说就是如果下一跳不知道就需要先知道到达下一跳的路由,走两个步骤,通过步骤一找到下一跳的路由然后到达目的路由。
数据转发过程: 示例:PC1发送数据包到PC2的流程如下:
-
PC1将报文发往网关设备R1。 -
R1查找路由表项,确定转发的下一跳、出接口,之后将报文转发给R2。 -
R2通过查找路由表项转发给R3。 -
R3收到后查找路由表项,发现IP报文的目的IP地址属于本地接口所在网段,则直接本地转发,最终该报文被发往目的主机PC2。
总结:今天继续复习了关于路由的基础概念,路由器根据IP数据包的目的地址进行查找路由表,路由表选举最优路由放到本地核心路由表项,然后下发到FIB转发表项,实际是依据转发表进行数据转发。路由有自己产生和动态学习得来,路由选举依据最长匹配原则进行匹配,还有路由迭代和数据转发的示例。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布