OSPF 开放式最短路径优先协议
1.距离矢量协议 仅通告路由表 对拓扑结构没有认识 仅知目标方向和距离
2.链路状态协议 通告链路状态 建立邻居状态 生成全网拓扑图 通过算法计算最优路径
区域划分规则:
1.星型结构 骨干区域为0;大于0为非骨干区域,所有非骨干区域必须接到骨干区域上
2.ABR-----域间路由器 两个区域互联时,必须存在ABE同时工作在两个区域,部分在骨干,部分在非骨干
Router ID(路由器标识符)用于标识在OSPF中的路由器 可自动分配或手配 一般手动分配为ip地址
使用COST值为度量值,COST=开销值=参考带宽/借口贷款,默认参考带宽为100M,导致cost值小于一,无法合理分配流量,一般人为修改为1000M
OSPF的数据包类别
- hello包 用于邻居间的发现,关系建立和周期保活
- DD包 数据库描述包 携带本地数据库目录 减少不必要的资源浪费 用于选举
- LSR包 链路状态请求包 再查看完对面邻居的DD包后 基于本地LSA信息查询。
- LSU包 链路状态更新包 用于携带各种LSA信息
- LSACK包 链路状态确认包 用于确认接收到对端的信息
OSPF的状态机
Down状态 表示未被激活的状态,一旦本地发出hello包进入下一个状态机。
Init状态 表示初始化状态 加入到邻居表中
Two-way状态 双向通讯 表示建立了邻居关系 双方都在对方邻居表中
Exstart 状态 预启动状态 使用不携带数据库目录的DD包进行主从选举,RID数值大为主,优先进入下一个状态机 非DR或 BDR无法进入下一状态机
Exchange 状态 准交换,携带具体数据库目录信息的DD包进行交换,需要ACK确认
Loading 状态:加载 在查看完对端邻居的DD后,使用LSR 链路状态请求包 来查询本地位置的LSA信息,对端使用LSU 链路状态更新包 进行回复,本地还需要使用ACK来确认所接受到的LSU包
Full状态: 转发 邻接关系的建立
OSPF的工作过程
启动配置完成后,本地组播224.0.0.5 发送hello包
Hellow包将携带本地的RID值,及本地已知的所有的RID值
若接受到来自对端的hello包中,存在本段的RID,那么视为双方认识,邻居关系建立,生成邻居表。
邻居关系建立后,条件匹配,匹配失败将停留于邻居关系,仅发送Hello包保活即可。10s一发送 40s未收到责失活
若条件匹配成功,则表明可以建立邻接关系
先使用不携带本地数据库目录的DD包进行主从选举,RID值大者为主,优先共享自己的数据库目录;最后本地在基于对端的DD包来查找本地的LSA信息
之后使用LSR/LSU/LSack 来获取彼端的LSA信息。
最终生成数据库表(LSDB---链路状态数据库)
之后启用本地的SPF算法,基于本地的LSDB生成有向图,在计算出最短路径树,在基于树形结构,算出本地通往所有位置的最短路径,加载于本地的路由表中,收敛完成后,hello包周期保活。
每30min分钟邻接关系间,在进行DD包的对比,若一致,则继续保活,若不一致,将重新收敛
突变结构
1.新增 使用链路状态更新包告知 需要ADC确认
2.断开 使用链路状态更新包告知 需要ACK确认
3.失联 每10s发送一次hello包 40s未更新则删除邻居关系