OSPF泛洪


ospf 泛洪 
、研究者:付澤群(月光) 
    
 泛洪的幾個要點: 
一:路由器在完全鄰接之前(注意同步指的是DBD交互完成,而完全鄰接則是指兩個鄰居路由器完成了LSA的交互,鏈路狀態數據庫達到一致) 
會在兩個鄰居路由器之間交互信息,注意路由器不會把他收到的LSU(鏈路狀態更新數據包)直接泛洪出去,他會查看 LSU當中的所包含的 LSA的類型,新舊,看是否有必要泛洪出去,避免一個舊的LSA或者具有破壞性的LSA對網絡造成的影響。然后將有必要泛洪出去的放入泛洪列表中,再將這些需要泛洪的LSA組建成新的LSU泛洪出去,所以說,泛洪可以到達整個OSPF區域,但是更新卻只會在兩個鄰居路由器之間進行。 
二:泛洪只有當至少一個鄰居路由器與自己完全鄰接狀態時才會發生,因為泛洪的目地是為了讓整個OSPF區域的認識達到一致,如果說連自己都沒有和一個鄰居路由器的鏈路狀態數據庫達到一致,那就沒有必要把自己的認識讓OSPF區域中的其他路由器知道。 
  
  
提出問題:為什么 需要泛洪列表呢? 
  
解決問題:要知道,針對不同的區域和鄰居,可能需要泛洪不同的LSA,例如ABR。所以建立起泛洪列表是很有必要。 
    
泛洪的過程簡述: 
在Ospf路由器與至少一個鄰居路由器形成完全鄰接狀態后,會為每個處於完全鄰接狀態的鄰居構建一個泛洪列表 ,然后,每發送了一個LSA之后(這里要注意,一條LSA並不是只描述一條鏈路信息,而是可以描述多條,並且不同類型的LSA所描述的內容也不相同,具體可看《TCP/IP路由技術卷一》中的相關內容)會為每個鄰居建立一個重傳列表,並將剛才發送出去的LSA放入重傳列表中,如果在5秒之內(RxmtInterval),還未收到此鄰居的回復信息,就會重傳一次,無論在何種網絡類型中,重傳的鏈路狀態更新數據包總是以單播的形式發送。在收到了鄰居的回復之后,就會將該條LSA從重傳列表中清除。 
路由器在收到了鄰居路由器的LSA之后,會進行回復,回復的方式分為兩種,一種是隱式確認,另一種則是顯式確認 
隱式確認:鄰居路由器通過向始發路由器發送一個包含由原來那個LSA拷貝信息的更新數據包。一般來講隱式確認比顯式確認更加有效。舉子個例子來說,就是當多路訪問網絡中的DR要向其中的DRother發送更新信息的時候,它可以發送一個包含所有DRother通告給他的LSA信息,這樣做有兩個好處:首先,它可以讓網絡中的DRother路由器的數據庫達到一致。其次,因為這個更新數據包中包含有所有DRother路由器通告的LSA,所以數據包還可以作為隱式回復用。 
顯式確認:鄰居路由器通過發送一個鏈路狀態數據庫確認數據包(ACK)來確認所收到的LSA,ACK無需攜帶完整的LSA信息,只需攜帶LSA頭部信息即可,可用一條ACK信息來確認多個始發路由器的LSA,例如多路網絡中的DR回復DRother。 
確認可以是延遲或直接的,延遲確認的好處是,更多的LSA可以通過一個數據包進行確認,但是一個被延遲傳送的確認數據包,其時間必須小於RxmtInterval,這是為了不必要的數據包重傳。 
直接確認總是立即發送,並且以單播形式發送。直接確認將在下面兩種情況發送: 
1>                從鄰居收到了一個重復的LSA,可能表明鄰居沒有收到,因此有必要立即回復一個確認數據包。 
2>                收到了一個老化時間達到最大的LSA信息,說明始發路由器急於想在整個OSPF區域里清除此LSA。 
  
為了保證泛洪的可靠性,除了確認以外,還提供了序列號,效驗和,老化時間來保證收到的每條LSA都是最新的,當收到某條LSA的多個相同實例的時候,將會通過下列步驟來判斷LSA的新舊 
1. Compare the sequence numbers. The LSA with the highest sequence number is more recent. 
2.If the sequence numbers are equal, then compare the checksums. The LSA with the highest unsigned checksum is the more 
recent. 
3.If the checksums are equal, then compare the age. If only one of the LSAs has an age of MaxAge (3600 seconds), it is 
considered the more recent. 
4. If the ages of the LSAs differ by more than 15 minutes (known as MaxAgeDiff), the LSA with the lower age is more recent. 
5. If none of the preceding conditions are met, the two LSAs are considered identical. 
這里解釋下第三條: 
第三條的作用在於,如果路由器的某條LSA序列號的到達了最大值,即 
MaxSequenceNumber,但是又必須為這個LSA創建一個新的實例,那么就必須在所有的數據庫中清楚此條老的LSA,而做法就是把老化時間達到最大值,並泛洪出去。此時接受路由器有必要迅速發送一個回復信息來告訴始發路由器,我這里的此條LSA已經被清除。一旦始發路由器從所有的鄰接鄰居路由器那里得到了確認,那么就會重新泛洪一個序列號為InitialSequenceNumber的該條LSA實例。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM