3.HCNP-R&S-IERN——OSPF協議報文和鏈路狀態通告
本次介紹OSPF協議報文和鏈路狀態通告。包括協議報文頭部,報文型別和LSA型別等
學習目標:
1. 理解OSPF報文頭和報文型別
2. 理解鏈路狀態通告型別
OSPF是直接執行在IP協議上的協議,使用的IP協議號為89。
OSPF有五種報文型別,但是OSPF報文頭部格式都是相同的。
所有的OSPF報文使用相同的OSPF報文頭部。
Version填2,Type有五種,Packet Length指出OSPF報文總長度,包括報文頭部。單位是位元組。
Router ID是生成此報文的路由器的Router ID。
Area ID是此報文需要被通告的區域。
AuType是驗證此報文所應當使用的驗證方法。
Authentication是驗證此報文時所需要的密碼等資訊。
驗證一個OSPF報文頭部是否合法包括:
1. version為2
2. Area ID應當滿足下列兩種情況之一:(1)和接收埠所屬區域的Area ID一致
(2)不一致的話,但是值為0,表示該報文屬於骨幹區域,而且是在一個虛連線商傳送的。
3. AuType欄位必須與該區域配置的AuType一致。
4. Authentication為驗證資訊,內容與AuType欄位相關。
只有通過驗證的OSPF報文才能被接收,否則將不能正常建立鄰居關心。VRP支援兩種驗證方式:區域驗證方式和介面驗證方式。當兩種驗證方式都存在時,優先使用介面驗證方式。
OSPF共有五種報文型別。
Hello報文用於發現和維護鄰居關係,在廣播型網路和NBMA網路上Hello也用來選舉DR和BDR。
DD報文通過攜帶LSA頭部資訊來描述鏈路狀態的摘要資訊。
LS Request報文用於傳送下載LSA的請求資訊,這些被請求的LSA是通過接收DD報文發現的,但是本路由器上沒有的。
LS Update報文通過傳送詳細的LSA來同步鏈路狀態資料庫。
LS Ack報文通過泛洪確認資訊確保路由資訊的交換過程是可靠地。
除了Hello報文外,其他所有報文只在建立了鄰接關係的路由器之間傳送。
除Hello報文外,其他的OSPF報文都攜帶LSA資訊。
LS age:表示LSA已經生存的時間,單位是秒。
LS type:標識了LSA的格式和功能,常用的LSA型別有五種
Link State ID:表示該LSA所描述的那部分鏈路的標識,例如Router ID等
Advertising Router:產生此路由器的Router ID。
LS sequence number:用於檢測舊的和重複的LSA。
其中,LS type,Link State ID和Advertising Router的組合共同標識一條LSA。
Router-LSA和Network-LSA用於計算區域內路由,這兩類LSA描述的是具體的鏈路狀態資訊。
每臺路由器都會向外釋出Router-LSA。只有DR向外釋出Network-LSA。
Network-Summary-LSA用於計算區域間路由資訊。這類LSA描述的是精簡的路由資訊,而不是詳細的鏈路狀態資訊。
預設路由也可以通過Network-Summary-LSA釋出。
去往網段N1的路由通過Router-LSA釋出到ABR,ABR將鏈路狀態抽象成路由資訊,通過Network-Summary-LSA釋出到其它區域。
第四類用於描述如何到達ASBR,第五類由ASBR描述如何到達AS外部某網段,這兩類LSA配合起來用於計算AS外部路由。
ASBR使用第五類LSA描述外部路由,這些第五類LSA在整個AS內部泛洪。
當ABR向其它區域通告所接收到的第五類LSA時,同時為該區域生成一條第四類LSA描述如何到達ASBR。第四類LSA只能在一個區域內泛洪,第五類LSA每泛洪到一個區域,相關的ABR就要為該區域重新生成一條新的第四類LSA。
Link State ID是該LSA所描述鏈路的標識,對於不同型別的LSA,其含義也不同。
LS type,Link State ID和Advertising Router的組合唯一標識一條LSA,但是對於一條LSA,有可能同時存在多個例項。LS sequence number用於檢查哪一個例項更新。
LS sequence number是一個32位的有符號整數,用於檢測過期和重複的LSA。由於LS sequence number是32位有符號整數,因此數值0x80000000,也就是2^-31是最小的int數值,但此數值是被保留的,協議可用的最小數值為0x80000001。
當路由器生成一條新的LSA時,使用序列號0x80000001作為該LSA的初始序列號,此後,每次更新該LSA,序號加1.序列號越大表示該LSA例項越新。
LS Age:此數值的單位是秒,在LSDB中的LSA的LS age隨時間而增長。一條LSA在向外泛洪之前,LS age的值要增加InfTransDelay(該值可以在埠上設定,預設為1秒,表示在鏈路上傳輸的延遲)。
如果一條LSA的LS age達到了LSRefreshTime(30分鐘),這條LSA的生成者需要重新生成一個該LSA的例項,如果一條LSA的LS Age達到了MaxAge(1小時),這條LSA就要被刪除。
LS age數值越小表示LSA越新。
如果路由器希望從網路中刪除一條自己此前生成的LSA,則重新生成該條LSA的一個例項,將LS Age設定為Max Age即可。
如果路由器收到一條LS Age設定為Max Age的LSA,則從LSDB中刪除此LSA(如果LSDB中存在此LSA)。
問題:
1. 如何檢查OSPF報文是否合法?
答:檢查版本,Area ID,驗證方法和驗證資訊。
2. 如何配置OSPF的報文的認證?
答:有區域驗證和介面驗證兩種方式。使用區域驗證時,一個區域中所有路由器在該區域下的驗證模式和口令必須一致;介面驗證方式用於在相鄰的路由器之間設定驗證模式和口令,優先順序高於區域驗證方式。
3. OSPF的LSA型別有哪些?
答:Router-LSA,Network-LSA,Network-Summary-LSA,ASBR-Summary-LSA和AS-External-LSA。
4. 如何檢測LSA的新舊?
答:使用LS Sequence Number和LS Age,Sequence Number越大表示LSA越新,如果Sequence Number一致,則比較LS age,LS age越小表示LSA越新。