OpenStack中SDN泛談3 (OVN&Dragonflow)

這一篇講一下基于OpenvSwitch的SDN平挑。

OVN

OVN(Open Virtual Network)是OVS社區(qū)在2015年1月發(fā)起的OVS子項目厌衙,其代碼與OVS在一個庫里面。OVN提供了一個可在大規(guī)模環(huán)境下部署的润梯、產(chǎn)品級別的輕量級SDN。

在之前(2014年)的一個調(diào)查中,OpenvSwitch已經(jīng)成為了OpenStack中最受歡迎的virtual switch斧账,OVS為hypervisor提供了虛擬的網(wǎng)絡(luò)設(shè)備,共同參與構(gòu)建虛擬環(huán)境煞肾。鑒于OVS的廣泛接受程度咧织,并為了讓OVS能勝任更多的場景,OVS社區(qū)提出提供一個輕量級的控制平面籍救,借助這個控制平面拯爽,可以在虛擬網(wǎng)絡(luò)設(shè)備之上實現(xiàn)OVS對虛擬網(wǎng)絡(luò)的支持。

基于這個出發(fā)點钧忽,OVN在創(chuàng)立之初只關(guān)注2-3層的虛擬網(wǎng)絡(luò)毯炮,這是區(qū)別于其他全功能的SDN控制器或者平臺。OVN可以看成是OVS的補充耸黑,因此OVN可以運行在任何OVS兼容的環(huán)境下桃煎。雖然兩者在一個項目下,OVN與OVS的連接采用的是OVS的通用接口大刊,因此ovs-vswitchd和ovsdb-server不會因為OVN而受到影響(說Midonet呢)为迈。另一方面三椿,就算不使用OVN,對OVS本身也沒有什么影響葫辐。

隨著OVS 2.6的發(fā)布搜锰,OVN的第一個版本也隨著發(fā)布(包含在OVS中),OVN從創(chuàng)立之初就考慮了與OpenStack的集成耿战。OVN通過networking-ovn項目與OpenStack集成蛋叼。Networking-ovn項目也是Neutron前PTL Kyle Mestery發(fā)起的項目。他后來跳槽到IBM剂陡,我曾經(jīng)有幸在他的lead下參與過OVN的開發(fā)工作狈涮。

下面看看OVN的架構(gòu)

在OVS的基礎(chǔ)上,OVN新增了兩個進程:ovn-northd和ovn-controller鸭栖,兩個數(shù)據(jù)庫:Northbound DB和Southbound DB歌馍。下面來分別看看:

Northbound DB

存儲virtual networking data model,例如 Switch晕鹊,Router松却,Port等。Northbound DB是由CMS(OpenStack)寫入溅话,也就是說與之前說過的SDN不太一樣晓锻,OVN北向不提供RESTful接口,而是直接由CMS寫入數(shù)據(jù)庫內(nèi)容公荧。舉個例子带射,在OpenStack Neutron的場景下,對應(yīng)的在Neutron中創(chuàng)建一個Network循狰,需要通過networking-ovn在Northbound DB中創(chuàng)建一個LogicalSwitch窟社。

Ovn-northd

監(jiān)聽Northbound DB的變化,將Northbound DB的內(nèi)容翻譯成LogicalFlow绪钥,存儲在Southbound DB灿里。Ovn-northd是一個集中的進程,在OVN環(huán)境下一般運行在獨立的Database node上程腹,在下面會再提到Database node匣吊。

Southbound DB

存儲LogicalFlow,Chassis和其他的一些信息寸潦。Southbound DB存儲ovn-controller的數(shù)據(jù)色鸳。傳統(tǒng)的集中式SDN控制器會根據(jù)已有的配置和數(shù)據(jù)計算OpenFlow規(guī)則,并下發(fā)到各個節(jié)點见转。而OVN將這個過程分解成了兩部分:

先通過ovn-northd將配置和數(shù)據(jù)計算成LogicalFlow命雀。一個LogicalSwitch下的LogicalFlow是一樣的。

將LogicalFlow分發(fā)到各個ovn-controller斩箫,再由ovn-controller將計算出相應(yīng)的OpenFlow規(guī)則下發(fā)吏砂。這樣做的好處是一些全局的運算只需要做一次撵儿。

Ovn-controller

分布在各個計算節(jié)點(OVN中叫做chassis)的SDN controller。Ovn-controller向上讀取Southbound DB的數(shù)據(jù)狐血,應(yīng)用在本地淀歇;并且讀取本地的VIF和Chassis信息,向上更新匈织。

OVN部署框架

OVN對于網(wǎng)絡(luò)功能的實現(xiàn)浪默,秉承的是分布式思想。因此網(wǎng)絡(luò)功能都分布在計算節(jié)點报亩,并且沒有一個專門的網(wǎng)絡(luò)節(jié)點浴鸿。但是OVN需要獨立的Database node井氢。這是因為OVN目前采用ovsdb-server作為其DB弦追,一方面,這對于OVN的部署很方便花竞,因為OVN本身就基于OVS劲件,采用ovsdb-server可以避免新增依賴。但是另一方面约急,ovsdb-server之前的主要應(yīng)用場景是給OVS存儲hypervisor本地的虛擬網(wǎng)絡(luò)設(shè)備信息零远,而OVN是一個集群內(nèi)運行的軟件,ovsdb-server明顯不能勝任這種大規(guī)模的數(shù)據(jù)讀寫厌蔽。同時牵辣,前面說過ovn-northd是一個集中式進程,因此用一個獨立的Database node來運行ovn-northd并存儲Northbound DB和Southbound DB奴饮,可以一定程度的緩解瓶頸問題纬向。

OVN與OpenStack集成之后的運行框架如下圖所示 :

總結(jié)

OVN是一個廠商中立的開源項目,背后并沒有一個大的廠商在操縱戴卜,項目的發(fā)起是VMware的工程師逾条,項目的推進有Redhat和IBM等其他公司的參與。相比ODL投剥,ONOS其架構(gòu)也較為簡單师脂。OVN在創(chuàng)立之初就考慮了與OpenStack的集成,因此OVN在OpenStack環(huán)境下工作的較好江锨,一些OpenStack Neutron已知的問題吃警,在OVN中都有較好的解決,例如DVR啄育,Security Group的性能問題酌心。對于已有的OpenStack + OVS環(huán)境,升級到OVN也是一個不錯的選擇灸撰。據(jù)說OVN已經(jīng)在數(shù)百個物理節(jié)點上進行了部署測試谒府,并且用ovn-scale-test項目進行了數(shù)千個節(jié)點的模擬測試拼坎。

其現(xiàn)在的主要問題就在于Database node的瓶頸問題,相信后繼的改進能夠解決這個問題完疫。其他問題在于項目的定位不是一個全功能的SDN泰鸡,因此只有2-3層的virtual networking。不過這個倒是契合OpenStack Neutron的定位壳鹤。其他的advanced 功能可以通過OpenStack Neutron的各個子項目彌補盛龄。

Dragonflow

如果說其他的SDN項目是在OpenStack之外生長的,再嫁接到OpenStack芳誓,那Dragonflow就是土生土長的OpenStack SDN項目余舶,Dragonflow是OpenStack的big tent項目,屬于Neutron下面的子項目锹淌,是一個基于Python的完全開源的項目匿值。

Dragonflow是華為公司以色列團隊發(fā)起并推動的項目,最早在OpenStack Kilo版本提出赂摆,是為了解決Neutron DVR的問題挟憔。有關(guān)Neutron DVR的問題,這里就不展開了烟号,以后有機會細說绊谭。在OpenStack Liberty版本開始,可能是受OVN項目的影響汪拥,Dragonflow轉(zhuǎn)向全面的SDN項目达传,與OVN不同的是,Dragonflow目的是提供全功能的SDN解決方案迫筑。一直到剛剛結(jié)束的Ocata版本宪赶,Dragonflow社區(qū)一直處于活躍的開發(fā)和正向的演進中。本人目前也是Dragonflow項目的活躍開發(fā)者之一铣焊。

Dragonflow的定位是大規(guī)模環(huán)境下高性能SDN解決方案逊朽。來看看它的架構(gòu)吧:

其組成部分主要有Neutron plugin,Message Driver曲伊,DB driver叽讳,Dragonflow controller。分別來看看這些組成部分:

Neutron plugin

由于Dragonflow就是OpenStack Neutron下面的的子項目坟募,因此Dragonflow自己完成了與Neutron的集成岛蚤,Neutron plugin就是Dragonflow中與Neutron的集成部分,這個與其他的SDN一樣懈糯,實現(xiàn)了ML2 mech driver和各種Service plugins涤妒。與OVN類似的是,目前Dragonflow本身不提供獨立的RESTful接口赚哗,Neutron plugin直接寫Dragonflow Database她紫,并觸發(fā)相應(yīng)的Message硅堆。

Message Driver

Dragonflow組件間通訊的方式,其他的SDN一般是定義好了組件間通訊的方式贿讹,要么是RPC渐逃,要么是其他協(xié)議,而Dragonflow將這部分做了一個抽象民褂,可以支持多種Message機制茄菊,目前支持的有ZeroMQ和ReidsMQ。這樣用戶可以根據(jù)不同的使用場景赊堪,選用不同的Message機制面殖。Message Driver用來連接Dragonflow Controller和Neutron server,并在之間傳遞數(shù)據(jù)哭廉。

DB driver

與Message driver類似脊僚,其他的SDN一般只支持一種DB,但是Dragonflow將這部分也做了抽象群叶,可以支持多種NoSQL數(shù)據(jù)庫吃挑,目前支持的有etcd钝荡,RAMCoud街立,Reids,Cassandra等埠通。這樣實現(xiàn)的目的也是為了用戶可以根據(jù)不同的使用場景赎离,選用不同的DB,以達到最好的性能效果端辱。

Dragonflow Controller

這個是Dragonflow的核心部分梁剔。

所有的Dragonflow controller都監(jiān)聽Message driver,當(dāng)Neutron plugin發(fā)布相應(yīng)的Message舞蔽,Dragonflow Controller能收到這個消息荣病,并進行相應(yīng)的計算,更新相應(yīng)的OpenFlow規(guī)則和本地的配置渗柿,同時Dragonflow會通過Message driver上報本地的信息个盆,例如端口上線事件。

剛剛結(jié)束的Dragonflow Northbound DB重構(gòu)朵栖,將Dragonflow Controller中的數(shù)據(jù)和消息機制颊亮,按照Model來管理,這有點類似于ODL中的MD-SAL陨溅。

為了提高網(wǎng)絡(luò)計算的速度终惑,Dragonflow本地有一個數(shù)據(jù)的緩存,這樣在進行網(wǎng)絡(luò)計算的時候门扇,直接可以從內(nèi)存中讀取數(shù)據(jù)進行運算雹有,而不需要再讀取遠端DB數(shù)據(jù)偿渡。這樣能減少網(wǎng)絡(luò)計算的時間,降低網(wǎng)絡(luò)延時霸奕。

selective topology

為了適應(yīng)大規(guī)模部署卸察,Dragonflow中還有一個selective topology的概念,這個有點類似我在上一篇中介紹的OpenContrail里的的vRouter中的routing instance概念铅祸。

只有當(dāng)前計算節(jié)點關(guān)注的Topology才會在當(dāng)前Dragonflow Controller中存在緩存坑质,并且相應(yīng)消息才會被當(dāng)前Dragonflow Controller接收。當(dāng)前計算節(jié)點關(guān)注的Topology是指當(dāng)前計算節(jié)點上相應(yīng)租戶(tenant)的虛擬機临梗。這樣的設(shè)計涡扼,使得在大規(guī)模部署環(huán)境下,每個Dragonflow Controller的只需要監(jiān)聽有限的信息盟庞,緩存有限的數(shù)據(jù)吃沪,不會因為規(guī)模的變大而導(dǎo)致單個Dragonflow Controller負荷變大。

Networking Abstraction Layer

這里是具體網(wǎng)絡(luò)功能的實現(xiàn)什猖,因為Dragonflow Controller是運行在各個計算節(jié)點的票彪,因此,Dragonflow對于網(wǎng)絡(luò)的運算不狮,也是放到各個計算節(jié)點降铸,這是一個真正的分布式可插拔的SDN方案。之前介紹的SDN要么是集中式的SDN摇零,要么是部分運算在集中式節(jié)點推掸,部分計算在分布式節(jié)點。

在NAL驻仅,每個網(wǎng)絡(luò)功能都是一個獨立的application谅畅。為了實現(xiàn)相應(yīng)的網(wǎng)絡(luò)功能,每個計算節(jié)點上都必須運行一套applications噪服。目前實現(xiàn)的網(wǎng)絡(luò)功能有DHCP毡泻,L3 routing,L2粘优,Security Group仇味,等等。

與ovn-controller類似的是敬飒,Dragonflow Controller底層連接的也是ovs-vswitchd和ovsdb-server邪铲。

部署框架

與OVN類似的是,Dragonflow也有一個專門的Database node无拗,但是與OVN不一樣的是Dragonflow的Database Node可以是任何DB backend带到,例如實際環(huán)境下可以部署一個RedisDB的HA集群,這在大規(guī)模環(huán)境下優(yōu)勢要明顯強于OVN的ovsdb-server。另一方面不一樣的是揽惹,Dragonflow的Database node不關(guān)心任何網(wǎng)絡(luò)運算被饿,所有的網(wǎng)絡(luò)運算都交由分布在計算節(jié)點的Dragonflow controller完成。

總結(jié)

Dragonflow是一個真正的分布式SDN解決方案搪搏,其底層依賴OVS狭握。因此對于現(xiàn)有的Neutron + OVS架構(gòu),遷移到Dragonflow也較為自然疯溺,實際上论颅,Dragonflow目前也有相應(yīng)的努力,提供Neutron + OVS agent遷移到Dragonflow的方案(開發(fā)中)囱嫩。

從社區(qū)開發(fā)來看恃疯,華為是目前的主要貢獻者,不過從其目前的開源策略看墨闲,Dragonflow并沒有想做成一個廠商控制的開源項目今妄。

另一方面,Dragonflow現(xiàn)在還處于一個相對早期的階段鸳碧。并且分布式的SDN方案盾鳞,雖然將網(wǎng)絡(luò)運算分布到了各個計算節(jié)點,能夠從理論上去除瓶頸瞻离,擴大集群規(guī)模腾仅,但是也增加了開發(fā)的難度和浪費了集群內(nèi)整體的計算資源,因為同一個網(wǎng)絡(luò)運算琐脏,需要在多個計算節(jié)點分別完成攒砖,從整體上看是有一定的浪費。

不過鑒于目前計算資源成本較低日裙,這些副作用利大于弊,總體來說惰蜜,Dragonflow還是一個很有前途的SDN項目昂拂。

本文轉(zhuǎn)載自:https://zhuanlan.zhihu.com/p/25996102

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抛猖,隨后出現(xiàn)的幾起案子格侯,更是在濱河造成了極大的恐慌,老刑警劉巖财著,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件联四,死亡現(xiàn)場離奇詭異,居然都是意外死亡撑教,警方通過查閱死者的電腦和手機朝墩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伟姐,“玉大人收苏,你說我怎么就攤上這事亿卤。” “怎么了鹿霸?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵排吴,是天一觀的道長。 經(jīng)常有香客問我懦鼠,道長钻哩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任肛冶,我火速辦了婚禮憋槐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淑趾。我一直安慰自己阳仔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布扣泊。 她就那樣靜靜地躺著近范,像睡著了一般。 火紅的嫁衣襯著肌膚如雪延蟹。 梳的紋絲不亂的頭發(fā)上评矩,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音阱飘,去河邊找鬼斥杜。 笑死,一個胖子當(dāng)著我的面吹牛沥匈,可吹牛的內(nèi)容都是我干的蔗喂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼高帖,長吁一口氣:“原來是場噩夢啊……” “哼缰儿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起散址,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤乖阵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后预麸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞪浸,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年吏祸,在試婚紗的時候發(fā)現(xiàn)自己被綠了对蒲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖齐蔽,靈堂內(nèi)的尸體忽然破棺而出两疚,到底是詐尸還是另有隱情,我是刑警寧澤含滴,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布诱渤,位于F島的核電站,受9級特大地震影響谈况,放射性物質(zhì)發(fā)生泄漏勺美。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一碑韵、第九天 我趴在偏房一處隱蔽的房頂上張望赡茸。 院中可真熱鬧,春花似錦祝闻、人聲如沸占卧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽华蜒。三九已至,卻和暖如春豁遭,著一層夾襖步出監(jiān)牢的瞬間叭喜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工蓖谢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捂蕴,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓闪幽,卻偏偏與公主長得像啥辨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沟使,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容