OSPF 收敛速度快,选择路径佳,占用资源少
OSPF的版本
OSPFV1,OSPFV2 ————IPV4
OSPFV3 ————IPV6
OSPFV2适用于中大型网络(OSPFV2为适用中大型的网络,需进行结构化部署即划分区域)
区域划分的目的:区域内部传拓扑信息,区域之间传路由信息。
OSPF的数据包是跨层封装于3层报头后方 ,协议号89
若一个网络只包含单一的OSPF区域,则为单区域OSPF网络;若为一个网络包含多个OSPF区域则为多区域OSPF网络
区域划分的要求:区域之间必须有ABR;(区域边界路由器,同属于多个区域,并且一个接口对应一个区域,至少有一个对应骨干区域)区域划分须按星型拓扑结构来划分,中心为骨干区域
为方便管理,给不同区域增加一个编号即区域ID,由32位二进制构成可用点分十进制或直接十进制表示
骨干区域的ID为0,区域之间可有多个ABR,一个ABR可属于多个区域
OSPF数据包类型
hello包 周期发现,建立与保活邻居关系 发送周期为10s OSPF中判定邻居失效的时间为4倍的hello时间(死亡时间)
RID 区分与标定OSPF中不同路由的设备(全网唯一,格式统一(按IP地址格式32位二进制))
RID的获取方法:1.手工配置2.自动获取
自动获取 首先,先取自己环回接口中配置的最大的IP地址作为RID,若无环回接口,则将在自己物理接口配置的IP地址中选择最大的作为RID
hello包中携带RID
DBD包 数据库描述包(携带路径信息摘要) (菜单)
LSR包 链路状态请求报文 (基于DBD包请求未知LSA信息) (点菜)
LSU包 链路状态更新报文 (真正携带LSA信息的数据包) (上菜)
LSACK包 链路状态确认报文 确认包
OSPF在收敛完成之后,存在每30min一次的周期更新
OSPF状态机
down状态 启动OSPF,之后发hello包,进入下个状态
init状态(初始化状态) 收到hello包中包含自己本地的RID,进入下个状态
two-way状态(双向通信) 标志着邻居关系的建立
条件匹配成功,则进入下一个状态,若匹配失败,则停留在邻居关系,仅使用hello包来保活
exstart状态(预启动) 使用未携带数据的DBD包进行主从关系的选举,RID大的为主,可以优先进入下一个状态
exchange状态(准交换) 使用携带数据的DBD包进行目录共享
loading状态(加载) 基于对端的DBD包中的信息,使用LSR/LSACK/LSU获取LSA信息
full状态 标志着邻接关系的建立
OSPF的工作过程
启动配置完成后,OSPF会向本地所有运行协议的接口以组播 224.0.0.5的形式发送hello包;Hello包中携带自己本地的RID以及本地已 知邻居的RID。之后,将收集到的邻居关系记录在一张表中 --- 邻居表。 邻居表建立完成后,进行条件匹配;失败,则停留在邻居关系,仅 使用Hello包进行保活。 匹配成功,则将开始建立邻接关系。首先先使用未携带数据的DBD包 进行主从关系选举;之后,使用携带数据的DBD包继续LSA数据库目录共 享。之后,本地使用LSR/LSU/LSACK数据包来获取未知的LSA信息。完成本地数据库的建立 --- LSDB(链路状态数据库) ---- 生成数据库表。 最后,基于本地的链路状态数据库,生成有向图及最短路径树。之后 计算本地到达未知网段的路由信息,并添加到路由表。 收敛完成后,依然需要每隔10S发送Hello包进行周期保活, 每30min进行一次周期更新。
发送包的类型
Hello包 用于发现和维持邻居关系
数据库描述包:向邻居发送摘要信息以同步链路状态数据库,选举DR和BDR
链路状态请求包:路由器收到包含新信息的DBD后发送的,用于请求更详细的信息。
链路状态更新包:收到LSR后发送链路通告(LSA)一个LSU数据包可能包含几个LSA。
链路状态确认包:确认已经收到LSA