一、OSPF基础
1、RIP中存在的问题
RIP中最大跳数为15,不能适应大规模组网;周期性发送全部路由信息会占用大量的带宽资源;路由收敛速度慢;以跳数作为度量值;存在路由环路可能性;每隔30秒更新。
2、OSPF协议特点
没有跳数限制,适合大规模组网;使用组播更新变化的路由和网络信息 ;路由收敛快,可以触发更新;以COST作为度量值;采用SPF算法有效避免环路;每隔30分钟周期性更新------LSA;在互联网上大量使用,是运用最广泛的路由协议
注意:OSPF传递的是拓扑信息和路由信息,RIP传递的是路由表
3、OSPF三张表
邻居表:记录邻居状态和关系
拓扑表:链路状态数据库(LSDB)
路由表:记录由SPF算法计算的路由,存放在OSPF路由表中
4、OSPF数据包
OSPF报文直接封装在IP报文中,协议号89
类型:该OSPF报文的类型------该字段的值与报文类型的对应关系是:1-Hello;2-DD;3-LSR;4-LSU;5-LSAck。
报文长度:整个OSPF 报文的长度。
路由器ID:路由器的OSPF Router-ID。
区域ID :该报文所属的区域ID,这是一个32bit 的数值。
校验和:用于校验报文有效性的字段。
认证类型:指示该报文使用的认证类型。
认证数据:用于报文认证的内容。
1. hello:
作用:用来周期保活的用来发现和建立邻居关系。
网络掩码:一旦路由器的某个接口激活了OSPF,该接口即开始发送Hello报文,该字段填充的是该接口的网络掩码。两台OSPF 路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码,否则影响邻居关系建立。
Hello间隔:接口周期性发送Hello报文的时间间隔(单位为s)。两台直连路由器要建立OSPF邻居关系,需确保接口的Hello Interval相同,否则邻居关系无法正常建立。
可选项:该字段一共8bit,每个比特位都用于指示该路由器的某个特定的OSPF 特性。Options字段中的某些比特位会被检查,这有可能会直接影响到OSPF邻接关系的建立。(特殊区域的标记)
路由器优先级:路由器优先级,范围:0-255,默认是1,也叫DR优先级,该字段用于DR、BDR 的选举
路由器失效时间:在邻居路由器被视为无效前,需等待收到对方Hello报文的时间(单位为s)。两台直连路由器要建立OSPF 邻居关系,需确保双方直连接口的Router Dead Interval相同,否则邻居关系无法正常建立。缺省情况下,OSPF路由器接口的Router Dead Interval为该接口的Hello Interval的4倍。
指定路由器:网络中DR的接口IP地址。如果该字段值为0.0.0.0,则表示没有DR,或者DR尚未选举出来。
备份指定路由器:网络中 BDR的接口IP地址。如果该字段值为0.0.0.0,则表示网络中没有BDR,或者BDR尚未选举出来。
邻居:在直连链路上发现的有效邻居,此处填充的是邻居的Router-iD,如果发现了多个邻居,则包含多个邻居字段。
2. DBD(数据库描述报文):
作用:仅包含LSA摘要
接口最大传输单元:接口的MTU。
可选项(Options):路由器支持的OSPF可选项。
DD报文置位符:
I:init位,I=1,这是第一次报文的第一个DD报文,没有携带任何LSA的信息
M:more位,M=1表示后续还有DD报文
MS:master位,MS=1,表示本端为主
DD序列号:DD报文的序列号,在DD报文交互的过程中,DD序列号被逐次加1,用于确保DD报文传输的有序和可靠性。值得注意的是,DD序列号必须是由Master路由器来决定的,而Slave路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文。
LSA头部:当路由器使用DD报文来描述自己的LSDB时,LSA的头部信息被包含在此处。一个DBD报文可能包含一条或多条LSA的头部。
3. LSR:
作用:请求自己没有的或则比自己更新的链路状态详细信息
LSA三元组:链路状态类型,链路状态ID,通告路由器 ------通过着三个参数可以唯一的标识出一条LSA
4. LSU: 链路状态更新信息
作用:把对方所需的几条LSA的详细信息,打包成一条LSU发给对方
一个LSU报文可以包含多个LSA
当路由器感知到网络发生变化时,也可以触发LSU报文的泛洪,以便将该变化通知给网络中的其他OSPF 路由器。
对LSU的确认:报文中包含着路由器所确认的LSA的头部(20byte)
5、OSPF工作过程
1. 确认可达性,建立邻居
2. 邻接路由器之间交换链路状态信息,实现区域内链路状态数据库同步
3. 完整信息同步, 完全邻接关系建立
6、OSPF的状态机
1. 邻居关系开始建立
down:关闭状态(稳定状态),这种情况处于手动指定邻居的情况下,发送hello包之后进入下一个状态
INIT:初始化状态,收到对方的hello报文,但没有收到对方的hello确认报文
Attempt:一般不会出现,只出现在NBMA网络中,发出hello,但收不到对方的hello包
2-way:双方互相发现,邻居状态稳定,并确认了DR/BDR的角色;
当选举完毕后,就算出现一台优先级更高的路由器,也不会替换成新的DR\BDR;
需要原DR\BDR失效,或重置OSPF进程才会成为新的DR\BDR;
2-way的前提:Router-id无冲突,修改router-id需要重置ospf进程使生效;掩码长度一致(MA网络中);区域ID一致;验证密码一致;hello-time一致;dead-time一致;特殊区域类型一致;
2. 邻接关系开始建立
Exstart:交换开始状态;发送第一个DD报文,但不发送LSA摘要,仅用于确定LSDB协商的主从,ROUTER-ID大的成为master
Exchange:交换状态;发送后续DD报文,用于通告LSDB摘要
Loading:读取状态,进行LSA的请求、加入和确认
Full:邻接状态(稳定状态),两端同步LSDB;
FULL的前提:两端MTU一致,否则可能卡在EXSTART\Exchange状态
能够计算路由的前提:两端网络类型一致,否则邻居状态full,但无法学习路由
7、LSDB的更新
网络正在第一次收敛的时候,路由器会把自己LSDB表中的所有LSA发给邻接路由器。
8 、OSPF开销计算
1. 参考带宽:
默认是100M;计算开销的基准带宽值;参考带宽仅本地有效;建议把网络中最高链路带宽设置为参考带宽否则千兆链路和百兆链路的开销值都是1,无法判断哪条线路最优。
2. 计算方法:
链路带宽大于等于参考带宽 cost=1;反之,cost=参考带宽/链路带宽(Mb)
注:在路由器上千兆以太网、百兆以太网、十兆以太网的缺省OSPF链路开销值分别是:1、1、10
9. OSPF的区域划分
1、区域产生背景
-
OSPF路由器在同一个区域中泛洪LSA。为了确保每台路由器都拥有对本区域的网络拓扑的一致认知,LSDB需要在区域内进行同步。
-
如果OSPF域仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸多问题。
2、分区好处:
减少LSA泛洪范围;提高网络扩展性,有利于组建大规模的网络;
3、区域类型:
骨干区域;非骨干区域;特殊区域:优化路由表、优化LSDB表**;**
多区互连原则:非骨干区域与非骨干区域不能直接相连;所有非骨干区域必须与骨干区域相连;此设计是为防止区域间环路;区域内依靠SPF算法防环
4、OSPF的路由器类型
区域内路由器(IR):所有接口在同一区域
骨干路由器(BR):有接口都在骨干区域
区域边界路由器(ABR):连接骨干区域和非骨干区域
自治系统边界路由器(ASBR):连接外部自治系统并引入外部路由;ASBR设备上要运行多种路由协议或者运行同一个路由协议的多个进程
二、LSA的头部
LSA是OSPF的一个核心内容,如果没有LSA,OSPF是无法描述网络的拓扑结构及网段信息的,也无法传递路由信息,更加无法正常工作,在OSPFV2中,需要我们掌握的主要有6种。
链路状态老化时间:指示该条LSA的老化时间,即它存在了多长时间,单位为秒,
1800s周期归0,触发当下归0
MAX age( 3600S)------ 当一条LSA的老化时间到达最大老化时间时,将被认定失效,将从本地的LSDB中删除掉。
1. 可选项:
每一个比特位都对应了OSPF 所支持的某种特性和hello包中的一样,包含特殊区域标记
2. 链路状态类型:
指示本条LSA的类型。每种 LSA用于描述OSPF 网络的某个部分,所有的LSA类型都定义了相应的类型编号。
3. 链路状态ID:
LSA的标识。不同的LSA类型,对该字段的定义是不同的。
4. 通告路由器:
始发路由器, 产生该LSA的路由器的Router-ID
5. 链路状态序列号
该LSA的序列号,该字段用于判断LSA的新旧或是否存在重复
链路状态校验和:校验和会参与LSA的新旧比较。当两条LSA三元组相同,并且序列号也相同时,则可以使用校验和比较,和大的认定为新。
长度:一条LSA的总长度
6. 6种类型的LSA
1、type1-LSA:
(1)定义:router LSA
-
描述区域内部与路由器直连的链路信息
-
仅在区域内部传输
-
每台路由器都会产生Type1 LSA
(2)内容:
LS ID:发出该LSA的路由器的router-id
Adv Rtr:始发路由器用来产生该LSA的路由器的router-id
链路ID:不同的链路类型对链路ID值的定义是不同的。
链路数据:不同的链路类型对链路数据的定义是不同的。
link-type:链路类型用来描述该接口的二层类型
2、type2-LSA:
(1)定义:
-
network LSA
-
描述区域内的MA网络(广播网络、NBMA网络)链路的路由器及掩码信息
-
仅在区域内部传输
-
只有DR才会产生type2_LSA
(2)内容:
LS ID:该网段的DR的IP地址
Adv Rtr:该网段DR的router-id
network mask:该网段DR的IP地址的子网掩码信息
3、type3-LSA:
(1)定义:
-
Summary LSA(聚合LSA)
-
在整个OSPF区域内,描述其他区域的链路信息
-
以子网形式传播,类似直接传递路由
-
只有ABR会产生type3_LSA
(2)内容:
LS ID:其他区域某个网段的网络地址
SubAdv Rtv:通告该LSA的ABR的router-id
net mask:该网段的子网掩码
注:3类LSA的传递范围在ABR相邻的单区域中进行,跨区域传递时,需要进行通告者的转换,通告者变了,则将不是同一条LSA
4、type4-LSA:
(1)定义:
-
Asbr-summary LSA
-
描述ASBR的信息
-
只有ABR才会产生TYPE4 LSA
(2)内容:
LS ID:ASBR的router-id
Adv Rtv:通告描述该ASBR的ABR的router-id
注:在ASBR本区域的内部路由器,不会产生到达该ASBR的4类LSA
5、type5-LSA:
(1)定义:
-
AS_extenal LSA,传递域外 路由信息
-
描述AS外部引入的路由信息,会传播到所有区域(特殊区域除外)
-
只有ASBR才会产生type5_LSA
(2)内容:
LS ID:外部路由的目的网络地址
Adv Rtv:引入该网络路由的ASBR的router-id
net mask:引入的该目标网段的子网掩码
6、type7-LSA:
(1)定义:
-
NSSA LSA
-
描述在NSSA区域引入的AS外部路由信息
-
只会出现在NSSA和totolly NASS区域,不能进入area 0
-
7类LSA生成路由信息的标记位,O_NSSA,优先级150
(2)内容:
LS ID:外部某个网段的网络地址
Adv Rtv:引入该网络路由的ASBR的ABR的router-id
注:区域内传拓扑,区域间传路由
三、OSPF的网络类型
1、定义:
对于不同的二层链路类型的网段,OSPF会生成不同的网络类型
不同的网络类型,DR\BDR选举,LSA细节,协议报文发送形式等会有所不同
2、类型:
(1)NBMA
- 非广播多点可达网络,帧中继默认的网络类型
- 单播发送协议报文,需手动指定邻居
- 需要选举DR\BDR,为了减少LSA的泛洪,减少网络负担
- hello-time 是30秒,dead-time 是120秒
(2)P2MP
- 点到多点网络,由其他网络类型手动更改;
- 模拟组播发送协议报文,需要手动指定邻居;
- 不选举DR\BDR
- hello-time 是30秒,dead-time 是120秒
(3)broadcost
- 广播网络,以太网默认的网络类型
- 组播发送协议报文
- 需要选举DR\BDR
- hello-time 是10秒,dead-time 是40秒
(4)P2P
- 点到点网络,ppp默认网络
- 组播协议发送报文
- 不选举DR\BDR
- hello-time 是10秒,dead-time 是40秒
- 环回接口:华为设备定义为P2P类型,但实际上无数据收发。环回接口默认学习32位的主机路由
四、OSPF不规则区域类型
产生原因:区域划分不合理,导致的问题
1、非骨干区域无法和骨干区域保持连通
2、骨干区域被分割
1. 造成后果:
非骨干区域没和骨干区域相连,导致ABR将不会帮忙转发区域间的路由信息。非骨干区域无法和骨干区域保持连通
2. 解决方案
非骨干区域无法和骨干区域保持连通
-
虚连接:
-
路由引入(重发布):
重发布**:** 在运行不同协议或不同进程的边界设备(ASBR --- 自治系统边界路由器,协议边界路由器)上,将一种协议按照另一种协议的规则发布出去
骨干区域被分割
特征:只能在两个区域的边界路由器上配置;在中间区域的区域视图下配置;只能穿越一个区域;
注:虚连接不能穿越stub区域、NSSA区域
提示:虚连接的配置会给路由器带来一些额外的负担,尽量在早期规划的区域的时候,合理规划
五、特殊区域
定义:特殊区域是指人为定义的一些区域,它们在逻辑中一般位于ospf区域的边缘,只与骨干区域相连。
特殊区域的条件:不能是骨干区域;不能存在虚链路;
1、STUB区域:末梢区域
(1)定义:末梢区域,适用于区域中路由器性能较低,目的是为了减少区域中路由器的路由表规模以及路由信息传递的数量。不希望接收大量的AS以外路由
(2)特征:不接受4类5类LSA;不允许出现ASBR;区域0不能被配置为STUB区域;
虽然拒绝学习域外路由信息,但依然有访问域外路由的需求;故会由ABR设备自动下发一条指向骨干区域的3类缺省;
2 、totally stub区域:完全末梢区域
(1)定义:完全末梢区域,拒绝学习域外和其他区域的路由信息
(2)特征:不接受3类4类5类LSA;不允许出现ASBR;区域0不能被配置为totally STUB区域;
虽然拒绝学习域外路由信息,但依然有访问域外路由的需求;故会由ABR设备自动下发一条指向骨干区域的3类缺省;
3 、NSSA区域:非纯末梢区域
(1)定义:非纯末梢区域,是STUB区域的变形,拒绝学习域外(主要是5类)路由信息,但需要引入后面的域外路由信息
(2)特征:不接受4类5类LSA;本区域引入的外部路由以7类LSA存在;本区域的ABR会 把引入的7类LSA转换为5类 LSA通告给其他区域;华三中:NSSA区域的默认路由需要手动配置下发,在ABR下发的是7类默认路由的LSA;华为中:自动生成一条指向骨干区域的7类缺省,在ABR下发的是7类默认路由的LSA;区域0不能被配置为NSSA区域; 存在asbr设备
4 、totally NSSA区域:完全非纯末梢区域
(1)定义:完全非纯末梢区域
(2)特征:不接受3类4类5类LSA;本区域引入的外部路由以7类LSA存在;本区域的ABR会把引入的7类LSA转换为5类 LSA通告给其他区域;本区域默认路由由ABR发送3类LSA产生;区域0不能被配置为totally NSSA区域
六、OSPF路由聚合
1、定义
OSPF路由只能手动聚合(LSA),将具有相同前缀的路由信息聚合后发布到其他区域
2 、聚合条件:
针对3类、5类、7类LSA;OSPF路由只能手动聚合(LSA)
3、聚合类型:
(1)ABR聚合(3类)
-
把一个区域的LSA聚合后发布到相邻区域;abr设备及其下游区域的设备中的LSDB表的LSA也被聚合了
-
在传入区域的区域试图配置
-
ABR聚合不会影响ABR本机的OSPF的路由条目,只会影响相邻区域的下游路由器的OSPF路由表的路由条目;
-
ABR 聚合后,会在ABR本机上产生一条该聚合的黑洞路由,来防止环路出现;
(2)ASBR聚合(5类、7类)
- 把引入的AS外部路由聚合后发布到OSPF内部;对于OSPF的ASBR设备LSDB表的影响只学习到了聚合后的聚合,对于下游设备的LSDB表有影响,只学到聚合后的LSA
- 在协议视图配置.命令:[r4-ospf-1]asbr-summary 172.16.0.0 255.255.252.0
- 只对5类、7类的LSA 进行聚合;
- ASBR聚合不会影响ASBR本机的聚合后的路由,对于下游设备的路由表有影响,下游设备只学到聚合的路由。
- ASBR 聚合后,会在ASBR本机上产生一条该聚合的黑洞路由,来防止环路出现;
注:使用聚合实现路由过滤,在聚合后加入not-advertise参数
4. OSPF安全特性
1、OSPF报文验证:
区域验证模式:在区域下配置一致的密码才能加入同一个区域。
接口验证模式:链路两端的接口必须配置一致的密码才能建立邻居关系
虚链路认证(本质接口认证)
注:接口认证高于区域认证,只要接口验证通过,区域验证哪怕失败,也不影响邻接关系建立
2、禁止端口发送OSPF报文:
为了使OSPF路由信息不被其他路由器获得,配置静默接口
3、路由过滤
(1)特点:影响本机及下游路由器的OSPF表的学习,过滤本机及下游路由器的LSDB表中的LSA,在协议视图下配置进方向
5. 加快收敛
注:两端网络类型不一致,导致邻居关系建不起来
6. 缺省路由
(1)3类缺省:特殊区域自动下发,优先级10
(2)5类缺省:手工配置,优先级150
(3)7类缺省:自动下发,通过配置特殊区域自动下发,优先级150-----nssa;手工下发,优先级150