說起服務器,大家首先想到的就是“三大件”,即CPU, 內存,硬盤,但是作為服務器不可或缺的部件,網卡也應該占據一席之地,網卡的功能主要有兩個:
一是將服務器的數據封裝為幀,并通過網線將數據發送到網絡上去;
二是接收網絡上其它設備傳過來的幀,并將幀重新組合成數據,發送到所在的服務器中。
網卡最重要的參數是速率,代表著服務器網絡的整體處理能力。云計算,大數據處理,高速存儲的需求推動了網絡帶寬的發展,云上客戶對網絡速度及網絡帶寬的關注度不斷提升。業務對數據中心的流量產生巨大的沖擊,企業需要大量、大帶寬的服務器組成集群系統,協同完成工作。網卡速率從1G到10G普及用了十年時間,但是從10G到加速普及到25G,只用了不到3年時間,互聯網頭部公司已經基本切換到25G網絡,甚至已經開始部署50G和100G網卡。
光潤通科技光纖網卡展示
網卡速率的增長可以解決傳輸帶寬的問題,但是數據包處理的延時卻不能很好解決,在一些在線交易業務中,如金融證券行業,要求數據包能夠最快的得到處理。在云計算場景下,由于天然是分布式的系統,有大量的數據在東西向流轉,如果延時過大,將導致業務不可用。在此情況下傳統的x86服務器已經不能很好滿足業務的需求,于是出現了如DPDK這種軟件的解決方案,采用輪訓方式和在用戶態實現數據包處理,能夠明顯提高服務器網絡性能。DPDK最大的好處就是投入少,收益大,傳統網卡加上軟件套件就可以實現性能提升,缺點在于需要專門劃出一部分CPU核來處理數據包。但是隨著VXLAN等overlay協議以及OpenFlow、Open vSwitch(OVS)等虛擬交換技術的引入,使得基于服務器的網絡數據平面的復雜性急劇增加,傳統網卡固定功能的流量處理功能無法適應SDN和NFV ,而且網絡接口帶寬的增加意味著在軟件中執行這些功能會占用大量的CPU資源,和當前云計算的理念背道而馳,于是智能網卡的概念應運而生。
不同于傳統網卡,智能網卡同時具備高性能及可編程的能力,既能處理高速的網絡數據流,又能對網卡進行編程,實現定制化的處理邏輯。
目前,智能網卡設計采用以下三種形式之一:
多核智能網卡,基于包含多個CPU內核的ASIC
基于現場可編程門陣列(FPGA)的智能網卡
SOC,即片上系統,它將硬件可編程FPGA與ASIC網絡控制器相結合
不同的實現方式在成本、可編程性和靈活性方面各有優劣,ASIC具有價格優勢,但靈活性有限,盡管基于ASIC的NIC相對容易配置,但最終功能將受到基于ASIC中定義的功能的限制,某些較復雜的負載可能無法得到支持, 相比之下,FPGA NIC是高度可編程的,并且可以相對有效地支持幾乎任何功能,不過FPGA最大的問題是編程難度大且價格昂貴,對一些小客戶不太友好,針對更復雜的用例,SOC是最佳的SmartNIC選擇,價格與性能兼具、易于編程且高度靈活。
具體說來,智能網卡為數據中心網絡提供了幾項重要優勢,包括:
1.通過直接在網絡接口卡上執行任務來加速網絡、存儲和計算任務,消除了在服務器上運行這些工作負載的需要,并釋放了CPU周期,從而顯著提高服務器性能并降低總體功耗,進而降低總體擁有成本。
2.卸載日益復雜的網絡任務,包括諸如VxLAN等復雜隧道協議和OVS虛擬交換機等,使服務器處理器能夠執行實際的創收性任務。
3.通過在更快速的硬件而不是較慢的軟件中去執行卸載功能,從而提高有效網絡帶寬和吞吐量,并提供附加的、靈活的功能,以適應新的和不斷變化的網絡和存儲協議。
其實智能網卡在大型互聯網公司及頭部CSP上已經開始應用,核心思想就是把業務負載卸載到專用硬件上,如微軟在Azure上使用FPGA來實現CPU卸載、網絡加速,而AWS甚至發展出一套Nitro 架構來實現VPC, EBS,存儲等業務的硬件卸載,國內阿里巴巴的神龍架構思想類似,其架構核心就是一塊MOC卡,整個Hypervisor完完全全運行在這張卡上面,服務器的CPU和內存完全可以釋放出來給客戶。
FPGA作為硬件加速平臺,對網絡功能進行卸載和加速。這樣能大幅提高硬件資源的利用率,同時能帶來性能的提升和能耗的下降,降低了部署和運行成本。同時結合業界其他公司的動態,各大互聯網公司、云服務提供商、電信網絡提供商都開始嘗試在他們的數據中心中部署光潤通FPGA進行硬件加速。可編程網卡在加速虛擬網絡之外,還可以加速網絡功能、數據結構、操作系統等。為此,FPGA可編程網卡實現云計算數據中心計算、網絡、內存存儲節點的全棧加速。
光潤通FPGA網卡
光潤通(GRT)始創于2008年,致力于光通信產品的研發與制造,提供服務器網卡標準化及FPGA定制服務,擁有資深研發及技術支持團隊,可針對不同用戶需求提供FPGA網卡定制開發服務,滿足客戶多樣化需求,開發周期短,效率高。可以,已成功為幾百家國內外大中小型客戶提供定制化服務,獲得客戶的好評與信賴。光潤通始終以技術為核心,客戶需求為向導,鑄就業內定制化標桿。