OSPF
OSPF
简介
属于IGP :内部网关协议
链路状态型协议
使用SPF算法计算一个节点到其他节点的最短路径(SPF算法是基于Dijkstra算法的最短路径计算算法)
组播地址: 224.0.0.5/224.0.0.6
内外部优先级 10 / 150
所有的OSPF报文都有统一的头部,长度为24byte
OSPF支持三种类型的认证方式,分别是空认证、简单口令认证、密文认证
OSPFv3的Router-ID需要手工指定
OSPF运行在ip协议上,协议号为89
使用Silent-Interface的接口,不会接收和发送OSPF报文,但是直连路由可以通告到OSPF
一. OSPF 的接口网络类型
OSPF支持区域认证和接口认证两种方式,若同时配置这两种认证方式,则接口认证优于区域认证
1.P2P(点到点)
传输介质为(PPP,HDLC,FR点对点子接口) OSPF默认网络类型为P2P
以组播形式发送所有报文
不对双方IP地址是否在同一网段进行检测
邻居发现:自动
DR/BDR选举:不选举DR和BDR
Hello/Dead时间间隔:10s/40s
2.P2MP(点到多点)
指一个接口通过点到多点的网络与多台路由器相连
邻居发现:自动
DR/BDR选举:不选举DR和BDR
Hello/Dead时间间隔:30s/120s
Next-hop:包含所有节点的32位主机路由
3.MA(多路访问网络)
在广播类型的网络中,一个网段中必须存在DR,但是可以没有BDR
在广播网络中,必须选举DR和BDR。没有DR或BDR中的任何一个,广播网络都不能正常工作
BMA(广播型多路访问)
传输介质:Ethernet
邻居发现:自动
DR/BDR选举:必须选举DR和BDR
Hello/Dead时间间隔:10s/40s
Next-hop:不改变
NBMA(非广播型多路访问)8
传输介质:FR(帧中继),FR多点子接口
邻居发现:需要手动建立邻居(互相指定)
DR/BDR选举:必须选举DR,可以不选举BDR
Hello/Dead时间间隔:30s/120s
Next-hop:不改变
4.Vlink(虚链路)
将两个不连续的骨干区域连到一起
部署位置:ABR之间
Hello/Dead时间间隔:10s/40s
穿越的区域:仅限普通区域(不包含NSSA,Stub,骨干区域)
Vlink邻居建立依靠单播,需要部署Vlink两台ABR之间可以通信
二、OSPF路由器类型
1.IR(内部路由器)
选举规则
该类路由器的所有接口都属于同一个OSPF 区域
工作规则
2.BR(骨干路由器)
选举规则
至少有一个接口属于骨干区域
所有的 ABR 和 位于骨干区域 的内部路由器都是骨干路由器
工作规则
3.ABR(区域边界路由器)
选举规则
至少链接两个区域
连接区域中至少有一个与骨干区域相连(至少有一个接口属于骨干区域)
在骨干区域中至少有一个活跃的邻居
工作规则
将直连的非骨干区域的路由信息传递给骨干区域
将直连的骨干区域路由信息传递给非骨干区域
将从骨干区域学习到的非骨干区域路由信息传递给直连的其他非骨干区域
骨干区域从一个非骨干区域学习到的路由不可以直接传回到该非骨干区域(OSPF的区域水平分割机制--防环)
4.ASBR(自治系统边界路由器)
选举规则
执行了重发布操作的路由器才会被称为ASBR
ASBR 并不一定位于AS 的边界,它可能是区域内路由器,也可能是ABR
只要一台OSPF 路由器引入了外部路由的信息,它就成为ASBR
工作规则
负责将OSPF域外的路由引入本域
三、OSPF的区域类型
前言
OSPF要求域中的所有非骨干区域都与骨干区域直接相连(区域ID不为0的区域)
骨干区域不能被分割
非骨干之间不允许直接相互发布区域间路由信息
普通区域从骨干区域学习到的路由哦不可以传递到其他区域(包含骨干区域)
骨干区域从一个普通区域学习到的路由不可以直接传回到该普通区域
1.骨干区域(Backbone Area)
骨干区域是area0
所有其他区域必须与之相连
不允许Type-5 LSA(外部路由信息)的泛洪
2.常规区域(Normal area)
常规区域中允许type-1、type-2、type-3、type-4以及type-5 LSA泛洪
type-7 LSA禁止出现在常规区域中
3.末梢区域(Stub area)
末梢区域也称stub区域
不允许四类、五类LSA在Stub区域传播
该区域的ABR自动下发一条使用type-3 LSA描述的默认路由,所有需要到达外部的路由都需要凭借Type-3 LSA到达
该区域只存在 type-1、type-2、type-3 类路由
只能有一个连接其他区域的ABR,没有ASBR
骨干区域不能被配置为Stub区域
如果将一个区域配置成Stub区域,则该区域中所有路由器都必须配置Stub
虚连接不能穿越Stub区域建立
它们会在它的 Hello包中设置一个值为 0 的 E 位(E-bit),因此这些路由器是不会接收 E 位为 1 的 Hello包
4.完全末梢区域(Totally Stub Area)
仅存在一类、二类LSA,不允许三类、四类、五类LSA在Totally Stub区域传播
只能有一个连接其他区域的ABR,没有ASBR
只保留ABR产生的三类LSA默认路由,所有需要到达外部的路由都需要凭借三类LSA到达
不能有虚连接
与Stub区域配置的区别是:在ABR上配置no-summary参数
5.次末节区域(Not-So-Stubby Area, NSSA)
不允许存在其他区域四类、五类LSA在本区域传播
存在一类、二类、三类LSA,可以有多个ABR,可以有多个ASBR
允许本区域的ASBR(Area Stub Router)引入外部路由信息,以Type-7 LSA的形式存在
NSSA区域产生一条Type-7 LSA的默认路由用于访问外部网络
NSSA的ABR会将 type-7 LSA 转换成 type-5 LSA,并且泛洪到整个OSPF域中
所有域间路由都必须通过ABR才能发布
6.完全次末节区域(Totally Not-So-Stubby Area, Totally NSSA)
存在一类、二类LSA,可以有多个ABR,可以有多个ASBR
不允许存在其他区域三类、四类、五类LSA在本区域传播
允许本区域的ASBR引入外部路由信息,ASBR可以从直连的外部AS引入 7 类LSA
在ABR上进行 7 类转 5 类
四、OSPF状态与邻居建立过程
前言
链路状态会长时间所处的状态(稳定状态)
Down:启用OSPF功能的链路默认所处状态机 或者 邻居失效后的状态
2-way:在交互了Hello报文建立邻居之后所处的状态,DR-Other与DR-Other之间所处的状态
Full:在邻接建立成功之后的状态,也是OSPF的最终状态
邻居建立过程
1、Down:状态
启用OSPF的链路从Down状态开始,向外发送Hello报文后转为Init状态
邻居失效后变为该状态
2、Init:初始化状态
发送自己的Hello报文给对端,包含自己的RID等信息,对端收到后本端变为 Init 状态
Hello包目的IP地址为224.0.0.5
其中Hello包内容包含;自己的RID,邻居ID,DR地址,BDR地址、接口优先级、Hello包发送间隔和死亡超时时间等
3、2-way:邻居状态
只交换Hello报文,不交换其他报文
对端收到包含自己RID等信息的Hello报文后,收到对端发送的一个包含自己RID的新的Hello报文时,本端收到后变为 2-way 状态
收到Hello报文中有自己设备的Router-ID则转为2-way状态
相互间周期发送Hello的状态(双方建立会话)
在广播型网络中,选举DR与BDR
4、Exstart:交换信息的初始化状态
路由器之间开始准备进行数据库描述
第一个DD报文中是没有任何的链路状态简要信息的
互相发送DD报文,包含了各自链路状态数据库(LSDB)的摘要信息,用于选举主从关系
主要目的是协商主从(Master/Slave)关系
利用Hello报文中的RID和优先级来进行选举,一但确定不允许抢占
5、Exchange:交换信息的状态
到达该阶段已经完成了初始信息交换准备,主从关系已经协商一致
互相发送DD报文,包含了各自链路状态数据库(LSDB)的全部信息,用于同步LSDB
两个OSPF路由器发送DD报文交换数据库描述,直到两个设备的LSDB同步一致
Master与Slave交互DD报文过程(序列号假设为Q)
Slave主动向Master发送DD报文,用于描述本端的LSDB信息,此时报文序列号使用的是Master的序列号(该状态序列号为Q)
Masterr收到DD信息之后将序列号递增并回复描述本端LSDB信息的DD报文(该状态序列号为Q+1)
Slavev收到Master回复的DD时,需要回复确认信息,Slave回复的确认信息的序列号为接受的Master报文的序列号,Slave不可递增序列号值(该状态序列号为Q+1)
6、Loading:加载状态(没有学习完的状态)
此状态是Exchange时期同步过程中,相互学习对端LSA,但未完成全部学习的状态
根据Exchange 的 DD 报文,发送LSR,LSU,LSACK来学习对端的LSA的过程
7、Full:邻接状态(学习完的状态)
该状态下表示链路LSA已经交互成功,邻接关系建立完成
该状态下会将学习到的LSA加入到LSDB中,并且使用SPF算法选举到达目标的最优路由,同时加入到路由表中
会定期发送Hello报文维持邻接关系,如果在Dead时间之前为收到Hello则邻接关系断开,重新回到Down状态重新建立
五、OSPF报文类型
前言
OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文
邻居是指运行OSPF的相邻路由器
邻接是指邻居路由器之间的连接关系
1.HELLO
建立和维护跟邻居的关系,通过组播224.0.0.5周期性发送发送
Hello包中包含路由器ID、接口IP地址、子网掩码、区域ID、认证类型和认证信息、Hello时间间隔、DR与BDR的RID等信息
路由器根据收到的Hello包中的信息,与对端路由器建立邻居关系
默认 Hello 间隔(定期发送,确认邻居存活)
广播网络(Broadcast Network):默认为10秒
点对点网络(Point-to-Point Network):默认为10秒
非广播多点连接网络(Non-Broadcast Multiple Access Network): 默认为30秒
点对多点网络(Point-to-Multipoint Network):默认为30秒
默认 Dead 间隔为 默认 Hello 时间的 4 倍
缺省时OSPF接口的DR优先级为1
除Hello报文其他OSPF报文都携带LSA信息
2.DD/DBD
DD/DBD报文(DataBase Description Packet):数据库描述报文
数据库描述报文,描述本地LSDB的摘要信息,用于两台路由器进行数据库同步
一个DD报文可能包含一条或多条LSA的头部
报文中携带的是LSDB中LSA的头部数据 (也就是并非完整的LSA内容,仅仅是头部数据)
开始使用DD报文描述自己的LSDB之前,双方需要协商主/从(Master/Slave)Router-id更大的路由器成为master路由器
Master/Slave确定后,双方就开始使用DD报文描述各自的LSDB,在这种DD报文中包含着LSDB里的LSA的头部
当对端邻居收到之后基于DD报文中的信息从而通过LSR进行请求所需的详细路由信息(先描述后请求,减少了交换LSA的次数,提高网络的收敛速度)
不同链路状态下的DD报文发送方式不同,广播网络类型下的DD报文以单播发送
3.LSR
LSR报文(Link State Request Packet):链路状态请求报文
用于向对方请求自己所需链路状态(LSA)信息(用于请求DD报文中的详细路由信息)
LSR报文由链路状态类型、链路状态ID、通告路由器、三个元素标识了路由器请求的LSA
不同链路状态下的LSR报文发送方式不同,广播网络类型下的LSR报文以单播发送
LS Request报文只有LS Type、 LS ID和Advertising Router
4.LSU
LSU报文(Link State Update Packet):链路状态更新报文
用于向对方发送对方所需链路状态(LSA)信息(用于回复详细的LSR请求信息)
包含了对方请求的LSA的完整信息,一个LSU报文可以包含多个LSA
路由器接收到LSU包后,会更新自己的LSDB
在OSPF链路状态更新/拓扑变更时主动进行路由的更新通知
5.LSACK
LSAck报文(Link State Acknowledgment Packet):链路状态确认报文
OSPF通过LSA的校验和来确保数据的完整性,确保每条 LSA 的可达性,通过对收到的LSA进行确认,防止LSA的丢失或混乱
Hello报文和LSAck报文不需要确认
不同链路状态下的LSACK报文发送方式不同,广播网络类型下的LSACK报文以组播发送
六、OSPF的LSA
前言
LSA 链路状态通告(Link-State Advertisement)
OSPF以1800s为周期对LSA进行泛洪
每个LSA都有一个寿命,随着时间的推移会不断增加
当LSA的寿命达到一定值时,它会被标记为不活动,并停止传播
路由器会根据收到的LSA的寿命来更新自己的LSDB
采用更长的泛洪周期,可避免网络中的OSPF流量过大,以免造成不必要的带宽消耗
新旧判断:更高链路状态序列号--->更大校验和--->老化时间
如果收到的LSA损坏,例如Checksum错误,则不接收该LSA
各区域类型中允许出现的LSA表格
1类 Router LSA
来源:每台运行OSPF的路由器都会产生
描述内容:自己的链路状态
传递范围:该LSA在接口所属的本区域泛洪
运行OSPF后既会产生1类 LSA 描述直连链路信息
路由器LSA,描述设备的直连拓扑信息、路由信息
该LSA只能在接口所属的区域内泛洪
报文细则
Data用于描述此连接的附加信息,不同的连接类型所指述的信息也不同
Metric描述此连接的开销
Type表示连接的类型
Link ID表示此连接的本地标识,不同的连接类型Link ID表示的意义也不同
2类 Network LSA
来源:经过选举出来的DR设备产生
描述内容:描述DR所在的MA网络中所有与之形成邻接关系的路由器,以及DR自己,OSPF的伪节点信息(DR和BDR)
传递范围:该LSA在接口所属的本区域泛洪
网络LSA,该2类LSA只会在广播类型网络中出现
3类 Summary-Network LSA
来源:BDR(区域边界路由器)
描述内容:到达区域外的路由信息(一条3-LSA只能描述一条去往区域外部的路由信息)
传递范围:该LSA在接口所属的本区域泛洪
三类LSA在一个区域内不能被修改,当跨区域时,会修改adv-router为当前区域的ABR
网络汇总LSA,由ABR设备产生,描述区域内的路由信息
报文细则
Net mask被设置为目的网段的掩码
Link State ID被设置成目的网络的IP地址
abr-summary命令是OSPF区域视图下的命令
advertise是abr-summary命令的缺省参数,即配置abr-sumary命令不指定not-advertise的话则默认为advertise
4类 ASBR-Summary LSA
来源:ABR(区域边界路由器)
ASBR(自治系统边界路由器)
描述内容:用来在区域内描述哪台是ASBR,描述到ASBR的路由
使用asbr-summary命令汇总的路由会以5类LSA在区域内传递
asbr-summary命令只在需要汇聚的ASBR上部署才能生效
传递范围:在区域间传递,区域内生效
通告给除ASBR所在区域的其它区域
报文细则
Link State ID表示ASBR的Router ID
Advertising Router字段表示产生该LSA的ABR
Metric表示该ABR到达ASBR的OSPF开销
asbr-summary命令是OSPF视图下的命令
5类 AS-External LSA
来源:ASBR(自治系统边界路由器)
描述内容:去往(AS)外部的路由信息
AS-External-LSA不属于任何区域
传递范围:AS内部泛洪
外部路由用5类LSA进行通告
5类LSA在传递的过程中,下一跳不会被中间设备修改
报文细则:
Link State ID被设置为目的网络地址
mask 为目的网络(外部路由)掩码
Advertising Router代表生成该LSA的ASBR的Router ID
7类 NSSA LSA
来源:NSSA区域的ASBR
描述内容:如何到达自治系统外部的路由信息
传递范围:NSSA区域内泛洪
只能在始发区域内泛洪,并不能直接进入Area0
当7类LSA需要传递Area0的时候,ABR会将7类LSA转换成5类传递入到Area0中
七、外部路由一/二类路由
前言
第一类外部路由比第二类外部路由优先
VRP中引入的外部路由类型缺省为第二类
外部一类路由
第一类外部路由的开销值为AS内部开销值(路由器到ASBR的开销)与AS外部开销值之和
该路由引入OSPF时的COST加上本路由器到达ASBR/Forwarding Address的COST值
外部二类路由
第二类外部路由的开销值只是AS外部开销值,忽略AS内部开销值
仅计算该路由引入OSPF时的COST值
八、DR与BDR、DR Other
前言
每个广播型网络的每个网段都会独立选举DR与BDR
DR与BDR没有抢占,即使后加入的设备优先级更高也不会成为DR
接口优先级为0将不参与选举,如果此时为DR/BDR将立马失效,成为DRother
224.0.0.5:该组播IP地址意指所有的OSPF路由器
224.0.0.6:该组播IP地址意指所有的OSPF DR路由器
广播网络中可以没有BDR,但必须存在一个DR设备
DR、BDR、DR-Other三者可以相互建立邻居关系,可以互相交互Hello报文
只有DR与BDR、DR与DR-Other、BDR与DR-Other之间才可以建立邻接关系(DR Other直接不能建立邻接关系,只能与DR和BDR建立邻接关系)
1.选举机制
只有广播型网络才会选举DR与BDR
先比较优先级,优先级最大的当选DR,优先级第二大的当选BDR,默认接口优先级为1
优先级为0不参与选举
优先级相同比较Router-ID,大的为DR,第二大的为BDR,其他为DR Other
2.DR
监听224.0.0.6
ospf DR-prioritye命令默认值为1,取值范围为0~255
3.DR Other
接口优先级为0的是DR Other
不是DR也不是BDR的设备叫DR other
DRother监听的组播地址是224.0.0.5
DR-Other之间不能直接交互DD报文、LSR、LSU、LSACK报文(无法建立邻接关系)
DR-Other之间可以建立邻居关系(2-way状态,不交换LSA)
DR-Other交互路由信息时,通过组播地址224.0.0.6向DR与BDR发送路由信息
DR、BDR收到224.0.0.6传来的报文时,通过组播地址224.0.0.5向所有的OSPF发送信息
如果DR-Other有路由更新,DR-Other会向224.0.0.6发送LSU信息,再由DR向224.0.0.5发送LSU报文,通知所有的OSPF设备更新路由
4.Router-ID
如果没有手工配置router-id命令且配置了Loopback接口地址,则选择Loopback接口地址最大的作为Router ID
如果手工配置Router ID,那么OSPF最优先使用该Router ID
如果没有配置router-id命令且没有配置Loopback接口地址,则从其物理接口的IP地址中选择最大的作为Router ID
九、影响OSPF邻接关系建立的因素
版本不一致
Router-ID 冲突
认证类型和密码不一致
区域ID不一致
接口掩码不一致
接口IP不在同一网段
端口优先级DR-priority 0值为0(只能建立邻居关系)
Hello报文间隔时间不一致
Dead 时间不一致
Option选项中,Nbit和Ebit不一致
接口MTU不一致
十、命令配置
OSPF三张表: 邻居表/LSDB表/OSPF路由表
dis ospf peer 查看邻居表
dis ospf lsdb 查看 lsdb表
dis ospf router-table 查看ospf路由表
十一、Cost开销
Loopback接口默认开销值是0
在OSPF进程下修改参考带宽会对OSPF中的所有本地接口开销构成影响
Cost在接口的流量流入方向生效
OSPF会根据该接口的带宽自动计算其开销值,计算公式为:接口开销=带宽参考值/接口带宽
OSPF 普通区域中的路由器将外部路由引入时默认的Metric-Type为2
类型1计算内部和外部开销
类型2只计算外部开销
十二、OSPF版本
OSPFv2
OSPFv3
OSPFv3本身不携带安全认证
评论区