王雪偉 華為技術有限公司工程師
SDN北向接口技術發展
王雪偉 華為技術有限公司工程師
SDN的核心是要實現網絡的可編程控制,推動網絡業務的創新,SDN北向接口是這一趨勢的最關鍵推動力,北向接口的協議制定成為當前SDN領域競爭的焦點,其標準化也處于剛剛起步階段。當前SDN北向接口的發展主要有兩個脈絡,一方面是以ONF為代表的標準組織對北向接口進行標準化;另一方面是以OpenStack、OpenDaylight為代表的開源組織企圖以事實標準的形式搶占先機。本文將對SDN北向接口的標準化進程和主要開源社區進展進行綜述。
SDN 北向接口 ONF IETF OpenStack OpenDaylight
SDN是一種新型網絡創新架構,其核心理念是將網絡設備控制面與轉發面解耦,實現了網絡流量的靈活控制,使網絡作為管道變得更加智能。在SDN架構中,最核心的組件是中間的控制面,負責維護轉發面的資源、維護網絡狀態、下發轉發信息等,其下的數據面負責數據轉發、網絡狀態的收集等,其上的應用層包括不同的網絡業務和應用。因此,以控制面為中心,其上與應用層的接口被稱為SDN北向接口(Northbound Interface,NBI),其下對轉發面的接口成為南向接口(Southbound Interface,SBI),具體參見圖1。

圖1 SDN南、北向接口
SDN的核心是要實現網絡的可編程控制,推動網絡業務的創新,而北向接口恰恰是這一趨勢的最關鍵推動力,通過北向接口,網絡業務開發者能以軟件編程的形式調用各種網絡資源,同時上層的網絡資源管理系統可以通過北向接口全局把控整個網絡的資源狀態,并對資源進行統一調度。因為北向接口是直接為業務應用服務的,因此其設計必須能夠描述業務意圖,具有良好的可操作性,而網絡業務的復雜多樣性又要求SDN北向接口是靈活、可擴展的,以滿足復雜多變的業務創新需求。
與SDN南向接口已經有OpenFlow、Netconf等國際標準不同的是,SDN北向接口的標準化還處于剛剛起步階段,目前SDN市場上各種各樣的控制器Open-Daylight、Floodlight、Onos等都有自己的一套北向接口,而這些北向接口的開放層次又參差不齊,或者從用戶角度出發,或者從運營角度出發,或者從產品能力角度出發提出了很多方案,無法形成統一標準的北向接口,給上層應用帶來了很大的困惑,學習成本也很高。目前,北向接口的協議制定成為當前SDN領域競爭的焦點。
2.1 開源社區
(1)OpenStack
OpenStack是目前最活躍的一個開源云計算管理平臺項目,作為SDN控制器的一個重要應用,其由多個組件組成,與網絡相關的組件有Neutron、GBP、Congress組件。
●Neutron
OpenStack中的網絡組件,起源于Cisco的NaaS項目,之前一直叫做Quantum,后因商標問題改名為Neutron。Neutron為OpenStack提供了“網絡即服務”的功能,租戶在云中能夠自定義地構建起一套虛擬網絡環境,互聯其虛擬機,并提供網絡服務,真正構建起一個屬于租戶的虛擬DC。
Neutron將網絡抽象為網絡Network、子網Subnet、端口Port、路由器Router,之后啟動的虛擬機就可以直接掛在這個網絡上。網絡如果要跟物理環境下的概念映射的話,就相當于一個大的交換機,可以擁有無限多個動態可創建和銷毀的虛擬端口。子網是由一組IP地址組成的地址池,OpenStack可從中向虛擬機分配IP地址。端口是虛擬機和路由器或交換機掛接網絡的著附點,一個虛擬機實例可通過此端口將它的網絡適配器附加到一個虛擬網絡。路由器為虛擬機訪問外部網絡提供3層轉發服務和支持多路由。圖2為Neutron典型的網絡結構。
從Neutron的網絡抽象可以看出這是個典型的適用于云計算環境的北向抽象,沒有網絡拓撲的概念,以虛擬機為中心,是一種IT人對網絡的抽象。該抽象只能描述虛擬機之間的互通與隔離,不能描述大部分的網絡業務,比如SLA、QoS、ServiceChain等,雖然Neutron也在擴展,但只是CasebyCase的擴展,針對一個業務需求就實現一個擴展,沒有一個通用的模型來支撐。盡管在網絡虛擬化上做了很多努力,但是IT人員還是抱怨Neutron是最復雜、難用的模塊。
●GBP
Group Based Policy是由Cisco和IBM主導,在OpenStack平臺新增的一個關于北向接口的開源項目。2013年11月,Cisco收購了InsiemeNetworks公司,以該公司技術為核心,推出了以應用為中心的基礎設施解決方案“ACI”;同時,在其主導的OpenDayLight社區創建新的孵化項目GroupPolicy,隨后與IBM聯合提案,在Neutron項目中增加以應用為中心、面向策略、抽象的接口項目,并最終命名為“基于組的策略抽象(GBP)”,目前GBP也是OpenStack的一個孵化項目,未被工作組正式接納。

圖2 Neutron典型的網絡結構

圖3 OpenStack的GBP模型
GBP認為當前的NeutronAPI只是在連接層面描述了業務的訪問與隔離需求,不直觀,也不靈活。針對當前大量的3層網絡業務需求,GBP引入了策略模型,使用Group和PolicyRule來描述網絡業務需求,可以很方便地實現業務的自動化和安全性。圖3為Open-Stack的GBP模型。
GBP將策略作用的對象稱為Group,將具有相同策略的虛擬機組合成Group,策略是一些規則的集合,每個規則規定了兩個Group之間的流量的行為,比如重定向、業務鏈等。
從GBP的模型描述可以看出GBP是一個可以動態地描述網絡策略的模型,彌補了Neutron只能靜態地描述虛擬機之間的互通隔離的缺陷。
●Congress
CongressProgect是由VMware公司主導,在2014年初啟動的一個新項目,其目的是構建在OpenStack所有組件之上的通用的PolicyasaService,實現IT業務快速自動部署。圖4為Congress在OpenStack的位置。
Congress允許云管理員和租戶使用一種高層次的、通用的、聲明式的語言去描述業務邏輯,策略語言不包括一些確定的策略類型或內嵌的實施策略,而是簡單地定義哪些云狀態是允許的,哪些是不允許的。云狀態指的是運行在云上的所有業務的合并狀態。Congress認為每個云服務都可以以表的形式呈現,Policy語言用來決定這些表內容是否存在沖突。當Congress收到云管理者的一個Policy請求,它會與當前Policy對比,警告云管理者策略之間的沖突(云的實際狀態與策略允許的狀態不一致),將來Congress將進一步的采取行動改變云狀態,幫助我們理解Policy的歷史和沖突。當前Congress使用的策略語言是Datalog語言,Datalog常用語數據域查詢語言領域,類似與SQL,但比SQL更接近于傳統編程語言。
從Congress的策略描述可以看出,Congress用一種更加抽象的方式描述OpenStack各組件之間的狀態,描述哪些狀態是允許的,哪些是不允許的。
(2)OpenDaylight
OpenDaylight是一個開源控制器平臺,采用模型驅動架構抽象出控制器各組件的南北向API以及各組件的數據結構,并使用YANG數據建模語言為服務和數據建模。
●GBP
OpenDaylight也有個GBP項目(見圖5),OpenDatlight中的GBP將策略作用的最底層抽象命名為Endpoint,可以對應物理網絡中的特定設備,可以是虛擬機接口、物理接口或其他網絡設備。將具有相同策略的Endpoint組合成為Group。Contract是Group之間的契約,契約有一些規則組成,每個規則規定了兩個Group之間的流量的行為,比如重定向。
●NIC
2014年底由HP牽頭提交了一個新的項目建議NIC(NetworkIntentComposition),目的是提供一種通用的抽象的策略語法,讓用戶很方便地描述自己的意圖,是比GBP更高層次、更接近用戶的模型。目前,還沒有實質性內容。
2.2 標準組織

圖4 Congress在OpenStack的位置

圖5 OpenDatlight的GBP模型
ONF和IETF是對SDN進行標準化的最重要的兩大標準化組織。下面將分別介紹這兩個組織在北向接口的進展情況。
(1)ONF
SDN/OpenFlow標準的引領者組織開放網絡基金會(OpenNetworkFoundation,ONF)于2013年10月成立SDN北向接口工作小組(Northbound Interface WorkingGroup,NBI-WG),目的在透過接口標準化與功能驗證以加速SDN廣泛商用。
NBI組Charter指定了工作組的工作目標和范圍:定義一個核心/基礎NBI覆蓋通用的SDN控制器能力和功能,并開發NBI信息模型,以一種編程語言中立的方式提供建議性的代碼,作為數據模型,具體數據模型的實現不在工作組的范圍內。
NBI組又分為3個子組,即NBIArchitecture子組負責撰寫NBI的架構文稿;Network、Cloud and DC UseCaseandInterfaces子組負責Cloud/DC和網絡場景相關的NBI和接口;EndUserApplicationUseCasesand Interfaces子組負責其他場景的NBI和接口。具體參見圖6。
(2)IETF
IETF早期有兩個與SDN相關的研究項目/工作組,分別是轉發與控制分離組(ForCES,Forwardingand ControlElementSeparation)和應用層流量優化工作組(ALTO,Application-layerTrafficOptimization)。其中,ForCES已經發布了9個RFC,主要涉及需求、框架、協議、轉發單元模型、MIB等;ALTO主要通過為應用層提供更多的網絡信息,完成應用層的流量優化、用于判斷的參數(包括最大帶寬、最少跨域、最低成本等)。ALTO的研究思想體現了SDN向上層應用開放接口的理念,這種開放部分網絡信息以優化應用的做法,從廣義上講也是SDN的一種實現類型。
在SDN出來之后,IETF的工作主要在南向,以應對OpenFlow,典型的就是I2RS。I2RS的核心思想是在目前傳統網絡設備的路由及轉發系統基礎上開放新的接口來與外部控制層通信;是在路由系統(控制面)向上的接口模型,外部控制層通過設備反饋的事件、拓撲變化、流量統計等信息來動態地下發路由狀態、策略等到各個設備上去。可以看出,I2RS延用了傳統網絡設備中正在使用的路由、轉發等結構與功能,并在此基礎上進行功能的擴展與豐富。如圖7所示,I2RS使用了模型驅動架構(MDA)和YANG做數據模型描述。

圖6 NBI基礎模型
隨著SDN的進化,逐漸開始有北向的工作,在2013年成立的SFC(ServiceFunctionChain)工作組,意圖確立各網絡功能服務整合的體系架構以及對外的接口,SFC的對外控制接口是SDN北向接口的重要組成部分,有基于YANG描述的模型。另外,在IRTF里有一篇針對ICN的Intent建模和接口抽象。

圖7 I2RS模型示例
1 https∶//wiki.openstack.org/wiki/Neutron
2 https∶//wiki.openstack.org/wiki/GroupBasedPolicy
3 https∶//wiki.openstack.org/wiki/Congress
4 https∶//wiki.opendaylight.org/view/Network_Intent_ Composition∶Main
5 https∶//wiki.opendaylight.org/view/Group_Policy∶Architecture/Policy_Model
6 https∶//wiki.opendaylight.org/view/Project_Proposals∶Group_Based_Policy_Plugin
2015-04-10)