雷 凱,邢 捷,汪 漪,李可可,林 棟
(1.北京大學(xué)深圳研究生院 互聯(lián)網(wǎng)研發(fā)中心,廣東 深圳 518055; 2.南方科技大學(xué),廣東 深圳 518055;3.華為技術(shù)有限公司,廣東 深圳 518129)
互聯(lián)網(wǎng)起源之初,主要的應(yīng)用需求是計(jì)算資源的共享,而經(jīng)過(guò)50多年的發(fā)展,互聯(lián)網(wǎng)的使用已經(jīng)發(fā)生了巨大的變化,現(xiàn)在互聯(lián)網(wǎng)主要使用的需求是內(nèi)容的獲取和分發(fā),基于端到端連接的TCP/IP存在著明顯的不足,如大量重復(fù)傳輸相同的內(nèi)容造成資源浪費(fèi)等。作為新型的網(wǎng)絡(luò)架構(gòu),內(nèi)容中心網(wǎng)絡(luò)(content centric networking,CCN)更加關(guān)注內(nèi)容的本身,不再關(guān)心內(nèi)容的存儲(chǔ)位置[1],其通信過(guò)程不再基于“端到端”的連接,而是基于“請(qǐng)求內(nèi)容-獲得內(nèi)容”的模式。CCN中的每個(gè)路由節(jié)點(diǎn)都具有數(shù)據(jù)包緩存的功能,這種特點(diǎn)能夠讓用戶(hù)所請(qǐng)求的數(shù)據(jù)不僅僅來(lái)源于原始的內(nèi)容服務(wù)器,也可以來(lái)源于網(wǎng)絡(luò)內(nèi)任意緩存該數(shù)據(jù)的節(jié)點(diǎn)。一旦其他用戶(hù)請(qǐng)求同一內(nèi)容數(shù)據(jù),中間路由節(jié)點(diǎn)即可返回相應(yīng)的數(shù)據(jù),這增加了網(wǎng)絡(luò)內(nèi)數(shù)據(jù)的共享程度,同時(shí)能夠使用戶(hù)更快地獲得請(qǐng)求的數(shù)據(jù),提升用戶(hù)的體驗(yàn)。因此,CCN受到了廣泛的關(guān)注,其應(yīng)用前景良好。
但是,CCN設(shè)計(jì)的緩存機(jī)制也會(huì)帶來(lái)一個(gè)問(wèn)題。在CCN中,多個(gè)路由器可以緩存相同的內(nèi)容,一個(gè)內(nèi)容的各個(gè)部分也可能分布在多個(gè)路由器中。這種內(nèi)容的碎片化分布在提高網(wǎng)絡(luò)效率、降低網(wǎng)絡(luò)流量的同時(shí),也會(huì)導(dǎo)致作為原始數(shù)據(jù)來(lái)源的內(nèi)容提供商只能收到部分用戶(hù)的訪問(wèn)內(nèi)容請(qǐng)求,從而無(wú)法準(zhǔn)確地獲得其提供的內(nèi)容的整體訪問(wèn)情況。但內(nèi)容的整體訪問(wèn)統(tǒng)計(jì)數(shù)據(jù),決定了內(nèi)容的流行程度,是目前CCN中內(nèi)容提供商的業(yè)務(wù)模式的關(guān)鍵指標(biāo)。一方面,內(nèi)容提供商需要內(nèi)容的訪問(wèn)統(tǒng)計(jì)信息進(jìn)行內(nèi)容的定價(jià)收費(fèi)服務(wù)。由于缺乏內(nèi)容的整體訪問(wèn)統(tǒng)計(jì)數(shù)據(jù),當(dāng)熱門(mén)內(nèi)容的實(shí)際訪問(wèn)頻率改變時(shí),內(nèi)容提供商無(wú)法實(shí)時(shí)地調(diào)整內(nèi)容的收費(fèi)策略來(lái)增加其利益;另一方面,內(nèi)容提供商需要付費(fèi)使用路由器提供商的緩存,缺少內(nèi)容的訪問(wèn)統(tǒng)計(jì)信息,內(nèi)容提供商就無(wú)法進(jìn)行類(lèi)似內(nèi)容分發(fā)網(wǎng)絡(luò)(content delivery network,CDN)[2]操作,將熱門(mén)的內(nèi)容放置到最合適的位置。
雖然有很多研究已經(jīng)開(kāi)始著手保證內(nèi)容提供商的利益,但他們的研究都是基于這樣一個(gè)前提:所有的網(wǎng)絡(luò)設(shè)備都已經(jīng)提前知道所有的內(nèi)容的訪問(wèn)統(tǒng)計(jì)信息,即內(nèi)容的流行度信息。但實(shí)際上,目前CCN無(wú)法提供這個(gè)前提條件。文獻(xiàn)[3]提出了一種在CCN中基于內(nèi)容受歡迎程度的緩存放置策略,越熱門(mén)的內(nèi)容其緩存位置離用戶(hù)越近。文獻(xiàn)[4-5]假定內(nèi)容的流行程度符合廣義Zipf分布,然后為運(yùn)輸網(wǎng)絡(luò)、內(nèi)容提供商等設(shè)計(jì)了一種基于博弈理論模型的緩存和定價(jià)策略,路由器通過(guò)設(shè)定一個(gè)價(jià)格閾值來(lái)決定是否進(jìn)行內(nèi)容緩存。文獻(xiàn)[6]為內(nèi)容提供商設(shè)計(jì)了一種基于緩存占用時(shí)間和內(nèi)容流行程度的內(nèi)容定價(jià)策略,當(dāng)緩存成本隨著緩存狀態(tài)的變化而變化時(shí),緩存策略和定價(jià)策略也能夠進(jìn)行動(dòng)態(tài)的調(diào)整。文獻(xiàn)[7]研究了信息中心網(wǎng)絡(luò)(information centric networking,ICN)中多個(gè)內(nèi)容提供商之間緩存資源分配的問(wèn)題,并提出了一種有用的緩存分區(qū)方法,這種方法通過(guò)最大化各個(gè)提供商的效益總和來(lái)提高緩存的收益率,并且該方法支持差異化的服務(wù)。此外,文獻(xiàn)[7]還提出了廣泛的公平概念,并建立了可行的緩存市場(chǎng)經(jīng)濟(jì)模式。
在獲取內(nèi)容流行度方面,文獻(xiàn)[8]基于局部的內(nèi)容流行程度,提出了一種服務(wù)內(nèi)容在傳輸路徑上的緩存分配策略,主要關(guān)注在給定網(wǎng)絡(luò)緩存位置的情況下,存儲(chǔ)哪些服務(wù)內(nèi)容能夠使網(wǎng)絡(luò)性能達(dá)到最優(yōu)。文獻(xiàn)[9]重新設(shè)計(jì)了緩存結(jié)構(gòu),并提出了基于緩存內(nèi)容流行度動(dòng)態(tài)變化的內(nèi)容管理策略,具有高流行度的內(nèi)容將延長(zhǎng)該內(nèi)容的緩存駐留時(shí)間,減少被替換掉的概率。但這些研究只是在局部獲取了內(nèi)容訪問(wèn)數(shù)據(jù),而沒(méi)有考慮到全局的優(yōu)化以及提高內(nèi)容提供商的感知能力等。
內(nèi)容的整體訪問(wèn)統(tǒng)計(jì)數(shù)據(jù)決定了內(nèi)容的流行度,內(nèi)容的流行度信息在網(wǎng)絡(luò)緩存和定價(jià)策略中起著一個(gè)非常重要的作用。對(duì)于CCN來(lái)說(shuō),在路由器的緩存存在成本前提下這是一個(gè)必不可少的要素。但是目前仍沒(méi)有關(guān)于內(nèi)容提供商如何獲得其內(nèi)容訪問(wèn)統(tǒng)計(jì)信息的研究,因此,內(nèi)容提供商獲取訪問(wèn)統(tǒng)計(jì)信息成了一個(gè)急需解決的問(wèn)題。
為了消除CCN中緩存機(jī)制帶來(lái)的問(wèn)題以及讓內(nèi)容提供商準(zhǔn)確地獲得內(nèi)容的訪問(wèn)統(tǒng)計(jì)數(shù)據(jù),會(huì)有如下的3點(diǎn)挑戰(zhàn)。
1)如何在中間路由設(shè)備中獲取用戶(hù)訪問(wèn)的內(nèi)容信息;
2)如何將內(nèi)容的訪問(wèn)統(tǒng)計(jì)信息經(jīng)濟(jì)、準(zhǔn)確地存儲(chǔ)在中間路由設(shè)備上。這要求該機(jī)制是輕量級(jí)的,可以和本地的CCN無(wú)縫結(jié)合;
3)如何將中間路由設(shè)備里的相關(guān)內(nèi)容訪問(wèn)統(tǒng)計(jì)信息回傳給內(nèi)容提供商,從而內(nèi)容提供商能夠及時(shí)的獲取內(nèi)容的流行度情況。
本文提出了一種基于計(jì)數(shù)的內(nèi)容訪問(wèn)統(tǒng)計(jì)機(jī)制來(lái)處理以上挑戰(zhàn)。①當(dāng)興趣包或者數(shù)據(jù)包內(nèi)容到達(dá)中間路由設(shè)備時(shí),分析這些包的名字來(lái)獲得用戶(hù)所請(qǐng)求的內(nèi)容;②為中間路由器中的緩存表的每個(gè)條目添加一個(gè)計(jì)數(shù)器,可以使用計(jì)數(shù)器來(lái)記錄用戶(hù)的請(qǐng)求次數(shù);③中間路由器可以在指定時(shí)間通過(guò)類(lèi)似用戶(hù)操作來(lái)構(gòu)造特殊興趣包,并以這種形式將內(nèi)容計(jì)數(shù)統(tǒng)計(jì)數(shù)據(jù)回傳給內(nèi)容提供商。
本機(jī)制的主要過(guò)程是當(dāng)興趣包到達(dá)中間路由設(shè)備時(shí),中間路由設(shè)備通過(guò)分析興趣包的名稱(chēng)以獲得用戶(hù)請(qǐng)求的內(nèi)容,如果緩存表命中或者轉(zhuǎn)發(fā)請(qǐng)求表命中,路由設(shè)備會(huì)根據(jù)需求進(jìn)行計(jì)數(shù)操作。然后當(dāng)滿(mǎn)足一定條件時(shí),中間路由設(shè)備會(huì)構(gòu)建特殊的興趣包,其名字包含待回傳的內(nèi)容的計(jì)數(shù)統(tǒng)計(jì)信息。然后,路由器可以模擬用戶(hù)請(qǐng)求內(nèi)容的方式,將該特殊興趣包發(fā)送給內(nèi)容提供商。內(nèi)容提供商接收到這些特殊興趣包后,分析請(qǐng)求內(nèi)容名稱(chēng),從而可以獲得其內(nèi)容的用戶(hù)請(qǐng)求計(jì)數(shù)信息以及內(nèi)容的流行度,制定合理的緩存策略和定價(jià)策略,保證內(nèi)容提供商的利益。
CCN中的興趣包和數(shù)據(jù)包有著不同的轉(zhuǎn)發(fā)機(jī)制,路由器通過(guò)內(nèi)容倉(cāng)庫(kù)(content storage,CS)、轉(zhuǎn)發(fā)請(qǐng)求表(pending interest table,PIT)和轉(zhuǎn)發(fā)信息表(forwarding information base,FIB)這3種邏輯結(jié)構(gòu)來(lái)實(shí)現(xiàn)這2種類(lèi)型的包的轉(zhuǎn)發(fā)。CS是CCN節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)部件,其主要作用是提供數(shù)據(jù)緩存,PIT記錄的是已經(jīng)轉(zhuǎn)發(fā)過(guò)的興趣包的名字以及這些興趣包所對(duì)應(yīng)的接口信息,F(xiàn)IB記錄了節(jié)點(diǎn)之間的轉(zhuǎn)發(fā)規(guī)則,它是數(shù)據(jù)路由轉(zhuǎn)發(fā)的主要依據(jù)。具體機(jī)制如圖1所示。
當(dāng)路由器收到興趣包時(shí),根據(jù)名字的最長(zhǎng)公共前綴匹配算法在CS表中查找對(duì)應(yīng)的數(shù)據(jù),如果存在,就直接返回?cái)?shù)據(jù)給用戶(hù),然后丟棄該興趣包;如果CS表中不存在對(duì)應(yīng)數(shù)據(jù),則在PIT表中進(jìn)行查找。如果找到對(duì)應(yīng)的表項(xiàng),說(shuō)明路由器之前已經(jīng)接收并轉(zhuǎn)發(fā)過(guò)相同的請(qǐng)求,但尚未獲得返回結(jié)果,所以在對(duì)應(yīng)的PIT表項(xiàng)的接口列表中添加收到該興趣包的端口號(hào),并丟棄該興趣包,不再轉(zhuǎn)發(fā);反之,則需要將該名字新增到PIT表中,并記錄接收端口號(hào),然后在FIB表中查找對(duì)應(yīng)的轉(zhuǎn)發(fā)端口。當(dāng)FIB表中存在可以轉(zhuǎn)發(fā)的端口時(shí),則進(jìn)行數(shù)據(jù)包轉(zhuǎn)發(fā),相反,如未查找到,則丟棄或返回請(qǐng)求包。
數(shù)據(jù)包作為興趣包的響應(yīng),本身并不需要進(jìn)行路由轉(zhuǎn)發(fā),只需要簡(jiǎn)單地沿著興趣包被傳輸?shù)南喾绰窂椒祷?。?dāng)路由器接收到數(shù)據(jù)包時(shí),根據(jù)數(shù)據(jù)包攜帶的名字在PIT表中進(jìn)行搜索,獲取到轉(zhuǎn)發(fā)端口列表,然后把數(shù)據(jù)包通過(guò)轉(zhuǎn)發(fā)端口列表中的端口轉(zhuǎn)發(fā)出去,并在CS表中緩存;如果沒(méi)有搜尋到對(duì)應(yīng)的PIT表項(xiàng),或者PIT表項(xiàng)中記錄同樣內(nèi)容的數(shù)據(jù)已經(jīng)轉(zhuǎn)發(fā)過(guò),那么直接丟棄該數(shù)據(jù)包。
在CCN中,路由器通過(guò)CS表對(duì)數(shù)據(jù)包進(jìn)行緩存,實(shí)現(xiàn)了相同數(shù)據(jù)的復(fù)用,提高了數(shù)據(jù)的可用性,改善了數(shù)據(jù)分發(fā),提高了網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)男省?/p>
網(wǎng)絡(luò)拓?fù)鋱D如圖2所示。圖2中,假設(shè)編號(hào)為16-31的葉子節(jié)點(diǎn)為用戶(hù),而編號(hào)為1的根節(jié)點(diǎn)為內(nèi)容提供商。
圖2 網(wǎng)絡(luò)拓?fù)鋱DFig.2 Network topology
在原有的機(jī)制中,如果編號(hào)為16的用戶(hù)發(fā)送了一個(gè)內(nèi)容為A的興趣請(qǐng)求,由于16→8→4→2→1這條路徑中沿路的節(jié)點(diǎn)均沒(méi)有存儲(chǔ)內(nèi)容為A的緩存,最終內(nèi)容提供商會(huì)響應(yīng)這請(qǐng)求并回復(fù)一個(gè)數(shù)據(jù)包。此時(shí),內(nèi)容提供商會(huì)記錄到內(nèi)容A有一次網(wǎng)絡(luò)請(qǐng)求的操作。此后,當(dāng)編號(hào)為17的用戶(hù)請(qǐng)求同樣的內(nèi)容A時(shí),其能夠在編號(hào)為8的路由器中找到內(nèi)容A的緩存,并由此路由器返回用戶(hù)所請(qǐng)求的內(nèi)容A。因此,由于網(wǎng)絡(luò)緩存對(duì)興趣包的截留,雖然提高了網(wǎng)絡(luò)的通信效率,但同時(shí)導(dǎo)致了內(nèi)容提供商缺失了編號(hào)為17的用戶(hù)對(duì)內(nèi)容A的網(wǎng)絡(luò)請(qǐng)求信息,從而無(wú)法準(zhǔn)確地判斷內(nèi)容A的流行度和價(jià)值。
在仿真100 s的實(shí)驗(yàn)中,16個(gè)用戶(hù)一共發(fā)出了16 052次內(nèi)容請(qǐng)求,由于中間路由器完成了用戶(hù)的大部分請(qǐng)求回應(yīng),導(dǎo)致內(nèi)容提供商實(shí)際上只進(jìn)行了2 532次的請(qǐng)求應(yīng)答,遠(yuǎn)遠(yuǎn)少于用戶(hù)的請(qǐng)求次數(shù),讓內(nèi)容提供商無(wú)法正確掌握其內(nèi)容的網(wǎng)絡(luò)訪問(wèn)情況。
因此,在CCN中,內(nèi)容提供商需要借助某種機(jī)制來(lái)實(shí)現(xiàn)對(duì)其提供的內(nèi)容的掌控,了解用戶(hù)對(duì)內(nèi)容的實(shí)際需求情況。
為了解決CCN緩存機(jī)制帶來(lái)的問(wèn)題,本文提出了一種能夠幫助內(nèi)容提供商準(zhǔn)確統(tǒng)計(jì)其內(nèi)容訪問(wèn)情況的機(jī)制。該機(jī)制的統(tǒng)計(jì)方案主要分為3步:①在緩存的內(nèi)容響應(yīng)用戶(hù)的請(qǐng)求,或者通過(guò)PIT表返回?cái)?shù)據(jù)的同時(shí),緩存計(jì)數(shù)器更新該內(nèi)容的訪問(wèn)次數(shù);②當(dāng)內(nèi)容的計(jì)數(shù)器數(shù)值達(dá)到閾值、或者緩存中內(nèi)容被替換、過(guò)期時(shí),路由器提取該內(nèi)容的訪問(wèn)次數(shù)信息;③路由器通過(guò)構(gòu)造帶特殊名字的興趣包,將內(nèi)容的訪問(wèn)次數(shù)反饋給內(nèi)容提供商。
通過(guò)這種內(nèi)容訪問(wèn)統(tǒng)計(jì)機(jī)制,即使用戶(hù)的請(qǐng)求在中間路由器上就被滿(mǎn)足,內(nèi)容提供商依然能夠感知到這次請(qǐng)求的內(nèi)容信息。
本機(jī)制的整體框架如圖3所示,具體描述如下。
圖3 整體框架圖Fig.3 Overall Framework
1)當(dāng)用戶(hù)1向路由器 1發(fā)送內(nèi)容為A的請(qǐng)求,路由器1會(huì)搜索其CS表,發(fā)現(xiàn)并沒(méi)有內(nèi)容A的緩存,則該請(qǐng)求會(huì)繼續(xù)向上傳遞直到到達(dá)內(nèi)容提供商Server處,然后數(shù)據(jù)沿請(qǐng)求路徑反向返回。如步驟1和2(見(jiàn)圖3),此時(shí)沿路的路由器會(huì)緩存內(nèi)容A,并且路由器1,2和內(nèi)容提供商由狀態(tài)0變?yōu)闋顟B(tài)1;
2)當(dāng)用戶(hù)2請(qǐng)求同樣的內(nèi)容A時(shí),興趣包到達(dá)路由器1時(shí),發(fā)現(xiàn)其有緩存內(nèi)容A,此時(shí),路由器1就會(huì)將內(nèi)容A直接返回給用戶(hù)2。如步驟3和4(見(jiàn)圖3),路由器1由狀態(tài)1變?yōu)闋顟B(tài)2,內(nèi)容A的計(jì)數(shù)值增加;
3)路由器根據(jù)特定的算法,在內(nèi)容A的訪問(wèn)頻率變化后,將內(nèi)容A的訪問(wèn)信息發(fā)送給內(nèi)容提供商,如步驟5(見(jiàn)圖3);
4)內(nèi)容提供商在更新內(nèi)容A的訪問(wèn)頻率后,可以制定關(guān)于內(nèi)容A的收費(fèi)策略以及緩存策略等,并在隨后將這些策略隨內(nèi)容A一起發(fā)送,如步驟6和7(見(jiàn)圖3)。
通過(guò)以上的步驟,內(nèi)容提供商可以充分了解到用戶(hù)對(duì)內(nèi)容的實(shí)際需求情況,確定內(nèi)容的流行度和價(jià)值,從而能夠更好地服務(wù)用戶(hù)。
為了能夠正確反映內(nèi)容的網(wǎng)絡(luò)訪問(wèn)情況,并經(jīng)濟(jì)、準(zhǔn)確地將訪問(wèn)統(tǒng)計(jì)信息存儲(chǔ)在中間路由器上,本機(jī)制在路由器的CS結(jié)構(gòu)中的每個(gè)條目添加一個(gè)計(jì)數(shù)器,如圖3左上所示,記錄內(nèi)容的訪問(wèn)次數(shù),在滿(mǎn)足一定的觸發(fā)條件時(shí),路由器就會(huì)將內(nèi)容的訪問(wèn)情況發(fā)送給內(nèi)容提供商。如果興趣包直接被路由器丟棄,則這個(gè)數(shù)據(jù)包不參與統(tǒng)計(jì)。具體計(jì)數(shù)統(tǒng)計(jì)操作以及反饋統(tǒng)計(jì)信息給內(nèi)容提供商的流程偽代碼如算法1所示。
在CCN中,當(dāng)路由器的CS表中沒(méi)有相應(yīng)興趣包的緩存而PIT表中有該興趣包的轉(zhuǎn)發(fā)記錄時(shí),該興趣包會(huì)聚合到已有的表項(xiàng)中。由于PIT表項(xiàng)聚合的特性,在統(tǒng)計(jì)內(nèi)容訪問(wèn)次數(shù)時(shí),需要將PIT的表項(xiàng)聚合次數(shù)也考慮在計(jì)數(shù)器中,以保證統(tǒng)計(jì)的準(zhǔn)確性,因此,本機(jī)制在數(shù)據(jù)包到來(lái)時(shí)也會(huì)有相應(yīng)的統(tǒng)計(jì)操作。綜上所述,內(nèi)容的計(jì)數(shù)信息可以表達(dá)為計(jì)數(shù)總和=CS命中次數(shù)(路由器)+PIT命中次數(shù)(路由器)+CP提供次數(shù)(內(nèi)容提供商)。
算法1內(nèi)容統(tǒng)計(jì)的算法。
Algorithm.1Algorithm for content statistics
1: while receive interest A do
2: if cache hit then
3: CS.A.counter←CS.A.counter+1
4: if CS.A.counter.value up to Threshold then
5: Make special interest of A to CP
6: CS.A.counter←0
7: end if
8: else if PIT hit then
9: {pit.A.facelist}←{pit.A.facelist}+interest A.face
10: drop interest A
11: else:
12: forward by FIB
13: end if
14: end while
15:
17: if old content B be replaced then
18: make specinal interest of B to CP
19: end if
20: if PIT. A facelist.size>1 then
21: CS.A.counter←CS.A.counter+PIT.A.facelist.size
22: end if
23: end while
24:
25: while CS.A.FreshnessPeriod is timeout do
26: Make special interest of A to CP
27: end while
在2.1節(jié)中描述了路由器統(tǒng)計(jì)訪問(wèn)次數(shù)的方法,本節(jié)則具體說(shuō)明路由器反饋統(tǒng)計(jì)信息的觸發(fā)條件。當(dāng)CS表滿(mǎn)足以下3個(gè)條件之一時(shí),路由器就需要構(gòu)造特殊的興趣包,將統(tǒng)計(jì)信息反饋給內(nèi)容提供商。
2.2.1 CS表中內(nèi)容被替換
當(dāng)CS的容量已滿(mǎn),而又有新的內(nèi)容到達(dá)路由器時(shí),某個(gè)舊的內(nèi)容就會(huì)被替換出去。此時(shí),為了獲得被替換內(nèi)容的訪問(wèn)信息,就需要將被替換內(nèi)容的具體計(jì)數(shù)值構(gòu)造特殊興趣包放入到網(wǎng)絡(luò)中。內(nèi)容提供商是特殊興趣包對(duì)應(yīng)的數(shù)據(jù)的唯一提供者,中間路由器沒(méi)有該興趣包對(duì)應(yīng)數(shù)據(jù),因此,內(nèi)容提供商會(huì)接收到這個(gè)特殊興趣包并獲得被替換內(nèi)容的計(jì)數(shù)信息。
2.2.2 CS表中內(nèi)容計(jì)數(shù)值達(dá)到閾值
熱門(mén)內(nèi)容可能會(huì)被消費(fèi)者頻繁地訪問(wèn),從而在路由器的CS表中長(zhǎng)時(shí)間存儲(chǔ),如果只在這些熱門(mén)內(nèi)容被替換出CS表時(shí)才反饋內(nèi)容統(tǒng)計(jì)信息給內(nèi)容提供商,那么內(nèi)容提供商無(wú)法及時(shí)獲得熱門(mén)內(nèi)容的訪問(wèn)情況,因此,需要對(duì)計(jì)數(shù)器設(shè)定一定的閾值。每當(dāng)CS表中某一內(nèi)容的值超過(guò)閾值時(shí),路由器可以將這個(gè)熱門(mén)內(nèi)容的計(jì)數(shù)信息構(gòu)造興趣包并回傳給內(nèi)容提供商,同時(shí)重置這熱門(mén)內(nèi)容的計(jì)數(shù)器的值。這樣內(nèi)容提供商就能夠及時(shí)的獲得熱門(mén)內(nèi)容的訪問(wèn)信息。同時(shí),閾值可以根據(jù)內(nèi)容的流行度進(jìn)行動(dòng)態(tài)的調(diào)整以適應(yīng)網(wǎng)絡(luò)的變化。
2.2.3 CS表中內(nèi)容生存時(shí)間到期
當(dāng)用戶(hù)訪問(wèn)頻率很低時(shí),CS表中的內(nèi)容可能既不被替換,其計(jì)數(shù)器的值也達(dá)不到設(shè)定的閾值。當(dāng)這部分內(nèi)容的生存時(shí)間到期時(shí),它們會(huì)從CS表中清空,而這部分內(nèi)容的訪問(wèn)情況也要回傳給內(nèi)容提供商。因此,當(dāng)CS表中內(nèi)容的有效期過(guò)期時(shí),路由器要將這個(gè)過(guò)期的內(nèi)容的計(jì)數(shù)信息構(gòu)造興趣包回傳給內(nèi)容提供商。
當(dāng)路由器構(gòu)造完具有特殊名字的興趣包后,會(huì)進(jìn)行類(lèi)似用戶(hù)請(qǐng)求內(nèi)容的操作,路由器構(gòu)造具有獨(dú)特名字的計(jì)數(shù)興趣包,這個(gè)特殊名字包含著計(jì)數(shù)信息以及特殊標(biāo)記等內(nèi)容,然后將此興趣包放入網(wǎng)絡(luò)中,由于在建立路由表項(xiàng)時(shí)會(huì)在每個(gè)路由器的FIB表中預(yù)先配置這些興趣包的轉(zhuǎn)發(fā)路徑,這些帶有計(jì)數(shù)信息的興趣包會(huì)一步一步地轉(zhuǎn)發(fā)到內(nèi)容提供商,來(lái)獲取到相應(yīng)的數(shù)據(jù)包(這個(gè)數(shù)據(jù)包為空包,用于消除路徑上的PIT表項(xiàng))。同時(shí)內(nèi)容提供商可以根據(jù)這個(gè)興趣包的名字來(lái)獲取到路由器所反饋的內(nèi)容的計(jì)數(shù)信息,從而達(dá)到統(tǒng)計(jì)網(wǎng)絡(luò)中內(nèi)容的訪問(wèn)情況的目的。
實(shí)驗(yàn)使用ndnSIM[10](基于NS3的模擬器)來(lái)評(píng)估本機(jī)制的性能。CCN與傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)不同,每個(gè)節(jié)點(diǎn)都具有緩存數(shù)據(jù)的功能,消費(fèi)者的請(qǐng)求很有可能在中間節(jié)點(diǎn)就被滿(mǎn)足而無(wú)需到達(dá)內(nèi)容提供商,而內(nèi)容提供商主要關(guān)心的也是這部分內(nèi)容的統(tǒng)計(jì)信息,因此,評(píng)價(jià)本機(jī)制需要如下的指標(biāo)。
1)準(zhǔn)確率。計(jì)算用戶(hù)發(fā)送請(qǐng)求次數(shù)以及內(nèi)容提供商獲得的實(shí)際內(nèi)容使用次數(shù)的比率。理想情況下兩者應(yīng)該相同,內(nèi)容提供商能夠完全了解用戶(hù)的需求情況。但由于網(wǎng)絡(luò)擁塞、丟包等情況的存在,這兩者仍有不可避免的差異。
2)效用。由于CCN的緩存機(jī)制,內(nèi)容提供商接收到的用戶(hù)請(qǐng)求會(huì)比用戶(hù)實(shí)際發(fā)出的請(qǐng)求少。在這種情況下,本文將原始機(jī)制中內(nèi)容提供商收到的請(qǐng)求數(shù)與本機(jī)制中內(nèi)容提供商收到的請(qǐng)求統(tǒng)計(jì)數(shù)進(jìn)行對(duì)比,以獲得本機(jī)制的實(shí)用性。
3)額外開(kāi)銷(xiāo)。本機(jī)制的額外開(kāi)銷(xiāo)以路由器發(fā)送特殊興趣包的個(gè)數(shù)來(lái)衡量。實(shí)驗(yàn)評(píng)估了不同的緩存容量和緩存生存時(shí)間對(duì)額外開(kāi)銷(xiāo)的影響。
實(shí)驗(yàn)使用圖2中的樹(shù)形拓?fù)浣Y(jié)構(gòu)進(jìn)行測(cè)試。服務(wù)內(nèi)容的請(qǐng)求服從Zipf-Mandelbrot[11]分布,服務(wù)的內(nèi)容數(shù)量為100,其數(shù)據(jù)報(bào)文大小完全相同。用戶(hù)請(qǐng)求報(bào)文的到達(dá)過(guò)程符合泊松過(guò)程,每秒鐘用戶(hù)發(fā)出10次內(nèi)容請(qǐng)求。同時(shí)每個(gè)路由具有相同的緩存容量大小,并使用LRU的緩存替換策略。計(jì)數(shù)器的閾值初始值設(shè)為20,且可以隨著內(nèi)容訪問(wèn)頻率的改變而動(dòng)態(tài)的變化。
設(shè)置實(shí)驗(yàn)進(jìn)行1 200 s的仿真。消費(fèi)者在0~1 000 s內(nèi)請(qǐng)求內(nèi)容,并在1 000~1 200 s內(nèi)停止請(qǐng)求。然后,路由器根據(jù)數(shù)據(jù)反饋條件,將緩存數(shù)據(jù)的計(jì)數(shù)信息構(gòu)造特殊興趣數(shù)據(jù)包,并回傳給內(nèi)容提供商。通過(guò)這種方式,內(nèi)容提供商可以接收到消費(fèi)者請(qǐng)求的完整統(tǒng)計(jì)信息,以確保實(shí)驗(yàn)的準(zhǔn)確性。
在實(shí)驗(yàn)中需要觀察CS表容量和緩存生存時(shí)間對(duì)實(shí)驗(yàn)的準(zhǔn)確性、效用和額外開(kāi)銷(xiāo)的影響。理論上CS表容量越小,緩存的生存時(shí)間越短,則緩存越容易被替換,路由器需要回傳計(jì)數(shù)信息的時(shí)間間隔越短,其額外開(kāi)銷(xiāo)越大。
3.2.1 CS容量的影響
實(shí)驗(yàn)用不同的緩存容量來(lái)進(jìn)行試驗(yàn)對(duì)比。通過(guò)選取緩存容量占總內(nèi)容的10%~50%進(jìn)行測(cè)試,比較不同容量對(duì)評(píng)價(jià)指標(biāo)的影響,同時(shí)固定路由器中每個(gè)緩存的生存時(shí)間為10 s。在1 000 s的仿真實(shí)驗(yàn)中,用戶(hù)一共發(fā)出了160 410次請(qǐng)求,CCN中原始的緩存機(jī)制可以幫助內(nèi)容提供商分流請(qǐng)求來(lái)降低內(nèi)容提供商的壓力,實(shí)驗(yàn)結(jié)果如圖4所示。在圖4中,隨著緩存容量大小的增加,原始機(jī)制中內(nèi)容提供商能夠直接接收到來(lái)自用戶(hù)的請(qǐng)求數(shù)量越來(lái)越少,導(dǎo)致內(nèi)容提供商無(wú)法準(zhǔn)確地獲取其提供的內(nèi)容的訪問(wèn)信息。例如,在緩存容量為40%的情況下,內(nèi)容提供商只能夠直接接收到25 688次用戶(hù)的請(qǐng)求,遠(yuǎn)遠(yuǎn)小于用戶(hù)的實(shí)際請(qǐng)求數(shù)量,從而造成了應(yīng)有利益的損失。
圖4 內(nèi)容提供商在不同緩存容量下接收到的用戶(hù)請(qǐng)求統(tǒng)計(jì)Fig.4 Requests statistics received by CP with different cache sizes
相反,通過(guò)本文機(jī)制可以穩(wěn)定有效地統(tǒng)計(jì)99.9%以上的用戶(hù)的請(qǐng)求并回傳給內(nèi)容提供商,同時(shí)其效用從1.35X~9.69X,會(huì)隨著緩存容量的增加而不斷地提高。路由器的額外開(kāi)銷(xiāo)(如圖5所示),則會(huì)隨著緩存容量的增加而不斷地降低。
3.2.2 緩存生存時(shí)間的影響
實(shí)驗(yàn)主要考慮緩存的生存時(shí)間對(duì)本機(jī)制的性能的影響。當(dāng)路由器中的緩存到達(dá)生存時(shí)間時(shí),路由器會(huì)主動(dòng)刪除此內(nèi)容緩存來(lái)釋放空間。實(shí)驗(yàn)設(shè)置緩存的生存時(shí)間為10~50 s,緩存的容量設(shè)置為總內(nèi)容的40%,其余條件與之前實(shí)驗(yàn)一致。實(shí)驗(yàn)結(jié)果如圖6所示。
圖5 內(nèi)容提供商在不同緩存容量下的額外開(kāi)銷(xiāo)Fig.5 Extra overhead for CP with different cache sizes
圖6 內(nèi)容提供商在緩存不同生存時(shí)間下接收到的用戶(hù)請(qǐng)求統(tǒng)計(jì)Fig.6 Requests statistics received by CP with different life cycles of cache
在原始的CCN機(jī)制中,內(nèi)容提供商只能接收到約15%左右的用戶(hù)請(qǐng)求,并且隨著緩存的生存時(shí)間的增加,內(nèi)容提供商能夠直接收到的請(qǐng)求會(huì)越來(lái)越少。而在本機(jī)制中,無(wú)論緩存的生存時(shí)間有多長(zhǎng),內(nèi)容提供商都能夠準(zhǔn)確地獲得用戶(hù)實(shí)際的訪問(wèn)內(nèi)容次數(shù),準(zhǔn)確率在99.9%以上,而路由器的額外開(kāi)銷(xiāo)如圖7所示,也會(huì)隨著緩存的生存時(shí)間的增加而降低。
總的來(lái)說(shuō),路由器的緩存容量越大,緩存的內(nèi)容越不容易被替換,那么內(nèi)容被替換而回傳發(fā)生的概率越小,額外開(kāi)銷(xiāo)越低;緩存的生存時(shí)間越長(zhǎng),發(fā)生內(nèi)容因超時(shí)而回傳的概率越小,同樣路由器的額外開(kāi)銷(xiāo)越低。同時(shí),本機(jī)制的準(zhǔn)確率與路由器和緩存配置參數(shù)基本無(wú)關(guān),能夠達(dá)到99.9%以上,其效用比原始機(jī)制更好。
本文探討了CCN中原始的轉(zhuǎn)發(fā)和緩存機(jī)制會(huì)導(dǎo)致內(nèi)容碎片化分布的問(wèn)題,只有部分內(nèi)容請(qǐng)求可以到達(dá)內(nèi)容提供商,從而內(nèi)容提供商難以準(zhǔn)確獲得其內(nèi)容的訪問(wèn)次數(shù)并制定合適的定價(jià)策略。針對(duì)這一問(wèn)題,本文提出了一種基于計(jì)數(shù)的內(nèi)容訪問(wèn)次數(shù)的統(tǒng)計(jì)機(jī)制,在該機(jī)制中,路由器對(duì)消費(fèi)者訪問(wèn)的內(nèi)容進(jìn)行計(jì)數(shù)統(tǒng)計(jì)操作,并在滿(mǎn)足計(jì)數(shù)器達(dá)到閾值、緩存內(nèi)容替換或過(guò)期條件時(shí)將內(nèi)容統(tǒng)計(jì)信息回傳給內(nèi)容提供商,從而使內(nèi)容提供商可以準(zhǔn)確及時(shí)地獲得其內(nèi)容的訪問(wèn)次數(shù)。ndnSIM中的仿真實(shí)驗(yàn)表明,在該機(jī)制下,內(nèi)容提供商獲得其內(nèi)容的訪問(wèn)頻次的準(zhǔn)確率高達(dá)99.9%。同時(shí)本機(jī)制進(jìn)行了實(shí)際的測(cè)試,獲得了良好的效果。
本文在研究如何將消費(fèi)者訪問(wèn)的內(nèi)容信息反饋給內(nèi)容提供商的問(wèn)題。內(nèi)容提供商得知內(nèi)容的訪問(wèn)統(tǒng)計(jì)數(shù)據(jù)后,可以更好地生產(chǎn)內(nèi)容、對(duì)內(nèi)容進(jìn)行收費(fèi)和管理,以提高其收益和對(duì)內(nèi)容的感知能力。并且內(nèi)容提供商還可以在網(wǎng)絡(luò)設(shè)備有限的緩存空間中存儲(chǔ)收益更高的內(nèi)容,實(shí)現(xiàn)最優(yōu)的緩存分配策略。
[1] XYLOMENOS G, VERVERIDIS C N, SIRIS V A,et al.A Survey of Information-Centric Networking Research[J].IEEE Communications Surveys & Tutorials,2013(99):1-26.
[2] PENG G.CDN:content distribution network[EB/OL].(2004-11-18)[2016-09-01].http://arxiv.org/abs/cs/0411069v1.
[3] ZHZNG G.An Optimal Cache Placement Strategy Based on Content Popularity in Content Centric Network[J].Journal of Information Computational Science,2014,11(8):2759-2769.
[4] HAJIMIRSADEGHI M, MANDAYAM N B, REZNIK A.Joint Caching and Pricing Strategies for Information Centric Networks[C]//2015 IEEE Global Communications Conference(GLOBECOM).San Diego,CA:IEEE,2015:1-6.
[5] HAJIMIRSADEGHI M, MANDAYAM N B, REZNIK A.Joint Caching and Pricing Strategies for Popular Content in Information Centric Networks[J].IEEE Journal on Selected Areas in Communications,2017,35(3):654-667.
[6] MA R T B, TOWSEY D. Cashing in on caching: on-demand contract design with linear pricing[C]//ACM Conference on Emerging NETWORKING Experiments and Technologies.Heidelberg,Germany:ACM,2015:1-6.
[7] CHU W, DEHGHAN M, TOWSLEY D, et al. On Allocating Cache Resources to Content Providers[C]//ACM ICN. Kyoto, Japan: ACM, 2016:154-159.
[8] 馮博昊,周華春,張宏科,等.智慧協(xié)同網(wǎng)絡(luò)服務(wù)內(nèi)容在傳輸路徑上的緩存分配策略[J].通信學(xué)報(bào),2016,37(3):129-138.
FENG B H, ZHOU H C, ZHANG H K, et al. Cache allocation policy of service contents along delivery paths for the smart collaborative network[J]. Tongxin Xuebao journal on Communication, 2016, 37(3):129-138.
[9] 張果,汪斌強(qiáng),張震,等.基于節(jié)點(diǎn)動(dòng)態(tài)內(nèi)容流行度的緩存管理策略[J].電子學(xué)報(bào),2016,44(11):2704-2712.
ZHANG G,WANG B Q,ZHANG Z,et al.A Strategy Based on Dynamical Content Popularity for Cache Management[J].Acta Electronica Sinica,2016,44(11):2704-2712.
[10] MASTORAKIS S, AFANASYEV A, MOISEENKO I, et al. NdnSIM 2:An updated NDN simulator for NS-3[EB/OL].[2016-04-13].http://ndnsim.net/2.4/.
[11] POWERS D M W. Applications and Explanations of Zipf’s Law[J]. Advances in Neural Information Processing Systems, 1998, 5(4):595-599.
(編輯:劉 勇)