OpenStack中SDN泛談1 (Neutron&ODL&ONOS)

專欄的初衷就是介紹OpenStackSDN的種種,這個主題可以說是最對題的。類似的題目很多前輩都說過,我也在這用一個系列來發表一下自己粗淺的觀點吧。這個主題會在4月19日北京國家會議中心全球開源年會做一個簡短的報告,先在知乎上分享一下吧。

網絡的管控能力直接決定了計算集群的規模和性能,這不僅適用于傳統的數據中心,也適用于虛擬化的云數據中心。OpenStack作為私有云IaaS的事實標準,其網絡模塊也一直是各個廠商和使用者關注的重點。

OpenStack Neutron

OpenStack自己官方的網絡項目是Neutron,Neutron有著自己的一套網絡實現方案:基于Linuxnamespace,構建一個個相對獨立的虛擬網絡功能單元。通過這些網絡功能單元提供OpenStack所需要的網絡服務。前幾年有爭論說Neutron到底是不是SDN,不知道現在還有沒有這樣的爭論?在我看來,Neutron就是SDN,因為它實現了網絡資源的可編程控制,并且實現了網絡控制層和數據轉發層的分離,這個我在SDN閑聊里面曾經說過。基于OpenFlow的SDN方案只是狹義的SDN概念。

Neutron在自己的實現之外,也考慮了第三方功能的兼容,例如2層的功能被抽象到了ML2的mechanism driver,各個網絡功能被抽象到了對應的service plugin。第三方SDN只需要實現相應的mechanism driver和service plugins,就能接入到OpenStack Neutron。進而在整個OpenStack環境下使用。Neutron的架構如下圖所示:

拋開第三方SDN接入實現不說,單看Neutron的實現。Neutron大體上可以分成兩個部分,Neutron server和agents。

Neutron server

Neutron的北向(northbound)接口,DB接口。Neutron server實現了網絡數據模型的抽象,和基于這些抽象模型的業務邏輯。Neutron server有整個OpenStack的虛擬網絡信息,有關網絡的可達信息和統計數據的計算都將在Neutron server進行。Neutron server可以部署多個,以達到HA的效果,并達到水平擴展的目的。從劃分Controller nodes,Network nodes和Compute nodes的角度來說,Neutron server屬于Controller nodes。

Agents

Neutron的南向(southbound)接口。這里的agents指的是各種agents,例如DHCP agent,L3 agent,ovs-agent,metadata-agent,l2gw-agent等等。可以看出來,Neutron的具體網絡功能是由一個個agent完成。Agents可以是Network nodes的一部分,也可以是Compute nodes的一部分,具體要看是什么agent,并且網絡是集中式的還是分布式的。

RPC(Remote Procedure Call)

Neutron server與agents之間通過雙向的RPC進行數據交互。也就是上面圖中的message queue。

DB(Database)

Neutron通常與OpenStack其他項目共用一種SQL數據庫。Neutron server是Neutron中唯一與DB有交互的進程或者服務。

總結

OpenStack Neutron是OpenStack社區最活躍的項目之一,集中了大量優秀的工程師參與開發,也是各大公司重點投資的項目。在OpenStack場景下,Neutron的代碼質量和一定用例下的穩定性,是其他SDN方案不能比的。不過它并不是完美的。

單看OpenStack Neutron,它不能提供一套完善的網絡解決方案,早在Kilo版本,曾經在Neutron代碼庫中的LBaaS,VPNaaS,FWaaS的功能代碼就被分離出Neutron。從那時起,OpenStack Neutron項目自身就致力于只提供2-3層網絡服務,4-7層服務由Neutron的子項目提供。開源項目一個大問題就是開發碎片化,因為沒有統一的管理。Neutron這樣的拆分,能降低核心代碼的管理難度,但無疑也加劇了碎片化的程度。分離出去的子項目發展不均衡,很多項目活躍度大大降低。

另一方面,基于SQL和RPC的網絡計算實現,以及一些其他的實現細節,使得Neutron在大規模部署時表現不盡如人意。雖然最近有一些文章和測試為Neutron的實現正名,但是具體的轉變還是需要等待時間的驗證。

總的來說,不像Ceph之于存儲,OpenStack中不存在(包括Neutron自身的實現)一個壓倒一切的SDN實現。這就導致各個廠商更熱衷于在OpenStack中推廣自家的SDN方案,而不是在一起開發一個默認的廠商中立的SDN方案(例如Neutron的默認實現)。這進而分散了Neutron的開發力量,使得Neutron的默認實現進步變得緩慢。

從現在的趨勢來看,我認為OpenvSwitch已經是OpenStack的默認網絡底層實現,根據之前的一項調查,有48%的OpenStack用戶使用OpenvSwitch。OpenvSwitch社區自身也熱衷于為OpenStack提供網絡底層。上層網絡方案上,各個廠商希望自己能夠引領OpenStack的SDN實現,像Cisco,Midokura,Juniper,Huawei分別推出自己的SDN,甚至OVS也在推自己的SDN方案。這些SDN的共同特點是各自實現了4-7層的網絡服務支持,有些也提供了更優化的2-3層實現。

接下來看看這些SDN吧。

OpenDayLight

ODL項目成立于2013年4月,是由Linux基金會管理管理的開源SDN項目。項目的目的是提供一個開放的,全功能的,廠商中立的SDN解決方案。目前ODL有超過40個公司作為成員,例如Cisco,IBM,Huawei等。樂觀人士認為:ODL對networking的意義就像Linux對computing的意義一樣。

ODL controller是一個純軟件的實現,基于Java+OSGI,運行在自己的JVM中,理論上,任何支持Java的設備都能運行ODL。采用OSGI作為框架,基于這點可以看出ODL內部是一個個相對獨立的模塊。ODL項目最開始的定位是SDN controller,在它的第三個版本(Lithium版本),ODL將自己的定位變成了SDN Platform。也就是說ODL的定位開始轉變成以SDN為核心構建生態系統。

ODL的架構大致如下,可以分為三層。

Application Layer:邏輯業務層,不關心底部網絡設備,網絡協議的實現。通過RESTful接口和OSGI接入到Control Layer。

Coordination,Control Layer:對應SDN控制器,實現網絡功能,并將抽象網絡模型轉換成實際的網絡底層數據,并下發到網絡設備。Control Layer連接了Application Layer和Network Device Layer。使得Application Layer不必關心Network Device的變化性,而只需要關心業務邏輯,另一方面,同一個application通過Control Layer可以適配多種Network Device。

Network Device Layer:網絡設備層,各種各樣的網絡設備和網絡協議,以及接入到ODL的plugin。

OpenStack Neutron通過networking-odl項目接入到OpenDayLight,目前networking-odl的架構如下圖所示:

前面說過Neutron server可以部署多個,以達到HA和水平擴展的目的。ODL接入OpenStack Neutron也考慮了多個Neutron server的情況。Networking-odl包括了同步DB和通過RESTful API訪問OpenDayLight。在OpenDayLight也加入了適配Neutron的module。OpenDayLight的詳細架構如下圖所示:

簡單看一下ODL的架構組成部分:

ODL southbound protocol

ODL用來支持多種網絡協議和網絡設備的多個plugin的集合,通過OSGI框架與Service Abstraction Layer連接。為了支持OpenStack Neutron的接入,在ODL southbound protocol中加入了OVSDB的支持。ODL南向協議不僅支持OpenFlow,還支持很多其他協議,因此ODL可以認為是廣義上的SDN。

Service Abstraction Layer

ODL中,SAL是最重要的組成部分。SAL接收從Controller Platform來的service request,通過自身的plugin manager找到最合適的plugin,也就是southbound protocol,進而通過這個plugin操作特定的網絡設備。另一方面,SAL接收network devices的消息,通過plugin manager抽象消息,再轉發給northbound模塊。SAL是做northbound和southbound的實際轉換工作。

Controller Platform

包含了Basic Network Service Function和Platform Service Function。前者是基本網絡功能,后者是廠商平臺對應的模塊。為了適配OpenStack Neutron,在Platform Service Function中有一個OVSDB Neutron模塊。

Northbound APIs

為Cloud Orchestrator和application提供接口。接口包括了RESTful和OSGI。

總結

論知名度,ODL可以說是最負盛名的SDN,Linux基金會管理,各大廠商支持,使得它從誕生開始就是正規軍。OpenDayLight和OpenStack的結合也是Neutron 前PTL Kyle Mestery極力推動下的結果。從其定位可以看出,它的功能也比較完善,現在也有基于OpenDayLight的解決方案(Cisco等廠商)在售或者部署在數據中心。

另一方面,ODL項目較為龐大,代碼行數多,子項目多,ODL在Boron版本的子項目依賴如下圖所示,可以看出還是比較復雜的。

并且,Cisco是背后的主要推動者,因此項目一定程度是由Cisco控制。作為開源項目,ODL文檔也飽受詬病。綜上所述,ODL的門檻要高一些,如果要落地,還是需要一個專業的團隊支撐。

ONOS

ONOS(Open Network Operating System),是2014年由ON.Lab(Open Networking Lab)發起的一個開源項目(注,ON.Lab 去年底宣布與ONF合并,所以ONOS以后可能會看到是ONF支持的項目)。ONOS專門針對service provider場景,目的是提供一個SDN系統。這是一個與ODL有很多類似地方的項目。

它們都支持都是Linux基金會管理的項目

它們都基于OSGI實現

它們都支持多種南向協議,屬于廣義上的SDN

都是HA,模塊化,可擴展的SDN

ONOS通過networking-onos項目與OpenStack集成。不過這個項目的參與度似乎很低。可見其與OpenStack的集成并不好。ONOS也是提供一個分層的結構,北向提供REST API,南向兼容多種網絡協議和控制協議,簡單看一下這個項目的架構吧。

可以分成三層:

Provider:支持多種網絡協議和控制協議,連接網絡設備,并且讀取網絡設備的信息,向上發送的Manager。

Manager:承上啟下,連接Application和Provider。Store也位于這一層,store負責同步多個ONOS實例之間的數據。

Application:ONOS的最上層,業務邏輯層。

Services/Subsystems

ONOS由多個Service或者Subsystem組成,每個Subsystem由多個OSGI模塊組成,這些模塊分布在ONOS的三層中。ONOS的Service/Subsystem如下圖所示:

總結

基于networking-onos的狀態,討論ONOS在OpenStack中的應用似乎意義不大。前面講過ODL和ONOS的共同點,實際中有什么區別?ONOS的定位就是給SP用的SDN,例如電信運營商,因此AT&T將ONOS部署成local SDN controller,將ODL部署成global SDN controller。因為通常在電信應用場景下,環境是是多層的,可能不只一種SDN存在于大環境下。

本文轉載自:https://zhuanlan.zhihu.com/p/25992893

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容