OSPF-开放最短路径优先协议

OSPF(Open Shortest Path First 开放式最短路径优先)

  • 无类别链路状态路由协议
  • 组播更新:224.0.0.5/224.0.0.6
  • 触发更新、周期更新(30min)
  • 跨层封装到网络层:协议号89
  • 支持等开销负载均衡:默认4条、最大6条;IOS版本12.4以上支持16条
  • 基于LSA更新:导致更新量很大
  • 结构化部署:区域划分

1. 数据包

  • HELLO:邻居的发现、建立、保活
  • DBD:数据库描述包(数据库目录信息)
  • LSR:链路状态请求
  • LSU:链路状态更新(携带各种LSA)
  • LSack:链路状态确认

OSPF-开放最短路径优先协议_第1张图片

2. OSPF的状态机

  • down:没有启用OSPF的状态
    邻居失效后变为该状态,本地一旦发出hello包,进入下一状态;若卡在此状态,原因是ospf没有运行,互相不发包

  • Init:初始化状态
    第一次收到对端发来的hello包(包含对端route-id)时,将对端的状态设置为init; 若卡在此状态,原因是一方收不到另一方的hello包,比如认证出了问题

  • 2-way:邻居状态
    相互间周期发送hello的状态(双方建立会话);点到点网络直接进入下一状态;MA网络将进行DR/BDR选举(40S),非DR/BDR间不能进入下一状态;若卡在此状态,原因是没有成功选举

  • Exstart:交换信息的初始化状态
    发送DBD(包含本地的LSA的摘要信息)报文,选举主从路由器(利用HELLO报文中的ID和优先权来进行选举,不允许抢占,RID数值大为主,主优先进入下一状态);若卡在此状态,原因是MTU值不匹配。

  • Exchange:交换信息的状态
    该状态下,相互间发送DBD,告知对端本地所有的LSA的目录,需要ACK;若卡在此状态,原因是包的交互有问题。

  • Loading:加载状态(没有学习完的状态)
    发送LSR,LSU,LSACK,专门学习对端的LSA的详细信息;若卡在此状态,原因是LSA加载不完全。

  • Full:邻接状态(学习完的状态)
    彼此的LSDB同步,即所有的LSA相同,邻接关系建立的标志;


3. OSPF的工作过程

r1(config)#router ospf 1   启动时需要配置进程号,仅具有本地意义
r1(config-router)#router-id 1.1.1.1  

router-id全网唯一:1.手工 > 2.环回接口上最大数值的ip地址 > 3.物理接口最大数值 > 4.无进程

宣告:1、激活 2、拓扑 3、区域划分

r1(config-router)#network 1.1.1.1 0.0.0.0 area 0
r1(config-router)#network 12.1.1.1 0.0.0.0 area 0
在宣告时必须携带反掩码  

启动配置完成后,本地收发hello包,建立邻居关系,生成邻居表

r2#show ip ospf neighbor 查看邻居表
Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           0   FULL/  -        00:00:32    12.1.1.1        Serial1/0
3.3.3.3           0   FULL/  -        00:00:36    23.1.1.2        Serial1/1
                    状态机

再进行条件的匹配,匹配失败将停留于邻居关系,仅hello包周期保活即可;

匹配成功者间可以建立邻接(毗邻)关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信息,该过程被称为 LSA洪泛或LSDB同步,当收集完网络中所有的LSA后,生成数据库表(LSDB)

r2#show ip ospf database  查看数据库的目录
r2#show ip ospf database router 1.1.1.1  具体查看某条LSA
                      类别  番号

LSDB建立完成后,本地基于SPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中,完成收敛

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标识OSPF本区域内通过拓扑计算所得路由
使用O IA标识其他区域路由器通过ABR导入所得
使用O E1/2标识其他协议或其他进程产生后,通过ASBR重发布进入
使用O N1/2标识其他协议或其他进程产生后,通过ASBR重发布进入,同时本地处于NSSA特殊区域;

收敛完成后–hello包周期保活

30min周期的DBD比对,若不一致将使用LSR/LSU/LSack重新获取(周期更新)


4. 区域划分规则

  1. 星型结构:
    所有非骨干必须直连到骨干区域 区域0为骨干 大于0为非骨干
    ospf区域0中必须有一个邻居,否则会出环
  2. ABR:
    区域边界路由器

5. OSPF结构突变

  1. 新增网段—直连新增网段的设备使用DBD告知邻居,邻居再使用LSR/LSU/LSack来获取

  2. 断开网段—直连断开网段的设备使用DBD告知邻居,邻居再使用LSR/LSU/LSack来获取

  3. 无法沟通—dead time 计时到后,邻居关系断开,删除所有从该邻接处学习到的所有LSA信息;


6. HELLO包

作用:邻居的发现、关系的建立和保活

网络类型 NBMA 其它
hello time 30s 10s
dead time 120s(4*30s) 40s(4*10s)

OSPF-开放最短路径优先协议_第2张图片


7. DBD包

作用:

  1. 建立邻接关系
  2. 不带有LSA头部的DD,用于选举 Master/Slave
  • 出现在exstart和exchange阶段
    exstart状态时,没有携带目录信息,仅用于主从关系选举

  • 在exstart状态的DBD时,使用隐型确认(基于序列号);从使用主的DBD序号来确认主的信息

  • 标记位 I 为1标识本地发出的第一个DBD 包,M为0标识本地的发出最后一个DBD包,MS为1标识主,为0标识从


8. OSPF的邻居关系成为邻接关系的条件

  • 点到点网络中,邻居关系必须成为邻接关系,否则无法正常收敛

  • MA网络若全网均为邻接关系,那么将可能出现大量重复性的LSA洪泛;
    为避免该现象,将进行DR/BDR的选举;
    所有的非DR/BDR间不得建立成为邻接关系;


DR/BDR选举规则:

  1. 先比较接口优先级----- 默认1;0-255间,大优;0标识不参选,点到点接口默认为0;
  2. 优先级相同,比较设备的RID,数值大优;

干涉选举的方法:

  • 修改DR最大优先级,BDR次大
r1(config)#interface fastEthernet 0/0
r1(config-if)#ip ospf priority 3
注:DR选举非抢占,故修改优先级后必须重启设备的OSPF进程
r1#clear ip ospf process 
Reset ALL OSPF processes? [no]: yes
  • 修改DR最大优先级,BDR次大;剩余所有设备优先级修改为0;
    不需要重启设备的进程;
    切记不得将所有设备优先级修改为0,至少必须存在DR;

9. 邻居建立失败

  1. 相同route-id
  2. 认证问题
  3. 区域ID不同
  4. 特殊区域标示不一致
  5. 优先级都为0,无法选举
  6. MTU值不匹配
  7. 包的交互不完整,网络中丢包等
  8. LSA加载不完全
  9. hello包时间不一致
  10. MA网络掩码不一致(不在一个子网)
  11. 虚链路建邻ABR的两个出接口不通
  12. shame-link建邻要保证源和目的单播能通

10. OSPF的接口网络类型

OSPF接口工作方式

r1#show ip ospf interface lo0 查看OSPF协议在某个接口上的工作方式

网络类型 OSPF接口工作方式 hello time 选举 备注
环回 LOOPBACK 无hello包 以32位主机掩码发送路由
点到点(HDLC/PPP) POINT_TO_POINT 10s 不选DR 缺点:会占用较多的子网,并且在hub上会开启较多的tunnel ,配置繁琐,改动不方便
点到多点(不完全相连的FR网络) 不选DR
BMA (以太网) BROADCAST 10s 选DR
NBMA (MGRE) POINT_TO_POINT 10s 选DR 优点:方便通信
缺点:不稳定参数多,断开恢复慢

OSPF-开放最短路径优先协议_第3张图片OSPF-开放最短路径优先协议_第4张图片

OSPF-开放最短路径优先协议_第5张图片OSPF-开放最短路径优先协议_第6张图片

注:点到点的工作方式,仅适用于一个网段两个节点的网络;
在普通GRE中,点到点的工作方式没有任何问题;
但在MGRE这种NBMA网络中,若依然使用tunnel口默认的点到点工作方式,将由于点到点仅支持一个邻居关系,而出现邻居关系翻滚现象;


解决方法:

  • 所有节点修改 BROADCAST
r1(config)#interface tunnel 0
r1(config-if)#ip ospf network broadcast

注1:若MGRE环境下,不同接口处于不同的网络类型;若hello time一致将建立邻居关系,当工作机制的不同导致LSA更新出现问题;必须所有节点处于相同的工作方式
注2:MGRE环境下,若构建的OSPF工作环境不是一个全连结构(网段内所有设备间均建立邻居关系),那么一旦使用broadcast工作方式,就必须将DR固定在中心站点位置,否则将出现DR位置混乱,导致网络无法正常收敛;

  • 所有节点修改为点到多点模式;
    点到多点为cisco为OSPF协议额外设置的工作方式
r1(config)#interface tunnel 0
r1(config-if)#ip ospf network point-to-multipoint 

点到多点的工作:1. hello time30;2. 无DR选举;3. 生成访问各个节点的精确路由;
注:在全连网状结构中若接口工作方式为点到多点,将由于不进行DR/BDR选举,导致重复更新;


11.OSPF的不规则区域

ABR共享路由规则

  1. 若ABR未连接到骨干区域,不能进行任何区域间路由共享
  2. 若路由条目从A区域共享到了B区域,不得再回到A编号区域(A区域及和A区域相同ID的区域)—OSPF水平分割
  3. 当路由器通过不同区域学习到相同路由时,优选骨干链路传递;若均为非骨干区域,那么基于度量进行选择;

区域

  1. 远离骨干的非骨干区域
    ABR必须同时工作于区域0,才能进行区域间的路由共享

  2. 不连续骨干
    从X区域获取到的路由信息不得发往编号为X的区域;即便X区域连接了本区域不同的ABR;(OSPF水平分割)


解决方案


普通tunnel

在两台ABR上建立隧道,然后将其宣告于OSPF协议中

  • 缺点:
    1. 周期的保活和更新,触发的信息均需要通过中间的穿越区域,对中间区域影响较大;
    2. 选路不佳;
    3. OSPF协议若通过不同的区域学习到的相同的路由,优选区域0;若均为非骨干,比较度量值;

OSPF虚链路

ospf虚链路两种作用:

连接远离骨干域的区域

r2(config)#router ospf 1
r2(config-router)#area 1 virtual-link 4.4.4.4
                  中间的穿越区域   对端的ABR的RID
  • 缺点:因为没有新的网段出现,故选路正常;为了避免周期的信息对中间区域的影响,故停止虚链路间的所有周期行为(不可靠)

缝合断裂骨干区域

OSPF-开放最短路径优先协议_第7张图片
虚链路生长在区域0,依赖于区域1的树


多进程双向重发布

一台设备上若同时运行多个进程,那么不同进程拥有不同的RID,生成各自的数据库,当数据库不共享;仅将各自计算所得路由加载于同一张路由表内;若多个进程工作于同一个接口上,仅最新启动的进程生效;

在解决不规则区域时,让连接两个非骨干区域的ABR设备,将不同区域宣告到本地的不同进程下,之后使用重发布技术,进行路由共享即可;

r4(config)#router ospf 1
r4(config-router)#redistribute ospf 2 subnets
r4(config-router)#exit
r4(config)#router ospf 2
r4(config-router)#redistribute ospf 1 subnets

12.LSA

LSA识别

参数 意义
LS age: 142 老化时间,周期1800归0,也可触发归0;最大老化3609s
Options: (No TOS-capability, DC)
LS Type: Router Links 类别名,此处为1类
Link State ID: 1.1.1.1 link-ID,在目录中的编号
Advertising Router: 1.1.1.1 通告者的RID
LS Seq Number: 80000004 序列号
Checksum: 0x65F9
Length: 60
Number of Links: 3

LSA种类

类别 LSA Link-ID 传播范围 通告者 携带信息
LSA1 router 通告者的RID 本区域 本地区域所有设备 本地的直连拓扑
LSA2 network DR的接口IP地址 本区域 DR MA网段部分的拓扑
LSA3 Summary O IA路由,目标网络号 整个OSPF域 ABR
在经过下一跳ABR时,修改为本地
O IA 域间路由
LSA4 asbr-summary ASBR的RID 除ASBR所在区域外的整个OSPF域 ABR
在经过下一跳ABR时,修改为本地
ASBR位置
LSA5 External O E 路由,目标网络号 整个OSPF域 ASBR(不修改) O E 域外路由
LSA7 nssa-external O N路由,目标网络号 NSSA区域内
离开该区域后转换回5类
ASBR(不修改) O N 域外路由

1类LSA不同网络类型的有向图画法


1. point to point

  • 点到点

OSPF-开放最短路径优先协议_第8张图片

  • 点到点不同网段OSPF-开放最短路径优先协议_第9张图片

  • 点到多点
    OSPF-开放最短路径优先协议_第10张图片

  • 点到多点互通
    OSPF-开放最短路径优先协议_第11张图片


2. transit (MA)

OSPF-开放最短路径优先协议_第12张图片


示例:

OSPF-开放最短路径优先协议_第13张图片

有向图为:

OSPF-开放最短路径优先协议_第14张图片


一类LAS的问题是什么?为什么要有二类LSA?

拿上面的例子来说一类LSA只能说明我连了谁,所以在MA中他只知道连了哪个网段,不能说明是否连了其他路由器,
二类是用来解决这个问题,用二类来说明这个网段连着谁,都有谁,这个网段就相当于DR。


13. 减少LSA的更新量

手工汇总(减少骨干区域LSA量)

  • 域间路由汇总
    对3类的LSA进行汇总(只能在ABR上配置)
r1(config)#router ospf 1
r1(config-router)#area 2 range 5.5.4.0 255.255.252.0
              通过该区域的1/2类LSA计算所得路由才能汇总成功
  • 域外路由汇总
    ASBR上配置
r4(config)#router ospf 1
r4(config-router)#summary-address 99.1.0.0 255.255.252.0
将5/7汇总后发向OSPF域内

注:以上汇总均会自动生成空接口防环路由;


特殊区域(针对非骨干区域)

特殊区域:不能为骨干区域、不能存在虚链路


不存在ASBR

stub(末梢区域)

拒绝4/5的LSA,ABR自动产生3类缺省发向该区域

r5(config)#router ospf 1 
r5(config-router)#area 1 stub 该区域所有的设备均需要配置

完全末梢区域

在末梢区域的基础上进一步拒绝3的LSA,仅保留一条3类的缺省

先将该区域配置为末梢区域,然后仅在ABR上定义完全即可

r1(config-router)#area 2 stub no-summary 

存在ASBR

NSSA(次末梢区域)

该区域拒绝4/5类LSA;不自动产生3类缺省;本地的5类LSA基于7类转发,通过NSSA区域后转回5类;
该特殊区域的意义在于拒绝其他区域的ASBR产生的4/5数据,又为了避免环路的出现,默认不自动产生缺省路由,导致无法访问其他的域外网段;故在管理员确定无环的情况下,可以手工添加缺省路由

r4(config)#router ospf 1 
r4(config-router)#area 1 nssa   该区域所有设备配置

完全NSSA

在NSSA的基础上进一步拒绝3的LSA,自动产生3类缺省
先将该区域配置为NSSA,然后仅在ABR上定义完全即可

r3(config)#router ospf 1 
r3(config-router)#area 1 nssa no-summary 

切记:ISP所在位置的非骨干区域不得配置为任何的特殊区域;
若ISP连接在其他的协议时,连接该协议的非骨干区域也不得配置为任何特殊区域;


NSSA区域

区域特性

  • NSSA:Not-so-stubby Area (次末梢区域)
  • 继承stub区域特性,可配置为完全次末梢区域
  • 可在NSSA区域内的路由器上重发布

NSSA与stub对比:

  • 配置、ABR通告LSA

OSPF-开放最短路径优先协议_第15张图片

OSPF-开放最短路径优先协议_第16张图片


14. FA

FA的概念

Forward Address:出现在5类或7类LSA中
全0或非0

OSPF-开放最短路径优先协议_第17张图片
OSPF-开放最短路径优先协议_第18张图片

全0的FA

  • 其他路由器在收到5类LSA时,必须在数据库中存在关于产生该5类LSA的ASBR信息

  • ASBR信息不是值路由表中存在ASBR Router-id 的路由信息,而是数据库中存在ASBR产生的1类LSA

  • 若数据库中存在ASBR产生的1类LSA,则该路由器可以加载5类LSA进入路由表,其下一跳为到达ASBR的最近一跳
    OSPF-开放最短路径优先协议_第19张图片

  • 当接收到5类LSA的路由器R5与产生该5类LSA的ASBR不在同一区域内,R1产生的1类LSA将不会洪泛进Area 1

  • R5的数据库中不存在R1产生的1类LSA,因此将无法加载5类LSA进路由表

OSPF-开放最短路径优先协议_第20张图片

  • 由于划分区域,1类LSA跨区域洪泛
  • 为了解决ASBR信息的传递,ABR会向它所连接的其他区域(非ASBR所在的区域)内通告一条4类LSA,以标识ASBR信息(其中包含ABR到达该ASBR的距离)

OSPF-开放最短路径优先协议_第21张图片

非0的FA

(必要产生条件,FA的接口必须是MA类型)

  • 当FA非0时(为一个IP地址),接收到外部LSA的路由器必须在路由表中存在一条到达FA地址的路由
  • 到达FA地址的路由必须是OSPF内部路由或直连路由,这样接收到该外部LSA的路由器才能够加载该LSA进入路由表
  • 加载的外部LSA生成的路由条目下一跳遇到大FA地址的下一跳相同

FA会引起路由表的递归查找,若递归到不是O或OA的,此5类路由会无效(该现象被称之为路由不加表现象,有LSA没有路由)


15. OSPF扩展配置

1. 认证


1.1 接口认证


1.1.1 接口明文

r1(config)#interface s1/1  连接邻居的接口上配置
r1(config-if)#ip ospf authentication   开启接口明文认证需要,开启后本地hello包中认证类型字段被修改,若邻居间不一致,将无法建立邻居关系
r1(config-if)#ip ospf authentication-key cisco  定义明文认证的秘钥

1.1.2 接口密文

r2(config)#interface s1/1
r2(config-if)#ip ospf authentication message-digest  开启密文认证需要
r2(config-if)#ip ospf message-digest-key 1 md5 cisco123  配置秘钥及编号

1.2 区域认证

例:在R1上开启关于区域0的明文或密文认证;实际就是在R1上所有的区域0接口配置了明文或密文的认证需求,修改了认证类型字段而已
接口的秘钥还需要到各个接口上逐一匹配

r2(config)#router ospf 1 
r2(config-router)#area 1 authentication  区域明文

r2(config-router)#area 1 authentication  message-digest 区域密文

1.3 虚链路认证


1.3.1 明文认证

r2(config-router)#area 1 virtual-link 4.4.4.4 authentication  先开启明文认证需求
r2(config-router)#area 1 virtual-link 4.4.4.4 authentication-key cisco 在配明文认证密码

1.3.2 密文认证

r2(config-router)#area 1 virtual-link 4.4.4.4 authentication message-digest
r2(config-router)#area 1 virtual-link 4.4.4.4 message-digest-key 1 md5 cisco123 

2. 被动接口

只接收不发送路由协议信息,仅用于连接用户的接口,不得用于连接邻居的接口

r2(config)#router ospf 1 
r2(config-router)#passive-interface fastEthernet 0/0

3. 加快收敛

修改计时器,修改时尽量为原有倍数关系,且不易修改过小;

r2(config)#interface s1/1
r2(config-if)#ip ospf hello-interval 10  修改hello time
r2(config-if)#ip ospf dead-interval 40  修改dead time

切记:修改本端的hello time,本端的dead time将自动4倍关系匹配;
邻居间hello 和 dead time必须一致;


4. 缺省路由


3类缺省

由特殊区域自动产生------末梢、完全末梢、完全NSSA产生;普通NSSA区域不产生


5类缺省

本地路由表若存在缺省路由,无论什么方法获取的;将可以使用重发布技术将其导入OSPF域内

r2(config)#router ospf 1 
r2(config-router)#default-information originate

默认进入的缺省路由,为类型2,种子度量为1;度量在内部传递时不叠加;类型1的话,度量会叠加;
类型1主要用于存在多个ASBR时;
r2(config-router)#default-information originate metric-type 1
若本地路由表没有缺省,但希望向内网强制发布缺省路由
r2(config-router)#default-information originate always 强制向内网发缺省路由


7类型缺省

将域外的缺省路由重发布到NSSA区域;切记:若为NSSA区域可以导入,但为完全NSSA时,导入7类缺省必然出环;

r4(config)#router ospf 1 
r4(config-router)#area 1 nssa default-information-originate 
默认进入路由为类型2,种子度量为1;
r4(config-router)#area 1 nssa default-information-originate ?
  metric             OSPF default metric
  metric-type        OSPF metric type for default routes

总结:若同时学习到不同类别的缺省路由;
内部优于外部-----3类优于5/7类
若5/7类相遇,先比度量,小优;若度量一致,5类优于7类;


16. 瞬时黑洞

OSPF-开放最短路径优先协议_第22张图片
bgp与ospf左右两边收敛速度不同导致
解决:设置stub router

  1. max-metric router-lsa on-starup wait-for-bgp //等待bgp收敛完成

  2. max-metric router-lsa //经过的lsa永远最大metric


17. OSPF的完美重启

启时不清空FIB表,也就是重启协议时不影响数据转发
Graceful restart

你可能感兴趣的:(OSPF-开放最短路径优先协议)