說明:本文僅供學習交流,轉載請标明出處,歡迎轉載!
本文是如下文獻相關内容的總結:
1.《tcp/ip詳解 卷1》
2.《tcp/ip協定族》
3.《計算機網絡第5版》
ospf(open shortest path first開放最短路徑優先 )是一種igp(内部網關協定)協定,主要用于as(自治系統内部)。該協定是一種基于鍊路狀态的協定,而rip則是基于距離向量的協定,在兩者的底層實作算法中,rip采用的是bellman-ford算法(貝爾曼福特算法),而ospf采用的是dijkstra算法(迪傑斯特拉算法)。rip通過将某個路由器的部分或全部路由表傳遞給相鄰的路由器,而ospf采用洪泛法将其lsp(link
state packet 鍊路狀态包)傳遞給同一區域内的所有路由器。
在上面的描述中,我首先解釋下兩個名詞:鍊路狀态、洪泛法。
鍊路狀态:用于說明本路由器都和哪些路由器相鄰,以及該路由器的“度量”。度量可以表示費用,距離,實驗,帶寬等。
注意:ospf協定發送的消息是與本路由器相鄰的所有路由器的鍊路狀态,而rip協定發送的消息是到所有網絡的距離以及下一跳路由器。
洪泛法指的是路由器通過所有輸出端口向所有相鄰的路由器發送消息。而每一個相鄰路由器又再将此消息發往其所有的相鄰路由器(但不再發送給剛剛發來消息的那個路由器)。這樣,最終整個區域中所有的路由器都得到這個消息的一個副本,是以ospf總是比rip收斂更快。
注意:對于ospf協定隻有當鍊路狀态發生變化時,該路由器才想所有其他路由器用洪泛法發送此消息,而對于rip協定,不管網絡拓撲是否發生變化,路由器之間都會定期地交換路由資訊。
ospf的資料包主要包括:問候包hello、資料庫描述包dbd、鍊路狀态請求包lsr、鍊路狀态更新包lsu和鍊路狀态确認包lsack五種類型。
這五類資料包含有相同ospf首部,具體如下:

版本:占8位,ospf協定的版本;
類型:占8位,ospf的類型,1~5;
封包長度:占16位,總ospf封包長度(包括首部);
源ip:占32位,發送該資料包的路由器的ip位址;
區域辨別:占32位,由于ospf将一個as劃分為若幹個更小的區域,每個區域對應一個id稱為區域标示符,用點分十進制表示,主幹區域的id是0.0.0.0;
檢驗和:占16位,用于差錯檢驗;
鑒别類型:占16位,該區域内使用的鑒别類型,0表示無鑒别,1表示密碼。
鑒别:占64位,存放鑒别資料。若鑒别類型為0,則填入0;若鑒别類型為1,則該字段填入含8個字元的
密碼。
劃分區域的好處是:把利用洪泛發交換鍊路資訊的範圍局限于每一個區域二不是整個as,這樣就減少了整個網絡上的通信量。
下面詳細介紹下這5種類型的資料包。
i.問候包hello
ospf使用hello包建立鄰站關系,并測試鄰站的可達性。在路由器能夠把關于它的鄰站資訊向其他路由器進行洪泛之前,必須先和它的鄰站打招呼。進而能夠确定這些鄰站是否都在工作,是否可以到達。ospf規定,每兩個相鄰路由器每隔10s要交換一次問候分組,以便知道對方是否可達,因為隻有可達鄰站的鍊路狀态資訊才存傳入連結路狀态資料庫。
下面的那幾種資料包都是用來進行鍊路狀态資料庫的同步。同步指的是不同路由器的鍊路狀态資料庫的内容是一樣的。
ii.資料庫描述包dbd
當路由器連接配接到系統後,它會發送hello包,向其鄰站打招呼。若這些鄰站是第一次收到該路由器的資訊,它們會發送資料庫描述封包,這些dbd并不包含完整的資料庫資訊,隻是給出了概要(對應資料庫每一行的标題)。新連上的路由器檢查這些标題,并找出哪些行的資訊它還沒有,然後再發送一個或多個鍊路狀态請求封包,以便得到這個特定鍊路的完整資訊。
注意:鍊路狀态資料庫實際上就是全網的拓撲結構圖。這個拓撲結構圖在全網範圍内是一緻的(稱為鍊路狀态資料庫的同步)。每一個路由器使用鍊路狀态資料庫中的資料,構造出自己的路由表(通過使用dijstra算法)。而rip協定的每一個路由器隻知道到所有網絡的距離以及下一個路由器,但卻不知道全網的拓撲結構,隻知道距離是多少,但是具體怎麼走的就不知道了,因為它知道相鄰路由器的資訊,隻有到了下一跳才知道下一步該怎麼走。
iii.鍊路狀态請求分組lsr
向對方請求發送某些鍊路狀态項目的詳細資訊。
iv.鍊路狀态确認分組lsack
ospf強制路由器對所收到的每一個鍊路狀态更新分組進行确認,使得路由選擇更加可靠。
v.鍊路狀态更新分組lsu
lsu是整個ospf運作的核心,路由器用它向鄰站通告自己的鍊路狀态資訊。在網絡運作的過程中,隻有一個路由的鍊路狀态發生變化,該路由器就使用鍊路狀态更新分組lsu,用洪泛法向全網更新鍊路狀态。ospf采用的是可靠的洪泛法,這裡可靠指的是路由器在收到更新分組lsu後要發送确認,當然重複的更新分組值需發送一次确認。
ospf的點點滴滴:
1.ospf直接使用ip資料報傳送,對應ip資料報首部協定字段為89,而rip采用的是udp,對應的端口号為520。
2.所有在ospf路由器直接交換的分組都具有鑒别功能,因而保證了僅在可信賴的路由器之間交換鍊路狀态資訊。
3.ospf支援子網。
4.由于ospf收斂速度快,是以不存在“壞消息傳得慢”的問題,這點正好與rip相反。
5.對于規模較大的網絡,ospf協定用的比較多;對于規模較小的網絡,rip目前用得更多。