本發(fā)明涉及路由優(yōu)化領(lǐng)域,尤其涉及一種路由查詢方法及裝置。
背景技術(shù):
對(duì)于高速路由器的包轉(zhuǎn)發(fā)能力至少達(dá)到20Mpps以上,支持轉(zhuǎn)發(fā)路由至少25萬(wàn)條以上。在單臺(tái)路由器無(wú)法繼續(xù)擴(kuò)展以適應(yīng)需求的情況下,集群化技術(shù)應(yīng)運(yùn)而生。集群系統(tǒng)能夠在各臺(tái)路由器單機(jī)之間很好的協(xié)同工作,極大的擴(kuò)展了路由器的容量,由于集群路由器對(duì)外僅體現(xiàn)為一臺(tái)路由器,使得網(wǎng)絡(luò)拓?fù)浜吐酚刹呗宰兊煤?jiǎn)單和清晰。但路由器集群系統(tǒng)涉及設(shè)備個(gè)體較多,當(dāng)系統(tǒng)滿負(fù)荷運(yùn)行時(shí),在保證高可靠性和高穩(wěn)定性同時(shí),多臺(tái)路由器之間交換路由查詢速度,對(duì)高速路由器的性能有著至關(guān)重要的作用。
交換設(shè)備在學(xué)習(xí)到某路由表項(xiàng)后,會(huì)先存放至供CPU進(jìn)行軟轉(zhuǎn)發(fā)的軟件層路由表中,然后再下發(fā)至轉(zhuǎn)發(fā)芯片中用于實(shí)現(xiàn)硬件層轉(zhuǎn)發(fā)的硬件層路由表。當(dāng)需要更新或刪除某條路由表項(xiàng)時(shí),需要CPU先從軟件層路由表中查詢到該路由表項(xiàng),然后再予以更新或刪除,最后才會(huì)更新或刪除轉(zhuǎn)發(fā)芯片中的硬件層路由表。因此,軟件層路由表項(xiàng)的查詢效率將直接影響到路由表項(xiàng)下發(fā)至硬件層的進(jìn)度,從而影響報(bào)文硬件層轉(zhuǎn)發(fā)的進(jìn)度。而軟件層路由表項(xiàng)的查詢效率通常取決于路由表項(xiàng)的存儲(chǔ)方式。集群系統(tǒng)路由表存儲(chǔ)方式對(duì)于路由查詢效率影響更明顯。
現(xiàn)有IP路由存儲(chǔ)方式大多基于樹(shù)形,公網(wǎng)和每個(gè)VPN分別占用一棵樹(shù),并利用IP地址前綴作為樹(shù)節(jié)點(diǎn)。對(duì)于最大長(zhǎng)度為32位的IP地址前綴來(lái)說(shuō),樹(shù)的深度即為32層,那么利用IP地址從樹(shù)的根節(jié)點(diǎn)依次遍歷每一層來(lái)查找路由表項(xiàng)時(shí),最多需要32次查找才能夠找到待查找路由表項(xiàng)所對(duì)應(yīng)的目標(biāo)節(jié)點(diǎn),因而查詢效率較低。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種路由查詢方法及裝置,解決了現(xiàn)有技術(shù)中路由查詢速度慢,查詢效率低的問(wèn)題。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種路由查詢方法,包括:
根據(jù)待查詢路由表項(xiàng),在由單個(gè)路由集群下的多個(gè)路由設(shè)備形成的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由集群;其中,路由集群為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn),路由設(shè)備為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn);
在由單個(gè)路由設(shè)備下的多個(gè)路由表項(xiàng)形成的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由設(shè)備;其中,第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn),路由表項(xiàng)為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn);
在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)下查找與待查詢路由表項(xiàng)相同的葉子結(jié)點(diǎn),并返回查詢結(jié)果。
進(jìn)一步地,根據(jù)待查詢路由表項(xiàng),在由單個(gè)路由集群下的多個(gè)路由設(shè)備形成的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由集群的步驟包括:
在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址;其中,第一哈希地址中存儲(chǔ)有與待查詢路由表項(xiàng)相關(guān)聯(lián)的路由集群;
在第一哈希地址中讀取對(duì)應(yīng)的候選路由集群,若候選路由集群中包括待查詢路由表項(xiàng),則將候選路由集群作為第一路由集群。
進(jìn)一步地,在由單個(gè)路由設(shè)備下多個(gè)路由表項(xiàng)形成的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由設(shè)備的步驟包括:
在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址;其中,第二哈希地址中存儲(chǔ)有與待查詢路由表項(xiàng)相關(guān)聯(lián)的路由設(shè)備;
在第二哈希地址中讀取對(duì)應(yīng)的候選路由設(shè)備,若候選路由設(shè)備中包括待查詢路由表項(xiàng),則將候選路由設(shè)備作為第一路由設(shè)備。
進(jìn)一步地,在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)下查找與待查詢路由表項(xiàng)相同的葉子結(jié)點(diǎn),并返回查詢結(jié)構(gòu)的步驟包括:
在第一路由設(shè)備為根結(jié)點(diǎn)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址;其中,第三哈希地址中存儲(chǔ)有第一路由設(shè)備的全部路由表項(xiàng);
在第三哈希地址中讀取對(duì)應(yīng)的候選路由表項(xiàng),若候選路由表項(xiàng)為待查詢路由表項(xiàng),則查找成功;否則,遍歷線性鏈表查找待查詢路由表項(xiàng)。
進(jìn)一步地,在根據(jù)待查詢路由表項(xiàng),在由單個(gè)路由集群下的多個(gè)路由設(shè)備形成的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由集群的步驟之前,還包括:
獲取待查詢路由表項(xiàng),并判斷待查詢路由表項(xiàng)是否為預(yù)設(shè)頻繁項(xiàng);其中,預(yù)設(shè)頻繁項(xiàng)為占有率高于預(yù)設(shè)閾值的路由表項(xiàng);
若不是,則遍歷線性鏈表查找待查詢路由表項(xiàng);
若是,則在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中查找第一路由集群。
進(jìn)一步地,在根據(jù)待查詢路由表項(xiàng),在由單個(gè)路由集群下的多個(gè)路由設(shè)備形成的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由集群的步驟之前,還包括:
獲取單個(gè)路由集群下多個(gè)路由設(shè)備中的頻繁項(xiàng),并根據(jù)第一預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由集群下多個(gè)路由設(shè)備的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由集群存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)中;
根據(jù)第二預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由設(shè)備下的路由表項(xiàng)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由設(shè)備存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)中;
根據(jù)第三預(yù)設(shè)哈希函數(shù),將路由表項(xiàng)存儲(chǔ)于第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)中。
進(jìn)一步地,根據(jù)第一預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由集群下多個(gè)路由設(shè)備的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由集群存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)中的步驟包括:
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地 址,并將對(duì)應(yīng)的路由集群存儲(chǔ)于第一哈希地址中;
存儲(chǔ)有不同路由集群的多個(gè)第一哈希地址,構(gòu)建為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,根據(jù)第二預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由設(shè)備下的路由表項(xiàng)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由設(shè)備存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)中的步驟包括:
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址,并將對(duì)應(yīng)的路由設(shè)備存儲(chǔ)于第二哈希地址中;
存儲(chǔ)有不同的路由設(shè)備的多個(gè)第二哈希地址,構(gòu)建為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,根據(jù)第三預(yù)設(shè)哈希函數(shù),將路由表項(xiàng)存儲(chǔ)于第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)中的步驟包括:
以路由表項(xiàng)為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址,并將對(duì)應(yīng)的路由表項(xiàng)存儲(chǔ)于第三哈希地址中;
存儲(chǔ)有不同路由表項(xiàng)的多個(gè)第三哈希地址,構(gòu)建為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
進(jìn)一步地,在根據(jù)第一預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由集群下的多個(gè)路由設(shè)備的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由集群存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)中的步驟之后,還包括:
當(dāng)增加新路由集群時(shí),獲取新路由集群的頻繁項(xiàng);
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址,并將對(duì)應(yīng)的新路由集群存儲(chǔ)于第一哈希地址中,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,在根據(jù)第一預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由集群下的多個(gè)路由設(shè)備的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由集群存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)中的步驟之后,還包括:
當(dāng)路由集群減少時(shí),將對(duì)應(yīng)的第一哈希地址中的路由集群刪除,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,根據(jù)第二預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由設(shè)備下的路由 表項(xiàng)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由設(shè)備存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)中的步驟之后,還包括:
當(dāng)增加新路由設(shè)備時(shí),獲取新路由設(shè)備的頻繁項(xiàng);
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址,并將對(duì)應(yīng)的新路由設(shè)備存儲(chǔ)于第二新哈希地址中,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,在根據(jù)第二預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由設(shè)備下的路由表項(xiàng)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由設(shè)備存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)中的步驟之后,還包括:
當(dāng)路由設(shè)備減少時(shí),將對(duì)應(yīng)的第二哈希地址中存儲(chǔ)的路由設(shè)備刪除,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,根據(jù)第三預(yù)設(shè)哈希函數(shù),將路由表項(xiàng)存儲(chǔ)于第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)中的步驟之后,還包括:
當(dāng)增加新路由表項(xiàng)時(shí),獲取新路由表項(xiàng)的頻繁項(xiàng);
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址,并將對(duì)應(yīng)的新路由表項(xiàng)存儲(chǔ)于第三哈希地址中,更新第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
進(jìn)一步地,在根據(jù)第三預(yù)設(shè)哈希函數(shù),將路由表項(xiàng)存儲(chǔ)于第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)中的步驟之后,還包括:
當(dāng)路由表項(xiàng)減少時(shí),將對(duì)應(yīng)的第三哈希地址中存儲(chǔ)的路由表項(xiàng)刪除,更新第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
依據(jù)本發(fā)明的另一個(gè)方面,還提供了一種路由查詢裝置,包括:
第一查找模塊,用于根據(jù)待查詢路由表項(xiàng),在由單個(gè)路由集群下的多個(gè)路由設(shè)備形成的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由集群;其中,路由集群為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn),路由設(shè)備為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn);
第二查找模塊,用于在由單個(gè)路由設(shè)備下的多個(gè)路由表項(xiàng)形成的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由設(shè)備;其中,第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn),路由 表項(xiàng)為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn);
第三查找模塊,用于在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)下查找與待查詢路由表項(xiàng)相同的葉子結(jié)點(diǎn),并返回查詢結(jié)果。
進(jìn)一步地,第一查找模塊包括:
第一查找單元,用于在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址;其中,第一哈希地址中存儲(chǔ)有與待查詢路由表項(xiàng)相關(guān)聯(lián)的路由集群;
第一讀取單元,用于在第一哈希地址中讀取對(duì)應(yīng)的候選路由集群,若候選路由集群中包括待查詢路由表項(xiàng),則將候選路由集群作為第一路由集群。
進(jìn)一步地,第二查找模塊包括:
第二查找單元,用于在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址;其中,第二哈希地址中存儲(chǔ)有與待查詢路由表項(xiàng)相關(guān)聯(lián)的路由設(shè)備;
第二讀取單元,用于在第二哈希地址中讀取對(duì)應(yīng)的候選路由設(shè)備,若候選路由設(shè)備中包括待查詢路由表項(xiàng),則將候選路由設(shè)備作為第一路由設(shè)備。
進(jìn)一步地,第三查找模塊包括:
第三查找單元,用于在第一路由設(shè)備為根結(jié)點(diǎn)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址;其中,第三哈希地址中存儲(chǔ)有第一路由設(shè)備的全部路由表項(xiàng);
第三讀取單元,用于在第三哈希地址中讀取對(duì)應(yīng)的候選路由表項(xiàng),若候選路由表項(xiàng)為待查詢路由表項(xiàng),則查找成功;否則,遍歷線性鏈表查找待查詢路由表項(xiàng)。
進(jìn)一步地,該路由查詢裝置還包括:
判斷模塊,用于獲取待查詢路由表項(xiàng),并判斷待查詢路由表項(xiàng)是否為預(yù)設(shè)頻繁項(xiàng);其中,預(yù)設(shè)頻繁項(xiàng)為占有率高于預(yù)設(shè)閾值的路由表項(xiàng);
若不是,則遍歷線性鏈表查找待查詢路由表項(xiàng);
若是,則在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中查找第一路由集群。
進(jìn)一步地,該路由查詢裝置還包括:
第一創(chuàng)建模塊,用于獲取單個(gè)路由集群下的多個(gè)路由設(shè)備中的頻繁項(xiàng),并 根據(jù)第一預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由集群下多個(gè)路由設(shè)備的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由集群存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)中;
第二創(chuàng)建模塊,用于根據(jù)第二預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由設(shè)備下的路由表項(xiàng)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由設(shè)備存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)中;
第三創(chuàng)建模塊,用于根據(jù)第三預(yù)設(shè)哈希函數(shù),將路由表項(xiàng)存儲(chǔ)于第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)中。
進(jìn)一步地,第一創(chuàng)建模塊包括:
第一計(jì)算單元,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址,并將對(duì)應(yīng)的路由集群存儲(chǔ)于第一哈希地址中;
第一創(chuàng)建單元,用于將存儲(chǔ)有不同路由集群的多個(gè)第一哈希地址,構(gòu)建為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,第二創(chuàng)建模塊包括:
第二計(jì)算單元,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址,并將對(duì)應(yīng)的路由設(shè)備存儲(chǔ)于第二哈希地址中;
第二創(chuàng)建單元,用于將存儲(chǔ)有不同的路由設(shè)備的多個(gè)第二哈希地址,構(gòu)建為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,第三創(chuàng)建模塊包括:
第三計(jì)算單元,用于以路由表項(xiàng)為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址,并將對(duì)應(yīng)的路由表項(xiàng)存儲(chǔ)于第三哈希地址中;
第三創(chuàng)建單元,用于將存儲(chǔ)有不同路由表項(xiàng)的多個(gè)第三哈希地址,構(gòu)建為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第一獲取模塊,用于當(dāng)增加新路由集群時(shí),獲取新路由集群的頻繁項(xiàng);
第一更新模塊,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址,并將對(duì)應(yīng)的新路由集群存儲(chǔ)于第一哈希地址中,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第二更新模塊,用于當(dāng)路由集群減少時(shí),將對(duì)應(yīng)的第一哈希地址中的路由 集群刪除,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第二獲取模塊,用于當(dāng)增加新路由設(shè)備時(shí),獲取新路由設(shè)備的頻繁項(xiàng);
第三更新模塊,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址,并將對(duì)應(yīng)的新路由設(shè)備存儲(chǔ)于第二新哈希地址中,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第四更新模塊,用于當(dāng)路由設(shè)備減少時(shí),將對(duì)應(yīng)的第二哈希地址中存儲(chǔ)的路由設(shè)備刪除,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第三獲取模塊,用于當(dāng)增加新路由表項(xiàng)時(shí),獲取新路由表項(xiàng)的頻繁項(xiàng);
第五更新模塊,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址,并將對(duì)應(yīng)的新路由表項(xiàng)存儲(chǔ)于第三哈希地址中,更新第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第六更新模塊,用于當(dāng)路由表項(xiàng)減少時(shí),將對(duì)應(yīng)的第三哈希地址中存儲(chǔ)的路由表項(xiàng)刪除,更新第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
本發(fā)明的實(shí)施例的有益效果是:一種路由查詢方法及裝置,基于預(yù)先創(chuàng)建的兩級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的第一路由集群,再在第一路由集群下查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的第一路由設(shè)備,然后再在第一路由設(shè)備下查找待查詢路由表項(xiàng),并返回查詢結(jié)構(gòu),其中,第一路由設(shè)備是第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn),又是第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)。這樣僅需要三次查找過(guò)程,即可得到待查詢路由表項(xiàng)的查詢結(jié)構(gòu),大大提高了路由的查詢速度。
附圖說(shuō)明
圖1表示本發(fā)明的路由查詢方法的流程示意圖;
圖2表示圖1中步驟10的具體流程示意圖;
圖3表示圖1中步驟20的具體流程示意圖;
圖4表示圖1中步驟30的具體流程示意圖;
圖5表示圖1中執(zhí)行步驟10之前的具體流程示意圖;
圖6表示本發(fā)明實(shí)施例中樹(shù)形存儲(chǔ)結(jié)構(gòu)的創(chuàng)建流程示意圖;
圖7表示本發(fā)明的路由查詢裝置的模塊結(jié)構(gòu)示意圖。
其中圖中:101、第一查找模塊,102、第二查找模塊,103、第三查找模塊。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本發(fā)明的示例性實(shí)施例。雖然附圖中顯示了本發(fā)明的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本發(fā)明而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本發(fā)明,并且能夠?qū)⒈景l(fā)明的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
實(shí)施例
在網(wǎng)絡(luò)需求日益增大的情況下,集群概念普遍應(yīng)用于各種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,為了擴(kuò)大路由器的容量,引進(jìn)了路由集群,但由于路由集群中涉及到的路由設(shè)備個(gè)體較多,路由查詢的速度會(huì)影響著整體的性能,為了提高查詢速度,如圖1所示,本發(fā)明的實(shí)施例提供了一種路由查詢方法,具體包括以下步驟:
步驟10:根據(jù)待查詢路由表項(xiàng),在由單個(gè)路由集群下的多個(gè)路由設(shè)備形成的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由集群。
其中,路由集群形成第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn),路由設(shè)備形成第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。在需要查詢某一路由表項(xiàng)時(shí),需要先在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中查找到與其相關(guān)聯(lián)的路由集群。
步驟20:在由單個(gè)路由設(shè)備下的多個(gè)路由表項(xiàng)形成的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由設(shè)備。
其中,第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn),路由表項(xiàng)為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn);即路由設(shè)備既是第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn),又是第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。也就是說(shuō),每個(gè)路由集 群都形成一第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),每個(gè)路由設(shè)備形成一第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),這樣在查找到第一路由集群后,可在第一路由集群下查找與該待查詢路由表項(xiàng)相關(guān)聯(lián)的第一路由設(shè)備。
步驟30:在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)下查找與待查詢路由表項(xiàng)相同的葉子結(jié)點(diǎn),并返回查詢結(jié)果。
這里,在查找到對(duì)應(yīng)的第一路由設(shè)備后,在第一路由設(shè)備中查找與待查詢路由表項(xiàng)相同的葉子結(jié)點(diǎn),即查找第一路由設(shè)備中是否存在待查詢路由表項(xiàng),若存在,則查找成功,若不存在,則查找失敗。
本發(fā)明實(shí)施例中的路由查詢方法,基于預(yù)先創(chuàng)建的兩級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的第一路由集群,再在第一路由集群下查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的第一路由設(shè)備,然后再在第一路由設(shè)備下查找待查詢路由表項(xiàng),并返回查詢結(jié)構(gòu),其中,第一路由設(shè)備是第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn),又是第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)。這樣僅需要三次查找過(guò)程,即可得到待查詢路由表項(xiàng)的查詢結(jié)構(gòu),大大提高了路由的查詢速度。
進(jìn)一步地,哈希樹(shù)因其結(jié)構(gòu)簡(jiǎn)單,并且查找速度快,又可以很方便的替換哈希算法,故而常常被用于存儲(chǔ)關(guān)鍵的數(shù)據(jù),基于以上優(yōu)勢(shì),本發(fā)明實(shí)施例中可采用哈希樹(shù)結(jié)構(gòu)對(duì)路由進(jìn)行存儲(chǔ)。其中,步驟10具體可參照如圖2所示的步驟實(shí)現(xiàn):
步驟11:在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址。
這里,第一哈希地址中存儲(chǔ)有與待查詢路由表項(xiàng)相關(guān)聯(lián)的路由集群;以待查詢路由表項(xiàng)作為關(guān)鍵字K,并將K代入創(chuàng)建第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)時(shí)所采用的第一預(yù)設(shè)哈希函數(shù)H1,計(jì)算出第一哈希地址H1(K)。
步驟12:第一哈希地址中讀取對(duì)應(yīng)的候選路由集群,若候選路由集群中包括待查詢路由表項(xiàng),則將候選路由集群作為第一路由集群。
這里,在第一哈希地址H1(K)中讀取對(duì)應(yīng)的候選路由集群,并判斷該候選路由集群中是否存在待查詢路由表項(xiàng),若存在則將該候選路由集群作為第一路由集群。
進(jìn)一步地,步驟20中查找第一路由設(shè)備的具體實(shí)現(xiàn)方式與步驟10中查找第一路由集群的具體實(shí)現(xiàn)方式類(lèi)似,大致可參照如圖3所示的步驟實(shí)現(xiàn):
步驟21:在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址。
這里,第二哈希地址中存儲(chǔ)有與待查詢路由表項(xiàng)相關(guān)聯(lián)的路由設(shè)備;以待查詢路由表項(xiàng)作為關(guān)鍵字K,并將K代入創(chuàng)建第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)時(shí)所采用的第二預(yù)設(shè)哈希函數(shù)H2,計(jì)算出第二哈希地址H2(K)。
步驟22:在第二哈希地址中讀取對(duì)應(yīng)的候選路由設(shè)備,若候選路由設(shè)備中包括待查詢路由表項(xiàng),則將候選路由設(shè)備作為第一路由設(shè)備。
這里,在第二哈希地址H2(K)中讀取對(duì)應(yīng)的候選路由設(shè)備,并判斷該候選路由設(shè)備中是否存在待查詢路由表項(xiàng),若存在則將該候選路由設(shè)備作為第一路由設(shè)備。
進(jìn)一步地,步驟30可具體參照如圖4所示的步驟實(shí)現(xiàn):
步驟31:在第一路由設(shè)備為根結(jié)點(diǎn)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址。
其中,第三哈希地址中存儲(chǔ)有第一路由設(shè)備的全部路由表項(xiàng),以待查詢路由表項(xiàng)作為關(guān)鍵字K,并將K代入創(chuàng)建第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)時(shí)所采用的第三預(yù)設(shè)哈希函數(shù)H3,計(jì)算出第三哈希地址H3(K)
步驟32:在第三哈希地址中讀取對(duì)應(yīng)的候選路由表項(xiàng),若候選路由表項(xiàng)為待查詢路由表項(xiàng),則查找成功;否則,遍歷線性鏈表查找待查詢路由表項(xiàng)。
這里,在第三哈希地址H3(K)中讀取對(duì)應(yīng)的路由表項(xiàng),并將其與待查詢路由表項(xiàng)作比較,若相等,則查找成功,并將查詢結(jié)構(gòu)反饋;若不相等,則按照創(chuàng)建樹(shù)形存儲(chǔ)結(jié)構(gòu)時(shí)設(shè)定的處理沖突的方法查找下一個(gè)地址,直至查找到某一個(gè)地址中存儲(chǔ)的路由表項(xiàng)與待查詢的路由表項(xiàng)相同或查找到某一個(gè)地址未被占用時(shí)停止查找,本實(shí)施例中將存在沖突的路由表項(xiàng)存儲(chǔ)于線性鏈表中,當(dāng)查找到的路由表項(xiàng)與待查詢路由表項(xiàng)不相等時(shí),遍歷線性鏈表查找。
進(jìn)一步地,對(duì)于使用或查找頻率較低的路由表項(xiàng),亦可采用線性鏈表存儲(chǔ)的方式,優(yōu)選地,我們可以將查詢或使用的頻繁項(xiàng)以樹(shù)形存儲(chǔ)結(jié)構(gòu)進(jìn)行存儲(chǔ)以 提高查詢速度,而對(duì)于非頻繁項(xiàng)則以線性鏈表的存儲(chǔ)方式進(jìn)行存儲(chǔ),以降低路由查詢的復(fù)雜度?;谝陨?,本發(fā)明實(shí)施例的路由查找方法,如圖5所示,在步驟10之前,還可以包括:
步驟01:獲取待查詢路由表項(xiàng),并判斷待查詢路由表項(xiàng)是否為預(yù)設(shè)頻繁項(xiàng)。
其中,預(yù)設(shè)頻繁項(xiàng)為占有率高于預(yù)設(shè)閾值的路由表項(xiàng),例如,我們可將預(yù)設(shè)閾值設(shè)置為0.001,這樣當(dāng)整個(gè)路由系統(tǒng)中包括10萬(wàn)條路由表項(xiàng)時(shí),路由表項(xiàng)A出現(xiàn)的次數(shù)大于或等于100,那么路由表項(xiàng)A即為頻繁項(xiàng)。
步驟02:若不是,則遍歷線性鏈表查找待查詢路由表項(xiàng);若是,則在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中查找第一路由集群。
進(jìn)一步地,在步驟10之前,還包括如圖6所示的創(chuàng)建樹(shù)形存儲(chǔ)結(jié)構(gòu)的步驟。
步驟0A:獲取單個(gè)路由集群下多個(gè)路由設(shè)備中的頻繁項(xiàng),并根據(jù)第一預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由集群下多個(gè)路由設(shè)備的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由集群存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)中。
進(jìn)一步地,步驟0A具體可參照以下步驟實(shí)現(xiàn):
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址,并將對(duì)應(yīng)的路由集群存儲(chǔ)于第一哈希地址中。這里,第一預(yù)設(shè)哈希函數(shù)為H1,將每一個(gè)頻繁項(xiàng)Ki均代入第一預(yù)設(shè)哈希函數(shù)H1中,得到第一哈希地址H1(Ki),并將包括頻繁項(xiàng)Ki的路由集群存儲(chǔ)于第一哈希地址H1(Ki)中。
存儲(chǔ)有不同路由集群的多個(gè)第一哈希地址,構(gòu)建為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
步驟0B:根據(jù)第二預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由設(shè)備下的路由表項(xiàng)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由設(shè)備存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)中。
進(jìn)一步地,步驟0B具體可參照以下步驟實(shí)現(xiàn):
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址,并將對(duì)應(yīng)的路由設(shè)備存儲(chǔ)于第二哈希地址中。這里,第二預(yù)設(shè)哈希函數(shù)為H2,將每一個(gè)頻繁項(xiàng)Ki均代入第二預(yù)設(shè)哈希函數(shù)H2中,得到第二哈希地址 H2(Ki),并將包括頻繁項(xiàng)Ki的路由集群存儲(chǔ)于第二哈希地址H2(Ki)中。
存儲(chǔ)有不同的路由設(shè)備的多個(gè)第二哈希地址,構(gòu)建為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
步驟0C:根據(jù)第三預(yù)設(shè)哈希函數(shù),將路由表項(xiàng)存儲(chǔ)于第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)中。
進(jìn)一步地,步驟0C具體可參照以下步驟實(shí)現(xiàn):
以路由表項(xiàng)為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址,并將對(duì)應(yīng)的路由表項(xiàng)存儲(chǔ)于第三哈希地址中。這里,第三預(yù)設(shè)哈希函數(shù)為H3,將每一個(gè)頻繁項(xiàng)Ki均代入第三預(yù)設(shè)哈希函數(shù)H3中,得到第三哈希地址H3(Ki),并將包括頻繁項(xiàng)Ki的路由集群存儲(chǔ)于第三哈希地址H3(Ki)中。
存儲(chǔ)有不同路由表項(xiàng)的多個(gè)第三哈希地址,構(gòu)建為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
以上也就是說(shuō),單臺(tái)路由設(shè)備的路由表項(xiàng)均通過(guò)樹(shù)形結(jié)構(gòu)方式存儲(chǔ),路由表項(xiàng)作為該樹(shù)形結(jié)構(gòu)的葉子結(jié)點(diǎn),當(dāng)查找到某一臺(tái)路由設(shè)備上是否存在待查詢路由表項(xiàng)K時(shí),需要將K代入建樹(shù)時(shí)采用的第三預(yù)設(shè)哈希函數(shù)H3,計(jì)算出第三哈希地址H3(K),并讀取該地址下存儲(chǔ)的路由表項(xiàng),與待查詢路由表項(xiàng)K作比較,若相等,則查詢成功,否則遍歷線性鏈表,直至查找失敗或查找成功。
將多個(gè)上述路由設(shè)備分為多個(gè)路由集群,對(duì)每個(gè)路由集群中的各個(gè)路由表項(xiàng)的支持度進(jìn)行計(jì)數(shù)進(jìn)行并行計(jì)算,得到支持度高于預(yù)設(shè)閾值的頻繁項(xiàng),并對(duì)頻繁項(xiàng)支持度的高低進(jìn)行降序排列,依據(jù)排序后的頻繁項(xiàng)列表對(duì)路由設(shè)備進(jìn)行分組,然后在分好的組內(nèi),依據(jù)路由表項(xiàng)K并根據(jù)第二預(yù)設(shè)哈希函數(shù)H2計(jì)算第二哈希地址,并將對(duì)應(yīng)的路由設(shè)備存儲(chǔ)于第二哈希地址中,也就是說(shuō)單獨(dú)的每一個(gè)路由集群中都形成一個(gè)完整的樹(shù)形存儲(chǔ)結(jié)構(gòu)。
將路由集群視為一個(gè)整體,將多個(gè)不同的路由集群通過(guò)預(yù)設(shè)第一哈希函數(shù)H1存儲(chǔ)于不同的第一哈希地址中。
進(jìn)一步地,在建好樹(shù)形存儲(chǔ)結(jié)構(gòu)后,當(dāng)頻繁項(xiàng)、路由設(shè)備或路由集群發(fā)生變化時(shí),均會(huì)造成樹(shù)形存儲(chǔ)結(jié)構(gòu)的變化,這樣就涉及到樹(shù)形存儲(chǔ)結(jié)構(gòu)的更新問(wèn)題,以下將分別對(duì)于頻繁項(xiàng)、路由設(shè)備或路由集群發(fā)生變化時(shí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的更新情況進(jìn)行介紹。
情況一:當(dāng)頻繁項(xiàng)發(fā)生變化時(shí),刪除舊頻繁項(xiàng)映射關(guān)系下第一哈希地址、第二哈希地址和第三哈希地址中存儲(chǔ)的數(shù)據(jù),增加新頻繁項(xiàng)映射關(guān)系下的第一哈希地址、第二哈希地址和第三哈希地址中存儲(chǔ)的數(shù)據(jù),以實(shí)現(xiàn)樹(shù)形存儲(chǔ)結(jié)構(gòu)中數(shù)據(jù)的更新。具體可參照以下步驟實(shí)現(xiàn):
1)計(jì)算LΔ1=L1′-L1,式中,L1′是新頻繁項(xiàng)下原路由集群的頻繁項(xiàng)路由表項(xiàng)1的項(xiàng)集,L1是原閾值下原集群設(shè)備路由的頻繁1-項(xiàng)集;
2)判斷差值LΔ1是否為空集,是則執(zhí)行步驟04),否則執(zhí)行步驟03):
3)以差值LΔ1更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu);
4)第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)更新后與原第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)相同。
步驟3具體可參照以下方式進(jìn)行:
01)判斷差集LΔ1是否是空集,是則結(jié)束流程;
02)更新頻繁項(xiàng)列表L1′=L1∪LΔ1;
03)將更新后的頻繁項(xiàng)列表L1′降序排序;
04)對(duì)原集群設(shè)備路由集中的任意事項(xiàng)t,執(zhí)行nItem=L1′∩t,取出待查詢路由表項(xiàng)中與頻繁項(xiàng)列表相交的路由表項(xiàng);
05)執(zhí)行nNode=nItem∩LΔ1,在頻繁列表中出現(xiàn)的路由集中的待查詢路由表項(xiàng)與差集LΔ1相交,求出新nNode;
06)將新nNode插入到樹(shù)形存儲(chǔ)結(jié)構(gòu)對(duì)應(yīng)的地址中,更新結(jié)束。
情況二:當(dāng)增加新路由集群時(shí)引起頻繁項(xiàng)的變化時(shí),獲取新路由集群的頻繁項(xiàng),并以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址,并將對(duì)應(yīng)的新路由集群存儲(chǔ)于第一哈希地址中,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。首先,計(jì)算LΔ2=LDP1+LdP1-L1,式中,LDP1是新頻繁項(xiàng)下原路由集群中的路由表項(xiàng)1的項(xiàng)集,LDP1是新頻繁項(xiàng)下新增路由集群的路由表項(xiàng)1的項(xiàng)集,L1是原頻繁項(xiàng)下原路由集群的路由表項(xiàng)1的項(xiàng)集;然后以差值LΔ2更新第一哈希地址中存儲(chǔ)的路由集群。
這里,由于新增路由集群,可能會(huì)造成頻繁項(xiàng)發(fā)生變化,這樣需要再次獲取頻繁項(xiàng),具體挖掘頻繁項(xiàng)的步驟可參照以下介紹:
11)初始化k=1;
12)令k=k+1,采用Apriori算法,通過(guò)新增路由集群的頻繁項(xiàng)路由表 項(xiàng)1的項(xiàng)集LDP1,其中l(wèi)=k-1,生成新增路由集的候選頻繁項(xiàng)路由表項(xiàng)k的項(xiàng)集cdk,判斷新增路由集的候選頻繁項(xiàng)路由表項(xiàng)k的項(xiàng)集cdk是否為空集,是則挖掘結(jié)束;
13)執(zhí)行cΔk=cdk-Lk,求出新增路由集的候選頻繁項(xiàng)路由表項(xiàng)k的項(xiàng)集cdk與原頻繁項(xiàng)下原路由集群頻繁項(xiàng)路由表項(xiàng)k的項(xiàng)集Lk之差,判斷差值cΔk是否為空集,是則執(zhí)行步驟15),否則執(zhí)行步驟14);
14)對(duì)于步驟3)得到的差值cΔk中的每個(gè)項(xiàng),通過(guò)更新后的樹(shù)形存儲(chǔ)結(jié)構(gòu)計(jì)算出各路徑的支持?jǐn)?shù);通過(guò)判斷cΔk中的項(xiàng)的支持?jǐn)?shù)是否不小于新閾值s′,得到新增的頻繁項(xiàng)路由表項(xiàng)k的項(xiàng)集。
15)通過(guò)判斷cdk中的項(xiàng)的支持?jǐn)?shù)是否不小于新閾值s′,得到新增路由集群的頻繁項(xiàng)路由表項(xiàng)k的項(xiàng)集LdP1。
情況三:當(dāng)路由集群減少時(shí),將對(duì)應(yīng)的第一哈希地址中的路由集群刪除,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
情況四:當(dāng)增加新路由設(shè)備時(shí),獲取新路由設(shè)備的頻繁項(xiàng);
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址,并將對(duì)應(yīng)的新路由設(shè)備存儲(chǔ)于第二新哈希地址中,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。具體實(shí)現(xiàn)與情況二的實(shí)現(xiàn)方式類(lèi)似,故在此不再贅述。
情況五:當(dāng)路由設(shè)備減少時(shí),將對(duì)應(yīng)的第二哈希地址中存儲(chǔ)的路由設(shè)備刪除,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
情況六:當(dāng)增加新路由表項(xiàng)時(shí),獲取新路由表項(xiàng)的頻繁項(xiàng);
以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址,并將對(duì)應(yīng)的新路由表項(xiàng)存儲(chǔ)于第三哈希地址中,更新第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
情況七:當(dāng)路由表項(xiàng)減少時(shí),將對(duì)應(yīng)的第三哈希地址中存儲(chǔ)的路由表項(xiàng)刪除,更新第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
依據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,還提供了一種路由查詢裝置,如圖7所示,包括:
第一查找模塊101,用于根據(jù)待查詢路由表項(xiàng),在由單個(gè)路由集群下的多 個(gè)路由設(shè)備形成的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由集群;其中,路由集群為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn),路由設(shè)備為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn);
第二查找模塊102,用于在由單個(gè)路由設(shè)備下的多個(gè)路由表項(xiàng)形成的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,查找與待查詢路由表項(xiàng)相關(guān)聯(lián)的根結(jié)點(diǎn),得到第一路由設(shè)備;其中,第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn),路由表項(xiàng)為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn);
第三查找模塊103,用于在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)下查找與待查詢路由表項(xiàng)相同的葉子結(jié)點(diǎn),并返回查詢結(jié)果。
進(jìn)一步地,第一查找模塊101包括:
第一查找單元,用于在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址;其中,第一哈希地址中存儲(chǔ)有與待查詢路由表項(xiàng)相關(guān)聯(lián)的路由集群;
第一讀取單元,用于在第一哈希地址中讀取對(duì)應(yīng)的候選路由集群,若候選路由集群中包括待查詢路由表項(xiàng),則將候選路由集群作為第一路由集群。
進(jìn)一步地,第二查找模塊102包括:
第二查找單元,用于在第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址;其中,第二哈希地址中存儲(chǔ)有與待查詢路由表項(xiàng)相關(guān)聯(lián)的路由設(shè)備;
第二讀取單元,用于在第二哈希地址中讀取對(duì)應(yīng)的候選路由設(shè)備,若候選路由設(shè)備中包括待查詢路由表項(xiàng),則將候選路由設(shè)備作為第一路由設(shè)備。
進(jìn)一步地,第三查找模塊103包括:
第三查找單元,用于在第一路由設(shè)備為根結(jié)點(diǎn)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中,以待查詢路由表項(xiàng)作為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址;其中,第三哈希地址中存儲(chǔ)有第一路由設(shè)備的全部路由表項(xiàng);
第三讀取單元,用于在第三哈希地址中讀取對(duì)應(yīng)的候選路由表項(xiàng),若候選路由表項(xiàng)為待查詢路由表項(xiàng),則查找成功;否則,遍歷線性鏈表查找待查詢路由表項(xiàng)。
進(jìn)一步地,該路由查詢裝置還包括:
判斷模塊,用于獲取待查詢路由表項(xiàng),并判斷待查詢路由表項(xiàng)是否為預(yù)設(shè)頻繁項(xiàng);其中,預(yù)設(shè)頻繁項(xiàng)為占有率高于預(yù)設(shè)閾值的路由表項(xiàng);
若不是,則遍歷線性鏈表查找待查詢路由表項(xiàng);
若是,則在第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中查找第一路由集群。
進(jìn)一步地,該路由查詢裝置還包括:
第一創(chuàng)建模塊,用于獲取單個(gè)路由集群下的多個(gè)路由設(shè)備中的頻繁項(xiàng),并根據(jù)第一預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由集群下多個(gè)路由設(shè)備的第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由集群存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的根結(jié)點(diǎn)中;
第二創(chuàng)建模塊,用于根據(jù)第二預(yù)設(shè)哈希函數(shù),創(chuàng)建頻繁項(xiàng)對(duì)應(yīng)的路由設(shè)備下的路由表項(xiàng)的第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu),并將路由設(shè)備存儲(chǔ)于第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)中的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)中;
第三創(chuàng)建模塊,用于根據(jù)第三預(yù)設(shè)哈希函數(shù),將路由表項(xiàng)存儲(chǔ)于第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)中。
進(jìn)一步地,第一創(chuàng)建模塊包括:
第一計(jì)算單元,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址,并將對(duì)應(yīng)的路由集群存儲(chǔ)于第一哈希地址中;
第一創(chuàng)建單元,用于將存儲(chǔ)有不同路由集群的多個(gè)第一哈希地址,構(gòu)建為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,第二創(chuàng)建模塊包括:
第二計(jì)算單元,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址,并將對(duì)應(yīng)的路由設(shè)備存儲(chǔ)于第二哈希地址中;
第二創(chuàng)建單元,用于將存儲(chǔ)有不同的路由設(shè)備的多個(gè)第二哈希地址,構(gòu)建為第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,第三創(chuàng)建模塊包括:
第三計(jì)算單元,用于以路由表項(xiàng)為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址,并將對(duì)應(yīng)的路由表項(xiàng)存儲(chǔ)于第三哈希地址中;
第三創(chuàng)建單元,用于將存儲(chǔ)有不同路由表項(xiàng)的多個(gè)第三哈希地址,構(gòu)建為第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第一獲取模塊,用于當(dāng)增加新路由集群時(shí),獲取新路由集群的頻繁項(xiàng);
第一更新模塊,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第一預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第一哈希地址,并將對(duì)應(yīng)的新路由集群存儲(chǔ)于第一哈希地址中,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第二更新模塊,用于當(dāng)路由集群減少時(shí),將對(duì)應(yīng)的第一哈希地址中的路由集群刪除,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第二獲取模塊,用于當(dāng)增加新路由設(shè)備時(shí),獲取新路由設(shè)備的頻繁項(xiàng);
第三更新模塊,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第二預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第二哈希地址,并將對(duì)應(yīng)的新路由設(shè)備存儲(chǔ)于第二新哈希地址中,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第四更新模塊,用于當(dāng)路由設(shè)備減少時(shí),將對(duì)應(yīng)的第二哈希地址中存儲(chǔ)的路由設(shè)備刪除,更新第一級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)或二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的根結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第三獲取模塊,用于當(dāng)增加新路由表項(xiàng)時(shí),獲取新路由表項(xiàng)的頻繁項(xiàng);
第五更新模塊,用于以頻繁項(xiàng)為關(guān)鍵字,并根據(jù)第三預(yù)設(shè)哈希函數(shù)進(jìn)行計(jì)算,得到第三哈希地址,并將對(duì)應(yīng)的新路由表項(xiàng)存儲(chǔ)于第三哈希地址中,更新第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
進(jìn)一步地,該路由查詢裝置還包括:
第六更新模塊,用于當(dāng)路由表項(xiàng)減少時(shí),將對(duì)應(yīng)的第三哈希地址中存儲(chǔ)的路由表項(xiàng)刪除,更新第二級(jí)樹(shù)形存儲(chǔ)結(jié)構(gòu)的葉子結(jié)點(diǎn)。
需要說(shuō)明的是,該路由查詢裝置是與上述路由查詢方法對(duì)應(yīng)的裝置,上述方法實(shí)施例中所有實(shí)現(xiàn)方式均適用于該裝置的實(shí)施例中,也能達(dá)到相同的技術(shù)效果。
以上所述的是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出對(duì)于本技術(shù)領(lǐng)域的普通人員來(lái)說(shuō),在不脫離本發(fā)明所述的原理前提下還可以作出若干改進(jìn)和潤(rùn)飾,這些 改進(jìn)和潤(rùn)飾也在本發(fā)明的保護(hù)范圍內(nèi)。