OSPF(最短开放路径优先)是一种链路状态路由协议,“开放”意味着非私有的,“链路”指路由器的接口,‘状态’指描述接口以及其与邻居路由器之间的关系。管理距离值为110,协议号89;组播触发更新:224.0.0.5/6;
数据包 | |
hello | 邻居和邻接的发现,建立,保活 // hello&dead间隔+area id +认证密钥+stub标识必须匹配 |
DBD | 数据库描述:携带数据库目录 |
LSR | 链路状态请求:查询目录中本地未知的LSA信息 |
LSU | 链路状态更新:应答查询包,携带各种LSA |
LSACK | 链路状态确认:确认DBD和LSU |
邻居状态机制
Down | hello包未发出 |
Init | hello包发出但未收到 |
two-way | hello包发出并收到(只有MA网络有),用于选举DR/BDR |
exstart | DBD发出,并收到,用于选举主从关系,router-id大的设备为主设备主设备先发携带拓扑缩略信息的DBD,收到对方的LSACK结束 |
exchange | DBD完整结构,有主先发出,从接受后发出。DBD中携带的是拓扑的目录(缩略信息),用来查看该路由器的哪些信息是自己需要的,哪些是不需要的。收到对方的LSACK结束 |
Load | 发送LSR请求自己想要的完整拓扑信息,对方用LSU回应,LSU会携带该路由器的完整拓扑信息,以自己发送LSACK确认对方的LSU结束 |
Full | 邻接关系的建立 |
OSPF的三张表
OSPF的三张表是邻居表,链路状态数据库(LSDB)和路由表
邻居表:OSPF用邻居机制来发现和维持路由的存在
拓扑表:OSPF用LSA来描述网络拓扑信息,然后OSPF路由器用拓扑数据库来储存网络中的LSA。
路由表:对链路状态数据库进行SPF计算,而得出的OSPF路由表
建立邻居关系的条件
1,hello时间一致
2,MTU值一致
3,认证
4,相同的area-id
5,特殊标识(nass stub)
6,router-id不能相同
7,MA网络掩码不一致
8,MAX-LSA数量的限制会引发lsa加载失败影响建邻
9,虚链路的建邻要保证两个ABR的出接口的ospf包能通
10,shame-link 建邻要保证源和目的的单播能通
DR/BDR选举(不能抢占)
1,接口优先级(0-255,默认1,0表示没有选举权,大优)
2,router-id (唯一标识一个路由器,先回环地址,没有则接口地址,多个地址选最大)
DR/BDR通信过程
只能让DR/BDR收集MA网络信息,使用了两个组播地址
DR/BDR发送使用224.0.0.5,监听使用224.0.0.6
DRother 发送使用224.0.0.6,监听使用224.0.0.5
OSPF工作过程
启动ospf配置后,本地默认组播发出hello包到所有邻居;若收到其他邻居的hello包回复,标志着邻居关系的建立,生成邻居表;邻居关系建立后,进行条件匹配,匹配失败将维持邻居关系,仅hello包周期保活;若条件匹配成功,使用DBD包来获取数据库目录,之后使用LSU/LSR/LSACK来获取数据库信息。生成完整的数据库表。之后本地基于LSDB,启用SPF算法,生成导向图。基于最短路径优先选择,把最佳路径加载于路由表中;收敛完成,hello包周期保活,每30min周期进行数据库同步。
区域划分规则
1,星型拓扑(中心,分支)
2,ABR—— 区域边界路由器–两个区域之间进行互连时,会有一个路由器在中间(若两个需要建邻的路由器之间的区域id不同,则两个路由器不会建立邻居关系)
区域特点
1,减少路由条目,利于域间汇总
2,本地拓扑变化只会影响在区域内,还是利用域间汇总,路由汇总不变的话就不会影响其他区域路由
3,LSA的洪泛只会在区域内
4,区域划分时按照路由器的接口