基于賽靈思 FPGA 的可編程COTS NIC 可將 NFV 軟件應(yīng)用性能提升 50 倍。
向網(wǎng)絡(luò)功能虛擬化 (NFV) 和軟件定義網(wǎng)絡(luò) (SDN) 的轉(zhuǎn)變代表了近 20 年來最具變革性的架構(gòu)網(wǎng)絡(luò)發(fā)展趨勢。由于 NFV 和 SDN 承諾系統(tǒng)開放性和網(wǎng)絡(luò)中立性,因此有望給未來的通信網(wǎng)絡(luò)和業(yè)務(wù)的成形造成深遠影響。
我們 Ethernity Networks 公司正在利用賽靈思器件,率先向市場推出真正開放的、高度可編程的 SDN和 NFV 解決方案。讓我們來看一下Ethernity 公司在首次探索 NFV 和SDN 的前景和要求之后,是如何打造其解決方案的。
硬件和 NFV/SDN 變革遍地開花過去幾十年間的網(wǎng)絡(luò)基礎(chǔ)架構(gòu)業(yè)務(wù)在很大程度上可謂是大型機業(yè)務(wù)模式的延續(xù),在這種模式下,屈指可數(shù)的幾家大型公司提供專有局端基礎(chǔ)設(shè)備,而這些設(shè)備又運行專有的軟件,這樣構(gòu)建的全部意圖都是為了不與競爭對手的系統(tǒng)進行通信。在大多數(shù)情況下,基礎(chǔ)架構(gòu)廠商為其客戶的每個網(wǎng)絡(luò)節(jié)點都創(chuàng)建定制硬件,并將每個節(jié)點都構(gòu)建成最低可編程性和可升級性節(jié)點,以確保那些希望對網(wǎng)絡(luò)進行擴展或升級的客戶會從同一廠商旗下購買下一代設(shè)備;或者讓客戶完全無法選擇從其他公司購買全新網(wǎng)絡(luò),最終只能重蹈覆轍。
在過去五年中,來自運營商、學術(shù)機構(gòu)以及廠商的新貴一直在呼吁,即通過最大化硬件與軟件的可編程性來過渡到無處不在的硬件、網(wǎng)絡(luò)中立、開放系統(tǒng)以及軟件兼容性。NFV和 SDN 是這一發(fā)展趨勢的先鋒,為這一不斷成長且一定會成功的革命高舉旗幟。
憑借 NFV,公司可通過軟件在商用的通用硬件平臺上運行各種網(wǎng)絡(luò)功能,這與在昂貴的定制專有硬件上運行每項特定網(wǎng)絡(luò)任務(wù)截然不同。將這些無處不在的開放式平臺的可編程性最大化,使公司能夠在數(shù)據(jù)中心甚至更小的網(wǎng)絡(luò)節(jié)點中運行眾多之前由特定硬件設(shè)備執(zhí)行的任務(wù)。NFV 允許運營商根據(jù)需要只將給定服務(wù)的新網(wǎng)絡(luò)軟件上傳到商用硬件資源,從而可以進一步減少創(chuàng)建新的網(wǎng)絡(luò)服務(wù)所需的時間。運營商因此可以輕松擴展網(wǎng)絡(luò)并為其公司選擇同類最佳功能,而不用被迫購買和使用軟件靈活性有限的新型專有硬件。
NFV 是有效的,因為網(wǎng)絡(luò)中的很多節(jié)點都具有一般性的功能要求。具備一般性要求的節(jié)點包括交換機和路由器、數(shù)百萬流分類、訪問控制列表 (ACL)、狀態(tài)流感知、深度數(shù)據(jù)包檢測 (DPI)、隧道網(wǎng)關(guān)、流量分析、性能監(jiān)控、分段、安全性、虛擬路由器和交換機。但NFV 自身也面臨諸多挑戰(zhàn)。預(yù)計因特網(wǎng)和數(shù)據(jù)中心流量在未來幾年內(nèi)將呈指數(shù)級增長,因此網(wǎng)絡(luò)局端基礎(chǔ)設(shè)備必須能夠應(yīng)對流量的巨大增長。僅依靠軟件可編程性并不足以使通用硬件能夠隨著帶寬需求的增長而進行輕松擴展。無處不在的硬件需經(jīng)過重新編程來優(yōu)化總體系統(tǒng)性能。這允許廠商和運營商以“更智能,而不是更辛苦的工作”方式來利用 NFV 和 SDV,從滿足運營商的最終客戶(即消費者)不斷提高的網(wǎng)絡(luò)要求。真正的軟/ 硬件可編程基礎(chǔ)架構(gòu)才是真正實現(xiàn) NFV 和 SDN 的愿景的唯一方式。
SDN 同時在物理與虛擬設(shè)備中的網(wǎng)絡(luò)控制層與底層數(shù)據(jù)轉(zhuǎn)發(fā)層之間使用基于標準的軟件抽象, 這消除了傳統(tǒng)分布式網(wǎng)絡(luò)基礎(chǔ)架構(gòu)復(fù)雜且靜態(tài)的本質(zhì), 是一種現(xiàn)代的聯(lián)網(wǎng)方法。在過去五年中,行業(yè)制定了一項標準數(shù)據(jù)層抽象協(xié)議 OpenFlow,其提供的新穎實用方法可以借助基于集中軟件的控制器來配置網(wǎng)絡(luò)架構(gòu)。
具有集中軟件配置的開放式 SDN平臺通過可編程性和自動化顯著提升了網(wǎng)絡(luò)敏捷性,同時大幅降低了網(wǎng)絡(luò)運營成本。OpenFlow 等業(yè)界標準數(shù)據(jù)層抽象協(xié)議使提供商可以自由使用任何類型和品牌的數(shù)據(jù)層設(shè)備,因為所有底層網(wǎng)絡(luò)硬件均可通過一種通用抽象協(xié)議來進行尋址。重要的是,OpenFlow 便于使用“裸機交換機”,同時避免傳統(tǒng)廠商的套牢,使運營商同樣能夠自由選擇目前可在 IT 基礎(chǔ)設(shè)施的其他領(lǐng)域(如服務(wù)器)中輕松找到的網(wǎng)絡(luò)。
由于 SDN 還處于起步階段,因此標準仍在不斷演進。這意味著設(shè)備廠商和運營商需要防范風險,并利用FPGA 的硬件及軟件的可編程性, 以最大的靈活性對 SDN 設(shè)備進行設(shè)計和操作。目前上市的基于 FPGA 的SDN 設(shè)備即使對于大規(guī)模部署也相當實惠?;?FPGA 的 SDN 設(shè)備具有高度的高硬件與軟件靈活性并且盡可能符合 OpenFlow 協(xié)議要求。
性能加速需求
或許, 對 NFV 和 SDN 而言,要超越開放性最關(guān)鍵的要求就是高性能。盡管 NFV 硬件看起來比專有系統(tǒng)更便宜,但 NFV 架構(gòu)需要保持極富競爭力的大數(shù)據(jù)量,滿足下一代網(wǎng)絡(luò)的復(fù)雜處理要求并不斷提升能效。
實際上,NFV 基礎(chǔ)設(shè)施小組規(guī)范 (Infrastructure Group Specification)包含一個特殊部分,其描述了對加速功能的需求, 以提升網(wǎng)絡(luò)性能。此規(guī)范描述了處理器組件如何將某些功能轉(zhuǎn)移到網(wǎng)卡 (NIC) 以支持某些加速功能,包括 TCP 分段、互聯(lián)網(wǎng)協(xié)議 (IP)分片、DPI、數(shù)百萬條目的過濾、加密、性能監(jiān)控/ 計數(shù)、協(xié)議互通與OAM 以及其他加速功能。
驅(qū)動這種加速的主要引擎是NIC,其配備了物理以太網(wǎng)接口,供服務(wù)器連接到網(wǎng)絡(luò)。如圖 1 中所示,當某個數(shù)據(jù)包通過 10GE、40GE 或100GE 端口到達 NIC 時,根據(jù)標簽信息(如 IP、MAC 或 VLAN)將數(shù)據(jù)包放置在虛擬端口 (VP) 或代表特定虛擬機 (VM) 的隊列中。隨后位于服務(wù)器上的合適的虛擬機直接對數(shù)據(jù)包進行 DMA 訪問以進行處理。每個虛擬網(wǎng)絡(luò)功能 (VNF) 都在不同虛擬機上運行,并且某些網(wǎng)絡(luò)功能需要使用多個甚至數(shù)十個虛擬機。
圖 1 – 在數(shù)據(jù)包到達時,NIC 進入代表特定虛擬機的虛擬端口 (VP)。數(shù)據(jù)包隨后通過 DMA發(fā)送到服務(wù)器上的合適的虛擬機以進行處理。
OpenFlow 控制硬件加速功能,比如NIC 上的硬件加速功能可以視為是SDN 交換機的擴展??稍诙鄠€虛擬機和/ 或內(nèi)核上通過部署多個VNF來為眾多功能處理NFV 性能。這為NFV 帶來了兩大性能挑戰(zhàn)。第一項挑戰(zhàn)在于“vSwitch”,這通常是一個軟件,用來處理以太網(wǎng)NIC 與虛擬機之間的網(wǎng)絡(luò)流量。第二項性能挑戰(zhàn)在于均衡在多個VM 之間輸入的40/100GE 數(shù)據(jù)。添加IP 分片、TCP分段、加密或其他專用硬件功能時,NFV 軟件需要輔助以滿足性能需求并降低功耗。理想情況下,其外形應(yīng)該比較緊湊,以減少存放網(wǎng)絡(luò)設(shè)備所需要的板級空間。
為處理 NFV 挑戰(zhàn)和各種網(wǎng)絡(luò)功能,用于 NFV 和 SDN 的 NIC 卡必須性能極高,而且盡可能靈活。多家芯片廠商都試圖成為第一家上市 NFV硬件的廠家,他們已經(jīng)提議構(gòu)建針對NIC 卡的平臺,它們各自都具有不同程度的可編程性。Intel 目前是主要的 NIC 組件提供商,配有用于加速數(shù)據(jù)包處理的 DPDK 包。EZchip 提供了運行 Linux 并可用 C 語言編程的 NPS 多線程 CPU。Marvell 為其Xelerated 處理器提供了兩個完整的數(shù)據(jù)層軟件套件以用于城域以太網(wǎng)和統(tǒng)一光纖應(yīng)用接入(Unified Fiber Access Application),這兩個套件由運行在NPU 上的應(yīng)用程序包和運行在主機CPU 上的控制層 API 組成。Cavium已經(jīng)為其 Octeon 產(chǎn)品系列選擇了更通用的軟件開發(fā)套件。Broadcom、Intel 和 Marvel L2/L3 交換機主要用于搜索和 vSwitch 負載轉(zhuǎn)移。同時,Netronome 的新款 Flow-NIC 配備了能在該公司的專用網(wǎng)絡(luò)處理器硬件上運行的軟件。
盡管所有這些產(chǎn)品都聲稱是開放式 NFV 方法,但實則不然。所有這些方法都涉及到苛刻并且可以說是限制過多的硬件實現(xiàn)方案,這些實現(xiàn)方案僅具備軟件可編程,并且在 SoC 或標準處理器方面再次依賴于苛刻且專有的硬件實現(xiàn)方案。
用于 NFV 性能加速的 ALL PROGRAMMABLE ETHERNITY NIC
要加強可編程性同時還要大幅提高性能,很多公司都在研究一種能將現(xiàn)有 CPU 與 FPGA 結(jié)合使用的組合方法。在過去兩年中,很多數(shù)據(jù)中心運營商(尤其是 Microsoft 公司)發(fā)布了論文來闡述他們通過混合架構(gòu)所實現(xiàn)的性能大幅提升。Microsoft 發(fā)布的名為“Catapult Project”的白皮書指出,在功耗僅增加了 10% 的情況下,性能提高了 95%。Intel 指出,在數(shù)據(jù)中心NIC 中將 FPGA 與 CPU 組合所產(chǎn)生的效能是其花費167 億美元收購第二大FPGA 廠商 Altera 公司的主要原因。
同樣,CPU 與 FPGA 組合方法也適用于在虛擬機上運行虛擬聯(lián)網(wǎng)功能的NFV。在這種方法中,F(xiàn)PGA 用作完全可編程 NIC,經(jīng)擴展可用來加速在服務(wù)器的 CPU/VM 上運行的虛擬網(wǎng)絡(luò)功能。
但是完全基于 FPGA 的 NIC 卡是 NFV 的理想 COTS 硬件架構(gòu)。多家 FPGA 固件廠商都可以提供固件,以提高在 FPGA NIC 上運行的 NFV的性能。并且 FPGA 公司最近開發(fā)了 C 語言編譯器技術(shù)(如賽靈思的SDAccelTM 和 SDSoCTM 開發(fā)環(huán)境)以實現(xiàn) OpenCLTM 和 C++ 設(shè)計輸入和編程加速,從而進一步向更多用戶推廣NFV 設(shè)備設(shè)計。
為加速 NFV 性能,NFV 解決方案提供商增加了 VM 的數(shù)量,目的是在多個 VM 上分配 VNF。在操作多個VM 時,出現(xiàn)了新的挑戰(zhàn),這與均衡虛擬機間的流量負載同時還要支持 IP分片有關(guān)。此外,在支持 VM 之間的交換以及 VM 與 NIC 之間的交換方面也存在挑戰(zhàn)。純軟件 vSwitch 元件根本不具備足以解決這些挑戰(zhàn)的性能。另外,還必須要保持VM 的完整性,以便VM 能夠適當存儲特定的突發(fā)數(shù)據(jù)包并且不會無序交付數(shù)據(jù)包。
Ethernity 的 ENET FPGA 專用于解決 NFV 的性能問題,其配備了虛擬交換機/ 路由器實現(xiàn)方案,使系統(tǒng)能夠根據(jù) L2、L3 和 L4 標簽來加速vSwitch 交換數(shù)據(jù)的功能,同時保持為每個 VM 分配一個專用虛擬端口。如果某個特定 VM 不可用,ENET 則可以將流量保存 100ms 之久;而一旦可用,ENET 將通過 DMA 將數(shù)據(jù)傳輸給 VM。我們的ENET 安裝了標準CFM 數(shù)據(jù)包生成器和數(shù)據(jù)包分析器,可提供延遲測量功能,從而可以測量 VM 的可用性和運行健康狀況,并且指示 ENET 的狀態(tài)負載均衡器(關(guān)于每個 VM 在負載分配方面的可用性)。數(shù)據(jù)包重新排序引擎可以在某些情況下保持幀的順序,例如,如果某個數(shù)據(jù)包出現(xiàn)無序移動,這可能導致對一項功能使用多個 VM。
圖 2 描述了 VM 負載均衡ENET解決方案的方框圖。
圖 2 - 這一高級方框圖顯示了虛擬機的負載均衡和交換機。
在圖 2 中,分類模塊執(zhí)行 L2、L3 和 L4 字段的層級分類,以保持支持長時間活動 TCP(telnet、FTP 等不會立即關(guān)閉)的連接和流的路由。負載均衡器必須確保該連接上攜帶的多個數(shù)據(jù)包不會將負載均衡到其他可用的服務(wù)主機。ENET 包括老化機制功能,以刪除不活動的流。
在分類模塊中,我們根據(jù) L2、L3和 L4 字段配置了均衡哈希算法。此算法包含分段,以便負載均衡器能夠根據(jù)內(nèi)部隧道 (inner tunnel) 信息(如VXLAN 或 NVGRE)來執(zhí)行均衡,而IP 分片連接則可以由特定連接/CPU來進行處理。對于 VM 到 VM 連接而言,分類器和搜索引擎會將會話轉(zhuǎn)發(fā)到目標 VM,而不是 vSwitch 軟件。同時,分類器功能根據(jù)其路由器輸出來為每個輸入流分配報頭操控規(guī)則,同時監(jiān)控修改 IP 地址或卸載協(xié)議。
對于每個新流,目標選擇模塊的負載均衡器根據(jù)加權(quán)循環(huán)調(diào)度算法(WRR) 技術(shù)從可用的 VM 中分配目標地址。將根據(jù)從 VM 負載監(jiān)控模塊派生的信息來配置 WRR。
分層流量管理器模塊在可用的VM 之間實現(xiàn)分層 WRR,并為每個VM 保持一個輸出虛擬端口,以根據(jù)優(yōu)先級、VM 和物理端口分成三個調(diào)度層級。CPU 層級表示特定 VM,同時優(yōu)先級層級可能在服務(wù)于特定VM 的不同服務(wù)/ 流之間分配加權(quán)。ENET 通過操作外部 DDR3,可以支持100ms 的緩存以克服特定 VM 的瞬時負載。
VM 負載監(jiān)控使用 ENET 可編程數(shù)據(jù)包生成器和數(shù)據(jù)包分析器對電信級以太網(wǎng)服務(wù)進行監(jiān)控,這符合Y.1731 和 802.1ag 標準。VM 負載監(jiān)控模塊維護有關(guān)每個 CPU/VM 可用性的信息,對 VM 使用以太網(wǎng) CFM 延遲測量報文 (DMM) 協(xié)議生成之類的指標。通過對每個數(shù)據(jù)包加蓋時間戳并測量發(fā)送與接收之間的時間差,此模塊可以確定每個 VM 的可用性,并據(jù)此指示可用VM 上的目標選擇模塊。
資源選擇模塊所確定的是從主機發(fā)送至用戶的哪些傳出流量將被分類并確定數(shù)據(jù)包的資源。ENET 中的報頭操控模塊將執(zhí)行網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT) 以將輸入地址替換為正確的VM IP 地址,從而使NIC 能夠?qū)⒘?、?shù)據(jù)包或服務(wù)轉(zhuǎn)發(fā)至正確的VM。對于輸出流量,NAT 將執(zhí)行相反操作并將數(shù)據(jù)包連同其原始IP 地址一并發(fā)送給用戶。此外,報頭操控模塊還將執(zhí)行隧道封裝。此時,報頭操縱模塊將執(zhí)行分類器通過分類所分配的操作規(guī)則,并將在 CPU 操作之間剝離隧道報頭或其他報頭。在相反方向,其將原始隧道附加到輸出用戶端口。
隨著運營商網(wǎng)絡(luò)用戶數(shù)量的增加,流表(flow table)的大小可能快速增加從而超過標準服務(wù)器的緩存容量。對于當前OpenFlow 系統(tǒng)尤為如此,因為當前OpenFlow 系統(tǒng)需要40 個不同字段、IPv6 地址、多協(xié)議標簽交換(MPLS) 和提供商骨干網(wǎng)橋(PBB)。ENET 搜索引擎和包解析器可以支持對多個字段進行分類并提供數(shù)百萬個流,因而可以從軟件設(shè)備中卸載分類和搜索功能。
最后,通過ENET 數(shù)據(jù)包報頭操控引擎,ENET 可將卸載任何協(xié)議處理并為 VM 以及 TCP 分段或者各種協(xié)議之間的聯(lián)網(wǎng)(包括用于虛擬EPC(vEPC) 實現(xiàn)的 3GPP、XVLAN、MPLS、PBB、NAT/PAT 等)提供原始數(shù)據(jù)信息。
除了固件之外,Ethernity 還開發(fā)了我們稱之為 ACE-NIC 的NFV NIC(圖 3)。要創(chuàng)建 NIC,我們將 ENETSoC 固件(已部署到電信級以太網(wǎng)網(wǎng)絡(luò)中的數(shù)十萬個系統(tǒng)中)部署到單個Xilinx Kintex?-7 FPGA 中。我們還將五個分立組件的功能集成到同一個 FPGA 中。NIC 和 SR-IOV 支持;網(wǎng)絡(luò)處理(包括分類、負載均衡、數(shù)據(jù)包修改、交換、路由以及 OAM);100ms 緩沖;幀分段;加密。
圖 3 – Xilinx Kintex FPGA 位于 Ethernity NFV 網(wǎng)卡的中心。
ACE-NIC 是一款支持 OpenFlow的硬件加速 NIC,并在 COTS 服務(wù)器中運行。ACE-NIC 將 vEPC 和 vCPE NFV 平臺的性能提升 50 倍,極大降低了與 NFV 平臺相關(guān)的端對端時延。新的 ACE-NIC 配備了四個 10GE端口以及專為基于 Ethernity ENET 流處理器的 FPGA SoC 設(shè)計的軟件和硬件,支持 PCIe? Gen3。ACE-NIC還配備了與 FPGA SoC 連接的板載DDR3,支持 100ms 緩沖并可搜索一百萬條目。
Ethernity ENET 流處理器 SoC平臺使用具有專利、獨有的基于流的處理引擎來處理大小可變的任何數(shù)據(jù)單元,提供多協(xié)議聯(lián)網(wǎng)、流量管理、交換、路由、分段、時間戳和網(wǎng)絡(luò)處理。此平臺在Xilinx 28nm Kintex-7XC7K325T FPGA 上支持高達80Gbps 的速率,或在更大型 FPGA 上支持更高速率。
ACE-NIC 附帶基本功能,比如納秒精度以內(nèi)的按幀時間戳、數(shù)據(jù)包生成器、數(shù)據(jù)包分析器、100ms 緩沖、幀過濾以及 VM 之間的負載平衡。為提供多個云設(shè)備,其還能夠按虛擬機分配虛擬端口。
此外,ACE-NIC 還帶有 NFVvEPC 的專用加速功能。這些功能包括幀報頭操縱和卸載、16K 虛擬端口交換實現(xiàn)、可編程幀分段、QoS、計數(shù)器和計費信息,這些功能可以由面向 vEPC 的 OpenFlow 進行控制。通過其獨特的軟件及硬件設(shè)計,ACENIC將軟件性能提高了 50 倍。
ALL PROGRAMMABLE ETHERNITY SDN 交換機
同樣,Ethernity 在 FPGA 中集成 ENET SoC 固件以創(chuàng)建全 ALL PROGRAMMABLE SDN 交換機,并支持 OpenFlow 的 1.4 版本和全套電信級以太網(wǎng)交換機功能,從而加速白盒 SDN 交換機部署的上市進程。
ENET SoC 電信級以太網(wǎng)交換機是符合 MEF 標準的 L2、L3 和L4 交換機/ 路由器,可以在分布于超過 128 個物理通道的 16,000 個內(nèi)部虛擬端口之間交換和路由五個級別數(shù)據(jù)包報頭的幀。其支持 FE、GbE 和10GbE 以太網(wǎng)端口以及四種級別的流量管理調(diào)度層級。由于 ENET 的內(nèi)在架構(gòu)支持分段幀,因此 ENET 可以通過零拷貝技術(shù)執(zhí)行 IP 分片和功能重新排序,這樣一來,分段與重組便不再需要專用的存儲和轉(zhuǎn)發(fā)。此外,ENET 還具有集成的可編程數(shù)據(jù)包生成器和數(shù)據(jù)包分析器,可簡化 CFM/OAM 操作。最終,ENET 可以在3GPP、LTE、移動回程和寬帶接入中運行。其支持多個協(xié)議之間的互通,這些只需要通過零拷貝操作,并且不需要重新路由幀來進行報頭操控。
顯然,通信行業(yè)正處在新時代的開端。我們確信可以看到 NFV 和SDN 領(lǐng)域會有很多創(chuàng)新。NFV 性能提升或 SDN 交換機的任何新興解決方案必須能夠支持新版 SDN。隨著 Intel收購 Altera 以及尋求更高可編程性的硬件架構(gòu)不斷增多,我們確信處理器與 FPGA 的組合架構(gòu)也會越來越多,同時還會有新的創(chuàng)新方式來實現(xiàn) NFV性能提升。
基于 FPGA 的 NFV NIC 加速可以基于通用處理器來提供 NFV 的靈活性,同時提供GPP 無法維持的必要吞吐量,并且還要執(zhí)行 GPP 無法支持的特定網(wǎng)絡(luò)功能加速。通過在 FPGA平臺上有效組合 SDN 與 NFV,我們可以設(shè)計出 All Programmable 網(wǎng)絡(luò)設(shè)備,從而推動網(wǎng)絡(luò)應(yīng)用領(lǐng)域中全新的IP 廠商生態(tài)系統(tǒng)創(chuàng)新。
評論
查看更多