閱讀937 返回首頁    go 阿裏雲 go 技術社區[雲棲]


阿裏雲ECS網絡增強型實例設計原理

摘要:為了滿足直播、遊戲、Hadoop、消息中間件等對網絡轉發能力有非常高要求的用戶場景,主流的雲計算廠商都推出了針對網絡性能優化的虛擬機實例。如何實現高性能、低延遲、少抖動的虛擬機網絡性能,一直都是非常有挑戰的問題,業界的有多種實現的方法,但是都各有利弊。在雲棲社區和阿裏雲網絡團隊聯合主辦的2017阿裏雲網絡技術在線高峰論壇,阿裏雲高級技術專家李星就為大家分享了阿裏雲的網絡增強型的解決方案和思考。

本文內容根據演講嘉賓分享視頻以及PPT整理而成。

一、傳統虛擬化網絡所麵對的挑戰和瓶頸


在傳統虛擬化網絡領域的用戶痛點
在虛擬機領域中,CPU性能、內存性能以及IO性能早就都有了很多比較成熟的技術方案,但是網絡性能的方案上卻始終存在一些差距。這裏麵的原因其實是多方麵的,比如網絡性能的吞吐速率比正常的存儲IO速率要快很多,甚至有可能很多用戶的應用場景需要達到百萬級別的報文轉發速度,所以需要GB甚至10GB的帶寬吞吐能力。另外一方麵,不同於CPU和內存以及IO流量,網絡數據包的轉發、業務邏輯的處理也是非常複雜的,需要在整個網絡轉發流程中間增加常用的一些規則,比如路由查找、ACL查找、流量控製以及流量統計等非常多的業務邏輯處理。其實以上提到的是兩個非常矛盾的因素,一方麵需要有非常高速的網絡數據的吞吐能力,另外一方麵需要對於這些高速轉發的數據進行複雜業務邏輯的處理,這樣的矛盾也就導致了網絡性能在非常長的一段時間內無法達到很高的水平。
567786ba67f2194781acc4d7223d55abb7af2271
站在網絡用戶的應用場景來看,由於網絡性能存在著一些短板和一些瓶頸,所以麵對一些對於網絡性能要求比較高的用戶,在吞吐和延遲上麵遠遠沒有辦法滿足用戶的需求,在用戶的網絡流量達到高峰的時候也沒有辦法去保證整體網絡性能的穩定性。而由於整體性能的不足,導致也非常容易觸碰到網絡隔離性的瓶頸,進而出現各種各樣的資源競爭。

搞不定的用戶場景
由於網絡性能的不足,在麵對需要支持高並發的網絡業務場景的時候就會顯得捉襟見肘。下圖中就列舉了一些“搞不定”的用戶場景的例子。比如電信轉發業務以及一些手遊或者網遊加速的業務,這兩個場景本質上來說都是對於一些小包進行高速轉發的場景,這些場景對於網絡的吞吐能力要求非常高;再比如數據庫、緩存以及消息中間件等業務,這些場景下對於網絡帶寬的要求非常高,並且需要對於網絡整體的穩定性能夠提供一個很好的保證;還有涉及到大數據生態領域的Hadoop以及Spark等開源組件的業務,這一類的大數據業務在對於網絡性能要求比較高的同時也會有非常大的IO存儲流量,所以需要在虛擬機層麵能夠保證在網絡和存儲兩方麵的性能都同時達到非常高的要求;除此之外,還有就是最近兩年非常火的網絡直播和流媒體業務,這類業務在對於網絡性能要求的高的同時,對於延遲的敏感也非常高,這是因為在網絡中可能出現的一些小的網絡丟包或者延遲變大都會影響最終用戶的觀看體驗。
c3cb7f29e127179cd2b1d9a4aa29abc8365a7313
因為網絡性能存在著這樣和那樣的瓶頸和短板,所以現有的網絡性能解決方案在很多的網絡流量高並發場景上麵其實是不夠友好的,這也是阿裏雲持續地開發網絡增強實例的初衷。

瓶頸在哪裏?
上麵提到了網絡性能的提升存在著很多瓶頸,接下來就分享這些瓶頸究竟是什麼。在網絡轉發流程的鏈路中間有一個非常關鍵的組件就是vswitch,全稱是Virtual Switch,它承載著虛擬機的網絡流量以及與外部網絡進行互聯互通的功能,所以vswitch的性能對於整體網絡吞吐的性能會產生非常大的影響。vswitch處理的其實是多租戶的雲平台的虛擬機網絡能力,由於多租戶和虛擬化肯定會給網絡的吞吐帶來一定的性能損耗和下降,而傳統虛擬網絡的轉發其實是依賴主機CPU能力進行處理的,所以它肯定會受限於CPU整體的計算能力。
7668cf948529a4ee388aeb33c933588ee9542163
另外由於轉發流程是基於一些通用的轉發框架實現的,所以往往會由於轉發的流程過長進而造成一些性能的損耗。其實在網絡轉發的流程中存在著很多的共享資源,包括CPU、內存、Cache以及硬件設備等,而對於這些共享資源的爭搶以及競爭或多或少都會引入一些鎖的開銷以及中斷和調度的開銷,而上述的這些開銷都會對於整體的網絡性能造成非常大的衝擊。

vswitch是什麼?
前麵所提到vswitch是整個網絡轉發的鏈路中間一個非常重要的模塊,那麼它具體承載了哪些功能呢?首先vswitch承擔了虛擬機和外部網絡互聯互通的基礎設施功能,在vswitch之上才能實現整體的隧道網絡——VPC網絡,在VPC網絡之上才能夠衍生出來眾多的網絡業務,包括網絡路由、安全組以及帶寬限速、連接跟蹤、流量統計等。所以可以看到vswitch的主要功能其實有兩方麵,一個方麵是承載網絡的互聯互通,另一方麵還需要承載網絡之上的豐富的業務邏輯。
f0f581a34abbc42cafcd8acbf4f064b0418e6007

vswitch的關鍵技術
vswitch的目標其實非常簡單,就是始終去追求更高的性能和更多的、更豐富功能。而vswitch的關鍵技術主要包括兩方麵,一部分是關於如何提高數據交換的效率才能獲得整體的虛擬機網絡性能的提升。另外一部分就是網絡轉發的功能,如果能夠更好地支持網絡轉發的功能,最終就能反映到業務上的網絡功能的疊加。
1ba2a5591d5addd4ce29ece8c61b6844057c30d4

二、業界傳統的虛擬化網絡解決方案

業界常用的方案
a30f4fdab328d2574cae8bed37cbcee5b558d041
在業界傳統的方案中,vswitch的發展其實有一個非常清晰的脈絡。最早大家都在使用Linux bridge,也就是Linux通用的內核轉發模塊。之後隨著技術的發展,開始出現一些專用的模塊來處理虛擬機網絡的流量,比如業界的Open vswitch等。而在追求更高網絡性能的場景下麵,大家往往會去選擇一些SRIOV方案,包括Asic SRIOV或者Smart nic SRIOV等都有一些廠商在應用這些方案,但是SRIOV方案在帶來高性能網絡的同時也帶來了一些問題。

傳統SRIOV方案
SRIOV的方案通過網卡直通到虛擬機內部,將PCIE設備直接暴露給虛擬機使用,通過網卡的DMA直接Pass掉了主機CPU參與轉發的過程。由於不需要CPU的介入,網卡硬件直接和虛擬機進行交互,所以網絡整體的性能會非常高。但是由於網卡的轉發功能和策略都非常簡單和單一,所以在SRIOV的方案之下就有可能出現因為網卡轉發策略的過於簡單而導致網絡的隔離性不夠好的情況。除此之外,因為網卡直通給虛擬機使用所以會帶來另外一個問題就是在虛擬機內部可能會看到網卡的驅動,這樣對於用戶的使用也會造成非常大的問題。
f2466e827d8b269807895f7bc261e5b6623da9ee

三、雲計算廠商的虛擬化網絡方案

雲廠商的方案
7693640588362e4270cceefdc01e6206056bee30
在雲計算領域中,各個廠商為了推出具有更高的網絡性能的實例都會提出一些自己的解決方案,典型的代表如下所示:
  • SR-IOV+NP,將SR-IOV和NP也就是Network Process進行結合的方案,通過SR-IOV來做高性能,並通過Network Process執行一些複雜的業務邏輯。
  • SR-IOV+FPGA,通過SR-IOV和FPGA來實現高性能和業務邏輯兩者的綜合,在追求性能的同時也能夠通過使用FPGA來完成網絡轉發的業務邏輯。
  • 物理裸機,這種方式就是承認虛擬機的網絡性能是無法達到與物理機同等水平的,所以直接選擇向用戶提供物理機托管的業務。讓用戶高並發的網絡流量跑在物理機之上,但是這些硬件方案或者純物理機的方案其實都存在著不少的問題,比如會帶來硬件上的依賴、驅動兼容性的問題、對於物理網絡的依賴以及可擴展性的問題。

在虛擬網絡的領域之中,目前大致有如下圖所示的三類方案。
119a6665022fca73d7c831215edda8a18d0e723c
傳統的方案具有最好的通用性,但是性能的瓶頸也非常明顯。第二類方案則是利用硬件加速的方案,可能能夠達到最好的性能,但是本身也會存在擴展性、驅動以及熱遷移方麵的各種各樣的局限。還有一種方案就是目前阿裏雲增強網絡實例所采用的策略:軟硬件結合方案,由於在軟件優化方麵具有巨大的空間,再結合卸載掉部分硬件的功能就能夠得到非常好的網絡性能,同時也能夠非常好地兼容原有的驅動以及工具棧,並且能夠複用原有的網絡轉發的生態。

vswitch的演進
接下來回顧vswitch的整個演進過程。在最早的時候,基於Linux通用的工具棧和協議棧來實現自己的虛擬機網絡轉發,在發現這樣的方案過於簡單和單一之後,很多人選擇了定製Linux轉發模塊來滿足自己的需求。再往後出現了基於流的轉發策略以及隧道技術和VPC網絡技術,在這個階段SDN控製器越來越多地參與到虛擬網絡的控製中。再往後的性能優化路線上麵出現了快速和慢速路徑相結合的解決方案以及軟硬件相結合的整體方案。
57c26661e3a00ba192ab0ef3f3d8962483c2a7ef

四、阿裏雲ECS網絡增強實例的設計

阿裏雲網絡增強
bd7960dc350b8e73a5d29fa520696dcd55cf7455
阿裏雲在網絡增強實例的研發上麵做了很多工作,包括持續地版本演進、架構優化、專用場景下的性能調優以及持續地更快地推動更豐富的功能上線,並且還結合一些硬件加速的功能同時做到平台的兼容解耦。

設計原理-流程優化
1282a1c84744ea935c88a4c780e75a6cf687d734
阿裏雲在增強實例上麵所做的流程上優化主要包括對於主機協議棧的bypass,其能夠節省掉很多不必要的業務邏輯的處理並提升性能。而由於對於主機協議棧的bypass就帶來一個問題也就是需要自己去實現一些更加輕量級的協議棧。於是阿裏雲網絡團隊實現了一套快速和慢速轉發相結合的框架,通過慢速路徑執行一些複雜的業務邏輯,並通過快速路徑實現高性能的網絡流量轉發。並且在架構上麵做到了減少調度和切換以及無鎖轉發支持轉發規模的線性擴展,最大可能地去利用轉發係統的特性實現通過軟硬件相結合提升整體的吞吐。

設計原理-數據和資源
dacfc983af44f78308e4514f7ae61bbbb77c42de
阿裏雲網絡團隊在數據和資源層麵也做了相當多的優化工作,包括優化數據結構,保證Cacheline對齊,減少內存訪問次數,通過將原來的內存動態申請策略調整為靜態預留的策略。並且通過對於架構的改進實現設備的解耦以及資源的獨立,通過穩定的流量限速和防攻擊的策略來保證整體網絡吞吐的穩定性和隔離性。

Apsara vswitch介紹
0d3ed3d424be87bdeae154bcd6ddb351a889416b
Apsara vswitch是阿裏雲自研的虛擬機網絡交換平台,它能夠做到每秒數百萬級別的數據包轉發,並且同時完成對於Internet公網、私網以及用戶專用網絡的同時接入。通過Apsara vswitch也能夠同時實現ECS與阿裏雲眾多網絡的對接,ECS能夠通過Apsara vswitch直接訪問阿裏雲所提供的眾多雲服務,包括雲OSS、RDS以及SLB等。

Apsara vswitch實現了一整套快速和慢速相結合的方案,通過慢速路徑去執行業務邏輯的查找,包括路由、隧道、QOS、ACL、統計和NAT等,但是這些業務邏輯通常隻會在數據包中的首包進行查找並形成一些轉發的策略和規則下發到fastpath的Cache之中。後續的操作會通過fastpath的一次查找完成高速轉發。這樣通過快速和慢速相結合的策略,使得整體的轉發業務能夠兼顧到業務邏輯的複雜性和高性能轉發的需求。
1a0ec7c5c866cfb5459566ac03189ac7fd18ee50

ECS網絡多隊列
在實現vswitch底層的高速轉發通路之後,對於端點設備,阿裏雲在ECS網絡的網卡層麵也做了相當多的優化工作,其中就包括支持ECS網絡網卡的多隊列。通過打開多隊列就能夠將網絡的流量分攤到多個虛擬機的CPU上進行並行處理,這樣就能夠非常顯著地提升虛擬機網絡的整體吞吐能力。當然目前具體的網卡隊列個數和ECS實例的規格還是一個綁定的關係,用戶在購買相應的ECS網絡規格的時候會獲得相應的網卡隊列數量,通常是ECS規格越大,網卡隊列的數量也就越多,性能也會得到更大的提升。
855ae5857441d8085630ba28ebb0bf60db3fbc21
下圖所展示的數據是阿裏雲普通實例和網絡增強實例的一些純粹轉發能力上的對比。其中上側圖片中綠色的部分表示的是網絡增強實例的吞吐能力,可以看到相對於普通實例,網絡增強實例的整體吞吐能力會有將近4倍的提升。另一方麵如下側圖所示,阿裏雲網絡增強實例在網絡延遲方麵也會顯著下降,10G網絡和25G網絡增強實例相比於普通實例都會顯著地下降。
79214c6c5fd794e2b0da89c66d257177455dc189
接下來分享在具體的業務場景下麵使用網絡增強實例和普通實例的測試數據的對比。sysbench是在數據庫領域裏麵非常常用的測試方法,下圖中的第一幅圖展示的是95%以上的延遲數據統計,可以看到使用網絡增強實例相對於普通實例,數據庫的延遲可以得到非常顯著的下降。第二幅圖展示的是數據庫處理的QPS能力數據,這裏的網絡增強實例相比於普通實例也是會有一個非常明顯的上升。
50d0931a1364638e9717173b28428169a9de6ac0
綜上所述,無論是從網絡流量轉發的角度,還是到具體的數據庫這樣端到端的典型業務場景的角度,都可以看到網絡增強實例相比於普通實例無論是在延遲還是網絡吞吐能力上都有顯著的優化效果。

阿裏雲ECS網絡增強實例的功能
79f153bb9db2810c3fa9be073f0fc78622d36229
除了能夠提供非常高的網絡吞吐能力之外,阿裏雲網絡增強實例還對於功能上的支持做了非常完整的工作,包括虛擬機能夠兼容原有的virtio接口,在不需要更換網卡驅動的情況下就能夠無縫地遷移到網絡增強實例的規格之上,這與其他的雲廠商的方案是不同的。傳統情況下,其他廠商的網絡加速方案需要用戶去修改或者更換內部的網卡驅動,而這對於用戶而言將會造成比較高的使用門檻和不便利性。除此之外,阿裏雲的網絡增強實例也能夠支持彈性多網卡的擴展能力,支持虛擬機內部直接去使用DPDK這一類的標準PMD來加速用戶內部的網絡應用轉發能力,並且支持虛擬機使用網卡多隊列和RSS打散的能力,支持虛擬機將網絡數據包的部分業務邏輯offload到後端,由後端來完成。通過卸載部分數據包的處理邏輯,在提高整體性能的同時能夠很大幅度地降低虛擬機內部的CPU開銷。阿裏雲網絡增強實例目前已經能夠支持覆蓋到原有的萬兆網絡和現有的25G網絡,並且能夠支持現在阿裏雲提供的多種異構計算實例規格族,包括GPU以及FPGA等。增強實例同時也能夠和實例存儲技術相結合,在提供百萬級別PPS的同時向用戶提供百萬級別的IOPS,從而達到存儲和網絡性能均處於一個非常好的狀態。增強實例還支持VPC網絡中的所有功能,支持虛擬機進行熱遷移,並且支持用戶使用SLB負載均衡和高防這一類的網絡業務。

目前,在阿裏雲官網上已經發布了多類網絡增強實例的規格,包括計算網絡增強型和通用網絡增強型等。增強型網絡實例的規格還和阿裏雲最新的Skylake CPU以及25G網絡相結合推出了G5、R5以及C5這一類的超高規格實例,無論是從CPU計算性能、存儲能力還是網絡的轉發能力都做到了業界領先的水平,也非常歡迎大家到阿裏雲的官網上查看網絡產品和ECS產品的最新信息。
0a093f7694e88620d67af9cb4f9e74b346c774a5

五、阿裏雲ECS網絡增強型實例實踐與案例

實踐說明:NFV
f6753ddbed6bbad75be2b5011030a9cd3f9d953b
阿裏雲經常會在用戶那裏得到一些反饋,很多用戶往往需要運行一些NFV,也就是在虛擬機之上運行一些網絡功能虛擬化的業務,所以希望阿裏雲能夠提供SR-IOV的驅動。其實很多的用戶將NFV和SR-IOV將這兩類的需求做了等同,但是實際情況上是NFV的核心訴求是需要在實現高性能轉發能力的同時,對於轉發能力提供一個穩定性的保障,還有就是需要對於一些已有的NFV生態進行支持。其實在這裏麵一個非常關鍵的因素就是虛擬機能否支持DBDK這類的virtio的polling mode driver。而這個問題的回答是肯定的,阿裏雲支持用戶在虛擬機內部直接運行DBDK做網絡應用加速,並且支持用戶在ECS內部執行原有的NFV生態中的各種應用程序,來實現自己的業務。

實踐說明:ECS配置
0e0e9e7a33048d56b5bd3819ec46a9c9091ee7dc
接下來分享在結合網絡增強實例規格的時候,如何去配置ECS才能夠獲得更高的性能。首先阿裏雲非常推薦用戶打開虛擬機內部的網卡多隊列,並且執行一些網卡中斷的靜態綁定,因為這樣能夠幫助用戶使用更多的CPU來處理網絡報文,使得網絡能力能夠實現線性擴展。另外也推薦用戶在ECS內部關閉RPS和irqbalance,因為在虛擬化的場景下,某些業務可能會受到這一類中斷漂移和中斷轉發的影響,在虛擬化的場景下這類的功能可能會帶來性能的損耗。除此之外,阿裏雲還推薦用戶使用更高版本的Guest鏡像,因為隻有使用更高版本的Guest鏡像才能夠更加友好地支持網卡多隊列以及GRO、TSO這些特性,用戶也能夠在使用更高的版本鏡像的時候獲得更高的網絡轉發性能。

客戶應用案例
046db3d64aea357846611f9124df68d46dbceae8
目前,已經有大量的企業級用戶在應用阿裏雲的ECS網絡增強型實例,其中包括了一些流媒體的創業公司、比較火爆的直播APP創業公司以及非常多的網遊加速業務,除此之外還有微博這類大客戶。甚至是阿裏雲自己的一些NFV業務以及阿裏巴巴集團的電商交易數據庫和核心中間件也都在使用阿裏雲的ECS網絡增強型實例。

最後更新:2017-09-25 15:33:32

  上一篇:go  2017中國數據庫技術大會隆重開幕
  下一篇:go  確定不收藏?十張機器學習和深度學習工程師必備速查表!