OSPF路由协议详解----超详细


前言

学习OSPF动态路由协议前,让我们先对动态路由协议有一个简单的认识。

动态路由协议:在路由器上启动动态路由协议后,路由器间相互通讯,进行数据沟通,之后通过计算学习到所需路由。

目前主流的动态路由有:RIP、OSPF、EIGRP、ISIS、BGP

动态路由协议分为两大类:
基于AS进行分类:AS–自治系统

  • AS之内运行—IGP协议:内部网关路由协议 ------ OSPF、RIP、ISIS、EIGRP
  • AS之间运行—EGP协议:外部网关路由协议 ------ BGP、EGP

IGP协议的分类:

  1. 基于更新是是否携带子网掩码分为:有类别(不带子网掩码)、无类别(携带子网掩码)
  2. 基于工作特点进行分类
    • 距离矢量–DV:RIP、EIGRP 直接共享路由表----直接学习路由条目、更新量小
    • 链路状态–LS:OSPF、ISIS 共享拓扑信息----本地计算路由条目、更新量大

接下来,我们来学习OSPF动态路由协议

**OSPF:开放式最短路径优先协议----无类别链路状态型路由协议,是一个公有协议,传输内容跨层封装到IP报头,协议号:89。组播更新:224.0.0.5/224.0.0.6。更新机制有触发更新、周期更新(30min/次)。由于更新量大,在部署环境中需要结构化部署:区域划分,地址规划。


一、OSPF协议的数据包

1.数据包结构

在这里插入图片描述

2.数据包种类

在这里插入图片描述

  • Hello:用于邻居/邻接关系的发现、建立、周期保活。hello time默认为10s/30s,dead time为hello time的4倍
  • DBD:数据库描述包
  • LSR:链路状态请求
  • LSU:链路状态更新
  • LSAck:链路状态确认

二、状态机

  • Down:初始状态,本地发出Hello包后,进入下一状态
  • Init:初始化,收到的Hello包中携带本地的Routet ID,进入下一状态,否则停留在该状态
  • 2-Way:双向通讯 ,邻居关系建立的标志
  • 从2-Way进入下一状态需要进行条件匹配,匹配成功,进入下一状态;匹配失败,停留在2-Way状态,仅收发hello包周期保活即可。
  • Exstart:预启动,使用类似hello包的DBD包进行主从关系选举,Router ID大的为主,优先进入下一状态。
  • Exchange:准交换,使用真正的DBD包进行数据库目录共享,需要LSAck确认
  • Loading:加载,使用LSR/LSU/LSAck来获取未知的LSA信息
  • Full:转发,邻接关系建立的标志

LSA:链路状态通告,在不同的网络条件中会产生不同类别的LSA信息来代表拓扑或路由条目
LSDB:链路状态数据库,装载和存储各种类别的LSA

三、OSPF的工作过程

启动OSPF协议后,路由器A向本地所有直连的接口组播(224.0.0.5/6)发送hello包,本地hello包中携带本地全网唯一的Routet ID。

之后路由器B运行OSPF协议后将回复hello包,本地发送的hello包中若携带路由器A的Router ID,路由器A收到后,双方将建立邻居关系。生成邻居表

邻居关系建立后,邻居间进行条件匹配,匹配失败,停留在邻居关系,仅hello包周期保活;匹配成功,双方开始建立邻接关系。

邻接间共享DBD包,将本地与邻接的DBD包进行对比,查找本地没有的LSA信息,之后使用LSR进行询问,对端使用LSU应答具体的LSA信息,本地再使用LSAck确认。该过程完成后,生成数据库表

再之后,本地基于数据库表,启用SPF选路规则,计算到达未知网段的最短路径,并加载到本地的路由表中;路由表收敛完成后,hello包周期保活,每30min收发一次DBD,判断与邻接间的数据库表是否一致。

结构突变:

  1. 新增网段:新增网段的直连设备将直接使用LSU包来告知本地所有邻接,之后再由邻接告知全网设备,邻接需用LSAck确认。
  2. 断开网段:新增网段的直连设备将直接使用LSU包来告知本地所有邻接,之后再由邻接告知全网设备,邻接需用LSAck确认。
  3. 无法沟通:本地与邻接间由于某些原因无法收发hello包,hello包每10s一次,dead time为hello time的4倍,当dead time到时后,断开邻居关系,删除通过该邻接生成的所有路由信息。

四、OSPF的基础配置

[r1]ospf 1 router-id 1.1.1.1  启动时,需要定义进程号;进程号仅具有本地唯一性; 建议同时配置全网唯一的router-id; 生成顺序—手工---本地环回接口中最大ip地址数值---本地物理接口中最大数值的ip地址  
[r1-ospf-1]
宣告:ospf协议在宣告的同时需要进行区域划分

区域划分规则:

  1. 星型拓扑结构,区域0为中心骨干区域,其他大于0为非骨干区域

  2. 必须拥有ABR—区域边界路由器

    [r2-ospf-1]area  0     先进入区域,之后再该区域内宣告属于该区域的接口,宣告时必须携带反掩码
    [r2-ospf-1-area-0.0.0.0]network 12.1.1.2 0.0.0.0
    [r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
    [r2-ospf-1-area-0.0.0.0]q 
    [r2-ospf-1]area  1 
    [r2-ospf-1-area-0.0.0.1]network 23.1.1.1 0.0.0.0
    

启动配置完成后,邻居间收发hello包,建立邻居关系;生成邻居表

[r2]display ospf peer		//查看邻居表详情
[r2]display ospf peer brief	//查看邻居表摘要

邻居、邻接关系的发现、建立、保活均依赖hello包进行;
Hello包中邻居间必须完全一致的参数:任意参数不同,均导致邻居关系无法建立

1、子网掩码(华为)发送hello包接口的源ip地址其掩码   
2、Hello dead time      -- OSPF接口网络类型相关
3、认证字段            -- 更新安全
4、区域ID              -- 要求区域间存在ABR
5、末梢区域标记          --特殊区域

在这里插入图片描述
邻居关系建立后,邻居间进行条件匹配,匹配成功者间可以建立为邻接关系;邻接关系间将使用DBD包进行主从关系选举,之后由主优先使用DBD进行数据库目录信息的共享,从而最终基于LSR/LSU/LSAck来获取未知的LSA信息;当收集到全网的LSA信息后,装载于本地的LSDB(链路状态数据库)—数据库表:

<r2> display ospf lsdb  查看ospf数据库表
关于OSPF,DBD包的几个知识点:
 1、DBD包中携带MTU值,要求邻居MTU值必须相同,否则将卡在exstart或exchange状态;
    默认华为未开启MTU检测
 [r1]interface GigabitEthernet 0/0/1
 [r1-GigabitEthernet0/0/1]ospf mtu-enable
 2、隐性确认—不使用确认包,而是从设备复制主设备的序列号来确认收到了主的DBD
 3、OSPF标记位    I   M    MS    I为1本地发出的第一个DBD包
          	  M为0,表示本地发出的最后一个DBD;    MS为1代表主,为0代表从;
数据库建立后,本地基于SPF选路规则,计算到达未知网段最短路径加载于路由表中;

1、字母

Cisco
	   O - OSPF
	   IA - OSPF inter area 
       N1 - OSPF NSSA external type 1,  N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1,  E2 - OSPF external type 2
O 同一区域内,本地通过拓扑计算所得
O IA 域间路由,ABR通过其他区域的拓扑计算所得路由,然后共享到另一个区域;本地区域另一区域
O E1/2  域外路由   其他协议或其他进程产生后,通过ASBR重发布进入到OSPF协议
O N1/2  NSSA域外路由  其他协议或其他进程产生后,通过ASBR重发布进入到OSPF协议,同时学习到这条路由的设备处于ospf的一种NSSA的特殊区域中

<r1>display ospf routing  华为查看

2、管理距离(华为为优先级)

Cisco设备定义管理距离为110       在华为设备上优先级为10

3、度量(cost)

开销值  参考带宽/接口带宽  华为设备,环回接口不计算为一段路径;默认的参考带宽为100M;
优选cost值之和最小路径;

五、OSPF协议邻居成为邻接关系的条件

在点到点网络中,所有的OSPF邻居将直接建立为邻接关系;
在MA网络中,为了避免大量的重复的LSA更新—因为OSPF需要邻接间进行DBD对比,故没有接口水平分割机制;所以必须进行DR/BDR选举,非DR/BDR间仅建立邻居关系;------在每一个MA网络中均需要进行一次选举;

选举规则:
1、优先级    数值大优,默认为1;      若为0为放弃选举;
2、优先级一致,比较参选接口所有设备的router-id,数值大优;
[r1-GigabitEthernet0/0/1]ospf dr-priority 2   修改参选接口的优先级
切记:DR选举非抢占 ,故在修改优先级后,必须重启参选设备ospf进程来重新选举
<r1>reset ospf process  重启ospf进程
Warning: The OSPF process will be reset. Continue? [Y/N]:y

六、OSPF接口网络类型

OSPF协议在不同网路类型的接口下,其不同的工作方式

接口网络类型OSPF接口网络类型(ospf工作方式)
LoopBack 0Cisco – LoopBack 没有hello包 以32位主机路由发送 华为—显示为p2p类型 实际为LoopBack工作方式
点到点(串线HDLC/PPP/GRE)p2p. hello time10s 自动建邻 不选DR/BDR
BMA(以太网 )Broadcast hello time 10s 自动建邻 选DR/BDR
NBMA(帧中继 )nbma hello time 30s 手工建立邻居 选DR/BDR
MGREp2p. hello time10s 自动建邻 不选DR/BDR –在一个网段中只能存在一个邻居;华为设备在一个MGRE网段,接口为点到点工作方式时,仅和最先收到hello的设备建立邻居关系;Cisco在这种情况将出现邻居的翻滚;

注:在MGRE环境中,接口默认的ospf工作方式为点到点,这种方式无法实现该NBMA网段的邻居全连;故只能去修改接口的工作方式

修改MGRE网段所有接口为Broadcast工作方式,切记若一部分接口修改为Broadcast,另一部分接口依然保持为点到点,由于hello time相同可以建立邻居关系,但工作机制在DR/BDR选举处不同,故最终该网段无法正常收敛;
【1】同时,必须关注网络拓扑结构;若该网段为全连网状结构,那么DR选举将正常进行;但若为部分网状或中心到站点拓扑,将可能出现DR位置错误问题;
【2】若网络拓扑只能为部分网状或中心到站点,需要人为手工干预DR位置,或者将所有接口的工作方式修改为点到多点工作方式;

Ospf的点到多点工作方式:只能手工配置,适用于部分网状结构拓扑;Hello time30s,不选DR/BDR,自动建立邻居关系;

七、OSPF的不规则区域

一台ABR设备若没有连接到骨干区域0,那么默认不得区域间路由的共享

  1. 远离了骨干的非骨干区域

  2. 不连续骨干

    解决方案:
    1)在合法与非法ABR上建立tunnel,然后将其宣告到ospf协议中
    缺点:1、周期更新、保活、触发更新对中间穿越区域产生资源占用
         2、选路不佳---当ospf同时学习到两条相同目标,但区域不同时,优选骨干区域;
    
    2)虚链路 --- 在合法与非法ABR上建立虚链路,由合法ABR为非法ABR进行授权;使得非法ABR可以进行区域间路由的共享;
                 因为并没有增添新的路径,故不存在选路不佳的问题;但同样会对中间穿越区域产生资源占用
    [r2-ospf-1]area 1     两台ABR共同所在的区域
    [r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4  对端ABR的RID
       Cisco为了避免周期信息对中间区域的占用,取消虚链路上的所有周期行为;---不可靠
       华为在虚链路上依然保持周期的保活、更新---对中间区域的资源占用
    
    
    3)多进程双向重发布(推荐)
    多进程--- 同一台设备上,不同的进程可以工作在不同的接口上,建立各自的邻居关系,生成各自的数据库(不共享);
    		 仅将各自计算所得路由加载于同一张路由表内;一个接口只能被一个进程来宣告;
    双向重发布,ASBR(自治系统边界路由器、协议边界路由器),将不同进程或不同协议产生的路由进行双向共享;
    [r2]ospf 1 
    [r2-ospf-1]import-route ospf  2 
    [r2-ospf-1]q
    [r2]ospf 2 
    [r2-ospf-2]import-route ospf  1
    

八、OSPF的各种LSA—数据库表

<r1>display ospf lsdb
<r1>display ospf lsdb router 1.1.1.1	查看具体的信息
					  类别名  link-id(在目录中的编号)

所有类别的LSA,均携带以下信息

Type      : Router    类别名  此处为1类
Ls id     : 1.1.1.1     link-id  在目录中的编号
Adv rtr   : 1.1.1.1     通告者 --- 该LSA的更新源设备的RID
Ls age    : 1359    老化时间   1800s周期刷新为0   触发更新归0  最大3609s
Len       : 48 
Options   :  E  
seq#      : 8000000c   序列号
chksum    : 0x818c     校验码

OSPF的LSA是1800s会更新一次,更新一次序列号会+1

LSA的新旧比较
1、会先比较序列号,序列号越大越优,
2、如果序列号相同,会比较校验值(checksum)越大越优
3、如果校验值也相同,会比较LSA Age时间,是否等于MAX-age时间(3600)
4、如果age时间不等于max-age时间,会比较他们的差值,如果差值大15分钟(900秒),小的优
5、如果age时间不等于max-age时间,会比较他们的差值,如果差值小于15分钟,说明是同一条LSA,忽略其中一条

什么情况下LSA会更新:
1、1800到期会周期更新
2、触发更新(接口地址变化(增加,或删除),修改接口开销值,删除接口,或者删除通告)

类别名传播范围通告者携带的信息link-id
1类LSA-router本区域内本区域内的每台路由器该区域每台设备的直连拓扑通告者的RID
2类LSA-Network本区域内每个MA网段中的DR该网段的拓扑DR接口的ip地址
3类LSA-summary整个OSPF域ABR,在经过下一台ABR时,修改为新的ABRO IA 域间路由域间路由的目标网络号
4类LSA-asbr除ASBR所在区域外的整个ospf域;ASBR所在区域使用1类标记位置ABR,在经过下一台ABR时,修改为新的ABRASBR的位置ASBR的RID
5类LSA-ase整个OSPF域ASBR 在ospf内部传递时不变O E 域外路由域外路由的目标网络号
七类LSA-nssaASBR所在区域ASBRO E 域外路由域外路由的目标网络号

注:七类LSA是OSPF特殊区域中完全NSSA产生的,实际上为五类LSA以七类的名义从ASBR上发送出去,在经过ABR进入骨干区域时被转换回五类LSA

九、OSPF的优化—减少LSA更新量

1.汇总—减少骨干区域的LSA数量 – 前提要求网络存在合理的地址规划

【1】汇总

1)域间路由汇总—ABR将本地直连的A区域1/2类LSA计算所得路由,再通过3类LSA共享到其它本地所直连的B区域时;

[r1]ospf 1 
[r1-ospf-1]area  1   明细路由所在区域
[r1-ospf-1-area-0.0.0.1]abr-summary 3.3.2.0 255.255.254.0

2)域外路由汇总—在ASBR上操作,将5类/7类LSA向OSPF发布时进行汇总;

[r2]ospf 1 
[r2-ospf-1]asbr-summary 99.1.0.0 255.255.252.0
注:切记华为设备默认不会在进行汇总配置的设备上,自动生成空接口防环路由;

2.特殊区域—减少各个非骨干区域的LSA数量

【1】特殊区域 不能是骨干区域,不能存在虚链路;
「1」同时不存在ASBR

1)末梢区域—该区域拒绝4/5的LSA进入;由该区域连接骨干区域的ABR设备,向区域内发送一条3类的缺省路由;
[r1]ospf 1 
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.1]stub
注:该区域内所有设备均需要定义,否则无法建立邻居关系;
   
2)完全末梢区域,在末梢区域的基础上进一步拒绝3类的LSA;仅保留一条3类的缺省路由; 先将该区域配置为末梢区域,然后仅在ABR上定义完全末梢即可;
[r1]ospf 1 
[r1-ospf-1]area 1 
[r1-ospf-1-area-0.0.0.1]stub no-summary

「2」同时存在ASBR

1)NSSA 非完全末梢区域—拒绝非本区域内部产生4/5LSA,本区域ASBR产生的5类将通过7类LSA传输,到达ABR处进入骨干区域时,由7类转换回5类;
在cisco设备中为了避免环路的出现,OSPF协议在NSSA区域配置完成后,不会自动产生缺省路由;而是由管理员在缺省网络无环的前提下,手工添加;
在华为的设备中让由该区域连接骨干0的ABR自动下发一下7类缺省;
[r1]ospf 1 
[r1-ospf-1]area  1 
[r1-ospf-1-area-0.0.0.1]nssa
注:该区域内所有设备均需要定义,否则无法建立邻居关系;

2)完全NSSA – 完全的非完全末梢区域;在普通NSSA的基础上,近一步拒绝3类的LSA,由ABR产生一条3类缺省
先将该区域配置为普通的NSSA,然后仅在ABR上定义完全NSSA即可
[r1]ospf 1 
[r1-ospf-1]area  1 
[r1-ospf-1-area-0.0.0.1]nssa  no-summary

特别注意事项:
由于特殊区域将自动产生缺省路由,指向骨干;故ISP所连接的位置很关键,否则将可能与特殊区域产生的缺省路由互为环路;要求ISP所在位置的OSPF区域不要做任何特殊区域配置;

十、OSPF的扩展配置

1.认证—接口认证

[r3]interface GigabitEthernet 0/0/1   在直连邻居的接口上配置即可
[r3-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cisco123   密文认证,key编号1,密码为cisco123,密码直接以MD5值传递;

2.被动接口(沉默接口)

被动接口 – 只接受不发送路由协议的信息,其他信息正常通过;华为称为沉默接口
只能配置于连接用户的接口,不得用于连接OSPF邻居的接口;

[r3]ospf 1 
[r3-ospf-1]silent-interface GigabitEthernet 0/0/0

3.加快收敛

修改计时器—OSPF的hello time 为10或30s;dead time为hello 的4倍;
改小计时器可以加快收敛速度,但将增加对网络资源占用;故修改时不宜修改过小,维持原有的倍数关系;

[r3]interface GigabitEthernet 0/0/1
[r3-GigabitEthernet0/0/1]ospf timer hello 5  修改本端的hello time,本端的dead time自动4倍关系匹配;直连邻居间hello 和dead time必须完全一致,否则无法建立邻居关系;

4.缺省路由—3类的缺省、5类的缺省、7类缺省

3类缺省-->配置特殊区域后自动生成---末梢、完全末梢、完全NSSA
5类缺省-->本地路由表中通过其他协议或OSPF的其他进程生成了缺省路由条目—前提
		 之后使用重发布机制将改条目重发布到ospf的协议中来;
[r4]ospf 1 
[r4-ospf-1]default-route-advertise
默认导入路由起始度量为0,类型2;
[r4-ospf-1]default-route-advertise type 1 cost 10  修改类型和起始度量
若本地路由表中没有缺省条目,也可以让设备强制向内网发送一条5类缺省
[r4-ospf-1]default-route-advertise always  默认为类型2,cost值为0;
[r4-ospf-1]default-route-advertise always type 1 cost 10  修改类型和起始cost;

7类缺省:普通的NSSA区域将自动产生7类的LSA;也可在NSSA区域内手动生成出7类缺省
[r4]ospf 1 
[r4-ospf-1]area 1 
[r4-ospf-1-area-0.0.0.1]nssa default-route-advertise  默认为类型2 ,起始cost为0;

优选顺序:内部优于外部,类型1优于类型2;

总结

以上就是关于动态路由协议OSPF的一个详细介绍,希望对大家学习OSPF有所帮助。

  • 14
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值