網絡應用該選什么樣的處理器?
用戶對網絡業務豐富和性能增長同步發展的需求,使得多核處理器成為了眾多網絡通信和網絡安全應用開發商的新寵。但同時,多核處理器在網絡應用中也存在問題,尤其是目前我們還無法實現將控制平面與數據平面分離,而這一分離的好壞將決定多核應用交付時的性價比。在這種情況下,或許FPGA/ASIC與多核整合會成為一種趨勢。
隨著多核處理器的興起,眾多網絡通信和網絡安全應用開發商也把目光從x86架構轉向了專用或是典型的多核平臺上。網絡通信應用和安全產品開發商(以下簡稱應用開發商)看好多核,和網絡處理器曾經的風靡一樣,是有著很強的用戶需求驅動的。原始需求來自于用戶對網絡業務豐富和性能增長同步發展的需求。網絡業務應用最早只是進行簡單的IP網絡互聯,而今天則已經逐步演進到了對應用層的精細分析和控制,對網絡流量進行更深入的分析,對計算能力的要求也越來越高; 與此同時,網絡應用需要處理的輸入數據也在不斷飛速增長。傳統x86架構固然非常靈活,但卻不能有效解決對更高流量進行處理時計算能力不足的問題。
事實上,每當一種新的、號稱可以對流量進行高性能靈活處理的專用芯片誕生,對應用開發商來說都是一種刺激和鼓舞,尤其是這種專業芯片還可以為軟件開發者提供一種通用的編程能力,因此,多核處理器受到青睞也顯得合情合理。
三種架構各有優劣
據了解,應用開發商需要通過專用芯片完成以下專業工作:模式匹配,在報文流量中找到特定比特、字節模式的能力,如字符串匹配、報文特征匹配等;快速查表,根據報文流量特定字段進行查表操作,如路由表、流分類表、會話表等;報文計算,如Checksum校驗、MD5校驗、加解密運算等;對報文進行比特位域操作;隊列調度和管理;報文保序等。
網絡處理器***個在芯片級為應用開發商提供了上述基礎能力,但經過將近10年的發展,網絡處理器只贏得了少量的用戶,很多應用開發商投入了很多研發力量但卻并沒有實現預期的大規模成功。究其根本原因,是因為從x86架構遷移到網絡處理器的成本太高,一個對現有軟件架構沖擊太大的硬件必然會給軟件開發商帶來沉重的開發成本和維護成本。因此,網絡處理器只在少數幾個大廠商的核心產品中得到了應用。昂貴的開發成本造成網絡處理器缺乏大基數的用戶群,用戶群的萎縮直接帶來的是網絡處理器應用的無疾而終。
用于網絡通信設備的多核處理器,內部同樣也集成了上述專業工作中的一部分甚至全部功能。此外,多核處理器為應用開發商提供了靈活度更高的報文處理計算能力,筆者研究OCTEON處理器時,也為基于Linux即可開發、用C代碼來編程并使用這些功能而感到激動,但激動過后也不得不站在工程的角度去思考一個很現實的問題:遷移到多核處理器,究竟需要花費多少成本?會不會陷入類似當年網絡處理器的“泥潭”呢?
與網絡處理器相比,多核處理器為應用開發商提供了“基于Linux”這個開發利器。我們都知道,在x86上開發出來的眾多網絡應用都是基于Linux以及上面豐富的開源應用程序的,而x86上可以運行的Linux系統和程序幾乎可以不加修改地直接移植到MIPS(一種RISC處理器)上,也就是多核CPU上。天然被Linux支持的SMP架構,則可以讓多個CPU核同時被利用起來,這樣的移植工作量風險很小,投入也可控。
但同時,SMP架構并不能為網絡應用處理提供線性的擴張能力,也就是說,一個核處理100M,并不意味著兩個核可以處理200M、16個核可以處理1600M,SMP架構極有可能只能讓16個核具備1000M的處理性能,這么多個核的能力被軟件架構浪費掉了,直接后果就是應用設備整機的造價成本居高不下。此外,很多多核處理器中提供的報文處理加速能力,需要有專用的軟件去“激活”,Linux沒有提供現成的激活代碼,應用開發商如果要用好多核,還必須自己去寫代碼來激活這些功能。
也就是說,多核處理器為使用Linux的應用開發商提供了一個很容易用起來的開發平臺,但如何用好這個平臺,則需要應用開發商付出努力。我們知道,網絡應用可以從邏輯上分為控制平面和數據平面,x86上的Linux是控制平面和數據平面合一的,多核的SMP用法,也是控制平面和數據平面合一的,但是要讓網絡應用把多核用好,就必須要將控制平面和數據平面分離開來,而且分離得好不好決定了多核應用交付時的性價比。
這就讓我們不得不提第三種架構x86+FPGA/ASIC,這種架構從設計開始就帶有很鮮明的數據平面和控制平面分離的特征,因此這種架構可以很好地實現高性能這個目標。但很可惜,由于FPGA或ASIC技術需要很大的研發投入,這種架構成為了少數大廠商的專屬架構,也正因如此,人們往往無從分析和驗證這種架構是否應該以及怎樣與Linux這樣的開放系統結合起來。
FPGA/ASIC與多核整合或成趨勢
回顧網絡應用處理器的發展歷史,觀察CPU+FPGA/ASIC架構的發展,跟蹤多核處理器架構的發展趨勢,我們可以進行一個總結性的比較。
***,三種架構的目的都是希望為網絡通信應用提供高性能的報文處理能力,即提供一個高性能的數據平面引擎;盡管它們出現的時間階段不同,但基本能力是相同的。
第二,可以將網絡處理器理解成多核架構的初級階段,網絡處理器并沒有構建出一個足夠強大的開發者群體;而多核處理器則充分利用了Linux這個網絡應用開發者非常喜歡的開放平臺,為吸引開發者、構建開發社區提供了很大的想象空間。
第三,與多核處理器相比,FPGA/ASIC在芯片級實現了網絡應用的數據平面,但由于 FPGA/ASIC實現成本很高,必須要有專業的廠商進行專業化的商業支持,數據平面的引擎才能不斷向前發展以滿足不斷豐富的網絡應用需求。而也正是這些專業廠商的出現,使得FPGA/ASIC從少數廠家的私有架構逐步變成適合眾多網絡應用開發商進行二次開發的開放架構。
第四,多核處理器雖然具備很多明顯優勢,但要將多核處理器的潛力充分發揮出來,還必須解決傳統應用軟件中數據平面和控制平面分離的問題。因此,只有在多核上也出現了標準化的、開放的數據平面引擎,并且這個引擎可以與傳統成熟軟件無縫平滑結合時,多核處理器才可能在網絡應用中蓬勃發展。
第五,網絡應用對數據平面引擎的要求,除了高性能、標準化和開放之外,功能豐富、易擴展的需求也越來越強烈。那么,多核和FPGA/AISC可否結合起來應用呢?FPGA/ASIC實現標準化的會話層和網絡層處理,多核實現靈活豐富的應用層業務擴展,是不是會成為未來的一種發展方向呢?在筆者看來,這很可能會成為未來的一大發展趨勢。
第六,網絡應用廠商的專長和優勢在于他們可以深刻理解用戶需求,以用戶需求為基礎挖掘很多新應用。數據平面的實現,無論是芯片級的FPGA/ASIC,還是多核的數據平面引擎,都很接近于網絡基礎設施的底層,一個標準、開放、專業、易擴展的數據平面引擎,必然會為網絡新應用開發帶來巨大推力。當然,專業的數據平面引擎的獲得,無論是用FPGA實現,還是用多核實現,或者是將二者結合起來實現,都需要有專業廠商的支持。
【編輯推薦】