OSPF:开放式最短路径优先协议
一,OSPF 的数据包类型1.HELLO 用于邻居关系的发现,关系建立和周期保活: 2.DBD 数据库描述, 用于携带本地数据库的目录 3.LSR 链路状态请求, 查看完对端的DBD后,基于本地未知的LSA信息查询 4.LSU 链路状态更新, 用于携带各种的LSA信息 5.LSack 链路状态确认, 用于确认接收到对端的信息二,OSPF的状态机
–OSPF路由间的邻居关系所在的不同阶段
Down: 一旦本地发出 hello包进入下一个状态机 Init【初始化】:一旦接收的hello中,存在本端的RID,视为双方认识,建立邻居关系 2way【双向通讯】:邻居关系建立的标志 条件匹配:点到点网络类型直接进入下一个状态机: 在MA网络中,进行DR/BDR选举;所有非DR/BDR设备不能进入下一个状态机 Exstart【预启动】:使用不携带数据库目录信息的DBD包进行主从关系选举,RID数值大为主,优先进入下一个状态机 Exchange【准交换】:使用携带具体数据库目录信息的DBD包进行目录交换,需要ACK确认 Loading【加载】:在查看完对端邻居的DBD后,使用LSR查询本地未知的LSA信息;对端使用LSU来进行回复, 本地需要使用ACK来确认接收到的LSU包; FULL【转发】:邻接关系建立的标志三,OSPF的工作过程
启动配置完成后,本地组播224.0.0.5发送hello包;hello包将携带本地的RID值,及本地已知所有邻居的RID值; 若接收来来自对端的hello包中,存在本端的RID,那么视为双方认识,邻居关系建立;生成邻居表; 邻居关系建立后,进行**条件匹配**,匹配失败将停留于邻居关系,仅hello包周期保活即可; 若条件匹配成功,可以建立邻接(毗邻)关系; 先使用不携带数据库信息的DBD包进行主从关系选举,RID数值大为主;优先共享数据库 目录;之后本地在基于对端的DBD来查找到本地未知的LSA信息;之后使用LSR/LSU/LSACK 来获取未知LSA信息;最终生成数据库表(LSDB—链路状态数据库); 之后本地启用SFP算法,基于本地的LSDB生成有向图,再计算出最短路径树,再基于树形结构, 算出本地为起到到达所有未知网段的最短路径,加载于本地的路由表; 收敛完成后,hello包周期保活;每30MIN邻接关系再进行DBD的比对,若一致继续保活即可;若不一致将重新收敛; **条件匹配:**【在MA网络中,若所有设备均为邻接关系,将出现大量重复更新, 所以邻居表建立后进行条件匹配(进行DR /BDR选举)减少邻接数目,减小链路消耗, 匹配失败,停留在邻居关系,仅通过hello进行周期保活。】
2.广播型网络,
比如以太网,Token Ring和FDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5;而除了DR/BDR以外的OSPF包的目标地址为224.0.0.6
在广播型网络中,所有路由器都以224.0.0.5的地址发送hello包,用来维持邻居关系,
非DR/BDR路由都以224.0.0.6的地址发送LSA更新,而只有DR/BDR路由监听这个地址,
反过来,DR路由使用224.0.0.5来发送更新到非DR路由
AllDRouters(224.0.0.6)
AllSPFRouters (224.0.0.5)
3.收敛完成后,hello包周期保活;每30MIN邻接关系再进行DBD的比对,若一致继续保活即可;若不一致将重新收敛;
结构突变:
1、 新增了一个网段 直连新增网段的设备,直接使用更新包告知邻接关系接口;需要ack
2、 断开一个网段 直连断开网段的设备,直接使用更新包告知邻接关系接口;需要ack
3、 无法沟通 hello time10s;dead time 为hellotime的4倍;超过保活时间,删除邻居信息;



