HCNP Routing&Switching之OSPF LSA型別

1874發表於2021-08-31

  前文我們瞭解了OSPF中的虛連線相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15202348.html;今天我們來聊一聊OSPF資料包中LSA型別相關話題;

  我們知道OSPF的核心就是通過LSA建立LSDB資料庫,然後根據SPF演算法從LSDB資料庫中的內容計算出對應的路由;其中LSA並不是ospf的資料包型別,它存在於LSU當中;對於不同型別的LSA,其作用和內容也各不相同;

  LSA頭部

  提示:LSA是ospf鏈路狀態資訊的載體,是LSDB的最小組成單位,即lsdb是由一條條LSA構成的;所有的LSA都擁有相同的頭部;其中LS age表示LSA已經生存的時間,單位是秒,預設這個欄位會每半個小時更新一次,即1800秒就會更新一次LSA;LS type欄位主要用於標識LSA的格式和功能,對於不同型別的LSA其格式和功能各不相同,常用的LSA型別有五種;Link State ID用於描述該LSA所描述的鏈路的標識;advertising Router用於描述產生該LSA的路由器的router ID;LSsequence number用於檢測舊的和重複的LSA;LS type,Link State ID和Advertising Router這三個欄位共同標識了一條LSA,即LSA判斷是否一樣,就看這三個欄位是否一樣;

  Router—LSA描述P2P網路

  實驗:如下拓撲,配置OSPF

  R1的配置

HCNP Routing&Switching之OSPF LSA型別
sys
sys R1
int s4/0/0
ip add 12.0.0.1 24
int lo 1
ip add 1.1.1.1 32
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0
net 1.1.1.1 0.0.0.0
View Code

  R2的配置

HCNP Routing&Switching之OSPF LSA型別
sys
sys R2
int s4/0/0
ip add 12.0.0.2 24
int lo 2
ip add 2.2.2.2 32
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
net 2.2.2.2 0.0.0.0
View Code

  驗證:在R1上抓包,看看對應LSU中的LSA的型別和內容

  提示:從上面的抓包資訊可以看到,對應LSU中LSA的型別為Router-LSA;描述的是1.1.1.1這條鏈路的資訊;其中該LSA是由1.1.1.1這臺路由器發出的;該LSA裡包含了兩條鏈路,一條是12.0.0.0,掩碼是24,開銷為48;一條是1.1.1.1,掩碼為32,開銷為0;當然這些是我們用抓包軟體上抓到的ospf LSU中的內容;我們也可以用命令在對應路由器上檢視;

  在R1上檢視自己傳送的一類LSA內容

  提示:type是用於描述LSA的型別;其中Router表示一類LSA,該LSA是由路由器自己產生,主要用於描述自身所在區域鏈路狀態資訊;ls id表示鏈路狀態的ID;adv rtr用於描述產生此LSA的路由器router id ;第一個link ID表示鄰居路由器的router id;data表示宣告該路由LSA的路由器介面ip地址;link type用於描述對應鏈路的網路型別,metric用於描述對應鏈路的開銷;後面的link id用於描述對應的路由資訊,其中link id用於描述對應子網的ip地址,data表示掩碼,metric用來描述開銷;這裡需要注意一點,鏈路型別並不是ospf定義的四種網路型別,router LSA描述的鏈路型別有,P2P(Point-to-point點到點型別);transnet是描述一個從本路由器到一個transit網段的連線;例如多路訪問的網段資訊;stubnet是描述一個從本路由器到一個stu網段(例如到迴環介面)的連線;

  檢視lsdb資料庫

  提示:可以看到對應lsdb資料庫就只有兩條資訊其型別為router,即一類LSA;一條是R1傳送的一條是R2傳送的,有了這兩條資訊,ospf就可以根據裡面的內容,構建出對應的路由;

  檢視ospf路由

  提示:ospf根據lsdb中的LSA計算出對應的路由資訊;從上面的實驗可以看到,對於點到點型別的鏈路,只需要用型別1的lsa就把對應網路描述清楚了;

  總結:一類LSA是每個路由器都會傳送的LSA,其主要作用描述對應路由器介面所在區域的埠鏈路狀態的集合;該LSA只在所描述的區域內泛洪,不能跨區域;對於點到點型別的鏈路,一類LSA就足以描述清楚對應介面鏈路狀態;

  Router-LSA描述MA網路(多路訪問網路)

  實驗:如下拓撲,配置ospf

  提示:該拓撲和上面的拓撲沒有太大的區別,唯一的區別是對應鏈路型別發生了變化,此拓撲鏈路型別就是BMA(廣播多路訪問);

  配置R1

HCNP Routing&Switching之OSPF LSA型別
sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
int lo 1
ip add 1.1.1.1 32
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0
net 1.1.1.1 0.0.0.0
View Code

  提示:這裡的介面不是串列埠,而是乙太網介面;

  配置R2

HCNP Routing&Switching之OSPF LSA型別
sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int lo 2
ip add 2.2.2.2 32
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
net 2.2.2.2 0.0.0.0
View Code

  在R1上抓包,檢視對應傳送的一類LSA

  提示:可以看到在R1上抓包,明顯比上次抓到的包要多,其次在LSU中的一類LSA中,對應網路並沒有子網掩碼;對應網路的子網掩碼卻在另一個LSA中,該LSA型別為Network-LSA;除了有對應介面ip的子網掩碼外,二類LSA還描述了對應鏈路上有幾個路由器,它們的router ID;

  在R1上檢視自己傳送的一類LSA內容

  提示:在ma網路型別的Router-LSA中,Link ID是DR介面ip地址,Data為本地介面的ip地址;從上面的資訊可以看到,現在在R1傳送的一類LSA中,並沒有包含對應網路的掩碼;其原因是在多路訪問網路中一類LSA並不足以描述清楚對應鏈路狀態;所以產生了2類LSA;

  在R1上檢視二類LSA資訊

  提示:type表示LSA的型別,network表示二類LSA;LS id用來描述對應DR介面ip地址;adv rtr用來描述產生此二類LSA的路由器的router id,即DR的router id;net mask用來描述該網段的網路掩碼;attached router用來描述連線到該網段的路由器列表;基於上述欄位資訊,LS id和Net mask做與運算,即可算出該網路的ip網路號;上述資訊中我們可以看到DR所在路由器的router id為1.1.1.1,DR所在介面的ip地址為12.0.0.1;對應網路的子網掩碼為24,對應有兩臺路由器連線在這個多路訪問網路中;

  驗證:檢視DR是否是R1的g0/0/0介面?

  提示:可以看到R1的g0/0/0介面就是DR,和上述的描述一樣;

  檢視lsdb

  提示:現在R1的LSDB中,要比點到點網路中的LSDB要多一條二類LSA;

  總結:在多路訪問網路中,光憑一類LSA並不能完全描述清楚對應介面鏈路狀態,需要藉助二類LSA進行補充;對於二類LSA來說,它是由DR介面發出,主要目的是用來描述多路訪問網路上所連線路由器的列表,以及對應網路的子網掩碼;該型別LSA只會在對應網路所屬的區域內泛洪,不能跨區域;綜上所述,一類LSA和二類LSA都只能在對應介面所屬區域內泛洪,不能跨區域;對於一類LSA來說,是區域內的每個路由器產生,主要用來描述對應介面鏈路狀態集合;而二類LSA只會在多路訪問網路中產生,其原因是二類LSA是DR介面發出,主要用來描述多路訪問網路上所連線的路由器以及對應網路的掩碼;而只有在多路訪問網路中才會選舉DR,所以二類LSA只會在多路訪問網路中存在,對於點到點網路中不會存在二類LSA;也就是說在ospf裡一類LSA是必須要產生的,對於是否有二類LSA產生,取決對應網路型別;

  對於單區域,有一類LSA和二類LSA就能夠將對應網路描述清楚,對於多區域,ospf區域與區域間該如何傳遞路由資訊呢?

   實驗:如下拓撲配置ospf

  R1的配置

HCNP Routing&Switching之OSPF LSA型別
sys
sys R1
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
View Code

  R2的配置

HCNP Routing&Switching之OSPF LSA型別
sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.2 24
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
area 1
net 23.0.0.2 0.0.0.0
View Code

  R3的配置

HCNP Routing&Switching之OSPF LSA型別
sys
sys R3
int g0/0/0
ip add 23.0.0.3 24
ospf 1 router-id 3.3.3.3
area 1
net 23.0.0.3 0.0.0.0
View Code

  在R2上檢視lsdb

  提示:可以看到在R2上檢視lsdb就有兩個資料庫,在area 0和area 1中都多了一條sum-net型別的LSA;這兩條LSA都是由R2產生;

  在R2上檢視sum-net型別LSA內容

  提示:型別為sum-net的LSA是三類LSA,其中LS id用來描述目標網路地址;ada rtr用來描述此LSA產生的路由器的router id;net mask用來描述對應目標網段的子網掩碼;通過上述的資訊,我們不難看到,該LSA就是在描述去往12.0.0.0/24的網路資訊;該LSA是由R2產生,其開銷為1;

  在R1或R3上檢視abr或asbr

  提示:可以看到R2是abr(區域邊界路由器);

  區域間路由傳遞

  提示:上述描述了三類LSA傳遞的過程;在area 1中RTD首先會傳送一條一類LSA在區域1裡泛洪(迴環介面的網路型別是點到點型別,所以沒有二類LSA)其主要目的是描述自己有192.168.1.0/24網路介面,在RTB收到對應一類LSA以後,它一看自己有多個區域,所以它會把區域1裡的一類LSA彙總,然後以三類LSA的格式向區域0傳送;此時區域0中的其他路由器收到該型別LSA就會學習到對應去往192.168.1.0/24網路的路由,下一跳都指向對應路由器傳送三類LSA的介面ip地址(RTB);當區域0中的RTC收到RTB傳送的三類LSA以後,它一看自己又連線著多個區域,此時RTC就會把RTB傳送的LSA中宣告者(adv rtr)欄位修改成自己,然後再向區域2傳送;此時區域2中的路由器收到此類LSA,就會把對應去往192.168.1.0/24網路的路由,下一跳指向RTC傳送三類LSA的介面ip地址;對應192.168.2.0/24網路也是類似的過程;首先在區域2裡是一類LSA,然後經過RTC,RTC就會以三類LSA向區域0傳送,此時宣告者還是RTC,在經過RTB時,對應三類LSA的宣告者會被修改為RTB,然後再由RTB向區域1傳送;我們可以理解三類LSA就是對應的路由資訊;一條三類的LSA只能描述一條路由資訊;所以區域間有多少個網段,對應就會傳送多少條三類LSA;

  總結:三類LSA是由ABR產生,其主要作用是描述和傳遞區域間的路由;該型別LSA會在所生成的區域內泛洪,再由其他區域的ABR重新生成;重新生成的目的是更換宣告者,以便其他路由器找到對應的宣告者;對於單純的ospf程式來說(除開外部路由),有了一類、二類LSA可以描述單區域路由,三類LSA可以描述區域間的路由;有了這三種型別LSA,對應ospf的lsdb,路由計算都可以正常完成;

相關文章