本文是針對在基于主機的網絡應用程序中采用通用CPU的相關優勢及陷阱進行深入挖掘分析,并就當前被用于基于主機的網絡以提供更好性價比的不同服務器網絡硬件技術進行探討的系列文章的第三部分。在本系列文章的第一部分中,我們主要討論了基于主機的網絡和當使用通用CPU以部署數據路徑時所潛在的問題。同時,我們還探討了智能服務器適配器對于硬件加速和服務器卸載的重要性。而在本系列文章的第二部分中,我們探討了當前被用于這類智能服務器適配器的三大基本技術,并就為基于主機的網絡應用程序提供最佳性價比的解決方案提供了相應的指導和建議。在最后一部分文章中,我們將與大家共同探討促成智能服務器適配器在未來幾年成為數據中心主流技術的幾大關鍵要素。
在最近幾年中,許多數據平面處理的實例都已經得到了長足的發展,無論是在開源社區還是在數據中心運營商內部的商業部署。例如,開放虛擬交換機( Open Virtual Switch ,OVS [ 1 ])的用戶空間和內核組件已經發展演化到引入了更先進和更具可擴展的隧道和數據流處理能力。OVS的內核模塊處理隧道與交換。該內核還針對不重疊或精確匹配的數據流實現了一個快速緩存機制。最近,支持隧道的諸如VXLAN [ 2 ]和通配符匹配規則也已經被添加到數據路徑。在諸如微軟Azure這樣的商業部署中,虛擬交換機支持網絡虛擬化的租戶,以及復雜的匹配操作功能,如負載平衡和安全性。在谷歌Andromeda網絡,數據包處理節點為防火墻、安全、速率限制、路由等提供匹配數據流和數據平面處理等功能。
在主機或服務器領域,基于主機的網絡數據平面處理已經獲得了演變,部署在通用CPU如x86指令架構的軟件中。然而,不同于在這樣的通用CPU執行傳統的處理任務,數據平面處理,及更特別的隧道的封裝和解封以及基于流的匹配處理是獨特的。當他們在通用的CPU上執行時,這種獨特性會帶來顯著的不足。替代方案已被提出,如在多核SoC或FPGA運行數據平面,但如本系列文章的前幾部分所提到的那樣,這些方法只能提供邊際收益。
有效且規模化的實施數據平面處理需要處理核心和產品的架構元素是由特殊成分專門打造的。接下來,我們將著重討論成功的七大重要因素。
關鍵因素1:處理器的多線程
流處理需要訪問內存,諸如基于RAM的DDR3-或DDR4-。為了協助在CPU核心的處理,基于硬件的加速器處理重復或專門的功能,例如加密和散列。單線程處理,通過通用CPU(如標準的x86,MIPS和ARM內核)、內存和加速器存取延遲浪費CPU周期。例如,訪問DDR3內存需要幾百個CPU周期,而訪問硬件加速器可能需要更長的的周期,使CPU核心閑置無用,在這一延長期間有效性無用。對于典型的基于主機的數據平面處理任務,這個問題往往會降低CPU的有效利用率約10-20%。軟件定制編碼技術可以填補延遲差距,但這些變化是費時且相當麻煩的,并且其減少了軟件的可移植性。
解決該問題的一個理想的辦法是實現高度多線程的處理核心。當處理核心多線程(例如,每個核心八線程),處理器流水線可以始終執行有用的指導,而不會停滯或閑置。其結果是,較之單線程機器的存儲器或硬件加速器的訪問要求顯著,而在典型的基于主機聯網和新興NFV應用程序的數據平面處理的情況下,多線程處理增益可以高達800%。
關鍵因素2:許多處理器核心優于一些更快的核心
通用CPU通常是針對最高處理器時鐘速度以功率和面積為代價實施了優化的。例如,超過15個階段的大型復雜管道,亂序執行和分支預測能力在這樣的CPU中是常見的。如前面所解釋的,由于缺乏多線程,以減少內存延遲的影響,也同樣需要大的高速緩存。當這樣的通用的CPU核心被打包成一個單一的硅芯片,如在MIPS-或基于ARM的多核SoC,有效性能增益比包裝在相同的硅芯片的大量較小的處理核更低。換言之,在硅芯片使用更加優化的多線程處理核心要比使用較少的具備很少或沒有線程和大型高速緩存的高性能通用CPU核心的數據平面處理更好。使用大型處理器內核會有顯著的開銷,其價格和功耗在服務區適配器設計中已經被設置,作為通用服務器用于計算節點顯示。
關鍵因素3:內存和加速器的多線程
在數據密集的流處理,對于內存和硬件加速器的有效訪問是相當關鍵的,但該挑戰僅僅只是加劇了大量的流量和復雜的處理(如用于匹配和復雜操作的元組數目)。鑒于越來越多支持更多的用戶,租戶和應用程序的需要,以及對于安全性和服務水平相關的嚴格監管政策的要求,這樣的要求,必然會成為數據中心普遍的問題。雖然更快地訪問內存是很重要的,但多線程訪問內存更為重要。一個具備硬件加速器的多線程的內存子系統可以確保避免處理核心停滯。這樣一個高效的設計的一個例子是使用多個具備高帶寬縱橫輸入SRAM內存庫。采用專用的高性能緊耦合的硬件引擎執行關鍵功能如原子、統計、查詢和負載平衡來訪問這種SRAM內存庫,進一步實現了加速。
關鍵因素4:高性能分布式網格構造
以上介紹的多線程處理核心,硬件加速和多組存儲單元必須同步,提供高性能的同時避免停滯。在訪問共享資源時,傳統的共享總線結構受到帶寬飽和和負載的競爭問題的作用。這個問題可以通過在處理元件之間使用具備多比特分帶寬/對半帶寬 (bisection bandwidth)的一個有效的高性能分布式網格構造來避免。這種分布式的網格構造會避免沖突和在通用的基于CPU的SoC常見的共享總線結構飽和的問題。
關鍵因素5:優化基于主機的網絡的編程工具
雖然乍看之下,通用CPU內核似乎很容易編程,例如,通過使用標準的基于C語言的編程工具,但當試圖讓應用程序并行及性能規模化的時候,其難度和復雜程度大幅增加。所以從這個意義上說,它們缺乏對于開發優化的數據平面處理應用程序良好的支持。當編程的多線程處理核心時,采用強大的、易于使用的、基于C語言的程序工具以支持并行編程環境,并在編程期間支持提供線程級可視化是相當關鍵的。他們也應該允許創建針對多線程操作優化的數據平面處理程序。
除了基于C編程工具,正在支持高級編程語言,如P4[3]正成為可能,其能夠使說明和數據路徑的功能的代碼更簡單并且不那么耗時。使用開源的P4語言,設計人員可以編寫簡潔的程序,以靈活地定義匹配,操作處理,以快速部署新的協議,如新興的網絡覆蓋 。P4也是硬件無關的,所以它可以被重新定向到不同的技術和實現方式中,條件是它們支持P4的環境。
關鍵因素6:命中計算節點經濟
智能服務器適配器正在不斷的以自然的方式發展,從低容量的特殊應用程序開始,有望成為大容量的主流部署。采用多內核SoC芯片的初始部署都發現了他們進入設備和專用的服務器的方式,有時被稱為服務節點或網絡節點。在這樣的應用程序中,一些情況下使用網絡處理器和FPGA。由于服務節點的部署量并沒有非常大,數據中心運營商都愿意為數據平面處理的可編程服務器適配器支付溢價。
盡管基于主機的軟件定義網絡(SDN)和網絡功能的虛擬化(NFV)技術已經成為數據中心應用的主流,然而,對于智能服務器適配器在更高容量的計算節點的需求預計會大幅上升。這種情況將需要智能服務器適配器能夠較之早期服務節點部署提供更好的性價比。具體而言,這樣的適配器將不得不在今天部署的大多數服務器的25瓦的PCI Express總線封裝內以線速運行。最重要的是,他們必須有合理的價格,以支持計算節點服務器的容量經濟。因此,在可編程服務器適配器的硅技術和數據平面處理架構必須實現性能,規模性和經濟性。上述從1至5的五大關鍵因素均要求滿足數據平面處理在25-, 40- and 50GbE帶寬的要求,同時命中數據中心運營商們對于計算節點經濟的預期。
關鍵因素7:為主流應用做好準備的軟件系統
除了滿足性能、功能、價格和功耗方面的要求,主流對于可編程的服務器適配器的采用將需要一個良好支持的軟件系統。具體來說,服務器操作系統內核、用戶空間和虛擬交換機的網絡軟件堆棧必須支持安裝和運行這樣的服務器適配器,可以卸載數據平面處理如虛擬網絡隧道和匹配相關流程處理操作。
易于與現有的服務器應用程序、開源軟件和最大特征功能的快速集成整合是一套解決方案能夠獲得成功的至關重要的原因。舉個例子,卸載運行在現有的開放源代碼解決方案上的架構,如Open vSwitch,而不是用專有或分叉的解決方案來替換它們,無疑會占上風。關鍵的一點是,當任何新功能在開源社區中實現部署時,必須向上融入相應的開源主線樹(如www.kernel.org或www.openvswitch.org)。來自我們所熟悉的操作系統廠商的商業操作系統和管理程序的分布也應包括上述的數據路徑卸載的功能。操作系統供應商必須支持可編程的服務器適配器的設備驅動程序和相關軟件的認證資格,以便使這種適配器能夠被主流數據中心運營商采納實現無縫操作。
主流市場的智能服務器適配器
基于主機的網絡部署預計將推動主流市場對于智能服務器適配器的應用。這些適配器必須是特制的,并支持其成功的主要因素。而上文中,我們跨架構和技術討論了服務器適配器獲得成功的七大因素,以及規模經濟和軟件系統的要求。
索引
[ 1 ]開放的虛擬交換機(open virtual switch)是一種開源的社區開發。參見www.openvswitch.org。
[ 2 ] VXLAN是一款正在IETF開發的網絡虛擬化相關的規范。其代表了虛擬可擴展局域網。
[ 3 ] P4是一款開源的高級編程語言,與硬件無關。參見www.p4.org
關于作者
本文作者Nick Tausanovitch擁有電子和網絡相關行業超過25年的經驗,從業的范圍涵蓋了從FPGA和芯片設計到系統架構和產品營銷。Nick目前是Netronome公司解決方案架構資深總監,他主要負責該公司的數據中心應用程序企業智能服務器適配器產品。此前,他曾負責Broadcom公司的高端網絡處理器產品線。在此之前,Nick曾擔任IDT公司的電子設計主管,在那里他開發了TCAMs和搜索引擎算法。并曾在Nortel公司擔任過系統架構師,負責開發交換機、路由器和網絡處理器。Nick持有羅切斯特大學的電氣工程科學學士學位及紐約大學理工學院電氣工程碩士學位。