1. 程式人生 > >第6章 靜態路由和動態路由(4)_OSPF動態路由協議

第6章 靜態路由和動態路由(4)_OSPF動態路由協議

6. OSPF動態路由協議

6.1 OSPF協議(Open Shortest Path First,OSPF開放式最短路徑優先協議

(1)通過路由器之間通告鏈路的狀態來建立鏈路狀態資料庫,網路中所有的路由器具有相同的鏈路狀態資料庫,通過該資料庫構建出網路拓撲。

(2)執行OSPF協議的路由器通過網路拓撲計算到各個網路的最短路徑(開銷最小的路徑),路由器使用這些最短路徑來構造路由表。

6.2 OSPF術語

(1)Router-ID:每一臺OSPF路由器只有一個Router-ID,使用IP地址的形式來表示,該ID可以手工指定或路由器上活動Loopback介面中最大的IP地址,如C類地址優先於B類地址,注意非活動介面的IP地址不能被用作Router-ID。如果沒有活動的Loopback介面,則選擇活動物理介面IP地址最大的。

(2)開銷(Cost)

  ①OSPF協議選擇最佳路徑的標準是頻寬,頻寬越高計算出來的開銷越低。到達目標網路的各個鏈路累計開銷最低的,就是最佳路徑。用Metric(度量值)來表示開銷,如10Mb/s介面(10 000 000),其Metric=100 000 000/10 000 000 = 10。其中的分子是個固定值。

  ②OSPF路由器計算到目標網路的Metric值,必須將沿途所有介面的Cost值累加起來,但只累加出介面,不計算進介面。

  ③OSPF會自動計算介面上的Cost值,但也可以通過手工指定該介面的Cost值手工指定的值優先於自動計算的值。如果到目標網路Cost值相同,會執行負載均衡,最多有6條鏈路同時執行負載均衡。

(3)鏈路(Link):執行在OSPF程序下的路由器介面。

(4)鏈路狀態(Link-State,LSA):即OSPF介面上的描述資訊。如介面的IP地址、子網掩碼、網路型別、Cost值等等。OSPF路由器之間交換的並不是路由表,而是鏈路狀態。

(5)鄰居(Neighbor)

  ①要想在OSPF路由器之間交換LSA,必須先形成OSPF鄰居。只有鄰居才會交換LSA,路由器將鏈路狀態資料庫中所有的內容毫不保留地發給所有鄰居

  ②OSPF靠週期性地傳送Hello包來建立和維護。當超過4倍的Hello時間,也就是Dead時間過後還沒收到鄰居的Hello包,鄰居關係將被斷開。

6.3 OSPF

協議工作過程

(1)鄰居表的建立

  ①當R1路由器剛開始工作時,介面狀態為down state,然後R1傳送一個 Hello包,狀態變為init state,等收到R2路由器傳送來的Hello資料包,看到自己的ID出現在其應答的鄰居表中,就建立了鄰接關係,將其狀態改為雙向(two-way state)。

  ②OSPF規定,每兩個相鄰路由器每隔10秒要交換一次問候資料包這樣就能確定哪些鄰站是可達的若40秒鐘沒收到某相鄰路由器發來的問候資料包,則可認為該相鄰路由器不可到達,應立即修改鏈路狀態資料庫,並重新計算路由表。

  ③路由器通過傳送Hello得知哪些相鄰路由器在工作,以及將資料發往相鄰路由器所需的“代價”,生成“鄰居表”。

(2)拓撲表的建立

  ①交換狀態:OSPF讓每一個路由器相鄰路由器交換己有的鏈路狀態摘要資訊

  ②載入狀態:經過與相鄰路由器交換摘要資訊後,路由器就使用鏈路狀態請求資料包向對方請求傳送自己所缺少的某些鏈路狀態專案的詳細資訊。經過一系列的分組交換,全網同步的鏈路資料庫就建立了。

  ③完全鄰接狀態:鄰居間的鏈路狀態資料庫同步完成,通過鄰居鏈路狀態請求列表為空且鄰居狀態為Loading判斷

(3)生成路由表

  ①每個路由器按照產生的全區域資料拓撲圖,再執行最短路徑演算法,產生到目標網段的路由條目

  ②在網路執行中,只要一個路由器的鏈路狀態發生變化,該路由器就要使用鏈路狀態更新資料包,用洪泛法向全網更新鏈路狀態。(洪泛法指的是路由器通過所有輸出埠向所有相鄰的路由器傳送訊息。而每一個相鄰路由器又再將此訊息發往其所有的相鄰路由器(但不再發送給剛剛發來訊息的那個路由器)。這樣,最終整個區域中所有的路由器都得到這個訊息的一個副本,所以OSPF總是比RIP收斂更快,也沒有RIP那種“壞訊息傳播得慢”的問題。)

6.4 OSPF的5種報文

(1)問候資料包(hello包):發現並建立鄰接關係。

(2)資料庫描述資料包:向鄰居給出自己的鏈路狀態資料庫中的所有鏈路狀態專案的摘要資訊

(3)鏈路狀態請求(LSR)資料包:向對方請求某些鏈路狀態專案的完整資訊

(4)鏈路狀態更新(LSU)資料包:用洪泛法對全網更新鏈路狀態。這種資料包是OSPF協議最核心的部分,也是最複雜的資料包。

(5)鏈路狀態確認(LSAck):對LSU做確認

6.4 配置OSPF單區域

(1)配置OSPF協議(以R1路由器為例)

  ①R1(config)#router ospf 1  //1表示給ospf程序指定一個程序編號

  ②R1(config-router)#network 192.168.0.0 0.0.255.255 area 0,network的作用是為本路由器的OSPF程序指定網路範圍,路由器R1的三個介面都屬於192.168.0.0/16這個網段,可以合併,但注意使用的是反轉掩碼。

(2)檢視OSPF協議的三張表

  ①顯示鄰居資訊:R1#show ip ospf neighbor (注意NeighborID就是鄰居路由的ID。FULL狀態表示路由器與其他鄰居處於完全鄰接狀態)

  ②顯示鄰居詳細資訊:R1#show ip ospf neighbor detail

  ③顯示鏈路狀態資料庫:R1#show ip ospf database(其中的ADV Router表示通告鏈路狀態的路由器)

  ④檢視完全的鏈路狀態資料庫:R1#show ip ospf database router(每條鏈路狀態包括自己與哪個路由器直連,以及自己連線著哪些網段)

  ⑤檢視路由表:R1#show ip route或R1#show ip route ospf(只顯示OSPF生成的路由表)

(3)監控OSPF協議的活動

  ①R1#debug ip ospf ? //檢視能診斷的事件

  ②R1#debug ip ospf hello //顯示hello資料包的活動(採用多播地址224.0.0.5)

  ③R1#debug ip ospf flood //洪泛資料包跟蹤,顯示鏈路狀態更新(LSU)資料包的傳送和接收。

  ④R1#undebug all  //關閉診斷

(4)驗證OSPF協議的健壯性

  ①PC1> tracer 192.168.3.2 //通過R1→R2→R3

  ②斷開R1和R2之間的鏈路,再次PC1> tracer 192.168.3.2 //通過R1→R4→R5→R6

6.5 OSPF多區域

(1)自治系統與OSPF區域

  ①因特網的規模非常大,有成千上萬的路由裝置的互連在一起。如果讓所有的路由器知道所有網路怎樣到達,則路由表將非常大

  ②許多單位不願外界瞭解自己單位網路的佈局細節以及本部門所採用的路由選擇協議。

  ③劃分區域的好處就是利用洪泛法交換鏈路狀態資訊的範圍侷限於每一個區域而不是整個自治系統。在一個區域內部的路由器只需要知道本區域的完整網路拓撲,而不需要知道其他區域的網路拓撲。

  ④OSPF使用層次結構的區域劃分,在上層的區域叫主幹區域(識別符號為0.0.0.0),其作用是連通其下層的區域。從其他區域來的資訊都由區域邊界路由器進行概括(路由彙總)(如上圖主幹路由器有R1、R2、R3,自治系統邊界路由器有R3,區域邊界路由器有R4和R5)

(2)兩大類路由選擇協議

  ①內部閘道器協議(IGP):即在一個自治系統內部使用的路由選擇協議,與在網際網路中的其他自治系統選用什麼協議無關。目前主要使用RIP和OSPF協議

  ②外部閘道器協議(EGP):負責在不同的自治系統間進行路由選擇協議(不同的自治系統可能使用不同的內部閘道器協議)。目前使用最多的外部閘道器協議是BGPv4協議。

(3)OSPF多區域

①RouterA上啟用和配置OSPF協議

//RouterA路由器
RouterA#conf t
RouterA(config)#router ospf 1
RouterA(config-router)#network 40.0.0.0 0.0.0.255 area 

②RouterB上啟用和配置OSPF協議



//RouterB路由器
RouterB#conf t
RouterB(config)#router ospf 1
RouterB(config-router)#network 40.0.0.0 0.0.255.255 area 0
//將area1彙總成1條通告給area0
RouterB(config-router)#network 40.1.0.0 0.0.255.255 area 1

③RouterC上啟用和配置OSPF協議



//RouterC路由器
RouterC#conf t
RouterC(config)#router ospf 1
RouterC(config-router)#network 40.0.0.0 0.0.255.255 area 0
//將area2彙總成1條通告給area0
RouterC(config-router)#network 40.2.0.0 0.0.255.255 area 2

④RouterD、RouterE和RouterF上啟用和配置OSPF協議



//RouterD路由器
RouterD#conf t
RouterD(config)#router ospf 1
RouterD(config-router)#network 40.1.0.0 0.0.255.255 area 1

⑤RouterG、RouterH和RouterI上啟用和配置OSPF協議



//RouterG路由器
RouterG#conf t
RouterG(config)#router ospf 1
RouterG(config-router)#network 40.2.0.0 0.0.255.255 area 2