導(dǎo)讀
5G的商用以及IoT、AI等技術(shù)的成熟推動著云技術(shù)的發(fā)展。無時不刻產(chǎn)生的數(shù)據(jù)洪流,對云的網(wǎng)絡(luò)架構(gòu)和處理數(shù)據(jù)的能力提出了新的需求,為了滿足這些需求,下一代虛擬網(wǎng)絡(luò)技術(shù)路在何方?在探討這個問題之前,我們以騰訊云數(shù)據(jù)中心網(wǎng)絡(luò)為例,介紹一下它的技術(shù)發(fā)展脈絡(luò)。
一.騰訊云數(shù)據(jù)中心網(wǎng)絡(luò)的技術(shù)發(fā)展脈絡(luò)
1.從千兆到萬兆:2014年,騰訊公有云服務(wù)器接入帶寬從千兆邁入了萬兆。
2.從萬兆到25G:2017年,騰訊公有云服務(wù)器接入帶寬從萬兆向25G轉(zhuǎn)變,這種轉(zhuǎn)變主要來自于業(yè)務(wù)對網(wǎng)絡(luò)吞吐的性能訴求。
3.從25G到50-100G:未來的1~2年,公有云服務(wù)器接入帶寬將全面向100G轉(zhuǎn)變。高密計算(單臺虛擬化服務(wù)器的CPU核數(shù)越來越多)、高密存儲(單臺存儲服務(wù)器的盤數(shù)和磁盤容量越來越高)、AI、HPC的發(fā)展,對網(wǎng)絡(luò)的高吞吐和低延遲提出了更高要求。
不同的服務(wù)器接入帶寬,對虛擬化網(wǎng)絡(luò)的架構(gòu)和擴(kuò)展性會提出不一樣的要求。在100G的網(wǎng)絡(luò)時代,虛擬化網(wǎng)絡(luò)架構(gòu)會是怎樣的?
二.騰訊云100G時代下的VPC架構(gòu)剖析
1.宿主機(jī)vSwitch能力
云網(wǎng)絡(luò)發(fā)展早期,網(wǎng)絡(luò)虛擬化的vSwitch通常使用內(nèi)核模塊來實現(xiàn),基于netfilter的鉤子定制encap/decap/安全組/qos等邏輯,快速滿足業(yè)務(wù)要求。但是基于內(nèi)核實現(xiàn)的vSwitch有幾個問題:
(1)vSwitch邏輯受制于內(nèi)核的框架,Linux內(nèi)核并非為網(wǎng)絡(luò)轉(zhuǎn)發(fā)所設(shè)計,存在大量的鎖和隊列,網(wǎng)絡(luò)性能和時延表現(xiàn)都比較差。
(2)為了滿足性能,vSwtich邏輯與虛擬機(jī)混跑CPU,在Linux調(diào)度層面,vSwtich邏輯的運行優(yōu)先級更高,這干擾了虛擬機(jī)的CPU性能穩(wěn)定性。
隨著DPDK技術(shù)的成熟,vSwitch邏輯逐步轉(zhuǎn)向用DPDK實現(xiàn):
(1)利用kernel的UIO機(jī)制,數(shù)據(jù)包跳過kernel的處理邏輯,直接送往用戶態(tài)。DPDK框架專門為網(wǎng)絡(luò)轉(zhuǎn)發(fā)而設(shè)計,vSwtich邏輯更簡單純粹。同時通過將DPDK vSwitch邏輯綁定物理核,并盡量移除DPDK所在物理核上的內(nèi)核邏輯(irq,softirq,rcu cb,timer,worker…)等方法,可以保證DPDK vSwitch邏輯運行的穩(wěn)定性。
(2)DPDK vSwitch的處理邏輯與用戶虛擬機(jī)的CPU彼此隔離,這保證了用戶虛擬機(jī)CPU的運行穩(wěn)定性。
隨著服務(wù)器帶寬的進(jìn)一步增長,DPDK vSwitch的擴(kuò)展能力也遇到很大的挑戰(zhàn)。DPDK的性能通過橫向擴(kuò)展占用的CPU核數(shù)來保證,但也有瓶頸:
(1)DPDK的單核處理能力受制于vhost-user的內(nèi)存拷貝,最高只能達(dá)到20-25Gbps。
(2)軟件橫向擴(kuò)展受制于軟件的局部化設(shè)計,存在天花板。
(3)堆砌通用CPU,將導(dǎo)致功耗增大、成本增高。
無限制地橫向擴(kuò)展不可持續(xù)。在100G的時代,保證虛擬化網(wǎng)絡(luò)的高性能和性能穩(wěn)定性成為vSwitch設(shè)計上重要的目標(biāo),主要的技術(shù)突破是智能網(wǎng)卡。
智能網(wǎng)卡的技術(shù)方案帶來如下優(yōu)點:
(1)vSwitch的快轉(zhuǎn)表下沉到硬件(FPGA/ASIC)中實現(xiàn),性能擴(kuò)展不需要占用CPU資源,顯著提升了性能的可擴(kuò)展性。
(2)全路徑硬件IO直通到虛擬機(jī)內(nèi)部,擁有比軟件方案更穩(wěn)定的性能。
(3)硬件實現(xiàn)QoS隔離,租戶間隔離更穩(wěn)定。
但是硬件有規(guī)格和靈活性上的局限性。為了滿足不同場景對網(wǎng)絡(luò)性能的不同訴求,騰訊對vSwitch的架構(gòu)做了分層。
vSwitch被分為三層:軟件實現(xiàn)的慢速路徑,軟件實現(xiàn)的快速路徑,硬件實現(xiàn)的快速路徑。對于不同場景,軟件自學(xué)習(xí)分析流的特征后,會將數(shù)據(jù)流分配到三種路徑上進(jìn)行轉(zhuǎn)發(fā):
(1)對于QQ類型的UDP無連接包業(yè)務(wù)類型,每條流只有一個包,這種類型的流量直接通過軟件慢路徑進(jìn)行轉(zhuǎn)發(fā),不下發(fā)流表。
(2)對于TCP短鏈接業(yè)務(wù),這種類型流量只下發(fā)到軟件快路徑,不下發(fā)到硬件快路徑。
(3)TCP大流量長連接業(yè)務(wù),下發(fā)到硬件快路徑。
在下一代虛擬化網(wǎng)絡(luò)中,智能網(wǎng)卡是每臺虛擬化服務(wù)器的標(biāo)配。除了網(wǎng)絡(luò)虛擬化,還會將存儲虛擬化,計算虛擬化的部分功能下沉到智能網(wǎng)卡中,給客戶提供超強(qiáng)的性能穩(wěn)定性。
2.云網(wǎng)關(guān)能力
網(wǎng)關(guān)在云環(huán)境面臨的最主要問題有資源問題、性能問題、故障域問題。在100G的網(wǎng)絡(luò)時代,性能擴(kuò)展帶來的資源問題最為凸顯。下一代虛擬化網(wǎng)絡(luò)中,云網(wǎng)關(guān)的技術(shù)突破最為重要,在這塊技術(shù)攻堅工作中,我們有幾個原則:
(1)業(yè)務(wù)網(wǎng)關(guān)NFV化,內(nèi)部服務(wù)去網(wǎng)關(guān),邊界網(wǎng)關(guān)硬件化;
(2)邊界網(wǎng)關(guān)無狀態(tài)化,狀態(tài)分布式化。
下面詳細(xì)講講這些原則:
01 業(yè)務(wù)網(wǎng)關(guān)NFV化
針對虛擬化要解決的核心問題——資源問題,主要有以下策略:
(1)裝箱算法:解決整體資源利用率和碎片問題。
(2)快速冷遷移、無感熱遷移:解決資源的快速置換和故障恢復(fù)。
(3)Auto-scaling:解決資源平行擴(kuò)容問題。
(4)巨大的資源池:通過熱遷移調(diào)度可提升整體的利用率。
業(yè)務(wù)網(wǎng)關(guān)NFV化時,網(wǎng)關(guān)所面臨問題是這樣解決的:
(1)資源問題:直接復(fù)用虛擬化平臺所提供的資源能力。
(2)性能問題:直接復(fù)用虛擬化網(wǎng)絡(luò)vSwitch實現(xiàn)的高性能及性能隔離能力。
(3)故障域問題:基于虛擬化平臺,做到更細(xì)粒度的sharding,讓一個集群承擔(dān)更少的客戶。在集群內(nèi)部,復(fù)用虛擬化網(wǎng)絡(luò)已有的HAVIP主備同步及ECMP,單播/多播同步實現(xiàn)集群內(nèi)容災(zāi)。
02 內(nèi)部服務(wù)去網(wǎng)關(guān)
內(nèi)部服務(wù)包含兩種:大吞吐類型(如對象存儲),主要瓶頸在大吞吐情形下的資源擴(kuò)容及性能問題;延時敏感性(如數(shù)據(jù)庫),主要瓶頸在于網(wǎng)關(guān)這一跳帶來的時延問題以及可靠性問題。
在下一代虛擬化網(wǎng)絡(luò)中,我們將連通overlay和underlay服務(wù)的集中式網(wǎng)關(guān),分解到overlay虛擬化服務(wù)器+underlay物理服務(wù)器上。在underlay服務(wù)器上安裝一個內(nèi)核模塊,提供了underlay服務(wù)器的被動VPC訪問能力。
內(nèi)部服務(wù)去網(wǎng)關(guān)后,網(wǎng)關(guān)問題這樣解決:
(1)資源問題:網(wǎng)關(guān)能力分布式化,天然解決資源問題。
(2)性能問題:網(wǎng)關(guān)能力分布式化,沒有集中式性能瓶頸,單機(jī)的性能依賴虛擬化母機(jī)的vSwitch和underlay服務(wù)器模塊解決。
(3)故障域隔離:網(wǎng)關(guān)能力分布式化,沒有集中式單點,故障域縮小到虛擬化母機(jī)維度或underlay服務(wù)器維度??衫锰摂M化的遷移或underlay的服務(wù)調(diào)度來修復(fù)該問題。
03 邊界網(wǎng)關(guān)硬件化
邊界網(wǎng)關(guān)包含兩種:公網(wǎng)與騰訊云內(nèi)網(wǎng)的邊界網(wǎng)關(guān)(如EIP網(wǎng)關(guān));騰訊云不同地域間DCI的邊界網(wǎng)關(guān)(如云聯(lián)網(wǎng)網(wǎng)關(guān)),這兩種網(wǎng)關(guān)必須要集中式解決。邊界網(wǎng)關(guān)硬件化后,網(wǎng)關(guān)面臨的問題是這樣解決的:
(1)資源問題:一臺可編程硬件網(wǎng)關(guān),可以提供至少10倍軟件網(wǎng)關(guān)的能力,它所需的資源規(guī)模相比而言大大減少。
(2)性能問題:利用可編程硬件芯片,可以提供更強(qiáng)的包轉(zhuǎn)發(fā)能力、更少的時延表現(xiàn)、更穩(wěn)定的性能、更好的性能隔離。
(3)故障域問題:硬件網(wǎng)關(guān)因為承載流量大,客戶多,單臺故障的影響面也會很大,騰訊通過簡化硬件網(wǎng)關(guān)的邏輯,將邊界網(wǎng)關(guān)無狀態(tài)化,通過多集群部署、跨集群調(diào)度來解決集群的容災(zāi)問題。
3.控制面能力
隨著數(shù)據(jù)面帶寬的急劇增長,整體虛擬化網(wǎng)絡(luò)面對的客戶數(shù)及單客戶規(guī)模都會與日俱增。超大虛擬化網(wǎng)絡(luò)所面對的控制面擴(kuò)展能力也是我們首要考慮的問題。在下一代VPC網(wǎng)絡(luò)中,我們將配置數(shù)據(jù)分為動態(tài)配置數(shù)據(jù)與靜態(tài)配置數(shù)據(jù)。
(1)動態(tài)配置數(shù)據(jù)(如位置關(guān)系),完全分布式按需學(xué)習(xí),定期老化,解決配置數(shù)據(jù)量中最大的部分。
(2)靜態(tài)配置數(shù)據(jù)(譬如子網(wǎng)路由、安全組),采用靜態(tài)預(yù)下發(fā)。靜態(tài)預(yù)下發(fā)時采取snapshot+binlog方式,加快預(yù)下發(fā)效率。
至于“動態(tài)學(xué)習(xí)及靜態(tài)預(yù)下發(fā)時,部分配置關(guān)系未能及時下發(fā)”的問題,引入中轉(zhuǎn)網(wǎng)關(guān)來輔助流量轉(zhuǎn)發(fā)。中轉(zhuǎn)網(wǎng)關(guān)基于包做轉(zhuǎn)發(fā),完全無狀態(tài),方便容災(zāi)及擴(kuò)容。
在下一代虛擬化網(wǎng)絡(luò)中,基于控制面的按需改造,我們可以做到單VPC超過300K VM,且VM創(chuàng)建完成后VPC實時可通。此外,控制面的租戶隔離也是一個非常重要的問題。我們的解決辦法是:
(1)對于大客戶,我們通過大小客戶分集群單獨部署,以解決控制面的租戶隔離問題。
(2)對于一個集群內(nèi)部的租戶間互相影響,我們主要通過針對單租戶的訪問頻率控制,以及對于惡意租戶的額外隊列懲罰控制,來避免一個租戶造成集群雪崩。
4.故障定位能力
下一代虛擬網(wǎng)絡(luò)中,除了通常的計數(shù)器統(tǒng)計,針對大吞吐高性能場景下性能無損的故障分析,我們研發(fā)了一套帶內(nèi)的流跟蹤系統(tǒng)。
通過這套流跟蹤系統(tǒng),我們可以實時獲取網(wǎng)絡(luò)路徑上函數(shù)級別的時延和丟包情況。
在下一代網(wǎng)絡(luò)中,我們將借助流跟蹤系統(tǒng),更從容地應(yīng)對客戶對丟包和網(wǎng)絡(luò)時延的挑戰(zhàn)。
總結(jié)
“隨風(fēng)潛入夜,潤物細(xì)無聲”我們希望騰訊云的“網(wǎng)絡(luò)能力”像春雨一樣,對用戶來說是“透明”的,不必被感知的。因為默默地守護(hù)好前方業(yè)務(wù)的“花團(tuán)錦簇”,就是春雨最大的滿足。