OSPF(开放式最短路径优先)
OSPF基础:
动态路由协议的评判标准--收敛速度、选路、占用资源
OSPF特性:
IGP
链路状态协议
SPF算法
组播224.0.0.5/224.0.0.6
10/150
OSPF与RIPv2对比
相同点:
均采用组播通讯
不同点:
OSPF可以工作在大型网络中
OSPF的结构化部署:
区域内部传递拓扑信息,区域间传递路由信息。--链路状态型协议的距离矢量特征。
OSPF的结构化部署规则:
1.OSPF要求域中所有非骨干区域(区域id不为0的区域)都必须与骨干区域直接相连。
OPSF定义了ABR(区域边界路由器)来确保遵循这条规则--只有真正的APR设备才可以转 发区域间路由信息。
ABR规则:
1.至少连接两个区域
2.连接的区域间至少有一个接口连接区域0
3.在区域0中至少有一个活跃的邻居
2.骨干区域不能被分割
OSPF规定:从非骨干区域收到的路由信息,ABR
能接收到但不会使用这条路由信息(这条规则被称为OSPF的区域水平分割机制)。
总结:
OSPF有如下规定:
1.伪ABR设备不允许转发区域 间路由信息
2.对于真实ABR设备
能够将自己直连的非骨干区域链路传递给骨干区域
能够将自己直连的骨干区域路由信息传递给非骨干区域
能够将自己从骨干区域学习到的非骨干区域路由信息传递给直连的非骨干区域
OSPF路由器角色:
内部路由器--IR
所有接口都接入同一个OSPF区域的路由器
区域边界路由器--ABR
骨干路由器--BR
接入AREA0的路由器
自治系统边界路由器--ASBR
工作在OSPF自治系统边界的路由器,负责将OSPF域外的路由引入本域。
并不是运行了多种路由协议的OSPF路由器就一定是ASBR;必须执行了重发布操作的路由器才会被称为ASBR
OSPF数据包:
hello包:
用来发现建立并周期保活OSPF邻居关系,通过组播224.0.0.5发送。
hello-time:hello时间-10s发一次用以确认邻居存在。
hold-time:死亡时间-hello-time*4
Router-ID(RID)--全域唯一,标识路由器身份。
在华为设备中若没有接口IP,RID为0.0.0.0
在思科设备中若没有接口IP,则OSPF无法启动
华为设备第一次执行自身标准,后续执行FRC标准
华为标准:状态最先UP的接口的IP地址作为Router ID
FRC标准:
1.取loopback接口IP中最大的作为Router ID
2.若没有loopback接口,则选择物理接口IP地址中最大的作为Router ID
配置方式:
手工配置
自动配置
默认优选最大环回IP地址,没有环回就选择最大物理地址
有环回看环回,没环回看物理
无论采用手动还是自动配置,一旦OSPF确定了RID,则之后不会改变。除非重启OSPF进程。
DBD报文:
数据库描述报文
该报文携带的是路径信息的摘要。--避免重复更新,减少更新量的一种做法。
LSR报文:
链路状态请求报文---用以获取未知的LSA(链路状态通告)信息。
LSU报文:
链路状态更新报文
携带真实的链路状态信息
LSA报文----链路状态通告----装载和传输链路状态信息。LSA 需要描述邻接路由器信息、直连链 路信息、跨区域信息等,所以定义了多种类型的 LSA 。
OSPF七种状态机
down--关闭
init--初始化
2-way--双向通讯 稳定态
exstart--预启动
exchange--准交换
loading--加载
full--转发 稳定态
条件匹配:
DR、BDR、DRother--接口角色
选举规则:
决定了谁给谁传递拓扑信息。
DR/BDR:监听224.0.0.6 在224.0.0.5发送信息
其他:在224.0.0.6发送信息 在224.0.0.5发送信息
条件匹配的选举过程:
条件匹配是为了避免重复更新
DR、BDR的选举是通过HELLO报文实现的,时间发生在2-Way状态之后
路由器将自己的接口的DR、优先级先填写在hello报文的“DR优先级字段”
华为数通产品的接口DR优先级默认为1,该参数可修改
当接口激活OSPF后,设备首先会检查网络上是否已经存在DR,如果存在则接收已经存在的DR设备。否则优先级最大的设备成为DR,若优先级相同则拥有最大RID的路由器成为DR设备
BDR选举过程与DR选举相同,但是在DR选举之后进行。
OSPF工作过程:
OSPF结构突变
新增网段
直接使用更新报文(LSU),邻居使用ACK报文进行确认
断开网段
直接使用更新报文(LSU),邻居使用ACK报文进行确认
无法沟通
dead time(死亡时间)=hello time(一般为10s)*4,状态为down,删除信息(路由信息)
OSPF基本配置
启动OSPF协议
创建区域
进程号只具有本地意义(只在本地生效)
宣告
最常用的是精准宣告
反掩码:32位点分十进制表示;由连续的0和连续的1组成,其中0表示IP对应位不变,1代表IP对应位可变
查OSPF邻居表:display ospf peer 后面跟上brief 为查简表
查OSPF数据库表display ospf lsdb
查OSPF路由表display ospf routing
查OSPF全局路由表display ip routing table protcol ospf
OSPF参考带宽修改方法:[r2-ospf-1]bandwidth-reference 后跟问号可查可修改数值大小
OSPF报文格式
OSPF协议号--89
OSPF报文头部信息
长度固定24字节
版本--恒为2
类型--描述OSPF数据包类型
hello--1
dbd--2
lsr--3
lsu--4
lsack--5
报文长度
路由器ID--RID
区域ID--发出该报文的接口所属区域的ID值
校验和--校验完整数据包
验证类型
指示该数据报文使用的认证类型
不认证--0;简单认证--1;MD5认证--2
验证数据
用于报文认证内容
若类型认证类型为不认证,则该字段全为0
Hello包
网络掩码(网络掩码必须相同)
两台OSPF路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码(在点到点网络中不会检查此字段)
如果一方在接口上收到的hello报文中,网络掩码字段与本地接口配置掩码不同,则该路由器忽略该hello报文,此时邻居关系无法建立
注意:只有华为设备中会检查网络掩码信息
Hello间隔(与hello-time相同)
如果两台路由器的hello时间间隔不同,则不会建立邻居关系
在Broadcast类型和P2P网络类型中hello时间间隔为10s;而在NBMV或者P2MP网络类型中,Hello时间为30s
可选项(八个字段)
有8个标记位,每一个标记位为1,则代表其符合OSPF的某种特性
特殊区域标记
路由器优先级
用于选举DR和BDR
在点到点中不需要选举DR和BDR
路由器失效时间
两台设备建立OSPF邻居需要确保死亡时间相同
默认情况下是hello间隔的4倍
若修改hello时间则死亡时间随之改变,若修改死亡时间则hello时间不变
指定路由器--DR
该参数为网络中DR的接口的IP地址
若没有选举出DR,则使用0.0.0.0来占位
备份指定路由器--BDR
该参数为网络中BDR的接口的IP地址
若没有选举出DR,则使用0.0.0.0来占位
邻居
在直连链路上发现的有效邻居,此处填充的是邻居的RID值
限制邻居关系建立的内容
拓扑
配置:
所有224.0.0.x格式的组播地址称为本地链路组播地址,目标IP是本地链路组播的数据包的TTL值被设定为1,所有本地链路组播地址都存在对应的组播MAC地址,01-00-5e-0后23位,后23位为组播IP地址的后23位
转换示例:
DBD报文:
使用未携带的DBD报文进行主从关系选举
使用未携带数据的DBD报文的信息进行拓扑目录信息共享
接口最大传输单元(MTU)
在华为AR系列路由器上,该参数值默认为0(因为IP头部中已经携带了该信息)
该字段是用于OSPF的MTU检测,而华为设备是默认不开启该功能的,所以该字段默认为0
如果两端设备开启了OSPF的MTU检测机制,则进行MTU检测,若双方参数相同,则正常进行 邻接关系,若不同,则双方卡在exstar状态。
可选项--与hello报文内容的可选字段一致
主从关系选举
如果该值为1,则代表该段数据报文用于进行主从关系选举。且此时数据包中不会携带真实的数据库目录信息
隐示确认:通过主序列号进行确认:如果主设备收到一条DBD的回复报文,里边的序列号是自己之前发送的,就认为之前的DBD对端已经收到(主从序列号)
M
若为1,则代表后续还存在DD报文
若为0,则代表后续没有DD报文
MS--代表是否为主设备
若为1,则代表本设备为Master设备
若为0,则代表本设备为Slave设备
DD序列号
用于确保DD报文传输的有序性和可靠性
在DD报文交互的过程中,DD序列号必须有Master路由器来决定,而Slave路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文
隐性确认(DBD包的特性)-不使用确认包,而是从设备复制主设备的序列号来确认收到了主的DBD
而主从关系选举就是为了完成隐性确认
LSA头部:
LSR包--链路状态请求报文
一个LSA的三元组信息
链路状态类型,链路状态ID,通告路由器(可以标识一条LSA)
LSU报文
LSAck报文
完成显式确认机制
OSPF的接口网络类型
p2p----p2mp
MA----BMA、NBMA
OSPF的接口网络类型,实际上是说OSPF的接口在某种网络类型下的一种工作方式或特征
广播型多路访问类型--BMA
OSPF在BMA类型的接口上通常以主播的方式发送hello报文,、LSU以及LSACK报文;以单播的形式发送DD报文和LSR报文
点到点类型--p2p
拓扑
不需要选举DR和BDR
环回接口
拓扑与p2p类型案例相同
点到多点类型--p2mp
拓扑
HUB节点必须成为DR,因为spook节点成为DR无法学习到完整路由信息(修改spook节点接 口优先级使其放弃选举DR和BDR)
手工修改接口为P2mp不需要选举DR和BDR
非广播型多路访问类型--NBMA
拓扑
在该网络中,所有数据包以单播数据通讯
在该网络中,所有的OSPF路由器都需要使用peer命令单播指定邻居,该命令是双向的
开销值:1562--原因:华为将runnel接口的传输速率定为了64kbps
配置时会遇到的问题与解决思路
OSPF路由学习优先级:域内>域间>域外
OSPF不规则区域划分
拓扑
远离骨干的非骨干区域
不连续骨干区域
该拓扑出现问题(r4的路路信息无法被R3转发)根本解决方案:对OSPF网络重新规划与配置,满足OSPF区域划分规则。
其他解决办法
使用tunnel隧道连接R2与R3或者连接R1与R3
使用vpn隧道解决不规则区域问题
可能造成选路不佳
造成重复更新
资源消耗问题
这种方法问题太多,现实工程中基本见不到,没有人用,仅做了解
Vlink--虚链路
Vlink是专门为了解决OSPF不规则区域所诞生的技术,是一种虚拟的,逻辑的链路
配置条件:只能穿越一个区域
配置:
查看Vlink邻居
display ospf vlink
Vlink被视为骨干区域的延申:代表Vlink永远属于骨干区域
使用Vlink解决不规则区域产生的问题:
资源消耗
虚链路只能穿越一个区域
查看OSPF网络接口类型: