OSPF协议

一、数据包种类

Hello:用于发现、建立、周期保活邻居关系。存在Router-id-- RID,全网唯一的编号,使用ip地址。hello time默认10s或30s。
DBD:数据库描述包。
LSR:链路状态请求。
LSU:链路状态更新。
LSACK:链路状态确认。

二、状态机

Down:一旦本地发出hello包进入下一个状态。
Init:初始化。收到的hello中若存在本地的RID进入下一个状 态。
2way:双向通讯。邻居关系建立的标志。
条件匹配:点到点网络将直接进入下一个状态;MA网络类型将进行DR/BDR选举,非DR/BDR间将无法进入下一个状态。
Exstart:预启动。使用类似hello的DBD进行主从关系的选举,RID大为主优先进入下一个状态。
Exchange:准交换。使用真正的DBD进行数据库目录的共享,需要使用ACK确认。
Loading:加载。使用LSR/LSU/LSACK来获取未知的LSA信息。
Full:转发。邻接关系建立的标志。

LSA:链路状态通告。在不同的网络条件下将产生不同类别的LSA信息来代表拓扑或者路由条目。
LSDB:链路状态数据库。装载和存储所有各种类别的LSA。

三、工作过程

OSPF协议启动后,A向本地所有启动了OSPF协议的直连接口组播224.0.0.5发送hello包;本地hello包中携带本地的全网唯一的router-id;
之后对端B运行OSPF协议的设备将回复hello包,该hello包中若携带了A的router-id,那么A/B将建立为邻居关系,生成邻居表
邻居关系建立后,邻居间进行条件匹配,匹配失败就停留在邻居关系,仅hello包周期保活,条件匹配成功可以开始建立邻接关系:
邻居间共享DBD包,将本地和邻接的DBD包进行对比,查找到本地没有的LSA信息目录,之后使用LSR来询问,对端使用LSU应答具体的LSA信息,之后本地再使用ACK确认,可靠;该过程完成后,生成数据库表
再之后本地基于数据库表,启用SPF选路规则,计算到达所有未知网段的最短路径,然后使其加载到本地的路由表中,收敛完成,hello包周期保活,每30min再周期收发一次DBD来判断和邻接间数据库是否一致。
结构突变:
1、新增网段:直连新增网段的设备,将直接使用LSU包来告知本地所有邻接,之后邻接传邻接扩散到全网,需要ACK确认。
2、断开网段:直连断开网段的设备,将直接使用LSU包来告知本地所有邻接,之后邻接传邻接扩散到全网,需要ACK确认。
3、无法沟通:dead time为hello time的4倍;当dead time到时时,断开邻居关系,删除通过该邻接生成的路由协议。

四、接口网络类型

接口网络类型 OSPF接口网络类型(OSPF工作方式)
Loopback 0 cisco-loopback 没有hello包 以32位主机路由发送
华为-显示为p2p类型 实际为loopback工作方式

点到点 p2p hello time 10s 自动建邻 不选DR/BDR
(串线HDLC/PPP/GRE)

BMA
以太网 broadcast hello time 10s 自动建邻 选DR/BDR
NBMA

帧中继 nbma hello time 30s 手工建立邻居 选DR/BDR

MGRE p2p hello time 10s 自动建邻 不选DR/BDR—在
一个网段中只能存在一个邻居;华为设备在一个
MGRE网段,接口为点到点工作方式时,仅和最先
收到hello的设备建立邻居关系;
cisco在这种情况将出现邻居的翻滚
:在MGRE环境中,接口默认的OSPF工作方式为点到点,这种方式无法实现该NBMA网段的邻居全连,故只能去修改接口的工作方式:
修改MGRE网段所有接口为Broadcast工作方式,切记若一部分接口修改为Broadcast,另一部分接口依然保持为点到点,由于hello time相同可以建立邻居关系,但工作机制在DR/BDR选举处不同,故最终该网段无法正常收敛;(在Tunnel口写命令:ospf network-type broadcast)
[1]同时,必须关注网络拓扑结构;若该网段为全连网状结构,那么DR选举将正常进行;但若为部分网状或中心到站点拓扑,将可能出现DR位置错误问题
[2]若网络拓扑只能为部分网状或中心到站点,需要人为干预DR位置,或者将所有接口工作方式修改为点到多点工作方式;
OSPF的点到多点工作方式:只能手工配置,适用于部分网状结构拓扑;

五、OSPF的各种LSA

OSPF协议
OSPF的LSA是1800会更新一次***加一
LSA的新旧比较
1、会先比较***,***越大越优
2、如果***相同,会比较校验值(checksum)越大越优
3、如果校验值也相同,会比较LSA age时间,是否等于MAX-age时间(3600)
4、如果age时间不等于max-age时间,会比较他们的差值,如果差值大于15分钟(900秒),小的优
5、如果age时间不等于max-age时间,会比较他们的差值。如果差值小于15分钟,说明是同一条LSA,忽略其中一条。
什么情况下LSA会更新
1、1800到期会周期更新
2、触发更新(接口地址变化(增加或删除),修改接口开销值,删除接口或者删除通告)

六、特殊区域

不能是骨干区域,不能存在虚链路
【1】同时不存在ASBR
1)末梢区域–该区域拒绝4/5类的LSA进入;由该区域连接骨干区域的ABR设备,向区域内发送一条3类的缺省路由
ospf 1
area 1
stub
注:该区域内所有设备均需要定义,否则无法建立邻居关系
2)完全末梢区域–在末梢区域的基础上进一步拒绝3类的LSA;仅保留一条3类的缺省路由;先将该区域配置为末梢区域,然后仅在ABR上定义完全末梢即可
ospf 1
area 1
stub no-summary
【2】同时存在ASBR
1)NSSA非完全末梢区域–拒绝非本区域内部产生4/5类LSA,本区域ASBR产生的5类将通过7类LSA传输,到达ABR处进入骨干区域时,由7类转换回5类;
在cisco设备中,为了避免环路的出现,OSPF协议在NSSA区域配置完成后,不会自动产生缺省路由,而是由管理员在缺省网络无环的前提下,手工添加;
在华为设备中让由该区域连接骨干0的ABR自动下发7类缺省
ospf 1
area 1
nssa
注:该区域内所有设备均需要定义,否则无法建立邻居关系
2)完全NSSA–完全的非完全末梢区域;在普通NSSA的基础上,进一步拒绝3类LSA,由ABR产生一条3类缺省
先将该区域配置为普通的NSSA,然后仅在ABR上定义完全NSSA即可
ospf 1
area 1
nssa no-summary
特别注意:
由于特殊区域将自动产生缺省路由,指向骨干;故ISP所连接的位置很关键,否则将可能与特殊区域产生的缺省互为环路,要求ISP所在位置的OSPF区域不要做任何特殊区域配置。