国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

針對(duì)層次化名字路由的聚合機(jī)制?

2019-03-05 03:45:42許志偉張玉軍
軟件學(xué)報(bào) 2019年2期
關(guān)鍵詞:布隆層次化后綴

許志偉,陳 波,張玉軍

1(中國(guó)科學(xué)院大學(xué),北京 100049)

2(中國(guó)科學(xué)院 計(jì)算技術(shù)研究所,北京 100190)

3(Department of Computer Science,University of Memphis,Memphis,TN 38152,USA)

現(xiàn)有的互聯(lián)網(wǎng)在可擴(kuò)展性、移動(dòng)性和安全性等方面面臨嚴(yán)峻的挑戰(zhàn)[1-3].互聯(lián)網(wǎng)的主流應(yīng)用形式已經(jīng)從基本的端到端通信轉(zhuǎn)變?yōu)榇笠?guī)模內(nèi)容傳輸,現(xiàn)有互聯(lián)網(wǎng)端到端的設(shè)計(jì)原則無(wú)法適應(yīng)這些新興的內(nèi)容密集型應(yīng)用形式,加劇了互聯(lián)網(wǎng)的內(nèi)容傳輸壓力.同時(shí),隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,由移動(dòng)終端產(chǎn)生的流量占總體網(wǎng)絡(luò)流量的比重日益增加,而 TCP/IP體系結(jié)構(gòu)面向常連接設(shè)計(jì),IP地址被賦予身份和位置雙重功能,無(wú)法有效支撐移動(dòng)性應(yīng)用的要求.

為了從根本上解決互聯(lián)網(wǎng)面臨的這些問(wèn)題,需要采用clean-slate方式設(shè)計(jì)并建設(shè)全新的未來(lái)互聯(lián)網(wǎng)[3-5].命名數(shù)據(jù)網(wǎng)絡(luò)(named data networking,簡(jiǎn)稱NDN)[6,7]根據(jù)信息名字請(qǐng)求和傳輸數(shù)據(jù),不再依賴固定的IP地址傳輸數(shù)據(jù),保證了互聯(lián)網(wǎng)的可擴(kuò)展性和移動(dòng)性;同時(shí),采用網(wǎng)內(nèi)數(shù)據(jù)泛在緩存和多路傳輸,有效地保障了這種基于內(nèi)容名字的傳輸機(jī)制的效率.鑒于 NDN網(wǎng)絡(luò)的這些優(yōu)點(diǎn),命名數(shù)據(jù)網(wǎng)絡(luò)的設(shè)計(jì)思想已經(jīng)得到了廣泛的重視和研究,將會(huì)應(yīng)用于包括5G在內(nèi)的新興網(wǎng)絡(luò)體系[8,9].

NDN網(wǎng)絡(luò)基于內(nèi)容名字進(jìn)行路由,內(nèi)容名字由不定數(shù)量的任意字符串組成.與 IP地址相比,內(nèi)容名字的結(jié)構(gòu)更為復(fù)雜,因此,現(xiàn)有的互聯(lián)網(wǎng)路由機(jī)制無(wú)法直接應(yīng)用于NDN網(wǎng)絡(luò).同時(shí),當(dāng)前互聯(lián)網(wǎng)擁有海量的在線內(nèi)容,相應(yīng)的內(nèi)容名字?jǐn)?shù)量也極其龐大.綜合考慮NDN網(wǎng)絡(luò)路由內(nèi)容名字的復(fù)雜性及其龐大的數(shù)量,基于名字的路由技術(shù)將是影響NDN網(wǎng)絡(luò)效率的最為關(guān)鍵的問(wèn)題,將直接影響NDN網(wǎng)絡(luò)的效率和可用性[1].名字是內(nèi)容的標(biāo)識(shí),目前常見(jiàn)的內(nèi)容名字可以分為兩類.

· 一類是以 NDN為代表的層次化名字,采用可讀的文本方式組織,一般由多個(gè)“/”隔開(kāi)的名字段(字符串)組成,名字段的數(shù)量和長(zhǎng)度都是任意的,類似于現(xiàn)行互聯(lián)網(wǎng)中的URL(uniform resource locator)[7].

· 另一類是以數(shù)字簽名為代表的扁平化名字.這類名字是經(jīng)過(guò)散列(hash)得到的散列值,具有很好的安全性[2].各類扁平化名字具有其專門的編碼方式,與IP地址類似,配備有完整的命名和路由規(guī)則.

當(dāng)前,關(guān)于層次化名字路由的研究還不成熟,尤其是如何優(yōu)化層次化名字路由,還沒(méi)有完善的解決方案.

目前,關(guān)于層次化名字路由傳輸?shù)难芯恐饕性谔嵘酚杀淼拿智熬Y(名字前綴由多個(gè)名字段構(gòu)成)查找速度方面[10-14],例如,通過(guò)前綴樹(shù)壓縮和GPU并行加速等方法來(lái)提高路由查表速度.現(xiàn)有的NDN路由機(jī)制為了獲取特定內(nèi)容,需要針對(duì)該內(nèi)容的名字添加相應(yīng)的路由表項(xiàng),利用內(nèi)容名字標(biāo)識(shí)路由,并關(guān)聯(lián)可以用于轉(zhuǎn)發(fā)的接口信息(不唯一),因此,NDN的路由表規(guī)模與現(xiàn)有 TCP/IP網(wǎng)絡(luò)的路由表規(guī)模相比將出現(xiàn)巨大的增長(zhǎng).另一方面,NDN網(wǎng)絡(luò)中內(nèi)容來(lái)源多樣,信息可以來(lái)自多信息源,或者移動(dòng)信息源,甚至以存儲(chǔ)在網(wǎng)內(nèi)緩存中的信息副本作為信息來(lái)源,導(dǎo)致網(wǎng)絡(luò)內(nèi)容版本變化更加頻繁,進(jìn)一步加劇了層次化名字路由器的負(fù)載.因此,僅靠提升單節(jié)點(diǎn)查表速度難以保證海量在線內(nèi)容的高效路由轉(zhuǎn)發(fā).針對(duì)這些問(wèn)題,我們需要約減 NDN 網(wǎng)絡(luò)整體路由規(guī)模,實(shí)現(xiàn)層次化路由的聚合和聚合更新,保證高效、準(zhǔn)確地轉(zhuǎn)發(fā)內(nèi)容請(qǐng)求包及相應(yīng)的內(nèi)容包,提升NDN網(wǎng)絡(luò)整體效率.

路由聚合是降低路由表規(guī)模、提升查表效率和優(yōu)化路由轉(zhuǎn)發(fā)效率的主要措施.路由聚合用一條聚合路由代替大量原始路由,從而減小路由表規(guī)模[15].NDN網(wǎng)絡(luò)各節(jié)點(diǎn)路由聚合過(guò)程如圖1所示,聚合前,路由表中存在各個(gè)內(nèi)容對(duì)應(yīng)的表項(xiàng);聚合后,具有公共前綴和相同轉(zhuǎn)發(fā)接口的表項(xiàng)被聚合為一條聚合路由.不同于現(xiàn)有無(wú)類域間路由利用子網(wǎng)號(hào)(IP前綴)作為聚合路由標(biāo)識(shí),NDN網(wǎng)絡(luò)聚合路由的標(biāo)識(shí)應(yīng)包括兩部分:首先是內(nèi)容名字前綴,其次還需要利用后綴聚合標(biāo)識(shí)區(qū)分這一前綴下發(fā)往不同接口內(nèi)容名字.這一聚合路由標(biāo)識(shí)上的差異實(shí)際上反映了IP路由和層次化名字路由的本質(zhì)差異.IP地址路由標(biāo)識(shí)了路由轉(zhuǎn)發(fā)的目的地址,特定子網(wǎng)內(nèi)IP地址有限,可以用子網(wǎng)號(hào)代表這些地址,作為聚合路由標(biāo)識(shí).NDN網(wǎng)絡(luò)中,擁有同一名字前綴的路由的指向不確定,僅利用名字前綴無(wú)法代表所有被聚合的路由,形成的聚合路由也無(wú)法作為路由轉(zhuǎn)發(fā)的真正依據(jù),需要引入名字后綴的壓縮表示來(lái)共同標(biāo)識(shí)被聚合的路由.

Fig.1 An example for hierarchical name-based route aggregation圖1 層次化名字路由的聚合實(shí)例

為了實(shí)現(xiàn)全網(wǎng)路由聚合,最大程度地減少名字路由條目數(shù)量,在完成特定前綴的名字路由聚合后,需要將被聚合路由通告給其他網(wǎng)絡(luò)節(jié)點(diǎn),以便這些節(jié)點(diǎn)進(jìn)一步進(jìn)行路由聚合,與本地路由表壓縮的效果對(duì)比,路由聚合能夠在網(wǎng)絡(luò)層面真正大幅度縮減路由規(guī)模.

為了約減全網(wǎng)路由規(guī)模,提升層次化名字路由查表及轉(zhuǎn)發(fā)效率,本文對(duì)層次化名字路由聚合問(wèn)題進(jìn)行了系統(tǒng)的分析,采用名字前綴和后綴壓縮表示共同標(biāo)識(shí)路由,提出了支持聚合的后綴壓縮表示機(jī)制,并以路由可用性為依據(jù)構(gòu)建了高可用的路由聚合機(jī)制,為NDN網(wǎng)絡(luò)投入實(shí)際部署提供了前提.主要包括如下工作.

(1)對(duì)層次化名字路由聚合問(wèn)題進(jìn)行了研究,明確了將名字后綴納入聚合后的路由標(biāo)識(shí)的必要性.

(2)為了支持聚合路由在節(jié)點(diǎn)間的交換及進(jìn)一步的聚合,本文提出了一種支持更新及合并操作的后綴壓縮表示機(jī)制,堆疊計(jì)數(shù)布隆過(guò)濾器.

(3)為了限制后綴壓縮表示引起的冗余轉(zhuǎn)發(fā),我們依據(jù)聚合路由的可用性構(gòu)建了一套動(dòng)態(tài)名字路由聚合機(jī)制,在保證路由轉(zhuǎn)發(fā)正確性的前提下,最大程度地聚合名字路由,約減全面路由規(guī)模,提升了路由轉(zhuǎn)發(fā)效率,保證了海量在線內(nèi)容的高效路由轉(zhuǎn)發(fā).

本文首先在第1節(jié)對(duì)問(wèn)題背景和相關(guān)研究進(jìn)行系統(tǒng)分析.第2節(jié)分析層次化名字路由問(wèn)題.第3節(jié)提出一種可合并計(jì)數(shù)布隆過(guò)濾器,用于名字后綴的壓縮表示,和名字前綴一同標(biāo)識(shí)聚合路由,以便進(jìn)行本地路由聚合和全網(wǎng)聚合路由通告.在此基礎(chǔ)上,本文給出一套高可用的動(dòng)態(tài)路由聚合機(jī)制.最后,本文在真實(shí)網(wǎng)絡(luò)拓?fù)涞幕A(chǔ)上構(gòu)建仿真平臺(tái),驗(yàn)證所提出的層次化名字路由聚合機(jī)制.

1 背景及研究現(xiàn)狀

1.1 NDN網(wǎng)絡(luò)

NDN根據(jù)層次化的名字而不是IP地址路由和轉(zhuǎn)發(fā)數(shù)據(jù)包.為了從NDN網(wǎng)絡(luò)中獲取需要的內(nèi)容,一個(gè)請(qǐng)求節(jié)點(diǎn) Consumer首先發(fā)送請(qǐng)求包(interest),其中包括被請(qǐng)求內(nèi)容的層次化名字.網(wǎng)絡(luò)中的路由節(jié)點(diǎn)收到該請(qǐng)求包后,分3步進(jìn)行處理.

(1)首先查找PIT表(pending interest table).PIT表記錄了之前轉(zhuǎn)發(fā)過(guò)的所有未被響應(yīng)的請(qǐng)求包信息,包括被請(qǐng)求內(nèi)容的名字、收到該請(qǐng)求的時(shí)間、接口及轉(zhuǎn)發(fā)接口.如果在 PIT表中找到了特定名字的請(qǐng)求信息,則意味著已經(jīng)轉(zhuǎn)發(fā)過(guò)該請(qǐng)求,將新的請(qǐng)求到達(dá)端口加入該表項(xiàng)的接口列表,收到內(nèi)容后一并處理;如果沒(méi)有找到,則建立新的PIT表項(xiàng).

(2)查找該節(jié)點(diǎn)的內(nèi)容緩存CS(content store),如果緩存了該內(nèi)容,則直接構(gòu)建相應(yīng)的內(nèi)容包(content),并從收到請(qǐng)求的接口返回內(nèi)容包.

(3)如果本地未緩存所請(qǐng)求內(nèi)容,則查找轉(zhuǎn)發(fā)表FIB(forwarding information base),從指定接口將該請(qǐng)求轉(zhuǎn)發(fā)給下一跳的各個(gè)鄰居.如果傳輸路徑上的節(jié)點(diǎn)都沒(méi)有緩存被請(qǐng)求內(nèi)容,則請(qǐng)求包最終將被轉(zhuǎn)發(fā)到內(nèi)容發(fā)布者 Producer,由內(nèi)容發(fā)布者構(gòu)建內(nèi)容包.內(nèi)容包中將包括內(nèi)容名字、內(nèi)容、內(nèi)容包簽名及簽名信息(發(fā)布者公鑰等).然后,同樣由內(nèi)容發(fā)布者從收到請(qǐng)求包的接口返回該內(nèi)容包.內(nèi)容包由轉(zhuǎn)發(fā)請(qǐng)求包的路由節(jié)點(diǎn)按照其對(duì)應(yīng) PIT表項(xiàng)中的記錄沿請(qǐng)求到達(dá)接口原路徑返回,最終達(dá)到內(nèi)容請(qǐng)求者Consumer.

各節(jié)點(diǎn) FIB中記錄全網(wǎng)所有在線內(nèi)容的轉(zhuǎn)發(fā)信息,路由條目數(shù)量巨大,為了保證正常的基于層次化名字的路由轉(zhuǎn)發(fā),必須有效地約減路由條目數(shù)量,提升路由查表及轉(zhuǎn)發(fā)效率.

1.2 相關(guān)研究分析

針對(duì)現(xiàn)有的TCP/IP網(wǎng)絡(luò)規(guī)模不斷增長(zhǎng)的問(wèn)題,大量工作試圖通過(guò)IP路由聚合和壓縮加以解決[15,16].其中,基于無(wú)類域間路由的TCP/IP網(wǎng)絡(luò)路由聚合機(jī)制利用子網(wǎng)號(hào)(IP前綴)代表被聚合的子網(wǎng)IP地址,有效地約簡(jiǎn)了全網(wǎng)路由規(guī)模[15],保證了現(xiàn)有 TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)的互聯(lián)網(wǎng)的可用性.其后,為了進(jìn)一步縮短路由查表時(shí)間,提升路由轉(zhuǎn)發(fā)效率,出現(xiàn)了大量本地路由表壓縮方面的研究.Degermark等人通過(guò)一種全新的 hash機(jī)制實(shí)現(xiàn)了路由IP前綴的壓縮[16].文獻(xiàn)[17]首次使用基本的Bloom過(guò)濾器實(shí)現(xiàn)了路由表查表過(guò)程的優(yōu)化.針對(duì)IPv4和IPv6路由查表過(guò)程,文獻(xiàn)[18]提出了一種編碼機(jī)制,在保證查找效率的同時(shí),降低了查找過(guò)程中的誤判率.然而,由于名字路由不再基于 IP實(shí)現(xiàn)路由,而是以內(nèi)容名字為路由標(biāo)識(shí)進(jìn)行路由,路由標(biāo)識(shí)的數(shù)量不可控,且結(jié)構(gòu)更為復(fù)雜,這些研究都無(wú)法直接應(yīng)用于層次化名字路由.

在 NDN路由轉(zhuǎn)發(fā)方面,張麗霞等人[7]進(jìn)行了大量基礎(chǔ)性研究.首先,在文獻(xiàn)[19]中提出了 NDN網(wǎng)絡(luò)的自適應(yīng)多路轉(zhuǎn)發(fā)機(jī)制,在轉(zhuǎn)發(fā)路徑選擇方面優(yōu)化了網(wǎng)絡(luò)傳輸效率;其次,文獻(xiàn)[20,21]分別提出了 NDN網(wǎng)絡(luò)中基于內(nèi)容名字的最短路徑優(yōu)先協(xié)議OSPFN和鏈路狀態(tài)協(xié)議NLSR,實(shí)現(xiàn)了基本的層次化名字路由.在所提出的這些關(guān)鍵問(wèn)題的引導(dǎo)下,層次化名字路由機(jī)制得到了更為廣泛的研究[22-24],包括分層路由和路由可達(dá)性評(píng)估等機(jī)制被先后引入層次化名字路由過(guò)程.為了進(jìn)一步提升路由查表效率,文獻(xiàn)[10,13,14,25]通過(guò)哈希表、名字前綴的前綴樹(shù)索引和前綴樹(shù)壓縮等方式優(yōu)化了NDN路由節(jié)點(diǎn)路由查表(內(nèi)容名字查找)效率.文獻(xiàn)[11]通過(guò)GPU提升了前綴樹(shù)查找效率.為了實(shí)現(xiàn)板卡級(jí)別的包過(guò)濾,進(jìn)而優(yōu)化NDN網(wǎng)絡(luò)內(nèi)容獲取效率,文獻(xiàn)[12]利用布隆過(guò)濾器實(shí)現(xiàn)了網(wǎng)絡(luò)節(jié)點(diǎn)本地FIB表、PIT表和CS緩存的表項(xiàng)板卡級(jí)緩存,提升了轉(zhuǎn)發(fā)效率.然而,當(dāng)今互聯(lián)網(wǎng)已經(jīng)得到了全方位的應(yīng)用,在可以預(yù)期的互聯(lián)網(wǎng)擴(kuò)大應(yīng)用的大背景下,網(wǎng)絡(luò)信息數(shù)量將進(jìn)一步急劇增長(zhǎng)[3],僅僅通過(guò)改進(jìn)本地路由查表過(guò)程、提升查表效率,并不能從根本上解決未來(lái)層次化名字路由在應(yīng)用中的路由規(guī)模問(wèn)題,需要通過(guò)研究包括路由聚合在內(nèi)的全網(wǎng)路由規(guī)模約減機(jī)制來(lái)保證正常的路由查表及轉(zhuǎn)發(fā).

2 針對(duì)層次化名字路由的聚合過(guò)程分析

構(gòu)建在現(xiàn)有互聯(lián)網(wǎng)層次化網(wǎng)絡(luò)拓?fù)渲系腡CP/IP路由聚合機(jī)制,通過(guò)無(wú)類域間路由將子網(wǎng)IP地址聚合成對(duì)應(yīng)的子網(wǎng)網(wǎng)絡(luò)號(hào)以約減路由表規(guī)模,并將聚合后的路由通告給其他網(wǎng)絡(luò)節(jié)點(diǎn),以便進(jìn)行進(jìn)一步的聚合,最終形成高度聚合的聚合路由,在全網(wǎng)范圍內(nèi)約減路由規(guī)模.NDN的層次化名字路由根據(jù)路由名決定從哪幾個(gè)接口轉(zhuǎn)發(fā)內(nèi)容請(qǐng)求.下面通過(guò)一個(gè)例子分析名字路由聚合過(guò)程.注意,為了簡(jiǎn)化分析,假設(shè)各節(jié)點(diǎn)路由的轉(zhuǎn)發(fā)接口均一致,不再特別說(shuō)明.參照IP地址聚合機(jī)制,層次化名字聚合過(guò)程如圖2(a)所示.

Fig.2 Potential problems in hierarchical name-based route aggregation圖2 針對(duì)層次化名字的路由聚合過(guò)程的潛在問(wèn)題

(1)在路由建立過(guò)程中,路由器R1和R2分別向路由器R3發(fā)送了針對(duì)名字A1/B1/C1和A1/B1/C2的路由通告.

(2)路由器R3收到這兩條路由通告后,聚合成路由表項(xiàng)A1/B1并添入其FIB(fowarding information base)表.

(3)路由器R3繼續(xù)向周邊路由器通告聚合后的路由表項(xiàng),最終路由器R4將收到的路由通告A1/B1與其本地路由A1/B2進(jìn)一步聚合,得到路由A1并通告給R5.

(4)在數(shù)據(jù)請(qǐng)求階段,路由器R5向R4發(fā)送請(qǐng)求包,請(qǐng)求名字為A1/B1/C1的內(nèi)容.

(5)路由器R4會(huì)根據(jù)路由表項(xiàng)A1/B1將請(qǐng)求包轉(zhuǎn)發(fā)給路由器R3.

(6)最終由路由器R3轉(zhuǎn)發(fā)給路由器R1,路由器R1返回相應(yīng)的數(shù)據(jù)內(nèi)容給請(qǐng)求者.

從上述過(guò)程可知,采用層次化名字聚合能夠縮小全網(wǎng)路由表規(guī)模,進(jìn)而提升路由查找效率.然而,如果僅僅采取與IP地址類似的聚合方式,那么當(dāng)請(qǐng)求沒(méi)有聚合過(guò)的內(nèi)容時(shí),這種聚合方式將會(huì)出現(xiàn)問(wèn)題.還是在上述例子中,如果在步驟(4′)中,R5請(qǐng)求名字為A1/B1/C3的數(shù)據(jù),那么在步驟(5′)中,R4同樣會(huì)基于聚合后的路由表項(xiàng)將請(qǐng)求包轉(zhuǎn)發(fā)給路由器R3,但因?yàn)槁酚善鱎3中并沒(méi)有聚合名字為A1/B1/C3的路由信息,將導(dǎo)致數(shù)據(jù)請(qǐng)求失敗.

從上述實(shí)例可以看出,名字聚合不能完全采用IP路由聚合的方式.原因在于,IP路由地址是一種具有固定長(zhǎng)度的由0和1組成的比特串,當(dāng)聚合后的IP地址前綴長(zhǎng)度為k時(shí),其可能包含的被聚合后綴的取值最多只有232-k種,IP地址聚合時(shí)考慮到了所有可能的后綴取值,聚合后通過(guò)IP前綴信息標(biāo)識(shí)路由;與IP地址不同,內(nèi)容名字的取值可以是任意字符串.層次化名字的一個(gè)名字段在理論上有無(wú)窮多種取值,如圖2(a)中,名字前綴“A1/B1/”后面可以添加各種字符串(名字后綴),因此,以名字前綴為標(biāo)識(shí)的聚合結(jié)果無(wú)法囊括所有可能的名字后綴,即使請(qǐng)求名字同路由名字的前綴吻合,也無(wú)法保證可以根據(jù)該路由轉(zhuǎn)發(fā)請(qǐng)求并獲得對(duì)應(yīng)的內(nèi)容.因此,在名字路由聚合過(guò)程中,不僅需要抽離出待聚合路由的公共前綴來(lái)作為新的聚合路由前綴,同時(shí)為了準(zhǔn)確地將多條路由聚合為一條聚合路由,也需要生成這些待聚合路由名字后綴的壓縮表示,和聚合路由前綴一起標(biāo)識(shí)聚合路由,如圖2(b)所示.為了便于節(jié)點(diǎn)間交換聚合路由并進(jìn)一步聚合這些路由,實(shí)現(xiàn)全網(wǎng)路由聚合,后綴壓縮表示不僅需要能夠準(zhǔn)確地壓縮表示被聚合路由的名字后綴,還需要支持多個(gè)后綴壓縮表示的合并,以便構(gòu)建新的聚合路由.如圖2(b)中,R3完成對(duì)路由A1/B1/C1和A1/B1/C2的聚合后,會(huì)將聚合路由A1/B1:C(x)通告周邊節(jié)點(diǎn)R4,其中,C(x)為名字后綴C1和C2的壓縮表示,R4可以將收到的聚合路由A1/B1:C(x)和本地路由A1/B2:C(y)進(jìn)一步聚合,壓縮表示B1,B2的同時(shí),合并C(x),C(y),形成新的聚合路由A1:B(k)/C(x,y),聚合路由標(biāo)識(shí)由名字前綴A1和名字后綴壓縮表示B(k)/C(x,y)共同構(gòu)成.

考慮到全網(wǎng)海量?jī)?nèi)容名字聚合后的巨大熵空間,過(guò)度的聚合必將帶來(lái)路由查表過(guò)程中的誤判,因此在名字聚合過(guò)程中,需要保證聚合后路由的可用性.在此基礎(chǔ)上,最大程度地聚合路由,縮減全網(wǎng)路由的規(guī)模.如何構(gòu)建準(zhǔn)確的后綴壓縮表示機(jī)制,并以聚合路由可用性為依據(jù)完善層次化名字路由的聚合機(jī)制,以更少的路由條目表征正確的路由轉(zhuǎn)發(fā)路徑,這將是一個(gè)極具挑戰(zhàn)性的問(wèn)題,也是層次化名字路由聚合過(guò)程中必須解決的一個(gè)關(guān)鍵問(wèn)題.

3 針對(duì)層次化名字路由的聚合機(jī)制

根據(jù)上一節(jié)的分析,為了構(gòu)建針對(duì)層次化名字路由的聚合機(jī)制,主要需要解決兩個(gè)問(wèn)題.

(1)聚合路由標(biāo)識(shí)問(wèn)題,具體來(lái)說(shuō)就是名字后綴的壓縮表示問(wèn)題;

(2)以路由可用性為基準(zhǔn)的路由聚合問(wèn)題.

為了解決這些問(wèn)題,本節(jié)首先對(duì)聚合過(guò)程中的核心問(wèn)題——名字后綴壓縮表示問(wèn)題進(jìn)行分析,并按照分析結(jié)論設(shè)計(jì)支持路由名字后綴壓縮表示的計(jì)數(shù)布隆過(guò)濾器——堆疊計(jì)數(shù)布隆過(guò)濾器,和名字前綴一起構(gòu)成聚合路由標(biāo)識(shí);最后,在對(duì)NDN路由可達(dá)性分析的基礎(chǔ)上構(gòu)建一套高可用動(dòng)態(tài)路由聚合機(jī)制.

3.1 后綴壓縮表示問(wèn)題分析

網(wǎng)絡(luò)內(nèi)容不斷發(fā)生變化,存在內(nèi)容源失效、內(nèi)容過(guò)期和內(nèi)容版本更新等情況,為了能夠動(dòng)態(tài)地添加并更新指向相關(guān)內(nèi)容的聚合路由,后綴壓縮表示機(jī)制不僅要表示特定內(nèi)容后綴的存在性,同時(shí)還要支持特定內(nèi)容后綴的刪除和更新.經(jīng)過(guò)多年的發(fā)展,布隆過(guò)濾器(Bloom filter,簡(jiǎn)稱BF)已經(jīng)成為應(yīng)用最為廣泛的壓縮表示機(jī)制,衍生出了多種不同類型的布隆過(guò)濾器,其中,計(jì)數(shù)布隆過(guò)濾器(counting Bloom filter,簡(jiǎn)稱 CBF)被設(shè)計(jì)用來(lái)同時(shí)支持添加操作和刪除操作[26].CBF通過(guò)將 BF的單比特位單元擴(kuò)展為用于計(jì)數(shù)的固定長(zhǎng)度的多比特位單元,記錄各單元被重復(fù)設(shè)置為1的次數(shù)(所添加名字段的哈希值命中這一單元的次數(shù)),以便哈希到這些單元上的已添加元素需要被刪除時(shí),通過(guò)減小這些單元上的計(jì)數(shù)器值來(lái)實(shí)現(xiàn)元素刪除.除了用l比特的計(jì)數(shù)器替代基本布隆過(guò)濾器的單比特單元外,CBF完全等同于 BF,可以按照基本布隆過(guò)濾器的配置方法配置,包括配置過(guò)濾器單元(計(jì)數(shù)器)數(shù)、哈希函數(shù)數(shù)量等.CBF的哈希函數(shù)命中特定單元的最大次數(shù)c大于特定整數(shù)i的概率具有上界[27],可以根據(jù)這一上界配置CBF各單元計(jì)數(shù)器大小(比特位串長(zhǎng)度l).通常情況下,4比特長(zhǎng)的計(jì)數(shù)器即可滿足構(gòu)建CBF的需要,以極大的概率保證任一單元的計(jì)數(shù)器都不會(huì)超出其最大計(jì)數(shù)范圍.CBF可以滿足路由聚合過(guò)程中路由更新引起的動(dòng)態(tài)添加、刪除名字后綴的需要.為了優(yōu)化CBF的性能,在支持添加操作和刪除操作的同時(shí),降低存儲(chǔ)開(kāi)銷和假陽(yáng)性率,多種新型計(jì)數(shù)布隆過(guò)濾器先后被提出來(lái).其中,Cohen等人提出了 Spectral Bloom Filter(SBF)[28],可以確保其任一單元的計(jì)數(shù)器都不會(huì)超出其最大計(jì)數(shù)值,但是與 CBF相比增加了的存儲(chǔ)開(kāi)銷.文獻(xiàn)[29]基于d-left哈希提出dlCBF,與CBF相比,在同樣的假陽(yáng)性率下優(yōu)化了存儲(chǔ)開(kāi)銷.MPCBF[30]利用多級(jí)比特?cái)?shù)組在保證查詢效率的基礎(chǔ)上實(shí)現(xiàn)了CBF的功能,其存儲(chǔ)開(kāi)銷和假陽(yáng)性率與CBF相比都有所改善.

但是,如果利用現(xiàn)有各類計(jì)數(shù)布隆過(guò)濾器壓縮表示路由名字后綴,在全網(wǎng)路由聚合過(guò)程中,來(lái)自不同節(jié)點(diǎn)的相關(guān)路由后綴的壓縮表示將被進(jìn)一步聚合,這就需要將后綴壓縮表示(計(jì)數(shù)布隆過(guò)濾器)合并,而現(xiàn)有的各類計(jì)數(shù)布隆過(guò)濾器[27-30]都不支持多個(gè)計(jì)數(shù)布隆過(guò)濾器的合并操作.現(xiàn)有計(jì)數(shù)布隆過(guò)濾器都通過(guò)類似計(jì)數(shù)器的機(jī)制來(lái)記錄哈希函數(shù)重復(fù)命中各個(gè)單元的情況,多個(gè)計(jì)數(shù)布隆過(guò)濾器合并時(shí)可以選擇的合并算子包括加運(yùn)算、或運(yùn)算和異或運(yùn)算.首先,逐個(gè)單元進(jìn)行計(jì)數(shù)器值的按位或運(yùn)算和異或的運(yùn)算結(jié)果不能代表不同元素命中各單元的計(jì)數(shù)總和,因此無(wú)法用來(lái)支持計(jì)數(shù)布隆過(guò)濾器的合并.而對(duì)應(yīng)單元的計(jì)數(shù)器相加同樣也存在問(wèn)題.例如,

(1)將計(jì)數(shù)布隆過(guò)濾器的計(jì)數(shù)器長(zhǎng)度設(shè)為4比特,最大計(jì)數(shù)值為15.

(2)當(dāng)一個(gè)節(jié)點(diǎn)R周邊的16個(gè)節(jié)點(diǎn)中的一個(gè)Rj壓縮表示一個(gè)后綴名字段nsgx后,nsgx的k個(gè)哈希結(jié)果指向的計(jì)數(shù)布隆過(guò)濾器CBFj的計(jì)數(shù)器的值c1j,…,ckj均加 1,得到?cij≥1,i∈{1,2,…,k},j∈{1,2,…,16}.

(3)假設(shè)R周邊的16個(gè)節(jié)點(diǎn)都?jí)嚎s表示了nsgx,當(dāng)R需要進(jìn)一步聚合這條路由時(shí),需要合并來(lái)自16個(gè)鄰居的計(jì)數(shù)布隆過(guò)濾器CBF1,…,CBF16.如果采用相加的方式合并這些CBF,則需要將這些計(jì)數(shù)布隆過(guò)濾器各單元計(jì)數(shù)器的值相加,即ci=ci1+…+ci16.由于?cij≥1,故ci≥16,超出了計(jì)數(shù)器的最大計(jì)數(shù)范圍.

注意,這與上述計(jì)數(shù)器最大值的概率上界并不沖突.文獻(xiàn)[27]中上界的證明條件是計(jì)數(shù)布隆過(guò)濾器用于壓縮表示不重復(fù)元素,如果不同路由存在相同的名字后綴,計(jì)數(shù)布隆過(guò)濾器的計(jì)數(shù)器很快就會(huì)溢出.究其原因,現(xiàn)有計(jì)數(shù)布隆過(guò)濾器在壓縮表示被添加的元素的過(guò)程中,沒(méi)有保留足夠的信息,無(wú)法發(fā)現(xiàn)兩個(gè)壓縮表示結(jié)果中相同的元素,合并后壓縮表示結(jié)果中會(huì)出現(xiàn)重復(fù)元素.綜上所述,由于現(xiàn)有計(jì)數(shù)布隆過(guò)濾器不能有效地排除不同路由節(jié)點(diǎn)上記錄的相同名字后綴的影響,因此不能支持來(lái)自不同路由節(jié)點(diǎn)的名字路由的聚合操作.為了實(shí)現(xiàn)支持路由聚合的名字后綴壓縮表示機(jī)制,并和路由名字前綴一同標(biāo)識(shí)聚合路由,需要構(gòu)建一種全新的壓縮表示機(jī)制,該機(jī)制需要同時(shí)支持:(1)后綴名字段的動(dòng)態(tài)添加和刪除;(2)多個(gè)壓縮表示結(jié)果的合并.針對(duì)這兩個(gè)需求,我們?cè)诘?.2節(jié)中設(shè)計(jì)了一種全新的計(jì)數(shù)布隆過(guò)濾器——堆疊計(jì)數(shù)布隆過(guò)濾器(compounded counting Bloom filter,簡(jiǎn)稱CCBF),用于被聚合路由名字后綴的壓縮表示.

3.2 堆疊計(jì)數(shù)布隆過(guò)濾器

為了支持名字后綴的動(dòng)態(tài)添加和刪除,同時(shí)支持多個(gè)壓縮表示的合并,我們?cè)诂F(xiàn)有計(jì)數(shù)布隆過(guò)濾器思想的基礎(chǔ)上構(gòu)建的新的后綴壓縮表示機(jī)制需要:

(1)歸并重復(fù)后綴名字段的添加,支持多個(gè)壓縮表示的合并;

(2)記錄后綴名字段哈希結(jié)果命中過(guò)濾器各個(gè)單元的次數(shù),支持后綴名字段的動(dòng)態(tài)添加和刪除.

通過(guò)加運(yùn)算合并現(xiàn)有計(jì)數(shù)布隆過(guò)濾器時(shí),由于無(wú)法排除記錄在多個(gè)計(jì)數(shù)布隆過(guò)濾器中的重復(fù)后綴名字段,造成合并結(jié)果中會(huì)出現(xiàn)計(jì)數(shù)器計(jì)數(shù)溢出的情況.我們注意到,基本布隆過(guò)濾器可以通過(guò)按位或歸并重復(fù)名字段.這是由于在基本布隆過(guò)濾器中重復(fù)添加和合并重復(fù)名字段時(shí),重復(fù)的名字段的所有哈希結(jié)果都將命中過(guò)濾器中同一個(gè)單元,即使重復(fù)置1,也不會(huì)改變BF比特?cái)?shù)組的取值,從而屏蔽了重復(fù)名字段的影響.例如,將一個(gè)布隆過(guò)濾器BF1同另外一個(gè)布隆過(guò)濾器BF2合并的過(guò)程中,如果BF1和BF2中都添加了后綴名字段nsgx,nsgx的k個(gè)哈希結(jié)果分別指向的這兩個(gè)布隆過(guò)濾器的k個(gè)單元(位),b11,…,bk1和b12,…,bk2,全部被置 1.注意到,合并BF1和BF2后,仍有:

合并結(jié)果中同樣是這k個(gè)單元被置1,可以有效地歸并記錄在不同布隆過(guò)濾器中的重復(fù)名字段.根據(jù)這一觀察,我們利用基本布隆過(guò)濾器可以歸并重復(fù)元素的特點(diǎn),通過(guò)堆疊多個(gè)相同的基本布隆過(guò)濾器來(lái)構(gòu)建支持合并的計(jì)數(shù)布隆過(guò)濾器.多個(gè)基本布隆過(guò)濾器的特定位置的單元可以共同記錄該位置被所添加的后綴名字段的哈希結(jié)果命中的次數(shù)(每次將其中一個(gè)基本布隆過(guò)濾器的相應(yīng)單元置 1),從而構(gòu)建了一種全新的支持合并的計(jì)數(shù)布隆過(guò)濾器——堆疊計(jì)數(shù)布隆過(guò)濾器.CCBF通過(guò)偽隨機(jī)發(fā)生器使用多個(gè)基本布隆過(guò)濾器,在有效使用所包含的過(guò)濾器的同時(shí),保留了各單元被重復(fù)置1時(shí)過(guò)濾器的使用順序.

CCBF的數(shù)據(jù)結(jié)構(gòu)如圖3所示.

Fig.3 Framework of compounded counting Bloom flitter圖3 堆疊計(jì)數(shù)布隆過(guò)濾器的結(jié)構(gòu)

CCBF由g個(gè)比特?cái)?shù)組(長(zhǎng)度為m)和它們按位或的結(jié)果數(shù)組orBarr構(gòu)成.其中,g的大小以能夠滿足計(jì)數(shù)需要為基準(zhǔn),本節(jié)后續(xù)將具體說(shuō)明.orBarr是 CCBF的g個(gè)比特?cái)?shù)組按位或的結(jié)果,用于提升 CCBF的查詢效率.CCBF除了支持名字段的添加、刪除和查詢外,還支持多個(gè)CCBF的合并.下面對(duì)這些操作逐一加以說(shuō)明.

(1)添加、刪除和查詢后綴名字段

CCBF在添加一個(gè)名字段nsg的過(guò)程中,針對(duì)k次哈希操作中的第j次哈希操作,利用偽隨機(jī)數(shù)生成器,根據(jù)哈希結(jié)果對(duì)應(yīng)位置單元(下標(biāo)為hashj(nsg)的單元)已經(jīng)被置1的比特?cái)?shù)組的數(shù)量,隨機(jī)選中g(shù)個(gè)比特?cái)?shù)組中的一個(gè)比特?cái)?shù)組barri(CCBF的第i個(gè)比特?cái)?shù)組),將其下標(biāo)為hashj(nsg)的單元置1.同時(shí),如果為名字段nsg的k個(gè)哈希結(jié)果選擇的比特?cái)?shù)組滿足:

則說(shuō)明該名字段已經(jīng)添加過(guò),放棄本次添加.注意,本文采用的偽隨機(jī)數(shù)發(fā)生器根據(jù)第hashj(nsg)個(gè)單元已經(jīng)被置 1的比特?cái)?shù)組的數(shù)量來(lái)選擇下一個(gè)要使用的比特?cái)?shù)組,具體操作就是針對(duì)各個(gè)單元隨機(jī)生成一個(gè)數(shù)組標(biāo)號(hào)的排列,并以這些排列為列構(gòu)建矩陣,在產(chǎn)生偽隨機(jī)數(shù)的過(guò)程中,以特定單元已經(jīng)被置1的數(shù)組的數(shù)量加1為行號(hào),查找特定單元對(duì)應(yīng)的列上相應(yīng)行中記錄的數(shù)組標(biāo)號(hào),返回該標(biāo)號(hào)代表的數(shù)組.因此,選中的比特?cái)?shù)組對(duì)應(yīng)的單元必然還沒(méi)有被置 1.這樣既避免了名字段的重復(fù)添加,又高效地實(shí)現(xiàn)了特定單元被置 1次數(shù)的計(jì)數(shù),為刪除名字段提供了前提.具體添加操作的計(jì)算過(guò)程如算法1所示.算法1中,利用偽隨機(jī)數(shù)發(fā)生器隨機(jī)選擇比特?cái)?shù)組,針對(duì)一個(gè)特定的哈希結(jié)果指向的單元,總能在g個(gè)比特?cái)?shù)組中找到一個(gè)數(shù)組,其對(duì)應(yīng)單元為0(證明見(jiàn)定理1),可以持續(xù)支持新數(shù)據(jù)的插入.

算法1.CCBF.add(nsg).

輸入:nsg.//待壓縮表示的后綴名字段

定理1.CCBF過(guò)濾器中包含g個(gè)比特?cái)?shù)組,令這些比特?cái)?shù)組第pj個(gè)單元被置為1的個(gè)數(shù)為cj,則cj大于等于g的概率可控,具有概率上界.

證明:令 CCBF能夠插入的名字段的最大值為n,其相應(yīng)的比特?cái)?shù)組長(zhǎng)度為m,哈希函數(shù)個(gè)數(shù)為k,比特?cái)?shù)組數(shù)量為g,則g個(gè)比特?cái)?shù)組的第pj個(gè)單元被置為1的數(shù)量cj大于等于g的概率為

根據(jù)斯特林公式化簡(jiǎn)可得:

由文獻(xiàn)[26]中的公式:

可知,在布隆過(guò)濾器的最優(yōu)配置中,n×k與m成線性關(guān)系,因此,n×k遠(yuǎn)大于g,公式(4)中根號(hào)內(nèi)的值小于 1.同時(shí),對(duì)第2項(xiàng)放大,得到公式(3)的一個(gè)松弛上界:

將公式(5)代入可得:

為g個(gè)比特?cái)?shù)組特定位pj被置為1的次數(shù)cj,得到g的概率上界. □

根據(jù)公式(7),當(dāng)g為16時(shí),CCBF任意一位全部被置1的概率為1.37×10-15×m,在通常網(wǎng)絡(luò)應(yīng)用中,這種情況不會(huì)出現(xiàn),即當(dāng)向包括16個(gè)比特?cái)?shù)組的CCBF添加名字段時(shí),總可以為k個(gè)哈希結(jié)果找到對(duì)應(yīng)單元為0的比特?cái)?shù)組,完成添加操作.

下面對(duì)添加操作的計(jì)算復(fù)雜度進(jìn)行分析和比較.算法1共進(jìn)行了k次哈希、k次隨機(jī)數(shù)組選擇及k次數(shù)組讀寫(xiě)操作,最后將g個(gè)比特?cái)?shù)組按位或得到更新后的orBarr,計(jì)算復(fù)雜度為O(k×H1+k×H2+k+m×g),其中,H1為布隆過(guò)濾器哈希過(guò)程的時(shí)間開(kāi)銷,H2為偽隨機(jī)數(shù)生成器選擇數(shù)組的時(shí)間開(kāi)銷,偽隨機(jī)數(shù)生成器實(shí)際上就是在針對(duì)各單元的隨機(jī)數(shù)組標(biāo)號(hào)排列中查找一個(gè)元素,其計(jì)算復(fù)雜度遠(yuǎn)低于布隆過(guò)濾器的哈希函數(shù),而比特?cái)?shù)組按位或操作的復(fù)雜度m×g同樣小于布隆過(guò)濾器的哈希函數(shù)的復(fù)雜度,因此,本算法的計(jì)算復(fù)雜度規(guī)約為O(k×H1).現(xiàn)有的計(jì)算布隆過(guò)濾器,包括CBF、SBF、dlCBF和MPCBF,添加新元素時(shí)直接查找并更新對(duì)應(yīng)的計(jì)數(shù)單元,而本算法還要通過(guò)額外的偽隨機(jī)生成器選擇計(jì)數(shù)單元對(duì)應(yīng)的比特?cái)?shù)組,雖然計(jì)算復(fù)雜度均為O(k×H1),但算法1的計(jì)算開(kāi)銷將近似 2倍于上述 4類計(jì)數(shù)布隆過(guò)濾器的添加操作的計(jì)算開(kāi)銷.當(dāng)然,鑒于現(xiàn)有布隆過(guò)濾器哈希函數(shù)的高效性[26],CCBF添加操作的總體計(jì)算開(kāi)銷仍較小,不會(huì)影響CCBF的應(yīng)用.

布隆過(guò)濾器作為一種壓縮表示機(jī)制,除了可以節(jié)省存儲(chǔ)空間外,最關(guān)鍵的是可以提升后綴名字段存在性查詢的效率.與添加和刪除操作相比,后綴名字段(路由)查詢是路由聚合機(jī)制中最常見(jiàn)的操作,為了優(yōu)化聚合路由(CCBF的名字段)查詢效率,我們?cè)?CCBF中添加了一個(gè)記錄 CCBF中g(shù)個(gè)比特?cái)?shù)組按位或的結(jié)果的數(shù)組orBarr,在進(jìn)行查詢的過(guò)程中,無(wú)需逐一查看g個(gè)比特?cái)?shù)組,判斷哈希結(jié)果對(duì)應(yīng)單元是否為 1,而是直接查看orBarr的對(duì)應(yīng)單元是否為 1即可,具體查詢操作如算法 2所示,查詢操作的復(fù)雜度完全等價(jià)于基本布隆過(guò)濾器查詢操作的復(fù)雜度,與CBF和MPCBF的查詢過(guò)程類似,可以直接定位各個(gè)哈希函數(shù)對(duì)應(yīng)的單元并進(jìn)行查詢,具有相同的計(jì)算復(fù)雜度.由于 SBF在查詢過(guò)程中在通過(guò)哈希函數(shù)定位計(jì)數(shù)單元后仍需要通過(guò)索引最終找到這些計(jì)數(shù)單元,以完成查找,dlCBF需要在d個(gè)分區(qū)中逐一定位并查找各個(gè)哈希對(duì)應(yīng)的單元,存在重復(fù)操作.因此,SBF、dlCBF查詢效率低于CBF、MPCBF以及算法2.

算法2.CCBF.query(nsg).

輸入:nsg.//待查詢的后綴名字段

CCBF刪除操作的計(jì)算過(guò)程類似于添加操作的計(jì)算過(guò)程,這里不再贅述,僅就其中的關(guān)鍵操作步驟進(jìn)行說(shuō)明.首先確認(rèn)該名字段可以刪除(類似算法 2的查找過(guò)程);然后,通過(guò)偽隨機(jī)數(shù)生成器定位上一次添加操作中各個(gè)哈希函數(shù)操作的單元所在的比特?cái)?shù)組,將這些比特?cái)?shù)組對(duì)應(yīng)單元清零,并更新orBarr,完成名字段刪除操作.因此,CCBF刪除操作的計(jì)算復(fù)雜度與添加操作類似,為O(k×H1).與其他計(jì)數(shù)布隆過(guò)濾器相比,CCBF的刪除過(guò)程需要通過(guò)偽隨機(jī)數(shù)發(fā)生器找到需要進(jìn)行單元清零操作的比特?cái)?shù)組,因此,刪除操作的計(jì)算開(kāi)銷近似 2倍于其他計(jì)數(shù)布隆過(guò)濾器的刪除操作的開(kāi)銷.

(2)合并操作

不同于其他現(xiàn)有計(jì)數(shù)布隆過(guò)濾器,CCBF支持合并操作,即將多個(gè)配置完全相同的CCBF合并為1個(gè),以便應(yīng)用于類似路由聚合這樣需要?dú)w并已有名字段的場(chǎng)景.多個(gè)CCBF的合并操作相當(dāng)于將這些CCBF壓縮表示的名字段(添加的元素)合并,即等同于在一個(gè)CCBF中添加其他CCBF中壓縮表示過(guò)的名字段.CCBF中的偽隨機(jī)數(shù)發(fā)生器可以確保哈希結(jié)果對(duì)應(yīng)單元置 1時(shí)選擇的比特?cái)?shù)組有固定的順序,CCBF中添加后綴名字段(元素)的順序不會(huì)影響各個(gè)比特?cái)?shù)組的取值,詳見(jiàn)定理2.因此,按照不同CCBF比特?cái)?shù)組的標(biāo)號(hào),可以按順序合并各個(gè)比特?cái)?shù)組(按位或,與BF的合并操作相同),實(shí)現(xiàn)多個(gè)CCBF的合并.

當(dāng)然,多個(gè)CCBF合并后壓縮表示的名字段數(shù)量仍然受到其比特?cái)?shù)組數(shù)量g和長(zhǎng)度m的限制.以兩個(gè)CCBF的合并過(guò)程為例,合并過(guò)程主要是將兩個(gè)CCBF中的g個(gè)比特?cái)?shù)組兩兩按位進(jìn)行或操作,同時(shí)將兩者的orBarr也按位或.具體如算法3所示.

算法3.CCBF.combine(other).

輸入:other.//待合并的另外一個(gè)CCBF過(guò)濾器,兩個(gè)CCBF的配置完全相同,且合并后的后綴數(shù)沒(méi)用超過(guò)CCBF的容量n

其中,為了保證合并后不會(huì)超過(guò)CCBF的配置容量n,CCBF利用estSize函數(shù)估計(jì)當(dāng)前已添加的名字段的數(shù)量(已添加名字段數(shù)量).CCBF每次添加1個(gè)名字段時(shí)會(huì)有k位被置1,因此可以利用g個(gè)比特?cái)?shù)組中1的總數(shù)除以k,得到已經(jīng)添加的名字段的數(shù)量,estSize函數(shù)的計(jì)算過(guò)程如公式(8)所示。

其中,g和k為CCBF配置的比特?cái)?shù)組數(shù)量和哈希函數(shù)數(shù)量,比特?cái)?shù)組的sum4ones函數(shù)可以計(jì)算它其中被置1的單元的數(shù)量.算法3的計(jì)算過(guò)程包括估計(jì)已添加名字段總數(shù)和合并比特?cái)?shù)組兩部分,其中,

· 估計(jì)已添加名字段的復(fù)雜度為Ο(m×g),其中,m為比特?cái)?shù)組長(zhǎng)度,g為比特?cái)?shù)組數(shù)量(最大計(jì)數(shù)范圍);

· 合并比特?cái)?shù)組的復(fù)雜度也是Ο(m×g).

因此,算法3總的計(jì)算復(fù)雜度為Ο(m×g).注意,現(xiàn)有其他計(jì)數(shù)布隆過(guò)濾器均無(wú)法支持合并操作.

定理2.CCBF中添加元素的順序不會(huì)影響CCBF中各個(gè)比特?cái)?shù)組的取值.

證明:對(duì)于一組元素nsg1,…nsgi,…,nsgn,將其按順序添加到一個(gè) CCBF中.不失一般性,假設(shè)有兩個(gè)名字段——nsgx和nsgy,其哈希結(jié)果命中了 CCBF的第j個(gè)單元,CCBF中的偽隨機(jī)數(shù)發(fā)生器以確定順序在barr1,…,barrg中選中兩個(gè)比特?cái)?shù)組,將其第j個(gè)單元置1.這一過(guò)程中,隨機(jī)數(shù)發(fā)生器選中的下一個(gè)比特?cái)?shù)組的依據(jù)是當(dāng)前第j個(gè)單元被置1的比特?cái)?shù)組的個(gè)數(shù).因此,如果首先添加nsgx,第j個(gè)單元被置1的比特?cái)?shù)組的個(gè)數(shù)為0,隨機(jī)數(shù)發(fā)生器選中barr(1),將barr(1)[j]置 1.當(dāng)添加nsgy時(shí),選中barr(2),將barr(2)[j]置 1.同樣,如果先添加nsgy,將對(duì)barr(1)[j]置1,然后添加nsgx時(shí),將對(duì)barr(2)[j]置1.無(wú)論nsgx和nsgy的添加順序如何,添加結(jié)果都是barr(1)[j]和barr(2)[j]被置1.對(duì)特定單元的多次加1操作的順序不影響該單元使用,因此,CCBF中添加名字段的順序不會(huì)影響CCBF中各個(gè)比特?cái)?shù)組的取值. □

綜上所述,堆疊計(jì)數(shù)布隆過(guò)濾器可以高效地完成名字段的添加、刪除和查詢,其計(jì)算復(fù)雜度基本與現(xiàn)有計(jì)數(shù)布隆過(guò)濾器等同,其中,路由過(guò)程中最為頻繁的查詢操作的效率優(yōu)于或等同于其他計(jì)數(shù)布隆過(guò)濾器.同時(shí),堆疊計(jì)數(shù)布隆過(guò)濾器 CCBF支持高效的多過(guò)濾器合并,為聚合路由后綴合并(及其他需要合并多個(gè)壓縮表示的場(chǎng)景)奠定了基礎(chǔ).CCBF空間復(fù)雜度為Ο(m×g),與CBF的空間復(fù)雜度Ο(m×log2g)相比,使用的存儲(chǔ)空間更多.同樣地,與 dlCBF和 MPCBF相比也需要更多的存儲(chǔ)空間(除 SBF使用的存儲(chǔ)空間隨添加元素增長(zhǎng)外,dlCBF和MPCBF都在CBF的基礎(chǔ)上優(yōu)化了存儲(chǔ)空間開(kāi)銷[29,30]),但是根據(jù)定理1,g的取值在實(shí)際應(yīng)用中具有上界(通常情況下為 16),因此,CCBF空間復(fù)雜度可控,在當(dāng)前網(wǎng)絡(luò)設(shè)備存儲(chǔ)空間不斷擴(kuò)大的背景下,完全可以應(yīng)用于各類互聯(lián)網(wǎng)應(yīng)用場(chǎng)景.在假陽(yáng)性率方面,CCBF中哈希函數(shù)定位數(shù)組單元的方式與BF和CBF相同,函數(shù)個(gè)數(shù)k和數(shù)組長(zhǎng)度m的配置也與BF和CBF相同[26],因此,CCBF中添加一個(gè)元素時(shí),k個(gè)哈希結(jié)果均發(fā)生碰撞的概率(假陽(yáng)性率)與BF和CBF完全相同.雖然CCBF的假陽(yáng)性率高于優(yōu)化了假陽(yáng)性率的SBF、dlCBF和MPCBF,但是路由聚合過(guò)程中,假陽(yáng)性的出現(xiàn)只會(huì)增加冗余轉(zhuǎn)發(fā)數(shù)量,不會(huì)引起轉(zhuǎn)發(fā)錯(cuò)誤,并非路由聚合過(guò)程中的首要因素,不會(huì)影響CCBF在聚合路由后綴壓縮表示中的應(yīng)用.

綜上所述,CCBF的主要設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)多個(gè)CCBF的合并,以便支持路由聚合操作.在此基礎(chǔ)上,CCBF優(yōu)化了其查詢效率,為構(gòu)建高效的路由聚合機(jī)制提供了前提.在基于CCBF的后綴壓縮表示的基礎(chǔ)上,可以將指向同一接口的多條具有公共名字前綴的路由聚合為 1條聚合路由,用公共名字前綴和后綴壓縮表示共同標(biāo)識(shí)聚合路由(如圖1所示),有效地避免了第2節(jié)中指出的僅采用路由名字前綴來(lái)標(biāo)識(shí)路由時(shí)出現(xiàn)的路由錯(cuò)誤,構(gòu)建了準(zhǔn)確、高效的路由標(biāo)識(shí).

3.3 基于路由可達(dá)性的動(dòng)態(tài)名字路由聚合機(jī)制

在上述層次化名字聚合路由標(biāo)識(shí)的基礎(chǔ)上,本文利用路由可達(dá)性度量聚合路由可用性,并作為路由聚合條件,將多條穩(wěn)定可達(dá)的具有公共名字前綴的路由(包括其他節(jié)點(diǎn)通告的路由)聚合為一條聚合路由;當(dāng)可達(dá)性下降后,進(jìn)行解聚合,還原被聚合路由,降低聚合程度,提升路由可達(dá)性;聚合和解聚合都需要通告周邊鄰居節(jié)點(diǎn).按照這一動(dòng)態(tài)聚合方式,本文構(gòu)建了一套基于路由可達(dá)性的動(dòng)態(tài)名字路由聚合機(jī)制.

本文之所以將路由可達(dá)性作為路由聚合的條件,其原因是聚合路由壓縮表示了被聚合路由的名字后綴(或后綴壓縮表示),將不可避免地在路由查找過(guò)程中引入假陽(yáng)性,將沒(méi)有聚合過(guò)的路由納入聚合路由查找結(jié)果,進(jìn)而在NDN網(wǎng)絡(luò)中帶來(lái)冗余的轉(zhuǎn)發(fā).由于NDN網(wǎng)絡(luò)采用多路轉(zhuǎn)發(fā)機(jī)制,因此假陽(yáng)性引起的冗余轉(zhuǎn)發(fā)不會(huì)影響正常的內(nèi)容獲取,僅僅會(huì)加大網(wǎng)絡(luò)負(fù)載.當(dāng)然,過(guò)大的網(wǎng)絡(luò)負(fù)載同樣會(huì)影響網(wǎng)絡(luò)效率,甚至?xí)窒酚删酆虾舐酚梢?guī)模縮減帶來(lái)的效率提升.如果假陽(yáng)性問(wèn)題引起的網(wǎng)絡(luò)負(fù)載過(guò)大,將會(huì)進(jìn)一步引起網(wǎng)絡(luò)擁塞等問(wèn)題,因此,我們需要最大程度地保證轉(zhuǎn)發(fā)的正確性,同時(shí),通過(guò)路由聚合減小路由規(guī)模,提升網(wǎng)絡(luò)效率.其中,為了回滾聚合路由,需要在低速存儲(chǔ)中備份被聚合路由,在減小路由節(jié)點(diǎn)高速內(nèi)存空間的同時(shí),實(shí)現(xiàn)了基于路由可達(dá)性的動(dòng)態(tài)聚合過(guò)程.本文名字路由聚合記錄如圖4所示.

Fig.4 An example for dynamic route aggregation圖4 動(dòng)態(tài)路由聚合過(guò)程實(shí)例

NDN網(wǎng)絡(luò)節(jié)點(diǎn)的不同接口可以獲取不同內(nèi)容,因此,本文的聚合機(jī)制在聚合相關(guān)路由的同時(shí),保留了各個(gè)接口的獨(dú)立記錄.為每條聚合路由針對(duì)不同接口設(shè)置獨(dú)立的后綴壓縮表示單元和相應(yīng)的可達(dá)性統(tǒng)計(jì)單元,形成聚合路由的標(biāo)識(shí)二元組結(jié)構(gòu):〈路由前綴;轉(zhuǎn)發(fā)接口信息〉,其中,轉(zhuǎn)發(fā)接口信息中記錄了接口ID、路由后綴壓縮表示、轉(zhuǎn)發(fā)延遲統(tǒng)計(jì)和可達(dá)性統(tǒng)計(jì)等狀態(tài)信息(如圖4所示).可達(dá)性統(tǒng)計(jì)為RP(faceID),其中,faceID為相應(yīng)的接口ID.可達(dá)性統(tǒng)計(jì)值為最近轉(zhuǎn)發(fā)出去的請(qǐng)求的響應(yīng)比,代表路由可用性的統(tǒng)計(jì)結(jié)果,如公式(9)所示.

其中,n(t-1)為t-1時(shí)刻總共發(fā)出的內(nèi)容請(qǐng)求包數(shù)量,ns(t)為t時(shí)刻收到的內(nèi)容響應(yīng)包數(shù)量.其中,通過(guò)卷積運(yùn)算淘汰舊的統(tǒng)計(jì)信息,提升當(dāng)前請(qǐng)求響應(yīng)情況在統(tǒng)計(jì)結(jié)果中的比重.針對(duì)接口faceID,RP(faceID)準(zhǔn)確地反映了依據(jù)聚合路由從該接口轉(zhuǎn)發(fā)請(qǐng)求、獲取內(nèi)容的可能性,可以作為評(píng)估聚合路由可用性的標(biāo)準(zhǔn).根據(jù)文獻(xiàn)[31]中的相關(guān)定理,當(dāng)節(jié)點(diǎn)間連通概率大于等于lg(N)/N時(shí)(N為網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)),網(wǎng)絡(luò)為強(qiáng)連通網(wǎng)絡(luò).因此,我們可以將這一條件作為判斷路由可達(dá)性的閾值,如果所有RP(faceID)都大于lg(N)/N,則可以獲取分布在任意網(wǎng)絡(luò)節(jié)點(diǎn)上的內(nèi)容.

當(dāng)一組具有公共前綴的聚合路由在所有接口上的可達(dá)性都達(dá)到了閾值,且持續(xù)了從某個(gè)時(shí)刻t起的兩個(gè)時(shí)刻時(shí),則這些路由被認(rèn)為是穩(wěn)定的路由,可以和其他具有公共前綴的穩(wěn)定路由一同進(jìn)一步聚合新的聚合路由.這種延遲決策機(jī)制可以避免聚合過(guò)程中的抖動(dòng)現(xiàn)象(頻繁重復(fù)聚合和解聚合的循環(huán)).同樣地,聚合路由兩個(gè)時(shí)刻內(nèi)持續(xù)不可用,則需要將其分解為之前被聚合的路由,以提升路由準(zhǔn)確性,改善路由可達(dá)情況.為了支撐聚合路由回滾,需要在各個(gè)節(jié)點(diǎn)保留如圖4所示的線索樹(shù)結(jié)構(gòu),在聚合路由的同時(shí)保留被聚合路由信息,以便更新和回滾聚合路由.其中,當(dāng)前路由線索是當(dāng)前使用的聚合路由的線索,當(dāng)需要更新和回滾路由時(shí),可以快速找到相應(yīng)的聚合路由,并回滾或更新相關(guān)被聚合路由.本文的動(dòng)態(tài)聚合機(jī)制可以在保證路由可用性的前提下最大程度地聚合路由,縮小全網(wǎng)路由規(guī)模,提升層次化名字路由效率.

4 實(shí)驗(yàn)評(píng)估

4.1 方案部署與實(shí)現(xiàn)

我們?cè)贜DN網(wǎng)絡(luò)的仿真平臺(tái)ndnSIM[32]的基礎(chǔ)上實(shí)現(xiàn)了本文針對(duì)層次化名字路由的聚合機(jī)制.

· 首先,我們對(duì)ndnSIM的FIB模塊進(jìn)行了修改.現(xiàn)有的ndnSIM中,每條路由包含路由名字前綴和轉(zhuǎn)發(fā)接口信息.基于本文動(dòng)態(tài)路由聚合機(jī)制,我們?cè)谵D(zhuǎn)發(fā)接口信息中添加了后綴壓縮表示 C和可達(dá)性統(tǒng)計(jì)RP(見(jiàn)公式(9)).RP中的統(tǒng)計(jì)值n(t-1)是在查表轉(zhuǎn)發(fā)請(qǐng)求時(shí)計(jì)數(shù),而nr(t)是下一個(gè)時(shí)刻收到的內(nèi)容包的數(shù)量.根據(jù)不同的預(yù)定容量n,用于壓縮表示后綴名字段的CCBF按布隆過(guò)濾器最優(yōu)配置設(shè)置比特?cái)?shù)組長(zhǎng)度m及哈希函數(shù)個(gè)數(shù)k[26],同時(shí),根據(jù)本文第3.2節(jié)的分析,比特?cái)?shù)組數(shù)量被設(shè)置為16.在此基礎(chǔ)上,FIB模塊周期性更新 RP,根據(jù)更新過(guò)的 RP分析現(xiàn)有路由的可用性,將持續(xù)可用的路由進(jìn)行進(jìn)一步聚合,得到新的聚合路由,并周期性地通告周邊節(jié)點(diǎn).同時(shí)更新在低速外部存儲(chǔ)中的記錄路由聚合過(guò)程的數(shù)據(jù)結(jié)構(gòu)(如圖4所示),以備聚合路由回滾時(shí)還原其中備份的路由信息.

· 其次,我們修改了轉(zhuǎn)發(fā)模塊ndn-forwarding-strategy.實(shí)現(xiàn)了基于名字前綴和后綴壓縮表示的轉(zhuǎn)發(fā)機(jī)制.

仿真平臺(tái)在本地計(jì)算機(jī)上部署,其配置如下:Ubuntu 13.04,內(nèi)核版本 3.8.8,Intel Core i7 3.4G CPU,DDR3 1866 16G內(nèi)存,1TB硬盤.為了保證仿真結(jié)果真實(shí)、可靠,我們采用了一個(gè)真實(shí)的網(wǎng)絡(luò)拓?fù)洹獨(dú)W洲EBONE網(wǎng)絡(luò)拓?fù)鋄33],包括279個(gè)節(jié)點(diǎn)、731條邊,其中包括65個(gè)邊界網(wǎng)關(guān)節(jié)點(diǎn)、45個(gè)網(wǎng)關(guān)節(jié)點(diǎn)和169個(gè)邊緣路由節(jié)點(diǎn).在邊緣節(jié)點(diǎn)中,我們隨機(jī)選擇了10個(gè)節(jié)點(diǎn)作為內(nèi)容發(fā)布節(jié)點(diǎn)producer,實(shí)驗(yàn)中請(qǐng)求的各類內(nèi)容全部由這10個(gè)節(jié)點(diǎn)發(fā)布.另外,選擇了 30個(gè)節(jié)點(diǎn)作為內(nèi)容請(qǐng)求方 consumer,內(nèi)容請(qǐng)求服從參數(shù)α為 0.6的 Zipf-Mandelbrot分布,即被請(qǐng)求的多數(shù)內(nèi)容為熱門內(nèi)容,其他內(nèi)容很少被請(qǐng)求.為了全面驗(yàn)證本文路由聚合機(jī)制的有效性,實(shí)驗(yàn)中使用了多個(gè)不同規(guī)模的數(shù)量集,這些數(shù)據(jù)集的具體信息見(jiàn)表1.

Table 1 Datasets表1 數(shù)據(jù)集

在此基礎(chǔ)上,通過(guò)對(duì)這些數(shù)據(jù)進(jìn)行組合,我們可以得到各種規(guī)模的名字?jǐn)?shù)據(jù)集.在其基礎(chǔ)上,我們對(duì)本文路由聚合機(jī)制的有效性進(jìn)行了全面的評(píng)估.首先比較了路由聚合前后的路由表規(guī)模;其次,通過(guò)與 NDN原生路由查表機(jī)制以及利用CBF壓縮路由表的對(duì)比方案比較,給出了路由聚合前后的路由查表效率的比較;最后,通過(guò)對(duì)比分析了本文路由聚合機(jī)制帶來(lái)的假陽(yáng)性問(wèn)題.

4.2 聚合前后路由表規(guī)模對(duì)比分析

路由聚合的目標(biāo)是減少路由條目數(shù)量,從而提升路由查表效率,進(jìn)而優(yōu)化網(wǎng)絡(luò)傳輸效率.同時(shí),路由條目的減少還會(huì)減少路由設(shè)備內(nèi)存的使用,降低 NDN網(wǎng)絡(luò)部署成本.為了驗(yàn)證本文路由聚合機(jī)制的聚合效果,我們?cè)跀?shù)據(jù)集Alexa top 1M上比較了各個(gè)路由節(jié)點(diǎn)在同一時(shí)刻采用聚合后的路由條目數(shù)量和不采用聚合的情況下路由條目數(shù)量的比值R,在2 000s內(nèi)對(duì)279個(gè)路由器每隔6s記錄一次R值,仿真結(jié)果如圖5所示.

Fig.5 Effection on FIB size reduction of route aggregation圖5 路由聚合對(duì)路由表規(guī)模的影響

仿真過(guò)程中,隨著時(shí)間Time的推移,路由聚合程度不斷提升,路由規(guī)模不斷縮小,在1 400s附近,全網(wǎng)路由聚合達(dá)到穩(wěn)定狀態(tài).全部 279個(gè)節(jié)點(diǎn)中,在全網(wǎng)路由聚合完成后,路由條目數(shù)量至少壓縮了 60%,平均壓縮了75.47%,路由聚合對(duì)路由規(guī)模的縮減效果明顯.注意,由于現(xiàn)有數(shù)據(jù)集中多數(shù)名字(URL)只有 2級(jí),如果應(yīng)用于實(shí)際部署的NDN網(wǎng)絡(luò)中,路由名字層次變化更多,路由聚合效果也會(huì)更為顯著.

4.3 聚合路由效率分析

作為影響網(wǎng)絡(luò)傳輸效果的關(guān)鍵因素,路由查表效率直接影響網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)延時(shí).路由聚合主要通過(guò)減少路由條目數(shù)量(路由表規(guī)模)來(lái)提升路由查表效率,進(jìn)而縮小網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)延時(shí).利用本文路由聚合機(jī)制,可以將多條具有公共前綴的層次化名字路由聚合為單條聚合路由,并利用這些路由的公共名字前綴和后綴壓縮表示來(lái)共同標(biāo)識(shí)該聚合路由.因此,與未進(jìn)行聚合的層次化名字路由相比,本文的路由聚合機(jī)制在縮短名字前綴查找時(shí)間的同時(shí),也引入了路由后綴的查找過(guò)程.為了驗(yàn)證本文聚合過(guò)程對(duì)路由查表時(shí)間的影響,我們首先針對(duì)不同規(guī)模Ns的名字路由(1萬(wàn)、10萬(wàn)和100萬(wàn))進(jìn)行路由聚合,并比較聚合前后各路由的查表時(shí)間總和LTime.實(shí)驗(yàn)結(jié)果如圖6(a)所示,圓形點(diǎn)線代表未聚合路由查表時(shí)間總和,方形點(diǎn)線為本文聚合路由查表時(shí)間總和.可以看出,未被聚合的路由的查表時(shí)間與路由規(guī)模成正比例關(guān)系,隨著路由規(guī)模Ns的增長(zhǎng)線性增加;而聚合后路由查找基本不受路由規(guī)模增長(zhǎng)的影響,僅表現(xiàn)出1s的差異,如圖6(a)所示.究其原因,主要是由于聚合后減小了前綴數(shù)量及前綴查找時(shí)間;同時(shí),本文在后綴壓縮表示查詢方面的優(yōu)化(為CCBF添加16個(gè)比特?cái)?shù)組按位或得到的歸并結(jié)果orBarr)也避免了大量后綴查詢時(shí)延的引入.

Fig.6 Comparison of route lookup time圖6 路由查找效率對(duì)比

為了進(jìn)一步驗(yàn)證本文路由聚合機(jī)制的查表效率,我們?cè)?CBF的基礎(chǔ)上構(gòu)建了一套路由壓縮機(jī)制作為對(duì)比方案,采用與本文的聚合路由相同的前綴和CBF壓縮表示的路由后綴共同標(biāo)識(shí)壓縮后的路由.壓縮后的路由規(guī)模與本文路由聚合后的路由規(guī)模相同,通過(guò)這一方式對(duì)比驗(yàn)證本文聚合路由查表效率.如圖6(b)所示,方形點(diǎn)線為CBF的查詢時(shí)間LTime-CBF,圓形點(diǎn)線為本文CCBF的查詢時(shí)間LTime-CCBF.在不同規(guī)模的路由表上,本文方案的查表時(shí)間始終只有對(duì)比方案的一半,本文建立在orBarr上的查詢過(guò)程的效率要優(yōu)于CBF的查詢效率.

同時(shí),我們對(duì)比了聚合前后路由更新效率(如圖7所示),路由更新時(shí)間等于所有路由的查找、刪除和添加操作的總和,用UpTime代表.圖7(a)中,圓形點(diǎn)線為未聚合路由總更新時(shí)間,方形點(diǎn)線為本文方案路由總更新時(shí)間.未聚合路由的整體更新時(shí)間都隨路由規(guī)模Ns的增長(zhǎng)呈線性增長(zhǎng),本文路由聚合機(jī)制的更新時(shí)間增加較慢,路由規(guī)模對(duì)路由更新效率的影響同樣存在.為了進(jìn)一步評(píng)估本文機(jī)制的路由更新效率,圖7(b)中,我們對(duì)比了本文機(jī)制的路由更新時(shí)間和基于CBF的對(duì)比方案的路由更新時(shí)間.圓形點(diǎn)線為本文機(jī)制的總路由更新時(shí)間,方形點(diǎn)線為對(duì)比方案的總路由更新時(shí)間.兩個(gè)方案的總路由更新時(shí)間都隨路由規(guī)模Ns的增長(zhǎng)呈線性增長(zhǎng),本文路由更新時(shí)間略小于對(duì)比方案路由更新時(shí)間的 2倍,雖然與路由查表時(shí)間相比,本文的路由聚合機(jī)制的路由更新時(shí)間較長(zhǎng),但路由更新不是網(wǎng)絡(luò)路由轉(zhuǎn)發(fā)過(guò)程中最關(guān)鍵的操作,操作頻率較低,且獨(dú)立處理,基本不影響路由查表過(guò)程.

Fig.7 Comparison of route updating time圖7 路由更新時(shí)間對(duì)比

4.4 假陽(yáng)性分析

本文的聚合標(biāo)識(shí)在使用路由名字前綴的同時(shí),還引入了基于CCBF的后綴壓縮表示.CCBF本身可能會(huì)在查詢過(guò)程中引入假陽(yáng)性,即查詢到未被壓縮表示過(guò)的名字段.假陽(yáng)性在路由聚合問(wèn)題的背景下,將會(huì)引發(fā)路由查詢的假陽(yáng)性誤判,將數(shù)據(jù)包發(fā)往沒(méi)有通告過(guò)相關(guān)路由的接口.注意,假陽(yáng)性不會(huì)影響數(shù)據(jù)包從通告過(guò)該路由的接口正常轉(zhuǎn)發(fā),僅僅是增加了冗余的路由轉(zhuǎn)發(fā).本節(jié)實(shí)驗(yàn)驗(yàn)證了本文后綴壓縮表示所采用的 CCBF布隆過(guò)濾器的假陽(yáng)性情況,并與基于CBF的對(duì)比方案的假陽(yáng)性進(jìn)行了對(duì)比.在布隆過(guò)濾器的配置過(guò)程中,本文為各個(gè)過(guò)濾器設(shè)定的最大假陽(yáng)性率均為0.01.圖8中,菱形點(diǎn)線為CCBF在不同規(guī)模數(shù)據(jù)集下的查詢假陽(yáng)性數(shù)Fp-CCBF,方形點(diǎn)線為對(duì)比方案在不同規(guī)模數(shù)據(jù)集下的查詢假陽(yáng)性數(shù) FP-CBF.兩種布隆過(guò)濾器在不同規(guī)模的數(shù)據(jù)集上的假陽(yáng)性值相同.

為了進(jìn)一步分析假陽(yáng)性的出現(xiàn)情況,分析兩種方案在不同的添加比例Rfill下的假陽(yáng)性變化情況,本文針對(duì)3種不同規(guī)模的數(shù)據(jù)集(1萬(wàn)、10萬(wàn)和100萬(wàn))進(jìn)行了實(shí)驗(yàn).其中,Rfill=nc/n,n為布隆過(guò)濾器容量(分別取1萬(wàn)、10萬(wàn)和100萬(wàn)),nc為添加到布隆過(guò)濾器的名字段數(shù)量.如圖9所示,在不同規(guī)模的數(shù)據(jù)集下,兩種方案的假陽(yáng)性查詢數(shù)量在Rfill達(dá)到0.85后出現(xiàn)了假陽(yáng)性查詢,并在Rfill到達(dá)1時(shí)達(dá)到最大值,兩種方案的假陽(yáng)性查詢數(shù)量始終保持相同.本文方案在查詢假陽(yáng)性方面等同于基于計(jì)數(shù)布隆過(guò)濾器CBF的對(duì)比方案,沒(méi)有帶來(lái)額外的假陽(yáng)性查詢.

Fig.8 False positive under datasets with different size圖8 不同規(guī)模數(shù)據(jù)集下的假陽(yáng)性

Fig.9 False positive with differentRfill圖9 不同Rfill下的假陽(yáng)性

5 結(jié) 論

為了實(shí)現(xiàn)針對(duì)層次化名字路由的聚合機(jī)制,進(jìn)而優(yōu)化NDN等信息中心網(wǎng)絡(luò)的傳輸效率,本文首先分析了層次化名字路由的聚合問(wèn)題,明確了路由聚合過(guò)程中需要同時(shí)利用路由名字前綴和后綴壓縮表示來(lái)共同標(biāo)識(shí)聚合后的路由.為了實(shí)現(xiàn)對(duì)名字后綴的壓縮標(biāo)識(shí),同時(shí)在路由聚合過(guò)程中通告和進(jìn)一步聚合(合并)這些后綴壓縮標(biāo)識(shí),本文提出了一種全新的計(jì)數(shù)布隆過(guò)濾器 CCBF.CCBF在支持多過(guò)濾器合并的同時(shí),還優(yōu)化了查詢效率.在此基礎(chǔ)上,本文進(jìn)一步提出了面向路由可達(dá)性的動(dòng)態(tài)路由聚合機(jī)制,在保證路由可達(dá)性的前提下最大化聚合路由.我們?cè)谡鎸?shí)網(wǎng)絡(luò)拓?fù)浼皵?shù)據(jù)集上構(gòu)建了實(shí)驗(yàn)環(huán)境,驗(yàn)證了本文路由聚合機(jī)制的有效性,本文路由聚合機(jī)制通過(guò)有效聚合路由,以較小的冗余路由轉(zhuǎn)發(fā)(假陽(yáng)性路由查詢)為代價(jià),減小了路由規(guī)模,優(yōu)化了網(wǎng)絡(luò)傳輸效率,為NDN等信息中心網(wǎng)絡(luò)投入實(shí)際應(yīng)用提供了前提.

本文的路由聚合程度由路由可達(dá)性動(dòng)態(tài)決定.作為影響可達(dá)性的關(guān)鍵因素,如果能夠有效地降低 CCBF的假陽(yáng)性查詢結(jié)果,則不但可以避免過(guò)多的冗余轉(zhuǎn)發(fā),而且可以提升路由可達(dá)性,進(jìn)一步提升路由聚合程度,減少路由條目數(shù)量.為此,在下一步的研究工作中,應(yīng)該將綜合分析現(xiàn)有計(jì)數(shù)布隆過(guò)濾器的優(yōu)化思路,降低堆疊計(jì)數(shù)布隆過(guò)濾器的查詢假陽(yáng)性,進(jìn)一步改進(jìn)路由后綴壓縮表示機(jī)制及相應(yīng)的路由聚合過(guò)程.

猜你喜歡
布隆層次化后綴
面向量化分塊壓縮感知的區(qū)域?qū)哟位A(yù)測(cè)編碼
守門員不在時(shí)
鐵路傳送網(wǎng)OTN設(shè)備互聯(lián)互通開(kāi)銷層次化處理研究
河北霸州方言后綴“乎”的研究
TalKaholic話癆
說(shuō)“迪烈子”——關(guān)于遼金元時(shí)期族名后綴問(wèn)題
一種基于后綴排序快速實(shí)現(xiàn)Burrows-Wheeler變換的方法
艦船系統(tǒng)間電磁兼容性的層次化優(yōu)化方法
基于層次化分類器的遙感圖像飛機(jī)目標(biāo)檢測(cè)
同心县| 信阳市| 江川县| 乌苏市| 深圳市| 东源县| 营口市| 微山县| 和田县| 凤凰县| 定西市| 泰安市| 紫金县| 平果县| 葵青区| 稷山县| 鄂托克旗| 永安市| 鸡西市| 望都县| 开远市| 平乐县| 潮安县| 汤阴县| 睢宁县| 建昌县| 三江| 建宁县| 军事| 滕州市| 通州市| 砚山县| 长海县| 柞水县| 嵊泗县| 刚察县| 育儿| 东至县| 汉寿县| 江津市| 绥宁县|