溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

利用DDP技術(shù)提升Tungsten Fabric vRouter性能

發(fā)布時(shí)間:2020-08-10 20:55:08 來源:ITPUB博客 閱讀:218 作者:TF中文社區(qū) 欄目:互聯(lián)網(wǎng)科技

在剛剛結(jié)束的“2020虛擬開發(fā)人員和測試論壇”上,來自瞻博網(wǎng)絡(luò)的工程師Kiran KN和同事,介紹了在Tungsten Fabric數(shù)據(jù)平面上完成的一組性能改進(jìn)(由Intel DDP技術(shù)提供支持),以下為論壇技術(shù)分享的精華:

利用DDP技術(shù)提升Tungsten Fabric vRouter性能
作為DPDK應(yīng)用的vRouter

利用DDP技術(shù)提升Tungsten Fabric vRouter性能

在深入到DDP技術(shù)之前,首先介紹一下vRouter,它是什么,以及在整個(gè)Tungsten Fabric框架中的位置。
 

實(shí)際上,vRouter可以部署在常規(guī)X86服務(wù)器上,也可以在OpenStack或K8s的計(jì)算節(jié)點(diǎn)當(dāng)中。vRouter是主要的數(shù)據(jù)平面組件,有兩種部署的模式,分別是vRouter:kernel module,以及vRouter:DPDK模式。

  利用DDP技術(shù)提升Tungsten Fabric vRouter性能


在用DPDK改善性能之前,此用例將涉及DPDK應(yīng)用和vRouter。vRouter的職責(zé)是數(shù)據(jù)平面,用于數(shù)據(jù)包轉(zhuǎn)發(fā)和由vRouter代理在計(jì)算節(jié)點(diǎn)上編程的數(shù)據(jù)包轉(zhuǎn)發(fā),但實(shí)際上,整個(gè)配置是通過控制器上的XMPP提供的。我們使用XMPP通過vRouter agent與控制器通信,并且有一個(gè)專門的接口來對vRouter數(shù)據(jù)平面進(jìn)行編程以轉(zhuǎn)發(fā)軟件包。
 
在DPDK中,vRouter是一個(gè)高性能、多核和多線程的應(yīng)用程序,這里想強(qiáng)調(diào)一下,它是專用于多核的DPDK應(yīng)用,我們需要尋找多核的正確用法。
 
我們可以從示例中看到,網(wǎng)卡具有與vRouter相同數(shù)量的隊(duì)列,已為數(shù)據(jù)包或鏈接分配了核心。
 
首先,數(shù)據(jù)包需要由網(wǎng)卡平均地分配到所有路由器轉(zhuǎn)發(fā)核心。為此,使用了帶有5元組哈希的算法,在所有內(nèi)核之間正確分配流量。而且,適當(dāng)?shù)呢?fù)載平衡是基于數(shù)據(jù)包的,并且要實(shí)現(xiàn)該數(shù)據(jù)包需要具有5元組,多個(gè)源的目標(biāo)端口IP地址。如果該協(xié)議正確,則該協(xié)議可以確定所有內(nèi)核之間的流量平均分配,并且我們可以利用它分配給vRouter DPDK的所有內(nèi)核的性能。盡管此流量包分布在各個(gè)處理內(nèi)核上,但可以通過TX接口隊(duì)列,將它們適當(dāng)?shù)胤胖玫教摂M機(jī)中。
 
如果此流量在各個(gè)內(nèi)核之間沒有得到適當(dāng)?shù)钠胶猓瑒tvRouter將在沒有內(nèi)核的情況下進(jìn)行重新平衡,但是對于內(nèi)核來說,通過內(nèi)核重新哈?;鼈兊拇鷥r(jià)很高,這意味著它們會(huì)消耗CPU周期并帶來額外的延遲。
 
這就是我們面臨的問題,但在今天得到了很大程度的解決,我們可以期待網(wǎng)卡能夠完成此任務(wù),并適當(dāng)?shù)仄胶鈜Router核心之間的流量。

  利用DDP技術(shù)提升Tungsten Fabric vRouter性能


也就是說,具有MPLSoGRE的計(jì)算類型沒有足夠的熵(entropy)。由于熵的存在,我們的報(bào)頭中沒有足夠的信息,或無法正確平衡數(shù)據(jù)包的負(fù)載。
 
具體來說,數(shù)據(jù)包應(yīng)該具有完整的端口信息,包含完整的5個(gè)要素,即源IP、目標(biāo)IP、源端口、目標(biāo)端口和協(xié)議。但是在MPLSoGRE只有源IP、目標(biāo)IP和協(xié)議三元組信息。因此,網(wǎng)卡無法適當(dāng)?shù)仄胶鈹?shù)據(jù)包的負(fù)載,由于該CPU內(nèi)核,一對計(jì)算節(jié)點(diǎn)之間的所有數(shù)據(jù)包都落在瓶頸中的同一區(qū)域,這將導(dǎo)致網(wǎng)卡隊(duì)列成為整個(gè)計(jì)算的瓶頸,并且性能受到影響。
 
例如,假設(shè)一對計(jì)算節(jié)點(diǎn)之間有數(shù)千個(gè)流(flows)。理想情況下,我們希望將流平衡分布在所有的內(nèi)核上,以便可以由不同的CPU將其拾取,以進(jìn)行數(shù)據(jù)包處理。但是對于MPLSoGRE,已知端口的信息沒有足夠的熵,來自特定計(jì)算節(jié)點(diǎn)的所有數(shù)據(jù)包都會(huì)發(fā)生,即使有很多流量,網(wǎng)卡也不會(huì)將它們分發(fā)到所有隊(duì)列。因此,這里不再像我們所知道的那樣,實(shí)際上數(shù)據(jù)包不會(huì)像這樣分散在多個(gè)內(nèi)核中,它只會(huì)分配給一個(gè)內(nèi)核。

因此,盡管有很多CPU內(nèi)核,但由于所有數(shù)據(jù)包必須經(jīng)過C1,C1本質(zhì)上成為了瓶頸。數(shù)據(jù)包無法直接流經(jīng)C2、C3、C4,是因?yàn)樗鼈儧]有在硬件上加載,所有其它內(nèi)核必須從C1獲取數(shù)據(jù)包,顯然C1將會(huì)過載。
利用DDP技術(shù)提升Tungsten Fabric vRouter性能

引入DDP消除瓶頸


利用DDP技術(shù)提升Tungsten Fabric vRouter性能

我們?yōu)門ungsten Fabric數(shù)據(jù)平面引入了一項(xiàng)新功能,該功能消除了MPLSoGRE數(shù)據(jù)包的瓶頸,使得性能與CPU內(nèi)核數(shù)成正比。這意味著沒有單個(gè)CPU內(nèi)核會(huì)成為瓶頸,并且網(wǎng)卡硬件將數(shù)據(jù)包平均分配給所有CPU內(nèi)核。
 
我們的解決方案由Intel DDP(dynamic device personalization)技術(shù)提供支持,使用以太網(wǎng)700系列的產(chǎn)品來提供。英特爾轉(zhuǎn)向可編程管線模型后,確保它們引入了諸如固件可升級之類的功能,DDP允許在運(yùn)行時(shí)動(dòng)態(tài)重新配置網(wǎng)卡中的數(shù)據(jù)包處理管道,而無需重啟服務(wù)器。軟件可以將自定義配置文件應(yīng)用到網(wǎng)卡,我們可以將這些配置文件視為附件,可以由最終用戶自己構(gòu)建。這些配置文件可以通過軟件刷新到網(wǎng)卡上,以便它們可以開始在線識別和分類新的數(shù)據(jù)包類型,并將這些數(shù)據(jù)包分配到不同的Rx隊(duì)列。

這是MPLSoGRE實(shí)施的情況,首先是這是一個(gè)沒有DDP提取功能的MPLSoGRE數(shù)據(jù)包,它沒有獲得在當(dāng)前數(shù)據(jù)包中聽到的內(nèi)部實(shí)際存在的啟動(dòng)信息,因此它沒有足夠的信息來正確分配數(shù)據(jù)包。在第二個(gè)圖例中啟用了DDP,配置文件便可以開始識別內(nèi)部數(shù)據(jù)包標(biāo)頭,以及內(nèi)部IP標(biāo)頭和內(nèi)部UDP標(biāo)頭,因此它可以開始使用該信息來計(jì)算哈希。
 
如何使DDP成為最終用戶需要為其數(shù)據(jù)包類型創(chuàng)建配置文件的方式?
 
可以通過使用Intel的配置文件編輯器(profile editor)工具來創(chuàng)建,Intel在其上發(fā)布了一些標(biāo)準(zhǔn)配置文件,可以直接從Intel網(wǎng)站下載。配置文件編輯器可用于創(chuàng)建新條目,或者修改分析器的現(xiàn)有條目,這是第1步。第2步,為MPLSoGRE數(shù)據(jù)包創(chuàng)建一個(gè)新的配置文件,該配置文件在不同的層上定義數(shù)據(jù)包頭的結(jié)構(gòu)。第3步,是編譯并創(chuàng)建一個(gè)二進(jìn)制程序包,可以應(yīng)用于網(wǎng)卡。第4步,我們可以使用DPDK API在每個(gè)工具接口將這些配置文件加載到網(wǎng)卡。接下來第5步,網(wǎng)卡就能夠識別MPLSoGRE數(shù)據(jù)包。

利用DDP技術(shù)提升Tungsten Fabric vRouter性能

利用DDP技術(shù)提升Tungsten Fabric vRouter性能

對性能提升的測試及確認(rèn)


利用DDP技術(shù)提升Tungsten Fabric vRouter性能

接下來,我們需要測試并確認(rèn),DDP可以提供幫助帶來性能提升。
 
首先,我們的測試框架廣泛用于開發(fā)和測試vRouter。我們使用代理方式以擁有快速概念驗(yàn)證的能力,并收集信息。測試vRouter性能的所有方法,包括封裝和計(jì)算節(jié)點(diǎn)之間的封裝,并且總是會(huì)包含overlay網(wǎng)絡(luò),就像在圖例中的所看到的那樣,我們通過第三個(gè)對象(rapid jump VM),該對象只有控制流量(不通過其它任何流量),向VM發(fā)送指令并收集信息。為了實(shí)現(xiàn)測試目標(biāo),我們采用丟包率只有0.001%的二進(jìn)制搜索,使用標(biāo)準(zhǔn)的測試框架和規(guī)范。
 
在vRouter中,我們可以找到腳本,顯示每個(gè)內(nèi)核CPU數(shù)據(jù)包處理的統(tǒng)計(jì)信息,以證明網(wǎng)卡正確地集中了所有內(nèi)核之間的流量。這些統(tǒng)計(jì)信息來自VM0接口,這意味著連接與物理網(wǎng)卡之間的接口。
 
在左側(cè),你可以看到內(nèi)核1沒有在處理軟件包,這實(shí)際上意味著該內(nèi)核未接收到任何由vRouter處理的軟件包。此內(nèi)核只是忙于輪詢程序包,并在vRouter上的其它可用內(nèi)核之間分配程序包。這意味著vRouter將成為瓶頸,因?yàn)槭紫刃枰獙⑺羞M(jìn)入vRouter的流量從網(wǎng)卡隊(duì)列中拉出,然后將其進(jìn)行重新分配(跨其它核心)以轉(zhuǎn)發(fā)到VM。
 
而在右側(cè),你可以看到使用DDP的網(wǎng)卡已經(jīng)正確分配了流量,Rx隊(duì)列中所有內(nèi)核之間的流量幾乎相等。證明網(wǎng)卡完成了自己工作,并平均分配了流量。
 
可以看到,是否使用DDP,在性能結(jié)果中統(tǒng)計(jì)數(shù)據(jù)上的差別。在不大于3個(gè)內(nèi)核的情況下,使用DDP并沒有得到任何好處——因?yàn)閷τ谳喸儍?nèi)核和跨內(nèi)核重新分配流量,目前網(wǎng)卡處理這樣的隊(duì)列還是足夠快的。
 
但是一旦增加內(nèi)核數(shù)量,然后提高整體性能,那么網(wǎng)卡就成為了瓶頸——在沒有DDP的情況下性能不會(huì)提高,即使增加了內(nèi)核數(shù)也是如此,因?yàn)榭傆幸粋€(gè)內(nèi)核在拉動(dòng)流量,并且你可以看到,在沒有DDP的部分中6.5mpps左右是一個(gè)內(nèi)核從網(wǎng)卡隊(duì)列中輪詢的最大值。
 
利用DDP技術(shù)提升Tungsten Fabric vRouter性能

隨著內(nèi)核的數(shù)量增加,每個(gè)內(nèi)核都從網(wǎng)卡接收了相同數(shù)量的流量。一旦內(nèi)核數(shù)量超過6個(gè),則收益將變得更高。正如我們所看到的,具有6個(gè)內(nèi)核的增益大約為73%,這確實(shí)是個(gè)很酷的數(shù)字。不僅可以提高性能,使用DDP還可以得到更好的降低延遲。這是因?yàn)槲覀儾恍枰胶鈨?nèi)核之間的流量,也不需要計(jì)算每個(gè)數(shù)據(jù)包的哈希值。在vRouter上,這將由網(wǎng)卡完成,收益的增加平均為40%,最多為80%,這已經(jīng)是非常棒的數(shù)字了 。

綜上,對于擁有多個(gè)內(nèi)核的用例,我們可以借助DDP技術(shù)獲得很大的收益。另外,對于5G用例而言,DDP能夠減少延遲這一點(diǎn)非常重要。在所有我們希望使用MPLSoGRE情況下,借助vRouter,我們已經(jīng)準(zhǔn)備好在多核中進(jìn)行5G應(yīng)用部署。
 
【本文相關(guān)資料pdf文檔下載】

https://tungstenfabric.org.cn/assets/uploads/files/tf-vrouter-performance-improvements.pdf 

視頻鏈接

https://v.qq.com/x/page/j3108a4m1va.html

利用DDP技術(shù)提升Tungsten Fabric vRouter性能

利用DDP技術(shù)提升Tungsten Fabric vRouter性能

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI