OSPF协议总结
OSPF:开放式最短路径优先协议
一、 OSPF协议特点
1.无类别链路状态路由协议,是一种地图式协议,现使用OSPFV2 (有v1、v2、v3)
2.跨层封装到3层,协议号为89
3.OSPF更新地址:使用组播或单播更新,组播地址为224.0.0.5、224.0.0.6(DR/BDR专用)
4.OSPF更新方式:使用周期更新加触发更新,周期时间为30分钟(LSA状态刷新)---存在ACK和hello机制,但依然每30min周期一次,作用在于核查;
5.仅支持等开销负载均衡
6.需要结构化的部署---区域划分、地址规划
7.OSPF支持路由汇总(仅仅在某些特殊的路由器支持汇总)---链路状态协议,不会自动汇总
8.OSPF支持区域的划分---划分区域的优势:1.减少LSA的传输范围 2.减少LSA的数量
9.OSPF非常消耗路由器资源,一个cisco设备上最大支持31个OSPF路由进程
10.OSPF使用 cost(相当于带宽)来计算metric;管理距离为110
二、OSPF的数据包:
Hello:用于邻居的发现、建立、保活
DBD:数据库描述包---主要用于携带数据库目录
LSR :链路状态请求包---获取未知LSA
LSU :链路状态更新包 ---携带各种LSA,用于应答LSR
LSACK:链路状态确认包--- 可靠性使用
三、OSPF的状态机---邻居间关系的各个阶段
Down:关闭状态。 一旦本地发出hello包便进行下一状态
Init :初始化状态。接收到的Hello包中若存在本地的Router-ID,那么进入下一状态
Two-way:双向通信状态。邻居关系建立的标志。之后进行条件匹配:
1、点到点网络直接进入下一状态 2、MA网络将进行DR/BDR选举(40S),非DR/BDR间不能进入下一状态
Exstart: 预启动状态。使用类似Hello包的DBD包来进行主从关系选举。Router-ID数值大为主;主优先进入下一状态
Exchange: 准交换状态。使用真实的DBD包来共享数据库目录,需要ACK确认---该状态已经开始发送LSR,但是没有LSU的发送
Loading:加载状态。使用LSR/LSU/LSack来获取未知的LSA信息
Full:转发状态。邻接关系建立的标志
四、OSPF的工作过程:
启动协议后,本地向所有邻居使用224.0.0.5组播发出hello包,在收集到其他邻居的hello包后,若邻居的包中存在本地Router-ID,那么邻居关系建立,生成邻居表;之后进行条件匹配,匹配失败将停留于邻居关系,仅hello包周期保活即可;匹配成功可以建立邻接关系;
邻接关系间先使用DBD包来共享拓扑目录,之后使用LSR/LSU/LSack来获取未知的LSA信息,生成LSDB---数据库表;
数据库建立完成后,本地基于SPF最短路径选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;
收敛完成后,hello包周期保活;每30min周期使用DBD包进行比对;若比对结果一致,继续保活即可;若不一致将使用LSR/LSU/LSack来获取未知的信息。
五、OSPF的配置:
1. 启动时需要配置进程号,进程号仅具有本地意义;
R1(config)#router ospf 1
2. 配置Router-ID(建议)
R1(config-router)#router-id 1.1.1.1
3.宣告
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
R1(config-router)#network 12.1.1.0 0.0.0.255 area 0
启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表:
4.查看邻居表
R2#show ip ospf neighbor
当邻居关系建立后,邻居间进行条件匹配;匹配失败将停留于邻居关系,仅hello包周期保活;若条件匹配成功,将建立邻接关系,邻接关系的重要标志---1、使用DBD包 2、共享了LSA
当邻居间收发完DBD包后,会使用LSR/LSU/LSack来获取未知的LSA信息,生成LSDB--数据库表;
5. 查看数据库表
R2#show ip ospf database
再之后,本地基于数据库表,启用最短路径选路规则,计算本地达到所有未知网段的最短路径,然后将其加载路由表中:
6.查看路由表
R2#show ip route
路由表中部分简写字母表示:
O表示本地区域内的路由,本地通过拓扑计算所得
O IA 表示域间路由---其他区域的路由,通过ABR导入
O E1/2 表示其他路由协议计算后,通过ASBR重发布进入
O N1/2 表示其他路由协议计算后,通过ASBR重发布进入,同时本地处于NSSA区域;
六、邻接关系建立的条件
建立邻接或邻居关系与网络类型相关:
1.点到点网络:因为一个网段只能存在两个节点,故邻居关系必然建立为邻接关系
2.MA网络:由于距离矢量协议存在水平分割机制,故在MA网络不会出现重复更新;
但OSPF协议不适用于水平分割,就只能进行DR/BDR选举,所有的非DR/BDR间建立邻居关系,来避免大量的重复更新;
DR/BDR选举规则:
1. 比较参选接口优先级,优先级越大越优,默认参选接口为1,不参选接口为0,为0表示放弃选举(点到点网络接口为0),优先级取值范围 :0-255
2. 若接口优先级相同,比较参选接口所在设备的Router-ID,数值越大越优
干涉DR/BDR选举的原因:
1、DR位置错误可能导致网络无法沟通(NBMA)
2、选择性能最佳的设备来担任DR
干涉DR/BDR选举的方法:
1. 修改接口优先级
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip ospf priority 3
2.重启所有设备的OSPF进程,因为选举是非抢占的,以保障网络的稳定性;
R1#clear ip ospf process
Reset ALL OSPF processes? [no]: yes 重启进程
七 、OSPF接口网络类型----OSPF协议在各种网络类型下其接口的工作方法
查看OSPF网络接口类型:
R1#show ip ospf interface loopback 0
通过在不同接口上查看相关信息,整理得下表:
网络类型(接口) | OSPF工作方式(OSPF接口网络类型) | 特点 |
Loopback | LOOPBACK | 没有hello发出;32位主机路由发出 |
点到点(串行HDLC/PPP) | POINT_TO_POINT | hello time 10s,不选DR/BDR |
BMA(以太网) | BROADCAST | hello time 10s,选DR/BDR |
NBMA(MGRE) | POINT_TO_POINT | hello time 10s,不选DR/BDR |
注:默认情况下OSPF协议在MGRE接口上依然使用POINT_TO_POINT工作方式;这种工作方式除不选举DR/BDR外,还要求邻居只能是一个,故在中心站点将出现邻居关系翻滚问题;
解决方案:
1. 修改OSPF在tunnel接口上的工作方式为BROADCAST
R1(config)#interface tunnel 0
R1(config-if)#ip ospf network broadcast
注:
1)若仅一台设备修改接口工作方式,那么由于方式中一种进行DR/BDR选举,另一种不选,故不能正常建立邻接关系;必须所有接口工作方式一致;
2)即便所有接口均工作在 broadcast 模式,但NBMA若构建的是中心到站点结构;当中分子站点由于不知道其他分支的存在,将出现DR位置问题;只能将DR放置于中心站点,不要BDR来解决;
2. 修改OSPF在tunnel接口上的工作方式为点到多点
R1(config)#interface tunnel 0
R1(config-if)#ip ospf network point-to-multipoint
点到多点工作方式最适合在NBMA构建为中心到站点(星型结构),或部分网状结构拓扑;
帮助路由器正常学习到所有的节点路由,不进行DR/BDR选举;并且hello time 为30s;
八、 补充
名词注解:
LSA:链路状态通告---在不同条件下产生不同类别的拓扑或路由信息,被LSU携带传输;
LSDB:链路状态数据库---网络中所有LSA的集合;
OSPF收敛:LSA洪泛 LSDB同步
结构突变及应对措施:
1. 新增 ---直连新增网段设备使用DBD告知邻居
2. 断开 ---直连断开网段设备使用DBD告知邻居
3. 断电,无响应---dead time到时删除邻居信息;
OSPF的区域划分规则:
1. 默认为星型拓扑
2. 必须存在ASBR---区域边界路由器
邻居间在hello包中存在4个必须完全一致的参数,否则无法建立邻居关系
1. Hello time和dead time(hello time 10s 或 30s;dead time 为hello time 的4倍)
2. 区域ID
3. 认证参数
4. 末梢区域标记
关于DBD包的三个知识点:
1. MTU
DBD包中携带各自接口的MTU值,邻居间必须完全一致,否则将卡在exstart或者exchange状态;
2. 隐性确认
在exstart状态因为发送的是类hello 的DBD,故仅进行的隐性确认;
在exchange状态发送的是真实的DBD,故进行了正常的确认,也进行隐性确认
3. 标记位-DBD包中的标记位
I ---为1表示该包为本地发出的第一个DBD
A---为0表示该包为本地的最后一个DBD包
MS---为1代表主,为0代表从;
COST
Cost值=开销值=参考带宽/接口带宽 。默认参考带宽为100M;
OSPF选路=整段路径cost值之和最小为最佳
当接口带宽大于参考带宽时,度量为1;可能导致选路不佳;
修改参考带宽:
R1(config)#router ospf 1
R1(config-router)#auto-cost reference-bandwidth ?
<1-4294967> The reference bandwidth in terms of Mbits per second
切记所有设备的参考带宽需要一致。