黃揚:大家好,我是來自ZETTAKIT的黃揚,我是公司合伙人之一。
我本人是研發(fā)出身,參與了公司產品的前期研發(fā)工作。公司經過快速發(fā)展,產品在各行業(yè)有了很多實際應用案例,公司現在有很多的牛人,寫代碼就沒我啥事了。我就深入用戶那里,去了解項目,解決項目中遇到的實際問題,然后把這些實際問題反饋到我們架構設計當中去,不斷改進我們的產品。
存儲這一塊,我們首先追求穩(wěn)定,雖然有很多創(chuàng)新,但是架構方面其實可能沒有太多可說的,我們有同事在其他分論壇介紹公司的存儲產品,我在這里跟大家分享軟件力量在超融合架構里面的決定性作用,從另外一個側面說說我們怎么用軟件的力量使得超融合架構更好更強。
今天,我跟大家分享的技術話題是《企業(yè)級SDN助力超融合架構》。
首先簡單介紹一下我們公司,我們公司成立于2014年,還是個年輕的公司,但是發(fā)展特別快。ZETTAKIT是我們注冊商標同時也是我們產品名,我們也有自己的ZETTAKIT一體機。寓意是能夠處理ZETTA數量級的軟件,澤塔是中文名。
公司致力于超融合云計算,軟件定義數據中心相關領域的研究和產品開發(fā)。成立兩年多,我們的超融合云計算產品已經在金融、證券、政府、企業(yè)和高等院校有很多用戶。
下面我來分享一下我們公司在超融合架構上的認識,尤其是軟件力量在云計算領域的重要作用。
傳統(tǒng)硬件定義架構功能固定,不能靈活設定存儲策略;并且不具有水平擴展能力,滿足不了云計算數據中心規(guī)模自由伸縮的要求。
超融合架構讓計算與存儲功能充分融合,以軟件的力量實現數據中心的自由伸縮,水平擴展。
那么超融合架構下網絡應該是什么樣?
計算與存儲已經融合,軟件發(fā)揮了決定性的力量。
我們應該更進一步,做到計算、存儲、網絡的全面融合,發(fā)揮軟件的力量,使得網絡隨計算和數據而動。
傳統(tǒng)網絡架構的弊端在超融合架構中顯現的尤為明顯,不支持動態(tài)按需調配,導致資源無法被高效自動化供給,影響了整個云計算架構的快速部署、靈活調配。同時,在超融合架構當中實際去實施的過程當中有一個落地的問題,就是有一個傳統(tǒng)數據中心向超融合云計算數據中心平滑演進的問題,但我們知道,傳統(tǒng)網絡架構的弊端在這種情況下顯現的尤為明顯。
所以我們可以很容易的想到超融合架構下的網絡就應該有三大特征:軟件定義架構,功能融合和快速部署、靈活調配。用一句簡單話說超融合架構網絡就需要SDN就需要軟件定義網絡。
我們再來看看細節(jié)。
在超融合架構中,網絡將分散的計算和存儲資源單元連結起來,構成計算資源池,存儲資源池。
超融合架構有計算、存儲、管理三張網絡。其中存儲網絡是相比傳統(tǒng)硬件定義架構增加的,或者說取代FC、sas等專用存儲交換網絡。這要求大帶寬,低延遲。
雖然超融合存儲可以通過調整副本分布策略減少網絡壓力,但網絡資源仍然是瓶頸,尤其是大規(guī)模下或者對存儲性能要求高時,比如金融行業(yè)中的高頻交易系統(tǒng)應用場景下。
看這幾個概念圖,這個是邏輯上的三張網絡劃分,物理網絡同樣可以這么部署,但每個網的資源有限,導致性能受限。資源的共享程度越高,系統(tǒng)的資源利用率就越高,那么運行成本就越低或者性能就更好。
所以理想是這樣的,將網絡鏈路聚合起來,被三張網絡共享使用。當然共享就有資源爭用問題需要解決。這對網絡資源的控制能力提出了更高要求。
大規(guī)模下,還有更多的資源瓶頸。
總結一下,超融合架構需要SDN,但也對SDN提出了一些新的要求。
軟件定義架構,功能融合,快速部署、靈活調配,這三個是基本要求。
還有這些新要求:
第一個,低延遲很重要,這決定了性能擴展能力的上限。
第二個是自由伸縮,超融合架構的必備技能。這里包括構建的邊際成本低,網絡的控制平面和數據平面都要具有自由伸縮的能力。
第三個是易操作,這個是指整個系統(tǒng)操作簡單,運維也簡單。操作簡單是指讓用戶容易掌握云計算系統(tǒng)的使用;隨著數據中心規(guī)模的擴展,網絡系統(tǒng)的復雜性提高,對于運維人員來說,任何故障都是難以捕捉的,運維簡單要求網絡的可視化和方便的故障檢測機制。
第四個是資源占用低,顯然功能融合下,網絡、存儲都會占用計算資源,這要求這部分資源占用盡可能低,將更多的CPU、內存資源留給計算。其實也是x86體系性能進步快才讓超融合架構成為可能。否則計算都不夠,就不可能融合存儲和網絡了。資源占用低永遠是超融合架構應該追求的。
下面我來說說我們SDN在架構設計上怎么考慮這些新要求的。
我們的SDN產品是ZETTAKIT超融合云計算系統(tǒng)的一個組成部分。
我們的SDN設計的指導思想讓軟件發(fā)揮決定力量,不僅是計算網絡,也將管理網絡和存儲網絡納入軟件管理。
超融合架構首先讓數據隨計算流動,我們想進一步通過軟件的力量,讓網絡隨計算和數據而動。
眾所周知,SDN有三大核心特征:一是數據平面與控制平面分離,二是集中控制,三是通過良好設計的編程接口控制網絡行為。
我們在SDN架構設計上,將這三個核心特征進一步擴展,以適應超融合架構的新要求:
首先,在全系統(tǒng)的各個網絡資源單元都實現了數據平面和控制平面的分離,讓控制信息和狀態(tài)信息更獨立也更集中,盡力避免“自學習”型的數據交互方式(比如ARP這樣的協議),這樣讓網絡資源響應更快,控制粒度更細,也能減少因狀態(tài)不一致引起的故障。
其次,實現計算、存儲、網絡資源的統(tǒng)一管控,也就是圖中的ZETTAKIT云計算管理平臺,這是更大范圍的集中控制。
最后,計算、存儲和網絡資源全由軟件定義。這樣一來,在云計算管理平臺,所有資源池化了,用戶控制的是各種邏輯資源對象,比如虛擬機,虛擬磁盤,虛擬路由器,IP資源,帶寬資源等??梢哉f這是一種對象化和實體化的編程接口,是對現實世界中各種IT資源實體的簡化和增強,用戶容易理解,只需關心業(yè)務層面的事情。可以說是應用驅動的SDN,這是易操作的基礎。
除上述三大特征之外,我們的SDN架構還考慮了自由伸縮和功能融合兩方面的要求:
1. 自由伸縮:控制平面和數據平面都具有比較強的伸縮性。雖然控制邏輯上是集中的,但物理上也集中必然導致擴展性不佳。我們設計上采用了分層的架構,狀態(tài)數據庫保存上層網絡描述,是抽象的數據模型。每個控制器都獨立運行,將此抽象數據模型轉化為底層的控制描述??刂破饕策M一步分工,網絡節(jié)點和計算節(jié)點上采用分布式控制器架構,單獨的控制器集群對物理交換機網絡進行控制。服務器是葉子節(jié)點,物理交換機網絡是中間節(jié)點,葉子節(jié)點上的控制器邏輯很簡單,只需要保證配置的最終一致性,不需處理環(huán)路、保序等復雜問題??刂莆锢斫粨Q機網絡的SDN控制集群相對復雜,但因為被控制的對象(物理交換機)的對象相比服務器有數量級的減少,容易實現精細的控制。這樣控制平面交互信息少。
同時,自由伸縮的另一面”高可用”上,也符合超融合架構的特點:控制器故障只會影響本節(jié)點,其他節(jié)點正常運行不受影響。
2. 功能融合:每個節(jié)點計算、存儲、網絡功能融合。不管從控制平面,還是數據平面來說都是如此。
接下來說說我們在數據平面的設計,這方面主要的考量是降低延遲和減少計算節(jié)點上的資源占用。
這里也來源于我們項目實際需求,現在有很多用戶其實是一個傳統(tǒng)硬件定義架構,他們的數據中心是傳統(tǒng)型的,但是他想往超融合架構遷移。所以在數據平面架構當中去考慮這一點,我們采用了疊加網絡方案,也就說我們會用隧道封裝的辦法,把業(yè)務流量封裝起來。
這種方案對“現網影響很小”,它屏蔽物理設備差異,與現有網絡標準兼容,能實現傳統(tǒng)數據中心向云計算中心的平滑升級。其實這也是解決超融合落地的問題。這種方案允許同一個數據中心中,傳統(tǒng)架構與超融合架構共存,然后發(fā)揮超融合架構按需擴展的優(yōu)勢,逐漸將傳統(tǒng)架構的部分遷移并擴展為超融合的一部分。圖中的物理服務器就是表達這種場景。
我們隧道封裝標準選擇VXLAN。
將硬件交換機作為VTEP,它負責VXLAN的封裝和解封,這里雖然對硬件交換機有要求,但市場上滿足這些要求的交換機越來越多,有傳統(tǒng)交換機也有開放標準的交換機。并且只對TOR交換機有要求,能容易與現有網絡對接。
之所以這么選擇,是隧道封裝和解封操作消耗CPU和內存資源,采用物理交換機硬件卸載的方式,能顯著降低計算節(jié)點的CPU和內存占用,并且降低網絡延遲。
在我們的某些解決方案里,管理網絡和存儲網絡也采用這種疊加方案實現與現網融合,因為這種架構性能損耗很低。
正因為TOR的管控能力,在主機上,我們能充分利用硬件能力,進一步降低延遲和資源占用,比如圖中的網絡節(jié)點的負載均衡服務就可以使用SRIOV技術,因為上面有可控的物理交換機網絡,并不會降低網絡的控制力,仍然能實現細粒度的控制,關于主機網絡的詳細架構,后面有專門的一頁ppt介紹。
注意我們架構中的網絡節(jié)點主要是NFV,專注于4到7層的功能虛擬化,比如負載均衡、防火墻等。一般的3層功能是分布式的實現,下面會介紹,也就是分布式路由器。
這里我想說一個我們認為超融合架構它的性能能夠水平擴展的技術原理,我們稱之為資源的最短路徑調配,形象的說就是資源隨計算流動,或者說局部性原理。
這里我先用大家相對熟悉的超融合存儲來闡述,看看數據是如何隨著計算流動的:
存儲系統(tǒng)優(yōu)先保留一個完整副本在本節(jié)點上,也就是副本的本地親和性。這時從理論上說,這個副本的IO路徑最短,讀延遲很低,寫延遲也能有所優(yōu)化,因為充分了利用本地存儲資源,延遲低,帶寬高。這里以兩副本舉例,另外一個副本分散在其他服務器。當這個虛擬機遷移之后,我們會異步的根據資源情況動態(tài)調度存儲,就是說使用閑置的資源在本地把副本補足,所以說我們盡可能保證資源最短路徑調配可能性,性能可以做到接近線性擴展的能力。當然存儲數據遷移成本很高,所以受限于容量的因素,也不能100%確保本地有一個完整副本。但是這個原理我想已經跟大家呈現清楚了。
從網絡角度來說,對這個原理的實現就更加自然了。因為網絡在本質上,是各種設備中的內存操作。
首先從網絡功能來說,對于二層三層這樣功能,我們實現分布式處理,這就是我之前說的我們每個計算節(jié)點同時也是網絡節(jié)點。
上半部表示的虛擬網絡的拓撲關系,VM1和VM2是不同網絡的虛擬機,這兩個網絡通過虛擬路由器A在三層互通。下面是物理網絡,可以實現集中式的路由器,這樣一來可以工作沒有問題,網絡路徑變長,流量還要經過集中的節(jié)點,容易擁堵,不滿足水平擴展特性,沒法自由伸縮這種屬性。
我們是怎么實現的?我們實現一個分布式路由器,也就是每個計算節(jié)點都有一個虛擬路由器分身,負責處理本節(jié)點的二三層通信,它能就近處理東西向轉發(fā),所以這里就做到了網絡功能最短路徑調配,同時擴展性很好。
再說網絡路徑這一塊,這里展示的是計算網絡的一次IP通信的過程。
當VM A想與VM G通信時,這兩個虛擬機時是同一個網絡的(不同網絡的情況在上一張ppt已經描述,分布式路由器直接在本地處理完成),VM A首先發(fā)起ARP請求,詢問VM G的mac地址,在ARP標準實現中是要在整個二層網絡中廣播,對于虛擬化場景來說就是廣播到所有宿主機,這樣開銷和延遲都不可接受,而且也不具有擴展性。我們這里有一個ARP代理,它是由本地控制器直接管理維護的,所以ARP請求在本節(jié)點就被攔截并回復,這里也體現了網絡中控制平面和數據平面的徹底分離。然后,VM A開始與VM G進行IP通信,不需要這時候再向管理平臺詢問VM G的位置,在創(chuàng)建虛擬機時,本地控制器就已經下發(fā)好轉發(fā)規(guī)則,所以流量經隧道封裝后,直接向host 4發(fā)出數據包。
也就是說,在邏輯上和物理上,網絡路徑都盡可能短。同時,盡可能避免了ARP這種“自學習”型協議的問題,不但降低了延遲,還提高了對網絡的控制能力。
前面說的都是更上層的設計和實現,重點說的是物理機之外的SDN實現。
現在我們來看看主機內部的網絡結構。這里我們的設計目標就是高性能(延遲和帶寬)和低的資源占用。
我們的設計思想是全用戶態(tài)實現,并充分利用硬件卸載特性。
全用戶態(tài)軟件棧一方面是更易維護,升級迭代更快;另一方面就是提升性能,可以進一步減少用戶態(tài)和內核態(tài)的切換和內存數據拷貝次數。而充分利用硬件卸載特性能可以顯著降低CPU和內存的資源占用,性能也更高。
我們詳細來看:整個主機網絡結構,我們以intel的DPDK為核心,DPDK是高性能的用戶態(tài)網絡庫,使用了大頁內存管理、無鎖隊列、快速流分類、輪詢模式的用戶態(tài)網卡驅動等技術,提供了強大的網絡處理能力。
圖中的virtio是半虛擬化IO框架,由虛擬機中的virtio前端和宿主機中的virtio后端組成,它們之間通過循環(huán)緩存區(qū)交互數據,現在基本成為了IO虛擬化的標準。
使用DPDK技術的虛擬交換機,數據平面的處理過程全部在用戶態(tài),virtio后端也在用戶態(tài)實現,并且可以直接利用物理網卡的VMDq、流量鏡像、虛擬網橋等硬件特性。這樣其實數據平面的很多處理都卸載到物理網卡。
其中黑色實線箭頭是控制平面,本地控制器預先配置好OVS的流表規(guī)則,紅色虛線箭頭代表了數據平面。
其中左邊的虛擬機表示的是虛擬機里面也使用DPDK,這種是高性能NFV的實現方案,性能更出色,當然相關網絡功能需要使用DPDK開發(fā),我們正在將負載均衡服務向DPDK移植。右邊的是業(yè)務虛擬機,代表的是提供給用戶使用的虛擬機情況。
圖中的SRIOV的數據平面因為不在本地控制器的控制范圍,只能在TOR層面控制,所以目前我們只用于NFV中。
說了那么多,就說我們到底性能提升怎么樣,這是我們一個評測,是在我們的標準一體機環(huán)境中測試的。
上面表格對比的是純軟件情況下VXLAN疊加網絡和使用硬件交換機作為VTEP情況下的對比測試。這里的大包帶寬測試,主機網絡部分的優(yōu)化對降低延遲有一定作用,對帶寬影響小,這里主要是前面數據平面方案的性能提升??梢缘綆捥嵘苊黠@,能達到接近于線速,延遲顯著降低,資源占用也少。
下面表格是體現的主機網絡優(yōu)化的作用,在小包轉發(fā)情況下對比明顯。包轉發(fā)速率從Linux原生方案的70萬每秒提升到250萬每秒。這說明Linux的網絡協議棧并不高效,尤其是對于小包轉發(fā)來說。而我們的全用戶態(tài)網絡方案對小包轉發(fā)性能提升明顯。CPU資源占用降低特別明顯,從占滿6個核(也就是物理機一半的CPU資源),降低為只占用一個核,其他核完全空閑。當然實際網絡應用的性能提升不會這么明顯,因為有不少需要CPU處理的業(yè)務邏輯。
前面說的都是我們在性能方面的優(yōu)化,主要包括低延遲、自由伸縮、資源占用低三方面?,F在說說易操作,重點是運維方便。
首先看鏈路連通性檢測和診斷。舉一個簡單的例子,當2個虛擬機互通出現問題時,運維人員需要查詢虛擬機位置、查詢主機間網絡拓撲、整理出流量拓撲、登錄若干個設備,如果一切順利的話,他可能定位到故障點。但是采用疊加網絡之后,這些流量對傳統(tǒng)的交換機不可見,很難定義虛擬機通信到底哪一點出現問題。更不用說大規(guī)模下,以及主機網絡中的軟件復雜性。
端到端監(jiān)測將源、目的虛擬機報文流經的路徑以圖形化的形式展現,快速直觀地展示端到端網絡狀態(tài)。這里的原理同traceroute,但采用的是本地控制器模擬虛擬機在虛擬網絡中發(fā)送icmp報文。
還有一種更棘手的情況,就是發(fā)生了網絡擁堵,因為流量是動態(tài)變化的,如果采用逐一檢查每個網絡節(jié)點的統(tǒng)計值,排查出網絡擁堵點特別困難,尤其是在疊加網絡情況下,流量被封裝起來,定位特定業(yè)務流量的瓶頸,用傳統(tǒng)方法根本不可行。
看圖中的例子,左邊的一個虛擬機向右邊的發(fā)送數據,在左上的這個交換機上發(fā)生了擁堵,實際整個通信路徑的有效帶寬降低了。
網絡瓶頸檢測的原理很簡單,控制器可以檢測特定虛擬機在全部網絡節(jié)點的流量統(tǒng)計值,在觀察窗口內能找出特定流量在每個網絡節(jié)點入口和出口的流量差距,定位網絡瓶頸。
但實現上必須是物理交換機能“看到”隧道中的內部流量情況,按內部流量的mac值區(qū)分特定流量。在我們的數據平面方案中,TOR交換機均具有此項能力。
管理網絡和存儲網絡更簡單,在觀察窗口內檢測物理交換機這些中間網絡節(jié)點就可以定位。
這個還能更進一步,我們下一步計劃要做,就是反饋控制,依據檢測的結果自動調整對網絡的控制。
說了那么多,其實超融合架構下網絡我們還有很多很多工作要做,這是我們對超融合架構網絡的展望:
1. 我們認為SDN主戰(zhàn)場是數據中心,超融合架構是主要應用場景;
2. 超融合架構中計算、存儲、網絡三網進一步融合。
3. 計算、存儲、網絡資源協同控制。
4. 最終目標實現指尖上的數據中心——軟件定義數據中心,讓我們系統(tǒng)能夠協同控制計算、存儲、網絡各種資源。
我的分享就到這里,謝謝大家。
編注:中國存儲峰會是每年一度、亞洲最具規(guī)模的存儲產業(yè)年度大會,歷時十二載,記錄了存儲產業(yè)的諸多變化。每年的存儲峰會都吸引學術界、產業(yè)界和最終用戶代表的積極參與。存儲峰會對中國存儲行業(yè)的發(fā)展做出了許多重大貢獻。云計算、大數據對傳統(tǒng)IT產業(yè)帶來了許多變化,為IT系統(tǒng)提出了新的要求,存儲作為IT系統(tǒng)中極為重要的一環(huán)也在迎接新的挑戰(zhàn),正在舉行的2016中國存儲峰緊抓熱門需求,從技術、產業(yè)、產品角度,匯集了資深行業(yè)人士,呈現年度最權威的存儲盛會。