导图社区 OSPF
OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。
编辑于2021-07-02 10:13:35OSPFV2
名称:开放式最短路径优先,协议号:89,工作在网络层之上,基于链路状态的内部网关路由协议
报文信息
OSPF头部信息
版本
报文类型
报长度
router id
area id
checksum
Auth Type
Auth Data
hello
接口的掩码信息
hello时间间隔
option
DN
N
E
优先级
死亡时间
DR
BDR
ACTICE neighhbor
DBD
接口MTU:
option
DN
N
E
DBD描述(用于主从)
I
M
MS
LS TYPE
Link state ID
ADV ROUTER
校验和
序列号
长度
LSR
link type
Link state id
ADV router
LSU
LINK type
LINK ID
ADV ROUTER
校验和
序列号
长度
flags
LSA的数量
option
DN
N
E
LSACK
LINK type
LINK ID
ADV ROUTER
校验和
序列号
长度
option
DN
N
E
状态机
down
没有收到邻居的hello信息,但是可以发送邻居的hello信息
init
(在此状态下如果收到邻居的DBD报文也会直接到达2-WAY状态)收到邻居的给hello信息,但是没有在hello信息中发现自己的router id
atemp(NBMA网络存在)
单播发送了hello报文给邻居,但是没有收到邻居的hello。
2-way
互相收到对方的hello报文,并且在hello报文中携带自己的router id
交互hello
exstrat
exstart:发送的DD报文只做主从选举,而不会携带任何LSDB中LSA的头部信息,并表达自身是初次发送dd报文,后续还希望继续发送dd报文,并认为自身是Master,随机生成序列号,进行主从选举
exchange
交互链路状态数据库信息,并发送LSR请求和LSU更新
交互DD
loading
交互链路庄涛数据库的完整信息
full
链路状态数据库完成同步,并且进入临接状态
交互:LSR、LSU、LSACK
为什么要进行主从选举?
为了保证在传输的过程中报文传输的可靠性,在DD报文的发送过程中需要确定双方的主从关系,作为Master的一方定义一个序列号Seq,每发送一个新的DD报文将Seq加一,作为Slave的一方,每次发送DD报文时使用接收到的上一个Master的DD报文中的Seq
DR和BDR的选举
先比优先级(0-255,缺省为1,0不参选),越大越优,再比叫router id,越大越优
DR与BDR不具备抢占性
路由类型
区域内路由
区域间路由
区域外路由
外部路由的开销计算
TYPE-1=AS内开销+AS外部开销
TYPE-2(缺省)=AS外部路由开销
TYPE-1优于TYPE-2
OSPFV2的LSA信息
router LSA
LS Type
LI ID
ADV ROUTER
四种链路类型:
transnet
P2P
STUBNET
V-LINK
network LSA
LI ID
ADV ROUTER
LS Type
区域内的SPF算法
network-summary LSA
LI ID
ADV ROUTER
LS Type
区域间的路由计算
ABR-Summary LSA
LI ID
ADV ROUTER
LS Type
AS-external LSA
LI ID
ADV ROUTER
LS Type
区域外的路由计算
NAAS LSA
LI ID
ADV ROUTER
LS Type
NSSA区域的外部路由的计算
FA地址的作用
五类LSA的转发地址
七类LSA的转发地址
LAS的新旧比较
先比序列号,越大越优
若序列号相同,再比校验和,越大越优
若校验和也相同,则比较LS AGE的时间,若果有一条的存活时间为3600S,则认为最新,ls age 如果都不等于3600s, 则判断1s age的差值, 大于900s,则Ls age小的的最新, 小于900s则认为相同的LSA.
如何唯一标识一条LSA
LS TYPE
LS ID
ADV ROUTER
网络类型
广播型
以组播发送形式:hello、lsu、lsack(其中hello间隔10,老化:40)
单播发送:DBD、LSR
P2P
都是以组播发送:hello、DBD、LSR、LSU、LSACK(其中hello间隔:10,老化:40)
P2M2
组播发送:hello,hello时间为30,老化:120
单播发送:DBD、LSR、LSU、LSACK
NBMA
都是以单播发送:hello、DBD、LSR、LSU、LSACK(其中hello间隔:30,老化:120)
区域划分
骨干区域
骨干区域必须连续
普通区域
普通区域必须与骨干区域相连
特殊区域
不能是骨干区域
路由器类型
IR
所有接口都在同一个OSPF区域的路由器
BR
至少有一个接口与骨干区域相连
ABR
至少有两个以上的接口在不同的区域,并且有一个接口必须在区域0
ASBR
引入外部路由的路由器,不一定是AS边界路由器
FA地址
作用:用于外部路由的路径优化
五类FA地址的产生条件
1、自身去往外部路由的接口宣告进OSPF中
2、去往外部路由的出接口必须是B/NBMA类型
3、去往外部路由的出接口必须是静默接口
七类FA地址的产生条件
1、若是和五类的场景一致,则产生条件一致
2、若不一致;
1、被引入的路由的出接口使能在同一个NSSA区域
2、该出接口为广播型网络
FA地址的取值:1、被引入路由的下一跳地址;2、加入进程的loopback接口;3、第一个UP的物理接口
OSPFV3
OSPFV2基于网络层,OSPFV3基于数据链路层
OSPFv3和OSPFv2相同点
●网络类型和接口类型。
●接口状态机和邻居状态机。
●链路状态数据库(LSDB)。
●洪泛机制(Flooding mechanism)。
●五种协议报文: Hello, DD, LSR, LSU, LSAck。
●路由计算 基本相同。
改进
IPv6地址的变化 对OSPFv3的影响 IPv6地址扩大为128位 LSA长度增加 链路本地(Link-Local)地址 使用Link-local地址进行报文发送(VLink需要使用全球单播地址) 接口可以配置多个全球单播地址(Global Unicast IPv6 address) 运行于每个Link进行通讯,不再基于subnet IPv6验证扩展头 使用扩展头进行报文的认证和加密
OSPFV2与OSPFV3的不同点
1、基于链路运行
OSPFV2是基于网络运行的,两台建立邻居的接口必须在同一个子网范围内
OSPFV3是基于链路运行的,一个链路可以划分为多个子网,不需要网段相同,只要在通过个链路就可以通信
2、使用链路本地地址
OSPFV3使用链路本地地址作为发送报文的下一跳
链路本地地址只在本链路有效,不能被路由
3、链路支持多实列复用
OSPFV3支持在统一链路上运行多花个实列,实现链路复用,并节约成本
OSPFV2在同一链路上通过认证也可以达到影响邻居建立的效果
4、通过router id唯一标识邻居
OSPFV2中点到点和虚连接网络是使用router id标识邻居,而广播或NBMA网络使用接口的IP地址来表示邻居路由器
OPSFV3统一使用router id来标识邻居
5、认证的变化
OSPFV2的认证字段在OSPF header中,但是在OSPFV3中认证字段在IPV6报文的扩展包头中
checksum的变化:OSPFV2中报头携带校验和字段,但是在OSPFV3中则使用的IPV6的标准的校验和
6、STUB区域的支持
OSPV2的stub区域不支持对未知类型的LSA的泛洪
OSPFV3支持对未知类型的LLSA的泛洪,但是泛洪的前提条件是泛洪范围必须是区域或链路并且U bit位没有置1 。
7、报文的不同
相较于OPSFV2中的报文,OSPFV3中删除了认证相关的报文,并且替换成了instance id,保留位:0
相较于OSPFV2相比,OSPFV3的HELLO变化:1、网络掩码改成了接口ID;
8、option字段的不同
OSPFV2的option存在于hello、DBD以及每个个LSA中
OSPFV3中的option只存在于hello、DBD以及1、3、2、8类LSA中
新增字段:
R:用来标识是都具备转发能力的路由器,如果置0,则代表该节点的路由信息将不会参与计算
V6:如果V6 bit置0,则代表路由器或者链路不参与IPV6的路由计算
9、LSA的类型和内容的不同
LSA TYPE:
在OSPFV2中长度位8bit,主要用于知名LSA的类型
OSPV3中LS-TYPE改为16bit,并且优四个不同的字段:
U
描述路由器正对一个未知的LSA的处理方式,当U bit位置0时,表示吧未知的LSA当作具有链路本地范围的LSA一样处理,u bit置1表示按照S2/S1的方式处理
S2/S1
共同标识了LSA的泛洪范围,00标识在链路本地泛洪,01标识在整个区域泛洪,10标识在整个AS内泛洪,11保留
lsa funcyion code
LSA的类型编码
LSA ID
前缀标识方法的变化
在OSPFV2中,使用前缀+掩码的方式标识,并且在不同的LSA中的未知也不相同
在OSPFV3中使用前缀三元组开标识网络前缀
prefix=length
prefix-option
NU
非单播位,1字节,置1表示前缀不会纳入IPV6的单播路由计算中
LA
本地地址位,置1表示这个前缀时=是路由器的一个接口地址
MC
组播位,置1表示该前缀纳入组播计算中
P
传播位,并表示在NSSA区域的前缀需要被传播出去就置位
prefix
LSA
一类
router LSA
Type:router
LS-ID:产生此LSA路由器的router id
ADV:产生LSA此路由器的router id
router LSA
Type:router
LI-IS:本地唯一的32位整数
ADV:路由器自身的RID
相较于OSPFV2的变化
二类
network LSA
type:network
LS-ID:DR的接口IP地址
ADV:DR的RID
network LSA
type:network
LS-ID:DR的接口ID
ADV:DR的RID
相较于OSPFV2的变化
network mask改成interface ID,
三类
network summary LSA
TYPE:NET-SUM
LS-ID:区域间的网络前缀
ADV:ABR的RID
inter area prefix LSA
TYPE:inter area prefix
LS-Id:本地唯一的32位整数
ABR的RID
相较于OSPFV2的变化
四类
ASBR summary LSA
type:ASBR-SUM
LS-Id:ASBR的RID
ADV:ABR的RID
inter area router LSA
type:inter area router LSA
LS-ID:ASBR的RID
ADV:ABR的RID
相较于OSPFV2的变化
五类
ASexternal LSA
type:AS-external LSA
LS-ID:区域外网络前缀
ADV:ASBR的RID
ASexternal LSA
type:AS-external LSA
LS-ID:本地唯一的32位整数
ADV:ASBR的RID
相较于OSPFV2的变化
七类
NSSA LSA
type:NSSA
LS-ID:NSSA区域的网络前缀
ADV:NSSA区域的ASBR的RID
NSSA LSA
type:NSSA
LS-ID:本地唯一的32位整数
ADV:NSSA区域的ASBR的RID
相较于OSPFV2的变化
八类
OSPFV2
link LSA
TYPE:link LSA
LS-ID:所在的接口ID
ADV:本链路路由器的RID
九类
OSPFV2
intra area prefix LSA
type:intra area prefix LSA
LS-ID:本地唯一的32位整数
ADV:原v2中,需要描述Stub或DR路由器的RID
osfp的2类没有优先级,8类和2类没有开销
v-link
作用
1、修复不合理的区域规划,网络改造期间的临时使用
2、区域0的备用链路,防止区域0不连续
3、路径优化
使用场景
1、用于连接非直连的非骨干区域
2、用于连接不连续的区域0
3、用于两个非骨干区域的连接
4、用于区域0的备用链路
5、用于路径优化
状态检测(v-link上的邻居如何维护?)
1、周期性的单播发送hello包维护邻居关系
2、如果v-link的SPF树断,则v-link会自动端
3、本段v-link接口出现故障V-LINK会立即失效
4、若是ospf邻居的间接故障,需要等待hello dead(40S)时间
虚连路的目标地址如何确定?
1、以本段为根计算一颗去往对端的SPF数
2、以对端为根计算以可去往本段的SPF树
缺点
1、易出现环路
2、不能将骨干区域的汇总发布到虚链路穿越的区域
认证
只要对区域0做了认证就需要在虚链路上做认证
虚链路与隧道的区别:
报文的封装不同:
虚连接封装在IP报文中,并且经过单播发送
隧道:封装在隧道中,本质是通过组播发送
虚链路:要求在同一区域内且路由可达,不能跨区域建立
隧道:只要路由可达就可以跨区域建立
认证
认证方式
接口认证
区域认证
接口认证优于区域认证
认证类型
空认证
不做任何认证
明文认证
认证密码通过明文发送,安全性比较第
密文认证
认证通过hash计算得到的hash值,安全性高
认证特点
OSPF的认证在头部,所有对每个报文都会做认证
认证与加密的区别
认证:
1、保证了报文的来源的可靠性
2、防止报文中途被修改和伪造
3、报文内容是明文
加密
1、对报文信息的加密,并且只能够被揭秘的设备处理
2、无法轻易的获取报文内容,并且可以被解密
OSPFV2只支持认证,不支持加密
特殊区域
stub区域
拒绝5类LSA,并由ABR形成一条三类的缺省路由
toyally stub区域
拒绝三类和五类,并由ABR产生一条3类的缺省路由
NSSA区域
拒绝其他区域的5类LSA,并由ABR产生一条七类的缺省,并且本区域的ASBR可以产生少量的外部路由
totally NSSA区域
拒绝3类和5类LSA进入,并且由ABR产生一条3类的缺省用于访问区域间路由,由ABR产生的7类缺省去往其他区域的外部路由
注意:
骨干区域不能是特殊区域
特殊区域的每台路由器都需要配置
stub区域不能由ASBR
特殊区域不能穿越虚链路
优/缺点
优:减少LSDB的规模,减少路由震荡
缺:容易引起次优路径
OSPFV2的防环
区域内防环
一类和二类进行SPF算法进行防环
区域间防环
骨干区域必须连续,非骨干区域必须与骨干区域,非骨干区域之间的路由传递必须经过骨干区域
区域外部路由防环
5类LSA在整个AS内部泛洪,并且link type,LINK id,ADV router不会改变
与ASBR在同一个区域则可以直接通过SPF算法防环
区域间:通过4类的LSA进行防环与3类LSA类似
OSPFV2的过滤
外部路由的过滤
五类和七类的路由过滤只能ASBR上做过滤才有效
区域间的路由过滤
三类的LSA只能在ABR上过滤才可以生效
路由过滤
在ospf进程成进行路由过滤
接口视图的LSA泛洪过滤
OSPFV2的默认路由
普通区域
通过手动配置产生一条5类的缺省路由,(路由表中有缺省路由时才会产生缺省路由)
stub区域
由ABR自动产生一条3类的缺省路由,通告到整个STUB网络中
toyally stub区域
由ABR自动产生一条3类的缺省路由,通告到整个STUB网络中
NSSA区域
由ABR自动产生一条7类的缺省路由,通告到整个STUB网络中
在ASBR上可以手动配置产生一条七类的缺省路由
totally NSSA区域
有ABR自动产生一条七类的缺省,通过单整个totally nssa区域
有ABR自动产生一条三类的缺省,通过单整个totally nssa区域
缺省路由的应用于一下两种情况:
由ABR产生的三类缺省路由,用于知道区域内的路由进行域间的路由转发
由ASBR产生的五类或七类缺省用来指导AS内部的路由进行AS外部的路由转发
缺省路由的发布原则
路由器只有有对外的出口时才能发布缺省
如果自身产生了缺省就不会在学习和计算起的缺省路由(LSA)
外部缺省的路由发布不能依赖ospf进程内部路由,因为内部路由的下一跳在AS内,不能知道AS的路由转发
OSPFV2的快速收敛
增量最短路径优先算法I-SPF
只有第一次计算所有的节点
只计算变化的节点
部分路由计算PRC;
根据I-SPF计算相互的SPT路径计算路由
只针对变化的路由进行计算
智能定时器
在频繁进行路由计算的网络中,根据配置和衰减指数动态调整两次路由计算的时间间隔,可以减少路由的计算,降低CPU的消耗
在不稳定的网络中,智能定时器会动态调整时间间隔,在时间间隔内不会产生LSA或者随接受的LSA进行处理
按优先级收敛(仅本地有效)
通过使用策略匹配出路由,然后设置不同的优先级,是路由器可以优先计算该路由(仅本地有效)
OSPF的选路
1、一类、二类优于三类LSA
2、骨干区域的三类优于非骨干区域的三类
3、一类、二类、三类优于五类和七类
4、五类、七类LSA中的type-1优于type-2
5、如果都是type-2:比较引入外部路由的开销,引入是开销相同则比较到FA/ADV的开销
如过都是type-1:比较v外部路由开销+到达FA/ADV的开销
影响ospf邻居建立的因素
1、router id要一致
router id不能冲突的原因:
1、不能建立邻接关系,因为要选举主从,如过不能选举主从,将不会达到邻接关系
2、无法计算SPF树,因为LSDB中只能存在一条相同一类LSA,谁先到到谁的选谁
3、若者两个路由器有一一台是ASBR,会导致路由震荡
2、区域id要一致
3、广播和NBMA的网络掩码要一致
4、认证类型和认证密钥要一致
5、hello时间间隔要一致
6、老化时间要一致
7、option中的N、E bit位要一致
8、接口MTU要一致
9、帧中继网络要有brodcast关键字