OSPF 开放式最短路径优先协议
目前使用范围最广泛的IGP协议;无类别链路状态路由协议;
一、数据包类型
1、hello 包
用hello包建立邻居关系,周期保活。
2、DBD包 -数据库描述包
数据包包含发送方路由器的链路状态数据库的简略列表,接收方路由器使用本数据包与其本地链路状态数据库对比。
3、LSR链路状态请求
接收方路由器可以通过发送链路状态请求 (LSR) 数据包来请求 DBD 中任何条目的有关详细信息。
4、LSU链路状态更新
数据包用于回复 LSR 和通告新信息。LSU 包含七种类型的链路状态通告 (LSA)。
5、LSack 链路状态确认
路由器收到 LSU 后,会发送一个链路状态确认 (LSAck) 数据包来确认接收到了 LSU。
**二 状态机 **
Down: 一旦本地发出ospf的hello包进入下一个状态
Init初始化:接收到的hello包中存在本地的RID,进入下一状态
2way双向通信:邻居关系建立的标志;
条件匹配:点到点直接进入下一状态;MA网络进行DR/BDR选举(40s),非DR/BDR间不进入下一状态
Exstart预启动:路由器和它的邻居之间通过互相交换类似hello 的DBD包(该报文并不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。RID数值大为主,优先进入下一状态;建立主/从关系主要是为了保证在后续的DBD报文交换中能够有序的发送。
Exchange准交换:使用真实的DBD包来共享数据库目录;
Loading加载:使用LSR/LSU/LSack来获取未知的LSA信息;
Full转发:邻居路由器的LSDB中所有的LSA本路由器全都有了,邻接关系建立。
LSA: 链路状态通告,在不同环境下产生不同类别的LSA;可以是拓扑也或者是路由条目;
LSDB: 链路状态数据库—所有LSA的集合
LSA洪泛,LSDB同步:OSPF收敛的称呼
三 OSPF工作过程:
1、启动配置完成后,邻居间组播(224.0.0.5)使用hello包,建立邻居关系,生成邻居表;
2、邻居表生成后,基于邻居表中的各个邻居,进行条件的匹配;匹配失败将维持邻居关系, 仅hello包周期保活即可;
条件匹配成功者间将建立邻接关系,邻接关系间将使用DBD来共享本地的数据库摘要;邻接关系间可以通过识别摘要,来请求本地未知的LSA信息;请求时使用LSR,对端使用LSU来分享这些LSA信息;
当获取到网络中所有的LSA后,本地数据库建立完成,LSDB同步结束;数据库表可查看;
3、默认OSPF协议通过本地的数据库,启用SPF最短路径选路规则,计算本地到达所有未知网段的最佳路径,然后将其加载于路由表中;
收敛完成—hello包周期保活 邻接关系间每30min周期进行DBD的比对,若一致继续保持安静;
结构突变:
1.新增网段—直连新增网段的设备,使用DBD包来告知本地所有邻居;
2.断开网段—直连断开网段的设备,使用DBD包来告知本地所有邻居;
3.无法沟通—dead time到时时,断开邻居关系,是否能够重建取决于hello包;Hello time 为10s,dead time 为 hello time 的4倍;
四 接口网络类型
OSPF网络类型 ----ospf的接口网络类型 ---
OSPF协议在不同的网络类型下,不同的工作方式
R1#show ip ospf interface loopback 0
Loopback0 is up, line protocol is up
Internet Address 1.1.1.1/24, Area 0
Process ID 1, Router ID 1.1.1.1, Network Type LOOPBACK, Cost: 1
Loopback interface is treated as a stub Host
网络类型 OSPF的接口网络类型 工作方式
环回-LOOPBACK LOOPBACK 无hello包,主机路由发送
点到点--PPP/HDLC/GRE POINT_TO_POINT hello time10s;自动建邻,不选DR/BDR
BMA--以太网 BROADCAST hello time10s;自动建邻,选DR/BDR
NBMA--帧中继、MGRE POINT_TO_MULTIPOINT hello time30s;自动建邻,不选DR
在MGRE环境中运行OSPF,因为OSPF协议在tunnel接口默认的工作方式为点到点,这种方式只能建立一个邻居,故多点端将出现邻居关系翻滚;
五 LSA类别:
名称 传播范围 通告者 携带的信息
LSA1 router 设备所在区域 该区域的每台设备 本地直连拓扑
LSA2 network 设备所在区域 DR MA网段部分的拓扑
LSA3Summary 整个OSPF域 ABR O IA 域间路由
注意区域水平分割
LSA4 asbr-summary ASBR所在区域外的 ABR ASBR位置
整个OSPF域
LSA5External 整个OSPF域 ASBR O E1/2 域外路由
LSA7nssa-external 单个NSSA区域 ASBR O N1/2域外路由
名称 link-id 通告者ID
LSA1 router 通告者的RID 该区域的每台设备
LSA2 network DR的接口ip DR的RID
LSA3Summary O IA 路由条目的网络号 ABR;经过下一台ABR时,修改为新的ABR RID
LSA4LSA4 asbr-summary ASBR RID ABR(与ASBR在同一区域)经过下一台ABR时,修改为新的ABR RID
LSA5External O E1/2 路由条目的网络号 ASBR-默认在传播过程中不修改
LSA7nssa-external O N1/2路由条目的网络号 ASBR-在传递出该NSSA区域后,被新的
ASBR转换为5类
六 `` OSPF的LSA更新量优化
1)汇总-–减少骨干区域的LSA–OSPF不支持区域内部的接口汇总,因为内部传递拓扑
{1}域间路由汇总–将一个区域的路由汇总到其他区域
在ABR上配置,配置完成后本地生成空接口防环路由
r3(config)#router ospf 1
r3(config-router)#area 1 range 4.4.4.0 255.255.254.0
切记:ABR必须是工作在被汇总路由的区域内;只能将本地通过1/2类LSA计算所得路由进行汇总
{2}域外路由汇总—在ASBR上配置;自动产生空接口防环路由
r4(config)#router ospf 1
r4(config-router)#summary-address 99.1.0.0 255.255.252.0
2)特殊区域–减少非骨干区域的LSA --所有特殊区域配置,需要该区域每台设备均配置
不能是骨干区域,不能存在虚链路;
{1}同时不能存在ASBR
《1》末梢区域–该区域拒绝4/5的LSA;
r5(config)#router ospf 1
r5(config-router)#area 2 stub
《2》完全末梢区域—在末梢区域的基础上,进一步拒绝3类LSA,仅保留一条3类缺省;
先将该区域定义为末梢区域,然后仅在ABR上定义完全即可;
r1(config)#router ospf 1
r1(config-router)#area 2 stub no-summary
{2}同时存在ASBR
《1》NSSA 非完全末梢区域;该区域拒绝4/5的LSA;为避免环路产生,不自动产生缺省;在管理员确定了网络无环的情况下手工添加缺省路由;本区域的ASBR产生的域外路由使用7类标记,离开本区域进入骨干时,转换回5类,进行转换的ABR成为新的ASBR;
NSSA的意义在于拒绝从网络中其他区域的ASBR产生的4/5类LSA信息;
r4(config)#router ospf 1
r4(config-router)#area 1 nssa
《2》完全NSSA—在NSSA区域的基础,进一步拒绝3类LSA;自动产生3类缺省;
但使用时,应该考虑是否会产生环路;
先将该区域配置为NSSA区域,然后仅在ABR上定义完全即可;
r3(config)#router ospf 1
r3(config-router)#area 1 nssa no-summary
切记:使用特殊区域时,ISP连接在哪个非骨干,该区域不做特殊配置;连接到域外协议时,OSPF中与该域外协议所相连的非骨干区域也不能做特殊区域配置;否则可能导致环路;
七、选路规则
1、区域内的 > 区域间的 >ASE TYPE1 > ASE TYPE2。
2、ASE TYPE1 or NSSA TYPE1 进行比较,比较的是OSPF的内部和外部成本只和,即哪个成本之和小,哪条路径就好,如果成本一样,则负载分担。
3、ASE TYPE2 or NSSA TYPE2 进行比较 先比较二者的外部成本,外部成本小的路径好,如果外部成本一样,再比较内部成本,内部成本小的路径优先,如果一致,则负载分担。
拓扑优于路由 1/2LSA计算所得路由优于3/4/5/7类计算所得
内部优于外部 3类优于4/5/7类
类型1优于类型2 E1优于E2,N1优于N2,E1优于N2,N1优于E2;
E1与N1相遇,或E2与N2相遇,先比总度量(起始+沿途)小优;度量一致5类优于7类
OSPF E1和N1就是 关注起始度量和从ASBR传递过来的沿途累加。
OSPF E2和N2就是 只计算起始度量 ,不加沿途累加。