OSPF協議的工作原理

2021-03-25 18:10:06 云杰通信 99

OSPF協議的工作原理

  OSPF協議是一種鏈路狀態協議,那么OSPF是如何來描述鏈路連接狀況呢?

  抽象模型Model 1表示路由器的一個不連接其他路由器,只連接了一個段。此時,對于運行 OSPF的路由器R1,只能識別本身,無法識別該網段上的設備(主機等);抽象模型Model 2表示路由器R1通過點對點鏈路(如PPP、HDLC等)連接一臺路由器R2;抽象模型Model 3表示路由器R1通過點對多點(如Frame Relay、X.25等)鏈路連接多臺路由器R3、R4等,此時路由器R5、R6之間不進行互聯;抽象模型Model 4表示路由器R1通過點對多點(如Frame Relay、X.25等)鏈路連接多臺路由器R5、R6等,此時路由器R5、R6之間互聯。以上抽象模型著重于各類鏈路層協議的特點,而不涉及具體的鏈路層協議細節。該模型基本表達了當前網絡鏈路的連接種類。

  在OSPF協議中,分別對以上四種鏈路狀態類型作了描述:

  對于抽象模型Model 1(以太網鏈路),使用Link ID(連接的網段)、Data(掩碼)、Type(類型)和Metric(代價)來描述。此時的Link ID即為路由器R1接口所在網段,Data為所用掩碼,Type為3(Stubnet),Metric為代價值。

  對于抽象模型Model 2(點對點鏈路),先使用Link ID(連接的網段)、Data(掩碼)、Type(類型)和Metric(代價)來描述接口路由,以上各參數與Model 1相似。接下來描述對端路由器R2,四個參數名不變,但其含義有所不同。此時Link ID為路由器R2的Router ID,Data為路由器R2的接口地址,Type為1(Router),Metric仍為代價值。

  對于抽象模型Model 3(點對多點鏈路,不全連通),先使用Link ID(連接的網段)、Data(掩碼)、Type(類型)和Metric(代價)來描述接口路由,以上各參數與Model 1相似。接下來分別描述對端路由器R3、R4的方法,與在Model 2中描述R2類似。

  對于抽象模型Model 4(點對多點鏈路,全連通),先使用Link ID(網段中DR的接口地址)、Data(本接口的地址)、Type(類型)和Metric(代價)來描述接口路由。此時Type值為2(Transnet),然后是本網段中DR(指定路由器)描述的連接通告。

  計算路由

  路由器完成周邊網絡的拓撲結構的描述(生成LSA)后,發送給網絡中的其他路由器,每臺路由器生成鏈路狀態(LSDB)。路由器開始執行SPF(最短路徑優先)算法計算路由,路由器以自己為根節點,把LSDB中的條目與LSA進行對比,經過若干次的遞歸和回溯,直至路由器把所有LSA中包含的網段都找到路徑(把該路由填入路由表中),此時意味著所到達的該段鏈路的類型標識為3(Stubnet)。

  確保LSA在路由器間傳送的可靠性

  從上文可以知道,作為鏈路狀態協議的OSPF的工作機制,與RIP等距離向量的路由協議是不一樣的。距離向量路由協議是通過周期性地發送整張路由表,來使網絡中的路由器的路由信息保持一致。

  在路由器R1初始化完成后,它將向路由器R2發送Hello數據包。此時R1并不知道R2的存在,因此在數據包中不包含R2的信息(參數seen=0)。而R2在接收到該數據包后,將向R1發送Hello包。此時在路由器R1和R2之間就建立了鄰接關系,它們就可以把LSA發送給對方。當然,在發送時OSPF考慮到要盡量減少占用的帶寬,它采用了一些技巧,我們將在下一節簡單介紹這些內容。

  眾所周知,IP協議是一種不可靠的、面向無連接的協議,它本身沒有確認和錯誤重傳機制。那么,在這種協議基礎之上,要做到數據包丟失或出錯后進行重傳,上層協議必須本身具備這種可靠的機制。OSPF采取了與TCP類似的確認和超時重傳機制。鏈路狀態數據庫描述(DD)數據包中包含了一些參數,序列號(seq)、報文號(I)、結尾標識(M)及主從標志(MS)。

  高效率地進行LSA的交換

  在RIP等距離向量路由協議中,路由信息的交互是通過周期性地傳送整張路由表的機制來完成的,該機制使距離向量路由協議無法高效地進行路由信息的交換。在OSPF協議中,為了提高傳輸效率,在進行鏈路狀態通告(LSA)數據包傳輸時,使用包含LSA頭(Head)的鏈路狀態數據庫描述數據包進行傳輸,因為每個LSA頭中不包含具體的鏈路狀態信息,它只含有各LSA的標識(該標識唯一代表一個LSA),所以,該報文非常小。

  由此可見,OSPF協議采用增量傳輸的方法來使鄰接路由器保持一致的鏈路狀態數據庫(LSDB)。

  8 小結

  綜上所述,我們可以歸納出在OSPF協議中使用到的五種協議報文,并簡單介紹了它們的作用,我們作個簡單的小結:

  ◆ Hello報文,通過周期性地發送來發現和維護鄰接關系;

  ◆ DD(鏈路狀態數據庫描述)報文,描述本地路由器保存的LSDB(鏈路狀態數據庫);

  ◆ LSR(LS Request)報文,向鄰居請求本地沒有的LSA;

  ◆ LSU(LS Update)報文,向鄰居發送其請求或更新的LSA;

  ◆ LSAck(LS ACK)報文,收到鄰居發送的LSA后發送的確認報文。

  OSPF協議采用的特殊機制

  指定路由器和備份指定路由器

  在OSPF協議中,路由器通過發送Hello報文來確定鄰接關系,每一臺路由器都會與其他路由器建立鄰接關系,這就要求路由器之間兩兩建立鄰接關系,每臺路由器都必須與其他路由器建立鄰接關系,以達到同步鏈路狀態數據庫的目的,在網絡中就會建立起n×(n-1)/2條鄰接關系(n為網絡中OSPF路由器的數量),這樣,在進行數據庫同步時需要占用一定的帶寬。

  為了解決這個問題,OSPF采用了一個特殊的機制:選舉一臺指定路由器(DR),使網絡中的其他路由器都和它建立鄰接關系,而其他路由器彼此之間不用保持鄰接。路由器間鏈路狀態數據庫的同步,都通過與指定路由器交互信息完成。這樣,在網絡中僅需建立n-1條鄰接關系。

  要被選舉為指定路由器,該路由器應符合以下要求:

  ◆ 該路由器是本網段內的OSPF路由器;

  ◆ 該OSPF路由器在本網段內的優先級(Priority)>0;

  ◆ 該OSPF路由器的優先級最大,如果所有路由器的優先級相等,路由器號(Router ID)最大的路由器(每臺路由器的Router ID是唯一的)被選舉為指定路由器。

  滿足以上條件的路由器被選舉為指定路由器,而第二個滿足條件的路由器則當選為備份指定路由器。

  指定路由器和備份指定路由器的選舉,是由路由器通過發送Hello數據報文來完成的。

  OSPF協議中的區域劃分

  OSPF協議在大規模網絡的使用中,鏈路狀態數據庫比較龐大,它占用了很大的空間。在執行最小生成數算法時,要耗費較長的時間和很大的資源,網絡拓撲變化的概率也大大增加。這些因素的存在,不僅耗費了路由器大量的存儲空間,加重了路由器CPU的負擔,而且,整個網絡會因為拓撲結構的經常變化,長期處于“動蕩”的不可用的狀態。

  OSPF協議之所以能夠支持大規模的網絡,進行區域劃分是一個重要的原因。

  OSPF協議允許網絡方案設計人員根據需要把路由器放在不同的區域(Area)中,兩個不同的區域通過區域邊界路由器(ABR)相連。在區域內部的路由信息同步,采取的方法與上文提到的方法相同。在兩個不同區域之間的路由信息傳遞,由區域邊界路由器(ABR)完成。它把相連兩個區域內生成的路由,以類型3的LSA向對方區域發送。

  OSPF協議使用區域號(Area ID)來區分不同的區域,其中,區域0為骨干區域(根區域)。因為在區域間不再進行鏈路狀態信息的交互(實際上,在區域間傳遞路由信息采用了可能導致路由自環的遞歸算法),OSPF協議依靠維護整個網絡鏈路狀態來實現無路由自環的能力,在區域間無法實現。

肥臀浪妇太爽了快点再快点_国产自在自线午夜精品_成年片黄网站色大全网站