天天看點

騰訊雲超高網絡性能雲主機揭秘

随着機器學習,網絡遊戲,電商搶購等應用的大規模爆發,公有雲使用者對虛機網絡性能要求迅速提高。騰訊雲推出網絡優化型執行個體,實作最高450w PPS的虛機網絡轉發性能以及多達25Gbps的網絡吞吐性能,網絡延時大大降低。既可以滿足使用者高速計算的需求,也讓使用者能夠在虛拟化網絡中得到媲美實體機的性能體驗。

那麼騰訊雲網絡優化型執行個體是如何做到這一性能的呢?

▲常見虛拟網絡的實作

上圖描述了基于KVM的傳統虛拟化網絡的實作,從圖中我們可以看到,雲伺服器外發資料包需要經過KVM、QEMU、TAP、vSwitch等元件的處理,需要經過多次上下文切換,整個路徑很長,與實體伺服器相比,這裡存在明顯的性能瓶頸。主要原因在于在虛拟化環境中,網絡邊界發生了變化,網卡從真實硬體變成了軟體模拟,邊界交換裝置也從硬體交換機變成了軟體vSwitch。這些軟體模拟工作絕大部分都在主控端Linux核心來完成。然而Linux核心協定棧設計的目标不在于高性能封包處理,而是通用靈活。在虛拟化環境下,繼續使用核心協定棧作為封包交換中心,性能難免捉襟見肘。

為了解決這個問題,騰訊雲引入智能網卡和DPDK兩種專用高性能封包處理平台。

DPDK是一種使用者态高性能封包處理平台,相對于Linux核心,它通過以下手段來優化封包處理性能:

輪詢模式收包,降低中斷上下文切換開銷。

使用hugepage并且預配置設定記憶體,減少tlb miss和缺頁中斷導緻的延遲抖動。

不依賴任何系統調用,消除使用者态/核心态切換開銷。

通過良好設計,可以實作程序間無鎖,總體性能随程序數目線性增長。

使用過程中一般會運作在隔離cpu上,降低程序排程對dpdk的影響。

通過以上技術,dpdk可以實作10倍以上于Linux核心的封包收發性能。

智能網卡是一種新型網卡硬體,相比于普通網卡,它主要智能在以下幾個方面:

更出色的SR-IOV性能,可以虛拟出更多的VF配置設定給虛機使用。

讓雲伺服器可以直接使用高性能實體網卡硬體,無需将資料包繞行到母機網卡。

智能網卡具有各種硬體加速功能,包括資料包硬體解析,校驗和offload,流量控制,網絡安全加速等。

智能網卡本身是可程式設計的,可以靈活實作各類vSwitch邏輯,避免了主控端伺服器的資源消耗。

既然DPDK和智能網卡能達到如此高的性能,那為什麼之前沒有見到在公有雲中使用呢?

究其原因,是因為這兩個平台開發難度比較大。傳統的vSwitch一般在核心實作,依賴各種開源軟體以及核心架構,但DPDK及智能網卡僅僅提供了收發包接口,所有進階功能都需要自行實作。如果軟體架構設計不好,很可能将核心中影響性能的問題再次引入新平台,而無法充分發揮平台優勢。是以針對新平台的vSwitch設計對軟體開發人員提出了很大挑戰。

為了解決這個問題,騰訊雲将vSwitch拆分成快速路徑和慢速路徑。慢速路徑負責連接配接首包的路由/ACL/安全組等規則執行,快速路徑負責連接配接後續包的快速處理。通過分離式架構設計,騰訊雲實作了最高450w PPS的網絡轉發性能以及多達25Gbps的網絡帶寬,網絡延時大大降低,實作接近實體網卡的網絡延時。同時,保持了已有的VPC網絡的使用者體驗的一緻性。

這樣,傳統虛拟化網絡的實作方案的瓶頸在網絡優化型執行個體得到完美的解決,在網絡收發包性能上、内網帶寬、網絡時延上都得到了較大的提升。