一、OSPF的特点
1、OSPF是一种无类别链路状态路由协议,跨层封装到三层,协议号89;
2、组播地址:224.0.0.5(BDR组播地址) 和224.0.0.6(DR的组播地址);
3、基于拓扑工作,更新量大——需要结构化部署——区域划分、地址划分;
4、收敛速度极快,但大型网络配置很复杂。
5、OSPF度量:从源到目的所有出接口的度量值,和接口带宽反比(10^8/带宽)
二、OSPF的5种数据包
1、Hello:发现、建立、保活邻居关系,hello time是10s;
2、DBD:数据库描述包,检查路由器的数据库之间是否同步;
3、LSR:链路状态请求包,向其他角色请求发送特定的LSA;
4、LSU:链路状态更新包,对LSA洪泛;负责把LSR请求的LSA信息封装到LSU中;
5、LSACK:链路状态确认,路由器必须对每个收到的LSA进行LSACK确认,但可以用一个LSACK确认多个LSA。
三、OSPF的状态机
OSPF在建立时,存在以下状态:
1、Down:本地一旦发出hello包就会进入下一状态;
2、Init 初始化:本地接收到的hello包中存在本地的RID进入下一状态;
3、Two-way 双向通信:邻居关系建立的标志;
条件匹配:点到点网络直接进入下一状态;MA网络将进行DR/BDR的选举(40s),非DR/BDR不得进入下一状态;
4、Exstart 预启动:使用类似hello的DBD进行主从关系选举,RID大为主,主优先进入下一状态;
5、Exchange 准交换:使用真实的DBD包进行数据库目录共享,需要ack;
6、Loading 加载:使用LSR/LSU/LSack获取未知的LSA信息;
7、Full 转发:邻接关系建立的标志。
四、OSPF的工作原理
ospf配置完成后,本地使用hello包建立邻居关系,生成邻居表;然后进行条件匹配,匹配失败者保持邻居关系,仅hello周期保活;
条件匹配成功的,将使用DBD/LSR/LSU/LSACK获取未知的LSA信息,当收集完网络中所有的LSA后,生成LSDB链路状态数据库表;
之后使用SPF算法,计算本地到达未知网段的最佳路由(cost值之和最小的路径),将其加载到路由表中。
其实,在生成LSDB后,会启动2次SPF算法:
第一次启用SPF算法,生成以自己为根的最优路径树;
第二次启用SPF算法,计算到达未知网段的最佳路径,加载到路由表中。
五、OSPF的三张表
1、 邻居表:列出每台路由器全部已经建立邻接关系的邻居路由器
2、 链路状态数据库(拓扑表):列出网络中其他路由器的信息,由此显示了全网的网络拓扑
3、 路由表:列出通过SPF算法计算出到达每个相连网络的最佳路径
六、OSPF的接口网络类型
1、 点到点: DA 224. 0. 0. 5(即使设置nei ghbor也组播更新),一对路由器形成邻接关系。无DR,每个子接口属于不同IP子网。
2、 点到多点: DA: 224. 0.0. 5 (即使设置neighbor也组播更新),无DR,同一个IP子网。Ptp和ptmp无法形成邻居(在PTMP中hello-interval 30 dead -interval 120)
3、 点到多点非广播: DA: 单播,无DR, 同一IP子网。
4、 NBMA: DA:单播,选DR (DR和BDR必须与其他所有路由器直接相连),同- -IP子网。全互联或部分互联。
5、 广播:选举DR,所有路由器发信息到224.0.0.6 (DR监听这地址),然后DR发送信息到224.0.0.5,DR与所有路由器建立邻接关系,所有路由器之间到2way状态(即使设置neighbor也组播更新)。同一IP子网,全互联或部分互联。
6、 特点总结:
点家族都不用选举DR和BDR
多路访问都需要选举DR和BDR
非广播都要手动指定邻居,非广播都是单播更新
neighbor命令后指定的cost只有在非广播下才有效
七、OSPF的度量值
1、 COST(1-65535) :从发送端到目的地出方向的代价之和。Ip ospf cost
2、 思科计算度量方法为: 10^8/带宽(不能为小于1的数,小于都为1)例如: 10^8/1544Kbit=64修改参考带宽:如果接口带宽大于10的8次方,那么都为1。
3、 默认参考带宽为100M,也就是10的8次方。
4、在出接口与下一跳路由的入接口修改参考带宽。
注意:参考带宽要在所有0SPF路由器修改。否则带宽计算不一致
来源:oschina
链接:https://my.oschina.net/u/4298883/blog/4698062