淺談-動態路由之OSPF的理解

2022-10-08 21:00:45

路由

在網路中,路由相當於就是一張地圖,讓路由器知道這個對應的IP封包應該往哪埠、網段走;而這個「地圖」我們稱之為路由表,不同的目的IP路由表的下一個跳也不同,其生成方式有又有多種:

  • 靜態路由:網路管理員手動定義的路由表條路
    • 預設路由:特殊的靜態路由,路由表中沒有的可以統一定義往這一路走。
  • 動態路由:通過路由協定來自動生成路由表條目,其中動態路由又有很多種,通過自治系統(AS)來劃分
    • IGP(內部網路關協定)RIP、OSPF、IS-IS、EIGRP
    • EGP(外部閘道器協定)BGP
協定名協定演演算法備註
RIP(路由資訊協定) 距離向量協定(DV)  
OSPF(開放式最短路徑優先) 鏈路狀態協定(LS) 可以用在大型的企業核心網中
IS-IS(中間系統到中間系統) 鏈路狀態協定(LS) 這個協定我用比較少,和OSPF類似
EIGRP(增強內部網路關路由協定) 鏈路狀態+距離向量協定(LS+DV) 思科私有協定
BGP(邊界閘道器協定) 距離向量協定(DV) 用在AS之間的路由協定,結合MPLS技術,實現不同AS內路由協定不同也可正常通訊

路由協定演演算法

路由協定演演算法一般是兩種,距離向量協定和鏈路狀態協定。

距離向量協定

距離向量路由協定演演算法,定期(比如RIP是30s)獲取相鄰路由器的路由表條目,對開銷更低或者新的條目進行開銷增加的操作,更新在自己的路由表條目。

  • 特點:開銷小、路由器只知道鄰居路由器的情況可能有不是最優的路由決策、收斂較慢;

鏈路狀態協定

鏈路狀態協定演演算法,獲取最多使用Dijkstra演演算法,求出最短路徑。

  • 特點:開銷大、收斂快

OSPF協定(協定號89)

OSPF是我們最常用的動態路由協定。迴歸到我們動態路由的目的:

讓路由器能夠自動地建立自己的路由表,並且能夠根據實際情況的變化適時地進行調整。

OSPF基本思想:

每個路由器將已知的鏈路狀態資訊通告鄰居,收斂後,每個路由器對全網的鏈路狀態有相同的路由認識,也就是全部拓撲。單臺路由器根據全部拓撲,使用Dijkstra計算路由。

LSA和LSDB

名詞註解
LSA(鏈路狀態通告) LSA含有路由器鏈路狀態的資訊(比如路由器編號,直連網段,開銷等),一臺路由器對於一條LSA
LSDB(鏈路狀態資料庫) 存在每臺路由器中,由多條LSA組成,實現區域內部可以達到資訊同步

 

圖1.LSA和LSDB

DB和BDR

  • DR指定路由器(Designated Router),負責建立鄰接和LSA的同步工作
  • BDR備份指定路由器(Back-up Designated Router)

DR/BDR由於埠的優先順序來進行選舉,介面的DR優先順序越大越優先

DR和BDR會與其他所有路由器形成鄰接關係並交換鏈路狀態資訊,其他路由器之間不直接交換鏈路狀態資訊

組播地址傳遞

組播IP功能
224.0.0.5(AllSPFRouter) DRother偵聽224.0.0.5
224.0.0.6(AllDRouter) DR/BDR偵聽224.0.0.6
  1. 在點到點網路,是連線單獨的一對路由器的網路、PPP(對等)網路上的有效鄰居總是可以形成鄰接關係的,在這種網路上,OSPF包的目標地址使用的是224.0.0.5來傳送LSA等路由選擇及更新資訊,這個組播地址稱為AllSPFRouters。
  2. 在廣播型網路,比如乙太網,Token Ring和FDDI,這樣的網路上會選舉一個DR和BDR,DR/BDR的傳送的OSPF包的目標地址為224.0.0.5,運載這些OSPF包的幀的目標MAC地址為0100.5E00.0005;而除了DR/BDR以外的OSPF包的目標地址為224.0.0.6,這個地址叫AllDRouters。

工作過程

  1. 發現鄰居(A、B先相互傳送Hello報文)
  2. 建立鄰接關係(網路中選取DR和BDR,網路內所有的路由器只與DR和BDR建立鄰接關係)
  3. 傳遞鏈路狀態資訊LSA(收斂以後區域內所有路由器具有相同的LSDB)
    1. 觸發更新或定時(30min)更新
    2. 增量更新(只向鄰居傳送需要LSA)
  4. 計算最優路由(Dijkstra演演算法)
    1. 使用LSDB內的LSA,對應的生產加權的有向圖,每臺路由器自動計算自己最優的路徑。

 

 圖2.計算最優路由

Area 區域劃分

  • 使用劃分的區域的方式,將大區域劃分為若干個小區域。每個區域內只需要維護本區域內的LSDB,同時可以減少LSA泛洪範圍。
  • 區域ID可以使用點32位元點分十進位制命名,也可以直接使用一個十進位制數。area 0=area 0.0.0.0

所有的區域以星型結構的方式與area0(骨幹區域)直接連線。

  • 邊界的路由器稱之為ABR,可能埠1是area0埠2是area1。

五種報文

報文型別功能
Hello 發現和維護鄰居關係
Database Description 互動鏈路狀態資料庫摘要
Link State Request 請求特定的鏈路狀態資訊
Link State Update 傳送詳細的鏈路狀態資訊
Link State Ack 傳送確認報文