1 SDN簡介
1.1 前言
SDN起源於2006年斯坦福大學的Clean Slate研究課題。2009年,Mckeown教授正式提出了SDN概念。
軟件定義網絡SDN(Software Defined Network)是由美國斯坦福大學CLean Slate研究組提出的一種新型網絡創新架構,可通過軟件編程的形式定義和控制網絡,其控制平面和轉發平面分離及開放性可編程的特點,被認爲是網絡領域的一場革命,爲新型互聯網體系結構研究提供了新的實驗途徑,也極大地推動了下一代互聯網的發展。
發展到今天也是門派衆多,百花齊放。以重量級選手ODL、ONOS爲代表的站在數據中心的高度對物理網絡和虛擬網絡進行雲網一體化管理的,也有以DragonFlow、OVN爲代表的蠅量級選手專注於數據中心虛擬網絡管理的。
1.2 傳統網絡概念和結構體系
1.2.1 傳統網絡數據控制與轉發
傳統網絡是分佈式控制的架構:
- 這裏的分佈式控制指在傳統IP網絡中,用於協議計算的控制平面和報文轉發的數據平面位於同一臺設備中。
- 路由計算和拓撲變化後,每臺設備都要重新進行路由計算過程,並稱爲分佈式控制過程。
- 在傳統IP網絡中,每臺設備都是獨立收集網絡信息,獨立計算,並且都只關心自己的選路。
- 這種模型的弊端就是所有設備在計算路徑時缺乏統一性。
1.2.2 傳統網絡架構
傳統網絡也可以分爲管理平面、控制平面和數據平面:
- 管理平面,主要包括設備管理系統和業務管理系統,
- 設備管理系統負責網絡拓撲、設備接口、設備特性的管理,同時可以給設備下發配置腳本,例如SNMP協議。
- 業務管理系統用於對業務進行管理,比如業務性能監控、業務告警管理等。
- 控制平面負責網絡控制,主要功能爲協議處理與計算。比如路由協議用於路由信息的計算、路由表的生成。例如常見路由協議IGP、BGP等。
- 數據平面是指設備根據控制平面生成的指令完成用戶業務的轉發和處理。例如路由器根據路由協議生成的路由表對接收的數據包從相應的出接口轉發出去。
1.2.3 傳統網絡侷限性
- 流量路徑的靈活調整能力不足。
- 流量路徑的調整需要通過在網元上配置流量策略來實現,但對於大型網絡的流量進行調整,不僅繁瑣而且還很容易出現故障;
- 當然也可以通過部署TE隧道來實現流量調整,但由於TE隧道的複雜性,對於維護人員的技能要求很高。
- 網絡協議實現複雜,運維難度較大。
- 傳統網絡協議較複雜,有IGP、BGP、MPLS、組播協議等,而且還在不斷增加。
- 設備廠家除標準協議外都有一些私有協議擴展,不僅設備操作命令繁多,而且不同廠家設備操作界面差異較大,運維複雜。
- 網絡新業務升級速度較慢。
- 傳統網絡中由於設備的控制面是封閉式的,且不同廠家設備實現機制也可能有所不同,所以一種新功能的部署可能會造成周期較長;
- 且如果需要對設備軟件進行升級,還需要在每臺設備上進行操作,大大降低了工作效率。
- 傳統網絡通常部署網管系統作爲管理平面,而控制平面和數據平面分佈在每個設備上運行。
1.2 SDN特點
SDN是對傳統網絡架構的一次重構,由原來分佈式控制的網絡架構重構爲集中控制的網絡架構。SDN網絡體系架構的三層模型:
- 控制平面與數據平面的分離:
- 此處的分離是指控制平面與數據平面的解耦合。
- 轉發平面由受控轉發的設備組成,轉發方式以及業務邏輯由運行在分離出去的控制面上的控制應用所控制。控制平面和數據平面之間不再相互依賴, 兩者可以獨立完成體系結構的演進, 雙方只需要遵循統一的開放接口進行通信即可。
- 控制平面與數據平面的分離是 SDN 架構區別於傳統網絡體系結構的重要標誌,是網絡獲得更多可編程能力的架構基礎。
- 網絡開放可編程: SDN 建立了新的網絡抽象模型,爲用戶提供了一套完整的通用 API,使用戶可以在控制器上編程實現對網絡的配置、 控制和管理, 從而加快網絡業務部署的進程。
- 邏輯上的集中控制:
- 主要是指對分佈式網絡狀態的統一集中管理。
- 在 SDN 架構中,控制器會擔負起收集和管理所有網絡狀態信息的重任。
- 邏輯集中控制爲軟件編程定義網絡功能提供了架構基礎,也爲網絡自動化管理提供了可能。
- 邏輯上集中的控制平面可以控制多個轉發面設備,也就是控制整個物理網絡,因而可以獲得全局的網絡狀態視圖,並根據該全局網絡狀態視圖實現對網絡的優化控制。
在這三個特徵中,控制平面和數據平面分離爲邏輯集中控制創造了條件,邏輯集中控制爲開放可編程控制提供了架構基礎,而網絡開放可編程纔是 SDN 的核心特徵。
1.3 SDN優勢
- 硬件只需關注轉發和存儲能力,與業務特性解耦,可以採用相對廉價的商用的架構來實現。
- 網絡設備的種類及功能由軟件配置而定,對網絡的操作控制和運行由服務器作爲網絡操作系統(Network OS)來完成。
- 對業務響應相對更快,可以定製各種網絡參數,如路由、安全、策略、QoS等,並實時配置到網絡中,開通具體業務的時間將縮短。
2 SDN架構
SDN是Emulex網絡一種新型網絡創新架構,是網絡虛擬化的一種實現方式,其核心技術OpenFlow通過將網絡設備控制面與數據面分離開來,從而實現了網絡流量的靈活控制,使網絡作爲管道變得更加智能。
傳統網絡世界是水平標準和開放的,每個網元可以和周邊網元進行互聯。而在計算機的世界裏,不僅水平是標準和開放的,同時垂直也是標準和開放的,從下到上有硬件、驅動、操作系統、編程平臺、應用軟件等等,編程者可以很容易地創造各種應用。從某個角度和計算機對比,在垂直方向上,網絡是“相對封閉”和“沒有框架”的,在垂直方向創造應用、部署業務是相對困難的。但SDN將在整個網絡(不僅僅是網元)的垂直方向變得開放、標準化、可編程,從而讓人們更容易、更有效地使用網絡資源。
因此,SDN技術能夠有效降低設備負載,協助網絡運營商更好地控制基礎設施,降低整體運營成本,成爲了最具前途的網絡技術之一 [1] 。
2.1 設計思想
利用分層的思想,SDN將數據與控制相分離。在控制層,包括具有邏輯中心化和可編程的控制器,可掌握全局網絡信息,方便運營商和科研人員管理配置網絡和部署新協議等。在數據層,包括啞的交換機(與傳統的二層交換機不同,專指用於轉發數據的設備),僅提供簡單的數據轉發功能,可以快速處理匹配的數據包,適應流量日益增長的需求。兩層之間採用開放的統一接口(如OpenFlow等)進行交互。控制器通過標準接口向交換機下發統一標準規則,交換機僅需按照這些規則執行相應的動作即可。
軟件定義網絡的思想是通過控制與轉發分離,將網絡中交換設備的控制邏輯集中到一個計算設備上,爲提升網絡管理配置能力帶來新的思路 [3] 。SDN的本質特點是控制平面和數據平面的分離以及開放可編程性。通過分離控制平面和數據平面以及開放的通信協議,SDN打破了傳統網絡設備的封閉性。此外,南北向和東西向的開放接口及可編程性,也使得網絡管理變得更加簡單、動態和靈活。
2.2 SDN 網絡體系架構
SDN的整體架構由下到上(由南到北)分爲數據平面、控制平面和應用平面,主要包括 SDN 網絡應用、北向接口、 SDN 控制器、南向接口和 SDN 數據平面共五部分,具體下圖所示。
其中,數據平面由交換機等網絡通用硬件組成,各個網絡設備之間通過不同規則形成的SDN數據通路連接;控制平面包含了邏輯上爲中心的SDN控制器,它掌握着全局網絡信息,負責各種轉發規則的控制;應用平面包含着各種基於SDN的網絡應用,用戶無需關心底層細節就可以編程、部署新應用。
控制平面與數據平面之間通過SDN控制數據平面接口(control-data-plane interface,簡稱CDPI)進行通信,它具有統一的通信標準,主要負責將控制器中的轉發規則下發至轉發設備,最主要應用的是OpenFlow協議。控制平面與應用平面之間通過SDN北向接口(northbound interface,簡稱NBI)進行通信,而NBI並非統一標準,它允許用戶根據自身需求定製開發各種網絡管理應用。
SDN中的接口具有開放性,以控制器爲邏輯中心 [1] ,南向接口負責與數據平面進行通信,北向接口負責與應用平面進行通信,東西向接口負責多控制器之間的通信。最主流的南向接口CDPI採用的是OpenFlow協議。
OpenFlow最基本的特點是基於流(Flow)的概念來匹配轉發規則,每一個交換機都維護一個流表(Flow Table),依據流表中的轉發規則進行轉發,而流表的建立、維護和下發都是由控制器完成的。針對北向接口,應用程序通過北向接口編程來調用所需的各種網絡資源,實現對網絡的快速配置和部署。東西向接口使控制器具有可擴展性,爲負載均衡和性能提升提供了技術保障。
2.3 數據控制分離
數據控制分離是SDN的主要特徵之一,如下圖所示
從功能角度來說,控制平面主要是建立本地的數據集合,即路由信息庫(RIB)。控制平面是基於RIB創建轉發表(也稱轉發信息庫(FIB)),用於指導設備出入端口之間的數據流量轉發。數據平面主要是根據RIB創建的FIB進行數據的高速轉發,當然也有一些其他的服務功能。FIB爲了保證轉發行爲和路由決策一致,需要在控制和數據平面之間進行鏡像,因此FIB實際是兩個平面之間的連接紐帶。
控制平面依據功能層面可分爲二層控制平面、三層控制平面和跨二/三層控制平面等。其主要關注硬件或物理層地址,在二層網絡中轉發更加關注MAC地址的可達性,因此控制平面主要實現了MAC地址的存儲與管理。三層控制平面側重完成網絡層尋址,主要關注網絡地址,轉發主要關注網絡地址的可達性。
數據平面的首要工作是快速數據分組處理。數據查表採用硬件查表和通用處理器查表兩類技術,依性能需求而定。查找後的下一步動作是轉發、丟棄、重新標記、計數和排隊等動作,這些動作也可以組合在一起。當然其也有一些輔助功能,如訪問控制列表、QoS策略等。
3 關鍵技術
3.1 數據平面關鍵技術
在SDN中,數據轉發與規則控制相分離,交換機將轉發規則的控制權交由控制器負責,而它僅根據控制器下發的規則對數據包進行轉發。爲了避免交換機與控制器頻繁交互,雙方約定的規則是基於流而並非基於每個數據包的。SDN數據平面相關技術主要體現在交換機和轉發規則上。
SDN交換機的數據轉發方式大體分爲硬件和軟件兩種。硬件方式相比軟件方式具有更快的速度,但靈活性會有所降低。爲了使硬件能夠更加靈活地進行數據轉發操作,Bosshart等人提出了RMT模型,該模型實現了一個可重新配置的匹配表,它允許在流水線階段支持任意寬度和深度的流表。從結構上看,理想的RMT模型是由解析器、多個邏輯匹配部件以及可配置輸出隊列組成。具體的可配置性表現爲:通過修改解析器來增加域定義,修改邏輯匹配部件的匹配表來完成新域的匹配,修改邏輯匹配部件的動作集來實現新的動作,修改隊列規則來產生新的隊列。所有更新操作都通過解析器完成,無需修改硬件,只需在芯片設計時留出可配置接口即可,實現了硬件對數據的靈活處理。
另一種硬件靈活處理技術FlowAdapter採用交換機分層的方式來實現多表流水線業務。FlowAdapter交換機分爲三層,頂層是軟件數據平面,它可以通過更新來支持任何新的協議;底層是硬件數據平面,它相對固定但轉發效率較高;中層是FlowAdapter平面,它負責軟件數據平面和硬件數據平面間的通信。當控制器下發規則時,軟件數據平面將其存儲並形成M段流表,由於這些規則相對靈活,不能全部由交換機直接轉化成相應轉發動作,因此可利用FlowAdapter將規則進行轉換,即將相對靈活的M段流錶轉換成能夠被硬件所識別的N段流表。這就解決了傳統交換機與控制器之間多表流水線技術不兼容的問題。
與硬件方式不同,軟件的處理速度低於硬件,但軟件方式可以提升轉發規則處理的靈活性。利用交換機CPU或NP處理轉發規則可以避免硬件靈活性差的問題。由於NP專門用來處理網絡任務,因此在網絡處理方面,NP略強於CPU。
在傳統網絡中,轉發規則的更新可能會出現不一致現象,SDN也如此。針對這種問題的一種解決方案是將配置細節抽象至較高層次以便統一更新。一般採用兩段提交的方式來更新規則。首先,當規則需要更新時,控制器詢問每個交換機是否處理完對應舊規則的流,確認後對處理完畢的所有交換機進行規則更新;之後當所有交換機都更新完畢時才真正完成更新,否則撤銷之前所有的更新操作。然而,這種方式需要等待舊規則的流全部處理完畢後才能進行規則更新,會造成規則空間被佔用的情況。增量式一致性更新算法可以解決上述問題,該算法將規則更新分多輪進行,每一輪都採用二段提交方式更新一個子集,這樣可以節省規則空間,達到更新時間與規則空間的折中。
3.2 控制平面關鍵技術
控制器是控制平面的核心部件,也是整個SDN體系結構中的邏輯中心。隨着SDN網絡規模的擴展,單一控制器結構的SDN網絡處理能力受限,遇到了性能瓶頸,因此需要對控制器進行擴展。當前存在兩種控制器的擴展方式:一種是提高自身控制器處理能力,另一種是採用多控制器方式。
最早且廣泛使用的控制器平臺是NOX [1] ,這是一種單一集中式結構的控制器。針對控制器擴展的需求,NOX-MT提升了NOX的性能,具有多線程處理能力。NOX-MT並未改變NOX的基本結構,而是利用了傳統的並行處理技術來提升性能。另一種並行控制器是Maestro,它通過良好的並行處理架構,充分發揮了高性能服務器的多核並行處理能力,使其在大規模網絡情況下的性能明顯優於NOX。
但在多數情況下,大規模網絡僅僅依靠單控制器並行處理的方式來解決性能問題是遠遠不夠的,更多的是採用多控制器擴展的方式來優化SDN網絡。控制器一般可採用兩種方式進行擴展:一種是扁平控制方式,另一種是層次控制方式。(如圖2所示)
在扁平控制方式中,各控制器放置於不同的區域,分管不同的網絡設備,各控制器地位平等,邏輯上都掌握着全網信息,依靠東西向接口進行通信,當網絡拓撲發生變化時,所有控制器將同步更新,而交換機僅需調整與控制器間的地址映射即可,因此扁平控制方式對數據平面的影響很小。在層次控制方式中,控制器分爲局部控制器和全局控制器,局部控制器管理各自區域的網絡設備,僅掌握本區域的網絡狀態,而全局控制器管理各局部控制器,掌握着全網狀態,局部控制器間的交互也通過全局控制器來完成。
3.3 SDN網絡部署方式
- Underlay的網絡
所有的轉發行爲都由控制器通過OpenFlow協議或定製的BGP協議將轉發表下發給轉發器,轉發器僅僅執行動作,沒有單獨控制面。
- Overlay的網絡
這種網絡的轉發器一般都是傳動設備,不支持OpenFlow,或者私有定製協議不能部署時,就要用隧道技術,基礎網絡還是傳統網絡形式,通過路由協議打通各個節點,但是在服務器接入點,採用隧道技術將數據報文進行封裝或者解封裝。對傳統網絡來說見到的就是普通數據報文,轉發即可。隧道技術實際上就是報文的馬甲,迷惑網絡設備,讓設備以爲時自己人,但實際上報文的心是虛擬化的心。現一般採用Vxlan,GRE,NVGRE等隧道技術,而這些新增的協議,也需要升級現有網絡設備才能支持(不支持上述協議的網絡設備)。穿馬甲縱然能夠在不進行大改造的情況下增加新的功能,但無疑會降低網絡性能。
4 SDN的價值
4.1 網絡業務快速創新
SDN的可編程性和開放性,使得我們可以快速開發新的網絡業務和加速業務創新。如果希望在網絡上部署新業務,可以通過針對SDN軟件的修改實現網絡快速編程,業務快速上線。
SDN網絡關鍵的地方是在網絡架構中增加了一個SDN控制器,把原來的分佈式控制平面集中到一個SDN控制器上,由這個集中的控制器來實現網絡集中控制。SDN網絡架構具備3個基本特徵:轉控分離、集中控制、開放接口。
SDN通過在網絡中增加一個集中的SDN控制器,可以簡化網絡和快速進行業務創新。但是其本質的技術原理是通過SDN控制器的網絡軟件化過程來提升網絡可編程能力。通信平面仍包含管理平面、控制平面和數據平面,SDN網絡架構只是把系統的三個平面的功能進行了重新分配,傳統網絡控制平面是分佈式的,分佈在每個轉發設備上,而SDN網絡架構則是把分佈式控制平面集中到一個SDN控制器內,實現集中控制,而管理平面和數據平面並沒有太多什麼變化。
SDN網絡具備快速網絡創新能力,如果這個新業務有價值則保留,沒有價值可以快速下線。不像傳統網絡那樣,一個新業務上線需要經過需求提出、討論和定義開發商開發標準協議,然後在網絡上升級所有的網絡設備,經過數年才能完成一個新業務。SDN使得新業務的上線速度從幾年提升到幾個月或者更快。
4.2 簡化網絡
SDN的網絡架構簡化了網絡,消除了很多IETF的協議。協議的去除,意味着學習成本的下降,運行維護成本下降,業務部署快速提升。這個價值主要得益於SDN網絡架構下的網絡集中控制和轉控分離。
因爲SDN網絡架構下的網絡集中控制,所以被SDN控制器所控制的網絡內部很多協議基本就不需要了,比如RSVP協議、LDP協議、MBGP協議、PIM組播協議等等。原因是網絡內部的路徑計算和建立全部在控制器完成,控制器計算出流表,直接下發給轉發器就可以了,並不需要協議。未來大量傳統的東西向協議會消失,而南北向控制協議比如Openflow協議則會不斷的演進來滿足SDN網絡架構需求.
4.3 網絡設備白牌化
基於SDN架構,如果標準化了控制器和轉發器之間的接口,比如OpenFlow協議逐漸成熟,那麼網絡設備的白牌化將成爲可能,比如專門的OpenFlow轉發芯片供應商,控制器廠商等,這也正是所謂的系統從垂直集成開發走向水平集成。
垂直集成是一個廠家供應從軟件到硬件到服務。水平集成則是把系統水平分工,每個廠家都完成產品的一個部件,有的集成商把他們集成起來銷售。水平分工有利於系統各個部分的獨立演進和更新,快速進化,促進競爭,促進各個部件的採購價格的下降。
4.4 業務自動化
SDN網絡架構下,由於整個網絡歸屬控制器控制,那麼網絡業務網自動化就是理所當然的,不需要另外的系統進行配置分解。在SDN網絡架構下,SDN控制器可以自己完成網絡業務部署,提供各種網絡服務,比如L2VPN、L3VPN等,屏蔽網絡內部細節,提供網絡業務自動化能力。
4.5 網絡路徑流量優化
通常傳統網絡的路徑選擇依據是通過路由協議計算出的“最優”路徑,但結果可能會導致“最優”路徑上流量擁塞,其他非“最優”路徑空閒。當採用SDN網絡架構時,SDN控制器可以根據網絡流量狀態智能調整網絡流量路徑,提升網絡利用率。
參考鏈接
OVS那些事兒之基礎功能篇_Kenelite的博客-CSDN博客_ovs和dvs
《SDN(軟件定義網絡)基礎與提升》 導論視頻課程【共4課時】_數據安全課程-51CTO學堂
SDN介紹(什麼是SDN)_AtlanSI的博客-CSDN博客_sdn
(一)SDN基本架構_竹杖芒鞋輕勝馬,一蓑煙雨任平生的博客-CSDN博客_sdn架構
OpenStack中SDN泛談4 (SDN發展與架構) - 簡書
理解OpenStack與SDN控制器的集成_筋斗雲計算的博客-CSDN博客_openstack sdn
OpenStack與SDN控制器的集成 | SDNLAB | 專注網絡創新技術
《重識雲原生系列》專題索引:
- 第一章——不謀全局不足以謀一域
- 第二章計算第1節——計算虛擬化技術總述
- 第二章計算第2節——主流虛擬化技術之VMare ESXi
- 第二章計算第3節——主流虛擬化技術之Xen
- 第二章計算第4節——主流虛擬化技術之KVM
- 第二章計算第5節——商用雲主機方案
- 第二章計算第6節——裸金屬方案
- 第三章雲存儲第1節——分佈式雲存儲總述
- 第三章雲存儲第2節——SPDK方案綜述
- 第三章雲存儲第3節——Ceph統一存儲方案
- 第三章雲存儲第4節——OpenStack Swift 對象存儲方案
- 第三章雲存儲第5節——商用分佈式雲存儲方案
- 第四章雲網絡第一節——雲網絡技術發展簡述
- 第四章雲網絡4.2節——相關基礎知識準備
- 第四章雲網絡4.3節——重要網絡協議
- 第四章雲網絡4.3.1節——路由技術簡述
- 第四章雲網絡4.3.2節——VLAN技術
- 第四章雲網絡4.3.3節——RIP協議
- 第四章雲網絡4.3.4節——OSPF協議
- 第四章雲網絡4.3.5節——EIGRP協議
- 第四章雲網絡4.3.6節——IS-IS協議
- 第四章雲網絡4.3.7節——BGP協議
- 第四章雲網絡4.3.7.2節——BGP協議概述
- 第四章雲網絡4.3.7.3節——BGP協議實現原理
- 第四章雲網絡4.3.7.4節——高級特性
- 第四章雲網絡4.3.7.5節——實操
- 第四章雲網絡4.3.7.6節——MP-BGP協議
- 第四章雲網絡4.3.8節——策略路由
- 第四章雲網絡4.3.9節——Graceful Restart(平滑重啓)技術
- 第四章雲網絡4.3.10節——VXLAN技術
- 第四章雲網絡4.3.10.2節——VXLAN Overlay網絡方案設計
- 第四章雲網絡4.3.10.3節——VXLAN隧道機制
- 第四章雲網絡4.3.10.4節——VXLAN報文轉發過程
- 第四章雲網絡4.3.10.5節——VXlan組網架構
- 第四章雲網絡4.3.10.6節——VXLAN應用部署方案
- 第四章雲網絡4.4節——Spine-Leaf網絡架構
- 第四章雲網絡4.5節——大二層網絡
- 第四章雲網絡4.6節——Underlay 和 Overlay概念
- 第四章雲網絡4.7.1節——網絡虛擬化與卸載加速技術的演進簡述
- 第四章雲網絡4.7.2節——virtio網絡半虛擬化簡介
- 第四章雲網絡4.7.3節——Vhost-net方案
- 第四章雲網絡4.7.4節vhost-user方案——virtio的DPDK卸載方案
- 第四章雲網絡4.7.5節vDPA方案——virtio的半硬件虛擬化實現
- 第四章雲網絡4.7.6節——virtio-blk存儲虛擬化方案
- 第四章雲網絡4.7.8節——SR-IOV方案
- 第四章雲網絡4.7.9節——NFV
- 第四章雲網絡4.8.1節——SDN總述
- 第四章雲網絡4.8.2.1節——OpenFlow概述
- 第四章雲網絡4.8.2.2節——OpenFlow協議詳解
- 第四章雲網絡4.8.2.3節——OpenFlow運行機制
- 第四章雲網絡4.8.3.1節——Open vSwitch簡介
- 第四章雲網絡4.8.3.2節——Open vSwitch工作原理詳解
- 第四章雲網絡4.8.4節——OpenStack與SDN的集成
- 第四章雲網絡4.8.5節——OpenDayLight
- 第四章雲網絡4.8.6節——Dragonflow