OSPF -- 开放式最短路径优先协议【链路状态协议】
目录
MGRE的配置
中心的配置
分支的配置
在MGRE环境下使用RIP来获取未知网段的路由信息
OSPF -- 开放式最短路径优先协议【链路状态协议】
RIPV2和的相同点:
RIPV2和的不同点
区域划分的要求:
1、OSPF的数据包类型
2、OSPF的状态机
3、OSPF的工作过程
4、OSPF的基本配置
MGRE的配置 中心的配置
[]int t 0/0/0 -- 创建隧道接口
[-/0/0]ip 192.168.9.7 24 -- 给隧道接口配置IP地址
[-/0/0]- gre p2mp -- 选择封装协议 -- MGRE
[-/0/0] 79.0.0.1 -- 中心设备源IP地址必须固定
[-/0/0]nhrp -id 100 -- 启动NHRP,id具有全局意义[相当于小组名]
分支的配置
[]int t 0/0/0
[-/0/0]ip 192.168.9.8 24
[-/0/0]- gre p2mp
[-/0/0] g0/0/0 -- 源ip选出接口
[-/0/0]nhrp -id 100
[-/0/0]nhrp entry 192.168.9.7 79.0.0.1 汇报给中心
汇报自己的接口ip信息(第一个IP地址是中心隧道接口IP地址,第二个是中心真实物理接口IP地址)
【 nhrp peer all 】查看NHRP注册情况(地址映射信息)
MGRE搭建的环境的逻辑拓扑连接是一个多节点的网络,但是,在数据发送时,还是点到点的发送,所以,是不支持广播和组播行为的,所以,可以理解为是一种NBMA网络。
在MGRE环境下使用RIP来获取未知网段的路由信息
1、只有中心获取到分支的路由信息,但是分支并没有获取到中心的路由信息
-- 解决方案 -- 在中心上开启伪广播。--通过给所有分支分别发送数据包达到类似广播的效果
[中心-/0/0]nhrp entry
2、分支在中心开启伪广播后,只能获取到中心的路由信息,但是无法获取分支之间的路由信息 - 是因为华为设备默认开启rip水平分割-从哪学不发回去
--解决方案 到中心设备关闭接口的水平分割
[中心-/0/0] undo rip split-
OSPF -- 开放式最短路径优先协议【链路状态协议】
收敛速度、选路、占用资源
RIP存在三个版本 -- RIPV1、RIPV2 -- IPV4
--RIPNG -- IPV6
OSPF也存在三个版本 -- [实验室夭折不用了解]、 - IPV4
- IPV6
RIPV2和的相同点:
1、RIPV2和一样,都是无类别的路由协议
无类别 -- 传递路由信息时携带子网掩码
2、RIPV2[224.0.0.9]和[224.0.0.5/224.0.0.6]都是以组播的形式发送信息。
3、 和 RIPV2都支持等开销负载均衡
RIPV2和的不同点
-- OSPF协议可以应用在中大型网络中,但是RIP只能应用在小型网络中。 -- 主要原因是OSPF可以进行结构化部署 -- 区域划分、
区域划分的主要目的 -- 区域内部传递拓扑信息,区域之间传递的是路由信息。
ABR -- 区域边界路由器 -- 同时属于两个区域,并且一个接口属于一个区域,且有一个接口在区域0
区域之间可以存在多个ABR设备,一个ABR也可以对应多个区域
区域划分的要求:
1、区域之间必须存在ABR【可以存在多个ABR,甚至还有保险功能 】
2、区域之间必须按照星型拓扑划分 -- 星型的中间区域被称为骨干区域,为了方便对每个区域进行管理,我们给OSPF的每个区域设定一个区域ID,称为area ID -- 32位二进制构成 -- 骨干区域的区域ID必须为0。
如果一个网络规模较小,不需要进行区域划分,则这样的OSPF网络我们称为单区域OSPF网络【华为的官方文档中要求,如果是单区域OSPF网络,则必须设置为区域0】;如果一个网络存在多个OSPF区域,则将被称为多区域OSPF网络。
1、OSPF的数据包类型
hello包 -- 周期的发现、建立和保活邻居关系
hello包的发送周期 -- 10s(30s)
死亡时间 -- 4倍的hello时间
为了区分和标定OSPF网络中每台路由器,我们引入了RID【route id】 -- 1,全网【OSPF网络】唯一;2、格式统一 -- RID要求按照IP地址的格式来进行标定【由32位二进制构成,用点分十进制来表达】
RID的生成方法:
1、手工配置 -- 满足以上两点要求即可
2、自动生成 -- 如果路由器存在环回接口,则将取环回接口的IP地址中最大的作为RID;如果路由器不存在环回接口,则将在路由器的物理接口中取最大的IP地址作为RID。
hello包中将携带RID
DBD包 -- 数据库描述报文 -- 携带的是路径信息的摘要 -- 相当于是本地存放LSA数据库(LSDB - 链路状态数据库)的目录
LSR包 -- 链路状态请求报文 -- 给予DBD包请求未知LSA信息
LSU包 -- 链路状态更新报文 -- 携带LSA信息的数据包
LSACK包 -- 链路状态确认报文
OSPF也存在周期更新,每30min一次
2、OSPF的状态机
Down State 陌生人 -》hello-》Init State 初始化-》回hello-》Two-Way State 双向通讯状态 标志着邻居关系的建立 【邻居关系并不是终点】
(条件匹配)-- 条件匹配成功,则将进入下一个状态;如果条件匹配失败,只能维持邻居关系,通过10s/30s一次的hello包进行周期保活
Two-Way -》DBD 谁的id大谁就先进入 State -》进入状态开始后才正式进行数据交换
主从关系选举 -- 通过比较RID,RID大的为主,可以优先进入下一个状态,主从关系选举还可以完成隐形确认【回ack是显性确认】
这里使用DBD包来进行主从关系选举,主要是为了和之前的邻居状态进行区分
FULL状态, -- 标志着邻接关系的建立 -- 邻接关系主要为了和之前的邻居关系进行区分,邻居关系只能发送hello包进行周期保活,而邻接关系才能真正交互LSA信息
Down状态 -- 启动OSPF,发送hello包之后进入下一个状态
(初始化)状态 -- 收到hello包中包含本地的RID,则进入下一个状态
2-Way(双向通讯)状态 -- 标志着邻居关系的建立
(条件匹配)
(预启动)状态 -- 使用未携带数据的DBD包进行主从关系的选举,为主的可以优先进入下一个状态。
(准交换)状态 -- 使用携带摘要信息的DBD包进行目录共享
(加载)状态 -- 基于DBD包比对自己本地数据库,使用LSR包请求未知的LSA信息,对端通过LSU包回复LSA信息,需要ACK确认
FULL状态 -- 标志着邻接关系的建立
3、OSPF的工作过程
启动配置完成后,OSPF向本地所有运行协议的接口以组播224.0.0.5的形式发送hello包:hello包中会携带本地的RID以及本地一致的邻居的RID。之后,将收集到的邻居关系记录在一张表中 -- 邻居表
邻居表建立后进行条件匹配,失败则停留在邻居状态,仅通过hello包进行周期保活。
如果匹配成功,则开始建立邻接关系。首先,先使用未携带数据的DBD包进行主从关系选举。之后,使用携带数据的DBD包来共享本地目录信息。之后本地使用LSR/LSU/LSACK获取未知的LSA信息,完成本地数据库的建立 -- LSDB --生成数据库表。
最后,基于本地LSDB去通过SPF算法计算到达未知网段的路由信息,将路由信息加载到路由表中。
收敛完成后,OSPF需要通过Hello包进行周期保活,每30min进行一次周期更新。
结构突变的场景:
1、突然断开一个网段 -- 触发更新 LSU发出
2、突然增加一个网段 -- 触发更新 LSU发出
3、无法沟通 -- dead time
4、OSPF的基本配置
1、启动OSPF进程
[r1]ospf -id 1.1.1.1
[r1-ospf-1]
2、创建区域
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]
3、宣告 -- 作用1,激活接口;2,发布路由
[r1-ospf-1-area-0.0.0.0] 12.0.0.1 0.0.0.0 -- 反掩码(由连续的0和1组成,0所对应位不可变,1对应位可变)
[r1-ospf-1-area-0.0.0.0] 12.0.0.0 0.0.0.255
【看ospf邻居表 ospf peer】
【看ospf邻居简表 ospf peer brief】
【看数据库表 ospf lsdb】
【展开一条LSA信息 ospf isdb 2.2.2.2】
OSPF在华为体系中默认的优先级为10
COST = 参考带宽/真实带宽 -- 华为设备OSPF参考带宽的默认值为
COST小于1写成1 大于1的时候对于小数是去尾
修改参考带宽 - 10000
注意:一旦修改参考带宽,则网络内所有设备都要修改