HCNP Routing&Switching之OSPF LSA更新规则和路由汇总

  前文我们了解了OSPF外部路由类型以及forwarding address字段的作用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15225673.html;今天我们来聊一聊OSPF LSA更新规则以及路由汇总相关话题;

  LSA更新规则

  我们知道在ospf的LSDB中,每个LSA都有一个序列号,最小以80000001开始,每更新一次LSA对应序列号都会加1(除删除);默认情况下,如果一个LSA没有什么变化,ospf会每个30分钟自动更新一次;如果对应LSA有改动,则是立即更新;总之对应路由有变动对应LSA就会更新,每次更新都会表现在对应序列号的增加(除删除);这意味着序列号越大,对应LSA就表示越新;除此之外在LSA的报文中还有一个LS Age,该字段主要用来描述对应LSA的生存时间,单位是秒,随着时间的增长而增长;该字段的数字越小,表示对应LSA越新;一条LSA在向外泛洪之前,LS age的值需要增加inftransdelay(该值默认是1秒,表示在链路上传输的延迟);如果一条LSA的LS Age这个字段的值达到了LSRefreshTime(30分钟),对应LSA会被重新生成,对应序列号加1;如果一条LSA的 LS Age字段的值被设置为3600,则表示对应LSA会被删除;我们可以理解为路由器要想删除某条LSA,对应LSU中的LSA的LS age的值会被置为3600,意思就是告诉其他路由器把对应LSA从LSDB中删除;

  实验:如下拓扑,配置ospf

  R3的配置

sys
sys R3
int g0/0/0
ip add 13.0.0.3 24
ospf 1 router-id 3.3.3.3
area 1 
net 13.0.0.3 0.0.0.0
View Code

  R1的配置

sys
sys R1
int g0/0/1
ip add 13.0.0.1 24
int g0/0/0
ip add 12.0.0.1 24
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0
area 1
net 13.0.0.1 0.0.0.0
View Code

  R2的配置

sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int lo 1
ip add 192.168.17.17 32
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
net 192.168.17.17 0.0.0.0
View Code

  查看R1或R2、R3的LSDB数据库

  提示:可以看到对应LSA age字段随时间的增长而增长,对应序列号没有什么变化;

  在R3上新建lo3接口,并将对应ip地址宣告在ospf中,抓包看看对应LSA中的ls age的值

  提示:可以看到对应一类LSA的序列号加1,并且对应age也重新计时了;

  抓包查看对应LSA

  提示:在抓包的数据包中,对应lsa的age是1;表示该LSA已经生存了1秒;其实这个1主要是inftransdelay的值;

  在R2上删除lo1接口ip在ospf中的宣告,在R3上抓包查看对应lsa的age字段的值

  抓包查看对应LSA中的ls age信息

  提示:可以看到R2上的ospf中取消lo1接口ip在ospf中宣告,对应R3收到了一条3类LSA,其中对应LSA的LS Age字段的值是3600,表示删除该LSA;

  验证:在R3上查看lsdb,看看对应192.168.17.17网络的三类LSA是否被删除了呢?

  提示:可以看到对应R3上192.168.17.17网络的三类LSA被删除了;

  LSA更新过程

  提示:上图是当路由器收到一条LSU的处理过程;首先路由器会查看对应LSU中LSA是否在lsdb中存在,如果不存在则添加对应LSA到lsdb中,然后发送LSACK,泛洪LSA,最后计算路由;如果收到LSU中LSA在lsdb中存在,则首先查看对应lsa的序列号是否相同,如果相同则表示是重复的LSA,此时路由器会忽略对应LSA;如果序列号不同,则比较对应收到的LSA序列号是否比lsdb中数据库中对应LSA序列号高,如果收到的LSA序列号高于LSDB中的序列号,则表示收到的LSA是最新的LSA,则会把对应LSA更新到LSDB中,然后对应LSA会重新计时,序列号加1,然后,发送lsack,泛洪lsa,计算路由,更新路由信息;

  总结:ospf lsa的更新规则主要由LS Age这个字段和对应序列号控制,该字段主要用来描述对应LSA存活时长,数字越小表示LSA越新;为了防止LSA条目达到最大生存时间按而被删除,这个字段默认情况是每30分钟更新一次(定时更新);对应LSA的序列号会加1;在ospf中LS Age的值如果被置为3600,表示删除该LSA;序列号的作用有两个,第一个是对比是否是重复LSA;其次是比较LSA的新旧;数字越大,表示LSA越新;除此之外当对应路由,链路状态发生变动,比如更改了开销,对应LSA的ls age字段会重新计时,对应序列号会加1(除删除LSA);即当链路状态发生变化后,立即发送LSU,更新LSDB(触发更新);

  ospf路由汇总

  首先ospf不支持自动汇总路由信息,汇总必须是手动汇总;汇总路由信息的目的是精简lsdb数据库,路由条目,从而优化路由器的性能;对于汇总来说,汇总只能汇总区域间的路由和外部路由,即汇总三类LSA和五类LSA;

  实验:如下拓扑,配置ospf,并进行汇总

  分析:我们要汇总外部路由和内部路由,对于上述拓扑来讲,汇总外部路由我们只能在asbr上配置,即R3上进行汇总;汇总内部路由我们需要在abr配置,即R1上配置,因为abr发送三类LSA到其他区域;对于R2来说,它的lo接口都是内部网络,所以R2上只需要在对应ospf区域中宣告对应网络即可;

  汇总内部路由

  在R2的ospf区域中宣告对应lo接口网络

  在R1或R3上查看lsdb

  提示:可以看到在R3上lsdb中三类LSA多了4条;

  在R1上汇总R2宣告的lo接口网络

  提示:汇总需要看在那个区域汇总,即汇总那个区域的路由,就在对应区域汇总即可;上述命令表示把区域0里的三类LSA汇总为一条LSA;该LSA必须包含上述lo接口网络;

  验证:在R3或R1上查看LSDB,看看对应三类LSA是否精简成一条了?

  提示:可以看到在R1的区域1的数据库中,对应三类LSA从原来的4条变为了1条,表示我们刚才汇总的区域间路由成功了;

  验证:在R3上ping R2的lo接口,看看是否能够ping通?

  提示:可以看到R3还是可以正常和R2的lo接口正常通信;

  汇总外部路由

  在R3上创建lo接口,并配置ip地址,然后引入对应lo接口网络至ospf进程

  在R1或R2上查看lsdb

  提示:可以看到对应R1的lsdb中就多了5条5类LSA,这是因为R3导入了直连路由;

  在asbr(R3)上汇总外部路由

  提示:外部路由不属于ospf任何区域,所以我们汇总也只能在进程下配置,不能进入区域配置;上述命令表示汇总外部路由;

  验证:在R1或R2上查看lsdb,看看对应五类LSA是否被汇总成一条?

  提示:可以看到之前4条5类LSA,现在汇总成一条了;

  验证:在R1或R2上pingR3的lo接口,看看对应是否能够正常ping通?

  提示:可以看到对应通信是完全没有问题;

  总结:汇总就是把多个子网汇聚成一个大的子网,其目的主要是精简LSA、路由条目,提高路由器的性能;需要注意的是,汇总只能汇总区域间的三类LSA和外部五类LSA;区域间路由汇总,需要在对应abr上的对应区域下配置;汇总外部路由需要在对应asbr的ospf进程下配置,不能进区域;

作者:Linux-1874
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
posted @ 2021-09-05 23:52  Linux-1874  阅读(238)  评论(0编辑  收藏  举报