路由协议、相关概念整理
1.路由表
1.1 什么是路由表?
路由表是路由器中路由条目的集合,这个路由表中包含有路由器掌握的目的网络地址以及通过此路由器可以到达这些网络的最佳路径,比如某个接口或者下一跳的地址,由于路由表的存在,路由可以依据它进行转发。
PROTOCOL | DES/MASK | PRE | COST | NEXTHOP | INTERFACE |
---|---|---|---|---|---|
static | 0.0.0.0/0 | 60 | 0 | 120.0.0.2 | Serial1/0 |
RIP | 8.0.0.0/8 | 100 | 3 | 120.0.0.2 | Serial1/0 |
OSPF | 9.0.0.0/8 | 10 | 50 | 20.0.0.2 | Ethernet0/0 |
1.1.1 路由来源
这里对应PROTOCOL字段,表示路由条目项的产生来源,说明该路由条目如何产生,通过何种协议算法记录。
1.1.2 目标网络地址
-
目的地址:指明目标IP包的网络地址或者目的地址
-
网络掩码:与目的地址与运算确定主机或路由器网段
1.1.3 管理距离和代价
-
用来指明该条路由的可信程度以及目标网络的代价
-
管理代价:同一个源端和目的端,之间有多条路径可选,选取哪一条最合适,跳转最少,是根据代价来选取的。
-
管理距离:根据不同的信息源确定管理路径最优解。
-
常见管理距离值
路由信息源 | 默认管理距离 |
---|---|
直连路由Connected | 0 |
直连路由Static | 1 |
EIGRP | 90 |
IGRP | 100 |
OSPF | 110 |
RIP | 120 |
EGP | 140 |
外部EIGRP | 170 |
未知 | 255 |
1.1.4 下一跳
要被转发的数据包,进入的下一个路由器的入口IP地址
1.1.5 输出接口
指明去往目标网络的数据包从本地路由器的哪个物理接口送出
1.2 路由表匹配过程和原则
最长掩码匹配原则,选择具有最长的子网掩码进行匹配查找。
当没有任何路由条目匹配待路由数据包时,路由才会采用最后一条路由条目---网络号和掩码位全为0的路由,该路由称为缺省路由,也就是可以匹配任何一个目的IP。
2. 路由协议分类
-
路由选择协议:用来建立和维护路由表,并按照到达数据包的目的地址最佳路径转发数据包。
-
被路由协议:用来将数据和网络层地址信息一起封装到数据包中,目的是它可以通过互联网络进行中继传输。
-
二者区别:路由选择协议简称为路由协议,路由协议负责学习最佳路径并转发,而被路由协议根据最近路径将来自上层的信息封装在IP包里传输:被路由协议在网络中被路由,例如:IP协议。路由选择协议是实现路由算法的协议,如:OSPF、RIP、IGRP、EIGRP、EGP、BGP等。
2.1 直连路由、静态路由和动态路由
-
直连路由:直连路由是路由器自动发现并安装的路由信息,即直连路由不需要进行配置维护。
-
动态路由:动态路由是网络中的路由器之间相互通信、传递路由信息、利用收到的路由信息更新表的过程
-
静态路由:静态路由是由网络管理员在路由表中设置的固定的路由条目
2.2 内部网关协议(IGP)和外部网关协议(EGP)
-
根据是否在一个自治系统(AS)内部使用,路由协议分为内部网关协议IGPS和外部网关协议EGP
-
自治系统指的是具有统一管理机构、统一路由策略的网络。Internet由一系列的自治系统组成,各个自治系统经由核心路由连接主干网络。每个自治系统一般是一个组织实体内部的网络与路由器结合。
-
在一个自治系统内部运行的路由协议称为内部王工协议IGP,目前最流行的是RIP协议、OSPF协议等,这些协议没有一个是占主导地位的,但是RIP可能是最常见的IGP协议。
-
用于不同自治系统之间的路由协议称为外部网关协议EGP。外部网关协议起着连接不同自治区域并在各个自治区域之间转发路由数据包的桥梁作用。典型的外部网关协议是边界路由网关协议BGP。
-
协议示意图
2.3 距离矢量、链路状态路由选择协议
2.3.1 距离矢量路由选择协议
距离向量路由选择协议基于距离矢量的路由算法,也成贝尔曼-福特算法。距离矢量路由选择协议计算网络中所有链路的向量(方向)和距离。它是为小型网络环境设计的,在大型网络环境下,这类协议在学习路由及保持路由时将产生较大的流量,占用过多带宽。距离向量路由协议在使用跳数作为度量值,来计算达到目的要经过的路由器数量。常见的协议有RIP、IGRP。
2.3.2 链路状态路由选择协议
链路状态路由选择协议基于链路状态路由选择算法,也称为最短路径优先级算法SPF。它在路由选择过程中使用“代价”作为度量单位,而作为代价的网络参数有速度、费用、可靠性。
链路状态路由选择协议定时重新发现整个网络或是路由器所在的部分网络。此类协议基于拓扑数据库来建立路由表。该数据库是根据所在的路由器之间传递的链路状态数据包建立起来的,用以描述网络状态。基于链路状态的路由选择算法就是使用此数据库建立路由选择表。常见协议包括OSPF、IS-IS。
2.4 有类路由和无类路由
2.4.1 有类路由协议
-
有类路由协议的特点是发送路由更新包的时候不携带路由条目的子网掩码。
-
有类路由协议包括RIPv1、IGRP等
2.4.2 无类路由协议
-
无类路由协议的特点是发送路由更新包的时候携带自己的子网掩码信息
-
无类路由协议包括RIPv2、EIGRP、OSPF、IS-IS等。
3. 静态路由配置
3.1 静态路由配置
3.1.1 静态路由简介
静态路由是由管理员在路由器中手动配置的固定路由,路由明确的指定了数据包到达目的地必须经过的路径,除非网络管理员干预,否则静态路由不会发生变化。
3.1.2 静态路由的配置命令
ip route <ip_address> <mask> {<interface>|<gateway>} [<preference>]
-
<ip_address>
和<mask>
分别为目的的IP地址和子网掩码,点分十进制格式 -
<interface>
为该路由器的输出接口名称和接口号; -
gateway
为下一跳的IP地址,点分十进制格式; -
<preference>
为路由优先级,取值范围为1~255,越小优先级越高
4. RIP协议
4.1 RIP概述
-
RIP属于典型的距离向量路由选择协议
-
RIP以到目的网络的最小跳数作为路由选择度量标准,而不是在链路带宽和延迟的基础上进行选择
-
RIP的跳数计数限制为16跳,16跳即表示不可以到达,限制了网络的规模
-
RIPv1是一种有类路由协议,不支持连续子网设计;而RIPV2是一种无类路由协议
-
RIP周期进行路由更新,将路由表广播给邻居路由器,广播周期为30S
-
RIP的管理距离为120
-
RIP使用广泛,简单、可靠、便于配置,但是只适用于小型的同构网络
-
RIP封装:
4.2 RIP路由表形成过程
- 路由表初始状态
- 路由表更新
- 路由表收敛
4.3 路由自环产生
是指某个报文从一台路由器出发,经过几次转发之后又回到初始的路由器。原因是部分路由表出现错误。“路由自环”会极大的浪费网络资源,因此应该尽量避免产生
4.3.1 常用路由环路解决
a . 定义最大值
距离矢量路由算法可以通过IP头中的生存时间(TTL)自纠错,但路由环路问题可能首先要求无穷计数。为了避免这个延时问题,距离矢量协议定义了一个最大值,这个数字是指最大的度量值(最大值为16),比如跳数。也就是说,路由更新信息可以向不可到达的网络的路由中的路由器发送15次,一旦达到最大值16,就视为网络不可到达,存在故障,将不再接受来自访问该网络的任何路由更新信息
b. 水平分割
一种消除路由环路并加快网络收敛的方法是通过叫做“水平分割”的技术实现的。其规则就是不向原始路由更新来的方向再次发送路由更新信息(个人理解为单向更新,单向反馈)。比如有三台路由器ABC,B向C学习到访问网络10.4.0.0的路径以后,不再向C声明自己可以通过C访问10.4.0.0网络的路径信息,A向B学习到访问10.4.0.0网络路径信息后,也不再向B声明,而一旦网络10.4.0.0发生故障无法访问,C会向A和B发送该网络不可达到的路由更新信息,但不会再学习A和B发送的能够到达10.4.0.0的错误信息
c. 路由中毒
定义最大值在一定程度上解决了路由环路问题,但并不彻底,可以看到,在达到最大值之前,路由环路还是存在的。为此,路由中毒就可以彻底解决这个问题。其原理是这样的:假设有三台路由器ABC,当网络10.4.0.0出现故障无法访问的时候,路由器C便向邻居路由发送相关路由更新信息,并将其度量值标为无穷大,告诉它们网络10.4.0.0不可到达,路由器B收到毒化消息后将该链路路由表项标记为无穷大,表示该路径已经失效,并向邻居A路由器通告,依次毒化各个路由器,告诉邻居10.4.0.0这个网络已经失效,不再接收更新信息,从而避免了路由环路。
d. 反向中毒
结合上面的例子,当路由器B看到到达网络10.4.0.0的度量值为无穷大的时候,就发送一个叫做毒化逆转的更新信息给C路由器,说明10.4.0.0这个网络不可达到,这是超越水平分割的一个特列,这样保证所有的路由器都接受到了毒化的路由信息。
e. 控制更新时间
抑制计时器用于阻止定期更新的消息在不恰当的时间内重置一个已经坏掉的路由。抑制计时器告诉路由器把可能影响路由的任何改变暂时保持一段时间,抑制时间通常比更新信息发送到整个网络的时间要长。当路由器从邻居接收到以前能够访问的网络不能访问的更新后,就将该路由标记为不可访问,并启动一个抑制计时器,如果再次收到从邻居发送来的更新信息,包含一个比原来路径具有更好度量值的路由,就标记为可以访问,并取消抑制计时器。如果在抑制计时器超时之前从不同邻居收到的更新信息包含的度量值比以前的更差,更新将被忽略,这样可以有更多的时间让更新信息传遍整个网络
f. 触发更新
正常情况下,路由器会定期将路由表发送给邻居路由器。而触发更新就是立刻发送路由更新信息,以响应某些变化。检测到网络故障的路由器会立即发送一个更新信息给邻居路由器,并依次产生触发更新通知它们的邻居路由器,使整个网络上的路由器在最短的时间内收到更新信息,从而快速了解整个网络的变化。但这样也是有问题存在,有可能包含更新信息的数据包被某些网络中的链路丢失或损坏,其他路由器没能及时收到触发更新,因此就产生了结合抑制的触发更新,抑制规则要求一旦路由无效,在抑制时间内,到达同一目的地有同样或更差度量值的路由将会被忽略,这样触发更新将有时间传遍整个网络,从而避免了已经损坏的路由重新插入到已经收到触发更新的邻居中,也就解决了路由环路的问题
4.3.2 RIP的计时器
-
更新计时器(update Timer) --30s
-
失效计时器(Invalid Timer) --180s
-
清空(Flushed) 计时器 --270s
-
抑制计时器(Hold down timer) --180s
5. OSPF协议
5.1 OSPF概述
- OSPF(open shortest path first),开放最短路径优先级
- 它是IETF组织开发的一个基于链路状态的内部网关协议的典型代表。用于在单一自治系统内决策路由。与RIP相对,OSPF是链路状态路由协议,而RIP是距离向量路由协议。链路是路由接口的另一种说法,因此OSPF也称为接口状态路由协议。
5.2 OSPF特性
- 适应范围:支持各种规模网络,最多支持几百台路由器;同时OSPF也支持可变长子网掩码VLSM;
- 快速收敛:在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步,当网络拓扑改变后迅速收敛,协议带来的网络开销很小;
- 无自环:由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由;
- 区域划分:允许自治系统的网络被划分成区域来管理,从而减少了占用的网络带宽;
- 等价路由:支持到同一目的地址多条等价路由;
- 路由分级:使用4类不同的路由,按优先级顺序来说分别是:区域内路由、区域路由、第一类外部路由、第二类外部路由
- 支持验证:支持基于接口的报文验证以保证路由计算的安全性,也可防止对路由器、路由协议的攻击行为;同时OSPF数据包直接封装于IP协议之上;
- 组播发送:支持组播地址;同时OSPF并不是周期性的广播路由表,节省了宝贵的带宽资源;并且OSPF数据包的TTL的值被设置为1,即OSPF数据包只能被传送到一跳范围之内的邻居路由器。
5.3 OSPF数据包类型
编号 | 类型 | 用途 |
---|---|---|
1 | HELLO报文 | 发现邻居、维持邻居、选举DR/BDR |
2 | 数据库描述报文 | 交换链路状态数据库LSA头 |
3 | 链路状态请求 | 请求一个指定的LSA数据细节 |
4 | 链路状态更新 | 发送被请求的LSA数据包 |
5 | 链路状态确认 | 对链路状态更新包的确认 |
5.4 OSPF基本术语
- 路由器标识--Router ID
- 邻居--Neighbors
- 邻接--Adjacency
- 指定路由器--DR
- 备份指定路由器--BDR
- 非指定路由器--DRother
- OSPF链路状态数据库--Link-StateDatabase
5.5 五种类型的OSPF数据包
5.5.1 Hello数据包
-
Hello数据包是编号为1的OSPF数据包
-
运行OSPF协议的路由器每隔一定时间发送一次Hello数据包,用以发现、保持邻居关系并可以选举DR/BDR
-
报文字段展示:
5.5.2 链路状态数据库描述数据包
-
链路状态数据库描述数据包--DBD,是编号为2的OSPF数据包。其在数据包在链路状态数据库交换期间产生。其主要作用为:
-
选举交换俩路状态数据库过程中的主从关系
-
确定交换链路状态数据库过程中的初始序列号
-
交换所有LSA数据包头部
-
-
报文字段展示:
5.5.3 链路状态请求报文
-
链路状态请求报文--LSA-RED,是编号为3 的OSPF数据包
-
该数据包用于请求在DBD交换过程发现的本路由器中没有的或已过时的LSA包细节
-
报文字段展示:
5.5.4 链路状态更新数据包
-
链路状态更新数据包--LSA-Update是编号为4的OSPF数据包
-
该数据包用于将多个LSA泛洪,也用于对接收到的链路状态更新进行应答。如果一个泛洪LSA没有被确认,它将每隔一段时间重传一次,默认5S
-
报文字段展示:
5.5.5 链路状态确认数据包
-
链路状态确认数据包--LSA Acknowledgement 是编号为5的OSPF数据包
-
该数据包用于对接收到的LSA进行确认
-
报文字段展示:
5.6 LSA数据包
作为一种链路状态路由协议,OSPF将链路状态广播数据包LSA传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分后者全部的路由表传递给与其相邻的路由器。
5.6.1 LSA数据包类型
编号 | 类型 | 生成 | 描述和传递范围 |
---|---|---|---|
1 | 路由器LSA | 每个路由器 | 描述了路由器的链路状态和花费,传递到整个区域 |
2 | 网络LSA | DR | 描述本网段的链路状态,传递到整个区域 |
3 | 网络汇总LSA | ABR | 描述某一区域内某一网段的路由,传递到相关区域 |
4 | ASBR汇总LSA | ASBR | 描述了到ASBR的路由,传递到相关区域 |
5 | AS扩展LSA | ASBR | 描述了到AS外部的路由,传递到整个AS |
5.7 OSPF的五种网络类型的介质特性
介质类型 | 寻址 | DB/DBR | 手工设置邻居 | HELLO时间 | 死亡间隔时间 |
---|---|---|---|---|---|
点到点 | 组播 | 否 | 否 | 10 | 40 |
广播 | 组播 | 是 | 否 | 10 | 40 |
非广播多路访问 | 单播 | 手工指定 | 是 | 30 | 120 |
点到多点 | 组播 | 否 | 否 | 30 | 120 |
点到多--非广播 | 单播 | 否 | 是 | 30 | 120 |
5.8 OSPF协议工作过程
5.8.1 建立路由器的邻接关系
-
OSPF路由器以交换路由为目的,在所选择的相邻路由器之间建立的一种关系。
-
路由器首先发送拥有自身ID(Loopback端口或最大IP地址)信息的Hello报文。与之相邻的路由器如果收到这个Hello报文,就将这个报文内的ID信息加入到自己的Hello报文内。
-
如果路由器的某端口收到从其他路由器发送的含有自身ID信息的Hello报文,则它根据该端口所在网络类型确定是否可以建立邻接关系。
-
点对点网络中,路由器将直接和对端路由器建立起邻接关系,并且该路由器将直接进入第三部操作:发现其他路由器。若为非广播多路访问网络,该路由器将直接进入选举步骤。
5.8.2 选举DR/BDR
-
不同类型的网络选举DR和BDR的方式不同
-
非广播多路访问网络支持多个路由器,在这种状况下,OSPF需要建立起作为链路状态和LSA更新的中心节点。选举利用Hello报文内的ID和优先权。字段值来确定。优先权字段值大小从0到255,优先权值最高的路由器成为DR。如果优先权值大小一样,则ID值最高的路由器选举DR,优先权值次高的路由器选举为BDR。优先权值和ID值都可以直接设置。
5.8.3 发现路由器
-
在这个步骤中,路由器与路由器之间首先利用Hello报文的ID信息确认主从关系,然后主从路由器相互交换部分链路状态信息。每个路由器对信息进行比较分析,如果收到的信息有新的内容,路由器将要求对方发送完整的链路状态信息。这个状态完成后,路由器之间建立完全相邻关系,同时邻接路由器拥有自己独立的、完整的链路状态数据库。
-
在非广播多路访问网络内,DR与BDR互换信息,并同时与本地子网内其他路由器交换链路状态信息。
-
点对点或者点对多点网络中,相邻路由器之间交换信息
5.8.4 选择适当的路由器
-
当一个路由器拥有完整独立的链路状态数据库后,它将采用SPF算法计算并创建路由表。OSPF路由器依据链路状态数据库的内容,独立的用SPF算法计算出每到一个目的网络的路径,并将路径存入路由表中。
-
OSPF利用度量计算目的的路径,Cost最小者即为端路径。在配置OSPF路由器时可根据实际情况,如链路带宽、时延或经济上的费用设置链路Cost大小。Cost越小,则该链路被选为路由的可能性越大。
5.8.5 维护路由信息
- 当链路状态发生变化时,OSPF通过泛洪过程通告网络上的其他路由器。OSPF路由器接收到包含有新信息的链路状态更新报文,将更新自己的链路状态数据库,然后利用SPF算法重新计算路由表。在重新计算过程中,路由器继续使用旧路由表。指导SPF完成新的路由表计算。新的链路状态信息将发送给其他路由器。值得注意的是,即使链路状态没有发生改变,OSPF路由信息也会自动更新,默认时间为30min。OSPF路由器之间使用链路状态通告LSA来交换各自的链路状态信息,并把获得的信息存储在连了状态数据库中。个OSPF路由器独立的使用SPF算法计算到各个目的地址的路由。
5.9 OSPF区域
OSPF区域-
区域路由器(IAR):上图中RA、RB、RC、RE、RF、RG、RI、RK。一个区域内路由器的所有接口都在同一区域内,该路由器负责维护本区域内部路由器之间的链路状态数据库。
-
骨干路由器:位于区域0内的路由器被称为骨干路由器。骨干路由器可以是区域内路由器,也可以是区域边界路由器。如上图RD、RE、RF、RG、RH
-
区域边界路由器(ABR):该路由器处于连个区域的交界处。一台路由器若在连个及以上的区域内都有接口,则此路由器称为ABR。如上图RD、RH。区域边界路由器拥有所连接区域的所有链路状态数据库并负责在区域之间发送LSA更新消息。
-
自治系统边界路由器(ASBR): 该路由器处于自治系统边界,负责和自治系统外部交换路由信息。如图RJ。
学习整理参考:https://wenku.baidu.com/view/b770cd815e0e7cd184254b35eefdc8d376ee14a6.html