前文我們瞭解了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
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
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
檢視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程式下配置,不能進區域;