CCNP 认证考试OSPF基本概念与原理详解

本文实例讲述了CCNP 认证考试OSPF基本概念与原理。分享给大家供大家参考,具体如下:

CCNP---OSPF

目录

基本概念

OSPF:Open Shortest Path First
开放式的最短路径优先协议,是标准的链路状态( LS )型路由协议—共享拓扑。

基于 IP 封装,协议号为 89。支持手工汇总和认证。
管理距离110,使用COST值作为度量值。

OSPF是一种链路状态型协议,传递的是 LSA(链路状态通告),LSA包含了路由信息和拓扑信息,常见的有 1、2、3、4、5、7 类 LSA 。

更新方式:触发更新以及存在 30min 的周期链路更新
更新为组播更新,地址为:224.0.0.5 和 224.0.0.6

OSPF网络需要结构化部署:
1、区域划分:基于接口划分
优势:减少 LSA 的传递距离和范围,减少 LSA 的数量。
区域:分为 0(骨干)区域和非 0(骨干)区域。
区域划分规则:
(1)必须拥有区域 0(骨干区域),所有非骨干的区域必须直连骨干区域
(2)必须拥有 ABR —区域边界路由器

2、IP地址规划

链路状态型路由协议的距离矢量特征:区域之内传递拓扑,区域之间传递路由

OSPF 数据包

hello包:用于发现、建立并保活(10s)邻居关系。存在全网唯一的 Router-ID ,用于路由器的身份标识,使用的 IP 地址的方式表示。
DD包:Database Description,数据库描述包。
LSR:链路状态请求。
LSU:链路状态更新(携带了 LSA )。
LSAck:链路状态确认。

LSA:链路状态通告,就是OSPF中不同的拓扑或者路由信息。
LSDB:链路状态数据库,所有的 LSA 的集合

OSPF 状态机

down:未启动协议。一旦启动协议并发出hello包之后,立即进入下一状态。
init:等待邻居回复的状态。若收到的hello包中携带了自己的RID,则和对方一起进入下一状态。
2-way:表示邻居关系建立。条件匹配:若成功,则进入下一状态;若失败,仅hello包保活。
Exstart:预启动,使用假的DD报文比较RID,大者优先进入下一状态。
Exchange:双方交换DD报文。
Loading:使用LSR/LSU/LSAck获取未知的路径拓扑或者路由。
Full:邻接关系建立,收敛完成。

OSPF 工作过程

1.启动协议后,设备本地基于 224.0.0.5 组播发出 hello 包,发现并建立邻居关系,生成邻居表,之后进行条件匹配,若成功,则进入下一状态;若失败,则仅 hello 包 10s 进行邻居关系保活。

2.RID 大者优先进入下一状态,先交换 DD ,然后再使用 LSR/LSU/LSACK 收集未知的 LSA ,生成 LSDB —数据库表。

3.设备基于此 LSDB ,使用 SPF 算法计算出去往目标的最佳路径,生成路由表,完成收敛。

4.之后 10s 周期保活,30min 周期性比对 DD ,若不一致将使用 LSR/LSU/LSack 重新获取。

当网络结构发生变化

1.新增&断开:直连发生变化的设备通过 DBD/LSR/LSU/LSACK 完善即可。

2.设备无法通信:hello 包 10s 保活 dead time 40s–计时结束后,删除邻居关系以及从邻居处学习到的所有 LSA 信息。

OSPF 选路规则

路由表中,所有 OSPF 计算所得的路径使用 OSPF 表示,OSPF 优先级为 10 。
Cost 值=参考带宽÷入接口带宽(默认参考带宽为100Mbits/s)

当接口带宽大于参考带宽时,COST取1,会导致选路不佳,可以通过修改参考带宽来解决:
 

r1(config)#ospf 1
r1(config-ospf-1)#bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
r1(config-ospf-1)#bandwidth-reference 10000 //修改参考带宽

PS:参考带宽的修改需要全网一致

若去往某一个目标拥有多条路径时,优先选择整条路经控制层面入接口Cost之和最小的

控制层面:路由来的方向
数据层面:数据去的方向

成为邻接关系的条件 — 关注网络类型

1.点到点:在一个网络内只能存在两个节点
 

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

2.MA(多路访问):在一个网络内不限制节点数
 

MA 网络类型中,若全网均为邻接关系,那么将可能出现大量重复性的 LSA 洪泛。
为避免该现象,则需要选举 DR/BDR 角色,所有的非DR/BDR间不得建立成为邻接关系。
为了消除重复更新,选举时间 40s,其他所有没有定义角色的路由器成为 DROther。

角色关系:
DR与DROther之间是邻接关系
BDR与DROther之间是邻接关系
DROther与DROther之间是邻居关系
DR与BDR之间是邻接关系

选举规则:
1.先比较接口优先级,大优。默认所有路由器接口优先级为 1。0 表示不参选,点到点接口默认为 0;
2.比较 Router-ID,大优

干涉选举的方法:
1.可以通过修改设备参加选举的接口的优先级实现控制选举,修改DR最大优先级,BDR次大:
 

r1(config)#interface fastEthernet 0/0
r1(config-if)#ip ospf priority 5
r2(config)#interface fastEthernet 0/1
r2(config-if)#ip ospf priority 3

PS:DR 选举非抢占,故修改优先级后必须重启设备的OSPF 进程
clear ip ospf process (重启OSPF进程)

2.修改 DR 最大优先级,BDR 次大;剩余所有设备优先级修改为 0。
PS:不能将所有的接口优先级全改成0

OSPF 的接口网络类型

OSPF 协议在不同网络类型下的接口上,拥有不同的工作方式。

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

OSPF接口工作方式:

网络类型 接口工作状态 工作方式
环回接口 LOOPBACK 无hello,使用主机路由发送
点到点(HDLC/PPP) POINT_TO_POINT hello time 10s,不选DR
BMA (以太网) BROADCAST hello time 10s,选DR
NBMA (MGRE) POINT_TO_POINT hello time 10s,不选DR

PS:
 

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

解决方式:
1.所有节点修改 BROADCAST
 

r1(config)#interface tunnel 0
r1(config-if)#ip ospf network broadcast

2.所有节点修改为点到多点模式;
点到多点为cisco为OSPF协议额外设置的工作方式
 

r1(config)#interface tunnel 0
r1(config-if)#ip ospf network point-to-multipoint

点到多点的工作:hello time30;无DR选举;生成访问各个节点的精确路由;

OSPF 的不规则区域

1.远离骨干的非骨干区域 — ABR 必须同时工作于区域 0,才能进行区域间的路由共享。
2.不连续骨干—从一个区域获取到的路由信息不得发往编号相同的区域,即使该区域连接了本区域不同的ABR,水平分割。

解决方案:
1.普通 tunnel—在两台 ABR 上建立隧道,然后将其宣告于 OSPF 协议中
缺点:
(1)周期的保活和更新,触发的信息均需要通过中间的穿越区域,对中间区域影响较大;
(2)选路不佳.
OSPF协议若通过不同的区域学习到的相同的路由,优选区域0;若均为非骨干,比较度量值;

2.OSPF虚链路—非骨干区域间的ABR到骨干区域的ABR处授权–建立一条虚链路
 

r2(config)#router ospf 1
r2(config-router)#area 1(中间的穿越区域) virtual-link 4.4.4.4(对端的ABR的RID)
 

因为没有新的网段出现,故选路正常。
缺点:为了避免周期的信息对中间区域的影响,故停止虚链路间的所有周期行为—不可靠。

3.多进程双向重发布
一台设备上若同时运行多个进程,那么不同进程拥有不同的 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

OSPF 的数据库表

OSPF 协议基于 LSU 来共享 LSA 信息,在不同的条件下发出不同类别的 LSA。

详细查看某条LSA:
 

r1#show ip ospf database(类别名) router 1.1.1.1(link-id/*)

无论哪种类别的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

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

PS:7类在离开该区域后转换回5类。

减少 LSA 的更新量

方法:
1.手工汇总
2.特殊区域

手工汇总

减少骨干区域LSA量
(1)域间路由汇总 — 只能在ABR上配置
 

r1(config)#router ospf 1
r1(config-router)#area 2 range 5.5.4.0 255.255.252.0
 

通过该区域的 1、2 类 LSA 计算所得路由才能汇总成功

(2)域外路由汇总 — ASBR上配置
 

r4(config)#router ospf 1
r4(config-router)#summary-address 99.1.0.0 255.255.252.0

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

特殊区域

针对非骨干区域,不能为骨干区域、不能存在虚链路。
1.没有 ASBR
(1)stub ,末梢区域
拒绝 4、5 类的 LSA ,ABR 自动产生 3 类缺省发向该区域。
 

r5(config)#router ospf 1
r5(config-router)#area 1 stub

PS:该区域所有的设备均需要配置为 stub 模式。

(2)totally-stub ,完全末梢区域
在末梢区域的基础上进一步拒绝 3 类的 LSA ,仅保留一条 3 类的缺省。
先将该区域配置为末梢区域,然后仅在 ABR 上定义完全即可。
 

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

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

r4(config)#router ospf 1
r4(config-router)#area 1 nssa

PS:该区域所有设备都要配置

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

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

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

OSPF 的基本配置

r1(config)#router ospf 1(进程号)
 

启动协议时需要配置进程号,进程号仅具有本地意义;
 

r1(config-ospf-1)#router-id 1.1.1.1( RID )
 

手工配置RID,不配置时,环回>物理接口。
 

r1(config-ospf-1)#network 172.16.1.0 0.0.0.255 area 0
 

区域宣告:1、激活接口 2、发布拓扑或路由 3、区域划分

OSPF 路由表

show ip route ospf (查看 OSPF 路由表)

路由表中的字母:
 

O 本区域内通过 LS 计算所得的路径
O IA 区域之间通过 ABR 引入的
O E1/2 从其他路由协议或者其他 OSPF 进程通过重发布技术引入的路由
O N1/2 从其他路由协议或者其他 OSPF 进程通过重发布技术引入的路由同时本地是 NSSA 区域

OSPF 扩展配置

认证

1.接口认证
 

(1)接口明文
 

r1(config)#interface s1/1
 

连接邻居的接口上配置
 

r1(config-if)#ip ospf authentication
 

开启接口明文认证需要,开启后本地 hello 包中认证类型字段被修改,若邻居间不一致,将无法建立邻居关系
 

r1(config-if)#ip ospf authentication-key cisco
 

定义明文认证的秘钥

(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
 

配置秘钥及编号

(3)区域认证
 

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

r2(config)#router ospf 1
r2(config-router)#area 1 authentication
 

区域明文
 

r2(config-router)#area 1 authentication message-digest
 

区域密文

(4)虚链路认证
 

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
 

再配明文认证密码

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
 

再配密文认证密码

被动接口

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

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

加快收敛

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

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

缺省路由

3 类缺省

由特殊区域自动产生。末梢、完全末梢、完全NSSA

5 类缺省

设备通过其他协议存在缺省路由后,可以将其重发布到OSPF的域内。
 

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

产生的缺省路由为 E2 类型;
 

类型 2 的种子度量为 1 ,且不叠加内部度量;
 

修改为类型 1 后,可以叠加内部度量
 

r3(config)#router ospf 1
r3(config-router)#default-information originate metric-type 1 metric 2

若本地路由表中不存在缺省路由,可以强制产生 5 类的缺省
 

r3(config)#router ospf 1
r3(config-router)#default-information originate always (类型2,度量1)
r3(config-router)#default-information originate always metric-type 1 metric 23

7类缺省

本地区域为 NSSA 区域,同时连接 ISP,且本地路由表中已经通过其他协议产生了缺省路由,那么可以进行重发布。
 

r7(config)#router ospf 1
r7(config-router)#area 2 nssa default-information-originate
 

默认类型N2,种子度量为1
 

r7(config-router)#area 2 nssa default-information-originate metric-type 1
 

修改度量类型

若一台设备同时学习到不同类型的缺省路由将进行选举:
1、内部由于外部,3 类优于 5、7 类。
2、5 和 7 先比度量,小优;若相同 5 类优于 7 类。