第1章 SDN和NFV:下一代網絡的變革
1.什么是SDN和NFV
1.1 SDN/NFV的體系結構
SDN
SDN的體系結構可以分為3層:
基礎設施層
由經過資源抽象的網絡設備組成,僅實現網絡轉發等數據平面的功能,不包含或僅包含有限的控制平面的功能。控制層
利用南向接口控制基礎設施層的網絡設備,構建并維護全局的網絡視圖,實現傳統網絡設備中控制平面的功能。應用層
基于北向接口和控制層提供的網絡視圖進行編程,實現各種不同的網絡應用,使得網絡的轉發行為能夠通過軟件進行定義,實現網絡智能化。
基礎設施層與控制層之間通過控南向接口進行交互,控制層與應用層之間通過北向接口進行交互。
NFV
NFV分為3部分:
- NFV基礎設施將基于通用服務器提供的計算、存儲和網絡進行虛擬化,形成不同類型的資源池。
- 虛擬網絡功能在虛擬化資源池的基礎上實現各種網絡設備的功能,如防火墻、入侵防御、視頻加速、網絡代理等。
- NFV管理和編排則在縱向上負責對上述兩個部分進行配置和系統集成。
NFV與SDN之間的關系
- SDN和NFV技術高度互補,但是并不相互依賴。NFV可以不基于SDN技術進行實現,然而兩者相融合則可能產生更大的潛在價值。
- 利用數據中心現有的技術,NFV的目標可以基于非SDN的機制來實現。然而SDN所提出的控制平面和數據平面解耦的思路,可以進一步提升現有部署服務的性能并簡化其互操作性,減輕運維的負擔。
- NFV能夠為SDN軟件提供其運行所需要的基礎設施。
NFV與SDN的目標都是盡可能使用通用硬件來實現網絡功能,前者可使網絡功能開發者只關注于虛擬網絡資源的管理,而不需要關心底層硬件規格和其他細節;同樣后者可讓網絡運維開發者只關注上層的網絡業務特性和控制,而不需要關注底層網絡組網技術和數據包轉發邏輯上。
2.發展方向
2.1 SDN研究方向
① 基礎設施層,包括交換機處理流程的設計與實現、轉發規則對交換機流表的高效利用,以及交換機流表正確性的驗證等。
② 控制層,包括單點控制器設計、集群控制器架構、控制器接口和模型設計、控制器部署位置、控制器的分布式系統特性、控制器安全等。
③ 應用層,分為網絡安全、服務質量、負載均衡、流量工程等,以及在企業網、校園網、數據中心、無線網絡、廣域網等不同場景下的應用。
數據平面
數據平面的主要功能是匹配和轉發網包。基于硬件的實現方式,轉發性能高、功耗低,但可擴展性差;而基于網絡處理器或通用處理器的實現方式,轉發性能較硬件實現方式低一兩個數量級,但是具備非常強的靈活性。因此,交換機處理流程的設計和實現,主要是在上述兩者之間進行折中。同時,基于OpenFlow的SDN交換機流表匹配寬度遠超傳統交換機,在保證成本功耗的前提下,同樣容量的存儲芯片可支持的流表數目大幅下降,如何提高交換機流表利用率就成為轉發規則相關研究的另一問題。
- 交換機
未來SDN交換機需要支持在多表上串行或并行查詢的靈活配置,對網包處理的操作也要考慮擴展性,除了經典的操作,還需要支持對網包包頭任意域的修改,以及匹配過程中變量修改的相關操作。來自OpenFlow研究團隊的P4 和來自華為公司的POF是該方向的突出成果。P4面向的是基于芯片的實現方式,而POF是基于網絡處理器的方案。通過對匹配域、流水查找、網包操作等交換機處理網包的主要任務進行進一步拆分,并以可靈活配置、拼接的方式實現,未來SDN交換機相比OpenFlow交換機能夠更快地實現新的應用需求。
- 流表優化
在SDN架構中,控制平面向數據平面的多個交換機上部署規則時,會存在延時和不一致的問題:部分交換機上已部署了新的規則,而其他交換機上仍然保留著原有的規則。Reitblatt等人提出采用分布式系統設計中經典的兩階段提交方式來更新規則,并通過給數據包打標簽的方式來標識新舊規則的版本。在第一階段,控制器向擬更新的交換機發送消息,以確定完成對應舊規則的處理,并對處理完成的交換機進行規則的更新;在第二階段,等待所有更新的交換機返回更新成功的消息,否則取消該更新操作。
控制平面
NOX是首個OpenFlow控制器,它在OpenFlow協議的基礎上進行了封裝,提供了基于網絡事件觸發的編程模型,以及應用模塊動態加載與組合的運行機制,并支持多種開發語言。
MOX-MT針對NOX單線程處理方式造成的處理性能過低,改進了網絡收發模塊,并對處理中的冗余環節進行了優化,實現了多線程的事件處理。
ONIX首次提出了分布式SDN控制器,并系統地對SDN的編程模型及API進行了闡述。ONIX控制器中維護了一個NIB,該庫中保存了有關節點、鏈路、拓撲等信息的全局網絡視圖,并綜合采用DHT和事務型數據庫等多種手段來更新視圖;基于該視圖,ONIX抽象出多類API,用于管理網絡狀態。
Kandoo是一個層次化的分布式SDN控制器框架,它根據網絡狀態變更事件產生的頻率,設計了本地控制器和根控制器兩種類型,分別用于處理高頻率、局部的網絡狀態變更事件和低頻率、全局的網絡狀態變更事件。
ONOS是來源于學術界的最新網絡操作系統,它提供高可擴展性、高可靠性及高穩定性,實現了運營商級SDN控制器平臺的特征。
應用場景
SDN由于其高度靈活的可編程性,在網絡領域的大量應用場景中得以部署測試。
校園網環境是OpenFlow/SDN最早提出的應用場景,包括Ethane的訪問控制、Resonance的網絡準入等。
在數據中心,PSwitch/SIMPLE側重利用SDN技術解決中間設備的部署問題,VMware NSX團隊則完整展示了其基于SDN的網絡虛擬化平臺方案,包括數據平面和控制平面的設計。
在數據中心互聯方面,SDWAN則是代表工作。控制器通過SDN獲取全局信息,并采用ECMP技術來保證流量動態平衡,使得鏈路的利用率達到60%~100%。
在無線領域,將無線網絡設計分為處理平面和決策平面,并引入了針對無線網絡設備的可編程接口。
2.2 NFV研究方向
中間設備系統架構
隨著x86通用處理平臺性能的飛速提升,以及NFV需求的日益強烈,近年來的研究工作集中于如何在通用或開放標準處理平臺上對中間設備的系統架構進行重構,引入模塊化以消除功能冗余。CoMB和OpenGate是這方面工作的代表。
CoMB
① CoMB將中間設備的邏輯功能從物理硬件中解耦出來,并且對多種類型中間設備的邏輯功能進行歸納整理,抽象出共性的功能模塊,消除由于功能堆疊造成的處理冗余。
② 然后將上述功能模塊重新映射到通用處理平臺上,并在映射時考慮利用多種方式的并行實現,對每個功能模塊的處理進行加速。
③ 最后,引入了邏輯上集中的控制器來管理所有的中間設備,以實現全網范圍內中間設備資源利用率的提升及處理流量在時間和空間上的負載均衡。
CoMB將中間設備的功能模塊分為3層:
- 在網包捕獲層,CoMB利用網卡中的網包分類功能,將進入系統的流量根據其后續操作的不同進行分類,并分發到對應不同處理核心的硬件隊列中。
- 在連接維護層,CoMB在完成網包必要的完整性校驗后將其重組成網流,并對網流的應用層協議進行解析,根據流表將網流導入到不同的檢測引擎中。
- 在應用處理層,CoMB分別實現了基于Click平臺插件和基于獨立進程的兩類檢測引擎,并且在多核平臺上實現了并行和流水兩種處理方式。
OpenGate
該工作主要解決如何在開放標準硬件平臺上利用開放源碼軟件構建集群式中間設備的問題。
① OpenGate提出了基于開放標準的先進通信計算架構(Advanced Telecom Computing Architecture,ATCA)硬件平臺,并借鑒OpenFlow開放網絡架構的設計思想,利用開源網絡軟件構建集群式中間設備的設計。
② 然后根據系統的功能需求,將集群式中間設備的模塊劃分為3類:網絡處理、服務處理和控制處理,分別利用高速多核網絡處理器、分布式高性能服務器集群和系統處理邏輯集中控制,重點解決中間設備的前端、后端和整體管理3個方面的優化。
③ 最后,OpenGate針對網絡安全的應用場景,實現了同時支持20Gb/s狀態檢測和8Gb/s深度檢測的高性能安全網關。
OpenGate的所有功能模塊通過內部網絡接口,同時接入到系統的數據平面和控制平面網絡上。其中,網絡處理模塊作為整個集群的前端,還提供外部網絡接口處理系統的輸入/輸出。數據平面和控制平面網絡分別為多個功能模塊提供無阻塞的高速和低速數據交換通道。
- 在網絡處理模塊,OpenGate完成網絡L2、L3的處理以及基于網包包頭的狀態檢測,并利用獨立的快速通道和硬件支持的協處理器,分別保證前端處理的高性能和后端處理的加速優化。
- 在服務處理模塊,OpenGate完成基于網包載荷的深度檢測,并在用戶態利用多核處理器對檢測引擎進行多線程加速優化。在控制處理模塊,OpenGate負責整個集群系統的配置管理與模塊狀態監控。
其他相關工作
xOMB
側重于解決獨立形式中間設備的可編程性與可擴展性,較少涉及全網范圍內多個中間設備的協同與優化。
LiveSec
和FlowStream
提出了一種基于OpenFlow交換機與硬件設備或虛擬機相結合的中間設備實現方案,由于不少檢測功能需要根據網流中部分網包的載荷進行應用級別的協議解析或網流合并,因此該方案受OpenFlow匹配模型的限制,有其特定的局限性。
FRESCO
提出了一種基于OpenFlow控制器應用的網絡安全中間設備實現方案與編程平臺,該方案將檢測功能通過編寫成運行在OpenFlow控制器上的應用來實現,它仍然面臨與FlowStream方案相同的局限性。
中間設備管理接口
隨著SDN和NFV應用日益普遍,中間設備需要適應網絡拓撲的動態改變,因此中間設備提供的功能必須能夠通過編程接口開放出去,供其他子系統調用或集成。根據是否對傳統中間設備進行更改,中間設備管理接口的相關研究工作可以分為基于傳統中間設備的管理集成和基于開放功能中間設備的管理集成兩類,而PLayer和SDMBN分別是這兩類工作的代表。
PLayer
PLayer提出了引入策略感知的交換層作為中間設備的接入方案。該交換層由多個策略感知的交換機PSwitch組成,多個PSwitch可以根據運維人員制定的策略生成多種所需的邏輯拓撲連接。PLayer遵循了如下兩個設計原則。
- 將連通性與策略相分離:不同中間設備檢測功能的組合順序由策略顯式給定。
- 將中間設備移出物理網絡路徑:中間設備在數據中心網絡邊界接入,并利用流量牽引將需要檢測的流量按照策略指定的順序導引到對應的中間設備上。
① 在控制平面,PLayer通過定義在網包包頭域上的策略,制定不同流量在數據中心中流經中間設備的順序,并自動將上述策略根據物理網絡拓撲轉換成PSwitch上的轉發規則;
② 在數據平面,PSwitch接收并部署來自控制器轉換后的轉發規則,能夠在不對中間設備進行更改的前提下,完成基于策略的轉發功能。
OpenFlow相比PLayer明確提出了交換機控制平面與數據平面相分離的設計原則,定義了交換機邏輯功能的規格說明,并對控制器與交換機之間的命令格式進行了協議化。因此,基于PLayer的中間設備管理集成方案有著與基于OpenFlow的方案相同或相似的局限性。此外,針對數據中心中間設備部署的特定場景,PLayer還有如下不完善的地方。
- 不支持特定的檢測流量多次流經同一個中間設備。
- 未考慮對中間設備多租戶的支持。
- 流量牽引會導致額外的帶寬和延時開銷。
- 以網流為粒度進行策略管理仍然較為復雜。
SDMBN
該工作借鑒交換設備開放編程接口的思想,提出了開放中間設備功能的解決思路。
SDMBN對中間設備狀態根據其在運行過程中所扮演的角色進行分類,下表展示了4種狀態類型的最終分類結果。以入侵防御系統為例,策略規則、連接表項、功能參數和統計信息分別是操作狀態、支持狀態、調優狀態及監控狀態的典型實例。
類型 | 定義 | IPS示例 | 內部/外部 | 共享/獨享 | 形式數量 | 是否管理 |
---|---|---|---|---|---|---|
操作 | 指定網包/網流的操作 | 策略規則 | 外部 | 不確定 | 少 | 是 |
支持 | 支持多種可能操作的決策 | 連接表項 | 內部 | 均有 | 多 | 是 |
調優 | 調優設備算法性能、效率 | 功能參數 | 外部 | 共享 | 多 | 否 |
監控 | 量化設備運行狀態 | 統計信息 | 內部 | 均有 | 多 | 否 |
SDMBN對中間設備狀態的訪問設計了相應的編程接口,與大部分網絡管理協議類似,控制器向中間設備的訪問接口包括狀態的增、刪、查,中間設備向控制器的訪問接口為狀態的變更通知。
SDMBN的設計較大程度地提升了中間設備的可編程性,其不僅開放了傳統意義上的功能配置和統計信息編程接口,而且還抽象出對中間設備連接表等運行時關鍵信息的訪問接口,使得該框架能夠適應檢測能力動態調整和檢測功能在線熱遷移等復雜應用場景,為更高級別的功能聚合提供了支持。
其他相關工作
SIMPLE
在PLayer工作的基礎上,采用OpenFlow技術手段,重點解決在有設備處理資源限制的條件下,數據中心中間設備的部署問題。該工作還考慮到中間設備可能要對網包內容進行更改、同一類型多個中間設備之間負載均衡,以及特定檢測流量可能多次進入某個中間設備等其他因素,針對性地引入了基于相似性度量的網流關聯、基于在線和離線的整數線性規劃,以及基于隧道標記的流量牽引對上述3個問題進行解決。
Stratos
則將解決上述問題的手段擴展到基于虛擬機形式的中間設備上,根據網絡拓撲和實時流量大小動態調整虛擬化中間設備的部署位置,從而達到更好的負載均衡和更高的資源利用率。
OpenNF
是SDMBN工作的延續,擴展了后者提出的編程接口,以簡化中間設備管理集成的復雜度,并且通過實際原型系統的搭建和評測驗證了設計的合理性和有效性。
DPIaaS
利用OpenNF提供的控制手段,提出了將所有中間設備的深度檢測模塊提取出來,并抽象成服務,供多個中間設備共享,以在全網范圍內提升中間設備整體的處理效率。
中間設備策略分析
中間設備策略指面向網包包頭的策略類型,它是由一組規則組成的集合。其中,每條規則指定了網包包頭域上的匹配條件,以及對應的后續操作。這種類型的規則集合有別于面向網包載荷的規則集合,后者在處理邏輯上可以看作前者規則操作域的取值。
中間設備策略處理的相關研究可以分為兩種:策略分析主要包括如何優化中間設備策略的表示,以及如何對已部署的單個或多個中間設備上的策略沖突進行檢測;策略分配主要包括如何將在全局網絡拓撲上定義的策略分配到網絡中多個節點上進行分布式處理。
中間設備策略分析領域的研究工作大多集中于防火墻策略,防火墻策略的優化表示與沖突檢測分別定位于策略部署前后的分析工作。這兩類工作大都將防火墻策略用具備不同特性的樹狀結構表示,并在此基礎上完成相應的后續分析處理。防火墻決策圖(Firewall Decision Diagram,FDD)和PolicyTree分別是這兩類工作的代表。
FDD
通常防火墻策略表示需要滿足一下3個特性:一致性是指每個網包不會匹配策略中兩條不同操作的規則;完整性是指每個網包至少匹配策略中的一條規則;緊密性是指策略中不存在冗余的規則。FDD是一個有向無環的樹狀結構,除了同時滿足樹狀數據結構和有向無環圖的基本屬性外,還具備如下特性。
- 每層內部節點對應策略的某個特定域,每個葉子節點對應策略操作域的某個特定取值。
- 某個特定從根節點到葉子節點的路徑上不會出現對應域相同的多個節點。
- 內部節點的每條出邊對應于該節點對應域上的多個特定整數區間,每個內部節點的所有出邊對應的整數區間集合兩兩交集為空,所有并集為該節點對應域上的全集。
下圖展示了一個二維FDD示例;示例中兩個維度的取值全集均為[0,9],根節點對應第一維F0,第二層內部節點均對應第二維F1。
在FDD數據結構的基礎上,通過對取值相同的葉子節點進行選擇性的合并,可以達到防火墻策略的上述3個設計要求。此外,利用FDD數據結構,還可以對比多個防火墻策略之間的差異,從而找出策略定義中不明確的部分并對其進行修正。對防火墻策略的查詢及部分沖突檢測的功能也可以基于該結構來實現。
PolicyTree
Ehab對獨立式和分布式防火墻的策略沖突問題進行了系統性的研究,并提出了基于PolicyTree結構在策略部署后或增刪規則時,對已有的策略沖突或可能產生的策略沖突進行檢測的算法。
首先將防火墻規則之間的關系劃分為:完全分離、精確匹配、包含匹配、部分分離和相互關聯5種類型。
然后基于上述規則關系、優先級關系和操作域取值的不同,該工作分別介紹了獨立式防火墻的5種策略沖突類型(遮蔽異常、相關異常、泛化異常、冗余異常和無關異常)與分布式防火墻的4種策略沖突類型(遮蔽異常、欺騙異常、冗余異常和相關異常)。
最后,該工作將防火墻策略表示成PolicyTree,并用代碼邏輯描述和實現了策略沖突檢測算法。
中間設備策略分配
隨著SDN技術的興起,OpenFlow規范了交換設備的轉發模型,全網范圍內交換設備的策略可以根據應用場景的需要,由邏輯上集中的控制器進行靈活的分配。根據功能需求的不同,交換設備的策略分配算法可以分為兩類:
轉發策略與監控策略聯合分配
DIFANE提出了一種結合主動部署和被動部署兩者優點的解決方案。
DIFANE在數據平面引入多個授權交換設備,并將控制器在控制平面上給交換設備配置規則的功能卸載給數據平面上的多個授權交換設備來完成。
然后根據網絡拓撲確定授權交換設備的位置,并將全局策略在多維正交空間上劃分為與授權交換設備數量相同的多個不交疊策略子集。
最后,DIFANE的控制器將全局策略的劃分方式生成“分區規則”并預先配置到所有交換設備上,將多個策略子集生成“授權規則”并預先配置到對應的多個授權交換設備上。
當網包經過交換設備沒有命中有效規則時,“分區規則”會將網包重定向到該交換設備所屬的授權交換設備;授權交換設備一方面根據“授權規則”對網包進行處理,另一方面生成“緩存規則”配置到網包所來的交換設備上。由于“緩存規則”的優先級要高于“分區規則”的優先級,因此后續網包會根據最新配置的“緩存規則”進行處理。DIFANE在對全局策略進行劃分時,為了適應硬件交換機三態內容尋址存儲器(Ternary Content Addressable Memory,TCAM)的查找特性,采用了等分空間切分的方法,并根據切分后的子空間對原始策略進行裁剪。總體上看,DIFANE綜合采用全局策略分區和基于數據平面的規則被動部署,解決了大規模規則集在資源有限的硬件交換機上高效部署的問題。
vCRIB在DIFANE工作的基礎上,將問題背景擴展到支持規則在軟件交換設備上部署,并對DIFANE的全局策略劃分方式進行優化,解決了云數據中心大規模策略管理的問題。
vCRIB采取了“面向源端”和“基于復制”的全局策略劃分思路。前者保證了每個策略子集僅檢測某個終端節點發送的流量,且所有策略子集在流量覆蓋的有效空間上相互無交疊,從而極大地減輕了策略子集在后續調整及虛擬機遷移過程中的處理復雜度;后者基于對相鄰源對應的策略子集相似度較高現象的觀察,保證了策略劃分時不會出現DIFANE中對策略進行裁剪造成的規則數目膨脹,而且方便了對多個策略子集進行合并。
其次,vCRIB提出了基于背包問題建模和資源感知的策略子集分配算法。該算法實現了在保證網絡節點資源限制的前提下,盡可能將相似的策略子集集中部署在相同的網絡節點上。
最后,vCRIB根據流量的變化對策略子集的部署結果進行微調,通過貪婪地選擇當前負載最大的網絡節點,并將其上的部分策略子集分散到相鄰的網絡節點上,以實現全網范圍內資源利用率的提升和負載均衡。
基于轉發策略的監控策略分配
Palette針對大規模訪問控制策略部署在網絡接入交換設備上會導致其表項的負載過高,而核心交換設備表項較為富裕的問題,提出了將上述訪問控制策略盡量分散到全網范圍內的所有交換設備上,并且保證網絡中每條路徑上的節點全集或子集保存一份完整的全局訪問控制策略。
首先將全局訪問控制策略按照位取值的不同或規則之間的相互依賴關系,迭代地劃分為規則數目相近的多個不交疊策略子集。
其次進行貪婪的網絡節點選擇,每次選擇一個或多個網絡節點部署策略子集,直到每條網絡路徑上都有所有策略子集的部署。解決方案如下圖:
Palette在進行全局策略劃分時沒有考慮到網絡流量空間的因素,因此可能會出現某條網絡路徑查詢了與其不相關規則的情況,導致了處理資源的浪費。此外,Palette策略分配算法的性能與全網中最短路徑的長度密切相關,導致該算法難以在最短路徑長度較小的網絡中充分利用所有交換設備的資源。One-Big-Switch進行了改善。
首先,將網絡中的所有路徑分離出來,并在此基礎上通過線性規劃算法為每條路徑分配其可用的硬件資源。
其次,根據每條路徑上各個交換設備為該路徑分配的硬件資源,One-Big-Switch將與該路徑相關的策略用多維正交空間中的單個超長方體以貪婪的方式進行劃分,然后順序部署在對應的交換設備上。
最后,One-Big-Switch還根據規則操作域的取值,對需要丟棄的網絡流量,在交換設備部署順序上進行了優化,以減少網絡帶寬開銷。