**
1.OSPF定义·
**
(ospf开放式最短路径优先)是一种用于在IP网络中选择路由的内部网关协议,工作在ip层,协议号为89,可靠的动态路由协议。
2.ospf特点
1.占用资源少—
2.收敛速度快—
收敛—首次收敛
拓扑结构发生变化重新收敛
3.选路优—
3.OSPF数据包类型
1、Hello报文
hello报文用于发现、建立和维护邻居关系周期性发送:
(1)在MA和P2P网络中,hello报文发送间隔为10秒,老化时间为40秒
(2)在NBMA和P2MP网络中,hello报文发送间隔为30秒,老化时间为120秒
hello报文的内容有:1.始发路由器“的router-id 2.始发路由器的area-id 3.始发路由器的接口地址和掩码 4.认证信息和类型 5.hello时间和dead时间 6路由器优先级 7.指定的DR和BDR。
2、DD报文
DD报文用于同步LSDB的摘要信息。
3、LSR报文
LSR报文用于请求本地没有的LSA信息。
4、LSU报文
LSU报文用于更新自己的LSA或泛洪LSA。
5、LSACK报文
LSACK报文用于对收到的LSU报文进行确认
**
4.OSPF状态机
**
Down :一旦接收到其他设备发送过来的he
lo包进入下一个状态机
初始化 接收到的hello包中若存在本地的RID,进入下一个状态机
Init :
2way:
双向通讯 邻居关系建立的标志
Exstart 预启动 使用不携带目录信息的DBD包进行主从关系的选举,rid数值大为主,优先进入下一个状态机;-- 排序
Exchange 准交换:使用携带目标的DBD包进行共享,由主先进行,从在收到主的DBD包后再发出DBD
Loading 加载:对比DBD目录后,基于本地未知的LSA信息,使用LSR向邻居发出请求,邻居使用LSU来更新共享这些LSA信息,本地在收到LSU后需要ACK确认;加载过程完成后,邻居间的数据库一致;
FULL:邻接关系建立的标志
5.OSPF工作过程
启动ospf的配置完成后,直连的邻居间组播收发hello包,建立邻居关系,生成邻居表;之后关注条件,条件不满足的邻居间将维持为邻居关系,仅hello周期保活即可;
条件匹配的邻居间可以建立为邻接关系
先使用DBD包进行主从关系的选举,目的在于有序进行数据的共享;
先使用携带数据库目录的DBD,共享本地数据库目录;之后邻居基于所有的目录比对出本地未知的LSA目录;再使用LSR进行查询,对端使用LSU进行回复本地LSACK表示确认;----使用DBD/LSR/LSU/LSck来获取本地未知的LSA信息;生成数据库表
当网络中所有路由器的数据库同步完成后,邻接关系建立;本地基于数据库生成有向图—>最短路径树–>计算本地到达所有未知网段的最短路径,然后将其加载到路由表
收敛完成后,仅helo包每10s周期保活邻居关系;每30min邻接间再使用DBD进行数据库的清查,保障无误;
1)新增网段 --直连新增网段的设备直接使用LSU向本地所有的邻接进行触发更新,收到的邻接需要ack确认;
2)断开网段直连断开网段的设备直接使用LSU向本地所有的邻接进行触发更新,收到的邻接需要ack确认;
3)无法沟通每10s-个hello包,4倍hello时间的一个dead time ;
6.OSPF邻接关系建立条件
区域类型必须一致
区域id必须一致
hello、dead时间间隔必须一致
router-id不能冲突
认证密钥要一致
接口MTU值要一致
接口两端主网络和掩码要一致
7.OSPF的数据报文
OSPF是一种跨层封装的协议,协议号是89没有传输层(减少封
装和解封装的时间,加快收敛)
OSPF的公共头部所有OSPF报文均携带的信息
8.OSPF基础配置
[r1]ospf 1 router-id 1.1.1.1 启动OSPF时,可以定制进程号和RID;
进程号仅具有本地意义,默认为进程1;RID的格式为IPV4地址,要求全网唯一;生成顺序 — 手工配置 – 环回接口最大数值的ip地址-- 物理接口最大数值的ip地址
宣告:1、区域划分 2、激活 3、共享接口的拓扑或者路由
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]q
ospf协议在宣告接口的网段时,需要携带反掩码;
区域划分规则:
星型结构 — 区域0为骨干区域 大于0为非骨干 所有的非骨干区域必须直连到骨干
ABR 区域边界路由器 两个区域互联时,必须基于ABR进行
当启动配置完成后,邻居间收发hello包,建立邻居关系,生成邻居表:
邻居邻居hello包中有5个参数必须完全一致,否则无法建立邻居关系;
区域id 2)认证字段 3)hello 、dead time 4)特殊区域标记
[r2]display ospf peer 查看OSPF邻居表
[r2]display ospf peer brief 查看OSPF邻居关系简表
当邻居关系建立后,进行条件的匹配;匹配失败将维持邻居关系,仅hello包周期保活即可;
匹配成功可以建立邻接关系;在建立邻接关系的过程中,将使用DBD/LSR/LSU/LSack来获取本地所有未知的LSA信息,与邻接同步出一样的数据库(LSDB)表:
LSDB–链路状态数据库 所有LSA的集合
[r2]display ospf lsdb 查看数据库表
当邻接关系间数据库同步完成后,本地基于数据库转换为有向图,之后将有向图转换为最短路径树型结构,再树形结构中以本地为起点,计算到达所有未知网段的最短路径,然后将它们加载到本地的路由表中; --收敛完成
display ip routing-table protocol ospf
在华为设备中,ospf的优先级为10;度量为cost值;
cost值=参考带宽/接口带宽 ospf优选cost值之和最小为最佳路径
若接口带宽大于参考带宽,cost值为1;将可能导致选路不佳;可以手工修改设备的参考带宽
[r1]ospf 1
[r1-ospf-1]bandwidth-reference 1000 单位为兆 修改时,整个网络所有设备需要一致
OSPF的扩展配置
从邻居成为邻接关系的条件 和网络类型相关
【1】点到点 一个网段物理上只能存在两个节点 — 串线链路上的HDLC/PPP技术
【2】MA多路访问 – 在一个网段中物理节点的数量不限制 —以太网
OSPF协议在点到点网络中,邻居间将直接建立为邻接关系;
在MA网络中,将进行DR/BDR选举;所有非DR/BDR之间维持为邻居关系,仅收发hello包;
选举规则:
先比较参选接口的优先级,数值大优;默认为1,取值范围0-255;若为0代表不参选
若优先级相同,比较参选设备的RID数值,大优;
[r1]int g0/0/2
[r1-GigabitEthernet0/0/2]ospf dr-priority 3 修改参选接口的优先级
主:该选举是非抢占的,故在修改优先级后,不会重新选举;故在管理员确定可以重新选举时,重启所有设备的ospf进程后方可重新选举;
reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y
要求所有设备必须在40s之内全部重启ospf进程
故建议做法为,将DR,优先级修改为最大,BDR次大,其他所有设备修改为0放弃选举
OSPF协议在MGRE环境下的一些问题
问题1.
只有中心获取到了一个分支的hello报文,分支之间没有获取到
任何hello报文
原因:OSPFV2通过组播发送数据包,但是MGRE环境只能支持单
播,所以必须在中心开启伪广播
[r1-Tunnel0/0/0]nhrp entry multicast dynamic
问题二,中心开启伪广播之后,中心和一个分支建立了邻接关
系,但是分支之间没有信息,其次有一个分支只和中心保持init
状态。
建议直接更改隧道接口的接口网络类型为P2MP,直接方中心和
分支不进行DR和BDR的选举,就不会造成认知不统一的问题
P2mp—首先没有真实实际的网络类型是P2MP,是一种专门设
计出来的网络类型
同时为了加快收敛,可以修改OSPF计时器
同时为了加快收敛,可以修改OSPF计时器
[r1-Tunnel0/0/0]ospf timer hello 10 -
解决方法:
[r1-Tunnel0/0/0]ospf network-type broadcast–需要修改OSPF协
议在mGRE隧道接口下的默认接口网络类型为 broadcast.
问题三,如果中心和分支的DR和bdr认知不一致会导致网络中
一些由DR设备发送的LSA信息残缺,导致没有办法获取到完整
的路由信息。
[r2-Tunnel0/0/0]ospf dr-priority 0–解决方法就是让分支设备放弃
选举DR和BDR
解决方法2.
[r1-Tunnel0/0/0]ospf dr-priority 10–让中心的设备接口DR选举
优先级为最高。
P2mp—首先没有真实实际的网络类型是P2MP,是一种专门设
计出来的网络类型
如果想要还原环回接口的默认掩码:[r2-LoopBack0]ospf network-type
broadcast
Attempt—只有在NBMA环境下才会出现,等待对端也指定发
送的对象
在NBMA环境下因为不支持组播报文,所以即时宣告了OSPF接
口,接口依然没有办法发送hello(224.0.0.5是一个组播报
文),所以必须手工指定建立邻居的对象IP地址
[Huawei-ospf-1]peer 12.0.0.2 --指定建邻的设备IP地址,双方都需要指
定
#OSPF–的不规则区域
OSPF为了适应中大型网络环境设计了区域划分的规则
1.区域之间必须存在ABR设备
2.区域划分必须满足星形结构划分
OSPF的不规则区域:不连续骨干 远离骨干的非骨干区域
处理方法:
1.物理连接一根线缆让远离骨干的非骨干区域直接连接到骨干区域中。
2.通过构建VPN隧道的方式去连接一根虚拟的线缆,将区域连接在一起
通过让没有连接到骨干区域的路由器,和区域0中的路由器连接隧道,并且将隧道
宣告在区域0中使得,ABR设备合法化
可能造成的问题:
问题1.会额外建立邻居关系,导致周期性的数据(hello报文)–需要通过隧道封
装占用额外的资源
问题2.选路不佳
解决方法二:
OSPF为了解决不规则区域问题,专门提出了一个解决方案:
V-link—虚链路
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4——必须在建立V-LINK链路的设备
所在的区域中配置,注意:V-link peer 指定的是对端合法的ABR,同时
合法的ABR设备也需要指定自身去认可的非法ABR设备
[r4-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
问题:虚链路只能跨越一个区域,本质原因就是V-link指定的对象是一个设备的
RID(不是IP地址)
问题,周期性的数据还是存在,因为V-LINK也会建立邻居
但是一般情况下V-LINK作为临时的解决方案
多进程双向重分布—
[r4]ospf 2 router-id 4.4.4.4 --启动一个新的协议进程
[r4-ospf-2】area 0
[r4-ospf-2-area-0.0.0.0]network 45.0.0.0 0.0.0.255
配置位置
ASBR—同时运行了两款协议的设备
1.ASBR上配置
A-B
[r4-ospf-1]import-route ospf 2 —如果想要A协议获取到B协议的路由信
息,进入A协议的进程中import-route 引入B协议的路由即可
O_ASE --域外路由信息
Pre–域外路由的优先级默认是150—因为域外其他协议的情况不清楚,
路由可靠性较低
OSPF五种常见LSA
Router-LSA(路由器链路状态通告)—1类LSA
1)作用:描述每台路由器自身的网络状态
2)内容:IP地址、掩码、cost、邻居信息
3)通告者:每台路由器
4)传播范围:区域内
5)特点:
(1)每台路由器都会产生
(2)本区域类传递,在ABR终止
(3)用来形成同一区域内的网络TOP结构,是真正的链路状态信息
Network-LSA(网络链路状态通告)—2类LSA
- 作用:用来描述MA网络的掩码信息
- 内容:
(1)MA网络中的掩码
(2)MA网络所有路由器的一个列表信息 - 通告者:DR
- 传播范围:区域内
- 特点:
(1)由MA网络中的DR产生
(2)本区域传递,在ABR终止
(3)用来形成同一区域内的网络TOP结构,是真正的链路状态信息
Network-summary-LSA (网络汇总链路状态通告)—3类LSA
1)作用:描述区域间的路由信息
2)内容:网络号、掩码、cost值 (不包含邻居信息)
3)特点:
(1)由ABR产生,相当于把1、2类转成3类LSA路由信息,通告给其他区域
(2)在整个ospf路由域内都会传递,在到抵下一个ABR时,ADV(通告路由器)会发生变化
AS-external-LSA(自治系统外部链路状态通告)----5类LSA 先于4类LSA产生
1)作用:描述外部引用路由的信息
2)内容:网络号、掩码、cost值
3)通告者:ASBR
4)通告区域:整个OSPF路由域
5)特点:由ASBR产生,在整个路由域中都会传递,在到抵下一个ABR时,ADV(通告路由器)不会发生变化(精确选路)
ASBR-summary-LSA(ASBR链路状态通告)— 4类LSA 后于5类LSA产生
1)作用:描述ASBR的位置,帮助其他路由器寻找ASBR的位置
2)内容:ASBR的RID
3)通告者:ABR
4)通告区域:OSPF整个路由域
5)特点:在整个ospf路由域内都会传递,在倒抵下一个ABR时,ADV(通告路由器)会发生变化
和3类LSA相似
1类LSA案例
具体配置及查看LSA
R1配置
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]net 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]net 12.1.1.1 0.0.0.0
[R1]dis ospf lsdb #查看链路状态数据库摘要
[R1]dis ospf lsdb router #查看一类LSDB明细
[R1]dis ospf lsdb router originate-router #查看自身的一类LSDB明细
[R1]dis ospf lsdb router 2.2.2.2 #查看R2的一类LSDB明细
R2配置
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]net 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]net 12.1.1.2 0.0.0.0
[R2]dis ospf lsdb #查看链路状态数据库摘要
[R2]dis ospf lsdb router #查看一类LSA明细
[R2]dis ospf lsdb router originate-router #查看自身的一类LSA明
[R2]dis ospf lsdb router 1.1.1.1 #查看R1的一类LSDB明细
2类LSA案例
网络TOP图
具体配置及查看LSA
R3配置
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]net 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]net 34.1.1.3 0.0.0.0
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ospf cost 10 #修改ospf接口cost值
[R3]dis ospf lsdb #查看链路状态数据库摘要
[R3]dis ospf lsdb router originate-router #查看自身的一类LSA明细
[R3]dis ospf lsdb network #查看二类LSA 明细
[R3]dis ospf lsdb network 4.4.4.4 #查看R4的二类LSA 明细
R4配置
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]net 4.4.4.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0]net 34.1.1.4 0.0.0.0
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]ospf cost 10 #修改ospf接口cost值
[R4]dis ospf lsdb #查看链路状态数据库摘要
[R4]dis ospf lsdb router originate-router #查看自身的一类LSA明细
[R4]dis ospf lsdb network 3.3.3.3 #查看R3的二类LSA 明细
3类LSA案例
R1配置
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]net 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.1]net 12.1.1.1 0.0.0.0
R2配置
[
R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]net 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]net 23.1.1.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]area 1
[R2-ospf-1-area-0.0.0.1]net 12.1.1.2 0.0.0.0
R3 配置
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]net 3.3.3.3 0.0.0.0
[R2-ospf-1-area-0.0.0.0]net 23.1.1.2 0.0.0.0
[R3-ospf-1-area-0.0.0.0]area 2
[R3-ospf-1-area-0.0.0.2]net 34.1.1.3 0.0.0.0
[R3]dis ospf lsdb summary #查看三类LSA明细
[R3]dis ospf lsdb summary 1.1.1.1 #查看RID 1.1.1.1 三类LSA明细
[R3]dis ospf abr-asbr #查看本区域内有哪些边界路由器以及整个路由域内有哪些自治系统边境路由器
R4配置
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 2
[R4-ospf-1-area-0.0.0.2]net 4.4.4.4 0.0.0.0
[R4-ospf-1-area-0.0.0.2]net 34.1.1.4 0.0.0.0
[R4]dis ospf lsdb
[R4]dis ospf lsdb summary #查看三类LSA明细
[R4]dis ospf lsdb summary 1.1.1.1 #查看RID 1.1.1.1 三类LSA明细
[R4]dis ospf abr-asbr #查看ABR 和ASBR
4类、5类LSA案例
R1配置
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]net 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.1]net 12.1.1.1 0.0.0.0
[R1]dis ospf lsdb asbr
#R1上查看LSA ASBR 5类LSA通告路由器无变化。4类LSA的通告路由器变成了ABR R2
<R1>dis ospf abr-asbr #查看ABR ASBR
R2配置
```bash
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]net 12.1.1.2 0.0.0.0
[R2-ospf-1-area-0.0.0.1]area 0
[R2-ospf-1-area-0.0.0.0]net 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]net 23.1.1.2 0.0.0.0
[R2]dis ospf lsdb
#R2上查看LSA 发现ASBR 5类LSA通告路由器无变化。4类LSA的通告路由器变成了ABR R3
R3配置
```bash
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]net 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]net 23.1.1.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]area 2
[R3-ospf-1-area-0.0.0.2]net 34.1.1.3 0.0.0.0
[R3]dis ospf lsdb
#R3上查看LSA 发现ASBR 5类LSA通告路由器无变化,但是4类LSA的通告路由器变成了自身ABR R3
R4配置
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 2
[R4-ospf-1-area-0.0.0.2]net 34.1.1.4 0.0.0.0
[R4]ospf 1
[R4-ospf-1]import-route direct #R4引用一条直连路由,让R4成为ASBR 产生5类LSA
[R4]dis ospf lsdb
[R4]dis ospf lsdb asbr 4.4.4.4 #查看ASBR lsa摘要
[R4]dis ospf lsdb ase #查看五类lsa明细
[R4]ospf 1
[R4-ospf-1]import-route direct type 1 #修改外部路由表项为E1
#E1:外部路由类型1,累加内部接口的cost值
#E2:外部路由类型2,不累加内部接口的cost值 (默认)