OSPF数据库浅析
如图,在网络中启用OSPF,AR2、AR5为ABR,所有路由器对应接口宣告到对应区域。
R1将Loopback 0 的IP地址宣告到OSPF进程中
R6上引入静态路由,AR6的g0/0/0设置为静默接口:
静默接口:当OSPF路由器的一个接口,没有连接OSPF邻居,我们可以使用静默接口的配置 比如:OSPF路由器的接口连接交换机,交换机连接PC机 启用静默接口后,该接口不再收发OSPF协议的报文
R6:
[AR6]ip route-static 10.10.7.7 32 192.168.67.7
[AR6-ospf-1]dis this
[V200R003C00]
#
ospf 1 router-id 6.6.6.6
import-route static
silent-interface GigabitEthernet0/0/0
area 0.0.0.56
network 192.168.56.0 0.0.0.255
network 192.168.67.0 0.0.0.255
R7:
[AR7]ip route-static 192.168.0.0 16 192.168.67.6
[AR7]int g0/0/01
[AR7-GigabitEthernet0/0/1]ip add 192.168.67.7 24
[AR7-LoopBack0]ip add 10.10.7.7 32
在R1上查看OSPF数据库
<AR1>dis ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.12
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 340 36 80000006 1
Router 1.1.1.1 1.1.1.1 1124 48 80000007 1
Network 192.168.12.1 1.1.1.1 333 32 80000004 0
Sum-Net 192.168.67.0 2.2.2.2 210 28 80000001 5
Sum-Net 192.168.45.0 2.2.2.2 1759 28 80000002 3
Sum-Net 192.168.23.0 2.2.2.2 309 28 80000003 1
Sum-Net 192.168.56.0 2.2.2.2 1620 28 80000002 4
Sum-Net 192.168.34.0 2.2.2.2 51 28 80000003 2
Sum-Asbr 6.6.6.6 2.2.2.2 61 28 80000001 4
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 10.10.7.7 6.6.6.6 65 36 80000001 1
【LSA】在OSPF网络中,路由器之间并不直接传递路由,而是传递LSA(Link State Advertisement 链路状态通告)LSA被包含在OSPF协议的报文中,路由器通过收到的LSA,去独立的计算路由,计算路由的规则是相同的。
- 【Type 】
- [ Router——1类LSA ]在一个OSPF区域,进行自我介绍的 即:一台路由器,在同一个OSPF进程中,不同接口同时连接不同的区域,则,该路由器在每个区域都会产生一个1类LSA
- [ Network——2类LSA ] 每个广播或者非广播的网络类型的网段中,都会产生一个DR 而2类LSA就是用来表示DR的
- [ Sum-Net——3类LSA ] 表示的是OSPF域间路由 举例: R1-R2-R3这样的直线拓扑中,R2是ABR R2会将R2-R3区域的路由以3类LSA的形式发给R1
- [ Sum-Asbr——4类LSA ] 是ABR产生的,向本区域介绍其他区域的ASBR的LSA 举例: R1-R2-R3直线拓扑中,R2是ABR,R3是ASBR 此时,R2会产生一个4类LSA,发给R1,向R1介绍ASBR-R3
- [ External——5类LSA ] 表示的是OSPF域外路由(也叫外部路由) 即:import-route成功引入的路由
- [ NSSA ——7类LSA]功能:在NSSA区域中,传递外部路由。传播范围: 在NSSA区域中传递。本例中将区域56设置为NSSA区域后,会在R5R6看到此类LSA
在NSSA区域中会自动生成一条7类缺省路由指导NSSA区域访问外部路由
而Totally NSSA中会自动产生3类和7类缺省路由,路由器默认使用3类缺省路由指导数据转发 -
【 LinkState ID 】 LSA的名字
-
【 AdvRouter 】 通告路由器(Advertisement Router) 就是,谁发的这条LSA
-
默认路由(缺省路由)一定是静态路由吗?
不一定 ip route-static 0.0.0.0 0 x.x.x.x 的确可以配置静态的默认路由 而在OSPF这种动态的路由协议中,也是可以生成默认路由的,而此时,默认路由也是动态的 比如:Stub区域中,ABR会向Stub区域的路由器泛洪一个表示默认路由的3类LSA 此时,Stub区域中的OSPF路由器就会形成OSPF的默认路由。
特殊区域:
-
Stub区域
-
区域内不要5类LSA 因为不要5类LSA,所以不要4类LSA。此时,ABR会向Stub区域产生一个表示缺省路由的3类LSA
-
-
Totally Stub区域
-
区域内不要5类LSA,所以不要4类LSA 同时,不要3类LSA此时,ABR会向Stub区域产生一个表示缺省路由的3类LSA
扩展: Stub区域的优点: 节省系统资源、节省链路资源 提高了网络的稳定性(因为不受外部路由频繁Up/Down的影响)
-
-
NSSA区域 区域内不要5类LSA,所以不要4类LSA 但是,本区域,可以引入外部路由(import-route) 本区域引入的外部路由,以7类(NSSA)LSA表示
此时,ABR会向NSSA区域,下发一个表示缺省路由(默认路由)的7类LSA(0.0.0.0)
-
Totally NSSA区域 区域内不要5类LSA,所以不要4类LSA 但是,本区域,可以引入外部路由(import-route) 同时,区域内不要3类LSA(域间路由用3类LSA表示)
注意:此时,ABR会同时产生表示默认路由的3类LSA和7类LSA,区域内其他路由器,会根据3类LSA来计算默认路由(缺省路由) LSA优先级:1>3>5>7
OSPF的Hello包解析
- 【 TTL 】 OSPF的Hello报文,IP头部的TTL值是1 ,OSPF不能跨跳建立邻居 举例: R1-R2-R3,这样的直线拓扑 R1想要给R3发Hello报文,报文经过R2的时候,TTL会减1,此时,报文被R2丢弃 所以,R1无法跨过R2,和R3建立邻居
- 【 Protocol 】 IP报文中的这个字段,叫做协议号,指的是,IP头部后面跟的是什么协议 不同的协议,通过不同的协议号表示 OSPF在IP报文中,协议号永远是89
- 【 OSPF Version 】 指的是这台路由器上运行的OSPF协议的版本 版本2:IPv4版本的OSPF 版本3:IPv6版本的OSPF
- 【 Message Type 】 消息类型 指的是OSPF头部后面跟着的OSPF报文,是哪种类型的报文 类型1就是Hello报文
- 【 Packet Length 】 报文的长度
- 【 Source OSPF Router 】 产生这个报文的OSPF路由器 所谓的OSPF路由器,就是运行了OSPF协议的路由器
- 【 Area ID 】 发送这个OSPF报文的路由器的接口,所在的OSPF区域 之所以说是接口所在区域,是因为,路由器发包的时候,在OSPF报文前面封装了IP头部 而IP头部上面,标明了源IP地址,源IP地址,其实就是发送这个OSPF报文的接口IP地址
- 【 Packet Checksum 】 校验和 用来校验报文是否正确
- 【 Auth Type和Auth Data 】 关于OSPF认证的字段 Auth Type:是认证类型 Auth Data:是认证的密码(有明文或密文)
- 【 Network Mask 】 指的是发送Hello报文这个接口IP地址的掩码
- 【 Hello Interval 】 Hello时间 指的是,该接口发送Hello报文的时间间隔 默认情况下,路由器每10秒发送一个Hello报文
- 【 Option 】 特殊标记位跟区域有关
- 【 Router Priority 】 DR的优先级
- 【 Router Dead Interval 】 死亡时间 指的是,我多长时间没有收到对方发来的Hello报文,我就认为对方挂了 默认情况下,死亡时间是40秒 注意:死亡时间是Hello时间的4倍
- 【 DR 】
- 所有的OSPF路由器都跟DR建立了FULL的邻接关系 即:所有的OSPF路由器都会和DR同步数据库,DR再将同步好的数据库发送给大家(发送的方式是:目的地址为224.0.0.5)
-
DR的作用 加快数据库同步
-
DR的选举原则
【1】比较Hello报文中的Router Priority,默认是1,取值范围0-255,数值越大越好 【2】如果Router Priority相同,则比较router-id,越大越好 -
DR的优先级设置为0 意味着我这台OSPF路由器,这个接口,永远不参加OSPF的DR选举 即:DR优先级为0,不是优先级最低,而是不参选
-
DR的特点 稳定!不能抢占!
在一个网段中,一旦选举出了DR,即使后续在该网段中,又出现了其他DR优先级更高的路由器,那么,DR的身份也不会被抢占 如果非要抢占DR的身份,我们需要重启网段内所有OSPF路由器的OSPF进程
- 【 BDR 】DB的备用
- DR挂了,BDR马上接替DR的工作
- DR的选举过程
最开始,先从网段内所有DR优先级非0的路由器中,选出一个BDR 此时,没有DR,所以,BDR马上立刻变成DR 然后,因为没有BDR,所以又开始选出一个BDR - BDR变成DR的过程
DR的优先级,是藏在OSPF的Hlelo报文中的 而OSPF路由器的死亡时间默认是40秒 即:我连续40秒没有收到DR接口发送的OSPF Hello报文,我才认为DR挂了 - 静默接口可以成为DR么? 可以,因为DR选举时,如果收不到对方的Hello报文,我会认为对方不敢跟我比,所以我这个接口就是DR
- OSPF路由器连接PC机的接口可以成为DR么?
可以,原因同上
- 【 Avtice Neighbor 】 激活的邻居,其实就是我认可的邻居的router-id
OSPF区域的Option位文章来源:https://www.toymoban.com/news/detail-494491.html
文章来源地址https://www.toymoban.com/news/detail-494491.html
- E和NP 我们在OSPF的Hello报文中,可以看到Options(特殊标记位) 其中,E:代表这个路由器可以引入外部路由(import-route) NP:代表这个路由器在发送这个Hello报文的接口所在的区域,是NSSA区域
- E=1,NP=0 表示这个区域是普通区域
- E=0,NP=0 表示这个区域是Stub区域(Totally Stub也这样表示)
- E=0,NP=1 表示这个区域是NSSA区域(Totally NSSA也这样表示)
OSPF中Network 和 Import-router的区别
- 【 network 】 宣告:宣告OSPF路由器接口所在的直连网段
- 【 import-route 】 引入:引入的是OSPF网络外部的路由
- 【 区别 】 [ 用途 ] network可以精确的宣告一个路由(就是一个直连网段) import-route可以引入一类路由 比如:一台路由器上,有十条静态路由,此时,我们在这台路由器上面的OSPF进程中import-route static,就可以一次性的将这十条静态路由都引入到OSPF进程中
- 【优先级 】 network的OSPF路由,优先级默认为10 import-route的外部路由,优先级默认为150
OSPF常用命令汇总
- 查看接口配置过的命令
display current-configuration interface GigabitEthernet 0/0/1 - 查看配置过的关于OSPF的命令
display current-configuration configuration ospf - 查看OSPF接口的信息
display ospf interface - 查看OSPF邻居关系
display ospf peer brief - 查看OSPF数据库
display ospf lsdb - 查看IP路由表中,关于OSPF计算出的路由
display ip routing-table protocol ospf - 更改区域类型的命令
ospf x area x stub/nssa/stub no-summary/nssa no-summary - 更改OSPF接口的Hello/dead时间
interface x/x/x ospf timer hello/dead x - 更改OSPF接口的网络类型
interface x/x/x ospf network-type broadcast/nbma/p2p/p2mp
到了这里,关于OSPF数据库、Hello包解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!