Neutron的SDN化
對于SDN大家估計都耳熟能詳,這里首先講講虛擬化網(wǎng)絡(luò)技術(shù)故事,當(dāng)VM技術(shù)出現(xiàn)的時候,存儲通過本地存儲或遠(yuǎn)端掛載的形式基本沒有太大變化,但是網(wǎng)絡(luò)技術(shù)呈現(xiàn)形式一直不斷翻新。
OVS可以說是一個網(wǎng)絡(luò)虛擬化里一個重量級的開源產(chǎn)品級作品,OVS模仿物理交換機(jī)設(shè)備的工作流程,實現(xiàn)了很多物理交換機(jī)當(dāng)時才支持的許多網(wǎng)絡(luò)功能,但是每次配置都需要到宿主機(jī)里去手工設(shè)置,管理員們正在煩惱之時,SDN就像朝陽帶來了希望
就是可以將OVS設(shè)置SDN的控制器,然后管理員就可以通過頁面點(diǎn)擊按鈕來調(diào)用SDN的北向API來配置和管理多個OVS,這為網(wǎng)絡(luò)虛擬化管理和配置帶來了便捷;這給某些工程師帶來了些認(rèn)識:
1 軟件時代來臨了,軟件實現(xiàn)的虛擬網(wǎng)元可以取代系統(tǒng)工程師和運(yùn)維工程師一直摸不透的黑盒子;
2 SDN的名稱Software Defined Network名稱更讓人理解為軟件替代一切的SDX理念,后來衍生到軟件定義存儲SDS和軟件定義數(shù)據(jù)中心SDDC的概念
這里說幾個虛擬化(存儲、計算和網(wǎng)絡(luò))的好處:
1 通過虛擬化,屏蔽底層故障,增加手工干預(yù)所需時間,便于運(yùn)維;
2 通過一虛多提高資源使用效率,節(jié)省成本;
3 便于集中管理資源,為云計算的服務(wù)提供堅實基礎(chǔ)支持;
這里需要提及下,一臺物理機(jī)虛擬多個虛擬機(jī)時虛擬化,多個物理機(jī)虛擬一臺虛擬機(jī)同樣是虛擬化。虛擬機(jī)和物理機(jī)同時被云平臺管理也是現(xiàn)階段很多場景需要的,包括Openstack的組件里有管理虛擬機(jī)的Nova和相應(yīng)管理裸機(jī)的Ironic。
這里澄清下幾個概念:SDN提出的時候并沒有區(qū)分所控制的軟件轉(zhuǎn)發(fā)層面是虛擬網(wǎng)元還是物理網(wǎng)元,但是從SDN的理念開放的南向接口這項來看,OpenvSwitch這類虛擬網(wǎng)元支持的Openflow協(xié)議速度比硬件支持實現(xiàn)肯定要快很多(這里并不是說OVS是第一種SDN里的網(wǎng)元,也不是說SDN里先支持虛擬網(wǎng)元后支持物理網(wǎng)元),多多少少關(guān)聯(lián)了些NFV(Network Function Virtualization)的思想(NFV的理念現(xiàn)在很多被設(shè)計為VMaas,SDN結(jié)合NFV在部署和網(wǎng)絡(luò)管理上提供更多的相互支撐)。
但是SDN的名稱和對OVS支持,讓系統(tǒng)工程師和運(yùn)維工程師多多少少會認(rèn)為SDN就是軟件代替硬件網(wǎng)絡(luò)和SDN就是運(yùn)維網(wǎng)絡(luò)的工具;當(dāng)系統(tǒng)工程師和運(yùn)維工程師云SDN津津樂道的時候,而此時的網(wǎng)絡(luò)工程師在做什么哪?理論上講SDN是屬于網(wǎng)絡(luò)領(lǐng)域的概念,而SDN產(chǎn)生前期的時候絕大多數(shù)的網(wǎng)絡(luò)工程師(到現(xiàn)在還有很多設(shè)備商的網(wǎng)絡(luò)工程師)還是沉浸在數(shù)據(jù)包轉(zhuǎn)發(fā)和網(wǎng)絡(luò)協(xié)議的開發(fā)中,幾乎對SDN沒有什么概念。
我們現(xiàn)在經(jīng)??吹礁鞣N分享和峰會里,提及SDN應(yīng)用的很多是互聯(lián)網(wǎng)公司的運(yùn)維工程師(需求是網(wǎng)絡(luò)可視,突破網(wǎng)絡(luò)協(xié)議OSPF/BGP等不可控的約束對網(wǎng)絡(luò)操作,作為一種運(yùn)維工具實現(xiàn)可視化網(wǎng)絡(luò))和云計算公司的系統(tǒng)工程師(軟件實現(xiàn)網(wǎng)絡(luò),擺脫理解不了的硬件盒子,使用軟交換或白盒交換機(jī)實現(xiàn)可控),設(shè)備商的網(wǎng)絡(luò)工程師分享SDN的則相比不是太多。
個人觀點(diǎn):最懂網(wǎng)絡(luò)設(shè)計的工程師還在于世界上各大設(shè)備商公司里,SDN這種新架構(gòu)的落地要靠他們(當(dāng)然包括他們從設(shè)備商跳槽或創(chuàng)業(yè)后后到互聯(lián)網(wǎng)和云計算公司從事的SDN網(wǎng)絡(luò)設(shè)計落地工作,以及協(xié)助集成商落地SDN)。
做網(wǎng)絡(luò)開發(fā)的對虛擬網(wǎng)元的網(wǎng)絡(luò)原理都懂,上手代碼也會很快;但是沒有玩過網(wǎng)絡(luò)設(shè)備的工程師搞網(wǎng)絡(luò),對黑盒子都會始終有很多迷惑的認(rèn)知,這些往往是導(dǎo)致出網(wǎng)絡(luò)問題的根源,曾經(jīng)出現(xiàn)過某云平臺因為交換機(jī)問題導(dǎo)致的云平臺故障
OpenvSwitch現(xiàn)在來說是比較出名的虛擬網(wǎng)元,還有思科的Nexus 1000V,微軟的Hyper-v Vswitch,Vmware的VSS/VDS等;OpenvSwitch來講,相比于硬件交換機(jī),支持的功能逐漸完整,并且已經(jīng)發(fā)布集成Conntrackd的有狀態(tài)規(guī)則(OVN已經(jīng)實用之來作為Neutron里替代Iptables實現(xiàn)安全組,但最新2.4版本的OVS未發(fā)布該特性),這點(diǎn)作為新特性的創(chuàng)新來說是傳統(tǒng)硬件交換機(jī)支持不了的;
但是OVS在Egress Pipeline Processing方面支持度還有待進(jìn)一步增強(qiáng)(Openflow1.5才有這個支持),包括流表對出口的匹配、端口出方向QOS帶寬限速、出入方向?qū)UM報文的抑制等,但是OVS的性能和現(xiàn)在萬兆的交換機(jī)相比,還相差很遠(yuǎn)。
個人觀點(diǎn):所以在虛擬化網(wǎng)絡(luò)不成熟的今天,需要虛擬交換機(jī)這類來不斷完善新特性;但是縱觀網(wǎng)絡(luò)發(fā)展,包括殺毒硬件、L7交換機(jī)等類似產(chǎn)品,以及博通等芯片廠商硬件開始支持端口虛擬化和虛交換機(jī)等,網(wǎng)絡(luò)虛擬化產(chǎn)品最終也應(yīng)以網(wǎng)絡(luò)設(shè)備的虛擬化來實現(xiàn)為主,從而釋放出所占用的服務(wù)器 CPU等資源。
這里再說下傳統(tǒng)網(wǎng)絡(luò)的SDN應(yīng)對的問題:以前的大規(guī)模網(wǎng)絡(luò)互通是靠路由協(xié)議實現(xiàn)路由發(fā)布實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)面互通(此時路由協(xié)議的交互基本是通過數(shù)據(jù)轉(zhuǎn)發(fā)面來實現(xiàn)即帶內(nèi)),路由協(xié)議一旦啟用人類很少能主動干預(yù),這種不可控導(dǎo)致了一些問題;
無法動態(tài)為所部署的業(yè)務(wù)分配所需網(wǎng)絡(luò)資源(為何以前不能分配所需?因為以前的網(wǎng)絡(luò)資源還不足夠多,現(xiàn)在隨著網(wǎng)絡(luò)設(shè)備能力增強(qiáng)帶寬只是個數(shù)字而已);大象流集中到某些鏈路導(dǎo)致網(wǎng)絡(luò)帶寬使用率不理想等;大象流超過單鏈路帶寬如果走多路徑ECMP會導(dǎo)致接收端服務(wù)器對報文重排序非常耗CPU;
這也是為何單端口帶寬一直上升的原因,從千兆到萬兆,現(xiàn)在又盛行升級到25G,然后40G/100G,后續(xù)還會再增加。
傳統(tǒng)網(wǎng)絡(luò)還有一些問題:比如各廠家堆疊基本都是各廠家自身產(chǎn)品幾個有限型號才能堆疊,這就導(dǎo)致了另一個問題,作為匯聚或核心層設(shè)備進(jìn)行HA的時候,一旦一臺設(shè)備在某種場景下觸發(fā)了BUG或問題,另一臺同型號設(shè)備的話則也會有同樣的問題,使得HA失效。
上面講了這么多,主要是說SDN出現(xiàn)的一些背景,這里簡單說下SDN的概念,SDN主要是說能夠?qū)?yīng)用和底層網(wǎng)絡(luò)轉(zhuǎn)發(fā)關(guān)聯(lián)起來,讓上層應(yīng)用控制底層數(shù)據(jù)轉(zhuǎn)發(fā),所以SDN的名稱ADN(Application Defined Network) 更符合一些;
那這就要底層轉(zhuǎn)發(fā)網(wǎng)元和管理面做一些相應(yīng)的改進(jìn),SDN有三個特征:控制轉(zhuǎn)發(fā)(邏輯)分離 ,開放的(不是開源)的編程接口 ;集中(邏輯)的網(wǎng)絡(luò)控制。所以SDN的本質(zhì)個人認(rèn)為是:
一種新型的可視化網(wǎng)絡(luò)設(shè)計架構(gòu)
- 一種網(wǎng)絡(luò)資源管理和優(yōu)化使用方式
- 一種節(jié)約資源降低網(wǎng)絡(luò)成本的技術(shù)
- 一種體現(xiàn)對網(wǎng)絡(luò)需求增速變慢的技術(shù)體現(xiàn)點(diǎn)
另外SDN不是:
- SDN不是網(wǎng)絡(luò)虛擬化或NFV ,即SDN不是軟件實現(xiàn)網(wǎng)絡(luò),
- SDN不是網(wǎng)絡(luò)設(shè)備,包括OVS和白盒交換機(jī)
- SDN不是某種網(wǎng)絡(luò)協(xié)議,包括Openflow(含TTP)
- SDN不是網(wǎng)絡(luò)的必須或主宰技術(shù) ,和其他技術(shù)一樣,需求推動
- SDN不是純粹的網(wǎng)絡(luò)配置工具
- SDN不是純粹的網(wǎng)絡(luò)運(yùn)維工具
- SDN不是軟件網(wǎng)元替代硬件網(wǎng)元
- SDN不是提升轉(zhuǎn)發(fā)面網(wǎng)元本身性能的工具,只是網(wǎng)絡(luò)資源使用方式的改變,換句話說SDN只是換了種對網(wǎng)元的使用方式,將其自身的最佳性能得到了發(fā)揮;所這點(diǎn)來講,對于苛求或批判SDN方案(尤其是Neutron結(jié)合SDN)提升網(wǎng)元自身轉(zhuǎn)發(fā)性能的同學(xué),只能說還不理解SDN或者還不理解網(wǎng)絡(luò)
SDN的各向接口:
- 北向暫時沒有標(biāo)準(zhǔn),各家控制器基本都有自己的接口,這點(diǎn)北向標(biāo)準(zhǔn)還不如Neutron
- 南向:Openflow,Netconf,BGP、OVSDB及思科的Openflex等等(一款控制器可以同時使用多種南向協(xié)議)
- 東西向:BGP等等(有個SDN東西向的Draft:SDNi,還有篇paper提出了East-west bridge)
- SDN級聯(lián),包括了SDN的南向和東西流流量,暫時未看到標(biāo)準(zhǔn)
這里著重說下最后一點(diǎn),Openstack的L版添加了Port的Qos特性API,另外企業(yè)網(wǎng)尤其是中小企業(yè)的小規(guī)模網(wǎng)絡(luò)會不會從SDN里收益?大家一致的印象是只有大規(guī)模設(shè)備用SDN才劃算,對此個人觀點(diǎn)是找到合適的應(yīng)用場景SDN一樣可以讓小規(guī)模網(wǎng)絡(luò)收益,包括企業(yè)辦公網(wǎng)等。
說完了SDN也順便聊下NFV,NFV自身是說為了解決當(dāng)前hardware-based情形下,隨著應(yīng)用更新的加快,硬件跟不上應(yīng)用需求的步伐,導(dǎo)致硬件設(shè)備壽命縮短導(dǎo)致浪費(fèi),需要對存儲、計算等所需的網(wǎng)絡(luò)功能進(jìn)行虛擬化,來加快創(chuàng)新,并節(jié)省對硬件設(shè)備的投資。
個人理解,NFV是英特爾等CPU廠商用X86和虛擬化廠商用虛擬化技術(shù)進(jìn)軍網(wǎng)絡(luò)研發(fā)領(lǐng)域的一種策略;首先,上層應(yīng)用對網(wǎng)絡(luò)所需的特性并沒有那么多的個性化定制,尤其是隨著先交換機(jī)白盒智能化和存儲設(shè)備的白盒化,應(yīng)對創(chuàng)新需求只是這些廠商對運(yùn)營商的單方說辭;其次,無論NFV在運(yùn)營商的產(chǎn)品化形態(tài)如何(VMaas就是一種形態(tài)),運(yùn)營商對網(wǎng)絡(luò)設(shè)備的需求都是不可少的,但NFV對傳統(tǒng)網(wǎng)設(shè)備商還是有了一定的智能化促;
最后英特爾等也同時硬件設(shè)備領(lǐng)域沒有放手,通過收購FM研發(fā)硬件交換芯片,并結(jié)合X86推出基于FM10000的ServerSwtich,使其網(wǎng)絡(luò)方面虛擬網(wǎng)元和硬件網(wǎng)元優(yōu)化一體化解決方案的戰(zhàn)略內(nèi)容之一。所以NFV可謂是“項莊舞劍,意在沛公”,Openstack里也越來越多的NFV特性比如Service chain方面的支持。
現(xiàn)在來看云計算方面的內(nèi)容,云計算中大二層需求、網(wǎng)絡(luò)虛擬導(dǎo)流所用隔離技術(shù)包括Vlan Mpls Vxlan Nvgre STT Geneve 等,Vxlan逐漸 成為趨勢 ,但OVS 2.4.0版本Geneve支持basic 版本;所以這里拋出一個問題,現(xiàn)有技術(shù)的規(guī)模還是受限,如何做到隔離域有無限大的可能哪?
因為現(xiàn)在來看可能IPV6的地址數(shù)目128比特和STT在內(nèi)隔離域數(shù)目最多為64bit,但是終將還是個固定值,相對于將來的星球間宇際通信來說,數(shù)目還是少的可憐(當(dāng)然星球間通信是不是以太網(wǎng)或IP還是未知數(shù))。
然后回到分享開頭所提及的虛擬機(jī)技術(shù),個人觀點(diǎn)現(xiàn)在KVM/XEN/Hyper-v/ESX等都是半虛擬化,實現(xiàn)了VM跨主機(jī)的才是真正意義上的虛擬化,虛擬化方面包括現(xiàn)在盛行的Docker 引入的網(wǎng)絡(luò)管理組件都是僅是用了已有的網(wǎng)絡(luò)技術(shù),對網(wǎng)絡(luò)技術(shù)的本質(zhì)創(chuàng)新都沒有做出貢獻(xiàn),僅僅是在使用樣式上有了翻新;
但這些確實促進(jìn)了技術(shù)的發(fā)展,包括在計算服務(wù)器通用后的存儲和網(wǎng)絡(luò)的白盒化,網(wǎng)絡(luò)方面也促進(jìn)了服務(wù)器網(wǎng)卡虛擬化(SR-IOV等)和交換機(jī)的虛擬化(交換芯片的虛擬化和端口hair-pin等特性),服務(wù)器網(wǎng)卡收發(fā)包方面DPDK的出現(xiàn)也有一定的影響。
這里才到今天真正的主題里說下Neutron相關(guān)的內(nèi)容,Neutron是什么?
- Openstack開源社區(qū)網(wǎng)絡(luò)配置管理組件
- Neutron的網(wǎng)絡(luò)服務(wù)包括L2-L7
- Neutron只是管理配置VM所用網(wǎng)絡(luò)
- Neutron有很多SDN控制器作為plugin
Neutron的主要功能:L2功能(Port、Subnet、Network、Qos、安全組等)、L3(Router/DVR、DCHP等)、L4-L7(FWaas、LBaas、VPNaas、DNSaas-Designate等)。對應(yīng)的網(wǎng)絡(luò)功能底層網(wǎng)元實現(xiàn)來看,Port對應(yīng)VM掛載的VNIC相應(yīng)TAP/TUN設(shè)備,Subnet只是一個IP Pool的數(shù)據(jù)集合,Network則要對應(yīng)分配網(wǎng)絡(luò)類型和相應(yīng)隔離域ID,Qos功能可以基于OVS來實現(xiàn),安全組最初基于linux bridge上的iptables,這種有狀態(tài)的規(guī)則前面也提及現(xiàn)在可以基于OVS來實現(xiàn)了;
L3上Router實現(xiàn)是通過linux的Namespace,不過Dragonflow則是通過OpenvSwitch的流表,DHCP和DNS服務(wù)最初是通過Dnsmasq;L4-L7的服務(wù)開源實現(xiàn)方案里,F(xiàn)Waas是通過Router里的Iptables,LBaas是通過Haproxy,VPNaas則是Openswan,當(dāng)然現(xiàn)在很多設(shè)備廠商比如Juniper、思科、華為和F5將L4-L7的底層實現(xiàn)換成了自己的設(shè)備。
Neutron的機(jī)制是通過plugin/driver/agent等方式實現(xiàn)不同底層網(wǎng)元實現(xiàn)的集成,plugin里L(fēng)2-L3稱之為core plugin,L4-L7成為service plugin;driver是同一個plugin下替換不同網(wǎng)元實現(xiàn)的方式,而agent是部署在底層網(wǎng)元一側(cè)的相應(yīng)Driver代理,來對網(wǎng)元轉(zhuǎn)換參數(shù)并下發(fā)到網(wǎng)元里;
Dragonflow/OVN是Neutron比較新的Core plugin,不過都想將service plugin也統(tǒng)一起來。Neutron的未來,這里借用下華為同事章宇(sina微博:一棹凌煙)的話說:將來只剩下Neutron的北向API及Neutron server;這點(diǎn)比較贊同;
Openstack本來只是一個框架,底層實現(xiàn)應(yīng)該讓云平臺廠商來定制化。
Neutron畢竟是份開源代碼,現(xiàn)有實現(xiàn)ML2等有比較多的缺點(diǎn):
- 過多的臃腫代碼,維護(hù)和修改比較困難
這么多plugin,這么多種類plugin,也是醉了
- 系統(tǒng)工程師思維搞網(wǎng)絡(luò),軟件才可控
無法理解和集成硬件是其永遠(yuǎn)的痛,設(shè)備商的加入才走向網(wǎng)絡(luò)正規(guī)
- 開源實現(xiàn)思路,實現(xiàn)優(yōu)先,產(chǎn)品化次之
企業(yè)廠商產(chǎn)品化道路多舛,有礙Neutron社區(qū)發(fā)展
- 多方利益博弈,規(guī)劃道路多變
主張所用技術(shù)經(jīng)常被顛覆,積累容易付諸東流
Neutron的演進(jìn):
- Nova-network是前身
- Core plugin完成L2/L3/DHCP等基本功能
- Service plugin完成L4~L7功能升級
- DVR等實現(xiàn)系統(tǒng)層次的HA可用
- Neutron結(jié)合SDN實現(xiàn)網(wǎng)絡(luò)可控為終極形態(tài) ,Neutron有很多SDN控制器作為plugin
這里提及下DVR,解決同路由下跨網(wǎng)段的三層?xùn)|西流量卸載 ,減輕集中式網(wǎng)絡(luò)節(jié)點(diǎn)負(fù)擔(dān) ,因為同網(wǎng)段二層通信本來就不經(jīng)過網(wǎng)絡(luò)節(jié)點(diǎn),DVR的實現(xiàn)軟硬都可以,并不只有OVS等虛擬網(wǎng)元才能實現(xiàn)。