OSPF原理

OSPF参考:https://blog.csdn.net/ls19990712/article/details/100734908?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-6&spm=1001.2101.3001.4242

RIP与OSPF的区别

1)【名字不同】RIP(路由信息协议)——分布式的基于距离向量的路由选择协议;OSPF(开放最短路径优先协议)—— 使用分布式的基于链路状态的路由选择协议

2)【工作核心不同】RIP:跳数;OSPF:计算链路的度量值

3)【向谁发】RIP:仅和相邻路由器交换信息;

   OSPF:向本自治系统所有路由器发送消息,由于路由器发送的链路状态信息只能单向传送,OSPF不存在“坏消息传播得慢”的问题,更新过程的收敛性得到保证。

【发什么】RIP:路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表

   OSPF:发送的信息是与本路由器相邻的所有路由器的链路状态 ,只涉及与相邻路由器的连通状态,与整个互联网的规模无关。

【什么时候发】RIP:按固定的时间间隔交换路由信息(当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息)

OSPF:在网络刚刚启动计算第一次路由表时,一定发路由信息。只有当链路状态发生变化时,路由器才能向所有路由器用洪泛法发送此消息

(链路状态:说明本路由器都和哪些路由器相邻以及该链路的度量)

4)RIP协议使用运输层的用户数据包UDP来进行传送

   OSPF的位置在网络层,直接用IP数据报传送(其IP数据报首部的协议字段值为89)。由于OSPF构成的数据报很短,不仅减少了路由信息的通信量,而且在传送中不必分片,不会出现一片丢失而重传整个数据报的现象。

5)对一个给定的目的网络,可以根据IP数据报的服务类型TOS计算出不同的路由

6)RIP:不能在两个网络之间同时使用多条路由,选择一条具有最少路由器的路由即最短路由

  OSPF:如果到同一个目的网络有多条相同代价的路径时,可以将通信量分配给这几条路径,做到路径间的负载平衡

7)RIP:限制了网络规模,能使用的最大距离为15,16表示不可达

  OSPF:链路的度量可以是1~65 535中的任何一个无量纲的数,可供管理人员来决定。因此十分灵活。

8)RIP:1号版本不支持子网划分,2号版本支持子网划分

  OSPF在路由分组中包含子网掩码,支持可变长度的子网划分和无分类的编址CIDR

9)所有在OSPF路由器之间交换的分组(如链路状态更新分组)都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息。

10)由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库,及即全网拓扑结构图。OSPF的链路数据库能较快地进行更新,使每个路由器能及时更新其路由表,OSPF的更新过程收敛得快是其重要优点。

RIP协议的每个路由器虽然知道到所有的网络距离以及下一跳路由器,但是不知道全网的拓扑结构,只有到了下一跳路由器,才能知道再下一跳应当怎样走

11)为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,减少了整个网络上的通信量,减轻路由器的负担

参考:https://blog.csdn.net/m0_37345402/article/details/85447393

 

自治系统(AS)
内部网关协议(IGP)
外部网关协议(EGP)
AS:决定本系统使用哪种路由协议的单位
IGP:用于在单一AS内决策路由
EGP:用于在多个AS之间执行路由
IGP用来解决AS内部通信,EGP用来解决AS间通信
严格意义上来讲,BGP属于边界网关协议,因此只有EGP属于外部网关路由协议

OSPF区域:为了适应大型的网络,OSPF在AS内划分多个区域,每个OSPF路由器只维护所在区域的完整链路状态信息

划分区域的原因:改善网络的可扩展性,快速收敛达到优化网络性能的目的

OSPF将自己的链路发给全网,并且全网都是同一个链路信息图
OSPF的区域类型
骨干区域Area 0 :负责区域间路由信息传播的区域
非骨干区域-根据能够学习的路由种类来区分
标准区域:能够学习其他区域的路由,能学习外部路由
末梢区域(stub)
完全末梢(Totally stubby)区域
非纯末梢区域(NSSA)

 

域内通信量(Intra-Area Traffic)
单个区域内的路由器之间交换数据包构成的通信量
域间通信量(Inter-Area Traffic)
不同区域的路由器之间交换数据包构成的通信量
外部通信量(External Traffic)
OSPF域内的路由器与OSPF区域外或另一个自治系统内的路由器之间交换数据包构成的通信量
区域边界路由(ABR)
自治系统边界路由器(ASBR)

 

RouterID:唯一表示路由器的ID
Router ID选取规则
选取路由器loopback接口上数值最高的IP地址(最大IP地址)
如果没有loopback接口,在物理端口中选取IP地址最高的(最大IP地址)
也可以使用router-id命令指定Router ID

 

链路状态数据库的组成
每个路由器都创建了由每个接口、对应的相邻节点和接口速率组成的数据库
链路状态数据库中每个条目称为LSA(链路状态通告),常见的有六种LSA类型
Type1 路由器LSA 由区域内的路由器发出的(所有普通路由发给DR)
Type2 网络LSA 由区域内的DR发出的(宣告网络状态信息发给区域内普通路由器)
Type3 网络汇总LSA ABR发出的,其他区域的汇总链路通告(汇总交换)
Type4 ASBR汇总LSA ABR发出的,用于通告ASBR信息(告知区域内其他路由器ASBR位置)
Type5 AS外部LSA ASBR发出的,用于通告外部路由(外交官)
Type7 NSSA外部LSA NSSA区域内的ASBR发出的,用于本区域连接的外部路由(跟上面的区别是这里位于NSSA区域,上面是普通区域)

 

Metric:沿途更新的入向接口( inbound)的cost值的累加,ospf选路时候,这个值小的就是要选择的路径

HELLO 用于发现和维持邻居关系,选举DR和BDR

DBD 交换LSA链路状态,用于向邻居发送摘要信息以同步链路状态数据库

LSR 链路状态请求报文,在路由器B收到包含新信息的DBD后发送,用于请求更详细的信息

LSU 链路状态更新报文,收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA

LSACK 确认报文,确认已经收到LSU,每个LSA需要被分别确认

 

OSPF启动的第一个阶段是使用Hello报文建立双向通信的过程
失效(Down)状态:这是OSPF建立邻接关系的初始化状态,路由器没有与任何邻居交换信息
初始(init)状态:路由器的各个接口通过224.0.0.5发送Hello报文,例如当邻居路由器R2接收到R1发送的第一个Hello报文时就进入了lnit状态。
双向(2-Way)状态:收到第一个Hello报文的路由器R2发送一个Hello回应报文,该报文含有R1的ID,当R1接收到此报文后,就完成了双向通信的建立,DR和BDR的选举也是在该状态下完成的。其他路由器则是Drother。

 

OSPF启动的第二阶段是建立完全邻接关系
准启动(ExStart)状态:当存在DR和BDR时,路由器则处于此状态,在该状态下,DR和BDR与其他路由器建立邻接关系,
交换(Exchange)状态:DRother和DR 开始交换数据库描述包(DBD),数据中包含了数据库中的LSA条目的摘要信息,主/从路由器之间交换DBD时要确双方都能够接收到。
加载(Loading)模式:收到DBD更新的LS条目信息后,路由器将发送对方链路状态请求包LSR,请求更加详细的信息,对方路由器用链路状态更新包LSU回应该LSR,LSU需要对方确认收到
当路由器之间完成了数据库同步,他们的数据库数据已经完全一致,此时通过最短路径优先算法SPF来计算到达目的网络的最佳路径并形成路由表进行转发数据。

首先双方通过HELLO建立邻居,达到TWO-WAY状态,并选举DR,BDR,进入EXSTAR状态再发送空的DBD报文选举主从关系,接着进入EXCHANGE状态,被选为主的路由器先发送DBD报文,从路由器收到对比自己的路由表然后发送LSR(链路状态请求报文),主收到以后就回复LSU(里面装的是请求的路由条目)。
LSACK是对LSR LSU进行确认的报文

建立邻接关系---->学习链路状态信息---->链路状态数据库---->Dijkstra算法---->最短路径树---->路由表

DR和BDR的选举:

如果区域内已经有DR和BDR将不会选举

1、首先必须建立双向通信,接着区域内路由器都会宣传自己为DR(有DR了就是BDR),接着检查所有收到的Hello包,并列出优先级不为0的,邻居状态为(2-way)双向的接口的列表

2、从具有选取资格的路由器列表中,创建一个没有被宣告为DR的所有路由的集合

3、在这个集合中进行比较,优先级高(数值大)的,成为BDR;优先级相同Router-id高的,成为BDR,当网络中没有DR时,BDR自动成为DR,这个动作并不会产生任何数据包来通知其他邻居,只是在这之后发出的所有Hello中,DR字段都是 DR接口的IP地址

如果路由器优先级被设置为0,他将不参与DR与BDR的选举,一般是业务量少的路由器或者不太行的路由器(要看拓扑图,在两台路由器设备直连的情况下是没意义的)

1.选举DR、BDR是为了在多路访问中减少邻接关系的建立,以优化性能
2.在一个网段中默认RID最大的是DR,第二大的是BDR,其他就是普通路由器
3.DR一旦被选举成功将不会被抢占,除非重启设备、ospf进程重启登情况才会发生变化
4.普通路由器通过224.0.0.6向DR、BDR通告自己的网络状态信息,DR会通过224.0.0.5向所有成员发送整合后的信息

 

末梢区域(STUB)
没有LSA4、5、7通告,即没有ASBR没有外部区域,但可以学习到
没有那些路由条目也还有办法通信,

 

完全末梢区域
除一条LSA3的默认路由通告外,没有LSA3、4、5、7通告,即不能学习到其他区域路由,一般设置在ASBR的区域

要求:满足以下条件的区域可以设置为末梢区域或完全末梢区域
1、只有一个默认路由作为其区域的出口
2、区域不能作为虚链路的穿越区域
3、Stub区域里无自治系统边界路由器ASBR
4、不是骨干区域Area 0

 

 

末梢区域和完全末梢区域的作用,其主要目的是减少区域内的LSA条目以及路由条目,减少对设备CPU和内存的占用
末梢区域和完全末梢区域中ABR会自动生成一条默认路由发布到末梢区域或完全末梢区域中。

 

NSSA区域是OSPF RFC(就是OSPF规则)的补遗
定义了特殊的LSA类型7
提供类似stub area和totally stubby area的优点:路由少
可以包含ASBR
NSSA发出的OSPF链路状态通告信息:LSA7(NSSA External LSA, NSSA外部LSA)

NSSA区域重分发路由类型
N1、N2经过NSSA区域ABR后转换为E1、E2
NSSA区域主要是给ASBR所在区域设置

NSSA区域和末梢区域的区别:

1、区域不同

OSPFSTUB区域是一个末梢区域,当一个OSPF区域处于整个自治系统边界时,而又不含其他路由协议,这时就可bai以配置OSPF Stub区域。

OSPF路由协议是目前因特网中应用最为广泛一种IGP,而NSSA则是在该协议发展过程中产生的一种新的属性。在NSSA区域内的所有路由器必须支持该属性,而自治系统中的其他路由器则不需要。

2、作用不同

当配置OSPF Stub区域后,Stub区域中的路由器会增加一条至ABR的默认路由条目,当在ABR上配置了完全末梢区域后,末梢区域的其他路由器的路由条目除了直连的路由条目外,只有一条到达ABR的路由条目默认路由,不会学习其他区域的路由条目,到其他区域的数据包通过ABR转发。

STUB区域虽然为合理的规划网络描绘了美好的前景,但她在实际的组网中又不具备可操作性,未免遗憾。但此时的OSPF协议已经基本成型,不可能再做大的修改。为了弥补缺陷,协议设计者提出了一种新的概念NSSA,并且作为OSPF协议的一种扩展属性单独在RFC 1587中描述。

 

3、工作原理不同

所有位于 stub area 的路由器必须保持 LSDB 信息同步,并且它们会在它的 Hello包中设置一个值为 0 的 E 位(E-bit),因此这些路由器是不会接收 E 位为 1 的 Hello包。

自治系统外的ASE路由(外部等价路由)不可以进入到NSSA区域中,但是NSSA区域内的路由器引入的ASE路由可以在NSSA中传播并发送到区域之外。

总之最大区别是:能否引入外部路由,NSSA可以,stub不能

 

宣告路由时,在area0和其他区域的路由器往area0宣告

理解路由重分发:
为了可以通信,需要在不同协议进程之间相互引入
一个单一IP路由协议是管理网络中IP路由的首选方案
华为vrp能执行多个路由协议,每一个路由协议和该路由协议所服务的网络属于同一个自治系统
华为vrp使用路由重分发特性以交换由不同协议创建的路由信息
(默认情况下不同协议是不能通信的)
路由重分发的考虑:度量值,管理距离
重分发到OSPF域中路由的路径类型
E1:算到边界路由的cost + 外部路由的cost
E2:只算外部路由的cost
需要明确区域间路由汇总配置配置在ABR上,而外部路由汇总配置在ASBR上。
修改ospf x开销:ospf cost xx,关键是修改哪个接口
在ospf中 loopback默认开销是0

 

OSPF是使用在AS(自治系统)中的

posted @ 2021-01-20 23:53  星魂静海  阅读(735)  评论(0)    收藏  举报