一、OSPF的基本概念
OSPF:开放式最短路径优先协议(目前使用版本二)
无类别链路状态路由协议,需要结构化部署——区域划分、合理的IP地址规划
hello time 10s 或30s , dead time 为 hello time 的4倍
(注意:若hello time 为10s,则dead time 倒计时不小于30s,因为每10s会重新发送hello包,刷新dead time)
基于组播更新——224.0.0.5(all ospf)和224.0.0.6(DR和BDR)
触发更新(hello,ack)周期更新(30min)——更新量太大,可靠性稍低
支持等开销负载均衡,默认4条,最大6条,IOS12.4以上16-32条
跨层封装到三层,协议号89
1.OSPF的数据包(5种)
Hello :发现建立并周期保护邻居关系
DBD :数据库描述包——进行主从关系的选举,最重要的作用是发送LSDB目录
LSR :链路状态请求——对收到邻接发来的LSDB目录中,对于本地未知的LSA进行请求
LSU :链路状态更新——对收到邻接发来的LSR,携带LSA给邻接
LSack :对DBD/LSR/LSU进行确认
2.OSPF的状态机
Down :一旦收发hello包,直接进入下一状态
Int :初始化——收到的hello包中含有本地的RID,进入下一状态
2way :邻居关系建立的标志
条件匹配 :双向通信——点到点直接进入下一状态;MA网络进行DR/BDR选举(30s)。DR,BDR进入下一状态,非DR,BDR保持邻居关系,hello包周期保活即可。
exstart :预启动——使用类似hello 的DBD包进行主从关系的选举,RID大为主,优先进入下一状态
exchange :准交换——使用真正的DBD包进行LSDB目录的交互
loading :加载——使用LSR/LSU/LSack获取未知信息
full :转发——邻接关系建立的标志
3.OSPF的工作过程
启动配置完成后,本地收发hello包进行邻居关系的建立,生成邻居表;
之后进行条件匹配,匹配失败,保留邻居关系,仅hello包周期30min保活即可,
匹配成功,讲进行LSA的共享,收集到所有的LSA后生成LSDB——数据库表;
再进行SPF(最短路径优先)选路,将到达所有未知网段的最短路径加载于路由表中;
收敛完成,hello包周期保活,每30min,邻接关系在周期进行DBD包的对比,若一致周期更新完成,若不一致将使用LSR/LSU/LSack来获取不同信息;
3.1解析三张表
1.邻居表
R2#show ip ospf neighbor 查看邻居表
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 0 FULL/ - 00:00:31 12.1.1.1 Serial1/0
3.3.3.3 0 FULL/ - 00:00:38 23.1.1.2 Serial1/1
邻居的RID 优先级 状态机 保活倒计时 邻居IP 本地邻居邻居的接口
ospf邻居间hello包中必须完全一致的参数,否则无法建立邻居关系
1.hello 和dead time
2.区域ID
3.认证字段
4.末梢区域标记
2.数据库表
R1#show ip ospf database 查看数据库表
LSA:链路状态通告—存在多种类别 不同类别是由不同的拓扑或网络环境产生,内容为拓扑或路由信息;使用LSU来携带传递LSA;
LSDB:链路状态数据库—本地收集到的所有LSA的集合
DBD:数据库描述 — exstart时不携带目录信息,仅进行RID大小 的比较来进行主从关系选举;Exchange状态用于携带本地LSDB的目录信息;
关于DBD的补充:
1、 DBD包中携带本地接口的MTU值,要求直连邻居间MTU值必须完成一致,否则将卡在exstart状态;
2、 隐性确认 —从设备使用主设备的序号来对接收的DBD包进行确认
3、 标记位—I位为1标识本地的第一个DBD包 M为0标识本地的最后一个DBD包 MS位为1代表主,为0代表从;
3.路由表
【1】字母: O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
O 本地区域内的路由,由本地通过本区域拓扑计算所得
O IA其他区域的路由,由ABR共享所得 –域间路由
O E1/2 域外路由,其他协议产生,通过ASBR重发布进入到OSPF协议
O N1/2域外路由,其他协议产生,通过ASBR重发布进入到OSPF协议;同时本地处于NSSA区域;
【2】管理距离: 110
【3】度量: cost值 = 开销值 度量计算带宽(默认100M)/接口参考带宽(默认为接口实际带宽)
优选cost值之和最小的路径;当接口的参考带宽大于计算用带宽,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
R1(config-router)#auto-cost reference-bandwidth 1000
注:全网设备必须修改为一致
3.2结构变化
1.新增网段——直连新增网段的设备,使用DBD包告知所有邻接,之后邻接们基于本地的数据库判断是否需要学习,若需要使用LSR请求,之后收到LSU携带该LSA,再LSack确认;
2.断开网段——直连断开网段的设备,使用DBD告知,之后邻接间使用LSR/LSU/LSack来获知;
3.无法沟通——dead time到时时,断开邻居关系,删除从该邻接收到的所有LSA信息;能否重建邻居关系关注hello包,能否重建邻接关系需要条件匹配;
4.能否从邻居关系建立为邻接的条件(关注点为网络类型)
点到点 – 邻居直接成为邻接关系,否则无法收敛拓扑和路由信息
MA—距离矢量(DV)存在接口水平分割,可以在MA网络中避免重复更新;
但由于ospf协议需要邻接间DBD内容(BDB比对有相同的拓扑和路由)的比对,故不能存在接口水平分割(只存在区域水平分割);所有只有通过进行DR/BDR选举,来避免在MA网络中的重复更新;
DR/BDR与非DR/BDR间建立为邻接关系,非DR/BDR间为邻居关系,邻居关系间不进行LSA的更新,仅存在hello包;
选举规则:先比较优先级,若一致,再比较RID
1、 优先级 默认为1,大优 0标识不参选 0-255
2、 RID 数值大优
r1(config)#int e0/0 修改参选接口优先级
r1(config-if)#ip ospf priority 3
注:DR/BDR选举为非抢占,因此若需要重新选举,必须重启所有设备的OSPF进程;
r4#clear ip ospf process
Reset ALL OSPF processes? [no]: yes
若不愿重启所有设备进程,可以将DR优先级改为最大,BDR次大,其他设备修改为0,退出选举,无需重启ospf进程;
切记:不能将一个网段内所有参选接口优先级修改为0,导致没有邻接关系,无法收敛;故至少必须存在一个DR;