如果說距離矢量路由協議分享其知道的所有信息,但只對其鄰居分享;鏈路狀態路由協議只分享與其直連的連接,但會將此信息共享給路由區域內的所有路由器。
如果說距離矢量路由協議像是公路上的路標,那么鏈路狀態路由協議就像是一張地圖----它擁有整個網絡的情況。鏈路狀態路由協議又叫做:shortest path first 或者 distributed database 協議。常見的包括OSPF和IS-I S.
距離矢量路由協議容易產生環路和無限循環包,所以采用水平分割、路由毒化、保持時間來避免此類事件發生;鏈路狀態路由協議更容易避免此類情況。更重要的是,距離矢量路由協議是發布路由,如果一條重要鏈路有所更改,意味著發布許多條路由;鏈路狀態路由協議在遇到鏈路更改時,僅僅發布鏈路更改通知,而不是傳播所有相關路由。一句話,兩者的區別是是否自己獨立計算路由。
鏈路狀態路由協議有以下特點:每個路由器與其鄰居建立鄰接關系;每個路由器發送link state advertisement (LSA),一個LSA從路由器的每個接口發出,表明鏈路,鏈路的狀態,路由器接口到這個鏈路的metric和所有可能與這條鏈路相連的鄰居。每個接收到LSA的鄰居又將這些LSA轉發給他們自己的鄰居。每個路由器將其收到的所有LSA存放在其database中。
如果一切正常,所有路由器的數據庫應該是相同的。完成了的topological database 或者叫 link state database,描述了從某個路由器出發到各個網絡的一棵樹,然后形成路由表。
形成鄰居關系,以hello包維持。使用Router ID表明路由器在網絡內的唯一身份。
鏈路狀態泛洪 Link state flooding:鄰接關系建立以后,路由器開始發送LSA泛洪。每一個收到的LSA會直接從其他出口發出給鄰居,使得鏈路狀態路由協議收斂非常快。而距離矢量路由協議,對收到的update需要先自己處理,然后在定期發送,所以收斂很慢。在泛洪過程中,最重要的兩個過程是sequencing和aging.
Sequence Numbers. 路由器在其發出的LSA中包含順序號,當路由器收到包含相同路由的LSA時,它會檢查順序號的大小,如果大于其topological database內路由的順序號,就以大的為準,如果收到的LSA順序號小于等于database內順序號,則丟棄。這樣防止LSA的無限循環擴散。sequence number space,分為linear sequence number space (IS-IS), circular sequence number 和 Lollipop-shaped sequence number space (前兩者的結合)。
Aging.當LSA生成時,路由器設定aging為零,LSA發布出去過后,每個路由器都增加age.MaxAgeDiff.當路由器收到多個擁有相同sequence number不同的aging的同一LSA時,如果aging的差別不超過MaxAgeDiff,則路由器認為這些差別是正常網絡延遲產生的,將保留原來的
如果aging超過MaxAgeDiff,則路由器選用最新的LSA,并且將這個LSA分發出去。一個典型的MaxAgeDiff是15分鐘(OSPF)。Maximum age.LSA的age在link state database中是持續增加的,當增加到Maximum age時,此LSA的age設定成Maximum age并分發出去,然后從database內刪除。
OSPF的maximum age為1小時。Link state refresh time.必須有一種機制使得LSA在到達Maximum age之前重設,否則所有LSA終究會被刪除掉。當Link state refresh time到達時,路由器會分發出新的LSA給所有鄰居,使得鄰居重設Maximum age.OSPF設定為30分鐘。
Link state database 鏈路狀態數據庫:Link state database又叫topological database,用于存儲LSA.sequence number 和 age主要用于管理LSA的分發;路由器ID、與其相連的網段和鄰居則是用于最短路徑計算。
LSA主要包含兩種類型的信息:Router link information 和 Stub network information. 路由鏈路信息描述了一個路由器的鄰居(Router ID,Neighbor ID, cost), 其中cost 是到鄰居的鏈路的
末端網絡信息描述了一個路由器連接的末端網絡(不與鄰居相連的網絡)(Router ID,Network ID, cost)。SPF算法先計算出到各個路由器的最短路徑,然后再將末端網絡添加到這些路由器上。cost是以路由器出口方向的接口cost為準。
Area 區域:區域是一組路由器組成的內部網絡,使用區域主要基于以下考慮:跟距離矢量協議比較,路由器需要更大內存;復雜的算法需要更多CPU處理時間;傳播LSA需要更多帶寬,特別是在不穩定網絡里。