編者按:Neutron是OpenStack提供網(wǎng)絡(luò)服務(wù)的專用組件,雖然目前其功能已相對(duì)比較完備,但還存在一些不足之處,需要結(jié)合SDN架構(gòu)來(lái)解決部分網(wǎng)絡(luò)部署難題。本文分享了相應(yīng)的實(shí)踐思路。
OpenStack開(kāi)源社區(qū)為云計(jì)算提供了最大平臺(tái),有多個(gè)組件分別實(shí)現(xiàn)計(jì)算(Nova)、存儲(chǔ)(Cinder/Swift)、監(jiān)控(Ceilometer)和網(wǎng)絡(luò)(Neutron)等服務(wù)。隨著Neutron逐漸成熟,越來(lái)越多的云計(jì)算廠家開(kāi)始選用Neutron組件,并且有大量網(wǎng)絡(luò)設(shè)備商和云計(jì)算方案廠商為Neutron提供硬件設(shè)備和網(wǎng)絡(luò)方案,使得Neutron的發(fā)展倍受關(guān)注。
Neutron的華麗
云計(jì)算改變了用戶的業(yè)務(wù)部署方式,從而幫助用戶節(jié)省設(shè)備和運(yùn)營(yíng)成本。例如,類(lèi)似12306的火車(chē)票業(yè)務(wù),它具有非常明顯的時(shí)節(jié)性,平常的業(yè)務(wù)流量并不是特別大,但到了節(jié)假日業(yè)務(wù)量會(huì)猛增。如果采用傳統(tǒng)的方式部署硬件設(shè)備,勢(shì)必會(huì)在業(yè)務(wù)流量少時(shí)造成硬件設(shè)備資源的浪費(fèi),而在業(yè)務(wù)流量猛增時(shí)又不能及時(shí)擴(kuò)展硬件資源。但如果在云上運(yùn)營(yíng),則可以在業(yè)務(wù)流量少時(shí)減少云主機(jī)和網(wǎng)絡(luò)帶寬等資源,在業(yè)務(wù)流量猛增時(shí)快速部署大量虛擬機(jī),為新業(yè)務(wù)量提供服務(wù)。理想的方式是通過(guò)SDS(Software Defined Storatge)和SDN(Software Defined Network)等方式,讓業(yè)務(wù)(相當(dāng)于SDN中的App,即Software)在激增時(shí),自動(dòng)調(diào)用相關(guān)接口,申請(qǐng)并使用滿足其需求的計(jì)算資源、存儲(chǔ)資源和網(wǎng)絡(luò)資源。其中SDN是目前網(wǎng)絡(luò)和云計(jì)算領(lǐng)域中非?;馃岬木W(wǎng)絡(luò)架構(gòu),它結(jié)合NFV(Network Function Virtualization)等相關(guān)技術(shù),掀起了一場(chǎng)顛覆傳統(tǒng)網(wǎng)絡(luò)的革命。圖1是Neutron的拓?fù)涫疽鈭D。
圖1 Neutron拓?fù)涫纠龍D
Neutron自身無(wú)法克服的難題
Neutron中提供了使用虛擬路由器實(shí)現(xiàn)租戶網(wǎng)絡(luò)的互通和隔離、安全組(Security Group)、防火墻(FWaas)、負(fù)載均衡(LBaas)和虛擬專用網(wǎng)(VPNaas)等服務(wù)。在Neutron網(wǎng)絡(luò)中還可以采用VMaas(VM as a Service)的方式提供一些極易創(chuàng)新的網(wǎng)絡(luò)服務(wù),包括Neutron中不支持的接入VPN等功能。雖然Neutron的功能已經(jīng)相對(duì)比較完備,但還存在一些不足之處,這也是為何Neutron需要SDN架構(gòu)的部分原因。
有很多的網(wǎng)絡(luò)功能無(wú)法滿足部署需求,例如基于VM網(wǎng)卡或IP的限速、基于路由的限速以及基于租戶的限速等網(wǎng)絡(luò)需求,至今仍沒(méi)有完善的解決方案,而這些在實(shí)際物理網(wǎng)絡(luò)中部署都是極其常見(jiàn)的功能。曾經(jīng)有人提出用Libvirt對(duì)虛擬機(jī)網(wǎng)卡的inbound average和outbound average做出入方向的限速,但我認(rèn)為這個(gè)方案非常不妥。部署該方案時(shí)是通過(guò)設(shè)置flavor的quota:vif_inbound_average和quota:vif_outbound_average來(lái)實(shí)現(xiàn)的,會(huì)導(dǎo)致對(duì)VM的所有網(wǎng)卡都做限制。而且該方案不僅限制了南北流量,還限制了東西流量,是不可用的方案。Qos功能不只是限速,還有很多諸如隊(duì)列調(diào)度、流控等方面的Qos需求,當(dāng)有業(yè)務(wù)需要時(shí),Neutron卻無(wú)從提供滿足需求的支持。
網(wǎng)絡(luò)節(jié)點(diǎn)存在的單點(diǎn)故障問(wèn)題至今依然沒(méi)有完善的解決方案,DVR(Distributed Virtual Routing,分布式路由)對(duì)虛擬路由器的HA方案也存在很大的缺陷。而與傳統(tǒng)交換機(jī)(甚至與路由器)相比,網(wǎng)絡(luò)節(jié)點(diǎn)的帶寬能力還存在一定差距,尤其是對(duì)單路由帶寬沒(méi)有分流方案,一旦帶寬超過(guò)虛擬路由器的帶寬能力則無(wú)能為力。
對(duì)Neutron網(wǎng)絡(luò)的監(jiān)控,雖然可以通過(guò)Ceilometer組件使用Neutron的neutron-meter-agent進(jìn)行采集,但除了Ceilometer組件存儲(chǔ)采集數(shù)據(jù)持久化性能方面的問(wèn)題,還存在很多監(jiān)控項(xiàng)無(wú)法采集到的問(wèn)題。
在Neutron中經(jīng)常使用Open vSwitch虛擬交換機(jī),而其在計(jì)算節(jié)點(diǎn)和網(wǎng)絡(luò)節(jié)點(diǎn)的虛擬交換機(jī)都有穩(wěn)定性和性能方面的限制,尤其是使用VXLAN等隔離方式時(shí),報(bào)文的封裝和解封裝很可能成為網(wǎng)絡(luò)瓶頸。
圖2 HELIUM版本OpenDaylight架構(gòu)
SDN讓Neutron更強(qiáng)大
除了上述問(wèn)題,Neutron還有很多實(shí)際部署難題需要處理。而如果采用SDN架構(gòu)的話,這些問(wèn)題將會(huì)有相當(dāng)一部分得到解決。假設(shè)SDN控制器南向采用了OpenFlow協(xié)議,那么就能很容易控制流量轉(zhuǎn)發(fā)以實(shí)現(xiàn)不同虛擬路由器的流量分擔(dān),通過(guò)goto tables(或者“goto entry”)來(lái)實(shí)現(xiàn)數(shù)據(jù)流按照OpenFlow規(guī)則進(jìn)行的基于IP、虛擬路由器甚至租戶的限速功能。那么Neutron在SDN架構(gòu)中是如何部署的呢?大概有三種方式部署(這里說(shuō)的Neutron多指neutron-server)。
Neutron as App:將Neutron作為SDN中申請(qǐng)網(wǎng)絡(luò)資源的App,與使用網(wǎng)絡(luò)資源的VM上部署的用戶業(yè)務(wù)聯(lián)動(dòng),實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)資源的控制。這種方式需要替換Neutron的底層網(wǎng)絡(luò)架構(gòu),繼而Neutron通過(guò)SDN控制器控制網(wǎng)絡(luò)資源。如果該方案只用Neutron的API,那么Neutron之外的功能還是無(wú)法使用,只能再額外調(diào)用SDN控制器的API,這樣就需要維護(hù)兩套API在兼容條件下配合使用。這樣,讓網(wǎng)絡(luò)資源的申請(qǐng)者neutron-server與網(wǎng)絡(luò)資源的使用者VM里的App進(jìn)行聯(lián)動(dòng)。
Neutron as Controller:將Neutron作為SDN控制器的一部分,VM上部署的用戶業(yè)務(wù)直接或間接調(diào)用Neutron的接口,來(lái)申請(qǐng)和使用底層網(wǎng)絡(luò)資源。這種方案里用戶的業(yè)務(wù)只需要調(diào)用SDN控制器的API,沒(méi)有API兼容性問(wèn)題,底層網(wǎng)絡(luò)可以替換也可以不替換,但部署時(shí)需要考慮Neutron和SDN控制器的對(duì)等關(guān)系。
Neutron as Underlay:將Neutron作為底層承載網(wǎng)絡(luò),為SDN控制器提供南向接口,VM上部署的用戶業(yè)務(wù)直接或間接使用SDN控制器來(lái)申請(qǐng)和使用網(wǎng)絡(luò)資源,然后SDN控制器再調(diào)用Neutron接口來(lái)做底層網(wǎng)絡(luò)資源的調(diào)度與分配。這種方案部署容易,但僅用Neutron原來(lái)的底層網(wǎng)絡(luò)結(jié)構(gòu)和API,需要對(duì)Neutron做開(kāi)發(fā)才能提供所需求的新功能。
三種方式各有優(yōu)缺點(diǎn),需要結(jié)合自身的業(yè)務(wù)和廠家自身的技術(shù)積累進(jìn)行選擇,因?yàn)镾DN本身是一種新型的網(wǎng)絡(luò)架構(gòu),如果結(jié)合NFV的理念,使用白牌交換機(jī)等方式,那么就更能解除對(duì)設(shè)備商家的綁定。
結(jié)束語(yǔ)
云計(jì)算是將來(lái)數(shù)據(jù)中心提供服務(wù)的新模式,也是IT技術(shù)變革的趨勢(shì)之一。據(jù)估計(jì)網(wǎng)絡(luò)研發(fā)的工作量會(huì)占有云計(jì)算研發(fā)工作量的一半以上,這也是云計(jì)算技術(shù)難點(diǎn)的突破之處。目前比較有名的SDN控制器OpenDaylight(圖2)、OpenContrail和Ryu等,都支持Neutron與SDN架構(gòu)結(jié)合。希望SDN技術(shù)能讓云計(jì)算的網(wǎng)絡(luò)技術(shù)更優(yōu)雅地提供難題的解決方案,在將來(lái)的云計(jì)算網(wǎng)絡(luò)之路上,大放光彩。