黃俊琳,雷 凱,汪 漪
(1.北京大學(xué)深圳研究生院 互聯(lián)網(wǎng)研發(fā)中心,廣東 深圳 518055;2.南方科技大學(xué),廣東 深圳 518055)
命名數(shù)據(jù)網(wǎng)絡(luò)(named data networking, NDN)[1]關(guān)注于內(nèi)容分發(fā)和獲取,是信息中心網(wǎng)絡(luò)(information centric networking, ICN)[2]的一個(gè)被廣泛關(guān)注的體系構(gòu)架[3]。
無(wú)論是傳統(tǒng)的TCP/IP網(wǎng)絡(luò)還是命名數(shù)據(jù)網(wǎng)絡(luò),擁塞都是不可避免的。網(wǎng)絡(luò)擁塞的發(fā)生,根源在于用戶(hù)對(duì)網(wǎng)絡(luò)資源的需求大于網(wǎng)絡(luò)自身所能提供的能力。并且擁塞發(fā)生一般會(huì)直接導(dǎo)致網(wǎng)絡(luò)出現(xiàn)數(shù)據(jù)包丟失、傳輸時(shí)延增加、網(wǎng)絡(luò)吞吐量下降等現(xiàn)象,如果沒(méi)有有效的擁塞控制方法進(jìn)行調(diào)控,嚴(yán)重的時(shí)候甚至?xí)?dǎo)致網(wǎng)絡(luò)崩潰。為了提高網(wǎng)絡(luò)傳輸?shù)男阅?,需要使用擁塞控制算法?lái)解決有限的網(wǎng)絡(luò)資源的分配問(wèn)題。在不同的場(chǎng)景下,擁塞控制的優(yōu)化目標(biāo)存在不同,現(xiàn)有的NDN擁塞控制算法大多都將提高鏈路吞吐量作為主要的優(yōu)化目標(biāo),但是,隨著5G無(wú)線(xiàn)通信技術(shù)的快速發(fā)展以及自動(dòng)駕駛、虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)和直播等技術(shù)與應(yīng)用的出現(xiàn),如何在高通量的網(wǎng)絡(luò)下充分利用帶寬以及保障低延時(shí)傳輸成為傳輸控制的一個(gè)新目標(biāo)。傳統(tǒng)的加性增乘性減(additive increase multiplicative decrease,AIMD)的窗口調(diào)節(jié)思想不再適用于高速網(wǎng)絡(luò),保守的線(xiàn)性增加和激進(jìn)的乘法減小窗口的方法使得鏈路帶寬利用率很低,抑制了NDN在高通量網(wǎng)絡(luò)下的發(fā)展,有必要針對(duì)這一特定的場(chǎng)景研究相應(yīng)的NDN擁塞控制算法。
要設(shè)計(jì)出適合NDN的擁塞控制算法,必須充分考慮NDN在數(shù)據(jù)傳輸上的新的特性[4]。
1)數(shù)據(jù)傳輸由接收端驅(qū)動(dòng)。消費(fèi)者通過(guò)向網(wǎng)絡(luò)發(fā)送Interest包去請(qǐng)求內(nèi)容,中間節(jié)點(diǎn)通過(guò)內(nèi)容緩存(content store, CS)、待處理請(qǐng)求表(pending interest table, PIT)以及轉(zhuǎn)發(fā)信息表(forwarding information base, FIB)對(duì)Interest進(jìn)行處理和轉(zhuǎn)發(fā),最后由擁有所請(qǐng)求數(shù)據(jù)的節(jié)點(diǎn)返回對(duì)應(yīng)的Data包。接收端驅(qū)動(dòng)的傳輸模式,是在接收端實(shí)現(xiàn)流量控制以及擁塞控制的基礎(chǔ)。
2)Interest包和Data包之間是一一對(duì)應(yīng)的關(guān)系。一個(gè)Interest包只能取回一個(gè)Data包,并且對(duì)應(yīng)的Data包沿著Interest包到達(dá)的路徑原路返回。這種關(guān)系是在NDN中實(shí)現(xiàn)逐跳流平衡的基礎(chǔ)。
3)多數(shù)據(jù)源。NDN的傳輸是無(wú)連接的,并且內(nèi)容可以緩存在網(wǎng)絡(luò)的內(nèi)部,因此,消費(fèi)者能夠從不同的內(nèi)容源(生產(chǎn)者或者緩存了對(duì)應(yīng)內(nèi)容的中間節(jié)點(diǎn))獲取數(shù)據(jù)。
4)多路徑傳輸。NDN的架構(gòu)天然支持多路徑轉(zhuǎn)發(fā)。在NDN中,路由節(jié)點(diǎn)能夠通過(guò)Interest包中的內(nèi)容名和隨機(jī)數(shù)識(shí)別并丟棄發(fā)生環(huán)回的包,同時(shí),因?yàn)镈ata包是沿著Interest包傳輸?shù)脑窂椒祷氐?,所以,NDN中不會(huì)出現(xiàn)Data包環(huán)回的現(xiàn)象。而傳統(tǒng)的TCP/IP網(wǎng)絡(luò)通常使用確定的最優(yōu)路徑來(lái)傳輸以防止數(shù)據(jù)包發(fā)生環(huán)回,這使得TCP中的多路徑是基于固定的路徑。因?yàn)镹DN的路由和轉(zhuǎn)發(fā)是相互分離的,路由節(jié)點(diǎn)能夠根據(jù)數(shù)據(jù)面的表現(xiàn)來(lái)進(jìn)行多路徑轉(zhuǎn)發(fā),所以能實(shí)現(xiàn)比TCP/IP更靈活的多路徑傳輸。
盡管NDN在傳輸模式上與TCP/IP存在區(qū)別,但是2種架構(gòu)下?lián)砣刂频谋举|(zhì)都是對(duì)有限的網(wǎng)絡(luò)資源進(jìn)行調(diào)度以提高網(wǎng)絡(luò)的傳輸性能,關(guān)注的2個(gè)基本問(wèn)題都是如何預(yù)防擁塞的發(fā)生以及如何快速感知和響應(yīng)擁塞。在實(shí)現(xiàn)上兩者都是基于反饋信息進(jìn)行的閉環(huán)控制,并且端節(jié)點(diǎn)以及中間路由節(jié)點(diǎn)都是擁塞控制的參與者,例如,兩者都可以使用基于窗口的端到端的速率調(diào)節(jié)方法、中間節(jié)點(diǎn)都可以通過(guò)隊(duì)列管理參與到擁塞控制中。這些共性使得TCP的擁塞控制算法能夠被引入到NDN中,但是需要針對(duì)NDN的特性對(duì)算法進(jìn)行調(diào)整。
關(guān)注于如何在有一定的丟包率的網(wǎng)絡(luò)鏈路上充分利用帶寬以及如何降低網(wǎng)絡(luò)鏈路上緩存的占用率、減小傳輸延遲這2個(gè)問(wèn)題,本文分析了基于丟包的NDN擁塞控制方法的不足之處,在基于窗口的端到端擁塞控制算法的基礎(chǔ)上,借鑒谷歌最新提出的TCP擁塞控制思想[5],提出基于瓶頸帶寬以及往返時(shí)延(bottleneck bandwidth and round-trip time,BBR)的NDN擁塞控制算法,并在ndnSIM實(shí)現(xiàn)了所提出的基于BBR的NDN擁塞控制算法。通過(guò)已有的ICP(interest control protocol)[6]擁塞控制算法進(jìn)行對(duì)比,驗(yàn)證了所提出的算法的性能。
TCP擁塞控制的成果為NDN擁塞控制的研究提供了不少的思路?,F(xiàn)有的很多的NDN擁塞控制算法都還使用TCP的基于丟包或者基于時(shí)延的思路。TCP中的AIMD的窗口調(diào)節(jié)機(jī)制也在NDN得到廣泛的應(yīng)用。但是,NDN和TCP在數(shù)據(jù)傳輸模式的差異決定了兩者在擁塞控制的具體方法上必然存在差異。
Carofiglio等[6]提出的ICP擁塞控制算法是一種接收端驅(qū)動(dòng)的,基于窗口的端到端Interest包控制協(xié)議,窗口調(diào)節(jié)遵循AIMD的原則。這種方法對(duì)擁塞的判斷是基于丟包的,即根據(jù)超時(shí)重傳閾值(retransmission timeout, RTO)來(lái)判斷包傳輸是否發(fā)生超時(shí),以確定是否發(fā)生擁塞。ITCP(information centric transport protocol)[7]是一個(gè)與ICP類(lèi)似的基于窗口的接收端驅(qū)動(dòng)的傳輸協(xié)議,實(shí)現(xiàn)了與TCP相類(lèi)似的慢啟動(dòng)、擁塞避免、快重傳以及快恢復(fù)的機(jī)制。以上2個(gè)NDN擁塞控制算法是針對(duì)單數(shù)據(jù)源的場(chǎng)景的,沒(méi)有考慮到NDN能進(jìn)行靈活的多路徑傳輸?shù)奶攸c(diǎn)。Saino[8]提出了一種維護(hù)多個(gè)擁塞窗口以及RTO值的NDN擁塞控制算法,以適應(yīng)NDN多數(shù)據(jù)源的特點(diǎn)。Carofiglio[9]提出了一個(gè)多路徑擁塞控制(remote adaptive active queue management,RAAQM)算法,該方法為每條路徑設(shè)置一個(gè)RTO計(jì)時(shí)器用于判斷超時(shí)丟包,不同路徑的區(qū)分依賴(lài)于每個(gè)節(jié)點(diǎn)為返回的Data包附加的節(jié)點(diǎn)標(biāo)識(shí)符。
雖然基于丟包的擁塞控制機(jī)制在NDN中仍被廣泛使用,但是它有2個(gè)明顯的缺點(diǎn)。
1)基于丟包的擁塞控制算法通過(guò)監(jiān)控?cái)?shù)據(jù)包是否發(fā)生超時(shí)來(lái)判斷是否發(fā)生丟包以及擁塞,因此,不能區(qū)分擁塞引起的丟包和傳輸錯(cuò)誤引起的丟包。如果丟包是由傳輸錯(cuò)誤引起的,基于丟包的擁塞控制算法所采取的“乘性減小”窗口調(diào)節(jié)方法將帶來(lái)不必要的傳輸窗口的大幅度減小,從而降低了網(wǎng)絡(luò)帶寬的利用率。
2)中間節(jié)點(diǎn)的緩存隊(duì)列可用于吸收網(wǎng)絡(luò)中數(shù)據(jù)流量的波動(dòng),減少丟包的發(fā)生。消費(fèi)者采用基于丟包的擁塞控制算法時(shí),受限于擁塞感知的方法和時(shí)機(jī),為了能夠充分探測(cè)網(wǎng)絡(luò)的可用帶寬,會(huì)向網(wǎng)絡(luò)注入過(guò)量的數(shù)據(jù)請(qǐng)求包。這導(dǎo)致了中間節(jié)點(diǎn)的緩存空間的高占用率,增加了數(shù)據(jù)包在網(wǎng)絡(luò)中的排隊(duì)時(shí)延。除此之外,緩存隊(duì)列過(guò)滿(mǎn)的現(xiàn)象,降低了節(jié)點(diǎn)應(yīng)對(duì)突發(fā)流量的能力,在共享該節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā)的數(shù)據(jù)流突然增多時(shí),緩存會(huì)被迅速填滿(mǎn)而發(fā)生丟包。因此,基于丟包的擁塞控制機(jī)制雖然能夠保證網(wǎng)絡(luò)以瓶頸帶寬進(jìn)行數(shù)據(jù)傳輸,但是卻是以高時(shí)延以及頻繁丟包為代價(jià)的。
因?yàn)榛趤G包的擁塞感知方式存在滯后性并且會(huì)導(dǎo)致中間節(jié)點(diǎn)的緩存隊(duì)列過(guò)滿(mǎn),所以一些已有的研究工作對(duì)擁塞感知方式進(jìn)行改進(jìn)。Schneider[10]提出一種路由器通過(guò)包排隊(duì)時(shí)間以及局部丟包檢測(cè)來(lái)發(fā)現(xiàn)擁塞、通過(guò)顯式標(biāo)記包來(lái)通知請(qǐng)求端網(wǎng)絡(luò)發(fā)生擁塞、請(qǐng)求端在收到擁塞的信號(hào)后調(diào)節(jié)各個(gè)接口的轉(zhuǎn)發(fā)比而將原來(lái)的擁塞路徑的流量分?jǐn)偟狡渌窂降亩嗦窂絅DN擁塞控制算法。Rozhnova[11]提出了一種逐跳控制的Interest包速率控制算法。該算法根據(jù)隊(duì)列占用情況和可用資源調(diào)整Interest的轉(zhuǎn)發(fā)速率,當(dāng)中間節(jié)點(diǎn)由于擁塞無(wú)法向上游轉(zhuǎn)發(fā)Interest時(shí),會(huì)通過(guò)NACK通知下游的節(jié)點(diǎn)。此外,該算法還會(huì)對(duì)轉(zhuǎn)發(fā)接口進(jìn)行標(biāo)記以及排序以進(jìn)行多路徑適應(yīng)性轉(zhuǎn)發(fā)。
如果不考慮中間節(jié)點(diǎn)的內(nèi)容緩存以及多路徑傳輸?shù)挠绊懀琋DN的數(shù)據(jù)傳輸過(guò)程中往返時(shí)延(round-trip time,RTT)、傳輸速率與等待接收的Data包的數(shù)據(jù)量的關(guān)系模型與Leonard Kleinrock提出的模型是基本相符的,本文基于此模型分析NDN中擁塞控制的最佳工作點(diǎn)。
往返時(shí)延、傳輸速率與已發(fā)送但未確認(rèn)的包數(shù)的關(guān)系如圖1所示,基于丟包的擁塞控制機(jī)制使得整個(gè)網(wǎng)絡(luò)傾向于工作在帶寬限制區(qū)域最右側(cè)的點(diǎn),雖然實(shí)現(xiàn)了以瓶頸帶寬進(jìn)行數(shù)據(jù)傳輸,但是緩存空間占用率過(guò)高,導(dǎo)致用戶(hù)經(jīng)歷較長(zhǎng)的傳輸延遲以及頻繁丟包。
在Leonard Kleinrock提出的模型中,使網(wǎng)絡(luò)工作在帶寬限制區(qū)域最左側(cè)的點(diǎn)要優(yōu)于帶寬限制區(qū)域最右側(cè)的點(diǎn)。網(wǎng)絡(luò)工作在Kleinrock最優(yōu)工作點(diǎn)能夠?qū)崿F(xiàn)最大的傳輸速率以及最小的傳輸時(shí)延。
基于丟包的NDN擁塞控制方法僅依據(jù)返回的Data包以及計(jì)算得到的往返時(shí)延來(lái)判斷網(wǎng)絡(luò)的擁塞狀態(tài)。然而,僅憑這2個(gè)信息無(wú)法量化網(wǎng)絡(luò)當(dāng)前的可用帶寬。為了能夠充分利用網(wǎng)絡(luò)的可用帶寬,消費(fèi)者只能不斷地去增加傳輸?shù)乃俾手钡桨l(fā)生超時(shí)丟包。本文從谷歌提出的TCP擁塞控制算法[5]受到啟發(fā),在所提出的算法中使用即時(shí)帶寬以及往返時(shí)延這2個(gè)量來(lái)量化可用帶寬以及描述網(wǎng)絡(luò)的狀態(tài),從而實(shí)現(xiàn)更準(zhǔn)確的控制和調(diào)節(jié),避免接收端為了充分探測(cè)可用帶寬而向網(wǎng)絡(luò)注入過(guò)量的請(qǐng)求包。同時(shí),因?yàn)閾砣皇莵G包發(fā)生的唯一的原因,傳輸錯(cuò)誤也是導(dǎo)致數(shù)據(jù)包丟失的一個(gè)因素。所以,在無(wú)法區(qū)分這2種丟包的情況下,使用丟包事件作為擁塞的標(biāo)志顯然是不合理的,本算法不再以丟包作為擁塞的標(biāo)記,而更加關(guān)注于網(wǎng)絡(luò)的瓶頸帶寬、物理鏈路延遲以及由這兩者決定的傳輸鏈路的容量。
基于BBR的NDN擁塞控制算法,核心是讓網(wǎng)絡(luò)工作在Kleinrock最優(yōu)工作點(diǎn)的附近,控制用戶(hù)注入網(wǎng)絡(luò)的流量,使之匹配網(wǎng)絡(luò)鏈路的承載能力,在確保數(shù)據(jù)以最大的速率傳輸?shù)耐瑫r(shí)最小化中間節(jié)點(diǎn)的隊(duì)列長(zhǎng)度,從而最小化傳輸?shù)耐禃r(shí)延。因?yàn)镹DN中數(shù)據(jù)傳輸是由接收端驅(qū)動(dòng),并且一個(gè)Interest包最多只能取回一個(gè)Data包,所以,基于BBR的NDN擁塞控制算法通過(guò)在接收端控制Interest包的發(fā)送速率以及最大發(fā)送窗口來(lái)控制注入網(wǎng)絡(luò)中數(shù)據(jù)流量。這2個(gè)參數(shù)的計(jì)算依賴(lài)于估計(jì)得到的瓶頸帶寬、物理鏈路延遲的值以及由當(dāng)前傳輸所處的狀態(tài)決定的速率增益、窗口增益。整體設(shè)計(jì)思路如圖2所示。
實(shí)現(xiàn)讓網(wǎng)絡(luò)工作在Kleinrock最優(yōu)工作點(diǎn),關(guān)鍵在于如何確定鏈路瓶頸帶寬以及物理鏈路延遲。然而,瓶頸帶寬和物理鏈路延遲是無(wú)法同時(shí)測(cè)量的。要測(cè)量瓶頸帶寬,就必須保證網(wǎng)絡(luò)鏈路帶寬被充分利用,中間節(jié)點(diǎn)的緩存空間中存在一定數(shù)量的數(shù)據(jù)包,此時(shí),由于排隊(duì)時(shí)延的存在,傳輸往返時(shí)延偏大;要測(cè)量物理鏈路延遲,就必須保證中間節(jié)點(diǎn)的緩存空間無(wú)隊(duì)列,此時(shí),網(wǎng)絡(luò)中的流量不足以占滿(mǎn)鏈路帶寬,測(cè)得即時(shí)帶寬偏小。
由于瓶頸帶寬和物理鏈路延遲無(wú)法被同時(shí)測(cè)量,算法采用分時(shí)測(cè)量的方法,在應(yīng)用限制區(qū)域測(cè)量物理鏈路延遲的值,在帶寬限制區(qū)域測(cè)量瓶頸帶寬的值。圖1中,在傳輸?shù)倪^(guò)程中,瓶頸帶寬是即時(shí)帶寬的最大值,物理鏈路延遲是往返時(shí)延的最小值,所以,本算法使用一個(gè)固定時(shí)間窗口內(nèi)的即時(shí)帶寬的最大值和往返時(shí)延的最小值作為它們的估計(jì)值。
針對(duì)數(shù)據(jù)傳輸在不同的階段的特點(diǎn),本算法設(shè)置了4個(gè)不同的狀態(tài),狀態(tài)之間的轉(zhuǎn)換由網(wǎng)絡(luò)反饋的信息進(jìn)行控制,以此來(lái)實(shí)現(xiàn)自主的調(diào)速機(jī)制——主動(dòng)調(diào)節(jié)窗口以及周期性地去探測(cè)是否有更多的可用帶寬等功能。這4個(gè)狀態(tài)分別是快速探索瓶頸帶寬(啟動(dòng)狀態(tài))、消耗中間節(jié)點(diǎn)長(zhǎng)隊(duì)列的低速發(fā)送(消耗隊(duì)列狀態(tài))、周期性探測(cè)可用帶寬的穩(wěn)定(周期探測(cè)狀態(tài))、維持低發(fā)送窗口以確定最小往返時(shí)延(時(shí)延更新?tīng)顟B(tài)),狀態(tài)轉(zhuǎn)移圖如圖3所示。
圖3 算法狀態(tài)轉(zhuǎn)移示意圖Fig.3 State transition diagram of the algorithm
啟動(dòng)狀態(tài)是傳輸?shù)某跏紶顟B(tài),類(lèi)似于TCP擁塞控制中的“慢啟動(dòng)”階段,目的是在一個(gè)較短的時(shí)間內(nèi)使數(shù)據(jù)充滿(mǎn)傳輸鏈路以探測(cè)到瓶頸帶寬。在該狀態(tài)下,通過(guò)查找所測(cè)量的瓶頸帶寬的平臺(tái)期來(lái)確定傳輸鏈路是否被充滿(mǎn):如果連續(xù)在3個(gè)RTT周期內(nèi)所測(cè)量的最大即時(shí)帶寬只有很小的增長(zhǎng),可以認(rèn)為已經(jīng)到達(dá)平臺(tái)期,將此時(shí)的即時(shí)帶寬值視為瓶頸帶寬。因?yàn)槭窃谝粋€(gè)時(shí)間窗口內(nèi)確定傳輸速率是否達(dá)到瓶頸帶寬的,所以在探測(cè)到瓶頸帶寬后會(huì)形成一個(gè)較長(zhǎng)的隊(duì)列。
隊(duì)列消耗狀態(tài)緊跟在啟動(dòng)狀態(tài)之后,目的是消除在探測(cè)瓶頸帶寬的過(guò)程中所形成的長(zhǎng)隊(duì)列,使傳輸往返時(shí)延降低到接近物理鏈路延遲,確保網(wǎng)絡(luò)能夠穩(wěn)定在Kleinrock最佳工作點(diǎn)附近。當(dāng)請(qǐng)求的數(shù)據(jù)量小于或者等于網(wǎng)絡(luò)鏈路帶寬時(shí)延積時(shí),中間節(jié)點(diǎn)緩存的隊(duì)列被完全消耗,且傳輸鏈路保持充滿(mǎn),接收端將從隊(duì)列消耗狀態(tài)切換到周期探測(cè)狀態(tài)。
周期探測(cè)是一個(gè)穩(wěn)定狀態(tài),傳輸過(guò)程中絕大部分時(shí)間會(huì)處于這個(gè)狀態(tài)。在進(jìn)入周期探測(cè)狀態(tài)時(shí),算法已經(jīng)確定了當(dāng)前的瓶頸帶寬以及物理鏈路延遲,并以此來(lái)控制Interest包的發(fā)送速率以及窗口。此外,周期探測(cè)狀態(tài)下除了進(jìn)行穩(wěn)定的傳輸之外,還有一個(gè)重要功能是周期性地去探測(cè)是否有更多的可用帶寬。
為了實(shí)現(xiàn)主動(dòng)探測(cè),本算法使用了一個(gè)簡(jiǎn)單的序列探測(cè)機(jī)制。在每一個(gè)探測(cè)周期進(jìn)行一次主動(dòng)探測(cè),每一個(gè)周期分為8個(gè)階段,每個(gè)階段持續(xù)的時(shí)間為測(cè)量得到的最小往返時(shí)延。階段之間的最主要的區(qū)別是速率增益可能會(huì)不同。8個(gè)階段分別對(duì)應(yīng)于下面8個(gè)速率增益:a,2-a,1,1,1,1,1,1,其中,a為常數(shù)。整個(gè)探測(cè)周期的平均增益約為1,從而使得一個(gè)周期內(nèi)的平均發(fā)送速率約等于可用帶寬,實(shí)現(xiàn)高帶寬利用率的情況下維持一個(gè)短的隊(duì)列。a的取值不能過(guò)大或過(guò)小,a取值過(guò)大時(shí),穩(wěn)定探測(cè)階段的往返時(shí)延的波動(dòng)幅度會(huì)較大;a取值過(guò)小時(shí),探測(cè)可用帶寬的時(shí)間會(huì)較長(zhǎng),本文在使用不同的a進(jìn)行實(shí)驗(yàn)后選取a=1.25。
在周期探測(cè)狀態(tài)下,狀態(tài)機(jī)不會(huì)主動(dòng)向其他狀態(tài)轉(zhuǎn)移,但這不意味著狀態(tài)機(jī)停留在周期探測(cè)狀態(tài)直到傳輸結(jié)束。在非時(shí)延更新?tīng)顟B(tài)下,狀態(tài)機(jī)內(nèi)部會(huì)對(duì)估計(jì)的物理鏈路延遲進(jìn)行監(jiān)視。狀態(tài)機(jī)發(fā)現(xiàn)該值長(zhǎng)期沒(méi)有被更新時(shí),會(huì)切換到時(shí)延更新?tīng)顟B(tài)。在該狀態(tài)下,接收端使用一個(gè)小速率增益去消耗中間節(jié)點(diǎn)的緩存隊(duì)列,直到Interest包的發(fā)送窗口被限制在一個(gè)較小的值,并保持一段時(shí)間,確保探測(cè)到當(dāng)前的物理鏈路延遲的準(zhǔn)確值。
本文在基于NS-3的NDN通用仿真平臺(tái)ndnSIM[12]中實(shí)現(xiàn)了所提出的基于瓶頸帶寬和往返時(shí)延的NDN擁塞控制方法,并使用不同的拓?fù)鋵?duì)該算法進(jìn)行評(píng)估,并與ICP擁塞控制算法進(jìn)行對(duì)比,評(píng)價(jià)所使用的指標(biāo)主要有以下4點(diǎn)。
1)網(wǎng)絡(luò)吞吐量。網(wǎng)絡(luò)吞吐量是指網(wǎng)絡(luò)在單位時(shí)間內(nèi)成功傳輸?shù)臄?shù)據(jù)的數(shù)量,是對(duì)網(wǎng)絡(luò)鏈路帶寬利用的一個(gè)重要的指標(biāo)。一個(gè)好的擁塞控制算法能夠在最大化吞吐量的同時(shí)使傳輸時(shí)延最小化。
2)傳輸時(shí)延。傳輸時(shí)延是指從Interest包進(jìn)入網(wǎng)絡(luò)到對(duì)應(yīng)的Data包返回到接收端之間的時(shí)間間隔,一般由物理鏈路延遲、數(shù)據(jù)包在中間節(jié)點(diǎn)進(jìn)行處理(路由和轉(zhuǎn)發(fā))產(chǎn)生的時(shí)延以及在中間節(jié)點(diǎn)排隊(duì)所產(chǎn)生的時(shí)延組成。其中,數(shù)據(jù)包在中間節(jié)點(diǎn)緩存中的排隊(duì)時(shí)延對(duì)傳輸時(shí)延的影響最為明顯。
3)路由節(jié)點(diǎn)隊(duì)列長(zhǎng)度。路由節(jié)點(diǎn)隊(duì)列長(zhǎng)度決定數(shù)據(jù)包在中間節(jié)點(diǎn)的排隊(duì)時(shí)間。
4)收斂時(shí)間。收斂時(shí)間指的是瓶頸帶寬鏈路的吞吐量收斂到瓶頸帶寬所需要的時(shí)間,這一指標(biāo)能夠反映出高帶寬網(wǎng)絡(luò)下的小數(shù)據(jù)量傳輸?shù)膸捓眯省?/p>
實(shí)驗(yàn)的基本設(shè)置如下。
1)實(shí)驗(yàn)拓?fù)湟约版溌穮?shù)如圖4所示,圖4a中,消費(fèi)者Ci向生產(chǎn)者Pi請(qǐng)求數(shù)據(jù),形成4條數(shù)據(jù)流。選取2條流用于模擬背景流量。在模擬背景流量時(shí),C4以每秒800個(gè)Interest包的速率請(qǐng)求數(shù)據(jù),持續(xù)150 s;C3以每秒500個(gè)Interest包的速率請(qǐng)求數(shù)據(jù),并且在100 s后停止請(qǐng)求,模擬變化的背景流量;
圖4 網(wǎng)絡(luò)拓?fù)銯ig.4 Network topology
2)Interest包的大小固定為37 Byte,Data包的大小固定為1 024 Byte;
3)網(wǎng)絡(luò)中間節(jié)點(diǎn)不設(shè)置內(nèi)容緩存。
實(shí)驗(yàn)結(jié)果如圖5和圖6所示。使用本算法,總流量迅速收斂到瓶頸帶寬,并且往返時(shí)延穩(wěn)定在物理鏈路延遲附近,表明傳輸基本收斂到Kleinrock最優(yōu)工作點(diǎn)附近。
圖5 存在背景流量場(chǎng)景下BBR-NDN與ICP-NDN吞吐量對(duì)比Fig.5 Comparison of throughputs between BBR-NDN and ICP-NDN under scenery with background traffic
圖5表明,采用本算法,瓶頸鏈路的吞吐量收斂到瓶頸帶寬所用的時(shí)間要明顯小于ICP算法。并且在公平分享瓶頸帶寬上,使用本算法時(shí),數(shù)據(jù)流1和數(shù)據(jù)流2對(duì)應(yīng)的曲線(xiàn)基本上是重合的,而使用ICP算法時(shí),數(shù)據(jù)流1和數(shù)據(jù)流2在Data包的接收速率上差別明顯,尤其是在背景流量突然減小(100 s時(shí),模擬背景流量的其中一條數(shù)據(jù)流突然停止請(qǐng)求數(shù)據(jù)),重新分配帶寬時(shí),不公平性進(jìn)一步加劇,在圖5中表現(xiàn)為數(shù)據(jù)流2的傳輸速率約為數(shù)據(jù)流1的2倍,差距進(jìn)一步被拉大。
圖6表明,本算法的傳輸往返時(shí)延一直很好地被穩(wěn)定在稍高于理想往返時(shí)延處;使用ICP算法時(shí),由于瓶頸鏈路的緩存長(zhǎng)期處于高占用率的狀態(tài),傳輸往返時(shí)延明顯大于理想往返時(shí)延。因此,基于BBR的NDN擁塞控制算法在保障低時(shí)延傳輸上明顯優(yōu)于ICP算法。它克服了基于丟包的擁塞控制算法為了充分利用瓶頸帶寬而過(guò)度占用緩存、傳輸時(shí)延較長(zhǎng)的缺點(diǎn)。
圖6 存在背景流量場(chǎng)景下BBR-NDN與ICP-NDN傳輸往返時(shí)延與隊(duì)列長(zhǎng)度對(duì)比Fig.6 Comparison of round-trip time and queue length between BBR-NDN and ICP-NDN under scenery with background traffic
更換其他往返時(shí)延重復(fù)實(shí)驗(yàn),算法的吞吐量以及往返時(shí)延的變化曲線(xiàn)的形狀沒(méi)有很大的變化,所以不再一一繪制其他曲線(xiàn),只將結(jié)果展示在表1中。
表1表明,使用本算法時(shí),實(shí)際往返時(shí)延與理想往返時(shí)延的比值都只稍大于1。ICP算法在充分利用帶寬的同時(shí)對(duì)低時(shí)延的保障能力明顯不如本算法。
基于BBR的NDN擁塞控制算法在高帶寬下瓶頸鏈路吞吐量收斂到瓶頸帶寬所需的時(shí)間較短,且基本不隨往返時(shí)延的變化而變化,而ICP算法在同樣條件下的收斂時(shí)間則隨著往返時(shí)延的增大而明顯增大,并且都大于本算法。這個(gè)結(jié)果表明,基于BBR的NDN擁塞控制算法在快速收斂到瓶頸帶寬上明顯優(yōu)于ICP算法。
表1 BBR-NDN與ICP-NDN在平均往返時(shí)延以及收斂時(shí)間上對(duì)比結(jié)果Tab.1 Comparison of average round-trip time and convergence time between BBR-NDN and ICP-NDN
多瓶頸鏈路實(shí)驗(yàn)基本設(shè)置如下。
1)實(shí)驗(yàn)拓?fù)湟约版溌穮?shù)如圖4b所示,4條數(shù)據(jù)流的往返時(shí)延分別為240 ms,250 ms,250 ms,260 ms;
2)Interest包的大小固定為37 Byte,Data包的大小固定為1 024 Byte;
3)網(wǎng)絡(luò)中間節(jié)點(diǎn)不設(shè)置內(nèi)容緩存。
多瓶頸鏈路拓?fù)湎碌膶?shí)驗(yàn)結(jié)果如圖7所示。盡管網(wǎng)絡(luò)中的數(shù)據(jù)流的往返時(shí)延存在差異,但是本算法仍能保證瓶頸鏈路的吞吐量能夠快速收斂到瓶頸帶寬,往返時(shí)延也能夠穩(wěn)定在稍高于理想往返時(shí)延附近。并且,在共享瓶頸鏈路帶寬時(shí),各流的傳輸速率在一定的范圍內(nèi)波動(dòng),但在平均傳輸速率上,流與流之間是基本公平的傳輸?shù)摹R虼?,在增加網(wǎng)絡(luò)拓?fù)鋸?fù)雜度以及瓶頸鏈路的數(shù)量時(shí),本算法仍能使數(shù)據(jù)流快速收斂到公平地共享帶寬的狀態(tài),并能保障低時(shí)延傳輸。
基于BBR的NDN擁塞控制算法的核心策略是保證注入網(wǎng)絡(luò)的流量在速率和總量上面能夠匹配傳輸鏈路的能力。算法通過(guò)在接收端使用瓶頸帶寬以及物理傳輸延遲這2個(gè)參數(shù)來(lái)描述傳輸鏈路的性能,形成以即時(shí)帶寬和往返時(shí)延作為反饋信息的閉環(huán)控制方式,在不同狀態(tài)下匹配不同的速率增益以及窗口增益,用計(jì)算得到的數(shù)據(jù)傳輸速率以及發(fā)送窗口來(lái)控制Interest包的發(fā)送速率,從而控制返回的Data包的速率,實(shí)現(xiàn)在充分利用網(wǎng)絡(luò)鏈路帶寬的同時(shí)保障低時(shí)延傳輸。
本算法和和傳統(tǒng)的基于丟包的NDN擁塞控制算法相比有以下特點(diǎn)。首先,與傳統(tǒng)的基于丟包的擁塞控制算法的由丟包事件觸發(fā)的被動(dòng)擁塞控制不同,本算法傾向于主動(dòng)地發(fā)現(xiàn)擁塞以及可用帶寬;其次,擁塞控制的反饋環(huán)傳遞的信息由即時(shí)帶寬以及往返時(shí)延組成,采用窗口和速率雙重控制的方式,兩者相互協(xié)調(diào),前者控制消費(fèi)者注入網(wǎng)絡(luò)的數(shù)據(jù)總量,后者控制信息流注入網(wǎng)絡(luò)的速率;此外,本算法根據(jù)估算的發(fā)送速率以及所請(qǐng)求內(nèi)容的大小來(lái)確定Interest包之間的發(fā)送間隔,實(shí)現(xiàn)了平滑的數(shù)據(jù)傳輸,減少了網(wǎng)絡(luò)中的突發(fā)流量;最后,在不考慮網(wǎng)絡(luò)內(nèi)緩存以及多路徑傳輸?shù)那闆r下,本算法能使網(wǎng)絡(luò)收斂到Kleinrock模型的最優(yōu)工作點(diǎn)附近,該工作點(diǎn)能保證網(wǎng)絡(luò)以瓶頸帶寬進(jìn)行傳輸?shù)耐瑫r(shí),減小中間路由節(jié)點(diǎn)的隊(duì)列長(zhǎng)度以及數(shù)據(jù)包所經(jīng)歷的傳輸時(shí)延。
圖7 BBR-NDN在多瓶頸鏈路拓?fù)湎碌膫鬏斝阅蹻ig.7 Transmission performance of BBR-NDN under multi-bottleneck link topology
本算法是在接收端實(shí)現(xiàn)的,沒(méi)有引入中間節(jié)點(diǎn)的控制,然而中間節(jié)點(diǎn)位于網(wǎng)絡(luò)內(nèi)部,離擁塞的位置更近,能夠更快地感知擁塞的存在以及預(yù)見(jiàn)擁塞的發(fā)生,對(duì)擁塞的調(diào)控更為迅速。同時(shí),NDN在架構(gòu)能夠很好地支持逐跳的控制方式。因此,在當(dāng)前的擁塞控制算法中引入逐跳控制和多路徑轉(zhuǎn)發(fā),實(shí)現(xiàn)快速反饋以及將擁塞鏈路的流量分流到其他可用的路徑上,是一個(gè)值的深入研究的地方。
由于路由器對(duì)Data包的緩存以及多路徑傳輸?shù)拇嬖?,端主機(jī)測(cè)量的往返時(shí)延存在多樣性,難以被準(zhǔn)確地估計(jì)[13]。由于依賴(lài)于測(cè)量的往返時(shí)延來(lái)估計(jì)鏈路的物理鏈路延遲,所以考慮緩存以及多路徑傳輸?shù)那闆r下,本算法在估計(jì)物理鏈路延遲的值時(shí)會(huì)存在較大的誤差。因此,針對(duì)緩存以及多路徑傳輸?shù)奶匦詫?duì)算法進(jìn)行優(yōu)化也是未來(lái)的一個(gè)研究點(diǎn)。
[1] ZHANG L,AFANASYEV A,BURKE J,et al.Named data networking[J].SIGCOMM Comput Commun Rev, 2014, 44(3): 66-73
[2] XYLOMENOS G,VERVERIDIS C,SIRIS V,et al.A Survey of Information-Centric Networking Research[J].IEEE Communications Surveys & Tutorials,2014, 16(2):1024-1049.
[3] KATO T, BANDAI M.Congestion control avoiding excessive rate reduction in named data network[C]//Consumer Communications & NETWORKING Conference.New York:IEEE Press, 2017:108-113.
[4] REN Y,LI J,SHI S, et al.Congestion control in named data networking-A survey[J]. Computer Communications, 2016(86):1-11.
[5] CARDWELL N,CHENG Y,GUNN C S, et al.BBR: Congestion-Based Congestion Control[J].Queue,2016, 14(5): 20-53.
[6] CAROFIGLIO G, GALLO M, MUSCARIELLO L.ICP: Design and evaluation of an Interest control protocol for content-centric networking[C]//Computer Communications Workshops. New York:IEEE Press, 2012:304-309.
[7] SALSANO S, DETTI A, CANCELLIERI M,et al.Transport-layer issues in information centric networks[C]//Edition of the Icn Workshop on Information-Centric NETWORKING.New York:ACM, 2012:19-24.
[8] SAINO L,COCORA C,PAVLOU G.CCTCP: A scalable receiver-driven congestion control protocol for content centric networking[C]//IEEE International Conference on Communications. New York:IEEE Press, 2013:3775-3780.
[9] CAROFIGLIO G,GALLO M,MUSCARIELLO L, et al.Multipath congestion control in content-centric networks[C]//Computer Communications Workshops. New York:IEEE Press, 2013:363-368.
[10] SCHNEIDER K,YI C,ZHANG B, et al.A Practical Congestion Control Scheme for Named Data Networking[C]//ACM Conference on Information-Centric NET WORKING. New York:ACM, 2016:21-30.
[11] ROZHNOVA N,FDIDA S.An extended Hop-by-hop interest shaping mechanism for content-centric networking[C]//Global Communications Conference.New York:IEEE Press, 2014.
[12] MASTORAKIS S, AFANASYEV A,MOISEENKO I,et al.ndnSIM 2: An updated NDN simulator for NS-3, NDN. [EB/OL]. (2016-11-11)[2017-09-22].http://ndnsim.net/2.4/.
[13] LEI K, HOU C, LI L,et al.A RCP-Based Congestion Control Protocol in Named Data Networking[C]//International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery. New York:IEEE Press, 2015:538-541.
(編輯:王敏琦)