王旭輝,張建偉,蔡增玉,杜春鋒,馬琳琳
(1.鄭州輕工業學院 計算機與通信工程學院,河南 鄭州 450002; 2.鄭州輕工業學院 軟件學院,河南 鄭州 450002)
當前IP互聯網的設計初衷是為了實現資源(硬件資源)共享,采用的是以主機為中心的端到端的通信模型(host-to-host)[1]。而隨著時代的發展與技術的進步,計算機的硬件資源已經不再匱乏,同時變得非常廉價,所以互聯網的任務已經發生了翻天覆地的變化。雖然還是資源的共享,但是已經由硬件資源的共享過渡為內容資源的共享,即內容的傳播;同時,互聯網用戶的關注方向已經發生了變化,他們不再關注內容存儲在哪里(where),而更多的將注意力集中于內容本身,即內容是什么(what)。
以IP為中心的互聯網關注的是內容的位置而不是內容本身的含義,同時,由于其緩存特有的封閉性,網絡中所有的內容都存儲在Source Server中,使得對任何內容的請求都需要Source Server完成響應,如此不僅導致整個網絡的效率不高,同時也造成了巨大的帶寬浪費。所以,迫切需要對當前的網絡架構進行改進,或者提出全新的網絡體系架構[2]。基于此,國內外學者提出了以信息為中心的新一代網絡體系架構——信息中心網絡(information-centric network,ICN),而內容中心網絡(content-centric network,CCN)作為ICN的一個研究分支,被認為是最有發展前景的未來網絡體系架構。
與IP網不同的是,CCN支持網內緩存[3]。在CCN中,網絡節點(路由器、交換機等)同時具有了轉發與緩存的功能。通過網內緩存,CCN避免了對同一內容的重復傳輸。當被請求的內容經過某個緩存節點時,該節點可以將此內容存儲下來。而且,當這個緩存節點再次收到對該內容的請求時,就可以直接響應該請求,不用再對Source Server進行請求。因此,CCN可以節省網絡資源,提升內容的傳輸效率。
然而,由于CCN緩存固有的透明化、泛在化和細粒度化等新的特性[4],使得傳統的緩存理論以及方法等均無法直接應用到CCN的緩存系統中。但是,隨著對CCN研究的深入,許多研究人員在CCN緩存理論、模型以及方法等方面都有了創造性的研究成果。
CCN與IP網相比,其主要的特征之一是支持網內緩存。而緩存作為CCN的一個重要組成部分,其性能的優劣直接影響CCN的整體性能。而在CCN中,緩存策略又分為兩部分[4]:其一是緩存決策策略,即在哪個緩存節點緩存什么樣的內容;其二是緩存替換策略,即當內容的流行度發生變化或緩存節點的緩存空間被占滿,同時又有新的內容需要被緩存時,該如何選擇需要被舍棄的內容,釋放出空間存儲新的內容。
基于CCN的宗旨,其緩存決策策略應該滿足以下兩方面的要求:
(1)訪問量(流行度)高的內容應該緩存復制到距離互聯網用戶較近(網絡邊緣)的緩存節點中,降低用戶的請求時延,提升用戶使用體驗。
(2)提高整個網絡緩存系統的緩存內容的多樣性,降低網絡緩存內容的冗余度,提升網絡的緩存命中率。
為了達到上述要求,降低用戶請求時延與內容冗余度,提高緩存內容的多樣性,需要網絡節點之間能夠進行簡單而有效的合作緩存機制。而根據合作程度的不同,可以將合作機制大致分為兩大類:顯式合作機制與隱式合作機制[4]。
當有內容需要緩存時,顯式合作機制要求節點與其周圍一定范圍內的緩存節點交換彼此的緩存狀態信息[5],進而在此范圍內找到最合適的節點緩存該內容。因此,顯式合作機制往往伴隨著巨大的網絡通信開銷。以下是幾種比較有代表性的顯式合作策略。
(1)BCVC(based capacity value caching)。
BCVC以節點的緩存容量(cache capacity value,CCV)作為選擇內容緩存節點的決定性因素[6-7],每一個緩存節點的CCV代表了節點內容存儲(content store,CS)中的剩余空間,即還能夠存儲多少的內容。同時,為了記錄節點的CCV,該算法在每一個請求內容的Interest包中都添加了CCV字段。當請求內容的一個Interest包被路由到某一個緩存節點時,該節點首先查找其自身的內容存儲CS,如果在其CS中存儲有該Interest包所請求的內容,該節點就會直接響應Interest包的請求,并刪除Interest包,否則該節點就會將自身的CCV寫入Interest包的CCV字段,并繼續轉發該Interest包。當Interest包到達另外一個緩存節點時,該節點同樣會先查詢自身的CS,如果沒有Interest包請求的內容,就會將自身的CCV與Interest包中所攜帶的CCV進行比較,如果小于,就直接轉發該Interest包,如果大于,就會用自身的CCV替代Interest包中原來的CCV并繼續轉發該Interest包。當Interest包到達存儲有內容的Server時,Server會根據Interest包中所攜帶的CCV選擇內容的緩存節點。但是,BCVC策略沒有考慮到內容的流行度,同時,也沒有將內容快速地緩存備份到網絡邊緣的位置。
(2)CCBH(cooperative caching based hash)。
在CCBH中,一個內容被分為n個大小相同的chunk[8-9],而且每一個chunk都會攜帶一個標識,每一個標識就是固定的小于n的自然數(0,1,…,n-1)。同時,每一個緩存節點及其鄰域內的k個節點都會有一個編號,分別是0,1,…,k-1。當一個chunk到達一個緩存節點時,該節點會通過一個hash算法決定由其自身還是其鄰域內k-1個節點中的某個節點緩存該chunk。具體而言,假設一個chunk的標識為x,該chunk就應該被緩存備份到編號為i=xmodk(0≤i≤k)的節點,如圖1所示。
CCBH策略可以避免同一個chunk在鄰域內被重復緩存,而且同一個節點不會緩存同一個內容的所有chunk,提高了網絡緩存內容的多樣性。但是,因為CCBH事先對節點進行了標記,當其中某一個節點被移除或者失效時,CCBH將無法達到預期目標。同時,CCBH并沒有將內容緩存備份到網絡的邊緣節點。

圖1 CCBH策略
與顯式合作機制相比,隱式合作機制不需要如此巨大的網絡開銷,因為隱式合作不需要緩存節點之間互通狀態信息。以下是幾種比較有代表性的隱式合作策略:
(1)LCE(leave copy everywhere)。
LCE也稱為Always Caching[10],是CCN默認的緩存決策策略。該策略的基本思想是:當緩存命中時,在命中節點將用戶請求的內容發給內容請求者的傳輸路徑中,沿途上的所有緩存節點都會將該內容緩存下來。
LCE策略的優勢在于可以提高整個網絡的緩存命中率,但是會造成巨大的緩存內容冗余,即會在很多的節點中存儲有相同內容的副本,使得整個CCN網絡的緩存內容的多樣性不高,而且沒有考慮到內容的流行度等因素。
(2)LCD(leave copy down)。
當緩存命中時,僅僅在命中節點下一跳路由器節點對請求的內容進行緩存[11],但是不會刪除該請求內容在命中節點中的緩存副本。
與LCE策略相比,避免了對同一內容的大量拷貝,整個CCN網絡的緩存內容的多樣性有所提高,同時,如果對同一內容的訪問量較多,該內容將會被復制到靠近用戶的地方,這潛在地考慮了內容的流行度。但是,這種策略會在一定程度上降低緩存命中率,另外,如果時間過長,同樣會造成巨大的內容冗余。
(3)FixP(fixed-probabilistic caching)。
當緩存命中時,在命中節點將用戶所請求的內容發送到用戶的傳輸路徑中[12],沿途上的每一個路由器節點都將會以概率p緩存該內容,而以概率1-p不緩存該內容。概率p可以根據整個網絡的緩存情況進行調整。
FixP策略可以認為是普適化的LCE,即當緩存概率p=1時的LCE。而且,該策略并沒有考慮到內容的流行度等因素。
(4)ProbCache(probabilistic caching)。
當緩存命中,在命中節點將用戶請求的內容發送到內容請求者的返回路徑中[13],沿途上每一個路由器節點緩存該內容的可能性(概率p)與其和內容請求者之間的距離成反比。通俗地講,就是一個緩存節點距離互聯網用戶越近,該節點能夠緩存用戶所請求內容的可能性越大。
ProbCache策略的宗旨就是將內容盡可能地緩存到距離用戶較近的邊緣節點中,達到降低用戶下載內容的平均時延,提高網絡資源利用率的目的。但是,ProbCache策略并沒有考慮到內容的訪問量等因素,而是一味地將內容盡可能地緩存到距離用戶較近的路由器節點中,加大了邊緣節點的競爭。
(5)MPC(most popularity caching)。
MPC是基于內容流行度的緩存策略[14],其核心思想是:在每一個緩存節點中都有一個流行度表(popularity table,PT),在用戶請求一個內容時,沿途的緩存節點會將內容名以及訪問量成對地記錄下來,當一個內容的流行度達到所設定的流行度閾值之后,持有該內容緩存備份的節點會向其周圍的鄰居節點(hop=1)發送一條suggestion,通知其周圍的鄰居節點緩存該內容,并在收到所有鄰居節點已經緩存該內容的反饋信息之后,持有內容備份的節點會重置該內容的流行度以避免重復緩存,如圖2所示(假設流行度閾值等于3)。

圖2 MPC策略
MPC策略的宗旨是盡量多地備份流行度高的內容,這使得用戶平均下載時延有了一定程度的降低。然而,正是由于僅僅緩存流行度高的內容,而其他內容并不會得到緩存,使得整個網絡資源沒有得到充分的利用,致使整個網絡系統緩存內容的多樣性不高,同時會造成緩存命中率有所下降。
(6)PCBC(popularity and centricity based caching)。
PCBC提出了“中心度”的概念[15-16],并將節點的中心度作為選擇緩存內容節點的決定性因素。中心度用來衡量一個網絡節點的“中心程度”,即其在通信鏈路中的重要性。對一個網絡節點來說,與其相關聯的通信鏈路越多,該節點的中心度越高。該緩存策略的基本思想是:將流行度高的內容緩存到中心度較高的緩存節點中。因為中心度越高的節點,越靠近網絡邊緣,如圖3所示。

圖3 PCBC策略
PCBC策略可以將流行度較高的內容緩存到距離用戶較近的邊緣節點,達到降低用戶下載內容的平均時延,提升用戶使用體驗的目的。但是,PCBC策略僅僅將中心度高的節點作為內容的緩存節點,而其他節點并不會緩存任何內容。這樣不僅會造成網絡資源的大量浪費,同時,PCBC策略并沒有考慮到突發流量的情況,當突發流量到來時,將加大內容緩存節點的通信負載,降低QoS。
如前所述,緩存替換策略主要解決的問題是:當內容的流行度發生變化,或者緩存節點的緩存空間被占滿,又有新的內容需要緩存時,如何進行內容的替換。
目前,國內外的研究者主要專注于緩存決策策略的研究,而關于緩存替換策略的研究相對較少。以下是幾種比較有代表性的替換策略:
(1)LRU(least recently used)。
當有新的內容需要緩存時[17],緩存節點會將其緩存空間中最近一段時間內訪問量最少的內容刪除,為新的內容提供緩存空間。
(2)TTL(time to live)。
當一個內容被緩存到節點的緩存空間時,都會生成一個計時器,該計時器會從一個固定的時間開始倒計時,當計時結束時,與其對應的內容就會被刪除。
(3)FIFO(first in first out)。
該替換策略的基本思想是:當新的內容需要緩存時,緩存節點會刪除最先被緩存至該節點的內容,為新的內容騰出空間。
隨著網絡規模的爆炸式增長,用戶興趣的變化,當前以主機為中心的IP互聯網已經不能適應時代的發展。國內外學者提出了多種未來網絡體系架構,而文中所涉及到的CCN就是其中之一。以CCN為中心,分析了當前比較有代表性的緩存策略。譬如,LCD作為CCN默認的策略,雖然能夠降低請求時延,但是會造成巨大的緩存冗余;PCBC將流行度高的內容緩存到重要的節點,雖然考慮到了內容的流行度,但是并沒有考慮到突發流量的情況,當有突發流量發生時,將加大內容緩存節點的負載。綜上所述,在緩存方面,CCN還有許多問題亟待解決,需要進行更深層次的研究。