沈越欣 王興偉 李潔 曾榮飛



摘? ?要:文章以NDN網(wǎng)絡(luò)現(xiàn)存擁塞控制算法的端節(jié)點(diǎn)擁塞信號(hào)獲取不準(zhǔn)確為研究問題,提出一種基于端節(jié)點(diǎn)的擁塞控制算法。這種算法從源頭上控制擁塞,并依據(jù)多個(gè)擁塞信號(hào)進(jìn)行端節(jié)點(diǎn)速率調(diào)整,以更貼近全局網(wǎng)絡(luò)狀態(tài)的方式進(jìn)行端速率調(diào)整以保證吞吐量。文章考慮NDN多源特性,結(jié)合累積排隊(duì)時(shí)延信息,設(shè)計(jì)端節(jié)點(diǎn)重傳定時(shí)策略,避免過多重傳加重網(wǎng)絡(luò)擁塞,進(jìn)而確保網(wǎng)絡(luò)的穩(wěn)定性。
關(guān)鍵詞:命名數(shù)據(jù)網(wǎng)絡(luò);多源;端節(jié)點(diǎn)擁塞控制;累積排隊(duì)時(shí)延;重傳定時(shí)策略
1 引言
隨著網(wǎng)絡(luò)應(yīng)用類型的多樣化和用戶數(shù)據(jù)的爆炸式增長(zhǎng),以內(nèi)容為中心的網(wǎng)絡(luò)流量逐漸占據(jù)主要位置[1]。以內(nèi)容為中心的命名數(shù)據(jù)網(wǎng)絡(luò)(Named Data Networking,NDN)也成為了研究熱點(diǎn)[2,3]。隨著網(wǎng)絡(luò)流量的不斷增加,擁塞控制對(duì)網(wǎng)絡(luò)中的內(nèi)容成功獲取、穩(wěn)定性和服務(wù)質(zhì)量等具有舉足輕重的作用。NDN體系結(jié)構(gòu)支持流量平衡(One-interest-one-data),其基于接收端驅(qū)動(dòng)(Receiver-driven)和多源(Multi-source)、多路徑(Multipath)的特性,更是給NDN擁塞控制機(jī)制的設(shè)計(jì)增添了難度。隨著命名、緩存、路由機(jī)制的不斷成熟,針對(duì)NDN擁塞控制機(jī)制[4]的研究已引起廣泛關(guān)注。
NDN擁塞控制面臨著眾多挑戰(zhàn)。由于NDN中沒有類似于TCP中的重復(fù)ACK,且因?yàn)镹DN的多源特性,通過重傳超時(shí)(Retransmission Time-Out,RTO)來判斷擁塞并不準(zhǔn)確,故適用于TCP/IP的擁塞控制策略如依據(jù)RTO、重復(fù)ACK確認(rèn)的擁塞檢測(cè)等均不能直接應(yīng)用于NDN中。
本文利用NDN獨(dú)有的優(yōu)勢(shì)和特點(diǎn)進(jìn)行端節(jié)點(diǎn)擁塞控制算法(End-node Based Congestion Control,EBCC)的設(shè)計(jì)與實(shí)現(xiàn):(1)針對(duì)NDN多源性,設(shè)計(jì)了三種擁塞信號(hào),基于這些擁塞信號(hào)反饋進(jìn)行相應(yīng)的速率調(diào)整保證網(wǎng)絡(luò)吞吐量;(2)通過準(zhǔn)確地獲取擁塞信號(hào)并經(jīng)過中間節(jié)點(diǎn)逐跳累積,反映網(wǎng)絡(luò)全局信息;擁塞信息的反饋利用數(shù)據(jù)包“捎帶”的方法,不會(huì)增加過多額外負(fù)載;(3)在端節(jié)點(diǎn)設(shè)計(jì)了重傳定時(shí)機(jī)制,具有很好的適應(yīng)性,避免過多重傳加重網(wǎng)絡(luò)擁塞,確保網(wǎng)絡(luò)穩(wěn)定性。
2? 相關(guān)工作
現(xiàn)有擁塞控制策略可以分為單源擁塞控制、多源擁塞控制。單源擁塞控制中[5,6],通過在請(qǐng)求方調(diào)整興趣包的發(fā)送速率來控制擁塞。文獻(xiàn)[5]提出了一個(gè)端節(jié)點(diǎn)興趣控制協(xié)議(Interest Control Protocol,ICP),設(shè)置在請(qǐng)求方的AIMD 控制器會(huì)根據(jù)當(dāng)前網(wǎng)絡(luò)的擁塞狀況來調(diào)整發(fā)送窗口的大小,并通過為每個(gè)興趣流維護(hù)歷史往返時(shí)延RTT值來計(jì)算RTO,以此來判斷擁塞。文獻(xiàn)[6]提出基于端節(jié)點(diǎn)的自調(diào)整興趣速率控制機(jī)制,該機(jī)制利用數(shù)據(jù)包的到達(dá)時(shí)間間隔差,來調(diào)整興趣包的發(fā)送時(shí)間間隔差,以此來控制興趣包的發(fā)送速率。文獻(xiàn)[5,6]是基于單源的假設(shè),這在NDN中往往不能成立,一些考慮多源特性的端節(jié)點(diǎn)擁塞控制算法被提出,如文獻(xiàn)[7~9]。
文獻(xiàn)[7]提出根據(jù)往返時(shí)延來設(shè)置超時(shí)值是不可靠的,并提出一個(gè)基于隱式反饋的接收方驅(qū)動(dòng)擁塞控制策略。但它假設(shè)端節(jié)點(diǎn)知道內(nèi)容源的位置,且在傳輸過程中不會(huì)改變,這在實(shí)際場(chǎng)景中并不太可能。文獻(xiàn)[8,9]分別提出為每個(gè)路徑、內(nèi)容儲(chǔ)存庫(kù)(Content Store,CS)維護(hù)一個(gè)RTO。文獻(xiàn)[8,9]都是基于將多源問題轉(zhuǎn)化成多個(gè)單源問題,存在兩個(gè)弊端:其一,對(duì)于擁塞的判斷依然依靠RTO,由于RTO的測(cè)量存在不準(zhǔn)確性,造成對(duì)網(wǎng)絡(luò)擁塞狀況的評(píng)估不準(zhǔn)確,不能保證很好的網(wǎng)絡(luò)穩(wěn)定性;其二,在端節(jié)點(diǎn)需要對(duì)每個(gè)流、內(nèi)容源或路徑等維護(hù)多倍的信息,這會(huì)造成高昂的成本,且可擴(kuò)展性很低。
本文提出的端節(jié)點(diǎn)擁塞算法在AIMD與CoDel的基礎(chǔ)上進(jìn)行改進(jìn),依據(jù)數(shù)據(jù)包攜帶的累積排隊(duì)時(shí)延、NACK包和數(shù)據(jù)包超時(shí)等不同的擁塞信號(hào),進(jìn)行不同的窗口調(diào)整。
3 問題描述
3.1 模型設(shè)計(jì)
NDN網(wǎng)絡(luò)模型可以抽象為一個(gè)無向連通圖G =(C,R,E)。其中,C代表網(wǎng)絡(luò)中的端節(jié)點(diǎn)集合;R代表網(wǎng)絡(luò)中的中間節(jié)點(diǎn)集合;E代表考慮了時(shí)延(傳輸時(shí)延和排隊(duì)時(shí)延)、鏈路帶寬等參數(shù)的物理鏈路集合。
為實(shí)現(xiàn)擁塞控制,中間節(jié)點(diǎn)在轉(zhuǎn)發(fā)處理的過程中,記錄網(wǎng)絡(luò)擁塞信號(hào),通過數(shù)據(jù)包“捎帶”的方式,將網(wǎng)絡(luò)擁塞信號(hào)逐跳更新直至反饋回端節(jié)點(diǎn);端節(jié)點(diǎn)會(huì)根據(jù)用戶內(nèi)容請(qǐng)求生成興趣包,且會(huì)根據(jù)收到的具體擁塞信號(hào)作出適合當(dāng)前網(wǎng)絡(luò)狀態(tài)的速率調(diào)整;若數(shù)據(jù)包沒有在預(yù)定時(shí)間內(nèi)成功返回,端節(jié)點(diǎn)根據(jù)當(dāng)前是否仍需要該內(nèi)容選擇是否對(duì)興趣包重傳,具體流程如圖1所示。
為實(shí)現(xiàn)上述通信過程,網(wǎng)絡(luò)中運(yùn)行三種包:興趣包、數(shù)據(jù)包和NACK包。其中,NACK包只是在興趣包的基礎(chǔ)上添加了錯(cuò)誤碼(Error Code)字段信息,其他字段信息與原興趣包相同,當(dāng)下游節(jié)點(diǎn)收到NACK包,會(huì)為此NACK包重新尋找接口進(jìn)行轉(zhuǎn)發(fā)。如果當(dāng)前節(jié)點(diǎn)無法找到滿足速率限制的可用接口,該興趣包會(huì)以NACK包的形式回溯到上一跳。
針對(duì)NDN多源性,將基于超時(shí)與窗口調(diào)整的傳統(tǒng)擁塞控制對(duì)于端節(jié)點(diǎn)速率變化的影響進(jìn)行如下分析。
NDN的通信特性使現(xiàn)有的適用于傳統(tǒng)網(wǎng)絡(luò)的擁塞控制策略不能直接遷移使用,NDN中的窗口調(diào)整需要重點(diǎn)考慮:(1)僅僅依靠超時(shí)作為擁塞信號(hào)容易造成對(duì)擁塞反應(yīng)不夠有效,即如何選擇適合NDN的擁塞反饋信號(hào),從而能夠準(zhǔn)確迅速地對(duì)擁塞作出反應(yīng)并保證網(wǎng)絡(luò)吞吐量;(2)由于NDN多源的特性[7,8,11],對(duì)于端節(jié)點(diǎn)的請(qǐng)求,其內(nèi)容提供者并不固定造成超時(shí)值計(jì)算不準(zhǔn)確的問題,即如何準(zhǔn)確地計(jì)算NDN中超時(shí)值,如何設(shè)置端節(jié)點(diǎn)超時(shí)重傳策略以保證網(wǎng)絡(luò)穩(wěn)定性。
接口限速分析:本文隊(duì)列占用的計(jì)算不是基于整個(gè)路由器緩沖區(qū),而是針對(duì)具體某個(gè)接口。設(shè)t時(shí)刻接口k的當(dāng)前興趣包轉(zhuǎn)發(fā)速率,t時(shí)刻接口k的興趣包速率限制記為,為接口k的隊(duì)列閾值,為前綴prefix對(duì)應(yīng)的流的隊(duì)列占用,N(t)為t時(shí)刻流的個(gè)數(shù),數(shù)據(jù)包大小記為D_pktsize;Link_capk為接口k對(duì)應(yīng)的鏈路容量。
第一個(gè)速率上限為數(shù)據(jù)包返回速率,如公式(1)所示,單位為包/秒,其中為控制參數(shù)。
第二個(gè)速率限制為不同流之間的公平速率,針對(duì)每個(gè)“前綴接口對(duì)”(prefix,k)進(jìn)行公平速率計(jì)算,考慮了接口容量、接口隊(duì)列占用以及對(duì)應(yīng)接口鏈路容量,如公式(2)所示,其中h為控制參數(shù)。
最終該接口的限制速率不能超過以上兩個(gè)限制,若超過,則該接口不可用,需要選擇次優(yōu)接口,并重新進(jìn)行判斷,接口速率限制如公式(3)所示。不滿足速率限制的接口將會(huì)設(shè)為不可用。
4 基于多源的端節(jié)點(diǎn)擁塞控制算法
為了解決NDN中擁塞檢測(cè)不準(zhǔn)確等問題,本文提出了一種基于多源的端節(jié)點(diǎn)擁塞控制算法EBCC。首先在中間節(jié)點(diǎn)進(jìn)行擁塞信息維護(hù)與傳遞更新,并設(shè)定超時(shí)重傳,然后設(shè)計(jì)了三種擁塞信號(hào)及相應(yīng)控制處理。
4.1 擁塞信息維護(hù)與傳遞更新
每當(dāng)數(shù)據(jù)包返回至當(dāng)前節(jié)點(diǎn)vi時(shí),均攜帶其鄰居節(jié)點(diǎn)vj的擁塞信息,包括“本地?fù)砣畔ⅰ保↙ocal Congestion Information,LCI)和“非本地?fù)砣畔ⅰ保∟onlocal Congestion Information,NCI),故每個(gè)節(jié)點(diǎn)需要維護(hù)兩種擁塞信息。
4.2 超時(shí)重傳設(shè)定
超時(shí)重傳值作為擁塞信號(hào),若計(jì)算值過小會(huì)導(dǎo)致?lián)砣`判,降低鏈路資源利用率,而過早的超時(shí)重傳也會(huì)為網(wǎng)絡(luò)注入額外的流量,浪費(fèi)網(wǎng)絡(luò)資源,反之若計(jì)算值過大會(huì)降低用戶服務(wù)質(zhì)量。在TCP/IP中端節(jié)點(diǎn)超時(shí)重傳值ReTimerend的計(jì)算一般采用公式(8)和(9)進(jìn)行計(jì)算。
其中,為往返時(shí)延的線性移動(dòng)平均值,為往返時(shí)延的線性偏差,m為一固定常數(shù),為未更新之前的往返時(shí)延線性移動(dòng)平均值,為當(dāng)前的往返時(shí)延,為時(shí)延平滑參數(shù)。由于NDN多源特性導(dǎo)致這種通過時(shí)延平均值計(jì)算超時(shí)值的方式不準(zhǔn)確,因此在公式(8)和(9)的基礎(chǔ)上,HR-ICP[12]采用公式(10)計(jì)算ReTimerend,并證明了其穩(wěn)定性。
其中,為一固定常數(shù),RTTmax為歷史最大往返時(shí)延,RTTmin歷史最小往返時(shí)延也被認(rèn)為是傳輸時(shí)延,故RTTmax-RTTmin被認(rèn)為是最大排隊(duì)時(shí)延的估計(jì)值,其基本思想是主要利用瓶頸鏈路排隊(duì)時(shí)延值來控制端節(jié)點(diǎn)調(diào)整窗口。但是這種方式,并沒有真正考慮到NDN網(wǎng)絡(luò)多源的特性,RTTmax和RTTmin的測(cè)量包含了到所有內(nèi)容源的時(shí)延記錄,無法反映當(dāng)前網(wǎng)絡(luò)擁塞程度。
中間節(jié)點(diǎn)在包中記錄了排隊(duì)時(shí)延信息,且排隊(duì)時(shí)延逐跳累積,形成到達(dá)端節(jié)點(diǎn)的累積排隊(duì)時(shí)延AccumQD,AccumQD經(jīng)過逐跳累積可以較好的反映全局網(wǎng)絡(luò)狀態(tài),且記錄的是當(dāng)前內(nèi)容源到端節(jié)點(diǎn)的排隊(duì)時(shí)延,不會(huì)受多源網(wǎng)絡(luò)場(chǎng)景影響準(zhǔn)確性。綜合以上分析,本文的超時(shí)重傳值采用公式(11)進(jìn)行計(jì)算。
其中 為調(diào)整參數(shù),AccumQDcur表示當(dāng)前累積排隊(duì)時(shí)延,AccumQDmax代表歷史最大累積排隊(duì)時(shí)延,由公式(13)可以看出,ReTimerend受歷史時(shí)延和當(dāng)前網(wǎng)絡(luò)擁塞狀況影響,如果AccumQDcur較大,表示網(wǎng)絡(luò)擁塞較嚴(yán)重,則ReTimerend也會(huì)較大,反之,較小。
4.3 擁塞信號(hào)設(shè)計(jì)
針對(duì)NDN多源性,本文的端節(jié)點(diǎn)擁塞控制共設(shè)計(jì)了三種擁塞信號(hào)。
(1)成功返回?cái)?shù)據(jù)包信號(hào)D_pktSuc:當(dāng)收到D_pktSuc時(shí),可以從D_pktSuc獲取到達(dá)端節(jié)點(diǎn)vend時(shí)的累積排隊(duì)時(shí)延AccumQD。通過排隊(duì)時(shí)延反映擁塞狀況已被很多研究者使用。在此基礎(chǔ)上,考慮NDN多源場(chǎng)景,本文提出累積排隊(duì)時(shí)延作為擁塞信號(hào)之一來對(duì)興趣包的速率進(jìn)行調(diào)整。NDN網(wǎng)絡(luò)中請(qǐng)求的內(nèi)容以數(shù)據(jù)包的形式原路返回,只需在返回的數(shù)據(jù)包中增加一個(gè)記錄排隊(duì)時(shí)延的字段,不會(huì)增加過多額外的負(fù)載;通過累積排隊(duì)時(shí)延依概率減小擁塞窗口,可以起到預(yù)防擁塞的作用。由于到達(dá)端節(jié)點(diǎn)的AccumQD通過逐跳累積得到,其計(jì)算公式即為公式(6)。
(2)錯(cuò)誤應(yīng)答興趣包信號(hào)I_pktNACK:NDN多個(gè)內(nèi)容源可產(chǎn)生多條路徑,每個(gè)中間節(jié)點(diǎn)的FIB表記錄了內(nèi)容前綴和對(duì)應(yīng)的一系列可用接口,由于對(duì)于每個(gè)前綴有不止一個(gè)可用接口,若當(dāng)前接口已經(jīng)過度擁塞,則可以尋找下一可用接口進(jìn)行轉(zhuǎn)發(fā),利用多條路徑分流的思想來避免擁塞。如果當(dāng)前節(jié)點(diǎn)無法找到可用接口,那么興趣包會(huì)被添加NACK頭部,以I_pktNACK的形式回溯到上一跳,如果上一跳依然無法找到可用接口,興趣包會(huì)再次回溯到上一跳。假定網(wǎng)絡(luò)擁塞狀況十分嚴(yán)重,所有節(jié)點(diǎn)都無法找到可用接口,則I_pktNACK會(huì)最終回溯到端節(jié)點(diǎn),端節(jié)點(diǎn)收到I_pktNACK時(shí),可以判斷此時(shí)的網(wǎng)絡(luò)狀況較為擁塞,從而減少興趣包發(fā)送速率來對(duì)擁塞作出反應(yīng)。因此I_pktNACK可以作為一個(gè)網(wǎng)絡(luò)擁塞較為嚴(yán)重的擁塞信號(hào)。
(3)數(shù)據(jù)包超時(shí)信號(hào)D_pktTimeout:數(shù)據(jù)包未在預(yù)定超時(shí)重傳時(shí)間ReTimerend前成功返回,視為D_pktTimeout信號(hào)。D_pktTimeout的判定依賴于ReTimerend的計(jì)算。具體而言,每收到一個(gè)數(shù)據(jù)包,在端節(jié)點(diǎn)維護(hù)其時(shí)延RTT,對(duì)維護(hù)的N(N默認(rèn)設(shè)為30)個(gè)歷史往返時(shí)延樣本RTT_samples={RTT1,RTT2,…,RTTN},有歷史最小時(shí)延RTTmin=min{RTT1,RTT2,…,RTTN},類似的,對(duì)于端節(jié)點(diǎn)維護(hù)的N個(gè)歷史累積排隊(duì)時(shí)延樣本,有AccumQD_samples={AccumQD1,AccumQD2,…,AccumQDN},有歷史最大累積排隊(duì)時(shí)延AccumQDmax={AccumQD1,AccumQD2,…,AccumQDN},代入公式(11),可以計(jì)算出ReTimerend。
4.4 擁塞控制處理
端節(jié)點(diǎn)擁塞控制主要是基于不同的擁塞信號(hào)反饋進(jìn)行相應(yīng)的速率調(diào)整,針對(duì)上述三種不同的信號(hào),擁塞處理方法有三種。
(1)收到成功返回?cái)?shù)據(jù)包D_pktSuc擁塞信號(hào)的處理:AccumQD通過數(shù)據(jù)包攜帶返回,可以直接從D_pktSuc中獲取,由于AccumQD是累積值,通過多個(gè)鏈路匯聚所得,因此在一定程度上反映了全局網(wǎng)絡(luò)狀態(tài)。為了避免僅依賴超時(shí)作為擁塞信號(hào)的窗口調(diào)整對(duì)時(shí)延過于敏感,導(dǎo)致窗口急劇減小,且存在滯后性,本文采用根據(jù)AccumQD依概率減小擁塞窗口,如果需要執(zhí)行窗口減小,則C_window變?yōu)镃_window*α。由圖2所示為窗口減小的概率圖,其中 、 分別為設(shè)定的累積排隊(duì)時(shí)延最小、最大閾值,概率計(jì)算為公式(12)。
D_pkt的成功返回,表示當(dāng)前網(wǎng)絡(luò)狀況相對(duì)較良好,因此若沒有執(zhí)行依概率窗口減小,則對(duì)窗口進(jìn)行“和式增加”以充分利用鏈路資源,保證吞吐量。采用這種方式,可以根據(jù)累計(jì)排隊(duì)時(shí)延提前對(duì)擁塞進(jìn)行控制,起到了一定的預(yù)防擁塞的作用,且依概率進(jìn)行的方式,使得擁塞控制更為“溫和”。
(2)收到錯(cuò)誤應(yīng)答興趣包I_pktNACK擁塞信號(hào)的處理:I_pktNACK通過中間節(jié)點(diǎn)逐跳回溯才能最終返回到端節(jié)點(diǎn),表示整條路徑上的節(jié)點(diǎn)接口可能都已超過了速率限制,因此應(yīng)當(dāng)在端節(jié)點(diǎn)減小請(qǐng)求速率,將C_window變?yōu)镃_window*β。
(3)收到數(shù)據(jù)包超時(shí)D_pktTimeout信號(hào)的處理:當(dāng)收到D_pktTimeout時(shí),表明當(dāng)前路徑較為擁塞,將C_window變?yōu)镃_window*γ,并根據(jù)端節(jié)點(diǎn)是否仍有獲取該內(nèi)容的需求來決定是否進(jìn)行端節(jié)點(diǎn)重傳。由于本文根據(jù)累計(jì)排隊(duì)時(shí)延已經(jīng)依概率減小窗口,因此當(dāng)收到I_pktNACK或D_pktTimeout時(shí),窗口不會(huì)進(jìn)行減半而是采用一個(gè)較大的參數(shù),其中,避免了對(duì)時(shí)延“敏感”的擁塞控制。
通過上述分析,本文提出了端節(jié)點(diǎn)擁塞控制算法,偽代碼描述如表1所示。
5 性能評(píng)價(jià)
5.1 拓?fù)溆美?/p>
本文采用的網(wǎng)絡(luò)拓?fù)錇閱♀徯屯負(fù)浜投嗦窂酵負(fù)洹♀徯屯負(fù)浣Y(jié)構(gòu)如圖3所示,含有11個(gè)節(jié)點(diǎn),兩條瓶頸鏈路,包含4個(gè)興趣請(qǐng)求者,3個(gè)路由器和4個(gè)內(nèi)容提供者;多路徑拓?fù)浣Y(jié)構(gòu)如圖4所示,含有16個(gè)節(jié)點(diǎn),包含3個(gè)興趣請(qǐng)求者,4個(gè)路由器和9個(gè)內(nèi)容提供者。實(shí)線連接線代表常規(guī)鏈路,虛線連接線代表瓶頸鏈路。
5.2 基準(zhǔn)機(jī)制
本文選取被廣泛認(rèn)可的HR-ICP以及ARMN[14]作為基準(zhǔn)算法進(jìn)行對(duì)比分析。
5.3 評(píng)價(jià)指標(biāo)
(1)平均時(shí)延興趣包從請(qǐng)求者發(fā)送的時(shí)刻記為Timesent,數(shù)據(jù)包返回的時(shí)間記為Timereturned,則從興趣包發(fā)出到收到相應(yīng)數(shù)據(jù)包的往返時(shí)延Delay為:
(13)令Delayi表示第i個(gè)興趣包的往返時(shí)延,網(wǎng)絡(luò)當(dāng)前共發(fā)送了k個(gè)包,則平均往返時(shí)延為:
(14)(2)丟包率丟包率的計(jì)算如公式(15)。其中,Numdrop為網(wǎng)絡(luò)傳輸過程中丟失的包個(gè)數(shù),Numtotal為請(qǐng)求者請(qǐng)求的興趣包總數(shù)。
(15)(3)吞吐量吞吐量定義為單位時(shí)間Timeunit內(nèi)處理的數(shù)據(jù)量Dataprocessing,
5.4 端節(jié)點(diǎn)擁塞控制算法性能評(píng)價(jià)
為了驗(yàn)證本文提出的端節(jié)點(diǎn)擁塞控制算法的性能,在兩種網(wǎng)絡(luò)拓?fù)湎拢瑢⒈疚脑O(shè)計(jì)的端節(jié)點(diǎn)擁塞控制算法(下文圖中用EBCC表示)和兩種基準(zhǔn)機(jī)制分別進(jìn)行仿真實(shí)驗(yàn)。在網(wǎng)絡(luò)初始化階段后,收集全網(wǎng)500~5000個(gè)興趣請(qǐng)求對(duì)應(yīng)的平均時(shí)延、丟包率和吞吐量三個(gè)指標(biāo)。
(1)平均時(shí)延
由圖5和圖6所示為平均時(shí)延隨請(qǐng)求數(shù)變化的情況,當(dāng)興趣請(qǐng)求個(gè)數(shù)大于1500時(shí),三種算法逐漸體現(xiàn)出不同性能。EBCC在端節(jié)點(diǎn)設(shè)置了基于多種擁塞信號(hào)的窗口調(diào)整機(jī)制,根據(jù)累積排隊(duì)時(shí)延依概率調(diào)整窗口,可以提前控制擁塞,故始終保持最低的平均時(shí)延,相比基準(zhǔn)算法減少了18.1%~27.2%。HR-ICP在其端節(jié)點(diǎn)設(shè)置基于RTT的窗口調(diào)整策略,可以在一定程度上在端節(jié)點(diǎn)控制往返時(shí)延,因此時(shí)延低于ARMN;在ARMN中,其端節(jié)點(diǎn)僅以NACK包作為擁塞信號(hào)進(jìn)行窗口調(diào)整,由于NACK包需要通過逐跳回溯才能到達(dá)端節(jié)點(diǎn),端節(jié)點(diǎn)無法及時(shí)獲取網(wǎng)絡(luò)狀態(tài)進(jìn)行速率調(diào)整,導(dǎo)致時(shí)延很大。
(2)丟包率
由圖8和圖9所示為丟包率隨請(qǐng)求數(shù)變化的情況,在兩種拓?fù)渲衼G包率隨興趣請(qǐng)求個(gè)數(shù)的變化趨勢(shì)大體相似,在興趣請(qǐng)求個(gè)數(shù)為500~2500范圍內(nèi)丟包率隨興趣請(qǐng)求個(gè)數(shù)的增大變化相對(duì)較為平穩(wěn);當(dāng)興趣請(qǐng)求個(gè)數(shù)逐漸增大后,三種擁塞控制算法逐漸體現(xiàn)出不同的性能。其中,EBCC在端節(jié)點(diǎn)設(shè)置了基于多種擁塞信號(hào)的速率調(diào)整機(jī)制,對(duì)擁塞信號(hào)的反應(yīng)更加靈敏也更加貼合網(wǎng)絡(luò)實(shí)際狀態(tài),且在端節(jié)點(diǎn)設(shè)置了基于NDN多源網(wǎng)絡(luò)場(chǎng)景的超時(shí)定時(shí)機(jī)制,因此丟包率最低,相比于基準(zhǔn)算法減少了14.8%~15.1%。HR-ICP在以RTO作為擁塞信號(hào),當(dāng)發(fā)生數(shù)據(jù)包超時(shí)時(shí),則認(rèn)為發(fā)生擁塞,并將擁塞窗口乘性減小,一定程度上控制了丟包率;ARMN在端節(jié)點(diǎn)僅以NACK包作為擁塞信號(hào)進(jìn)行窗口調(diào)整,由于NACK包需要通過逐跳回溯才能到達(dá)端節(jié)點(diǎn),端節(jié)點(diǎn)無法及時(shí)獲取網(wǎng)絡(luò)狀態(tài)進(jìn)行速率調(diào)整,導(dǎo)致丟包率最大。
(3)吞吐量
由圖10和圖11所示為吞吐量隨請(qǐng)求數(shù)變化的情況。在興趣請(qǐng)求個(gè)數(shù)較小時(shí),吞吐量隨興趣請(qǐng)求個(gè)數(shù)增加而增加的趨勢(shì)較為明顯;當(dāng)興趣請(qǐng)求個(gè)數(shù)大于2500之后,吞吐量受興趣請(qǐng)求個(gè)數(shù)影響不再明顯,不同機(jī)制逐漸體現(xiàn)出不同的性能。HR-ICP在其端節(jié)點(diǎn)采用的ICP的調(diào)整機(jī)制主要是依據(jù)RTT,當(dāng)RTT過大時(shí)會(huì)急劇減小窗口,導(dǎo)致端口隊(duì)列常處于較小的狀態(tài),最終端節(jié)點(diǎn)的吞吐量也較低;ARMN利用了多路徑轉(zhuǎn)發(fā)的思想,對(duì)NACK包重新尋找接口而不是延遲轉(zhuǎn)發(fā)保證了吞吐量;EBCC在端節(jié)點(diǎn)根據(jù)多個(gè)擁塞信號(hào)進(jìn)行窗口調(diào)整,且擁塞信號(hào)的選擇能夠較好地反映全局網(wǎng)絡(luò)狀態(tài),且由于可以根據(jù)累積排隊(duì)時(shí)延依概率對(duì)擁塞窗口進(jìn)行調(diào)整,避免時(shí)延敏感,其速率調(diào)整也能更好地利用網(wǎng)絡(luò)資源,始終保持較高的吞吐量,相比于基準(zhǔn)算法提升了13.2%~15.8%。
4 結(jié)束語
針對(duì)NDN擁塞控制中端節(jié)點(diǎn)擁塞信號(hào)獲取不準(zhǔn)確等問題,本文通過對(duì)NDN現(xiàn)有的擁塞控制算法進(jìn)行分析,提出了一種基于多源的端節(jié)點(diǎn)擁塞控制算法EBCC。該算法考慮并設(shè)計(jì)不同的擁塞信號(hào),可以依據(jù)不同的擁塞信號(hào)進(jìn)行端節(jié)點(diǎn)速率調(diào)整,并在端節(jié)點(diǎn)對(duì)超時(shí)進(jìn)行重新設(shè)定,避免時(shí)延敏感,保證吞吐量。在下一步研究中,將分析具體緩存策略對(duì)擁塞控制的影響,并將NDN中間節(jié)點(diǎn)的轉(zhuǎn)發(fā)、緩存與擁塞控制三者綜合考慮,使擁塞控制更為有效。