OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯彻(Dijkstra)算法被用来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
ROUTER-ID 唯一标识一个路由器,产生:
手工配置 格式为IP地址格式,可以是存在的一个地址也可以是不存在的,建议配置为回环地址
自动选举 有回环地址则选择最大那个回环地址,没有选择接口地址,还是最大。
OSPF的建立邻居:hello包,俩种方式建立邻居关系。
OSPF的数据包类型
跨层封装到IP报头,协议号89;
存在5个类型的数据包:
1)Hello 组播周期发送,用于邻居、邻接关系的发现、建立、周期保活;
在hello包中存在本地已知邻居的RID,用于保活这些邻居; hello time 10s或者 30s
Dead time 为hello time 的4倍;
2)DBD:数据库描述包
3)LSR 链路状态请求
4)LSU 链路状态更新 --携带具体的LSA信息
OSPF状态机
Down 一旦接收到hello包,进入下一个状态机
Init 初始化 接收到的hello包中,若存在本地的RID,进入下一个状态
2way 双向通讯 邻居关系建立的标志
条件匹配:
Exstart 预启动: 使用不携带信息的DBD包进行主从关系选举,RID数值大为主,优先进入
下一个状态机;
Exchange准交换:使用DBD进行数据库目录的共享,需要ACK确认;
Loading加载:基于对端的数据库目录,对照本地,然后使用LSR来获取未知的LSA信息;
对端使用LSU来共享LSA,需要ACK确认;
Full转发:邻接关系建立的标志
OSPF的工作过程
启动配置完成后,邻居间组播收发hello包,建立邻居关系;生成邻居表:
之后进行条件的匹配,匹配失败的邻居将保持为邻居关系,仅hello包周期保活即可;
匹配成功的邻居间,将进行邻接关系的建立;过程中先使用DBD进行目录交互,在使用LSR/LSU/LSack来获取本地未知的LSA信息;最终完成邻接关系间的LSDB同步;生成数据
库表;再然后,本地基于LSDB,生成有向图—>树型结构—>最短选路 SPF算法
基于树形结构计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;
收敛完成,hello包周期保活;每30min邻居间再周期比对DBD包;
结构突变:
新增网段 –直连新增网段的设备,直接使用更新包告知本地的所有的邻接
断开网段 -直连断开网段的设备,直接使用更新包告知本地的所有的邻接
无法沟通 -dead time倒计时结束后,邻居间断开关系,删除信息;
名词:
LSA 链路状态通告,在不同环境下产生不同的拓扑或路由,一条信息为一个LSA
LSDB 链路状态数据库 整个网络LSA的集合
LSDB同步 OSPF的收敛行为,整个网络LSDB需要一致
LSA洪泛 OSPF的收敛行为,需要整个网络接收到同一条LSA