当前位置: 首页 > news >正文

OSPF协议基础

http://【华为认证HCIA+HCIP+HCIE,100集全套课程!带你从零基础直奔高阶!保姆级教程通俗易懂,网工学习必看!(持续更新中)】https://www.bilibili.com/video/BV1HY4y1W7e7?p=22&vd_source=721e0a04318baae424f51a45c740f1bb

OSPF特点

路由信息传递与路由计算分离

基于SPF算法

以累计链路开销值作为选路参考值

网络类型

1、P2P类型(Point-to-Point)

当链路层协议是PPP、HDLC时,0SPF会认为网络类型是P2P

报文发送地址:以组播(224.0.0.5)发送所有0SPE报文。

不需要进行DR、BDR选举

Hel1o:10秒; Dead:40秒

当0SPF接口的网络类型为P2P的时候只能建立一个0SPF邻居。(广播型修改成P2P后也是一样)

2、P2MP类型(Point-to-Multipoint)

没有任何一种链路层协议被认为是P2MP类型,P2MP是认为手动配置的。

报文发送地址:以组播(224.0.0.5)发送He1lo报文。单播发DD、LSR、LSU、LSACK。

不需要进行DR、BDR选举

Hello:30秒; Dead:120秒

3、NBMA类型(Non-Broadcast Multi-Access)

当链路层协议是帧中继和ATM/FR时,0SPF会认为网络类型为NBMA网络

报文发送地址:单播发送所有HELLO、DD、LSR、LSU、LSACK。

需要进行DR、BDR选举

Hel1o:30秒; Dead:120秒

4、广播类型(Broadcast)

当链路层协议是以太网的时候,0SPF会认为网络类型为Broadcast

Hello:10秒; Dead:40秒

广播类型网络用到两个组播地址,224.0.0.5和224.0.0.6。

所有设备使用单播形式交互DD报文以及LSR报文。

所有设备固定使用组播(224.0.0.5)交互HELL0报文。

OSPF邻居建立的条件

1、版本一致

2、Router-ID不同

3、区域ID一致

4、认证类型和认证密码一致

5、两端接口IP要在相同网段

6、两端接口掩码要求相同

7、要求Hello报文发送时间间隔相同

8、Dead时间一致

9、Option选项中Nbit和Ebit需要一致

10、双方接口的MTU一致

Router-ID

全局Router-ID的选举原则:即设备使用第一个配置的接口IP地址当作全局Router-ID,不会因为接口的状态改变而发生变化。如果配置的第一个接口的Router-ID变更了,那么全局Router-id会改变。

作用:很多路由协议都是通过Router-ID来唯一标识设备的,如果没有认为指定的话,就会选择全局Router-ID当做协议Router-ID。

OSPF中的Router-ID:设备在OSPF中的名字,IP地址的格式,唯一的表示一个路由器

华为的Router-ID:

  1. 可以手工选则,不能重复
  2. 自动选择,选择全局Router-ID充当OSPF协议的Router-ID

OSPF的Router-ID不会因为全局Router-ID的变化而改变,OSPF的Router-ID只能在清理OSPF进程之后才会改变。不会因为全局Router-ID改变而发生协议震荡。

思科的Router-ID

  1. 可以手工选则,不能重复
  2. 自动选择,选择环回口大的作为Router-ID,然后再选择物理口

OSPF过程工作过程
  1. 邻居建立:产生邻居关系,直连建立邻居,被记录为邻居表
  2. 同步链路状态数据库:产生邻接关系,产并交换生LSDB(链路状态数据库)拥有全网的LSA(全网的信息)
  3. 计算最优路由:每台OSPF路由器计算出最优路由条目,得出最短路径树

OSPF报文类型

报文名称

报文功能

Hello报文        

发现和维护邻居关系,协商维持建立OSPF邻居

DD数据库描述报文

用于交互LSA的摘要信息,交互链路数状态数据库摘要

LSR链路状态请求报文

用于请求特定的LSA

LSU链路状态更新报文

用于发送LSA的详细信息,向邻居通告拓扑信息

LSACK链路状态应答报文

用于对接受到的LSU中的LSA信息进行确认

OSPF七种状态

down

代表OSPF没有发现任何OSPF邻居,每10s发送一次Hello报文

Init        

代表发现了OSPF邻居(收到了Hello报文)

2-Way        

收到了OSPF邻居的Hello报文,并且发现了对方的active-neighbor(邻居表)中有自身的RID

ExStart

用于发送空的DD报文,互相进行主从的选举。

Exchange

当主从关系确认之后,进入到Exchange状态发送带有LSA摘要信息的DD报文。

Loading

当收到了对方M置位为0的DD报文之后,进入loading状态,请求自身没有的LSA

Full

当自身请求列表中,所有待接收的LSA,对方都发送过来之后,将会进入到Full状态。

OSPF传输可靠性

OSPF协议,工作在网络层之上,而IP协议本身不负责数据传输的可靠性,所以针对OSPF来说,需要单独设计报文传输的可靠性机制。

可靠性:邻居建立的三次握手,重传机制,LSR,LSU,LSACK 的显示确认机制,DD报文的隐式确认。

OSPF邻居建立的过程

RA开启OSPF协议,10s发送一次Hello报文,当RB收到Hello报文时从Down状态变为Init状态。同样RA收到RB的hello报文从Down状态变为Init状态,然后RA将RB的Router-ID加入邻居列表中,当RB收到RA的Hello报文,RB已经进入Init状态同时RB知道了RA已经认为自己是对方的邻居了,就从Init状态进入2-way状态。

DRBDR

DR/BRD  -- 一个广播域一个DR、BDR

DR、BDR的机制减少了在同一广播域中邻接的数量,减少了广播网络中LSA泛洪,避免重复更新,节省带宽。

BDR:备份作用,保证网络的可靠性。

2-way状态之后选举DR和BDR --- 40s

选择DR和BDR:

  1. 根据优先级,越大越好,取值范围0-255,默认是1。0表示不参与选举

修改DR优先级:ospf dr-priority n

  1. 选router-id大的

选择出DR和BDR之后,遵循非抢占原则, 即有更高的优先级设备进来之后也不更改DR和BDR。

一个路由器可以成为多个链路的DR设备;一条链路上只能存在一个DR;只能一个BDR,可以不存在BDR;可以存在多个DROther,也可以没有DROther。

当原来的DR坏了,BDR接替DR的工作,在剩余路由器中选择出BDR。如果DR再次恢复,改链路中已经有了DR和BDR,该路由器只能成为DROther。

2-way状态选举完DR和BDR之后都会进入ExStart状态,互相发送DD报文。

LSA交换条件

  1. 邻居:双方能够交换,建立邻居表的条件:能通信(直连)、参数保持一致(route-id、认证(的密码···)。双方能够交换。建立邻居表的条件:能通信(直连)、参数保持一致(route-id、认证(的密码···)    成功标志: 2-way状态
  2. 邻接:跟进一步的状态,已经交换完了。跟进一步的状态,已经交换完了(不是所有设备能建立邻接关系,每个设备只和DR/BDR形成邻接关系)   成功标志:   Full状态

DD报文

作用:主要是为了实现按需同步

DD报文传输的可靠性机制如何确保:在Exstart互相发送空的DD报文,用于选举主从关系,从设备会跟随主设备的DD序列号,当主设备收到从设备的DD序列号之后,将会把Seq+1发送自己的DD给送设备,从设备收到Seq+1的DD就能判断,先前自身发送的DD主设备已经收到。

2-way状态之后的过程

设备进入ExStrat状态之后,进行主从设备的选举

① A设备发送一个DD报文:X是随机产生的序列号;I(Init)代表是第一个DD报文,这个报文是用来选举主从的,不携带任何LSA;M(More)置位为1表示后面还有DD报文;MS(Master)置位为1表示本设备要成为主设备

② B收到A的DD报文之后,就会进行主从选举(比较Router-ID),如果B的Router-ID大于A,就会发送一个DD报文,其中随机产生一个序列号,然后MS位同样置位为1。A收到B的DD报文之后,比较Router-ID,知道对方比自己大,将B认定为主设备,自己为从设备,同时从ExStart状态转为Exchange状态,随后发送带有LSA摘要信息的DD报文,同时这个DD报文的序列号是B(主设备)发来的序列号,MS位置位为0。

③ B收到A(从设备)发来的DD报文发现序列号和自己发送的一致,这时主设备B就能判断从设备A已经收到了B发送的DD报文,同时B的状态也会从ExStart状态转为Exchange状态。

④ 主从选举完成之后,主设备B先发送带有摘要信息的DD报文,同时将序列号加一,MS位置位为1。从设备A收到主设备B发来的DD报文,发现序列号为刚才自己发送的DD报文的序列号加一,此时从设备A就确认主设备B收到了刚才自己发送的DD报文。

⑤ 从设备A接受主设备B发送带有摘要信息的DD报文,当DD报文中的M位置位为0时,也就是代表后面没有DD报文了,此时从设备从Exchange状态进入Loading状态,发送一个确认号加一的DD报文,主设备B收到了DD报文就能确认从设备收到了刚才自己发送的M置位为0的DD报文。

⑥ 从设备A发送LSR报文去请求从设备没有的LSA

⑦ 主设备B收到从设备A发送来的LSR回复LSU报文,发送从设备A所需要的LSA的详细信息。从设备A接受完所有自己需要的LSA之后进入Full状态。

⑧ 从设备发送LSAck报文向主设备B进行对于接收到的LSU中的LSA信息进行确认

OSPF LSDN交互原则

<AR2>dis ospf lsdb //查看OSPF的链路状态数据库                                                        

互相交互自身没有的LSA,以及使用新的LSA替换掉旧的LSA

如何判断一个唯一的LSA?使用LSA的三要素

1、LSA的类型(Tpye)

2、LSA的链路状态ID(Link StateID)

3、LSA的通告者(Adv Router)

如何判断LSA的新旧?

1、比较LSA的序列号(Sequence)

2、当序列号相同时将会比较校验和,越大越优

3、比较LSA的老化时间(Age)

① 首先找age为3600s的LSA,用于删除一条LSA

② 如果两条LSA的age时间相差大于900s,将会选择数值小的LSA

③ 如果两条LSA的age时间相差小于900s,将会认为相同,保持原有不变

OSPF更新机制

触发更新:当链路状态发生改变之后OSPF将会触发更新,比如cost值改变了,网段、掩码变了,取消宣告等等。

周期更新:每个OSPF路由器自身产生的LSA,都会每隔30(1800s)分钟周期更新一次,避免3600s之后LSA删除,更新后将seq+1,校验和重新计算,age时间重新恢复到初始值。

OSPF的老化机制

OSPF路由器没产生一条LSA,都会存在有一个age时间为3600s,初始值为1,当age时间递增到3600s之后将会认为LSA老化,从自身LSDB中删除改LSA。

OSPFLSA的删除机制

当OSPF需要删除一条LSA的时候,将会把LSA的age时间变成3600s,当其他路由设备接收到这条LSA之后,将会把自身LSDB中对应的LSA删除掉。

OSPF的度量方式

某接口cost = 参考带宽/实际带宽

小数只取整数位,小于1的数都取值为

更改cost两种方式:

1、直接在接口下配置

2、修改参考带宽(所有路由器都要修改,确保选路的一致性)

在广播NBMA网络中,OSPF建立邻居关系要求两端网段一致,掩码一致。

在P2P网络中,不要求网段一致,不要求掩码一致。

在P2MP网络中,默认情况下要求网段一致,也要求掩码一致,但是可以配置不要求掩码一致。

相关文章:

  • 《分布式软总线:网络抖动下的数据传输“定海神针”》
  • 【四川省第三届青少年C++算法设计大赛 (小低组) 第 一试】
  • 【Java学习】全局异常处理器的使用流程
  • opencv二值化实验
  • 解决7穴连接器的信号完整性问题
  • Linux——管道
  • OpenCV---图像基础
  • 4.14-4.15学习总结 IO流:缓冲流+转换流+序列化流+打印流+压缩流+Commons—io工具包+Hutool工具包
  • ZUS6000在无线充电测试上的应用
  • Java二分查找——数据结构篇
  • linux 内核 static-key机制分析
  • 数据结构(三)---单向循环链表
  • 【Pandas】pandas DataFrame itertuples
  • Debian服务器挂载外部存储设备的完整指南
  • Android 项目配置文件解释
  • 【差分隐私相关概念】瑞丽差分隐私(RDP)命题2
  • 数字IC设计-VCS和Verdi的使用
  • RFID 赋能部队智能物联网仓储建设:打造信息化高效解决方案
  • 电磁兼容概述-标准梳理
  • 在IDEA里面建立maven项目(便于java web使用)
  • 当老年人加入“行为艺术基础班”
  • 中国人保不再设监事会,国寿集团未再设置监事长职务
  • 王毅:携手做世界和平与发展事业的中流砥柱
  • 金科股份:去年营收约275亿元,今年确保所有项目“零烂尾”
  • 朝鲜派兵库尔斯克是否有助于解决乌克兰危机?外交部回应
  • 上海第三家“胖永辉”在浦东开业,设立了外贸产品专区