OSPF笔记(一)
作者:互联网
一、OSPF概述
- 无类别链路状态路由协议,属于IGP协议;
- 支持VLSM和CIDR;
- 基于拓扑工作,更新量大,为保证可以在中、大型网络工作,需要结构化的部署---区域划分、地址汇总
- 属于OSI的四层(传输层)协议。跨层封装到IP报头,协议号89
- 触发更新、周期更新(30min)、组播更新地址224.0.0.5(通用地址),224.0.0.6(DR/BDR专用地址)
二、OSPF的数据包
2.1 Hello
用于邻居的发现、建立、保活。hello time10s/30s,hold-time为hello-time的4倍
Point-To-Point:直接建立邻接关系
MA:先选举DR和BDR,DRother只和DR/BDR建立邻接关系,DRother之间只能达到Two-way这一阶段
2.2 DBD:隐式确认
数据库描述,相当于列出数据库的目录,包含LSA的报头(或摘要)
I为,或称为初始位(Initial bit):当发送的是一系列数据库描述数据包中的最初一个数据包时,该位设置为1。后续的数据库描述数据包将把该位设置为0,即I-bit=0。
M位,或称为后继位(More bit):当发送的数据包还不是一系列数据库描述数据包中的最后一个数据包时,将该位设置为1。最后的一个数据库描述数据包将把该位设置为0,即M-bit=0。
MS位,或称为主/从位(Master/Slave bit):
在数据库同步过程中,该位设置为1,用来指明始发数据库描述数据包的路由器是一台“主”路由器(也就是说,是主从关系协商过程的控制者)。“从”路由器将该位设置为0,即MS-bit=0
2.3 LSR
链路状态请求,查看邻居的DBD后,对本地未知信息进行查询
2.4 LSU
链路状态更新,应答对端的LSR,分享本地的LSA信息
2.5 LSACK
链路状态确认
显示确认:
隐式确认:基于序列号的确认
三、OSPF的状态机
- Down:失效状态。一旦本地发出OSPFhello包,进入下一个状态
- Init:初始化状态。接收到的hello包中,包含本地的Root ID,进入下一状态
- Two-Way:双向通信状态。邻居关系建立的标志
条件匹配:点到点直接进入下一个状态;MA进行DR/BDR选举,非DR/BDR间不得进入下一状态
- Exstart:预启动状态。使用类似hello的DBD包进行主从关系选举,Root ID数值大为主,优先进入下一状态
- Exchange:准交换状态。使用真正的DBD包来进行数据库目录共享,需要ACK保障
- Loading:信息加载状态。使用LSR/LSU/LSACK来获取未知的LSA信息
- Full:完全邻接状态。邻接关系建立的标志
LSA:链路状态通告,具体的拓扑或者路由信息,基于LSU来进行传递
LSDB:链路状态数据库,所有LSA的集合
四、OSPF的工作过程
1.启动配置完成后,本地默认组播发出hello包到所有邻居;若收到其他论据的hello包回复,邻居关系建立,生成邻居表
2.邻居关系建立后,进行条件匹配。匹配失败将维持邻居关系,仅hello继续周期保活;若条件匹配成功,使用类似hello的DBD包来获取数据路目录,之后使用LSR/LSU/LSACK来获取本地未知的LSA信息,生成完成的数据库表
3.之后本地基于LSDB,启用SPF算法,生成导向图,再基于最短路径优先选择,将最佳路径加载与路由表中;收敛完成。
4.收敛完成,hello包周期保活,每30min周期进行数据路同步(比对(DBD)、纠正(LSU/LSR/LSACK))
5.结构突变
1.新增网段:直连新增网段设备使用DBD告知所有邻居,之后收敛
2.断开网段:直连断开网段设备使用DBD告知所有邻居
3.无法沟通:保活时间到期后,断开邻居关系,删除通过该邻居学习到的所有LSA信息
五、OSPF的区域划分
5.1 区域划分的规则
1.星型拓扑(中心到站点)
2.ABR:所有区域互联时必须依赖一台同时工作在两个区域的路由器
单区域OSPF可以不为area0。
域间传递的是路由
5.2区域划分的好处
- 减少了路由表路由条目的数量(手工汇总及聚合)
- 限制拓扑变更传递的范围
- 减少LSA泛洪
- 层次化的网络设计
六、OSPF的配置
启动配置完成后,邻居间使用hello包建邻,生成邻居表;OSPFhello time10s或30s,dead time和wait time均为hello time的4倍
OSPF建邻的条件
6.1 邻居间hello包中有几个参数必须完全一致:hello和dead time、直连接口属于相同的区域、区域ID、认证、末梢区域标记、MTU、相同的网络类型
6.2 邻居关系建立后,进行条件的匹配。若匹配成功,使用DBD包进行主从关系选举,且同时使用DBD包发送数据库目录信息,之后使用LSR/LSU/LSACK来获取未知的LSA信息,完善本地的LSDB,生成数据路表;
关于DBD包的几个重点
1.DBD包关注接口的MTU值,要求邻居间MTU必须完全一致,否则无法建邻(卡在Exstart)
2.隐性确认:直接使用ack为明性确认;隐性确认为slave使用master的序列号来对master进行确认。
3.标记位
- I位,或称为初始位。当发送的是一系列DBD中的最初一个包时,该位置1。后续的DBD包把该位设置为0
- M位,或称为后继位。当发送的数据包还不是一系列DBD的最后一个数据包时,将该位置1;最后的一个DBD包把该位置0。
- MS位,或称为主/从位。在数据库同步过程中,将该位置1,用来指明始发DBD包的路由器是一台master。slave路由器将该位置0。
6.3LSDB同步(LSA洪泛:不做任何修改和编辑的共享给邻接路由器)。OSPF收敛过程完成后,OSPF协议将基于本地的数据库使用SPF算法,选出最佳路径加载到路由表中。
1.字母
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
O表示同一个区域的路由,由本地通过拓扑计算
O IA表示其他区域的路由,由ABR共享产生
O E1/2表示外部路由,是其他协议的路由,被重发布进入
O N1/2表示外部路由,重发布进入的路由,其他协议或OSPF进程产生,同时本地为NSSA区域。
2.管理距离110
3.度量值Cost=开销值=参考带宽/接口带宽
参考带宽默认为100M;默认优选整段路径cost值之和最小;当接口带宽大于参考带宽时,将可能导致选路不佳,可以修改参考带宽,但整个网络所有设备参考带宽必须完全一致。
OSPF从邻居称为邻接的条件
基于网络类型,P2P类型必然成为邻接;
因为OSPF协议需要在邻接间进行数据库的比对、同步;故不能使用类似DV协议的接口水平分割,导致在MA网络中将出现大量重复更新,使用DR/BDR选举规则来解决,非DR/BDR间不能形成邻接关系
DR/BDR选举规则
优先级最大(默认为1,0-255);点到点接口为0,0代表不参选
若优先级相同,使用Root ID比较,优选最大数值,选举时长30s
DR和BDR选举时的特点
- DR和BDR无法被抢占
- DRdown掉之后BDR会立即抢占成为新的DR,而新的BDR通过在所有DROther之间重新选举得出。
- 一台路由器可能是它所连接的另一个MA网络的DR,也可能不是它所连接的另一个MA网络的DR。也就是DR是路由器的接口特性,而不是整个路由器的特性。
- 在Ethernet环境建议拥有DR和BDR实现备份;而在FR环境中,只能是hub节点成为DR,任何Spoke节点都不能成为DR或BDR
- 如果一个MA网段没有DR和BDR,没有任何邻接关系存在,也没有LSA的传递。
- 一台运行OSPF的路由器,只要在一个接口开启了OSPF进程,则该接口会立即监听224.0.0.5的组播流量,而仅当一个节点成为DR或BDR时,该接口才会同时监听发往224.0.0.5和224.0.0.6的组播流量。在一个MA网段内,所有路由器发送给DR和BDR的报文的目的地址都是224.0.0.6,而DR将LSA整合之后会以224.0.0.5的地址发送给网段内所有其他路由器
干涉选举
1.DR优先级最大,BDR次大,其他不改
2.DR优先级最大,BDR次大;其他设备修改为0,放弃选举,不需要重启OSPF进程
标签:OSPF,DBD,笔记,BDR,DR,hello,数据包 来源: https://blog.csdn.net/weixin_43265596/article/details/88966752