SDN軟件定義網(wǎng)絡
什么是SDN?這個問題似乎自從SDN的誕生到現(xiàn)在就一直存在爭議的問題。SDN的官方解釋上提出了SDN的三個特性:集中化管理、控制轉發(fā)分離、開放的API。可以這么說,只要滿足SDN的三個特性的,就是SDN。SDN是一種理念,一種思想。在我們架構網(wǎng)絡的時候,SDN是一種新的思路。
SDN的三大特性:
集中化的管理:有統(tǒng)一的管理入口。比方說我有100臺交換機,對著100臺交換機的配置管理,不需要逐個交換機配置,可以通過一個統(tǒng)一的控制器配置著100臺交換機。這就是集中化的管理。
控制轉發(fā)分離:在SDN的網(wǎng)絡種,SDN所希望的是交換機應該足夠的“傻瓜”。交換機的功能應該只是匹配和動作(match & action)。里面的鄰居子系統(tǒng)、ACL規(guī)則、路由、網(wǎng)關等功能都應該在交換機上完成,而不是在控制器上完成。當然也是一種理想的情況。也是大部分宣稱自己是SDN云網(wǎng)絡的產(chǎn)品做到的地方。在Open vSwitch 的Dragonflow云網(wǎng)絡中,其實就把鄰居子系統(tǒng)和網(wǎng)關的部分功能做到SDN控制器上,主要的目的是為了解決東西流量的分布式以及減少故障域。在Dragonflow的云網(wǎng)絡中還是保留了不少傳統(tǒng)云網(wǎng)絡的實現(xiàn)。
開放的API:在SDN的架構中,開放的API成為北向接口。傳統(tǒng)網(wǎng)絡的交換機的配置基本上都是CLI配置,或者Netconf配置,這樣的配置接口很難實現(xiàn)通過軟件控制網(wǎng)絡。對于我們的這些軟件開發(fā)者來說,如果通過可以對網(wǎng)絡編程,就需要一個統(tǒng)一的開放的API進行調用。這也是SDN的核心思想可編程的網(wǎng)絡。
這個問題其實有很多人問過我,SDN究竟有什么好處?有些比較直接會問,用了SDN網(wǎng)絡性能會不會提升30%?用了SDN之后,會不會多出很多新的網(wǎng)絡功能?我的觀點是SDN的提出不是一場網(wǎng)絡的革命,而是一次網(wǎng)絡的發(fā)展。架構云網(wǎng)絡的過程中,SDN給我們帶來最大的好處是通過SDN實現(xiàn)的網(wǎng)絡功能所付出的代價會比傳統(tǒng)網(wǎng)絡的要小很多。這個代價主要是指這幾個個方面:開發(fā)周期、網(wǎng)絡復雜度、架構的完整度、網(wǎng)絡IO路徑長度、冗余耦合度。
我們很早之前就有考慮將云網(wǎng)絡和第三方的安全產(chǎn)品整合,提供一套更安全的云網(wǎng)絡。安全的廠家只要把原來的安全產(chǎn)品做成實例,運行到云網(wǎng)絡中即可。但是最大的問題是云網(wǎng)絡,如何將流量引流到虛擬化的安全產(chǎn)品?為了引流我們需要創(chuàng)建更多的Vlan,需要更多的橋,并且第三方的安全廠家還需要識別我們的實例的遷移日志,配合遷移做規(guī)則的調整,我們也需要開放很多本來不應該開放的API(提供vlan、橋的創(chuàng)建、日志的篩選)。最終這個計劃還是終止了,因為代價太高了。我們的整體網(wǎng)絡架構都有大量的改動,同時網(wǎng)絡的IO路徑增加了近一倍,并且開發(fā)周期預計要兩個季度,更重要的是和第三方的整合項目是不應該存在這么多的交叉開發(fā)過程。后來我們的SDN云網(wǎng)絡終于開發(fā)完成了。引流的工作集中在SDN控制器完成,整體的網(wǎng)絡架構基本沒有任何改動。網(wǎng)絡IO路徑?jīng)]有變化。即使實例的遷移我們的SDN控制器也能夠識別出來,不需要第三方安全廠家監(jiān)聽日志事件。實現(xiàn)這樣的功能一個月就能完成了。這就是SDN的最大的好處了。當然這是我們對SDN云網(wǎng)絡的技術實現(xiàn)細節(jié)有關系,后續(xù)我會專門寫一篇關于品高SDN云網(wǎng)絡的介紹文章,專門講一講這一方面的事情。
傳統(tǒng)的云網(wǎng)絡:就是基于Linuxkernel的網(wǎng)絡協(xié)議棧提供的傳統(tǒng)網(wǎng)絡組件實現(xiàn)云網(wǎng)絡的基本功能。比方說:安全組就用Linux自帶的iptables實現(xiàn)、子網(wǎng)隔離就用Linux自帶的Vlan實現(xiàn)、地址轉換就用Linux自帶的NAT實現(xiàn)、流量控制就用Linux自帶的TC實現(xiàn)、路由功能Linux自帶的route table實現(xiàn)等等。再配合一些網(wǎng)絡規(guī)劃,用其中一兩臺服務器作為網(wǎng)絡節(jié)點(云網(wǎng)絡的出口核心路由器)。最后配合上云的調度能力。這樣傳統(tǒng)的云網(wǎng)絡就構建起來的。
傳統(tǒng)的云網(wǎng)絡確實也存在不少的問題:
網(wǎng)絡節(jié)點的網(wǎng)絡業(yè)務過于集中,容易出現(xiàn)單點故障。
東西南北流量混合,網(wǎng)絡質量不高。
傳統(tǒng)Linux網(wǎng)絡協(xié)議棧的網(wǎng)絡功能捆綁嚴重,資源消耗嚴重。
Vlan的子網(wǎng)隔離,數(shù)量不足。
橫向擴展能力差,網(wǎng)絡規(guī)模難以擴展。
縱向吞掉性能,受網(wǎng)絡節(jié)點點單限制。
為了解決傳統(tǒng)網(wǎng)絡的這些問題,其實很多企業(yè)、開源組織也是付出了不少的努力。說到底其實最關鍵的就是把網(wǎng)絡節(jié)點的業(yè)務功能下沉到計算節(jié)點(分布式的虛擬化網(wǎng)絡)。當然還有其他的問題,這是不會這么快暴露出來。
前段時間看了《通向高可用與分布式的OpenStack網(wǎng)絡之路》。我得到很多的啟發(fā),深深地體會到云網(wǎng)絡之路確實艱辛并且曲折。我對比了Open vSwitch的發(fā)展之路和品高的SDN云網(wǎng)絡做了一些分析。如下圖:
(點擊放大圖像)
一個成熟的商用云網(wǎng)絡有一個準入條件就是高可用。Open vSwitch在Neutron L3HA版本中實現(xiàn)了的HA。但是在后續(xù)的幾個版本中,因為架構上沖突Neutron L2POP & ARP Respondar 、DVR、Dragonflow的版本中HA就無法兼容了。Open vSwitch的發(fā)展之路總結起來就是把網(wǎng)絡節(jié)點上網(wǎng)絡功能(FW,Gateway,NAT,ROUTE,DHCP等功能)下沉到計算節(jié)點。也是提高為了網(wǎng)絡容災能力。不可否認Open vSwitch是一個成功的產(chǎn)品,目前很多云廠商也是在Open vSwitch的基礎上實現(xiàn)自己的云。
SDN的提出確實給了我們很多的新的想法。首當其中的想法就是:如果云網(wǎng)絡是通過SDN實現(xiàn)的,是不是可以解決傳統(tǒng)云網(wǎng)絡難以解決的問題呢?對于一個新的技術,我們必須要有足夠的寬容度。我們的做法是通過SDN實現(xiàn)和傳統(tǒng)云網(wǎng)絡一樣功能的云網(wǎng)絡,不要求SDN去突破性能,創(chuàng)造新功能。我們和Dragonflow不同,我們不是部分功能使用SDN,而是全部網(wǎng)絡功能都通過SDN實現(xiàn)。這想法確實有點瘋狂,但是可行性上是完全沒有問題的。
我們制定了一些SDN的要求:
擺脫網(wǎng)絡節(jié)點。
不使用Linux網(wǎng)絡協(xié)議棧自帶的網(wǎng)絡組件。
計算節(jié)點使用Open vSwitch作為分布式虛擬交換機。
使用SDN控制器,將全部的云網(wǎng)絡業(yè)務功能都集中在SDN控制器。
SDN 控制器和Open vSwitch的通信使用OpenFlow協(xié)議。
SDN控制器集群高可用。
在開發(fā)的過程中,我們深刻地體會到SDN的強大之處。我們不僅僅完成了我們當初制定的要求,我們也通過SDN帶來了很多新的網(wǎng)絡特性。隱藏式分布式虛擬化網(wǎng)關、實例遷移規(guī)則不用重新配置、網(wǎng)絡功能可熱插拔、網(wǎng)絡業(yè)務的疊加不會增加IO路徑、網(wǎng)絡可視化、ARP預處理以及ARP預填充等等。所有網(wǎng)絡功能都在SDN控制器,所有網(wǎng)絡規(guī)則都是按需分配自動超時,控制器集群高可用。后續(xù)我會和大家分享一下Bingo SDN的網(wǎng)絡功能。
SDN的云網(wǎng)絡開發(fā)過程中我們也確實遇到了很多問題。比方說,OpenFlow協(xié)議對一些網(wǎng)絡功能功能的不支持,Open vSwitch中有一些Bug,SDN網(wǎng)絡的新建連接性能低,SDN控制器集群高可用等等。最后我們還是突破這些問題,后續(xù)我會和大家分享的Bingo SDN的遇到的問題和解決方法。
不可否認,SDN的云網(wǎng)絡確實是一套可行并且正確的發(fā)展之路。SDN給了我們云網(wǎng)絡更多發(fā)展的空間。
本文轉載自:http://www.infoq.com/cn/articles/sdn-and-cloud-network