SDN控制器介紹
1、SDN以及控制器簡介
SDN(Softeware Defined Network)是由美國斯坦福大學(xué)Clean-Slate課題研究組提出的一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),是網(wǎng)絡(luò)虛擬化的一種實現(xiàn)方式。其核心技術(shù)是通過將網(wǎng)絡(luò)設(shè)備的控制面與數(shù)據(jù)面分離,實現(xiàn)網(wǎng)絡(luò)流量的靈活控制,使網(wǎng)絡(luò)更智能。SDN嘗試擺脫網(wǎng)絡(luò)對硬件設(shè)備的依賴,通過直接的編程方式,實現(xiàn)網(wǎng)絡(luò)的管控、配置、升級等功能。
Fig1.典型SDN架構(gòu)圖
SDN控制器是SDN控制面的代表,是SDN的大腦。作為SDN架構(gòu)中的核心部件,SDN控制器以集中式管控方式管理整個網(wǎng)絡(luò)的策略和流量。SDN控制器能夠明顯提高網(wǎng)絡(luò)資源的利用率,縮短業(yè)務(wù)上線周期,較大提升運維效率。與此同時,SDN控制器可以提供統(tǒng)一的安全策略,為網(wǎng)絡(luò)提供自上而下的安全防護。
2、SDN控制器發(fā)展歷史
SDN控制器從早期的NOX控制器一直到如今的企業(yè)級控制器,經(jīng)過了多個發(fā)展歷程。功能逐漸完善、強大。按照其發(fā)展路線可以分為:以O(shè)DL、ONOS為代表的開源路線以及以O(shè)rion為代表的商業(yè)控制器路線。
? 第一代控制器:NOX是第一款OpenFlow控制器,采用OpenFlow協(xié)議進行管控,由Nicira Networks公司研發(fā),并于2008年開源發(fā)布。作為最早的控制器,NOX為后面的控制器提供了很好的范例。不過由于其使用C++語言編寫,SDN應(yīng)用的開發(fā)成本較高,逐漸在控制器競爭中失去優(yōu)勢。其后續(xù)版本改為Python開發(fā),名為POX,但POX在架構(gòu)和性能上存在一定的缺陷,逐漸被新興控制器取代。
? 通用SDN控制平臺:隨著設(shè)備廠商加入SDN控制器市場競爭,對SDN控制器提出更高的要求,由多家設(shè)備廠商聯(lián)合而非運營商主導(dǎo)的開源SDN控制器OpenDaylight應(yīng)運而生。ODL支持多種南向協(xié)議,不僅限于OpenFlow、Netconf、OVSDB等。ODL的誕生意味著SDN進入了一個嶄新的時期??刂破鲗崿F(xiàn)從僅支持單一協(xié)議向支持多種南向協(xié)議演進。在這一時期,控制器的部署形式也由單體應(yīng)用轉(zhuǎn)化為分布式平臺部署。
經(jīng)過幾年的發(fā)展,SDN控制器之間相互競爭越來越激烈。ODL社區(qū)憑借設(shè)備廠商的大力支持,處于開源控制器的領(lǐng)導(dǎo)者地位。而定位運營商市場,同樣采用OSGI架構(gòu)的ONOS以更優(yōu)秀的性能在市場上取得了相當(dāng)不錯的占有份額。同期,多種閉源框架也在相互競爭,2013年,Google推出的ONIX控制器更是將寬帶利用率提升到接近100%的地步。
? 云原生SDN控制器:隨著越來越多的業(yè)務(wù)上云,尤其是大規(guī)模數(shù)據(jù)中心的發(fā)展,對控制器的要求也越來越高。SDN控制器也越來越多的與云管平臺進行整合運行。SDN控制器結(jié)合AI技術(shù)、意圖網(wǎng)絡(luò)等內(nèi)容,向著更智能、更方便的方向發(fā)展。ODL、ONOS等開源平臺逐漸聚焦智能化運維,Google的新一代控制器Orion更是全面應(yīng)用微服務(wù)架構(gòu)以及調(diào)和理念,采用大規(guī)模分布式部署方案,實現(xiàn)大規(guī)模生產(chǎn)網(wǎng)絡(luò)的控制與管理。
3、主流控制器介紹
當(dāng)前開源社區(qū)活躍的控制器主要包括:OpenDayLight、ONOS、Ryu、POX等。閉源控制器以O(shè)rion為代表,另外還有HP的VAN、Cisco的DNA Center等。
每種控制器都具有各自的特點以及長處,下面就以幾種主流的控制器為大家介紹控制器的相關(guān)技術(shù)和功能:
3.1 ODL控制器
OpenDayLight(ODL)控制器是由Linux基金會管理和維護的開源SDN控制器,于2013年推出。采用社區(qū)驅(qū)動的開發(fā)模式,主要貢獻者為各大設(shè)備廠商,如華為、中興等。旨在提供一個通用、可編程的SDN控制器。能夠支持多種硬件和軟件平臺,實現(xiàn)靈活、可擴展的網(wǎng)絡(luò)管理和控制。
3.1.1 架構(gòu)方案
ODL采用OSGi框架進行開發(fā),通過MD-SAL模型架構(gòu)對南向協(xié)議進行抽象化建模以及管理,實現(xiàn)與設(shè)備以及協(xié)議的解耦,能夠支持多種南向傳輸協(xié)議。控制器中核心插件提供了數(shù)據(jù)存儲、配置管理、網(wǎng)絡(luò)流量管理、服務(wù)質(zhì)量管理、網(wǎng)絡(luò)監(jiān)控和調(diào)試等功能,并通過RESTful API等北向協(xié)議提供對接三方應(yīng)用,為第三方業(yè)務(wù)提供設(shè)備的數(shù)據(jù)支持。
如圖為一種典型的ODL架構(gòu)設(shè)計方案:
圖片
圖片來源 OpenDayLight官網(wǎng)
3.1.2 核心概念
- 模型驅(qū)動:ODL的模型驅(qū)動指將網(wǎng)絡(luò)設(shè)備的配置和狀態(tài)信息表示為YANG數(shù)據(jù)模型,統(tǒng)一描述網(wǎng)絡(luò)設(shè)備的屬性、配置和狀態(tài)信息,并基于YANG模型定義一組標準的RESTful API,用于控制器和設(shè)備之間的通信。ODL通過YANG模型實現(xiàn)了多協(xié)議支持、插件化和可編程化等功能。
- OSGi:ODL基于OSGi框架進行功能開發(fā),天生支持模塊化的設(shè)計,使用戶能夠輕松的實現(xiàn)功能的添加和刪除。同時Karaf框架提供了良好的運行底座,能夠輕松實現(xiàn)業(yè)務(wù)的高可用,減少了開發(fā)難度。
- Yang:一種輕量化的數(shù)據(jù)建模語言。YANG模型定義了數(shù)據(jù)的層次化結(jié)構(gòu)。ODL采用YANG來定義網(wǎng)絡(luò)配置,能夠輕松區(qū)分配置和狀態(tài),具有很強的擴展性。隨著標準化的推行,YANG正逐漸成為業(yè)界主流的數(shù)據(jù)描述規(guī)范,標準組織、廠商、運營商、OTT紛紛定義各自的YANG模型。
3.1.3 典型模塊
- AAA:AAA為Authentication, Authorization and Accounting ,為控制器提供了鑒權(quán)、認證和計費的功能。該模塊用于控制對資源的訪問,強制執(zhí)行使用資源的策略,并審核統(tǒng)計資源的使用狀況,為控制器提供了有效的網(wǎng)絡(luò)管理和基本的安全架構(gòu)。
- BGPCEP:該模塊為典型應(yīng)用模塊,主要有BGP插件以及PCEP插件構(gòu)成。BGP插件為用戶提供BGP協(xié)議的實現(xiàn)以及基于BGP協(xié)議的業(yè)務(wù)實現(xiàn)。PCEP為路徑計算通訊協(xié)議,用于在MPLS和GMPLS標簽交換路徑的上下文中在PCC和PCE之間進行通訊。PCEP插件提供構(gòu)建基于 PCE 的控制器所需的所有基本服務(wù)單元。此外,它還為 Active Stateful PCE 提供 LSP 管理功能——這是大多數(shù)支持 PCE 的 SDN 解決方案的基石。
下圖為基于PCE的路徑計算架構(gòu):
圖片來源 OpenDayLight官網(wǎng)
- Controller:控制器模塊是基于 Java 的模型驅(qū)動控制器,使用 YANG 作為系統(tǒng)和應(yīng)用程序各個方面的建模語言,為其他 OpenDaylight 應(yīng)用程序的提供基礎(chǔ)平臺。其依賴于MD-SAL、Netconf、RestConf等模塊。
- MD-SAL:模型驅(qū)動服務(wù)適配層 (MD-SAL) 是受消息總線啟發(fā)的可擴展中間件組件,它根據(jù)應(yīng)用程序開發(fā)人員定義的數(shù)據(jù)和接口模型(即用戶定義的模型)提供消息傳遞和數(shù)據(jù)存儲功能。該模塊定義了公共層、概念、數(shù)據(jù)模型構(gòu)建塊和消息傳遞模式,并為應(yīng)用程序和應(yīng)用程序間通信提供基礎(chǔ)設(shè)施/框架。
- Netconf模塊:NETCONF本身是一種基于XML的傳輸協(xié)議,用于配置和監(jiān)控網(wǎng)絡(luò)中的設(shè)備。ODL中的Netconf模塊支持NETCONF協(xié)議作為北向服務(wù)器和南向插件,同時提供了一組用于模擬NETCONF設(shè)備和客戶端測試的工具。
3.2 ONOS控制器
ONOS是首款開源的SDN網(wǎng)絡(luò)操作系統(tǒng),主要面向服務(wù)提供商和企業(yè)骨干網(wǎng)。ONOS社區(qū)聚集了知名的服務(wù)提供商(如AT&T、NTT通信)、高標準的網(wǎng)絡(luò)供應(yīng)商(如Ciena、Ericsson、Fujitsu、Huawei、Intel、NEC)、網(wǎng)絡(luò)運營商(如Internet2、CNIT、CREATE-NET),以及其他合作伙伴(如SRI、Infoblox),并且獲得ONF的鼎力支持。
3.2.1 架構(gòu)方案
ODL是一個典型的分布式架構(gòu)系統(tǒng),自上而下可分為:APP層、北向接口API、分布式核心層、南向接口層。其中,分布式核心平臺保證了控制器能夠以高可靠、易擴展以及高穩(wěn)定性進行運行。北向接口抽象為圖像化界面以及更友好的管控配置服務(wù)提供了重要支撐。可插拔式的南向接口抽象層,使ONOS控制器能夠支持OpenFlow設(shè)備和傳統(tǒng)設(shè)備。南向接口的抽象屏蔽了底層設(shè)備和協(xié)議的差異性,能夠同時支持多種設(shè)備的管控。其架構(gòu)圖如下:
圖片來源 ONOS官網(wǎng)
3.2.2 核心概念
SDN操作系統(tǒng):一個操作系統(tǒng)需要具備以下基本特征:
(1)用戶資源管理;
(2)用戶隔離;
(3)服務(wù)和資源的抽象化管理;
(4)用戶安全機制;
(5)高效的服務(wù)使用。
ONOS具備一個操作系統(tǒng)的基本功能,因而不僅僅是一個SDN控制器,而是一個SDN操作系統(tǒng)。
- 軟件模塊化:ONOS可以像軟件操作系統(tǒng)一樣,為開發(fā)者以及服務(wù)提供商更塊、更便捷的開發(fā)、調(diào)試、維護和升級服務(wù)。ONOS本身是由一系列功能模塊組成,每個功能模塊由一個或者多個組件組成,對外提供一種特定服務(wù),這種基于SOA的框架同時支持對組件的全生命周期管理,支持動態(tài)加載、卸載組件。
- 統(tǒng)一的網(wǎng)絡(luò)模型:ONOS 抽象出了統(tǒng)一的網(wǎng)絡(luò)資源和網(wǎng)元模型,奠定了第三方SDN應(yīng)用程序互通的基礎(chǔ),使得運營商可以做靈活的業(yè)務(wù)協(xié)同和低成本業(yè)務(wù)創(chuàng)新。
3.2.3 典型組件
- REST API:提供開放的北向抽象接口,方便運營商以及用戶基于ONOS開發(fā)應(yīng)用以及插件。
- 功能組件:ONOS提供統(tǒng)一的網(wǎng)絡(luò)資源和網(wǎng)元模型,更有利于運營商進行業(yè)務(wù)開發(fā)。統(tǒng)一的組件和模型結(jié)構(gòu)如下圖:
[引用feiskyer中ONOS組件和服務(wù)章節(jié)]
圖片來源 gitbook-SDN指南
- Cluster:ONOS集群間通信支持Gossip以及Raft兩種算法。Cluster提供了較好的分區(qū)容錯性以及彈性擴展機制。Cluster能夠保障節(jié)點失效對業(yè)務(wù)無影響,當(dāng)ONOS節(jié)點宕機時,其他節(jié)點會接管該節(jié)點對網(wǎng)元的控制權(quán),當(dāng)節(jié)點恢復(fù)后,通過loadbalance命令恢復(fù)節(jié)點對網(wǎng)元的控制并使整體的控制達到負載均衡。ONOS屏蔽了負責(zé)的分布式機制,只對外暴露業(yè)務(wù)接口,使應(yīng)用開發(fā)更加簡單。集群機制如下:
[引用feiskyer中ONOS集群原理章節(jié)]
圖片來源 gitbook-SDN指南
3.3 Orion分布式控制器
Orion控制器是Google獨立開發(fā)的第二代控制器。Google于2021年NSDI會議上發(fā)表Orion相關(guān)論文,論文詳細闡述了Orion的設(shè)計原則、整體架構(gòu)以及在網(wǎng)絡(luò)中的應(yīng)用情況。論文發(fā)布時,Orion已經(jīng)在現(xiàn)網(wǎng)中穩(wěn)定運行了四年。相比Google第一代控制器Onix,Orion具有以下特征:
(1)完全獨立開發(fā)。
(2)微服務(wù)架構(gòu),分布式程序,具有更高的穩(wěn)定性。
(3)基于敏捷的開發(fā),更快的迭代速度。
3.3.1 架構(gòu)方案
Orion是一個典型的微服務(wù)應(yīng)用。其本身的工作模式是基于協(xié)調(diào)(reconciliation)的模式。從設(shè)計的根本原理上看,Orion和Kubernetes的原理幾乎一致。
整體框架如下:
圖片來源論文:《Orion:Google`s Software-Defined Networking Control Plane》
從架構(gòu)上看,最上層是各種具體的網(wǎng)絡(luò)應(yīng)用,如負責(zé)域內(nèi)算路的Routing Engine。
中間的核心層實現(xiàn)了控制器的通用功能,包括了NIB數(shù)據(jù)庫,配置模塊,拓撲模塊以及流管理模塊。中間層的每個模塊都是微服務(wù)應(yīng)用。
下層則是OpenFlow協(xié)議棧,Orion控制的所有路由器均只有OpenFlow協(xié)議棧,沒有傳統(tǒng)協(xié)議棧,傳統(tǒng)協(xié)議都是在控制器上完成,可以說是徹底實現(xiàn)了SDN化。
3.3.2 核心概念
- 意圖驅(qū)動:Orion面向大規(guī)模生產(chǎn)網(wǎng)絡(luò),在大規(guī)模生產(chǎn)網(wǎng)絡(luò)中,宏觀的意圖遠比細瑣的過程更穩(wěn)定,更不容易出錯,因而意圖驅(qū)動(intent-based)成為了必然選擇。Orion本身就被設(shè)計成一個翻譯和細化意圖的控制器。而控制器最終會將管理人員的意圖轉(zhuǎn)化為設(shè)備可識別的Openflow原語。Intent鏈式反應(yīng)圖如下:
圖片來源論文:《Orion:Google`s Software-Defined Networking Control Plane》
- 分布式控制器:傳統(tǒng)控制器多為集中式控制器,控制器單元由一個中心多個分中心的方式進行管理,而Orion采用的是邏輯上的集中。在論文中提到:控制器為邏輯集中控制器,為了實現(xiàn)高性能,控制器需要具有基于內(nèi)存的狀態(tài)表示以及在松散協(xié)調(diào)的微服務(wù)SDN應(yīng)用程序之間使用適當(dāng)?shù)囊恢滦约墑e[ 引用《Orion: Google's Software-Defined Networking Control Plane》第一章描述]。
3.3.3 典型設(shè)計
- 微服務(wù)框架:Orion徹底擺脫了傳統(tǒng)控制器的集中式管控制約,采用和K8S類似的架構(gòu)進行設(shè)計,將網(wǎng)絡(luò)業(yè)務(wù)抽象為獨立的服務(wù),方便了業(yè)務(wù)的開發(fā)、部署以及維護。在萬物上云時代,基于微服務(wù)架構(gòu)的設(shè)計思路更貼合業(yè)務(wù)的實現(xiàn)與部署方案。
微服務(wù)框架是未來SDN控制器中重要的發(fā)展方向。中國移動智慧家庭運營中心自研的SDN控制器就是基于微服務(wù)架構(gòu)對網(wǎng)絡(luò)業(yè)務(wù)進行劃分,采用協(xié)調(diào)機制實現(xiàn)高效的業(yè)務(wù)配置與調(diào)度。 - Intent和Ground Truth的鏈式反應(yīng):如上圖意圖網(wǎng)絡(luò)所示,Intent有多種來源,通過控制器一級一級的協(xié)調(diào),最終將配置轉(zhuǎn)化為機器原語。在意圖網(wǎng)絡(luò)中,最終還是要從人的意圖出發(fā)。
正如論文中寫到的:“Intentbased networks specify management or design changes by describing the new intended end-state of the network (the“what”) rather than prescribing the sequence of modifications to bring the network to that end-state (the “how”)[ 引用論文《Orion: Google's Software-Defined Networking Control Plane》3.1中意圖網(wǎng)絡(luò)原理的描述]”。
4、總結(jié)
通過前面大概的介紹,我們了解了控制器的發(fā)展歷史和方向。這為我們自研控制器提供了很好參考和范例。
目前,中國移動智慧家庭運營中心在自研控制器領(lǐng)域尤其是面向SDWAN自研控制器領(lǐng)域已具備一定的技術(shù)積累,基于ODL的開源控制器已在公司部分業(yè)務(wù)上面進行了試商用,并取得了良好的成效。中國移動智慧家庭運營中心正在將自研控制器向微服務(wù)化的分布式控制器演進。在未來,基于微服務(wù)架構(gòu)的控制器將以更快的迭代速度,更穩(wěn)定的性能,更高的服務(wù)效率為移動網(wǎng)絡(luò)云時代發(fā)展提供支撐。