專利名稱:路由器中用于有效的周期性csnp的csnp緩存的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及聯(lián)網(wǎng)設(shè)備,更具體而言,涉及在諸如路由器之類的聯(lián)網(wǎng)設(shè)備中處理CSNP分組。
背景技術(shù):
在計(jì)算機(jī)網(wǎng)絡(luò)中,路由協(xié)議在諸如路由器之類的聯(lián)網(wǎng)設(shè)備被添加到網(wǎng)絡(luò)或從網(wǎng)絡(luò)中刪除時(shí),被用來(lái)動(dòng)態(tài)傳輸路由信息。路由器可以基于它們的本地接口建立被稱為鏈路狀態(tài)分組(LSP)的分組或消息,并且LSP分組描述了路由器的接口和在網(wǎng)絡(luò)中的鄰居(即鄰近路由器)。通常,LSP消息包括發(fā)起該LSP分組的路由器的名稱、序號(hào)以及“鏈路”或相鄰路由器的列表。
每個(gè)路由器使用傳統(tǒng)的“泛播(flooding)”算法向鄰近路由器發(fā)送其LSP,并且LSP未經(jīng)改變地被傳遞到其他鄰近路由器,直到區(qū)域中的所有路由器都已接收到它們?yōu)橹?。?dāng)被收集在一起時(shí),LSP可被用來(lái)描述網(wǎng)絡(luò)的拓?fù)洹?br>
每個(gè)路由器維護(hù)著鏈路狀態(tài)數(shù)據(jù)庫(kù)(LSDB),其包括路由器已經(jīng)接收到的所有LSP。當(dāng)網(wǎng)絡(luò)拓?fù)浒l(fā)生改變時(shí),一個(gè)或多個(gè)LSP將跟著發(fā)生相應(yīng)的改變。
指定的路由器發(fā)送被稱為CSNP分組(完整序號(hào)協(xié)議數(shù)據(jù)單元(PDU))的分組到其他路由器,以便維持與網(wǎng)絡(luò)拓?fù)湫畔⑾嚓P(guān)的數(shù)據(jù)庫(kù)同步。CSNP分組包括發(fā)送該CSNP分組的路由器已知的所有鏈路狀態(tài)。例如,在路由協(xié)議IS-IS(中間系統(tǒng)-中間系統(tǒng))中,指定的路由器發(fā)送CSNP分組,以確保參與該協(xié)議的所有路由器都具有鏈路狀態(tài)數(shù)據(jù)庫(kù)的完整拷貝。通常,CSNP消息包括這樣的條目,其中每個(gè)條目具有源標(biāo)識(shí)(LSP ID,標(biāo)識(shí)針對(duì)各個(gè)LSP的源路由器)和對(duì)應(yīng)于該LSP的序號(hào)。
每個(gè)接收CSNP分組的路由器將CSNP分組中的鏈路狀態(tài)列表(即來(lái)自LSP ID和序號(hào))與其自己的內(nèi)部鏈路狀態(tài)數(shù)據(jù)庫(kù)相比較。例如,接收到CSNP的路由器中的序號(hào)不匹配指示接收方路由器可能不具有網(wǎng)絡(luò)中的另一路由器報(bào)告的最近的鏈路狀態(tài)。這些差異可以通過(guò)發(fā)送接收者的數(shù)據(jù)庫(kù)中的LSP或通過(guò)向另一路由器發(fā)送要其發(fā)送丟失的LSP的請(qǐng)求(以部分序號(hào)(PSNP)的形式)來(lái)解決。
CSNP分組或消息是基于CSNP間隔計(jì)時(shí)器來(lái)周期性地發(fā)送的,所述CSNP間隔計(jì)時(shí)器定義從接口發(fā)送CSNP分組之間的秒數(shù)。在根據(jù)IS-IS規(guī)范的局域網(wǎng)(LAN)上需要周期性的CSNP發(fā)送。傳統(tǒng)上,周期性的CSNP分組發(fā)送是通過(guò)使用CPU資源遍歷其鏈路狀態(tài)數(shù)據(jù)庫(kù)并且在每次CSNP計(jì)時(shí)器期滿時(shí)重建所產(chǎn)生的CSNP分組的方式在路由器中實(shí)現(xiàn)的。例如,如圖1所示,傳統(tǒng)的路由器10包括IS-IS軟件進(jìn)程12,其操作性地包括鏈路狀態(tài)數(shù)據(jù)庫(kù)14和周期性CSNP功能16。
但是,當(dāng)拓?fù)渥兊酶芗瘯r(shí),會(huì)出現(xiàn)擴(kuò)展問(wèn)題。如本發(fā)明的發(fā)明人所意識(shí)到的,存在很多使得周期性的CSNP發(fā)送成問(wèn)題的問(wèn)題。在給定接口上的CSNP間隔是可配置的,各個(gè)接口上的最大發(fā)送單元(MTU)可能不相同,并且可能存在成百上千個(gè)諸如對(duì)等鏈路(P2P)之類的接口或鏈路需要支持。此外,可專用于CSNP處理的CPU時(shí)間量可能非常有限。在每次CSNP計(jì)時(shí)器期滿后通過(guò)遍歷鏈路狀態(tài)數(shù)據(jù)庫(kù)重建CSNP分組的做法可能需要路由器的過(guò)多的CPU資源。
因此,如本發(fā)明的發(fā)明人所意識(shí)到的,需要一種在減少CPU消耗和增大可擴(kuò)展性的同時(shí)提供周期性的CSNP功能的方法和裝置。
本發(fā)明的各個(gè)實(shí)施例的特征、功用和優(yōu)點(diǎn)將從以下結(jié)合附圖對(duì)本發(fā)明實(shí)施例的具體描述中變得更加明顯。
圖1示出傳統(tǒng)路由器的框圖。
圖2示出根據(jù)本發(fā)明一個(gè)實(shí)施例的具有CSNP緩存的路由器的示例的框圖。
圖3示出本發(fā)明的實(shí)施例可以使用的各種數(shù)據(jù)結(jié)構(gòu)的示例。
圖4示出根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)結(jié)構(gòu)的示例。
圖5示出根據(jù)本發(fā)明一個(gè)實(shí)施例,用于初始化CSNP緩存的邏輯操作的示例。
圖6示出根據(jù)本發(fā)明一個(gè)實(shí)施例,用于改變CSNP緩存的條目的邏輯操作的示例。
圖7示出根據(jù)本發(fā)明一個(gè)實(shí)施例,用于處理期滿的CSNP計(jì)時(shí)器的邏輯操作的示例。
圖8示出根據(jù)本發(fā)明一個(gè)實(shí)施例,用于計(jì)算CSNP片斷(fragment)的邏輯操作的示例。
圖9示出根據(jù)本發(fā)明一個(gè)實(shí)施例接合CSNP條目的示例。
具體實(shí)施例方式
本發(fā)明的實(shí)施例提供了在形成將發(fā)送的CSNP分組時(shí)可用使用的緩存。緩存可被實(shí)現(xiàn)在諸如路由器之類的聯(lián)網(wǎng)設(shè)備中。本發(fā)明的各個(gè)實(shí)施例在這里被公開(kāi)。
如圖2所示,本發(fā)明的實(shí)施例提供了可被用于形成將從路由器24發(fā)送的CSNP消息22的緩存20。緩存20提供了在每次CSNP計(jì)時(shí)器期滿時(shí)無(wú)需CPU資源遍歷鏈路狀態(tài)數(shù)據(jù)庫(kù)26重建CSNP值的情況下執(zhí)行CSNP功能所需的條目。這里描述了可以在緩存中實(shí)現(xiàn)的各個(gè)特征。在一個(gè)示例中,路由器24還可以包括IS-IS軟件進(jìn)程28、包含一個(gè)或多個(gè)鏈路狀態(tài)的鏈路狀態(tài)數(shù)據(jù)庫(kù)(LSDB)26以及周期性CSNP進(jìn)程30。
在一個(gè)實(shí)施例中,鏈路狀態(tài)數(shù)據(jù)庫(kù)26可以包括描述網(wǎng)絡(luò)中的鏈路的一個(gè)或多個(gè)條目,并且這些條目可以從接收自網(wǎng)絡(luò)中其他路由器的鏈路狀態(tài)分組(LSP)消息中得到,或者可以從當(dāng)前路由器的接口得到,并描述了與其相鄰的路由器。鏈路狀態(tài)數(shù)據(jù)庫(kù)26可以利用任意用于管理鏈路狀態(tài)數(shù)據(jù)庫(kù)26的傳統(tǒng)進(jìn)程或技術(shù)來(lái)實(shí)現(xiàn)。一般而言,鏈路狀態(tài)數(shù)據(jù)庫(kù)26可以包括來(lái)自LSP的所有相關(guān)數(shù)據(jù),包括LSP頭部、LSP ID以及可以包括序號(hào)和相鄰路由器或鏈路的鏈路狀態(tài)分組的主體或有效載荷。例如,在一個(gè)示例中,鏈路狀態(tài)數(shù)據(jù)庫(kù)26可以包括所有LSP的樹(shù)。
圖2的示例的路由器24可以實(shí)現(xiàn)周期性CSNP功能30,其中路由器24向網(wǎng)絡(luò)中的其他路由器周期性地發(fā)送(一個(gè)或多個(gè))CSNP消息22,其中CSNP消息22被用來(lái)向其他路由器傳達(dá)路由器24的鏈路狀態(tài)數(shù)據(jù)庫(kù)26的內(nèi)容。根據(jù)本發(fā)明一個(gè)示例,路由器24可以具有多個(gè)接口32、34,其中每個(gè)接口可以具有獨(dú)立的CSNP計(jì)時(shí)器和“下一LSP ID”路由器。
為了減少在建立用于大量接口(例如(但不局限于)P2P和DIS LAN接口)的CSNP分組時(shí)由復(fù)制的LSDB遍歷所消耗的CPU資源,本發(fā)明的實(shí)施例提供了CSNP緩存20。在一個(gè)示例中,緩存20中的每個(gè)條目代表一個(gè)CSNP片斷,其尺寸可能局限于LSP MTU尺寸,以確保它可以通過(guò)任意IS-IS接口來(lái)發(fā)送。在CSNP計(jì)時(shí)器期滿之后,接口從緩存20中拾取下一片斷用于發(fā)送。結(jié)果,只要LSDB 26是穩(wěn)定的,當(dāng)CSNP計(jì)時(shí)器期滿時(shí)就不需要LSDB遍歷。
在一個(gè)示例中,路由器24的每個(gè)接口32、34可以訪問(wèn)CSNP緩存20,以便生成CSNP分組22。所有CSNP接口計(jì)時(shí)器可經(jīng)由計(jì)時(shí)器輪來(lái)分配。這可以提供時(shí)間上處理的統(tǒng)一分配。
圖3示出根據(jù)本發(fā)明實(shí)施例可被用作CSNP緩存20中的條目40的數(shù)據(jù)結(jié)構(gòu)。CSNP條目40可以包括范圍字段42,其包括開(kāi)始和結(jié)束鏈路狀態(tài)PDU標(biāo)識(shí)44、46,例如開(kāi)始和結(jié)束LSP ID。優(yōu)選地,每個(gè)緩存條目40的范圍字段42具有開(kāi)始和結(jié)束鏈路狀態(tài)標(biāo)識(shí),從而使得當(dāng)在緩存中被列出時(shí),所有范圍字段42覆蓋了緩存20中代表的可能的鏈路狀態(tài)標(biāo)識(shí)的完整范圍。
緩存條目40還可以包括“有效”標(biāo)志48(真或假),其指示緩存條目40是有效的還是無(wú)效的。緩存條目40還可以包括PDU內(nèi)容50,其可以包括標(biāo)識(shí)相應(yīng)LSP的LSP頭部的列表。在另一示例中,PDU內(nèi)容50可以包括CSNP片斷,所述CSNP片斷可以包括將被包括在CSNP消息中的LSP ID的列表并且可以包括開(kāi)始和結(jié)束LSP ID和PDU頭部。例如,每個(gè)緩存條目40可以包括標(biāo)識(shí)相應(yīng)LSP的一個(gè)或多個(gè)LSP頭部。
根據(jù)本發(fā)明一個(gè)實(shí)施例,緩存20的示例還如圖3所示。在一個(gè)示例中,CSNP緩存20可以包括標(biāo)志“ALL_VALID”60(真或假),其指示緩存是有效的還是無(wú)效的。
緩存20還可以包括緩存條目40的AVL樹(shù)或其他數(shù)據(jù)結(jié)構(gòu)62(例如鏈表),并且允許快速插入、刪除和搜索數(shù)據(jù)結(jié)構(gòu)62。在一個(gè)示例中,AVL樹(shù)62包括所有緩存條目或CSNP片斷40。AVL樹(shù)62(例如平衡的二元搜索樹(shù))可被用來(lái)存儲(chǔ)記錄或條目40。在一個(gè)示例中,AVL樹(shù)實(shí)現(xiàn)方式62可以利用用于處理緩存條目40的線程化進(jìn)程。
在一個(gè)示例中,緩存20可以利用緩存條目中列出的第一LSP ID來(lái)索引。在一個(gè)示例中,AVL樹(shù)中的每個(gè)節(jié)點(diǎn)可被單獨(dú)地使之無(wú)效,并且完整的緩存可被自動(dòng)地使之無(wú)效。
對(duì)于正在提供CSNP分組22的路由器24的每個(gè)接口32、34,CSNP計(jì)時(shí)器值33、36可以與這樣的接口32、34相關(guān)聯(lián)。例如,CSNP計(jì)時(shí)器33可以是每隔10秒期滿一次的周期性計(jì)時(shí)器。此外,用于“下一LSP標(biāo)識(shí)”的值或地址35、37也可以與這樣的接口32、34相關(guān)聯(lián)。
下面圖4示出根據(jù)本發(fā)明一個(gè)實(shí)施例的緩存條目的示例。在圖4的示例中,假設(shè)LSP ID范圍是A到Z,其中在鏈路狀態(tài)數(shù)據(jù)庫(kù)26中存在六個(gè)LSP(A、C、M、N、O、Y)。
還假設(shè)LSP最大發(fā)送單元(MTU)被設(shè)置為使得一個(gè)CSNP緩存條目/CSNP片斷40中僅裝入兩個(gè)LSP ID。由于在此示例中,在數(shù)據(jù)庫(kù)26中存在六個(gè)LSP,因此將存在三個(gè)緩存條目/CSNP片斷40。
在該示例中,CSNP緩存20可以如圖4所示“ALL_VALID”標(biāo)志60對(duì)于該緩存為真,并且存在如下三個(gè)CSNP條目40(A,C,真,[A,C])(D,N,真,[M,N])
(O,Z,真,[O,Y])緩存20中的第一條目的范圍字段42為(A,C),因?yàn)榫彺鏃l目40中的LSP具有的LSP ID為(A,C),其范圍從(A)到(C)。緩存20中的第二條目的范圍字段42為(D,N),因?yàn)榫彺鏃l目中的LSP具有的LSP ID為(M,N),它是總體范圍(D,N)的一部分。緩存20中的第三條目的范圍字段42為(O,Z),因?yàn)榫彺鏃l目中的LSP具有的LSP ID為(O,Y),它是總體范圍(O,Z)的一部分。因此,每個(gè)緩存條目的范圍字段一起覆蓋了從(A)到(Z)的總體范圍。
在操作中,例如,當(dāng)路由器24的CSNP進(jìn)程31使得CSNP計(jì)時(shí)器33在接口32(例如IS-IS接口)上期滿時(shí),CSNP進(jìn)程31查看緩存20以形成第一CSNP分組22。利用“下一LSP標(biāo)識(shí)”35,CSNP進(jìn)程31從適當(dāng)?shù)腃SNP緩存條目獲得LSP信息,并將該信息通過(guò)接口32發(fā)送到其他路由器?!跋乱籐SP標(biāo)識(shí)”35被更新,并且CSNP進(jìn)程31隨后通過(guò)接口32發(fā)送帶有來(lái)自下一CSNP緩存條目的LSP信息的CSNP分組22。該進(jìn)程的實(shí)施例在圖7中有所描述。
圖5示出根據(jù)本發(fā)明實(shí)施例用于初始化CSNP緩存的操作示例。圖5用于CSNP緩存初始化的操作例如可以發(fā)生在LSP MTU(最大發(fā)送單元)的配置或重配置被指定時(shí)。在操作70處,CSNP緩存中的所有現(xiàn)有條目被刪除。在操作72中,向緩存添加條目。在一個(gè)示例中,緩存條目可以包括范圍字段(即指定開(kāi)始LSP ID和結(jié)束LSP ID)、有效標(biāo)志或位(真或假)以及PDU內(nèi)容。如圖5所示,在一個(gè)示例中,當(dāng)添加了新條目時(shí),它可能具有初始設(shè)置,其中范圍字段覆蓋了LSP ID的整個(gè)范圍(被示為(A,Z)),有效標(biāo)志或位為假并且PDU內(nèi)容為空或null。
圖6的操作涉及根據(jù)本發(fā)明一個(gè)實(shí)施例單個(gè)LSP中的改變,其將影響CSNP緩存中的相應(yīng)改變。這些操作可能發(fā)生在存在對(duì)本地LSP的更新或者路由器接收較新的LSP時(shí)。在操作80,在接收到LSP之后,對(duì)緩存中針對(duì)覆蓋或包括了受影響的LSP的范圍的條目進(jìn)行查找。在操作82,與受影響的LSP相關(guān)聯(lián)的CSNP緩存條目被標(biāo)記為無(wú)效的或假的。新LSP將被存儲(chǔ)在LSDB 26中。
圖7示出根據(jù)本發(fā)明一個(gè)實(shí)施例用于利用CSNP緩存形成和發(fā)送CSNP分組或消息的操作的示例。當(dāng)CSNP計(jì)時(shí)器期滿時(shí),例如通過(guò)路由器的一個(gè)或多個(gè)接口,圖7的示例性操作可以被執(zhí)行。在一個(gè)示例中,CSNP計(jì)時(shí)器周期性地期滿,并因此,圖7的一個(gè)或多個(gè)示例性操作被周期性地執(zhí)行。
在操作90,接口的“下一LSP ID”被用于從緩存中找到將發(fā)送的下一個(gè)緩存條目,并取得適當(dāng)?shù)木彺鏃l目。在一個(gè)示例中,一旦該“下一LSP ID”緩存條目被找到,如果需要,“下一LSP ID”可被更新到被設(shè)置為緩存條目中的結(jié)束LSP ID,或被更新到LSP ID范圍的開(kāi)始。如果希望,操作90可以利用圖8來(lái)操作來(lái)實(shí)現(xiàn),如下所述。
在操作92,包含在操作90中取得的緩存條目中的CSNP片斷/PDU內(nèi)容作為CSNP分組或消息通過(guò)各自的路由器接口被發(fā)送(即路由器將CSNP片斷作為分組從CSNP計(jì)時(shí)器已經(jīng)期滿的接口發(fā)送出去)。CSNP分組或消息的發(fā)送可以利用傳統(tǒng)的用于發(fā)送CSNP分組的方法。在同一接口上的其他IS-IS路由器將接收CSNP片斷并檢查其與它們自己的鏈路狀態(tài)數(shù)據(jù)庫(kù)的一致性。
在一個(gè)示例中,操作92發(fā)送多個(gè)CSNP片斷,以覆蓋LSP ID范圍。例如,在圖4的示例中,如果下一LSP ID是“A”,則操作92發(fā)送第一緩存條目(A,C,真,(A,C))的相關(guān)內(nèi)容,從而LSP LD為A、C的CSNP消息被發(fā)送。
在操作94處,如果CPU被加載,則控制傳遞到操作96,該操作96利用例如配置值的八倍的指數(shù)回退來(lái)啟動(dòng)CSNP計(jì)時(shí)器。該計(jì)時(shí)器可加載其他值,或利用其他傳統(tǒng)的計(jì)時(shí)器加載程序或值來(lái)加載。因此,在操作96,計(jì)時(shí)器被重新加載,然后發(fā)送下一緩存條目。當(dāng)操作96的計(jì)時(shí)器期滿時(shí),控制可以返回操作90,以從下一緩存條目獲得和發(fā)送LSP信息。
在一個(gè)示例中,系統(tǒng)的加載可以在計(jì)算在重啟計(jì)時(shí)器時(shí)將提供給計(jì)時(shí)器的值時(shí)被使用。如果1分鐘加載平均值大于0.5,則例如可以使先前的CSNP間隔加倍。在一個(gè)示例中,該操作的上限可以是一個(gè)乘數(shù),例如配置值的8倍,但是其他上限也是可能的。這可以確保某種CSNP生成將發(fā)生。
在操作94,如果CPU未被加載,控制則傳遞到操作98。操作98判斷發(fā)送CSNP片斷的一個(gè)周期是否已經(jīng)完成。如果沒(méi)有,控制則傳遞到操作100(可選的),操作100利用短步調(diào)(pacing)值來(lái)啟動(dòng)CSNP計(jì)時(shí)器,例如短步調(diào)值66毫秒。當(dāng)操作100的計(jì)時(shí)器期滿時(shí),控制可以返回操作90,以從下一緩存條目獲得和發(fā)送LSP。
為了覆蓋整個(gè)鏈路狀態(tài)數(shù)據(jù)庫(kù),可能需要發(fā)送多于一個(gè)CSNP片斷。常規(guī)配置的CSNP計(jì)時(shí)器可以是發(fā)送整組CSNP片斷的間隔(一個(gè)周期)。例如,假設(shè)存在CSNP片斷1、2和3和10秒的CSNP計(jì)時(shí)器,則CSNP片斷1、2、3將被發(fā)送;保持安靜10秒;發(fā)送CSNP片斷1、2、3;保持安靜10秒,以此類推。在一種實(shí)現(xiàn)方式中,作為短步調(diào)延時(shí)的等待時(shí)間(例如66毫秒)可被用作發(fā)送片斷1-2和2-3之間的等待時(shí)間量。
但是,如果操作98確定一個(gè)周期已經(jīng)完成,則控制傳遞到操作102,其利用配置值啟動(dòng)CSNP計(jì)時(shí)器。當(dāng)操作102的計(jì)時(shí)器期滿時(shí),控制可以返回操作90以從下一緩存條目獲得和發(fā)送LSP。
在一個(gè)示例中,在常規(guī)操作過(guò)程期間,用于接口的CSNP計(jì)時(shí)器將期滿,以指示到了路由器發(fā)送CSNP消息的時(shí)間,該CSNP消息具有來(lái)自該路由器的鏈路狀態(tài)數(shù)據(jù)庫(kù)的所有鏈路狀態(tài)。CSNP緩存不是遍歷鏈路狀態(tài)數(shù)據(jù)庫(kù),而是將被用來(lái)生成CSNP消息。操作90將利用“下一LSP ID”獲得下一緩存條目。從該條目,操作92將發(fā)送存儲(chǔ)在該緩存條目中的LSP,作為CSNP消息。如果需要,操作98(可選的)隨后將引入短步調(diào)延時(shí),直到進(jìn)程返回操作90,以利用“下一LSP ID”獲得下一緩存條目,從而使得具有存儲(chǔ)在該緩存條目中的LSP的CSNP消息被發(fā)送。在一個(gè)示例中,該進(jìn)程將繼續(xù),直到緩存中的所有LSP都被發(fā)送為止。
圖8示出用于計(jì)算CSNP緩存條目的邏輯操作的示例。如果需要,這些操作可被用于圖7的操作90。
在圖8的操作110處,緩存標(biāo)志“ALL_VALID”被檢查以判斷是否CSNP緩存中的所有條目都是有效的,還是某些條目是無(wú)效的。如果某些條目無(wú)效,則在操作112,所有CSNP緩存條目都被標(biāo)記為無(wú)效或假,并且控制傳遞到操作114(如下所述)。如果在操作110,緩存的“ALL_VALID”標(biāo)志為假(即緩存有效),控制則傳遞到操作114。
在操作114,基于下一LSP ID,對(duì)范圍覆蓋下一LSP ID的CSNP緩存條目進(jìn)行查找。
在操作116,如果緩存條目無(wú)效,則控制傳遞到操作118-122。但是,如果操作116確定CSNP緩存條目有效,則控制傳遞到操作124,其返回有效的CSNP緩存條目,并且該進(jìn)程的迭代完成。
如果在操作116,CSNP緩存條目無(wú)效,控制則傳遞到操作118,其中所有先前CSNP無(wú)效緩存條目都被定位到并在一個(gè)實(shí)施例中被刪除。該操作還可以包括更新CSNP緩存條目的“開(kāi)始LSP ID”以覆蓋新范圍。
操作120找到無(wú)效的所有后續(xù)CSNP緩存條目,并且在一個(gè)示例中,這些條目被刪除,下一有效的CSNP條目被包括進(jìn)來(lái),并且“結(jié)束LSPID”被更新以覆蓋新范圍。在操作122,CSNP緩存條目根據(jù)新范圍被重建,并且“有效”標(biāo)志針對(duì)該緩存條目被設(shè)置為真。
操作126判斷重建的緩存條目是否完全覆蓋新范圍,如果是,控制則傳遞到操作124,該操作124返回有效的CSNP片斷,并且該進(jìn)程迭代完成。否則,操作126傳遞控制到操作128,在一個(gè)示例中,該操作128對(duì)范圍的其余部分添加無(wú)效的CSNP緩存條目。該無(wú)效的條目將在下一CSNP計(jì)時(shí)器期滿之后被重建。
圖9示出根據(jù)本發(fā)明一個(gè)實(shí)施例,接合緩存20中的條目的一個(gè)示例。在圖9的示例中,假設(shè)鏈路狀態(tài)數(shù)據(jù)庫(kù)26已被從具有六個(gè)LSP(A、C、M、N、O、Y)改變到新的只具有三個(gè)LSP(A、M、O)。
在CSNP緩存20中,“ALL_VALID”標(biāo)志60可被設(shè)置為真,并且CSNP緩存條目40的AVL樹(shù)或鏈路列表62可以包括(A,C,假,[A,C])(D,N,假,[M,N])(O,Z,假,[O,Y])此外,還假設(shè)來(lái)自緩存條目(A,C)的LSP已被發(fā)送,并且接口“下一LSP ID”等于D。
利用D的下一LSP ID,緩存條目(D,N,假,[M,N])被找到。由于它是無(wú)效的,因此使用條目的接合/合并,并且它與周圍的無(wú)效片斷組合在一起。在接合以針對(duì)范圍(A,Z)建立并產(chǎn)生片斷(A,M,真,[A,M])時(shí),由于完整的范圍(A,Z)未被覆蓋,因此添加新的無(wú)效條目(N,Z,假,[空])。
因此,CSNP緩存20將使得“ALL_VALID”標(biāo)志60設(shè)置為真,并且將具有CSNP緩存條目40(A,M,真,[A,M])(N,Z,假,[空])現(xiàn)在,片斷(A,M)作為CSNP消息被發(fā)送,并且片斷(N,Z)可以在下次下一CSNP計(jì)時(shí)器期滿之后被重建為(N,Z,真,
),然后被發(fā)送。
如這里所述,當(dāng)鏈路狀態(tài)數(shù)據(jù)庫(kù)26的相應(yīng)部分改變時(shí),單獨(dú)的緩存條目40可以被無(wú)效。在一個(gè)示例中,每個(gè)被無(wú)效的緩存條目40只能針對(duì)已經(jīng)發(fā)出該片斷的接口被重建一次。如果LSDB 26在CSNP計(jì)時(shí)器下次期滿之前沒(méi)有改變,如果需要,緩存20則可以被其他接口重復(fù)使用。
在最壞情況下,LSDB 26一直改變,在每次CSNP計(jì)時(shí)器期滿時(shí),覆蓋片斷范圍的LSDB 26的遍歷可以被執(zhí)行,這將與在第一階段中沒(méi)有實(shí)現(xiàn)緩存20的情況具有類似的處理量。但是,緩存20可以提供在長(zhǎng)時(shí)間段期間可實(shí)現(xiàn)的良好命中率。
如果計(jì)時(shí)器線程遇到已被全局無(wú)效的緩存20,則在一個(gè)示例中,在其他操作之前,計(jì)時(shí)器線程可以無(wú)效掉緩存20中的所有條目40,然后再全局地使緩存20有效。
緩存20可以被路由器24的每個(gè)接口32、34單獨(dú)參考。在一個(gè)實(shí)施例中,可能存在在每個(gè)接口(即32、34)上運(yùn)行的一個(gè)計(jì)時(shí)器(即33或36),并且每個(gè)這樣的計(jì)時(shí)器將以各自獨(dú)立地期滿。通過(guò)使用緩存20,可以在遍歷LSP數(shù)據(jù)庫(kù)26時(shí)實(shí)現(xiàn)高效率,并且對(duì)PDU的格式化將在任意緩存命中時(shí)已經(jīng)完成。
為了進(jìn)一步減小所需處理量,在一個(gè)示例中,如果所有接口32和34都被配置為支持LSP MTU尺寸,則CSNP分組可被格式化為該尺寸。雖然這可能產(chǎn)生更多的CSNP片斷,但PDU可以在所有接口上重復(fù)使用。
在一個(gè)示例中,當(dāng)使用點(diǎn)對(duì)點(diǎn)鏈路時(shí),由于接收CSNP分組的節(jié)點(diǎn)可以通過(guò)發(fā)送PSNP或LSP作出響應(yīng),因此正在接收CSNP分組的節(jié)點(diǎn)也不發(fā)送它們。因此,當(dāng)接收到CSNP分組時(shí),該接口上的CSNP計(jì)時(shí)器可以被重啟。
當(dāng)接口的CSNP計(jì)時(shí)器期滿時(shí),可以執(zhí)行作為計(jì)時(shí)器線程一部分的緩存清除和重計(jì)算。這允許在其他線程上保持輕負(fù)載。
本發(fā)明的實(shí)施例還可被用于生成用于以太網(wǎng)的CSNP分組。由于只有指定的路由器(DIS)發(fā)送用于以太網(wǎng)的CSNP分組,因此如果需要,CSNP計(jì)時(shí)器可以只在接口或路由器變?yōu)镈IS時(shí)啟動(dòng)。此時(shí),緩存的內(nèi)容可被再次發(fā)送。
在一個(gè)示例中,緩存中的條目(即范圍字段42)不再重疊。如果需要,條目40可以按單調(diào)遞增的順序被布置在AVL樹(shù)62中。在一個(gè)示例中,緩存20中的所有緩存條目40(無(wú)效的和有效的)都覆蓋完整的可能LSP ID范圍,因此完全代表數(shù)據(jù)庫(kù)26。緩存條目40可以例如通過(guò)使用上述圖9的示例的操作而被接合。
在一個(gè)示例中,每個(gè)緩存條目40可以承載它上次被重計(jì)算時(shí)保存的條目數(shù)目的計(jì)數(shù)值。這可被用來(lái)估計(jì)下次計(jì)算時(shí)的條目40的數(shù)目。
緩存無(wú)效可能發(fā)生在環(huán)境中的某些情況發(fā)生極大改變的情況下(例如LSP MTU改變)。如果需要,整個(gè)緩存20可以被無(wú)效掉。
在一個(gè)示例中,如果單個(gè)LSP改變(即被刷新、清除、添加),則只有包含該LSP的緩存條目40可以被無(wú)效。清除和添加可以更新緩存條目40中的LSP的數(shù)目,以輔助估計(jì)用于緩存條目40的LSP的數(shù)目。
在一個(gè)示例中,如果緩存條目40是無(wú)效的并且需要被重新計(jì)算,則可以將其與其他緩存條目40接合。任意緩存條目40可以具有0、1或2個(gè)直接鄰居。每個(gè)緩存條目40可能包含該條目中列出的LSP的數(shù)目,但是對(duì)于無(wú)效的緩存條目,該數(shù)目可能不準(zhǔn)確。優(yōu)選地,盡可能地將三個(gè)緩存條目40接合在一起。在每個(gè)緩存條目40中列出的LSP的數(shù)目被用作對(duì)緩存條目40的尺寸的估計(jì)。如果無(wú)效的緩存條目40加上其左手邊的鄰居可以被接合,它們的LSP ID的范圍則可以被合并,并且可以從LSP數(shù)據(jù)庫(kù)26中刪除該左手邊的鄰居。關(guān)于接合后的緩存條目,可以判斷它是否可以與右手邊的片段接合。如果可以,則可以接合LSP范圍并且可以從AVL樹(shù)62中刪除該右手邊的鄰居。接下來(lái),緩存條目40可以被重新計(jì)算。如果尺寸估計(jì)是不正確的,則將被返回的第一緩存條目將不覆蓋整個(gè)范圍。該緩存條目可以被插入到AVL樹(shù)62中,并且該范圍可以被從將被計(jì)算的緩存條目中減去。緩存條目40可以被迭代地計(jì)算,直到整個(gè)范圍被計(jì)算出為止,并且用于發(fā)送的第一片斷可以被使用。
如果將裝入到緩存條目40中的LSP的數(shù)目超過(guò)可能的數(shù)目(由于MTU限制或其他原因),則在一個(gè)示例中,緩存條目40的計(jì)算將指示出這一點(diǎn),并且LSP空間可以被再分成多個(gè)緩存條目。當(dāng)緩存條目40被計(jì)算時(shí),計(jì)算出的緩存條目被存儲(chǔ),并且覆蓋的LSP空間可以被從正被計(jì)算的范圍中減去。
在其他實(shí)施例中,LSP到CSNP功能30、31的索引可以被維護(hù)。由于CSNP分組的格式是已知的,因此開(kāi)銷是固定的。在一個(gè)示例中,每個(gè)LSP條目具有固定尺寸,因此整個(gè)CSNP分組可被視為L(zhǎng)SP條目的陣列。如果LSP條目的索引被作為鏈路狀態(tài)數(shù)據(jù)庫(kù)26中的LSP的一部分存儲(chǔ),則可以在常規(guī)的LSP刷新時(shí)更快速地更新LSP條目。在另一示例中,如果需要,CSNP分組可以按不同方式被重新打包。
如果需要,CSNP緩存條目40的無(wú)效和重計(jì)算的速率可以被限制。例如,可以為每個(gè)緩存條目維護(hù)一個(gè)時(shí)間戳,并且當(dāng)沒(méi)有準(zhǔn)備好重計(jì)算時(shí),可以跳過(guò)一個(gè)緩存條目40,從而確保它在被重新計(jì)算時(shí)可以被發(fā)送。一種方法是使用用于此目的的發(fā)送列表。另一種方法是確保每個(gè)接口不會(huì)周期性地跳過(guò)某個(gè)給定的緩存條目。
本發(fā)明的實(shí)施例可以在聯(lián)網(wǎng)設(shè)備、通信設(shè)備或計(jì)算設(shè)備(例如路由器)中被使用或?qū)崿F(xiàn)。
本發(fā)明的實(shí)施例可以被包含在計(jì)算機(jī)程序產(chǎn)品中。將會(huì)理解,包括本發(fā)明的特征的計(jì)算機(jī)程序產(chǎn)品可以在具有計(jì)算機(jī)可讀代碼的計(jì)算機(jī)可用介質(zhì)(例如CD-ROM或其他介質(zhì))中創(chuàng)建。計(jì)算機(jī)可用介質(zhì)優(yōu)選地包含被配置用于致使計(jì)算機(jī)執(zhí)行實(shí)現(xiàn)本發(fā)明所需的各個(gè)功能的多個(gè)計(jì)算機(jī)可讀程序代碼設(shè)備,如這里所述。
雖然這里公開(kāi)的方法被描述并示為參考按特定順序執(zhí)行的特定操作,但是將會(huì)理解,這些操作可以被組合、細(xì)分或重新排序,以形成等同方法,而不會(huì)脫離本發(fā)明的教導(dǎo)。因此,除非特別指明,否則操作的順序和組合不是對(duì)本發(fā)明的限制。
應(yīng)該意識(shí)到,說(shuō)明書(shū)中對(duì)“一個(gè)實(shí)施例”或“實(shí)施例”或“一個(gè)示例”或“示例”的引用意味著如果需要,結(jié)合該實(shí)施例描述的特定特征、結(jié)構(gòu)或特性可以被包括在本發(fā)明的至少一個(gè)實(shí)施例中。因此,應(yīng)該意識(shí)到,在說(shuō)明書(shū)不同部分中對(duì)“一個(gè)實(shí)施例”或“實(shí)施例”或“一個(gè)示例”或“示例”的兩次或更多次引用不一定都引用同樣的實(shí)施例。此外,特定特征、結(jié)構(gòu)或特性可以按需要被組合在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中。
應(yīng)該意識(shí)到,在前面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被組合在單個(gè)實(shí)施例、附圖或描述中,以用于理清公開(kāi)并付諸對(duì)各個(gè)發(fā)明方面的理解的目的。但是,該方法的公開(kāi)不能理解為反映所要求保護(hù)的發(fā)明需要比每個(gè)權(quán)利要求中明確提出的特征更多的特征這一意圖。相反,如所附權(quán)利要求所反映的,發(fā)明的各個(gè)方面在于比單個(gè)所公開(kāi)的實(shí)施例中的所有特征更少的特征,并且這里描述的每個(gè)實(shí)施例可以包含多于一個(gè)發(fā)明特征。
雖然已經(jīng)參考實(shí)施例具體描述并示出了本發(fā)明,但是本領(lǐng)域技術(shù)人員將理解,在不脫離本發(fā)明的精神和范圍的情況下,可以對(duì)本發(fā)明的形式和細(xì)節(jié)作出各種其他修改。
權(quán)利要求
1.一種用在網(wǎng)絡(luò)中的聯(lián)網(wǎng)設(shè)備,包括存儲(chǔ)多個(gè)鏈路狀態(tài)條目的數(shù)據(jù)庫(kù);以及可操作地耦合到所述數(shù)據(jù)庫(kù)的緩存,該緩存存儲(chǔ)了與所述數(shù)據(jù)庫(kù)的鏈路狀態(tài)條目相關(guān)的條目。
2.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中所述鏈路狀態(tài)條目是從由所述聯(lián)網(wǎng)設(shè)備接收的鏈路狀態(tài)分組中得出的。
3.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中所述聯(lián)網(wǎng)設(shè)備具有多個(gè)接口。
4.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,還包括用于通過(guò)所述網(wǎng)絡(luò)發(fā)送包括鏈路狀態(tài)數(shù)據(jù)的分組的模塊,該模塊可操作地耦合到所述緩存。
5.如權(quán)利要求4所述的聯(lián)網(wǎng)設(shè)備,還包括計(jì)時(shí)器,用于提供控制包括鏈路狀態(tài)數(shù)據(jù)的網(wǎng)絡(luò)分組的發(fā)送的周期性間隔。
6.如權(quán)利要求5所述的聯(lián)網(wǎng)設(shè)備,其中當(dāng)所述計(jì)時(shí)器期滿時(shí),所述模塊訪問(wèn)所述緩存,以創(chuàng)建包括鏈路狀態(tài)數(shù)據(jù)的一個(gè)或多個(gè)分組。
7.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中存儲(chǔ)在所述緩存中的條目包括范圍字段,該范圍字段包含開(kāi)始鏈路狀態(tài)標(biāo)識(shí)和結(jié)束鏈路狀態(tài)標(biāo)識(shí)。
8.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中存儲(chǔ)在所述緩存中的條目包括指示所述條目是否有效的有效標(biāo)志。
9.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中存儲(chǔ)在所述緩存中的條目包括鏈路狀態(tài)頭部的列表。
10.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中存儲(chǔ)在所述緩存中的條目包括標(biāo)識(shí)一個(gè)或多個(gè)鏈路狀態(tài)的數(shù)據(jù)。
11.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中所述緩存包括指示所述緩存是否具有有效條目的有效標(biāo)志。
12.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中存儲(chǔ)在所述緩存中的條目是按樹(shù)數(shù)據(jù)結(jié)構(gòu)布置的。
13.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中存儲(chǔ)在所述緩存中的條目是按鏈表數(shù)據(jù)結(jié)構(gòu)布置的。
14.如權(quán)利要求1所述的聯(lián)網(wǎng)設(shè)備,其中所述聯(lián)網(wǎng)設(shè)備是路由器。
15.如權(quán)利要求4所述的聯(lián)網(wǎng)設(shè)備,其中所述分組是CSNP分組。
全文摘要
本發(fā)明公開(kāi)了一種諸如路由器之類的聯(lián)網(wǎng)設(shè)備,在一個(gè)實(shí)施例中,其可以包括存儲(chǔ)多個(gè)鏈路狀態(tài)條目的數(shù)據(jù)庫(kù)和與數(shù)據(jù)庫(kù)可操作地耦合的緩存,該緩存存儲(chǔ)了與數(shù)據(jù)庫(kù)的鏈路狀態(tài)條目相關(guān)的條目。該聯(lián)網(wǎng)設(shè)備還可以包括用于通過(guò)網(wǎng)絡(luò)發(fā)送包括鏈路狀態(tài)數(shù)據(jù)的分組的模塊,該模塊可操作地耦合到緩存。在一個(gè)示例中,模塊訪問(wèn)緩存以創(chuàng)建包括鏈路狀態(tài)數(shù)據(jù)的一個(gè)或多個(gè)分組。本發(fā)明的實(shí)施例可被用于在無(wú)需重復(fù)遍歷鏈路狀態(tài)數(shù)據(jù)庫(kù)以形成CNSP分組的情況下形成CSNP分組(完整序號(hào)分組)。
文檔編號(hào)H04L12/56GK101036349SQ200580031052
公開(kāi)日2007年9月12日 申請(qǐng)日期2005年11月15日 優(yōu)先權(quán)日2004年11月15日
發(fā)明者德里克·延格, 克利斯汀·侯浦斯, 那伊爾·凡高帕勒, 安東尼·J·李 申請(qǐng)人:思科技術(shù)公司