系列文章目录
文章目录
前言
开放式最短路径优先(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
- OSPFv2 基于 IPv4,扩展性是基于 LSA 的扩展,如果要在其他网络中使用
必须重新开发,比如 IPv6 中的 OSPFv3。 - 基于 IP 协议,可靠性无法保证,自身确认机制,认证机制保证其可靠性。
- 基于 IP 协议, IP 普及度扩大,OSPF 成为主流的 IGP 协议,企业网的工程师熟悉度较高。
2.路由类型
- 区域内,区域间,区域外;路由划分更加精细,更好对路由做控制
- type1:外部路由的开销=本设备到ASBR的开销+ASBR到外部路由的开销
type2:外部路由的开销=ASBR到外部路由的开销。
3.LSA
LSA的新旧比较
比较规则:
先比较序列号,序列号越高越新
序列号相同,比较校验和,校验和越高越新
校验和相同,比较存活时间(LS Age),存活时间为3600为最新
如果存活时间都小于45分钟,则选择存活时间小的放入LSDB中
如果上述条件都一样,则认为两条LSA相同,将本地的LSA保留。
4.网络类型
-
点到点
DA:224.0.0.5(即使设置neighbor也组播更新),一对路由器形成的邻接关系,无DR,每个子接口属于不同IP子网。 -
点对多点
DA:224.0.0.5(即使设置neighbor也组播更新),无DR,同一个子网,ptp和ptmp无法形成邻居(在ptmp中hello-interva 30 dead-interval 120) -
点对多点非广播
DA:单播,无DR,同一IP子网。 -
NBMA
DA:单播,选DR(DR和BDR必须与其他路由器相连),同一个子网IP地址,全网互联或部分互联。 -
广播
选举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 报文头部
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也不能冲突
图片如下:
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报文,进行数据库同步。
4.LSR报文
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验证对比
- ISIS的验证信息是在报文内容中,用TLV(10)来承载,OSPF的验证信息在OSPF头中。
- ISIS可以在接口下,区域下,路由域下分别启用验证,可以对不同报文开启验证。
而OSPF不能针对报文选择性开启验证,要么全部验证,要么都不验证。 - 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接口发送和接收协议报文