自從2012年ETSI 提出NFV概念以來,NFV成為通信行業發展的一個熱點。NFV主要的思路是讓網絡功能和專用硬件解耦,在COTS硬件上實現傳統網絡的系列功能。解耦后,通信軟件的發展和升級可以靈活進行,硬件也可以根據需要由運營商自由定制,由此提升業務上線速度,并實現成本的降低。NFV在城域網的應用主要體現在業務接入控制的BRAS領域。vBRAS產品是傳統BRAS產品的虛擬化實現,它除了需要完成傳統的寬帶用戶接入以及業務控制外,還面臨其他一系列的挑戰,比如云化架構的實現、電信級可靠性和運維能力、業務快速集成能力以及開放的體系結構實現。
vBRAS性能提升技術
傳統的電信行業,為了實現大吞吐量、低延遲、高可靠的轉發,大量使用專用硬件,例如NP、ASIC、TCAM等。NFV采用的是COTS硬件,使用CPU來實現報文轉發。CPU轉發雖然在功能上比較靈活和強大,但在性能、時延方面,和專用硬件比起來還存在一定差距。為了提升COTS硬件的轉發能力,vBRAS使用業界先進的虛擬化技術,并且在轉發軟件層面,也進行了大量優化,實現了性能的有效提升。
轉發性能提升,首要需要考慮的是VMM(Virtual Machine Manager,通常也稱之為Hypervisor)的性能提升。VMM是運行在HOST機上的一個應用程序,它屏蔽HOST機底層的物理特性,為用戶提供一個統一、虛擬的計算環境。虛擬環境上運行的OS(Guest OS)以及相關軟件稱之為虛擬機。在全虛擬化情況下,VMM需要模擬出各種外圍硬件設備,例如虛擬網卡、磁盤、串口等。Guest OS以及里面的程序執行是一個非常復雜的過程,特別是對于特權指令、系統調用、trap、中斷等系統操作的處理。Guest OS執行特權指令時,Host OS會產生一個異常,控制權從Guest OS轉移到VMM。VMM對指令進行等價轉換后執行,然后控制權再返回到Guest OS中繼續后面的指令。
虛擬化技術最初的實現,通過軟件模擬系統特權指令的執行,所以系統執行性能很低。后來出現了半虛擬化(Para-Virtualization)技術。在半虛擬化下,Guest OS要求能感知到VMM的存在,Guest OS需要做一定的修改,以簡化的方式來執行系統指令(相對完全軟件模擬),性能得到一定提升。2005年和2006年,Intel和AMD分別推出了硬件輔助虛擬化技術,利用CPU硬件來隔離虛擬機的執行,加速執行速度。VT-x是Intel的硬件輔助虛擬化技術,AMD類似技術叫AMD-V。VT-x通過CPU引入VMX root operation和VMX non-root operation模式,給VMM和Guest OS提供了自己單獨的運行模式和環境。每個模式都有ring0-ring3這4個特權級,所以VMM和Guest OS都有自己完整的執行上下文環境。硬件輔助虛擬化下,Guest OS的特權指令可以直接運行于VM內部,不產生系統異常,不需要VMM干預,不用軟件模擬,極大提升系統執行性能。目前,在Intel的新一代處理器中,除了有些Atom芯片不支持外,其余大多數都已經廣泛支持VT-x技術。例如桌面應用的Intel Core I5/i7等,服務器芯片領域的Xeon E5和E7等。目前,電信領域NFV使用的COTS硬件都要求需要支持VT-x技術。支持VT-x作為部署vBRAS的首要前提,必須滿足。支持VT-x需要處理器、VMM同時支持。vBRAS推薦運行在Intel Xeon E5 2600以上配置的服務器上,使用Linux KVM或者VMware ESXi作為VMM,可以支持VT-x硬件加速。
芯片組虛擬化加速技術
芯片組虛擬化技術是指在主板芯片上實現的虛擬化,包括IO虛擬化和網卡虛擬化。VT-d(Virtualization Technology for Direct/IO)是一種在主板北橋芯片中實現的硬件輔助虛擬化技術。通過在北橋芯片中,更新設計的IOMMU(Input/Output Memory Manager Unit)構架,通過DMA Remapping,存在多個DMA保護區,實現DMA虛擬化。VT-d(Virtualization Technology for Direct/IO)通過中斷re-mapping,可以讓中斷直接通知到VM。利用IOMMU,VMM可直接分配IO給VM,允許虛擬機對IO的直接訪問。
VT-c(Virtualization Technology for Connectivity)是另外一類IO虛擬化類型,它包含2個技術:VMDq和VMDc。VMDq主要是VMM使用的技術,vBRAS運行的環境不使用,本文不進行說明。VMDc支持虛擬機直接訪問網絡 I/O硬件,從而顯著提升虛擬機性能。如前所述,Intel VT-d 支持客戶操作系統與設備I/O端口之間的直接通信。通過支持每個 I/O 端口的多條直接通信信道,VMDc可對此進行擴展。例如,通過單個英特爾萬兆位服務器網卡,可為10個虛擬機分配一個受保護的、1 Gb/s的專用鏈路,這些直接通信鏈路繞過了VMM的虛擬交換機,可進一步提升I/O性能并減少服務器處理器的負載。SR-IOV(Single Root I/O Virtualization)是VMDc的規范和標準,由 PCI-SIG 進行定義和維護。SR-IOV 定義了共享物理接口的一種方法,采用硬件實現的方式,針對具備多個硬件隊列的網卡(如Intel 10GE 82599)可以虛擬成多個PCI I/O設備,每個I/O設備直接分配給指定的VM使用。通過驅動程序支持,可以實現物理網卡硬件的高速直接讀寫,實現接近于物理設備的性能。
圖1 SR-IOV網卡原理示意
如圖1所示,由SR-IOV網卡的PF(Physical Function)可以虛擬出來多個VF(Virtual Function)。VF可以分配給虛擬機,虛擬機能通過VF直接訪問網卡硬件。所有的數據不再經過VMM的虛擬交換機進行過濾/轉發,極大地提高了網絡I/O性能。SR-IOV需要物理網卡支持技術,同時,虛擬機內部的Guest OS也需要支持相應的驅動。vBRAS目前已經支持Intel 82599網卡的SR-IOV處理模式,性能測試數據如圖2所示。
圖2 SR-IOV網卡和普通VirtIO網卡性能對比
從圖2中看出,SR-IOV的性能要比VirtIO的性能高20多倍,SR-IOV對性能的提升相當得明顯。目前,業界很多網卡廠商都開始支持SR-IOV,例如Intel、Broadcom等。vBRAS在電信領域的應用,建議SR-IOV網卡作為標配。對影響要求嚴格的場合,SR-IOV能力要求為必備。
vBRAS轉發性能提升技術
目前,服務器使用的的CPU基本都是多核架構。vBRAS設計了一套先進的轉發模型,該模型基于多核系統設計,針對多處理器系統進行很多優化,轉發效率比傳統轉發模式有很大提升。
PMD(Poll Mode Drive)
傳統Linux轉發,網卡收到報文以后,通過DMA把報文寫到內存,然后給CPU上報中斷,通知CPU進行報文轉發處理。在普通的服務器上,這個方法工作得很好,性能也能滿足要求。但對于網絡設備來說,在高吞吐、大數據量情況下,靠中斷來驅動轉發,會讓系統不堪重負。
傳統的Linux轉發模型下,提升報文接收性能,需要一些硬件輔助技術,例如Intel 82575 GE以太網控制器和Intel 82598 10G以太網控制器上采用的RSS、VMDq、MSI-X技術。Intel 82575以太網控制器具有多個硬件接收隊列。報文接收時,可以根據4元組計算HASH,確定報文應該送到哪個物理隊列,并保證同一個流的報文能送到同一個隊列里面處理。報文送到硬件物理隊列后,隊列通過MSI-X中斷,上報給物理隊列所綁定的CPU處理。而每個硬件隊列的中斷,可以通過系統配置,根據實際需求,綁定到指定的CPU上。
VMDq是一種硬件offload技術。由網卡硬件完成了原有的VMM軟件對報文分類的操作。VMDq需要VMM軟件和網卡硬件協同,完成報文接收。
目前,Linux使用的RSS、VMDq、MSI-X技術雖然能加速報文的接收速度,但是CPU仍然需要中斷來觸發報文接收。高吞吐量場景下,仍然存在大量中斷,CPU負擔重。雖然Linux具有中斷合并調整功能(比如網卡驅動提供的IRQ coalescing特性,指定多少時間內合并多少個中斷),但并不能根本解決使用中斷來驅動轉發的問題。
vBRAS單獨使用一個接收線程,對系統里面所有的接口進行poll,如果發現有報文接收進來,就根據分發算法,把報文傳遞到轉發線程進行處理。報文傳遞的時候,只有指針交換,沒有中斷,也沒有內存copy。轉發線程的接收緩沖區是一個無鎖的ring buffer,避免了線程之間鎖搶占帶來的開銷。轉發線程通過自己的poll操作來感知報文的接收,如果收到報文則進行轉發。所以,對比傳統Linux的中斷驅動轉發的模型,vBRAS使用的PMD技術,從根本上解決了靠中斷來驅動轉發的問題,實現了系統0中斷。
CPU親和性綁定
vBRAS的轉發線程通過設定CPU親和性,綁定轉發線程到指定的CPU上運行。轉發線程不會被調度到其他CPU上運行,避免了進程切換和CPU調度帶來的系統開銷。綁定轉發線程到指定CPU上運行,解決了轉發線程運行在指定的CPU上,但不能阻止其他進程和轉發線競爭同一個CPU資源。
如果其他線程也能調度在轉發線程相同的CPU上,會搶占轉發線程資源,影響轉發效率。為了解決這個問題,vBRAS通過對CPU進行預先的規劃,指定數據平面CPU和控制平面CPU的集合。控制平面運行的進程只能在控制平面的CPU上運行,不會調度到數據平面的CPU上運行,避免控制進程對轉發CPU帶來干擾。規劃以后,轉發CPU就專職于轉發線程處理,不會運行其他線程,也不會執行其他系統事務。轉發線程在數據平面的CPU上專職轉發,沒有任務切換,也沒有其他任務搶占,實現轉發性能最大化。
高效率的內存管理
轉發流程中,常用的數據結構需要經常申請和釋放。而普通的內存申請和釋放,考慮到通用性,流程需要適配各種情況,邏輯完備,所以效率比較低。
vBRAS轉發關鍵路徑中,沒有使用普通的內存申請和釋放功能,而使用了Linux內核的SLAB高速緩存機制,加速內存申請和釋放。對于常用的數據結構,可以讓系統預先申請一個SLAB高速緩存池。數據結構申請時,可以直接從緩存池里面快速申請,避免慢速的普通申請流程。DPDK在用戶態轉發,也有類似內存管理機制Memory Manager。
報文緩沖區管理
網卡接收報文的時候,內存操作很頻繁。網卡把報文DMA到內存,如果報文緩沖區每次都要分配和釋放,系統的開銷會相當大。vBRAS有一個預先申請的緩沖區池,報文接收后,可以從池里面申請需要的緩存,不需要的時候釋放,避免內存隨報文收發進行申請和釋放,極大降低內存開銷。DPDK也有類似技術Buffer manager。
內核態轉發
Linux系統上,報文接收是首先從內核態開始,網卡驅動的執行在內核態。報文接收后,后續的轉發可以直接在內核態進行,比如傳統的Linux、Netmap等;也可以在用戶態進行,比如DPDK等。內核態轉發的優勢是報文不用上送用戶態,避免報文上送用戶態的開銷,性能高。用戶態轉發的好處是用戶態流程跟蹤調試以及后期維護比較方便,與內核耦合較小,軟件升級相對來說也比較方便一些,不用改動內核。但從性能上看,用戶態轉發沒有任何優勢。vBRAS選擇的是內核進行轉發,避免內核態和用戶態切換以及報文copy的巨大開銷,讓性能上達到最大化。
IP快轉
vBRAS的網卡接收報文以后,送給上層Comware平臺,完成后續的IP轉發功能。Comware可利用IP Cache的歷史信息,基于流的五元組,進行快速轉發。第一個報文進行轉發時,系統會創建快轉表。快轉表里面會記錄轉發需要的入、出接口信息,鏈路層頭信息等關鍵內容。系統接收到后報文時,直接查詢快轉表,找到出接口以及需要的鏈路層頭信息,然后跳過普通的慢速發送流程,進行快速發送。
vBRAS云化架構實現
H3C vBRAS解決方案整體建立在云計算的架構之上,不僅通過虛擬化實現軟硬件解耦,而且更重要的通過vBRAS資源池的云化,實現了彈性擴容,資源的高效利用。并且,vBRAS資源池結合SDN技術,可以實現資源池內的流量靈活調度,實現網絡的彈性管理。
圖 3 vBRAS云化組網圖
如圖3所示,VNF Manager主要完成資源池內vBRAS創建、刪除等生命周期管理。vBRAS APP是H3C VCFC SDN Controller上面的一個APP,它給用戶提供一個UI,發起創建vBRAS資源創建請求。vBRAS APP還能對PPPoE的PADI報文進行調度,把PPPoE流量引流到指定的vBRAS上處理,實現流量的靈活調度。這個功能通過VCFC SDN Controller給匯聚交換機下發openflow流表來實現。vBRAS APP還能通過Netconf,監控vBRAS的CPU、內存、業務負載等。
H3C VNF Manager、vBRAS APP以及VCFC SDN Controller組合在形成H3C NFV MANO。H3C NFV MANO完全遵循ETSI NFV MANO標準的體系框架,它聚焦ETSI架構中的VNF和VNF Manger兩個模塊,通過restful API、NETCONF等開放接口,可以和其他產品組件(如H3C CAS、iMC等)實現無縫集成,形成端到端的整體解決方案。H3C VNF Manager通過restful API可以和第三方的MANO、OSS/BSS等系統實現對接,如OpenStack、HP NFV Director,實現開放互聯。vBRAS云化架構最明顯的特點是引入了VCFC SDN Controller,可以完成對接入網中交換機等其他網元的管理和控制,實現網絡整體集約化控制。
vBRAS云化架構同時考慮了城域網引入VxLAN的需求,支持匯聚交換機在VxLAN終結后,對于流量引流處理。
電信級可靠性實現
傳統的COTS硬件只能提供99.9%的可靠性,而對于電信級設備來說,要求達到99.999%可靠性。如何在傳統COTS硬件上,實現電信級的高可靠性是一個挑戰。
H3C利用多年在數據通信方面研發的經驗,通過軟件層面實現的高可用性來彌補COTS硬件在可靠性上的不足,實現系統整體達到電信級高可用要求。
Comware平臺高可用實現
Comware V7采用模塊化設計,各模塊有獨立的運行空間,使得單個模塊的異常不會影響系統其他部分,提高了系統的可靠性。模塊能夠動態加載,系統只需要加載需要運行的功能,不需要的模塊不用加載,提高系統性能及可靠性。模塊支持獨立升級,不用系統整機重啟,不影響系統運行。
ISSU(In-Service Software Upgrade,不中斷業務升級)是一種可靠性高的升級設備啟動軟件的方式。vBRAS的Comware V7平臺通過引入軟件包的概念,將系統軟件中比較穩定的基礎進程和相對比較活躍的業務進程分離,便于軟件的管理和維護。軟件包按功能劃分成Boot軟件包、System軟件包、Feature軟件包和補丁包。在通常情況下,不需要升級基礎進程,只需升級部分業務進程。而且,業務進程之間互相獨立,當某業務需要版本更新時,只需升級該業務對應的軟件包即可,不用升級所有模塊,從而不會對設備運行甚至其它業務造成影響。
IRF是H3C自主研發的系統高可用技術。它的核心思想是將多臺設備連接在一起,進行必要的配置后,虛擬化成一臺設備。IRF技術可以集合多臺設備的硬件資源和軟件處理能力,實現多臺設備的協同工作、統一管理和不間斷維護。使用IRF技術能夠搭建一個高可靠性的網絡節點。
如圖4所示,兩臺vBRAS可以通過IRF技術堆疊成一組,提供業務級的熱備和高可靠性。堆疊組內vBRAS的上/下行接口分別綁定到上/下冗余口上,對外使用冗余口的MAC和IP進行通信。用于IRF堆疊有IRF Control和IRF Data兩個接口。其中,IRF Control接口用于同步IRF成員設備之間的控制信息,包括主備關系、心跳保活、轉發表等控制平面的內容;IRF Data接口用于同步IRF成員設備之間的業務信息,包括IPSec連接、IKE、NAT會話表、防火墻會話表等,保證成員設備之間運行狀態保持一致,實現業務實時備份。
圖4 vBRAS IRF堆疊結構圖
實際部署的時候,IRF堆疊的兩臺vBRAS一般分布在兩個不同的物理服務器上。如果由于COTS硬件服務器故障,導致其上的IRF主不可用時,系統會自動切換到另外一臺服務器上的vBRAS去,由于業務級別備份,另外一臺vBRAS已經實時備份了用戶業務數據,業務不會中斷,快速恢復運行。例如vBRAS對于常用的三大接入業務類型PPPoE、Portal、IPoE可以做到業務級實時備份,做到業務不中斷切換,實現電信級設備的高可用。
資源池化實現高可用
vBRAS的一個資源池內,所有vBRAS相互之間是等同的,任何一個vBRAS都可以處理同一個用戶的接入業務。某個vBRAS故障后,系統可以讓原有vBRAS上的業務重新上線時,切換到資源池里面另外的vBRAS上,實現業務的高可用。不同于IRF方式的可靠性保護,使用資源池的vBRAS故障導致的切換,業務會有短時的中斷,例如PPPoE業務會在PPP協議keepalive超時后斷線,用戶重新撥號后可以上線。圖5是資源池內vBRAS故障后的切換流程。
圖5 資源池內vBRAS故障后的切換
vBRAS安全實現
基于ETSI NFV參考架構框架,NFV安全可分解為物理基礎設施層、虛擬基礎設施層、電信業務設施層三層;依據保護的業務對象不同,每個層分解為業務面、管理面兩個面。
圖6 NFV的安全分層
其中,本文重點描述一下業務面安全的VNF的安全和主機OS安全,因為這兩個部分是用戶能夠直接感知并交互的的部分,安全風險也是最大的。
VNF安全實現
VNF直接處理用戶的報文,用戶可能通過協議層面發送各種攻擊。所以,VNF上需要具備攻擊防御特性。vBRAS作為VNF,能對大多數的網絡攻擊有防御功能。比如vBRAS可以對下面的單包攻擊(也稱為畸形報文攻擊)進行防御,主要包括ICMP redirect、ICMP unreachable、ICMP type、Land、Smurf、Fragment、Teadrop、Ping of death等。
對于范洪攻擊,例如SYN flood、ACK flood、SYN-ACK flood、FIN flood、RST flood攻擊等,進行有效的防御。
OS層安全實現
vBRAS運行在x86-64的Intel CPU上,底層支撐的OS為Comware V7。OS防攻擊主要是針對系統可能出現的漏洞進行防御,比如系統上可能出現的緩沖區溢出漏洞等。vBRAS的Comware具備安全領域常用的針對系統漏洞進行攻擊防御手段:
NX技術(No-eXecute),含義是地址空間堆棧不可執行。NX對于Intel來說,名稱叫XD(eXec Disable)。Intel最初從Pentium 4開始的IA 32+PAE構架下開始支持NX,而Intel x86-64直接支持NX技術。vBRAS基于標準的x86-64架構,一般使用的Intel Xeon E5-2600 v2(Ivy-bridge)或者E5-2600 v3(Haswell)的處理器為Intel 64架構,支持NX。
另外,NX除了CPU需要支持,OS也需要支持。vBRAS運行的OS Comware V7也支持NX。如果系統里面出現漏洞,黑客常用的攻擊技術是在堆棧上注入可執行代碼,然后執行。但是由于NX的存在,堆棧不可執行,這種攻擊技術無效。NX可以減輕大多數漏洞導致的系統攻擊。
ASLR技術(Address Space Layout Randomization 地址空間隨機化)是Comware V7使用的另外一種防攻擊技術。它主要的方法是讓進程的地址空間隨機化,讓發起漏洞攻擊的黑客無法預測注入代碼的地址,而不能實施攻擊。使用ASLR后,進程的lib庫加載地址、堆棧地址和堆地址都可以被隨機化,使得黑客完全無法預測地址分布,避免攻擊實施。
Comware V7使用NX和ASLR配合,可以防止由于軟件漏洞導致的大多數攻擊。ComwareV7網上運行多年,從未因為軟件漏洞出現被攻擊的案例,安全性經過了實際考驗。
結束語
H3C vBRAS在云化的總體架構下,結合VxLAN和SDN技術,能夠實現彈性擴展、流量靈活調度,資源高效利用;同時通過利用一系列的性能優化技術,其轉發性能而要做到了業界領先;使用軟件可靠性技術,提升整體架構的可靠性達到電信級可靠性的SLA要求,系統安全防御措施完備,可以抵御業務層面和系統漏洞層面的攻擊,滿足電信級領域對于業務、性能、安全的綜合要求,提升用戶體驗。