目录
内部网关协议IGP
按照算法原理分
按照适用范围分
两者优缺点比较
RIP协议
RIP的两个版本区别
RIPv2认证功能
RIP协议优缺点
RIP协议路由环路发生原理及处理方式
造成路由环路的原因:
路由环路的危害
路由环路解决方法编辑
OSPF协议
Router-ID(唯一标识一个路由器)
Router-ID 使用 IP 地址的形式来表示,确定 Router-ID 的方法为:
COST(花销)
链路状态(Link-State)
邻居(Neighbor):
邻接(Adjacency)
DR/BDR选举规则:
内部网关协议IGP
OSPF和RIP都是目前最常用的内部网关协议(IGP),内部网关协议(IGP)是一种专用于一个自治网络系统(比如:某个当地社区范围内的一个自治网络系统)中网关间交换数据流转通道信息的协议。网络IP协议或者其他的网络协议常常通过这些通道信息来决断怎样传送数据流。
2022年下半年软考案例分析原题:
按照算法原理分
距离矢量型路由协议(距离矢量算法) :RIP
链路状态路由协议(Dijkstra最短路径优先算法) :OSPF
按照适用范围分
RIP适用于小型网络,OSPF适用于中大型网络,
疑问:为什么RIP仅适用小型网络?而OSPF可以适用于中大型网络?(和各自特性有关)
两者优缺点比较
两者都是动态内部网关协议,由于RIP的实现较为简单,在配置和维护管理方面也远比OSPF容易,但存在着收敛慢、路由环路、可扩展性差等问题;
OSPF作为基于链路状态的协议能够解决RIP所面临的诸多问题。此外,OSPF还有以下优点 : SPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响 ; OSPF支持光类型域间选路(CIDR) ; OSPF支持对等价路由进行负载分担 ; OSPF支持报文加密。疑问:RIP路由环路如何形成的?OSPF为什么采用组播,采用组播形式有什么优势?
RIP协议
Routing Information Protocol 路由信息协议
RIP 被定义为基于距离矢量的路由协议,而距离矢量路由协议的特征就是自己的路由表是完全从其它路由器学来的(仅和相邻路由器交换信息),并且将学习到的路由条目一丝不变地放进自己的路由表,用于数据转发。正因如此,对于路由是否正确,对于目标是否可达,RIP全然不知。
RIP 使用跳数作为度量(metric),跳数就是到达目标网络所需要经过的路由器个数,每经过一个路由器+1 ,因为直连网络不需要经过任何路由器,所以直连网络的 metric 为 0。RIP 所支持网络的最大跳数为 15,也就是 metric 值最大为 15,当跳数为16时目标会被认为不可达,由此可见,RIP 并不适合大型网络。
如果路由表中存在多条目标网段和子网掩码相同的路由信息,那么路由器会根据这些路由信息的管理距离来选择最佳的路由。在RIP协议中,管理距离是用来表示路由信息的可靠性或优先级的参数,值越小表示优先级越高。因此,当路由表中存在多条相同目标网段和子网掩码的路由信息时,路由器会选择管理距离较小的那条路由信息作为最佳路径,以确保数据包能够按照最可靠的路径转发到目的地。这样可以提高网络的性能和可靠性。
RIP的两个版本区别
1,RIPv1是一个有类路由协议,即所有的更新包中不含子网掩码,不支持VLSM, 所以就要求网络中所有设备必须使用相同的子网掩码,否则就会出错,而RIPv2是一个无类的路由协议,它使用子网掩码。
2,RIP是应用层协议, 使用 UDP 数据报传送,端口号 520 将路由条目从开启了 RIP 进程的接口上发出,ver1 使用广播地址 255.255.255.255 发出,而 ver 2 使用组播地址 224.0.0.9 发出。3,RIPv1不支持认证,RIPv2支持明文或者是 MD5验证,要求两台路由器在同步路由表的时候必须进行验证,通过才可以进行路由同步,这样可以加强安全性。
4,RIPv1对路由没有标记的功能,RIPv2可以对路由打标记(tag),管理员可以根据路由的标记来设置过滤规则,只允许特定标记的路由信息传播或者被接受,也可以根据不同的标记制定不同的路由策略。例如,可以基于标记来决定路由的优先级、成本或者路径选择,从而实现更加灵活的路由控制和优化。
无论是 ver 1 还是 ver 2,都会将路由表每 30 秒定期向网络中发送,RIP 没有邻居的概念,所以自己并不知道发出去的路由更新是不是有路由器收到,而收到的路由更新,RIP 并不会绝对接受,只有当路由的发送 IP 地址和自己接收的接口 IP 地址处于同网段时,才会接收,否则忽略。如果路由表中的路由超过 180 秒都没有再次收到更新,则被标记为不可用,如果连续 240 秒没收到更新,最后将相应路由从路由表中删除。
RIPv2认证功能
由于 RIP 没有邻居的概念,所以自己并不知道发出去的路由更新是不是有路由器收到,同样也不知道会被什么样的路由器收到,因为 RIP 的路由更新是明文的,网络中无论谁收到,都可以读取里面的信息,这就难免会有不怀好意者窃听 RIP 的路由信息。为了防止路由信息被非法窃取,RIP ver 2 可以相互认证,只有能够提供密码的路由器,才能够获得路由更新。路由器之间,当一方开启认证之后,另一方也同样需要开启认证,并且密码一致,才能读取路由信息。
RIP协议优缺点
在小型网络中,RIP(Routing Information Protocol)是一个简单且易于配置的动态路由协议,具有以下优点:
-
开销小:RIP使用广播或组播的方式发送路由更新信息,对带宽的占用相对较小。在小型网络中,RIP的路由更新频率通常较低,因此对带宽的需求也较小。
-
易于配置和管理:RIP的配置相对简单,管理员只需要在路由器上启用RIP,并设置相应的网络地址即可。由于RIP的工作原理比较直观,因此管理起来比较容易。
-
好消息传得快:在RIP中,路由器会周期性地向相邻路由器发送路由更新信息,告知它们自己所知道的路由信息。这种方式下,如果有新的路由信息或者网络变化发生,RIP会比较快地将这些信息传播到整个网络中,使得路由器能够迅速适应网络拓扑的变化。
“好消息”指的是网络中的正常路由信息,即可用于转发数据包的路由信息。当路由器接收到来自其他路由器的更新信息时,如果这些信息包含了新的可达网络或者更优的路由路径,那么这些信息就被认为是“好消息”,因为它们可以帮助路由器更好地选择最佳路径,提高数据包的转发效率和网络的性能。
缺点:
- 网络规模被限制,最大跳数为15跳
- 使用“跳数”作为度量值,以跳数的多少比较路由路径的优劣。 RIP 选择一个具有最少路由器的路由(即距离最短路由)来发送数据,哪怕还存在另一条高带宽但路由器较多的路由。
- 收敛速度慢。当网络中出现拓扑变化时,需要较长的时间才会收敛。可能会导致网络中路由表信息不一致。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
RIP协议路由环路发生原理及处理方式
造成路由环路的原因:
网络拓扑结构发生变化,但路由器之间的路由信息更新不及时,导致出现路由环路。
如上图所示,当正常运行的40.0.0.0突然不可达时,R3路由器将到40.0.0.0的路由条目删除,但是还没来的及向 R2路由器进行更新。此时R2路由器更新计时器先超时,R2将自己的路由信息发送给R3,R3就从R2处又学习到了40.0.0.0的路由信息,并且将距离设置成2。此时,R3 的路由表已经出现了错误,但路由器并不知道。
当R1的更新计时器超时后,R1又向R2发送自己的路由信息,R2用从R1路由表内学习到的路由信息将自己的到40.0.0.0的路由信息进行覆盖,此时R2到网1的路由信息中,距离字段被改为3。然后R2再发给R3,R3在修改距离为4。。。。
以此类推,在不断的路由更新中,到网1的距离会逐渐增加直至16,同时R2与R3之间在到网1的路由信息上形成了路由环路。如果没有一定的措施去解决的话,路由器将永远无法发现这个错误。
路由环路的危害
- 环路内的路由器占用链路带宽来反复收发流量。
- 路由器的 CPU 承担了无用的数据包转发工作,从而影响到网络收敛。
- 路由更新可能会丢失或无法得到及时处理。可能会导致更多的路由环路,使情况进一步恶化。
- 数据包丢失;
路由环路解决方法
-
最大跳计数(maximum metric):通过限制路由器的跳数,可以避免出现无限循环的情况,因为超过一定跳数的路由会被视为不可达。这是一个简单而有效的机制,可以防止数据包在网络中无限循环。
-
水平分隔(split horizon):通过限制路由器将接收到的路由信息再发送回原来的接收方向,可以避免路由环路的发生。这种机制可以有效地阻止路由器将信息发送回导致信息循环的路径。
-
路由毒化(毒性反转):通过将不可达路由标记为毒性路由(metric设置为最大值)来通知其他路由器,可以有效地避免将数据包发送到不可达的网络。这种方法可以帮助路由器快速适应网络拓扑的变化。
-
触发更新(triggered updates):当检测到网络拓扑发生变化时,立即发送更新信息给邻居路由器,而不必等待定时更新。这可以帮助快速传播路由信息的变化,减少路由环路的可能性。
OSPF协议
Router-ID(唯一标识一个路由器)
OSPF 路由器之间相互通告链路状态,如果路由器之间分不清谁是谁,没有办法确定各自的身份,那么通告的链路状态就是毫无意义的,所以必须给每一个 OSPF 路由器定义一个身份。这就是 Router-ID,并且 Router-ID 在网络中绝对不可以有重名,否则路由器收到的链路状态,就无法确定发起者的身份,也就无法通过链路状态信息确定网络位置,OSPF 路由器发出的链路状态都会写上自己的 Router-ID,可以理解为该链路状态的签名,不同路由器产生的链路状态,签名绝不会相同。
Router-ID 使用 IP 地址的形式来表示,确定 Router-ID 的方法为:
手工指定Router-ID:这是一种确定Router-ID的常见方法,管理员可以手动指定一个IP地址作为Router-ID。
选择活动Loopback接口中IP地址最大的:如果存在活动的Loopback接口,则选择其中IP地址最大的作为Router-ID。一般来说,C类地址优先于B类地址,而非活动的接口的IP地址不能被选为Router-ID。
如果没有活动的Loopback接口,则选择活动物理接口IP地址最大的:如果没有活动的Loopback接口,那么选择活动的物理接口中IP地址最大的作为Router-ID。
软考真题(2022年下半年上午第26、27题)
(1)10.0.1.254;(2)12.1.1.2;
优先选择手动配置的RouterId,在没有手工配置的前提下,优选loopback接口地址中最大的地址作为router id,在没有配置loopback接门地址的前提下,优选其他接口的IP地址中选择最大的地址作为router id (不考虎接门的Up/Down状态)。
COST(花销)
OSPF 使用接口的带宽来计算度量值。计算方法:
cost=100Mbit/接口带宽
如果路由器要经过两个接口才能到达目标网络,那么很显然,两个接口的 Cost值要累加起来,才算是到达目标网络的 Metric 值,所以 OSPF 路由器计算到达目标网络的 Metric 值,必须将沿途中所有接口的 Cost 值累加起来,在累加时,只计算出接口,不计算进接口。
OSPF 会自动计算接口上的 Cost 值,但也可以通过手工指定该接口的 Cost 值,手工指定的优先于自动计算的值。OSPF 计算的 Cost,同样是和接口带宽成反比,带宽越高,Cost 值越小。到达目标相同 Cost 值的路径,可以执行负载均衡,最多 6 条链路同时执行负载均衡。
一个10Mbit/s的接口,cost值为:100Mbit/10Mbit=10
链路状态(Link-State)
链路状态(LSA)就是 OSPF 接口上的描述信息,例如接口上的 IP 地址,子网掩码,网络类型,Cost 值等等,OSPF 路由器之间交换的并不是路由表,而是链路状态(LSA),OSPF 通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。OSPF 路由器会将自己所有的链路状态毫不保留地全部发给邻居,邻居将收到的链路状态全部放入链路状态数据库(Link-State Database),邻居再发给自己的所有邻居,并且在传递过程种,绝对不会有任何更改。通过这样的过程,最终,网络中所有的 OSPF 路由器都拥有网络中所有的链路状态,并且所有路由器的链路状态应该能描绘出相同的网络拓朴。
与距离矢量路由不同,距离矢量路由中交换的是完整的路由表,这样如果有人恶意攻击的话,就能够知道整个网络拓扑结构。而链路状态路由则交换链路的状态,用户无法通过这个清晰的得知整个链路拓扑。
每台 OSPF 路由器根据自己周围的网络拓扑结构生成 LSA(Link StateAdvertisement,链路状态通告),并通过更新报文将 LSA 发送给网络中的 其它 OSPF 路由器,所有的 LSA 放在一起 便组成了 LSDB(Link State Database,链路状态数据库)OSPF 路由器将 LSDB 转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。
路由器会根据有向图,使用 SPF 算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。(数字48等等理解为cost值)
邻居(Neighbor):
邻居是指在OSPF网络中的两个路由器之间的逻辑关系,通常是指在同一个OSPF区域内的路由器之间的关系。邻居之间通过Hello报文建立联系,用于发现对方并建立邻接关系。邻居关系是在OSPF协议中用于维护路由器之间的连接状态和信息交换的。
路由器每隔10s发送一条hello报文,当超过 40s后还没有收到Hello回复包,也就是 Dead 时间过后还没有收到邻居的 Hello 包,路由器会认为邻居已经失效。当路由器检测到邻居失效后,会触发相应的邻居关系重建过程。
OSPF 路由器形成 OSPF 邻居的必备条件:
- Area-id(区域号码):即路由器之间必须配置在相同的 OSPF 区域,否则无法形成邻居。
- Hello 时间与 Dead 时间:即路由器之间的 Hello 时间和 Dead 时间必须一致,否则无法形成邻居。
- Authentication(认证):路由器之间必须配置相同的认证密码,如果密码不同,则无法形成邻居。
邻接(Adjacency)
OSPF 只有邻接关系之间才会交换 LSA,路由器会将链路状态数据库中所有的内容毫不保留地发给所有邻接,要想在 OSPF 路由器之间交换 LSA,必须先形成 OSPF 邻接关系。
DR( 指定路由器) / BDR (备用指定路由器)
OSPF协议会在拓扑网络中选择出一个核心路由器,称为 DR 指定路由器(Designated Router),网段中所有的 OSPF 路由器都和 DR 互换 LSA。DR 就会拥有所有的 LSA,并且将所有的 LSA 转发给每一台路由器。
如果 DR 失效后,那么就会造成 LSA 的丢失与不完整,所以在多路访问网络中除了选举出 DR 之外,还会选举出一台路由器作为 DR 的备份,称为 BDR(Backup Designated Router),BDR 在 DR 不可用时,代替 DR 的工作
之外,还有其他普通的路由器,这些路由器被称为Drother(有时也称为DROTHER,即非DR和非BDR的路由器),Drother路由器在OSPF网络中不具备DR和BDR的特殊角色,它们只是普通的路由器,负责和其他路由器交换LSA(链路状态通告)。Drother路由器与DR和BDR之间也会交换LSA,以确保网络中的LSDB(链路状态数据库)保持最新。
DR和Dorther处理数据报的区别:
所有 OSPF 路由器,包括 DR 与 BDR,都能够接收和传递目标地址为 224.0.0.5 的数据包。只有 DR 和 BDR 才能接收和传递目标地址为 224.0.0.6 的数据包。
DR/BDR选举规则:
DR 与 BDR 的选举是在一个二层网段内选举的,即在多个路由器互连的接口范围内,与 OSPF 区域没有任何关系,一个区域可能有多个多路访问网段,那么就会存在多个 DR 和 BDR,但一个多路访问网段,只能有一个 DR
和 BDR;选举 DR 和 BDR 的规则为:
1、比较接口优先级:
选举优先级最高的成为 DR,优先级数字越大,表示优先级越高,被选为 DR 的几率就越大,次优先级的为 BDR,优先级范围是 0-255,默认为 1,优先级为 0 表示没有资格选举 DR 和 BDR。2、Route-Id 大小:
如果在优先级都相同的情况下,Route-Id 最大的成为 DR,其次是 BDR,数字越大,被选为 DR 的几率就越大。