鏈路狀態(tài)路由
鏈路狀態(tài)路由協(xié)議是層次式的,網(wǎng)絡(luò)中的路由器并不向鄰居傳遞“路由項(xiàng)”,而是通告給鄰居一些鏈路狀態(tài)。與距離矢量路由協(xié)議相比,鏈路狀態(tài)協(xié)議對(duì)路由的計(jì)算方法有本質(zhì)的差別。距離矢量協(xié)議是平面式的,所有的路由學(xué)習(xí)完全依靠鄰居,交換的是路由項(xiàng)。鏈路狀態(tài)協(xié)議只是通告給鄰居一些鏈路狀態(tài)。運(yùn)行該路由協(xié)議的路由器不是簡(jiǎn)單地從相鄰的路由器學(xué)習(xí)路由,而是把路由器分成區(qū)域,收集區(qū)域的所有的路由器的鏈路狀態(tài)信息,根據(jù)狀態(tài)信息生成網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),每一個(gè)路由器再根據(jù)拓?fù)浣Y(jié)構(gòu)計(jì)算出路由。
工作過(guò)程
每臺(tái)路由器了解其自身的鏈路(即與其直連的網(wǎng)絡(luò))。這通過(guò)檢測(cè)哪些接口處于工作狀態(tài)(包括第3層地址)來(lái)完成。
對(duì)于鏈路狀態(tài)路由協(xié)議來(lái)說(shuō),直連鏈路就是路由器上的一個(gè)接口,與距離矢量協(xié)議和靜態(tài)路由一樣,鏈路狀態(tài)路由協(xié)議也需要下列條件才能了解直連鏈路:正確配置了接口ip地址和子網(wǎng)掩碼并激活接口,并將接口包括在一條network語(yǔ)句中。
向鄰居發(fā)送hello數(shù)據(jù)包
每臺(tái)路由器負(fù)責(zé)“問(wèn)候”直連網(wǎng)絡(luò)中的相鄰路由器。與eigrp路由器相似,鏈路狀態(tài)路由器通過(guò)直連網(wǎng)絡(luò)中的其他鏈路狀態(tài)路由器互換hello數(shù)據(jù)包來(lái)達(dá)到此目的。
路由器使用hello協(xié)議來(lái)發(fā)現(xiàn)其鏈路上的所有鄰居,形成一種鄰接關(guān)系,這里的鄰居是指啟用了相同的鏈路狀態(tài)路由協(xié)議的其他任何路由器。這些小型hello數(shù)據(jù)包持續(xù)在兩個(gè)鄰接的鄰居之間互換,以此實(shí)現(xiàn)“保持激活”功能來(lái)監(jiān)控鄰居的狀態(tài)。如果路由器不再收到某鄰居的hello數(shù)據(jù)包,則認(rèn)為該鄰居已無(wú)法到達(dá),該鄰接關(guān)系破裂。
建立鏈路狀態(tài)數(shù)據(jù)包
每臺(tái)路由器創(chuàng)建一個(gè)鏈路狀態(tài)數(shù)據(jù)包(lsp),其中包含與該路由器直連的每條鏈路的狀態(tài)。這通過(guò)記錄每個(gè)鄰居的所有相關(guān)信息,包括鄰居id、鏈路類型和帶寬來(lái)完成。一旦建立了鄰接關(guān)系,即可創(chuàng)建lsp,并僅向建立鄰接關(guān)系的路由器發(fā)送lsp。lsp中包含與該鏈路相關(guān)的鏈路狀態(tài)信息、序列號(hào)、過(guò)期信息。
將鏈路狀態(tài)數(shù)據(jù)包泛洪給鄰居
每臺(tái)路由器將lsp泛洪到所有鄰居,然后鄰居將收到的所有l(wèi)sp存儲(chǔ)到數(shù)據(jù)庫(kù)中。接著,各個(gè)鄰居將lsp泛洪給自己的鄰居,直到區(qū)域中的所有路由器均收到那些lsp為止。每臺(tái)路由器會(huì)在本地?cái)?shù)據(jù)庫(kù)中存儲(chǔ)鄰居發(fā)來(lái)的lsp的副本。
路由器將其鏈路狀態(tài)信息泛洪到路由區(qū)域內(nèi)的其他所有鏈路狀態(tài)路由器,它一旦收到來(lái)自鄰居的lsp,不經(jīng)過(guò)中間計(jì)算,立即將這個(gè)lsp從除接收該lsp的接口以外的所有接口發(fā)出,此過(guò)程在整個(gè)路由區(qū)域內(nèi)的所有路由器上形成lsp的泛洪效應(yīng)。距離矢量路由協(xié)議則不同,它必須首先運(yùn)行貝爾曼-福特算法來(lái)處理路由更新,然后才將它們發(fā)送給其他路由器;而鏈路狀態(tài)路由協(xié)議則在泛洪完成后再計(jì)算spf算法,因此達(dá)到收斂狀態(tài)的速度比距離矢量路由協(xié)議快得多。lsp在路由器初始啟動(dòng)期間、或路由協(xié)議過(guò)程啟動(dòng)期間、或在每次拓?fù)浒l(fā)生更改(包括鏈路接通或斷開)時(shí)、或是鄰接關(guān)系建立、破裂時(shí)發(fā)送,并不需要定期發(fā)送。
構(gòu)建鏈路狀態(tài)數(shù)據(jù)庫(kù)
每臺(tái)路由器使用數(shù)據(jù)庫(kù)構(gòu)建一個(gè)完整的拓?fù)鋱D并計(jì)算通向每個(gè)目的網(wǎng)絡(luò)的最佳路徑。就像擁有了地圖一樣,路由器現(xiàn)在擁有關(guān)于拓?fù)渲兴心康牡匾约巴ㄏ蚋鱾€(gè)目的地的路由的詳圖。spf算法用于構(gòu)建該拓?fù)鋱D并確定通向每個(gè)網(wǎng)絡(luò)的最佳路徑。所有的路由器將會(huì)有共同的拓?fù)鋱D或拓?fù)錁?,但是每一個(gè)路由器獨(dú)立確定到達(dá)拓?fù)鋬?nèi)每一個(gè)網(wǎng)絡(luò)的最佳路徑。
在使用鏈路狀態(tài)泛洪過(guò)程將自身的lsp傳播出去后,每臺(tái)路由器都將擁有來(lái)自整個(gè)路由區(qū)域內(nèi)所有鏈路狀態(tài)路由器的lsp,都可以使用spf算法來(lái)構(gòu)建spf樹。這些lsp存儲(chǔ)在鏈路狀態(tài)數(shù)據(jù)庫(kù)中。有了完整的鏈路狀態(tài)數(shù)據(jù)庫(kù),即可使用該數(shù)據(jù)庫(kù)和最短路徑優(yōu)先(spf)算法來(lái)計(jì)算通向每個(gè)網(wǎng)絡(luò)的首選(即最短)路徑。