SDN綜述

論文

1

思想

利用分層思想,將數據與控制分離。
控制層有邏輯中心化和可編程控制器。數據層有dump 交換機,只負責數據的轉發,課快速處理匹配數據包,適應流量日益增長的需求。兩層之間採用開放統一的接口(比如openflow)交互。控制器通過接口下發規則,交換機按照規則執行工作。

體系結構

架構

SDN體系結構2
SDN由北向南分爲三個接口:數據平面、控制平面、和應用平面。數據平面與控制平面之間利用用SDN控制數據平面接口(control-data-plane interface,簡稱CDPI)進行通信。CDPI有統一的標準,目前是 OpenFlow協議。控制平面與應用平面之間採用SDN北向接口(northbound interface,簡稱NBI)。NBI可以依照用於實際需求定製。

數據平面由交換機等網絡元素鏈接。可以將至視爲傳統的數據鏈路,負責網絡之間的數據交互,並接受上層的控制。控制平面是中間件,通過CDPI驅動來監控管理數據平面中的網絡元素的行爲,並通過北向接口來接收應用層的命令。應用平面包含各類基於SDN的網絡應用,用戶無需關心底層實現,就可以通過簡單編程實現應用的快速部署。網絡抽象特性允許用戶可以根據需求選擇不同的網絡操作系
統,而並不影響物理設備的正常運行。

不同方向

NFV(Network Function Virtulizaiton),是指將傳統的網絡功能虛擬化,使之獨立於硬件。在相同的硬件上,可以運行不同的網絡功能。從而減少專屬設備的硬件成本。NVF用了資源虛擬化的方式,在硬件設備中建立一個網絡虛擬層,負責將硬件
資源虛擬化,形成虛擬計算資源、虛擬存儲資源和虛擬網絡資源等,運營商通過軟件來管理這些虛擬資源.由於
採用的是通用硬件設備,NFV降低了設備成本,減少了能耗,縮短了新網絡服務的部署週期,從而適應網絡運營
商的發展需求.在接口設計方面,NFV既可以基於非OpenFlow協議,又能與OpenFlow協同工作,同時還支持
ForCES等多種傳統接口標準化協議,以便適應網絡運營商對設備的不同需求,並與ONF的SDN保持相對獨
立的發展.

OpenDaylight是一套以社區爲主導的開源框架,旨在推動創新實施以及SDN透明化。考慮到兼容性問題,OpenDaylight繼承了SDN架構形式,同時又結合了NFV的特
點.架構共分爲3個層次,分別是網絡應用與業務流程(即應用層)、控制平臺(即控制層)和物理與虛擬網絡設備(即數據層).OpenDaylight的控制平臺直接由自帶的Java虛擬機實現.針對不同的網絡任務,控制器自身攜帶了一系列可插入模塊,併兼容第三方模塊以增強SDN的功能.與ONF的SDN架構最大的不同在於:OpenDaylight控制器的南向接口除了支持OpenFlow協議之外,還支持NETCONF等配置協議和BGPt24等路由協議,並支持生產廠商的專有協議(如思科的OnePK協議).爲了能夠處理不同的標準協議,OpenDaylight增加了服務抽象層SAL,它負責將不同的底層協議標準轉換成OpenDaylight控制層所理解的請求服務,保持了底層協議的透明性,並提高了整體架構的可擴展性.

開放式接口與協議設計

SDN接口中,以控制器爲中心,南向與數據層通信,北向與應用層通信。並支持多控制器,在東西向進行多控制器通信。
作爲數據與控制分離的核心,南向接口是目前相對研究比較多的點。比如ONF的CDPI,採用openflow。Openflow基於流的概念來匹配規則,交換機通過維護流表(Flow table)來支持openflow,按流表進行數據轉發。流表的建立,維護及下發由控制器進行。

對於北向的研究,有ONF的NBI,OpenDaylight的REST等。這一方面的研究在於如何實現統一的北向接口標準。 東西向接口爲負載均衡和性能提升提供保障。

數據層關鍵技術

在SDN中,數據層與控制層分離,控制策略部分被交給控制器負責,數據層上的研究主要集中在交換機設計和轉發規則。

交換機設計問題

SDN交換機位於數據層面。用來負責數據流轉發。可以使用硬件和軟件兩種方式進行轉發。硬件轉發速度快,成本低,功耗小,但是靈活性不夠。對此,Bosshart等人[^32]提出了針對數據平面轉發的RMT模型。允許在流水線階段支持任意寬度和深度的流表。
1. 允許隨意替換或增加域定義;
2. 允許指定流表的數量、拓撲、寬度和深度,僅僅受限於芯片的整體資源(如芯片內存大小等);
3. 允許創建新動作;
4. 可以隨意將數據包放到不同的隊列中,並指定發送端口。

此外,FlowAdapter是另一種利用硬件靈活處理的技術。FlowAdapter採用三層結構。最上層是可以通過更新來支持任何新協議的軟件數據平面,底層是相對固定但轉發效率高的硬件數據平面,位於中部的FlowAdapter層負責軟件數據平面和硬件數據平面之間的通信.當控制器下發規則時,軟件數據平面將存儲這些規則,形成M個階段的流表.由於這些規則相對靈活,不能全部
由交換機直接轉化成相應轉發動作,而硬件數據平面可以實現規則的高速匹配轉發.因此可利用中間層FlowAdapter將兩個數據平面中的規則進行無縫轉換,即,將相對靈活的M階段的流錶轉換成能夠被硬件所識別的Ⅳ階段的流表.爲了達到轉換目的,FlowAdapter首先檢查軟件數據平面的全部規則,然後根據完整的規則將M階段的流錶轉換成l階段流表,最後再將1階段流錶轉換成Ⅳ階段流表發送給硬件數據平面..另外,FlowAdapter相對控制器完全透明,對FlowAdapter交換機的更新不會影響控制器的正常運行.

與硬件設計交換機的觀點不同,軟件處理速度雖然低於硬件。但是軟件方式可以最大限度提升規則靈活性。同時避免硬件受制於自身資源限制導致的流表大小受限,無法有效處理突發流的問題。同時軟件也可以採用專用的NP(Network Processor)來替換CPU.

轉發規則的研究

如果網絡節點失效,或者網絡流量需要負載轉移等情況,都會引發轉發規則的變換。SDN採用高抽象層次的管理方式統一更新規則,防止出現規則更新不一致和規則延遲的現象。
一般採用兩階段提交方式更新規則[^40]: 第一階段:規則需要更新,控制器詢問每一個交換機是否處理完對應舊規則的流。並對處理完成的所有交換機進行規則更新。
第二階段:當所有交換機都更新完畢後,纔算完成更新,否則取消該更新操作。
這種方法需要等待舊規則的數據包處理完畢後才能處理新規則的數據包,會導致規則空間被佔用的問題。這個時候可以採用增量式一致更新:,該算法將規則更新分成多輪進行每一輪都採用二階段提交方式更新一個子集,這樣可以節省規則空間,達到更新時間與規則空間的折中。

控制層關鍵技術

控制器是控制層核心組件。通過控制器,用戶可以邏輯上集中控制交換機,實現數據快速轉發,安全便捷管理網絡,提神網絡整體性能。

控制器設計問題

控制器基本功能是爲科研人員提供可用的編程平臺,最早且廣泛使用的控制器平臺是NOX。提供了一系列基本接口,用戶通過NOX對全局網絡信息進行獲取,控制與管理。NOX的問題在於,隨着SDN網絡規模的擴展,單一結構集中控制的控制器處理能力受限,擴展困難,只能應用於小型企業網絡或者科研人員進行仿真。網絡中有兩種方式擴展,第一是提升控制器性能,比如NOX-MT,第二種是採用多控制器方式提升整體控制器的能力。
NOX-MT是具有多線程處理能力的NOX控制器,NOX-MT不改變NOX控制器的基本結構,而是利用傳統並行技術提升性能。
對於大規模網絡,需要採用多控制器進行處理。分佈式控制器有兩種方式進行擴展,扁平控制方式和層次控制方式。.對於扁平控制方式(比如ONIX,HyperFlow),所有控制器被放置在不相交的區域裏,分別管理各自的網絡.各控制器間的地位相等,
並通過東西向接口進行通信.對於層次控制方式(Kandoo),控制器之間具有垂直管理的功能.也就是說,局部控制器負責
各自的網絡,全局控制器負責局部控制器,控制器之間的交互可通過全局控制器來完成.

SDN網絡操作系統應該具有實時運行開發應用的能力,力求開發與執行的平衡。NOX採用Python或c++. 二者在開發效率和執行效率上各有偏重。科研人員致力於開發通用平臺,Beacon就是一個基於Java的通用平臺。它向用戶提供了一系列相關的庫與接口用於開發,並提供運行時模塊化的功能,使其在保證性能的情況下具有了實時運行的能力,實現了開發與執行兩者之間的平衡。

接口語言

傳統的低級配置接口,比如用c++編寫的接口,抽象程度低,不能大幅減少使用成本, 就有團隊致力於開發網絡配置語言,旨在搭建具有優化性能的通用北向接口。比如Nettle,McNettle(Nettle多核版),採用了函數響應式編程(FPR)方式。Maple則對接口語言進一步抽象,允許用戶使用自定義抽象策略。爲了能夠高效地將抽象策略分解成一系
列規則,並下發到相應的分佈式交換機上,Maple不但採用了高效的多核調度器,最關鍵的是,它採用了跟蹤運行時優化器(tracing runtime optimizer)來優化性能.該優化器一方面通過記錄可重用的策略,將負載儘可能地轉移
到交換機來處理.另一方面,通過動態跟蹤抽象策略與數據內容及環境的依賴性,使流表始終處於最新狀態,從而確保抽象策略轉成可用規則的效率。 此外還介紹了Frenetic等。

控制層特性研究

控制層存在一致性,可用性和容錯性等特性,但是三種特性無法同時滿足,達到三者之間的平衡和整體的最優化,是這個方向上的重點。

一致性

集中控制是SDN區別於其他網絡架構的核心優勢之一,通過集中控制,用戶可以獲取全局網絡視圖,並根據全網信息對網絡進行統一設計與部署,理論上保證了網絡配置的一致性問題.然而,分佈式控制器仍然具有潛在的不一致性問題.由於不同控制器的設計對網絡一致性要求有所不同,嚴格保證分佈式狀態全局統一的控制器,將無法保證網絡性能;反之,如果控制器能夠快速響應請求,下發策略,則無法保證全局狀態一致性.性能無明
顯影響的情況下,保證狀態一致性成爲了SDN設計中的關鍵問題。
併發策略同樣會導致一致性問題。可以由控制層將策略形成規則,並按兩階段提交方式解決.爲了避免數據層過多的參與,控制層可直接通過併發策略組合的方式來解決,並可利用細粒度鎖(fine—grained locking)確保組合策略無衝突發生.HFT採用了層次策略方案,它將併發策略分解,組織成樹的形式,樹的每個節點都可獨立形成轉發規則.HFT首先對每個節點進行自定義衝突處理操作,這樣,整個衝突處理過程就轉化成利用自定義衝突處理規則逆向搜索樹的過程,從而解決了併發策略一致性問題.

可用性

規則備份可以提升網絡的可用性(RuleBrieks)。
控制器作爲SDN的核心處理節點,需要處理來自交換機的大量請求,而過重的負載會影響SDN的可用性.利用分佈式控制器可以平衡負載,提升SDN的整體性能.(ndoo,ElastiCon).減少交換機的請求次數,可以提升控制層可用性。(DIFANE,DevoFlow)

容錯性

與傳統的互聯網類似,SDN同樣面臨着網絡節點或鏈路失效的問題.然而,SDN控制器可以通過全網信息快速恢復失效節點,具有較強的容錯能力.網絡節點恢復收斂過程如圖7所示:
1. 當某臺交換機失效時,其他交換機察覺出變化;
2. 交換機將變化情況通知控制器;
3. 控制器根據所掌握的信息,計算出需要恢復的規則;
4. 將更新發送給數據平面中受到影響的網絡元素;
5. 數據平面中受影響的元素分別更新流表信息.

從鏈路恢復過程可以看出:在SDN架構中,失效信息一般不是通過洪泛方式通知全網,而是直接發送給控
制層,並由控制器來做恢復決策,因而不易出現路由振盪的現象.如果是交換機和控制器之間的鏈接失效,導致
無法通信,則收斂過程相對困難.可以採用傳統網絡的IGP(如OSPF協議)通信,並通過洪泛方式恢復,也可以採
用故障轉移(failover)方式,同樣能夠緩解鏈路失效收斂時間問題.通過在交換機上安裝用於驗證拓撲連接性
的靜態轉發規則,可以更好地實現網絡故障的快速收斂.
控制層也提供了一種高級容錯語言FatTire.

SDN應用研究

企業與校園網

早期SDN研究主要場景。在第二代中國教育和科研計算機網中,利用4over6技術和SDN網絡虛擬化思想進行v4到v6的過渡。

數據中心與雲

數據中心需求帶寬高,設備繁多,高度集中,在此部署SDN也有嚴峻的考驗。早期的實例是基於NOX的SDN網絡。在合理運用帶寬方面的實踐有OpenFlow,DevoFlow,zUpdate等。在節能方面,利用SDN掌控全局,實時關閉不必要的設備以進行節能,能夠節省約一半的能耗。同時也能進行負載均衡,避免資源浪費。

廣域網

Google B4系統,微軟SWAN系統,都基於SDN架構,大幅提升了鏈路利用率。其中SWAN系統主要基於傳統設備,利於普及和升級。

無線網絡

OpenRoads, Odin,OpenRadio,SoftRAN等。

SDN未來方向

SDN可擴展性研究

SDN規模部署和跨域通信

傳統網絡與SDN共存問題研究

SDN在數據中心的應用研究

借鑑SDN思想融合IPv6過渡機制

SDN與其他新型網絡架構融合

SDN網絡安全


其他

sdn架構
ovs模塊劃分
ovs源碼分析系列
ODL用戶郵件(感覺有用,但是不知道怎麼用)
ODL 負載均衡演示(已過期)
ODL安全措施,沒啥用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章