1. 程式人生 > >OSPF 開放式最短路徑優先協議

OSPF 開放式最短路徑優先協議

今天偶爾跟同事聊到網路的問題,這一陣子忙的,把學過的東西都忘得迷迷糊糊的了,今晚回來重新把這個點先整理下來,待我有時間再把這塊串成線。

看了一篇很有意思的小文章,轉載過來,比我們老師講的有意思,不過哈哈,當年茱莉雅老師給我們講的也不差。嘿嘿。。。。來,先看個小童話:

http://kingdee.blog.51cto.com/98119/27310

可以把整個網路(一個自治系統AS)看成一個王國,這個王國可以分成幾個 區(area),現在我們來看看區域內的某一個人(你所在的機器root)是怎樣得到一張 世界地圖(routing table)的。 
  首先,你得跟你周圍的人(同一網段如129.102)建立基本聯絡。你大叫一聲 “我在這!”(發HELLO報文),於是,周圍的人知道你的存在,他們也會大叫,這樣 你知道周圍大概有哪些人,你與他們之間建立了鄰居(neighbor)關係,當然,他們 之間也有鄰居關係。 


  在你們這一群人中,最有威望(Priority優先順序)的人會被推薦為首領( Designated Router)首領與你之間是上下級關係(adjacency鄰接),它會與你建立 單線聯絡,而不許你與其它鄰居有過多交往,他會說:“那樣做的話,街上太擠了 ”。
  你只好通過首領來知道更多的訊息了,首先,你們互通訊息,他告訴你他知 道的所有地圖的地名,你也會告訴他你現知道的地名,當然上也許只有你一個點。 (Database Deion資料庫描述報文) 
  你發現地名錶中有你缺少的或比你新的東西,你會問他要一份更詳細的資料 ,他發現你的地名錶中有他需要的東西,他也會向你索求新資料。(Link State Request連線狀態請求報文) 

  當然,你們毫不猶豫地將一份詳細資料傳送給對方。(Link State Update連 接狀態升級報文) 
  收到地圖後,互相致謝表示收到了。(Link State Ack連線狀態響應報文) 
  現在,你已經盡你所能得到一份地圖(Link State DataBase連線狀態資料庫 ),你去查詢地圖把到所有地方的路挑一條最近(shortest path最短路)的,記 為一張表格(routing table路由表),當然以後查這份表格就知道到目的地的一 條最近的路了。地圖也要收好,萬一表格上的某條路不通了可以通過圖去找一條新 的路。
  其實跟你有聯絡的,只是周圍一群人,外面的訊息要通過首領來知道。因為 你的地圖是跟首領的一致,我們假設你是首領,你要去畫一份世界地圖。 

  你命令所有手下向你通報訊息,你可以知道你這一群人的任何一點點小動靜 (event事件)。你手下還會有同時屬於兩群人的傢伙(同一區內兩網段),他會 告訴你另一群人的地圖,當然也會把你們這一群人的地圖洩露,(不過,無所謂啦 )。這樣,整個區的地圖你知道了(對於不知道的那也沒辦法,我們盡力了)。 
  通過不停地交換地圖,現在,整個區的人都有同樣的地圖了,住在區邊境上 的人義不容辭地把這個區的地圖(精確到每一群人)傳送到別的區,把別的區資訊 傳送進來。國王會把這些邊境的人命名為骨幹(backbone area)。通過骨幹人士 的不懈努力,現在,整個國家的地圖你都瞭解得一清二楚了。 
  有些人“裡通外國”(AS Boundary Router自治系統邊界路由器) ,他們知 道一些“出國”(AS External route自治系統外部路由)的路,當然他們會把這些 祕密公之與眾(import 引入),通過資訊的傳遞,現在,你已經有一張完整的“ 世界地圖”了。
  OSPF是這樣標記最短的路的:對於某個目的地,首先,考慮是否有同一區內 部到目的地的路(intra area區域內),如果有,則在其中取一條離你最近的(花 費最小),寫進你的表格中,這個目的地可能是到本群體某個人也可能是到其他群 體的,對於經過其他區域的路由,你會不予考慮,跟自己人(同區域)打交道總比 與外人(其他區域)打交道好;如果沒有本區的路,你只好通過別的區域了(區域 間),你只要在地圖上找最近的就是了;如果你發現目的地在國外,你也只能先把 它標記到你的表格上,期待什麼時候王國擴張到那,你就可以把它標記到國內地圖 上了。
  OSPF就是這樣,給你一份“世界地圖”,並且在上面標記了最短的路,如此 而已罷了

看完了上面的童話,也就熟悉了ospf協議的大概意思,這個協議時用來幹嘛的。。接下來我們再接觸一些古板的東西,會有一個嚴謹的概念:

http://february.blog.51cto.com/717356/149114

知識1OSPF概述    開放式最短路徑優先協議(Open Shortest Path First,OSPF)是基於開放標準的發鏈路狀態路由選擇協議 1.OSPF是內部閘道器路由協議 內部閘道器路由協議(IGP):用於在單一自治系統(Autonomous System-AS)內決策路由 自制系統(AS):執行統一路由策略的一組網路裝置的組合 2.OSPF區域 為了適應大型的網路,OSPF在AS內劃分多個區域;一定要劃分區域0(骨幹區域),其他區域必須和區域0相連。 每個OSPF路由器只維護所在區域的完整的鏈路狀態資訊 3.鏈路狀態路由協議 OSPF是鏈路狀態路由協議,鏈路狀態路由協議中的路由器瞭解OSPF網路內的鏈路狀態資訊 鏈路狀態路由協議中,直連的路由器之間建立鄰接關係,互相“交流”鏈路資訊,來“畫”出完整的網路結構 知識2Router ID Router ID 是在OSPF區域內唯一標識一臺路由器的IP地址。 Router ID選取規則 §首先,路由器選取它所有loopback介面上數值最高的IP地址 §如果沒有loopback介面,就在所有物理埠中選取一個數值最高的IP地址 Router ID 不具備強佔性,Router ID 只要選定就不會改變,即使是物理介面關閉,Router ID 也不會變,除非重啟路由器或程序。 知識3OSPF的工作過程 鄰居列表 列出每臺路由器全部已經建立鄰接關係的鄰居路由器 鏈路狀態資料庫(LSDB) 列出網路中其他路由器的資訊,由此顯示了全網的網路拓撲 路由表 列出通過SPF演算法計算出的到達每個相連網路的最佳路徑 知識4:OSPF鄰接關係 鄰接關係的建立過程 建立鄰接關係的條件 1、Area-id:兩個路由器必須在共同的網段上,它們的埠必須屬於該網段上的同一個區,且屬於同一個子網 2、驗證(Authentication OSPF):同一區域路由器必須交換相同的驗證密碼,才能成為鄰居 3、Hello Interval和Dead Interval: OSPF協議需要兩個鄰居路由器的這些時間間隔相同,否則就不能成為鄰居路由器。 4、stub區域標記:兩個路由器可以在Hello報文中通過協商Stub區域的標記來成為鄰居 知識5OSPF的網路介面型別    路由器介面型別不同,在建立鄰接關係的時候,OSPF路由器執行的操作也略有不同,所以定義了4種類型,如下 知識6OSPF多址網路中的DR與BDR    一個網段上的其他路由器都和指定路由器(DR)構成鄰接關係,而不是它們互相之間構成鄰接關係 廣播多址型網路選DR或BDR在2-way階段,他們不具備強佔性,要想成為DR必須先成為BDR。             DR與BDR的選舉 通過Hello報文選擇DR和BDR來代表OSPF網段 通過組播發送Hello報文 具有最高OSPF優先順序的路由器會被選為DR 如果OSPF優先順序相同,則具有最高Router ID的路由器會被選為DR 其他的路由器(DRothers)只和DR及BDR路由器之間形成鄰接關係 每臺路由器的每一個多點訪問的介面都有一個路由器的優先順序(Router Priosrity),用一個8位的無符號整數來表示,範圍是0—255,數值越大,優先順序越高,預設優先順序是1,可以通過命令ip ospf priority來更改,具有0優先順序的路由器不能成為DR或BDR。 知識7OSPF包型別 1.HELLO協議: 當路由器上啟動OSPF程序時,每臺路由器都會間隔一定的時間傳送Hello包 Hello包通過組播地址224.0.0.5傳送 OSPF路由器使用Hello包發起建立鄰接關係並監視這種關係的存在和消失 在廣播網或者點對點網上,Hello的傳送間隔是10秒;在NBMA網路上,Hello的傳送間隔是30秒 2.Hello報文用於發現和維護鄰居關係,並保證鄰居間的雙向通訊。不同型別的網路種,Hello協議的工作方式如下:       多址網路:週期性的組播Hello包,允許鄰居的動發現,嘗試進行指定路由器DR/備份路由器BDR的選舉。       點到多點型網路:傳送Hello包給於直連的能通訊的全部路由器。           DBD和LSR報文用於建立鄰接關係。           LSU和LSAck報文用於實現OSPF可靠的更新機制。 知識8OSPF的路由傳播 整個OSPF的拓撲圖可以描繪成一組互聯的路由器或一組互聯的節點。為了使這些節點能夠在這些邏輯的拓撲上完全的進行路由選擇,每一個節點都必須擁有一個關於這個拓撲結構的相同的拓撲圖,這個拓撲圖就是拓撲資料庫,也叫鏈路狀態資料庫。這個資料庫由路由器可以接收到的所有LSA組成。在拓撲圖中發生的一個變化將可以表示為一條或多條LSA的變化。 泛洪(Flooding)過程就是將這些變化或更新的LSA傳送到整個網路中去,以保證每一個節點的資料庫都可以更新。 泛洪過程將會使用到下面兩種型別的OSPF報文     鏈路狀態更新報文(Link State Updatapackets,型別4)     鏈路狀態確認報文(Link State Acknowledgmentpackets,型別5) 在點到點網路中,路由器以組播的方式將更新報文傳送到組播地址(224.0.0.5)。在點到多點網路上,路由器是以單播方式將更新報文傳送到鄰接鄰居的介面地址的。 在廣播型的網路上,DRouthers路由器只能和DR與BDR路由器形成鄰接關係,因此更新報文將傳送到組播地址(224.0.0.6),相應,DR路由器也將以組播的方式傳送包含LSA的更新包問道網路上與之建立鄰接關係的路由器。接著,所有的路由器將從他們所有其他的介面上泛洪LSA通告。 知識9:OSPF度量值 OSPF用來度量路徑優劣的度量值稱為Cost(代價),是指從該介面傳送出去的資料報的出站口代價。並用16位無符號的整數表示,範圍在1--65535之間。預設代價是,表示一個整數,BW是指再介面上配置的頻寬,而是Cisco路由器使用的參考頻寬。 介面的代價值可以通過命令 ip ospf Cost 來改變 知識10OSPF路由協議的應用環境 1.OSPF的使用地方     網路的規模 :網路中的路由器在10臺以上;中等或大規模的網路 網路的拓撲結構 :網路的拓撲結構為網狀,並且任意兩臺路由器之間都有互通的需求 其它特殊的需求 :要求路由變化時能夠快速收斂,要求路由協議自身的網路開銷儘量降低 對路由器自身的要求 :執行OSPF協議時,對路由器的CPU的處理能力及記憶體的大小都有一定的要求,效能很低的路由器不推薦使用OSPF協議 2.OSPF的特點        可適應大規模網路 路由變化收斂速度快 無路由環 支援變長子網掩碼VLSM 支援區域劃分 支援以組播地址傳送協議報   3.OSPF與RIP的比較   知識11OSPF單區域介紹 1.區域ID   是通過一個32為的區域ID(Aera ID)來標識的。 2.相連的路由器介面      指的是連線到區域的路由器的介面。一個路由器的介面屬於且僅屬於一個區域。 3.路由器鏈路狀態通告列表      區域內的每臺路由器產生的鏈路狀態通告,他描述了連線到區域的路由器介面的狀態。 4.網路鏈路狀態通告列表      由DR/BDR產生的鏈路狀態通告。用於描述連結到該區域的路由器。 5.彙總鏈路狀態通告列表      由ABR發起的鏈路狀態通告。用於描述區域間的或者達到AS外部的路徑資訊 6.最短路徑樹      每臺路由器都會以自身作為樹的根利用SPF演算法來計算到達目的網路的最短路勁。  知識12:配置命令 v配置loopback介面地址 Router(config)# interface loopback 0 Router(config-if)# ip address IP地址掩碼 v啟動OSPF路由程序 Router(config)# router ospf 程序號 v指定OSPF協議執行的介面和所在的區域 Router(config-router)# network 網路號反向掩碼  area  區域號 v修改介面的Cost值     Router(config-if)#ip ospf cost number 例如:     Router(config)#interface s0     Router(config-if)#ip ospf cost 1000 v配置OSPF計時器  Router(config-if)#ip ospf hello-interval 時間(s)  Router(config-if)#ip ospf dead-interval 時間(s) 例如:     Router(config)#interface e0     Router(config-if)#ip ospf hello-interval 5     Router(config-if)#ip ospf dead-interval 20 v檢視鄰居列表 Router#show ip ospf neighbor v檢視鏈路狀態資料庫 Router#show ip ospf database v檢視路由表 Router#show ip route  檢視OSPF的配置 Router#show ip ospf v檢視OSPF介面資料結構 Router#show ip ospf interface 介面