前文我們了解了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.0View 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.0View 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.0View 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 出處:https://www.cnblogs.com/qiuhom-1874/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297740.html
標籤:其他
