OSPF详解

系列文章目录


文章目录


前言

开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障。

一、ospf基本概念

1.基本概念

(1)什么是ospf?
OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。适用于IPv4的OSPFv2协议定义于RFC 2328,RFC 5340定义了适用于IPv6的OSPFv3。OSPF 基于 IP 协议,协议号 89

  1. OSPFv2 基于 IPv4,扩展性是基于 LSA 的扩展,如果要在其他网络中使用
    必须重新开发,比如 IPv6 中的 OSPFv3。
  2. 基于 IP 协议,可靠性无法保证,自身确认机制,认证机制保证其可靠性。
  3. 基于 IP 协议, IP 普及度扩大,OSPF 成为主流的 IGP 协议,企业网的工程师熟悉度较高。

2.路由类型

  1. 区域内,区域间,区域外;路由划分更加精细,更好对路由做控制
  2. type1:外部路由的开销=本设备到ASBR的开销+ASBR到外部路由的开销
    type2:外部路由的开销=ASBR到外部路由的开销。

3.LSA

LSA的新旧比较
比较规则:
先比较序列号,序列号越高越新
序列号相同,比较校验和,校验和越高越新
校验和相同,比较存活时间(LS Age),存活时间为3600为最新
如果存活时间都小于45分钟,则选择存活时间小的放入LSDB中
如果上述条件都一样,则认为两条LSA相同,将本地的LSA保留。

4.网络类型

  1. 点到点
    DA:224.0.0.5(即使设置neighbor也组播更新),一对路由器形成的邻接关系,无DR,每个子接口属于不同IP子网。

  2. 点对多点
    DA:224.0.0.5(即使设置neighbor也组播更新),无DR,同一个子网,ptp和ptmp无法形成邻居(在ptmp中hello-interva 30 dead-interval 120)

  3. 点对多点非广播
    DA:单播,无DR,同一IP子网。

  4. NBMA
    DA:单播,选DR(DR和BDR必须与其他路由器相连),同一个子网IP地址,全网互联或部分互联。

  5. 广播
    选举DR,所有路由器发信息到224.0.0.6(DR监听这地址),然后DR发送消息到224.0.0.5,DR与所有路由器建立邻接关系,所有路由器之间到2way状态(即使设置neighbor也组播更新)。同一个IP子网,全互联或部分互联。

特点总结:
1.点家族都不用选举DR和BDR
2.多路访问都需要选举DR和BDR
3.非广播都要手动指定邻居,非广播都是单播更新
4.neighbor命令后指定的cost只有在非广播下才有效
5.OSPF只用接口的第一IP地址建立邻居和形成邻接

5.路由器类型

(1) 区域内路由器(Internal Router):
该类路由器的所有接口都属于同一个OSPF区域。
(2)区域边界路由器ABR(Area Border Routers):
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。
ABR用来连接骨干区域和非骨干区域,可以是实际连接,也可以是虚连接。
(3)骨干路由器(Backbong Routers)
该类路由器至少一个接口属于骨干区域。
因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
(4)自治系统边界路由器ASBR(AS Boundary Routers)
与其他AS交换路由信息的路由器称为ASBR。 只要一台OSPF路由器引入了外部路由的信息,他就称为了ASBR,它有可能是ABR,区域路由器,不一定位于AS边界。

6.区域划分

分为三个区域,骨干区域、普通区域、特殊区域。
区域划分规则
①骨干区域必须连续
②非骨干区域必须和骨干区域直接相连
③区域边界在路由器上,接口划分到不同的区域

7.OSPF维护的3张表:

1)Neighbor Table:
确保直接邻居之间能够双向通信。

2)Topology Table:
LSDB(Link-State DataBase),同一区域的所有路由器LSDB相同。

3)Routing Table:
对LSDB应用SPF算法,选择到达目标地址的最佳路由放入路由表。

二、报文类型

1.OSPF报文头部

OSPF详解

ospf 报文头部
224.0.0.5是ospf设备预留的IP组播地址
224.0.0.6是ospf的DR/BDR设备预留的IP组播地址

头部字段:
①版本
②报文类型
③ospf 报文长度
④发送此报文的路由器router-id
⑤发送此报文的出接口所在区域
⑥校验和
⑦认证类型: Null(0),Simple(1)和 MD5(2)
⑧认证数据

Version(版本号),默认是V2 IPv6是V3
Message type :1、hello 2、DD 3、LSR 4 LSU 5、LSACK
Packet Length:报文长度
Source OSPF router:发送者的Router ID
Area ID:区域号:32位的点分十进制(IP地址格式)
Auth Type (认证类型) 0不认证 1 明文认证 2 MD5
Auth Data:认证的密码
验证OSPF报文头部是否合法
1、版本号为2
2、Area ID必须要和接收端的Area ID一致
3、认证类型和认证密码也必须一致

RID也不能冲突
图片如下:
OSPF详解

2.Hello报文

(1)Hello报文: 周期性的发送,用来发现建立,和维护OSPF邻居关系的
邻居关系:两台设备共享同一条链路,并且交互了一些参数(Hello报文),形成邻居关系(2-way状态)
(2)报文字段说明
Network Mask:发送Hello报文的接口的网络掩码。
只有在广播网络或者NBMA网络才有意义(在P2P,P2MP链路上是不不检测的

Hello Interval:发送Hello报文的时间间隔。单位为秒。
在广播网络中是10秒一次,在NBMA中是30秒一次

Options:标识发送此报文的OSPF路由器所支持的可选功能。

DN位:Down比特位,是用来防环的(MPLS VPN应用此字段)。3,5,7类LSA防环

O位:用来表明是否支持不透明LSA(9,10,11类LSA的)能力
DC位:当始发链路支持按需链路时该比特位会置位
MC位:是否支持MOSPF
N位/P位 N位表明是否支持7 类LSA,N=0 表明不接收和发送7类LSA
P位 用在NSSA LSA(七类LSA),是否做七转五
E位:能否接收外部路由(五类LSA) 默认E位是1,是可以接收外部路由
Rtr Pri:发送Hello报文的接口的Router Priority,用于选举DR和BDR。

Router Priority :路由器优先级,用于竞选 DR/BDR,缺省为 1

Router Dead Interval [sec] :宣告邻居路由器不继续在该网段上运行OSPF的时间间隔,单位为秒 hello 的失效时间=4*hello 时间

Designated Router :发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR路由器

Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。

Active Neighbor :活跃的邻居列表,使用 Router-id 标识

路由的优先级:用来选举DR和BDR的

Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。

ospf timer hello 5 /修改OSPf的Hello时间,如果修改了Hello时间,Dead时间会自动调整为4倍
ospf timer dead 40 /修改OSPF的Dead时间,如果修改了Dead时间,Hello时间不会自动调整

3.DD报文

DD报文是用来描述本地路由器的链路状态数据库(LSDB),在两个OSPF路由器初始化连接时要交换DD报文,进行数据库同步。
OSPF详解

4.LSR报文

OSPF详解
OSPF详解

5.LSU报文

用于向对方发送其所需要的LSA,有真正的 LSA

6.LSAck报文

用来对收到的LSA进行确认,只包含 LSA 的摘要信息

三、邻居关系

1. 影响邻居关系建立的因素

(1)Router id 不能冲突
(2)区域ID要一致
(3)认证类型及秘钥要一致
(4)Hello时间要一致
(5)Dead时间要一致
(6)Option 字段中的E和N bit位(区域类型)要一致
(7)MTU要一致,MTU在exstar状态要进行比较
(8)如果网络类型为广播或NBMA时,掩码要一致
(9)帧中继网络中要有brodcast关键字

2.状态机

Down
Attempt
Init
Exstart
2-way
Exchange
Loading

3.DR和DBR选举

(1)DR的选举是依靠 hello报文 ,交互hello报文完成DR/BDR的选举(有说法在 2-way状态后 才进行选举,路由器是进入 2-way状态后 才开始进行DR/BDR选举,因为这个状态下每台路由器的邻居ID都包含所有其他的路由器,这体现公平性, 实际实验中华为设备并没有 )
(2)DR选举目的:减少邻接关系数量、减少LSA的泛洪
(3)广播和NBMA需要选举.首先比较优先级,优先级高的获胜,然后比较router id 大的获胜。
(4)DR、BDR不具备抢占特性.DR-Other 之间是2-way的邻居关系
(5)DR的选举算法
三个集合:
DR集合:通过hello报文学习到的所有DR路由器;
BDR集合:通过hello报文学习到的所有BDR路由器;
DRother集合:没有被选举的DR/BDR的路由器(要求优先级不为0)
(6) DR的选举规则
如果 DR集合为非空,则从中选择最好的路由器成为DR;
否则 DR集合为空,将当前BDR提升为DR;
如果BDR集合也为空,则先从DRother集合中选出BDR,再将其提升为DR。
(7)BDR的选举规则
如果BDR集合为非空,则从中选择最好的路由器为BDR;
如果BDR集合为空,则从DRother集合中选择最好的路由器为BDR
(8)DR/BDR的选举过程
说明:生成邻居表并在接口维持三个集合:
DR集合{},BDR集合{},DRother集合{},这里的DRother指非DR非BDR且有资格成为DR/BDR的路由器。

判断状态:OSPF接口开启后,在hello报文中的DR/BDR字段都为0,此时DR/BDR未知,同时wait timer启动,时长4倍hello间隔,如果收到的hello报文里的DR/BDR字段为非空,则wait timer计时器停止,接受当前DR/BDR;如果wait计时超时后仍未学习到DR/BDR,则开始DR/BDR选举。

选举状态:
先从DRother集合选BDR,再把BDR提升为DR,然后再选择BDR。
每台路由器根据自己收到的邻居hello报文得知DRother集合,然后独立选择DR/BDR,其他路由器也同理。相同算法算出来的DR/BDR相同。

4.邻居关系的建立

Down:表示是没有收到邻居的任何信息
Init:表示收到了邻居的Hello,但在Hello包的邻居列表中没有看到自己
2-Way:表示双向通行已建立,没有建立邻接关系。如果广播或NBMA网络则要选DR/BDR

形成邻居关系的必要条件:
①接口类型为广播/NBMA则掩码要一致
②Hello/Dead时间要一致
③认证字段一致
④Hello中Option字段要保持一致
⑤区域要一致

5.邻接关系的建立

①邻居状态变为Exstart后,互发第一个DD报文,报文中包含序列号、I、M、MS
router id 大的作为主路由器。
②主从选举后,从路由器将Exstart改变为Exchange状态,然后发一个新的DD报文,报文包含LSDB摘要,序列号为主路由器的,M置0,MS置0
③主路由器收到后,将邻居状态从Exstart改变为Exchange状态,也发DD报文,包含LSDB描述信息,DD序列号加1
④从路由器要对主路由器发的DD报文做确认,序列号用的是主发过来的序列号,报文内容为空。(loading—full)
⑤从路由器状态变为Loading后,从向主发LSR报文,向主请求自身没有的链路状态信息
⑥主路由器收到LSR后,向从发LSU报文,报文中包含链路状态的详细信息
⑦从路由器收到LSU后,将邻居状态从Loading变为Full,然后向主回复一个Ack报文,对收到的LSA做确认。

四、OSPF路由

1.路由计算

(1)区域内SPF的算法
1类LSA:
每台路由器产生,只在产生区域泛洪
Link-- state ID :产生这条 LSA 的 router ID
ADV- router :产生这条 LSA 的 router-id
type :Router
flag :
V :置位表示该路由器链接了虚链路
B:置位表示该路由器是 ABR
E:置位表示该路由器是 ASBR
P2P:用于描述一个 P2P 的邻居关系
Stubnet :用于描述一个不存在邻居的网段信息
V- - link :描述虚链路邻居的信息
2类LSA

(2)区域间路由计算
区域间路由计算
3类LSA 计算区域间路由,ABR 产生,每经过一台 ABR,会修改 ADV-router 为当前 ABR
3类LSA的传递原则
*当 ABR 在骨干区域没有活跃的邻居,会选非骨干区域的 3LSA
*当 ABR 在骨干区域有活跃的邻居,不选非骨干的 3LSA
*从非骨干得到的 3LSA 不会传回骨干(防环机制)
*非 ABR 不会传递 3LSA
路由器在 area 0 没有活跃的接口,是ABR,但它不传 3LSA
路由器在 area 0 有活跃的接口或者邻居,是ABR,会传 3LSA

(3)区域外的路由计算
四类和五类 LSA 计算区域外路由,使用五类 LSA 描述外部路由的信息,使用四类LSA 描述该区域 ABR 到达 ASBR 的路径信息。
ASBR所在的区域不会有4类LSA
注意:当四类 LSA 和其辅助的五类 LSA 的转发地址同时存在时,优先使用五类 LSA 的转发地址。
当使用四类 LSA 和一类 LSA 都可以访问到ASBR 时,选择开销值小的。
五类 LSA,ASBR 产生,用于描述 ASBR 引入的外部路由信息,在区域间转发过程中不会改变 ADV-router 参数,所以需要四类 LSA 的辅助计算。
五类 LSA 中可以携带转发地址,用于优化路径,如果五类 LSA 携带转发地址,
那么转发地址的查找由优于 ADV-router。
转发地址产生的条件:
⚫ ASBR 去往外部路由出接口通告进 OSPF中
⚫ ASBR 去往外部路由出接口网络类型必须是 B/NBMA
⚫ ASBR 去往外部路由出接口不能是 silent-interface
静默接口。OSPF silence接口可学到路由信息。
OSPF静默接口不收发hello及建立邻居关系。
RIP silence接口能学到路由信息。不发RIP报文,可接收RIP的报文

(4)NSSA内外部路由计算
在NSSA中,可以引入外部路由,拒绝五类 LSA,所以 NSSA 的 ASBR 会将外部路由信息
以七类 LSA 的形式通告进 NSSA,
7类LSA没有转发地址的场景

(5)选路规则
选路规则:
1、2类LSA优于骨干3类LSA优于非骨干3类LSA优于5、7类type1的LSA优于5、7类type2 LSA
若都为type2则比较引入外部路由的开销,若外部路由的开销一直,则比较到达FA/ADV的开销。
若都为 type1 的比较外部路由开销+到达 FA/ADV 的开销。

4类LSA和5类LSA都可以单独出现。
不产生4类LSA的场景,只有一个区域的OSPF引入外部路由时就不会产生4类LSA。
不产生5类LSA的场景,空引入外部路由时。

2.控制OSPF路由信息

(1)汇总
目的:减少路由信息,从而减小路由表的规模,提高设备的性能
聚合方式:
ABR聚合。ABR对区域间3类LSA做聚合
ASBR聚合。ASBR对引入地址做5类LSA聚合。如果是NSSA区域,对引入的7类LSA做聚合

(2)缺省路由
缺省情况下,普通区域是不产生缺省路由。
在ASBR上手动配置,产生5类缺省,普通区域泛洪。STUB、完全STUB,ABR自动产缺省生3类,区域内泛洪。
完全NSSA,ABR自动产生缺省3类。
NSSA,不自动产生缺省,ABR自动产生7缺省 ,ABR上不需要有缺省的0.0.0.0。ASBR手动产生7缺省 ,但ASBR上要有缺省的0.0.0.0。

(3)路由引入

  • 过滤
    过滤工具:
    ①路由策略route-policy
    ②ACL做过滤
    ③前缀列表 prefix-list
    ④Filter-Policy
    Filter-Policy对接收和发布的路由进行过滤
    Route-Policy用于过滤路由信息以及为通过过滤的路由信息设置路由属性。
  • 过滤的角度
    路由过滤:
    对LSA计算出来的路由进行过滤。不对LSA过滤,学习到的LSA是完整的。
    针对路由表过滤
    Filter-Policy import/export
    ①对路由引入、发布时做路由过滤
  • LSA过滤
    基于接口过滤LSA
    ospf filter-lsa-out peer 对出方向的LSA进行过滤。
    针对LSA3类
    filter import/export
    abr-summary
    filter-policy import 对收到都路由做过滤
    注:在ABR上过滤路由进路由表,间接过滤3类LSA的作用
    针对LSA5类
    filter-policy export
    asbr-summary
    针对五类LSA,只能在ASBR上做过滤
    针对LSA7类
    filter-policy export
    asbr-summary
  • Mesh-Group特性
    将几条并行的LSA,合并为一个组,只泛洪一次
    前提条件:
    属于相同区域和OSPF进程,接口状态大于Exchange,只连着同一个邻居

五、快速收敛

①PRC部分路由计算
当路由发生变化时,只对发生变化的路由进行重新计算。

②通过智能定时器控制路由计算
控制LSA的生成与接收,达到对低频变化快速响应,对高频变化起抑制作用

③OSPF路由按优先级收敛

④配置接口发送Hello报文的时间间
缺省时,P2P、广播 Hello时间为10秒;P2MP、NBMA 为30秒

⑤配置相邻邻居失效的时间
缺省时,P2P、广播类型接口邻居失效时间为40秒,P2MP、NBMA为120秒

⑥配置Smart-discover
网络中邻居状态发生变化,设备不用等待Hello定时器到立刻向邻居发送Hello报文

⑦配置更新LSA的时间间隔
缺省时,LSA的更新时间间隔5秒

⑧配置接收LSA的时间间隔
缺省时,LSA的接收时间间隔1秒

六、防环机制

1.区域内路由防环

一类 LSA 和二类 LSA 通过 SPF 算法进行防环

2.区域间路由防环

是通过区域的设计原则来防环。
保证骨干区域连续及非骨干区域和骨干区域直接相连,
非骨干区域之间互访必须通过骨干区域,从而避免计算时出现环路
⚫ LSA1 、LSA2>骨干区3类>非骨干LSA3
⚫ 骨干LSA3 不会传回骨干区域。
⚫ LSA3 只能通过 ABR 进行泛洪,非 ABR 不会在区域间泛洪 LSA3。

3.区域外路由防环

LSA5 在整个 AS 内泛洪ink id,adv router,type 都不改变,特殊区域除外。
与ASBR同一区域的路由器通过 SPF 算法计算出到 ASBR的路径。
其他区域路由器通过4类LSA到ASBR的路径和开销

七、虚电路

应用场景:
非骨干没有与骨干相连的情况
不连续的骨干区域情况
两个非骨干区域(Area1-Area2-Area1,在Area2上使用虚链路连接Area1)
作为骨干区域的备用链路

八、特殊区域

1.Stub

拒绝外部路由(5类LSA)在区域内传播,通过ABR产生缺省3类去访问外部路由

3.完全Stub

拒绝域间(5类)域内(3类)LSA,
通过ABR访问区域外网络,ABR下放缺省3类LSA

3.NSAA

ASBR引入外部路由,拒绝5类LSA进入本区域,
当ASBR引入的外部路由走ASBR,其他区域外部走ABR,则 ABR产生7类缺省路由,
当所有的外部路由只通过ASBR到达。必须在ASBR上手工下放7类缺省
(NSSA不会自动产生缺省路由)
在ABR上无需有缺省路由0.0.0.0,默认产生Type7 LSA的缺省。
在ASBR上只有存在缺省路由0.0.0.0时,才会产生Type7 LSA的缺省路由。

4.完全NSSA

不允许区域间、区域外部路由,
访问其他区域时,通过ABR产生缺省3类LSA
访问外部路由时,通过ABR产生缺省7类LSA

九、安全性

1.认证

(1)认证特点
认证信息携带在 OSPF 的报头,所以会对每一个报文每一类报文都做认证
认证主要实现的是保证报文来源的可靠性,加密主要实现信息的私密性
(2)认证分类
接口认证:对收发报文认证
区域认证:对所有在该区域的接口做认证(包括区域0)
接口认证优于区域认证
(3)认证方式
Null
Simple
MD5
HMAC-MD5
(4)和CHAP验证的区别
1.CHAP是一次验证,OSPF是针对每个报文都验证,可以称为每次验证
2.CHAP可以单向验证,OSPF必然是双向验证
3 CHAP不论验证是否成功,都会有确认回复确认报文(ACK或NAK),OSPF验证没有确认报文,
成功则接收报文,失败则丢弃报文。
(5)和ISIS验证对比

  1. ISIS的验证信息是在报文内容中,用TLV(10)来承载,OSPF的验证信息在OSPF头中。
  2. ISIS可以在接口下,区域下,路由域下分别启用验证,可以对不同报文开启验证。
    而OSPF不能针对报文选择性开启验证,要么全部验证,要么都不验证。
  3. ISIS有关键里send-only关键字
    可以实现类似单向验证的功能。而OSPF一定是双向验证

2.GTSM

(1)概述
用TTL安全保护机制。GTSM通过检查IP报文头中的TTL值是否在一个预先定义好的范围内,对IP层以上业务进行保护。
(2)原理
启用了GTSM特性和策略的设备会对收到的所有报文进行策略检查。没有通过策略的报文丢弃或者上送控制平面,从而防止攻击的目的。
(3)实现手段
直连邻居:将单播协议报文的TTL设定为255。
多跳邻居:设定一个合理的TTL范围。
(4)使用范围
单播报文有效,组播报文无效。因为组播报文本身TTL值为255限制,不需要GTSM进行保护。
GTSM 不支持Tunnel的邻居

十、OSPF 稳定性

配置OSPF的协议优先级
存在多个动态路由协议时。
缺省时,OSPF路由的优先级为10。ASE时,为150。

配置接口传送LSA的延迟时间
缺省时,传输延迟时间为1秒。

配置邻接路由器重传LSA的间隔
缺省时,重传间隔时间为5秒。

配置Stub路由器
避免数据从此路由器转发。用于保护此路由器链路。
缺省时,路由器保持为Stub路由器的时间间隔是500秒。

禁止OSPF接口发送和接收协议报文

上一篇:直方图均衡化理解 (冈萨雷斯-数字图像处理第三版)


下一篇:asp.net导出excel示例代码