SDN軟件定義網(wǎng)絡(luò)
什么是SDN?這個問題似乎自從SDN的誕生到現(xiàn)在就一直存在爭議的問題幼东。SDN的官方解釋上提出了SDN的三個特性:集中化管理、控制轉(zhuǎn)發(fā)分離、開放的API根蟹∨迹可以這么說,只要滿足SDN的三個特性的简逮,就是SDN球散。SDN是一種理念,一種思想散庶。在我們架構(gòu)網(wǎng)絡(luò)的時候蕉堰,SDN是一種新的思路。
SDN的三大特性:
集中化的管理:有統(tǒng)一的管理入口悲龟。比方說我有100臺交換機(jī)屋讶,對著100臺交換機(jī)的配置管理,不需要逐個交換機(jī)配置须教,可以通過一個統(tǒng)一的控制器配置著100臺交換機(jī)皿渗。這就是集中化的管理。
控制轉(zhuǎn)發(fā)分離:在SDN的網(wǎng)絡(luò)種轻腺,SDN所希望的是交換機(jī)應(yīng)該足夠的“傻瓜”乐疆。交換機(jī)的功能應(yīng)該只是匹配和動作(match & action)。里面的鄰居子系統(tǒng)贬养、ACL規(guī)則挤土、路由、網(wǎng)關(guān)等功能都應(yīng)該在交換機(jī)上完成煤蚌,而不是在控制器上完成耕挨。當(dāng)然也是一種理想的情況。也是大部分宣稱自己是SDN云網(wǎng)絡(luò)的產(chǎn)品做到的地方尉桩。在Open vSwitch 的Dragonflow云網(wǎng)絡(luò)中筒占,其實(shí)就把鄰居子系統(tǒng)和網(wǎng)關(guān)的部分功能做到SDN控制器上,主要的目的是為了解決東西流量的分布式以及減少故障域蜘犁。在Dragonflow的云網(wǎng)絡(luò)中還是保留了不少傳統(tǒng)云網(wǎng)絡(luò)的實(shí)現(xiàn)翰苫。
開放的API:在SDN的架構(gòu)中,開放的API成為北向接口这橙。傳統(tǒng)網(wǎng)絡(luò)的交換機(jī)的配置基本上都是CLI配置奏窑,或者Netconf配置,這樣的配置接口很難實(shí)現(xiàn)通過軟件控制網(wǎng)絡(luò)屈扎。對于我們的這些軟件開發(fā)者來說埃唯,如果通過可以對網(wǎng)絡(luò)編程,就需要一個統(tǒng)一的開放的API進(jìn)行調(diào)用鹰晨。這也是SDN的核心思想可編程的網(wǎng)絡(luò)墨叛。
這個問題其實(shí)有很多人問過我漠趁,SDN究竟有什么好處扁凛?有些比較直接會問,用了SDN網(wǎng)絡(luò)性能會不會提升30%闯传?用了SDN之后谨朝,會不會多出很多新的網(wǎng)絡(luò)功能?我的觀點(diǎn)是SDN的提出不是一場網(wǎng)絡(luò)的革命甥绿,而是一次網(wǎng)絡(luò)的發(fā)展字币。架構(gòu)云網(wǎng)絡(luò)的過程中,SDN給我們帶來最大的好處是通過SDN實(shí)現(xiàn)的網(wǎng)絡(luò)功能所付出的代價會比傳統(tǒng)網(wǎng)絡(luò)的要小很多妹窖。這個代價主要是指這幾個個方面:開發(fā)周期纬朝、網(wǎng)絡(luò)復(fù)雜度、架構(gòu)的完整度骄呼、網(wǎng)絡(luò)IO路徑長度共苛、冗余耦合度。
我們很早之前就有考慮將云網(wǎng)絡(luò)和第三方的安全產(chǎn)品整合蜓萄,提供一套更安全的云網(wǎng)絡(luò)隅茎。安全的廠家只要把原來的安全產(chǎn)品做成實(shí)例,運(yùn)行到云網(wǎng)絡(luò)中即可嫉沽。但是最大的問題是云網(wǎng)絡(luò)辟犀,如何將流量引流到虛擬化的安全產(chǎn)品?為了引流我們需要創(chuàng)建更多的Vlan绸硕,需要更多的橋堂竟,并且第三方的安全廠家還需要識別我們的實(shí)例的遷移日志,配合遷移做規(guī)則的調(diào)整玻佩,我們也需要開放很多本來不應(yīng)該開放的API(提供vlan出嘹、橋的創(chuàng)建、日志的篩選)咬崔。最終這個計劃還是終止了税稼,因?yàn)榇鷥r太高了。我們的整體網(wǎng)絡(luò)架構(gòu)都有大量的改動垮斯,同時網(wǎng)絡(luò)的IO路徑增加了近一倍郎仆,并且開發(fā)周期預(yù)計要兩個季度,更重要的是和第三方的整合項目是不應(yīng)該存在這么多的交叉開發(fā)過程兜蠕。后來我們的SDN云網(wǎng)絡(luò)終于開發(fā)完成了扰肌。引流的工作集中在SDN控制器完成,整體的網(wǎng)絡(luò)架構(gòu)基本沒有任何改動熊杨。網(wǎng)絡(luò)IO路徑?jīng)]有變化狡耻。即使實(shí)例的遷移我們的SDN控制器也能夠識別出來墩剖,不需要第三方安全廠家監(jiān)聽日志事件猴凹。實(shí)現(xiàn)這樣的功能一個月就能完成了夷狰。這就是SDN的最大的好處了。當(dāng)然這是我們對SDN云網(wǎng)絡(luò)的技術(shù)實(shí)現(xiàn)細(xì)節(jié)有關(guān)系郊霎,后續(xù)我會專門寫一篇關(guān)于品高SDN云網(wǎng)絡(luò)的介紹文章沼头,專門講一講這一方面的事情。
傳統(tǒng)的云網(wǎng)絡(luò):就是基于Linuxkernel的網(wǎng)絡(luò)協(xié)議棧提供的傳統(tǒng)網(wǎng)絡(luò)組件實(shí)現(xiàn)云網(wǎng)絡(luò)的基本功能进倍。比方說:安全組就用Linux自帶的iptables實(shí)現(xiàn)、子網(wǎng)隔離就用Linux自帶的Vlan實(shí)現(xiàn)购对、地址轉(zhuǎn)換就用Linux自帶的NAT實(shí)現(xiàn)猾昆、流量控制就用Linux自帶的TC實(shí)現(xiàn)、路由功能Linux自帶的route table實(shí)現(xiàn)等等骡苞。再配合一些網(wǎng)絡(luò)規(guī)劃垂蜗,用其中一兩臺服務(wù)器作為網(wǎng)絡(luò)節(jié)點(diǎn)(云網(wǎng)絡(luò)的出口核心路由器)。最后配合上云的調(diào)度能力解幽。這樣傳統(tǒng)的云網(wǎng)絡(luò)就構(gòu)建起來的贴见。
傳統(tǒng)的云網(wǎng)絡(luò)確實(shí)也存在不少的問題:
網(wǎng)絡(luò)節(jié)點(diǎn)的網(wǎng)絡(luò)業(yè)務(wù)過于集中,容易出現(xiàn)單點(diǎn)故障躲株。
東西南北流量混合片部,網(wǎng)絡(luò)質(zhì)量不高。
傳統(tǒng)Linux網(wǎng)絡(luò)協(xié)議棧的網(wǎng)絡(luò)功能捆綁嚴(yán)重霜定,資源消耗嚴(yán)重档悠。
Vlan的子網(wǎng)隔離,數(shù)量不足望浩。
橫向擴(kuò)展能力差辖所,網(wǎng)絡(luò)規(guī)模難以擴(kuò)展。
縱向吞掉性能曾雕,受網(wǎng)絡(luò)節(jié)點(diǎn)點(diǎn)單限制奴烙。
為了解決傳統(tǒng)網(wǎng)絡(luò)的這些問題,其實(shí)很多企業(yè)剖张、開源組織也是付出了不少的努力切诀。說到底其實(shí)最關(guān)鍵的就是把網(wǎng)絡(luò)節(jié)點(diǎn)的業(yè)務(wù)功能下沉到計算節(jié)點(diǎn)(分布式的虛擬化網(wǎng)絡(luò))。當(dāng)然還有其他的問題搔弄,這是不會這么快暴露出來幅虑。
2.2 Open vSwitch云網(wǎng)絡(luò)之路
前段時間看了《通向高可用與分布式的OpenStack網(wǎng)絡(luò)之路》。我得到很多的啟發(fā)顾犹,深深地體會到云網(wǎng)絡(luò)之路確實(shí)艱辛并且曲折倒庵。我對比了Open vSwitch的發(fā)展之路和品高的SDN云網(wǎng)絡(luò)做了一些分析褒墨。如下圖:
(點(diǎn)擊放大圖像)
一個成熟的商用云網(wǎng)絡(luò)有一個準(zhǔn)入條件就是高可用。Open vSwitch在Neutron L3HA版本中實(shí)現(xiàn)了的HA擎宝。但是在后續(xù)的幾個版本中郁妈,因?yàn)榧軜?gòu)上沖突Neutron L2POP & ARP Respondar 、DVR绍申、Dragonflow的版本中HA就無法兼容了噩咪。Open vSwitch的發(fā)展之路總結(jié)起來就是把網(wǎng)絡(luò)節(jié)點(diǎn)上網(wǎng)絡(luò)功能(FW,Gateway极阅,NAT胃碾,ROUTE,DHCP等功能)下沉到計算節(jié)點(diǎn)筋搏。也是提高為了網(wǎng)絡(luò)容災(zāi)能力仆百。不可否認(rèn)Open vSwitch是一個成功的產(chǎn)品,目前很多云廠商也是在Open vSwitch的基礎(chǔ)上實(shí)現(xiàn)自己的云奔脐。
SDN的提出確實(shí)給了我們很多的新的想法俄周。首當(dāng)其中的想法就是:如果云網(wǎng)絡(luò)是通過SDN實(shí)現(xiàn)的,是不是可以解決傳統(tǒng)云網(wǎng)絡(luò)難以解決的問題呢帖族?對于一個新的技術(shù)栈源,我們必須要有足夠的寬容度。我們的做法是通過SDN實(shí)現(xiàn)和傳統(tǒng)云網(wǎng)絡(luò)一樣功能的云網(wǎng)絡(luò)竖般,不要求SDN去突破性能甚垦,創(chuàng)造新功能魏割。我們和Dragonflow不同微酬,我們不是部分功能使用SDN,而是全部網(wǎng)絡(luò)功能都通過SDN實(shí)現(xiàn)误债。這想法確實(shí)有點(diǎn)瘋狂挣郭,但是可行性上是完全沒有問題的迄埃。
我們制定了一些SDN的要求:
擺脫網(wǎng)絡(luò)節(jié)點(diǎn)。
不使用Linux網(wǎng)絡(luò)協(xié)議棧自帶的網(wǎng)絡(luò)組件兑障。
計算節(jié)點(diǎn)使用Open vSwitch作為分布式虛擬交換機(jī)侄非。
使用SDN控制器,將全部的云網(wǎng)絡(luò)業(yè)務(wù)功能都集中在SDN控制器流译。
SDN 控制器和Open vSwitch的通信使用OpenFlow協(xié)議逞怨。
SDN控制器集群高可用。
在開發(fā)的過程中福澡,我們深刻地體會到SDN的強(qiáng)大之處叠赦。我們不僅僅完成了我們當(dāng)初制定的要求,我們也通過SDN帶來了很多新的網(wǎng)絡(luò)特性革砸。隱藏式分布式虛擬化網(wǎng)關(guān)除秀、實(shí)例遷移規(guī)則不用重新配置糯累、網(wǎng)絡(luò)功能可熱插拔、網(wǎng)絡(luò)業(yè)務(wù)的疊加不會增加IO路徑册踩、網(wǎng)絡(luò)可視化泳姐、ARP預(yù)處理以及ARP預(yù)填充等等。所有網(wǎng)絡(luò)功能都在SDN控制器棍好,所有網(wǎng)絡(luò)規(guī)則都是按需分配自動超時仗岸,控制器集群高可用。后續(xù)我會和大家分享一下Bingo SDN的網(wǎng)絡(luò)功能借笙。
SDN的云網(wǎng)絡(luò)開發(fā)過程中我們也確實(shí)遇到了很多問題。比方說较锡,OpenFlow協(xié)議對一些網(wǎng)絡(luò)功能功能的不支持业稼,Open vSwitch中有一些Bug,SDN網(wǎng)絡(luò)的新建連接性能低蚂蕴,SDN控制器集群高可用等等低散。最后我們還是突破這些問題,后續(xù)我會和大家分享的Bingo SDN的遇到的問題和解決方法骡楼。
不可否認(rèn)熔号,SDN的云網(wǎng)絡(luò)確實(shí)是一套可行并且正確的發(fā)展之路。SDN給了我們云網(wǎng)絡(luò)更多發(fā)展的空間鸟整。
本文轉(zhuǎn)載自:http://www.infoq.com/cn/articles/sdn-and-cloud-network