DPU應用場景系列(一)網絡功能卸載
網絡功能卸載是伴隨云計算網絡而產生的,主要是對云計算主機上的虛擬交換機的能力做硬件卸載,從而減少主機上消耗在網絡上的CPU算力,提高可售賣計算資源。
圖云計算網絡架構
目前除了公有云大廠采用自研云平臺,絕大部分私有云廠商都使用開源的OpenStack云平臺生態。在OpenStack云平臺中,虛擬交換機通常是OpenvSwitch,承擔著云計算中網絡虛擬化的主要工作,負責虛擬機(VM)與同主機上虛擬機(VM)、虛擬機(VM)與其它主機上虛擬機(VM)、虛擬機(VM)與外部的網絡通信。虛擬交換機與網關路由器(GW)通常由同一SDN控制器來管理控制,為租戶開通VPC網絡以及和外部通信的網絡。主機與主機間的網絡通常是Underlay網絡,是由TOR/EOR構建的Spine-Leaf結構的Fabric Network。虛擬機(VM)與虛擬機(VM)通信的網絡是Overlay網絡,是承載在Underlay網絡構建的VxLAN,NVGRE或Geneve隧道之上的。通常VxLAN,NVGRE或Geneve的隧道端點(VTEP)在虛擬交換機和網關路由器(GW)上。也有部分對網絡性能要求比較高的場景,采用SR-IOV替代虛擬交換機,VF直通到虛擬機(VM)內部,這樣就要求隧道端點(VTEP)部署在TOR上,TOR與網關路由器(GW)創建隧道,提供Overlay網絡服務。虛擬交換機的場景是最通用的應用場景,所以,虛擬交換機的技術迭代也直接影響著虛擬化網絡的發展。
一、虛擬化網絡功能(Virtual Network Function)
行業內主流的Hypervisor主要有Linux系統下的KVM-Qemu,VMWare的ESXi,微軟Azure的Hyper-V,以及亞馬遜早期用的Xen(現在亞馬遜已經轉向KVM-Qemu)。KVM-Qemu有著以Redhat為首在持續推動的更好的開源生態,目前行業內90%以上的云廠商都在用KVM-Qemu作為虛擬化的基礎平臺。
在KVM-Qemu這個Hypervisor的開源生態里,與網絡關系最緊密的標準協議包括virtio和vhost,以及vhost衍生出來的vhost-vdpa。Virtio在KVM-Qemu中定義了一組虛擬化I/O設備,和對應設備的共享內存的通信方法,配合后端協議vhost和vhost-vdpa使用,使虛擬化I/O性能得到提升。
(1)內核虛擬化網絡(vhost-net)
在虛擬化網絡的初期,以打通虛擬機(VM)間和與外部通信能力為主,對功能訴求遠高于性能,虛擬交換機OVS(Open vSwitch)的最初版本也是基于操作系統Linux內核轉發來實現的。vhost協議作為控制平面,由Qemu做代理與主機kernel內的vhost-net通信,主機內核vhost-net作為virtio的backend,與虛擬機(VM)內部的virtio NIC通過共享內存的方式進行通信。實現了虛擬機(VM)間和虛擬機(VM)與外部的通信能力,但是內核轉發效率和吞吐量都很低。目前在虛擬化網絡部署中已經很少使用。
(2)用戶空間DPDK虛擬化網絡(vhost-user)
隨著虛擬化網絡的發展,虛擬機(VM)業務對網絡帶寬的要求越來越高,另外,英特爾和Linux基金會推出了DPDK(Data Plane Development Kit)開源項目,實現了用戶空間直接從網卡收發數據報文并進行多核快速處理的開發庫,虛擬交換機OVS將數據轉發平面通過DPDK支持了用戶空間的數據轉發,進而實現了轉發帶寬量級的提升。OVS-DPDK通過將virtio的backend實現在用戶空間,實現了虛擬機(VM)與用戶空間OVS-DPDK的共享內存,這樣虛擬機(VM)在收發報文時,只需要OVS-DPDK將從網卡收到的報文數據寫入虛擬機(VM)的內存,或從虛擬機(VM)內存將要發送的報文拷貝到網卡DMA的內存,由于減少了內存拷貝次數和CPU調度干擾,提升了轉發通道的整體效率和吞吐量。
圖基于DPDK的虛擬化網
OVS-DPDK相對轉發能力有所提高,但也存在新的問題。首先,目前大多數服務器都是NUMA(多CPU)結構,在跨NUMA轉發時性能要比同NUMA轉發弱。而物理網卡只能插在一個PCIe插槽上,這個插槽只會與一個NUMA存在親和性,所以OVS-DPDK上跨NUMA轉發的流量不可避免。第二,在虛擬機(VM)與OVS-DPDK共享內存時,初始化的隊列數量通常是與虛擬機(VM)的CPU個數相同,才能保證虛擬機上每一個CPU都可以通過共享內存收發數據包,這樣導致不同規格的虛擬機(VM)在OVS-DPDK上收發隊列所接入的CPU是非對稱的,在轉發過程中需要跨CPU轉發數據。最后,OVS-DPDK在轉發數據時,不同虛擬機(VM)的流量由于CPU瓶頸導致擁塞,會隨機丟包,無法保障租戶帶寬隔離。
(3)高性能SR-IOV網絡(SR-IOV)
在一些對網絡有高性能需求的場景,如NFV業務部署,OVS-DPDK的數據轉發方式,無法滿足高性能網絡的需求,這樣就引入的SR-IOV透傳(passthrough)到虛擬機(VM)的部署場景。
在SRIOV passthrough的場景下,虛擬機(VM)可以獲得與裸金屬主機上相比擬的網絡性能。但是,仍然存在兩個限制:
(1)SRIOV VF passthrough到VM后,VM的遷移性會受限,主要原因在于SRIOV這種passthrough I/O借助了Intel CPU VT-d(Virtualization Technology for Directed I/O)或AMD的IOMMU(I/O Memory Management Unit)技術,在VM上VF網卡初始化的時候,建立了Guest虛擬地址到Host物理地址的映射表,所以這種“有狀態”的映射表在熱遷移的過程中會丟失。
(2)由于SRIOV VFpassthrough到VM,而SRIOV PF直接連接到TOR上,在這種部署環境中虛擬機(VM)對外的網絡需要自定義,如需要像OVS-DPDK那樣自動開通網絡,則需要將TOR加入SDN控制器的管理范疇,由SDN控制器統一管控,這樣做通常會使網絡運營變的非常復雜。
針對上面第二個問題,Mellanox最早提出在其智能網卡上支持OVS Fastpath硬件卸載,結合SRIOV VF passthrough到VM一起使用,提供臨近線速轉發的網絡能力,解決了虛擬機(VM)租戶網絡自動化編排開通的問題。
圖OVS Fastpath硬件卸載虛擬化網絡
在OVS Fastpath卸載后,OVS轉發報文時,數據流首包仍然做軟件轉發,在轉發過程中生成Fastpath轉發流表并配置到硬件網卡上,這個數據流的后續報文則通過硬件直接轉發給虛擬機(VM)。由于早期的Mellanox智能網卡還沒有集成通用CPU核,OVS的控制面依然在物理主機上運行。
(4)Virtio硬件加速虛擬化網絡(vDPA)
為了解決高性能SRIOV網絡的熱遷移問題,出現了很多做法和嘗試,尚未形成統一的標準。在Redhat提出硬件vDPA架構之前,Mellanox實現了軟件vDPA(即VF Relay)。理論上講,Mellanox的軟件vDPA并不能算是vDPA,其實就是將數據在用戶空間的virtio隊列和VF的接收隊列做了一次數據Relay。Redhat提出的硬件vDPA架構,目前在DPDK和內核程序中均有實現,基本是未來的標準架構。Qemu支持兩種方式的vDPA,一種是vhost-user,配合DPDK中的vDPA運行,DPDK再調用廠商用戶態vDPA驅動;另一種方式是vhost-vdpa,通過ioctl調用到內核通用vDPA模塊,通用vDPA模塊再調用廠商硬件專有的vDPA驅動。
1)軟件vDPA:軟件vDPA也叫VF relay,由于需要軟件把VF上接收的數據通過virtio轉發給虛擬機(VM),如Mellanox在OVS-DPDK實現了這個relay,OVS流表由硬件卸載加速,性能上與SR-IOV VF直通(passthrough)方式比略有降低,不過實現了虛擬機(VM)的熱遷移特性。
2)硬件vDPA:硬件vDPA實際上是借助virtio硬件加速,以實現更高性能的通信。由于控制面復雜,所以用硬件難以實現。廠商自己開發驅動,對接到用戶空間DPDK的vDPA和內核vDPA架構上,可以實現硬件vDPA。目前Mellanox mlx5和Intel IFC對應的vDPA適配程序都已經合入到DPDK和kernel社區源碼。
圖virtio硬件加速虛擬化網絡
在硬件vDPA場景下,通過OVS轉發的流量首包依然由主機上的OVS轉發平面處理,對應數據流的后續報文由硬件網卡直接轉發。
后來在Bluefield-2上,由于集成了ARM核,所以NVIDIA在與UCloud的合作中,將OVS的控制面也完全卸載到網卡到ARM核上,這樣主機上就可以將OVS完全卸載到網卡上。
二、網絡功能虛擬化(Network Function Virtualization)
伴隨著越來越多的業務上云,一些原來運行在專用設備或者特定主機上的網絡產品也開始重視上云后的按需擴縮容能力,所以出現了網路功能虛擬化(NFV)產品。NFV產品主要以虛擬機(VM)或者容器(Container)的形態部署到云計算平臺上,對外提供對應的網絡功能,如Load Balance,Firewall,NAT,vRouter,DPI和5G邊緣計算UPF等。這些NFV產品之前全部基于DPDK在X86 CPU上運行,由于CPU算力上限問題,通常難以提供對應網絡帶寬的吞吐能力。DPU智能網卡的出現,為NFV加速提供了資源和可能。
(1)5G邊緣計算UPF(User PlaneFunction)
5G垂直行業對5G網絡提出了更高的要求,如大帶寬,高可靠,低時延,低抖動等,這對用戶面數據轉發的核心5G UPF,提出了更高的實現要求。尤其在邊緣網絡,交互式VR/AR在大帶寬的要求下,還需要低時延,從而提高業務的用戶體驗;而車路協同系統等,對高可靠和低時延低抖動的要求更高,這是保障車路協同能夠實時做出正確決策的關鍵;一些工業控制實時自動化應用,也是要求視頻數據實時傳輸到服務端,并通過視頻識別等功能實時做出控制指令下發等等。這些典型的應用,都對邊緣計算中5G UPF提出了更嚴苛的要求。
在5G邊緣計算中,未來的主要應用場景包括:增強型視頻服務,監測與追蹤類服務,實時自動化,智能監控,自動機器人,危險和維護傳感,增強現實,網聯車輛和遠程操控等。對應的5G技術指標和特征也比較明顯。首先,超大帶寬(eMBB,Enhanced Mobile Broadband)要求單用戶峰值帶寬可達20Gbps,用戶體驗數據速率在100Mbps;其次,超密連接(mMTC,Massive Machine Type Communication)要求每平方公里設備數量在10k到1M個終端,流量密度10Mbps每平方米;最后,超低時延(uRLLC, Ultra Reliable Low Latency Communication)要求時延在1~10ms,高可靠性達到99.999%。
圖5G業務網絡特征
傳統的5G UPF通常由軟件實現,運行在X86 CPU上,雖然在吞吐上可以通過增加CPU來實現更大能力,但是,時延和抖動通常都會比較高,很難穩定支撐低時延低抖動業務。對于超大帶寬,超低時延的需求,這類數據轉發業務更適合在硬件中實現,硬件實現更容易做到低時延低抖動和大帶寬。
5GUPF業務模型復雜,需要選擇性卸載轉發,將高可靠低時延低抖動業務要求的用戶會話卸載到硬件中。如圖3-5所示,數據流首包通過軟件轉發,然后將對應的流表卸載到智能網卡,后續報文通過智能網卡硬件轉發,這樣可以在5G邊緣計算中,提供低時延低抖動和超大帶寬網絡能力的同時,還能降低邊緣計算的整體功耗。
圖5G邊緣計算UPF硬件卸載方式
(2)智能DPI(Deep Packet Inspection)
DPI不論在運營商網絡還是互聯網數據中心,都是重要的配套設備。而且DPI功能是很多網絡功能產品的基礎功能,如IPS/IDS,5G UPF,DDoS防攻擊設備等,具有重要的產品價值。DPI具有高新建、高并發、高吞吐等特點,使得性能成為虛擬化部署的瓶頸。通過DPU智能網卡實現DPI流量卸載,性能可以提升在30%以上。
圖智能DPI硬件卸載
智能DPI基于智能網卡卸載DPI流量,軟件規則庫下發到硬件形成流識別的規則,再將軟件策略下發到硬件形成對應的動作。這樣數據流進入網卡通過打時間戳進行硬件解析,匹配識別規則庫,根據匹配的規則尋找對應的策略,根據策略進行計數,鏡像,丟棄和轉發等行為。通過硬件卸載DPI流量,不僅可以節省虛擬化DPI的CPU,還可以提升其吞吐量,同時降低了整體TCO。一些公有云的運維系統也是通過DPI功能做流日志,除了運維使用以外,還對用戶提供對應的流日志服務。
三、云原生網絡功能
(1)云原生網絡架構
云原生,從廣義上來說,是更好的構建云平臺與云應用的一整套新型的設計理念與方法論,而狹義上講則是以docker容器和Kubernetes(K8S)為支撐的云原生計算基金會(CNCF)技術生態堆棧的新式IT架構。對比虛擬機,容器應用對磁盤的占用空間更小,啟動速度更快,直接運行在宿主機內核上,因而無Hypervisor開銷,并發支持上百個容器同時在線,接近宿主機上本地進程的性能,資源利用率也更高。以K8S為代表的云原生容器編排系統,提供了統一調度與彈性擴展的能力,以及標準化組件與服務,支持快速開發與部署。
容器平臺包括容器引擎Runtime(如containerd,cri-o等),容器網絡接口(CNI,如calico,flannel,contiv,cilium等)和容器存儲接口(CSI,如EBS CSI,ceph-csi等)。
云原生平臺可以部署在裸金屬服務器上,也可以部署在虛擬機(VM)上。通常為了追求更高的性能,云原生平臺會部署在裸金屬上。如果考慮故障后更容易恢復,通常會部署在虛擬機(VM)上。
圖云原生網絡架構介紹
云原生對于網絡的需求,既有基礎的二三層網絡聯通,也有四至七層的高級網絡功能。二三層的網絡主要是實現K8S中的CNI接口,具體如calico,flannel,weave,contiv,cilium等。主要是支持大規模實例,快速彈性伸縮,自愈合,多集群多活等。四至七層網絡功能,主要是服務網格(Service Mesh)。服務網格的本質是提供安全、可靠、靈活、高效的服務間通信。服務網格還提供了一些更加高級的網絡功能,如有狀態的通信,路由限流,灰度流量切換,熔斷監控等。
(2)eBPF的硬件加速
eBPF是一項革命性的技術,可以在Linux內核中運行沙盒程序,而無需重新編譯內核或者加載內核模塊。在過去幾年,eBPF已經成為解決以前依賴于內核更改或者內核模塊的問題的標準方法。對比在Kubernetes上Iptables的轉發路徑,使用eBPF會簡化其中大部分轉發步驟,提高內核的數據轉發性能。Cilium是一個基于eBPF實現的開源項目,提供和保護使用Linux容器管理平臺部署的應用程序服務之間的網絡和API連接,以解決容器工作負載的新可伸縮性,安全性和可見性要求。Cilium超越了傳統的容器網絡接口(CNI),可提供服務解析,策略執行等功能,實現了組網與安全一體化的云原生網絡。Cilium數據平面采用eBPF加速,能夠以Service/pod/container為對象進行動態地網絡和安全策略管理,解耦控制面等策略管理和不斷變化的網絡環境,具有應用感知能力(如https,gRPC等應用),從而實現對流量的精確化控制。同時它的狀態通過K-V數據庫來維護實現可擴展設計。
基于eBPF的Cilium已經被證明是Kubernetes云原生網絡的最佳實踐,國內阿里云和騰訊云勻已在自己的公有云中引用了Cilium構建自己的云原生平臺。
為進一步提升性能,Netronome將eBPF路徑上的部分功能卸載到硬件網卡,如XDP和Traffic Classifier cls-bpf,實現了對于用戶無感知的eBPF卸載加速。硬件卸載的eBPF程序可以直接將報文送到任意內核eBPF程序,eBPF中map的維護對于用戶程序和內核程序是透明的。
eBPF程序的編譯需要在生成內核微碼的基礎上,加入編譯硬件可識別的微碼程序,并將對應的硬件微碼程序裝載到網卡中。從而實現eBPF硬件卸載。
(3)云原生Istio服務網格
Istio是CNCF主推的微服務框架,實現了云原生四至七層網絡能力。Istio在數據平面通過Sidecar對流量進行劫持,實現了無代碼侵入的服務網格??刂破矫娼M件中,pilot負責下發控制,mixer收集運行的狀態,citadel則負責安全證書方面的處理。
圖服務網格Istio架構
在Istio中,原生的七層代理使用的是Envoy,Envoy提供了動態服務發現,負載均衡的能力,同時支持TLS連接,可以代理HTTP/1.1 & HTTP/2 & gRPC等協議。同時支持熔斷器,流量拆分,故障注入等能力和豐富的度量指標。另外,阿里還提出了MOSN作為Istio的七層代理,這里不再介紹細節。由于引入七層代理后,增加數據轉發時延。Broadcom嘗試在StingrayDPU智能網卡將Enovy以網關模式卸載到智能網卡的ARM核上,用了八個ARM核中的六個來做Enovy卸載支持100G網卡上的流量。這種方式是否能夠適用于當前Sidecar上代理模式的Enovy,還有待探索,另外,編排和管理方式也需要進一步調研。
圖Envoy卸載實例
OVS硬件卸載的加速方式主要由OVN-Kubernetes和AntreaCNI做控制面。由于OVS的數據面在OpenStack云平臺上已經有了硬件卸載的先例,所以,在云原生網絡再做硬件卸載,基本上沒有技術障礙,只需要增加NAT處理能力即可。但是,這種硬件卸載方式,由于沒有涉及到七層代理,所以不可避免的還是會將報文上送到內核轉發,進而在數據轉發性能上的提升相對有限。
圖OVS硬件加速
總體而言,在云原生網絡中智能網卡的應用場景還需要進一步探索,目前尚無一個相對完美的能夠解決服務網格性能和時延問題的方案。
四、RDMA網絡功能
(1)RDMA網絡功能介紹
面對高性能計算、大數據分析和浪涌型IO高并發、低時延應用,現有TCP/IP軟硬件架構和應用高CPU消耗的技術特征根本不能滿足應用的需求。這主要體現在處理時延過大——數十微秒,多次內存拷貝、中斷處理,上下文切換,復雜的TCP/IP協議處理,以及存儲轉發模式和丟包導致額外的時延。而RDMA通過網絡在兩個端點的應用軟件之間實現Buffer的直接傳遞,相比TCP/IP,RDMA無需操作系統和協議棧的介入,能夠實現端點間的超低時延、超高吞吐量傳輸,不需要網絡數據的處理和搬移耗費過多的資源,無需OS和CPU的介入。RDMA的本質實際上是一種內存讀寫技術。
圖對比RDMA和TCP/IP收發數據
RDMA和TCP/IP網絡對比可以看出,RDMA的性能優勢主要體現在:
(1)零拷貝——減少數據拷貝次數,由于沒有將數據拷貝到內核態并處理數據包頭部到過程,傳輸延遲會顯著減少。
(2)Kernel Bypass和協議卸載——不需要內核參與,數據通路中沒有繁瑣的處理報頭邏輯,不僅會使延遲降低,而且也節省了CPU的資源。
(2)RDMA硬件卸載方式
原生RDMA是IBTA(InfiniBand Trade Association)在2000年發布的基于InfiniBand的RDMA規范;基于TCP/IP的RDMA稱作iWARP,在2007年形成標準;基于Ethernet的RDMA叫做RoCE,在2010年發布協議,基于增強型以太網并將傳輸層換成IB傳輸層實現;在2014年,IBTA發布了RoCEv2,引入IP解決擴展性問題,可以跨二層組網,引入UDP解決ECMP負載分擔等問題。
圖RDMA協議棧介紹
InfiniBand是一種專為RDMA設計的網絡,從硬件級別保證可靠傳輸。全球HPC高算系統TOP500大效能的超級計算機中有相當多套系統在使用InfiniBand Architecture(IBA)。最早做InfiniBand的廠商是IBM和HP,現在主要是NVIDIA的Mellanox。InfiniBand從L2到L4都需要自己的專有硬件,成本非常高。
iWARP直接將RDMA實現在TCP上,優點就是成本最低,只需要采購支出iWARP的NIC即可以使用RDMA,缺點是性能不好,因為TCP協議棧本身過于重量級,即使按照iWARP廠商的通用做法將TCP卸載到硬件上實現,也很難超越IB和RoCE的性能。
RoCE(RDMA over Converged Ethernet)是一個允許在以太網上執行RDMA的網絡協議。由于底層使用的以太網幀頭,所以支持在以太網基礎設施上使用RDMA。不過需要數據中心交換機DCB技術保證無丟包。相比IB交換機時延,交換機時延要稍高一些。由于只能應用于二層網絡,不能跨越IP網段使用,市場應用場景相對受限。
RoCEv2協議構筑于UDP/IPv4或UDP/IPv6協議之上。由于基于IP層,所以可以被路由,將RoCE從以太網廣播域擴展到IP可路由。由于UDP數據包不具有保序的特征,所以對于同一條數據流,即相同五元組的數據包要求不得改變順序。另外,RoCEv2還要利用IP ECN等擁塞控制機制,來保障網絡傳輸無損。RoCEv2也是目前主要的RDMA網絡技術,以NVIDIA的Mellanox和Intel為代表的廠商,均支持RoCEv2的硬件卸載能力。
-
DPU
+關注
關注
0文章
365瀏覽量
24213
發布評論請先 登錄
相關推薦
評論