眾所周知,NFV在很大程度上能夠減低部署成本和運(yùn)維成本,目前已經(jīng)受到許多網(wǎng)絡(luò)運(yùn)營(yíng)商的關(guān)注,有些運(yùn)營(yíng)商已經(jīng)開(kāi)始部署NFV的相關(guān)產(chǎn)品到自己的現(xiàn)有業(yè)務(wù)中。但是,NFV有一大弱點(diǎn)和弊端目前尚且無(wú)法超越傳統(tǒng)網(wǎng)絡(luò)功能設(shè)備——NFV處理的性能效率,這篇文章從SIGCOMM中的一篇論文獲得啟發(fā),提出了一種從架構(gòu)上加速NFV的算法。
筆者參加了2016年12月剛結(jié)束的全球網(wǎng)絡(luò)技術(shù)大會(huì),會(huì)上電信、移動(dòng)、聯(lián)通三大運(yùn)營(yíng)商都提出了,他們已經(jīng)開(kāi)始部署NFV到實(shí)際的業(yè)務(wù)當(dāng)中,但是目前只在小流量的服務(wù)鏈路上進(jìn)行NFV的部署,而大流量或超大流量的鏈路目前無(wú)法部署NFV,還只能用傳統(tǒng)網(wǎng)絡(luò)功能設(shè)備進(jìn)行流量處理。其原因就是NFV在大流量鏈路上處理性能太不盡如人意,在網(wǎng)絡(luò)包處理性能上大大不如傳統(tǒng)網(wǎng)絡(luò)功能設(shè)備。這樣一來(lái),明顯就限制了NFV的用途,無(wú)法發(fā)揮它最大的效能。故而在NFV研究領(lǐng)域最迫切的問(wèn)題就是提升NFV處理網(wǎng)絡(luò)包的性能,也就是NFV的處理速度。
在SDN出現(xiàn)之后,NFV有了一些發(fā)展,比如:近年網(wǎng)絡(luò)領(lǐng)域頂級(jí)會(huì)議SIGCOMM中就發(fā)表了一篇名為《OpenBox-A Software-Defined Framework for Developing, Deploying, and Managing》的論文,這篇論文借鑒SDN的控制轉(zhuǎn)發(fā)分離的思想,對(duì)NFV在實(shí)際中的應(yīng)用進(jìn)行了重新架構(gòu),如圖1。
圖1這樣的NFV架構(gòu)更加易于管理,位于Date Plane的就是承載NFV的X86服務(wù)器,用戶(hù)可以通過(guò)OpenBox的應(yīng)用輕松的管理VNF。這樣就便于NFV的大規(guī)模部署和管理。
除此之外,更重要的是,論文還提出了一種NFV加速算法。其思想是把傳統(tǒng)的網(wǎng)絡(luò)功能拆成各個(gè)不可再分的“元素處理模塊”,合并和重構(gòu)不同網(wǎng)絡(luò)功能的處理模塊,從而達(dá)到加速的效果。例如:對(duì)于防火墻和IPS功能,可以對(duì)其拆分成,Read Packet、Header Classifier、Alert、Output、Regex Classifier部分,如圖2。
圖2在拆分過(guò)后,假設(shè)一個(gè)網(wǎng)絡(luò)需要同時(shí)部署防火墻和IPS功能,傳統(tǒng)的方式如圖3。而論文對(duì)重復(fù)處理的元素模塊進(jìn)行合并,這樣處理效率就提高了。合并后的效果如圖4所示:
圖3圖4我們可以看出,對(duì)于合并之后的處理流程已經(jīng)簡(jiǎn)化了許多,對(duì)于頭域分類(lèi)器只需進(jìn)行一次。在實(shí)際部署中,一個(gè)節(jié)點(diǎn)一般有多個(gè)NFV功能共同部署,對(duì)于大量的網(wǎng)絡(luò)功能做此簡(jiǎn)化,可以大大提高NFV處理效率。論文所做得實(shí)驗(yàn)顯示,光是防火墻加上IPS的網(wǎng)絡(luò)功能部署,就能夠提升80%以上的吞吐量,降低30%以上的時(shí)延。
介紹完了OpenBox,筆者認(rèn)為算法還具有提升空間,眾所周知,除了IPS和防火墻這種包具有先后處理順序的網(wǎng)絡(luò)功能之外,許多的網(wǎng)絡(luò)功能部件之間處理是沒(méi)有關(guān)系的,比如CDN和Tester之間就沒(méi)有順序關(guān)系,實(shí)際上在包處理的過(guò)程中他們是可以并行處理的。于是筆者提出一種新的NFV架構(gòu),使用并行處理的思想對(duì)NFV進(jìn)行加速。即在包分發(fā)器(PCD)和一個(gè)控制器(Controller)輔助下,對(duì)包進(jìn)行并行處理。如圖5所示:
圖5PCD相當(dāng)于一個(gè)復(fù)制器,把包分給不同的VNF,Controller匯集處理結(jié)果,并決定包的走向。在中間的網(wǎng)絡(luò)功能處理當(dāng)中依然可以使用OpenBox的思想,比如:頭域分類(lèi)只需進(jìn)行一次。這樣就在OpenBox的基礎(chǔ)上能夠進(jìn)一步的對(duì)NFV處理性能進(jìn)行提升。
除此之外,在實(shí)際應(yīng)用中,由于X86服務(wù)器要同時(shí)處理多個(gè)不同鏈路上發(fā)來(lái)的包,在包發(fā)往X86服務(wù)器上的過(guò)程中會(huì)產(chǎn)生相當(dāng)大的時(shí)延,直接影響了NFV的處理效率。于是我們可以用下面的結(jié)構(gòu)克服這個(gè)困難。X86服務(wù)器的進(jìn)出線(xiàn)路不設(shè)在同一個(gè)節(jié)點(diǎn),而是相隔若干個(gè)節(jié)點(diǎn),包在NFV處理的同時(shí),可以在鏈路上進(jìn)行傳輸,之后我們可以設(shè)一個(gè)類(lèi)似圖5控制器的東西,對(duì)包處理結(jié)果進(jìn)行匯集,再?zèng)Q定包是否要進(jìn)入內(nèi)網(wǎng)。為此筆者設(shè)計(jì)了一種應(yīng)用場(chǎng)景來(lái)闡述這種思想,如圖6所示,紅色箭頭為數(shù)據(jù)包的流向。
圖6上述兩種并行架構(gòu)思想從理論上可以加快NFV的數(shù)據(jù)包處理速度和性能,但是依然存在著問(wèn)題,比如,在圖5中Controller的處理是否足夠快,要如何設(shè)計(jì)Controller,在圖6中Controller的處理時(shí)延會(huì)不會(huì)很大,導(dǎo)致反而比傳統(tǒng)NFV架構(gòu)增加時(shí)延。除此之外,input和output橫跨多少SW才能使得在controller中等待處理包的隊(duì)列效率最大,這都決定到這兩種算法的可行性,這些問(wèn)題還有待進(jìn)一步探究。