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