SDN解決方案選擇:OpenFlow、虛擬機(jī)和OpenStack

責(zé)任編輯:editor005

2015-04-28 14:23:40

摘自:51CTO

SDN是一個(gè)對(duì)現(xiàn)有網(wǎng)絡(luò)考慮了兼容性的框架,博文博主認(rèn)為,如果結(jié)合具體的業(yè)務(wù)需求,將OpenFlow的規(guī)則利用起來(lái),必能給客戶帶來(lái)收益,給云計(jì)算、設(shè)備商和芯片商等企業(yè)帶來(lái)發(fā)展的機(jī)會(huì)和激烈的競(jìng)爭(zhēng)。

【前言】

SDN是一個(gè)對(duì)現(xiàn)有網(wǎng)絡(luò)考慮了兼容性的框架,博文博主認(rèn)為,如果結(jié)合具體的業(yè)務(wù)需求,將OpenFlow的規(guī)則利用起來(lái),必能給客戶帶來(lái)收益,給云計(jì)算、設(shè)備商和芯片商等企業(yè)帶來(lái)發(fā)展的機(jī)會(huì)和激烈的競(jìng)爭(zhēng)。同時(shí)鑒于OpenFlow的很多問(wèn)題,作者認(rèn)為其可能僅是一種過(guò)渡形態(tài)的曇花一現(xiàn)。以下為原文:

SDN解決方案選擇:OpenFlow、虛擬機(jī)和OpenStack

前面說(shuō)了很多傳統(tǒng)交換機(jī)的流程以及OpenFlow交換機(jī)的內(nèi)容,并結(jié)合常用的網(wǎng)絡(luò)功能對(duì)比了二者的差異。但是需要明白的是,OpenFlow交換機(jī)就是OpenFlow交換機(jī),如果用OpenFlow交換機(jī)不是結(jié)合SDN的方式來(lái)使用,而是用其實(shí)現(xiàn)傳統(tǒng)的基于MAC的二層轉(zhuǎn)發(fā)或者基于IP的三層轉(zhuǎn)發(fā),那么就沒(méi)有必要折騰了,何必哪?費(fèi)力費(fèi)錢還沒(méi)有收益。尤其是運(yùn)營(yíng)商,對(duì)于OpenFlow的態(tài)度,盡管他們又各種各樣的設(shè)備管理和維護(hù)問(wèn)題,但是如同他們不自研網(wǎng)絡(luò)設(shè)備,再加上錢多人懶,是不會(huì)對(duì)運(yùn)營(yíng)商網(wǎng)絡(luò)做出什么SDN方面的改進(jìn)的,除了某些項(xiàng)目名稱。 OpenFlow交換機(jī)就是基于流標(biāo)項(xiàng)的轉(zhuǎn)發(fā),可以結(jié)合SDN被用于結(jié)合業(yè)務(wù)的轉(zhuǎn)發(fā),無(wú)需考慮MAC學(xué)習(xí),無(wú)需考慮是否有路由,而是用戶或者管理員根據(jù)自己的需要來(lái)配置交換機(jī)。所以利用BMC或者M(jìn)VL的傳統(tǒng)商用交換芯片來(lái)做OpenFlow的開(kāi)發(fā),會(huì)導(dǎo)致表項(xiàng)容量小、OpenFlow標(biāo)準(zhǔn)支持不完全、對(duì)交換芯片其他處理流程組件浪費(fèi)的現(xiàn)象。

OpenFlow

像衛(wèi)峰書中講的那樣,SDN和OpenFlow關(guān)系,二者是不能劃等號(hào)的。例如OpenStack中,如果Neutron下的plugin用Linux bridge,那么這個(gè)就不是SDN了嗎?顯然答案為仍然是SDN網(wǎng)絡(luò)。SDN我理解的是一種思想,而不是一種方案或者功能。所以網(wǎng)絡(luò)很多做法都是和 SDN有著扯不清的關(guān)系,但是這個(gè)絕非像某些大的互聯(lián)網(wǎng)公司扯自己的產(chǎn)品硬跟SDN掛鉤那樣,因?yàn)樗麄兊漠a(chǎn)品開(kāi)發(fā)時(shí)研發(fā)和測(cè)試人員腦袋里連SDN的概念都沒(méi)有聽(tīng)說(shuō)過(guò),現(xiàn)在國(guó)內(nèi)互聯(lián)網(wǎng)公司和很多的設(shè)備商都還只是停留在觀望和接觸的狀態(tài),并沒(méi)有什么實(shí)質(zhì)的SDN產(chǎn)品或者方案。并且SDN并不代表完全脫離硬件,有的云計(jì)算公司對(duì)于網(wǎng)絡(luò)虛擬化中有一些硬件參與就不認(rèn)可是SDN,難道說(shuō)要全世界的人都用一臺(tái)服務(wù)器,里面的每人用的虛擬機(jī)都用虛擬端口通信才算是真的 SDN嗎?這個(gè)邏輯充滿了荒謬。SDN只是一種思想,一種站在用戶角度、站在管理員角度可以參與管理和控制網(wǎng)絡(luò)底層轉(zhuǎn)發(fā)決策需求的滿足和實(shí)現(xiàn)。底層轉(zhuǎn)發(fā)的實(shí)現(xiàn)是否是純軟件或者有多大程度的硬件參與并不重要。如果一個(gè)人堅(jiān)持這么認(rèn)為,我只能說(shuō)這個(gè)人不懂SDN。而OpenFlow交換機(jī)提供的基于流標(biāo)項(xiàng)的轉(zhuǎn)發(fā)方式,正是SDN用硬件作為底層轉(zhuǎn)發(fā)時(shí)所需要的,因此可以說(shuō)OpenFlow交換機(jī)是SDN底層用硬件實(shí)現(xiàn)的一種方式,而虛擬網(wǎng)絡(luò)里采用 OpenVswitch互通虛擬機(jī)則是用OpenFlow流表實(shí)現(xiàn)SDN思想的一種純軟件方案。

OpenFlow作為SDN底層實(shí)現(xiàn)的一個(gè)理想選擇,在轉(zhuǎn)發(fā)層面確實(shí)有很多優(yōu)勢(shì),但是個(gè)人認(rèn)為也有很多需要注意的點(diǎn):

如前文所述,將控制平面和轉(zhuǎn)發(fā)平面進(jìn)行分離,減少了控制點(diǎn),增加了控制平面的負(fù)擔(dān),需要比以往有更強(qiáng)的CPU計(jì)算能力的設(shè)備才能堪重負(fù);

SDN強(qiáng)調(diào)管理員在管理網(wǎng)絡(luò)方面的能力,這些無(wú)疑對(duì)管理員的技能和對(duì)所管理的業(yè)務(wù)熟悉度有了更高一步的要求,這點(diǎn)與網(wǎng)絡(luò)設(shè)備智能化、自動(dòng)化、傻瓜化的發(fā)展思想多少是有點(diǎn)相悖的;

OpenFlow的多表項(xiàng)為業(yè)務(wù)實(shí)現(xiàn)提供了靈活性,但是這無(wú)疑增加了設(shè)備的成本,并且為交換芯片驅(qū)動(dòng)開(kāi)發(fā)人員在軟件中記錄和維護(hù)配置表項(xiàng)、容錯(cuò)等研發(fā)工作提供相當(dāng)大的復(fù)雜度;

OpenFlow 在轉(zhuǎn)發(fā)層面相比于傳統(tǒng)方式有了很大提高,應(yīng)該是先兼容以前所有的轉(zhuǎn)發(fā)方式,但是現(xiàn)在的標(biāo)準(zhǔn)中,還有很多傳統(tǒng)轉(zhuǎn)發(fā)方式支持但是OpenFlow中不支持的,比如我要實(shí)現(xiàn)某個(gè)出端口中SIP=1.1.1.1的報(bào)文全丟棄,標(biāo)準(zhǔn)中暫時(shí)沒(méi)有出現(xiàn)匹配出端口的的內(nèi)容,希望OpenFlow標(biāo)準(zhǔn)盡快得到完善;

傳統(tǒng)交換機(jī)中還有很多非產(chǎn)生直接轉(zhuǎn)發(fā)意義或動(dòng)作方面的功能,比如流控、隊(duì)列調(diào)度、WRED等方面都要涉及交換芯片MMU,而這些OpenFlow是很難對(duì)各個(gè)廠家通過(guò)標(biāo)準(zhǔn)而統(tǒng)一的,所以O(shè)penFlow標(biāo)準(zhǔn)化方面還有很多的工作要做;

虛擬機(jī)、iptables

為了提高物理服務(wù)器CPU的利用率,出現(xiàn)了使用虛擬機(jī)的概念,這樣一臺(tái)物理設(shè)備有多臺(tái)虛擬機(jī),分別“計(jì)算”處理不同的數(shù)據(jù),如果物理服務(wù)器是多核的情況下,可以說(shuō)是真正的并行計(jì)算不同的數(shù)據(jù)。當(dāng)一臺(tái)物理機(jī)內(nèi)有很多虛擬機(jī)時(shí),虛擬機(jī)的通信和隔離就有了需求,因?yàn)榭赡茉谝慌_(tái)物理機(jī)內(nèi)的虛擬機(jī)承載著不同的業(yè)務(wù),而承載相同業(yè)務(wù)的虛擬機(jī)分布在多臺(tái)物理機(jī)上。打個(gè)比方,中國(guó)每個(gè)城市是一臺(tái)物理機(jī),每個(gè)城市里的企事業(yè)單位是不同虛擬機(jī);同一臺(tái)物理機(jī)的每個(gè)企事業(yè)單位之間是無(wú)法用自己的內(nèi)網(wǎng)直接通信的,他們必須都將內(nèi)網(wǎng)地址轉(zhuǎn)化為外網(wǎng)地址才能在公網(wǎng)上交互數(shù)據(jù);而每個(gè)企事業(yè)單位可能有很多分地,比如可能騰訊在北京有幾個(gè)地方,而在廣州、深圳和上海還有分地,所有騰訊的這些分地內(nèi)網(wǎng)都是想通的,其他企事業(yè)單位在任何處的公司里都可以通過(guò)內(nèi)網(wǎng)轉(zhuǎn)換后利用外網(wǎng)訪問(wèn)騰訊提供在公網(wǎng)的服務(wù),這個(gè)就是不同虛擬機(jī)之間的隔離和互通。如果阿里內(nèi)網(wǎng)的一臺(tái)設(shè)備,想SSH到騰訊的一臺(tái)內(nèi)網(wǎng)機(jī)器上,必須給騰訊的這臺(tái)設(shè)備賦予一個(gè)公網(wǎng)的IP,且通常情況下,從阿里這臺(tái)設(shè)備上發(fā)出的報(bào)文到達(dá)騰訊內(nèi)網(wǎng)時(shí),會(huì)通過(guò)一種功能將報(bào)文的目的IP從公網(wǎng)地址轉(zhuǎn)成騰訊的內(nèi)網(wǎng)IP地址,這種功能就是NAT。為了進(jìn)制這種現(xiàn)象的發(fā)生,騰訊的內(nèi)網(wǎng)可以通過(guò)iptables配置這臺(tái)設(shè)備進(jìn)制外網(wǎng)ssh連接。iptables是云計(jì)算中虛擬機(jī)常用的技術(shù),NAT是 iptables的一個(gè)功能子集,就像對(duì)報(bào)文丟棄是OpenFlow規(guī)則中動(dòng)作的一種一樣。而云計(jì)算是把所有相關(guān)的管理節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)進(jìn)行多虛一,看做是一個(gè)大的整體并進(jìn)行統(tǒng)一的資源管理和調(diào)度;在所有的這些物理機(jī)上的虛擬機(jī)之間的通信和隔離,有很多種實(shí)現(xiàn)方案,但從技術(shù)方案上說(shuō)基本都是二層vlan隔離或者對(duì)vlan數(shù)目要求過(guò)多時(shí)的vxlan方案及nvgre方案。拿OpenStack舉例,Neutron下面的plugin僅官方支持的就有十來(lái)種之多,還有很多非官方維護(hù)的,OVS的一出現(xiàn)就受到關(guān)注有其道理;因?yàn)樽畛跆摂M機(jī)之間的隔離是采用Linux bridge技術(shù),非常的不靈活而且配置無(wú)法模板化,對(duì)于搭建復(fù)雜的虛擬網(wǎng)絡(luò)是無(wú)法滿足的;并且對(duì)于虛擬網(wǎng)絡(luò)的調(diào)試、監(jiān)控、故障定位都是非常不便的,而且搭建復(fù)雜拓?fù)涞墓δ芤埠芏酂o(wú)法滿足;Openvswitch的出現(xiàn)解決了這些問(wèn)題,并引入了QOS、鏡像、CFM、netflow等功能,而且它還可以支持OpenFlow標(biāo)準(zhǔn),最重要的是有一套用C語(yǔ)言的開(kāi)源實(shí)現(xiàn);導(dǎo)致其在網(wǎng)絡(luò)虛擬化里得到了很大的重視。這部分內(nèi)容在論文《Extending Networking into the Virtualization Layer》和《VirtualSwitching in an Era of Advanced Edges》有非常詳細(xì)的介紹。

OpenStack

OpenStack現(xiàn)在是一個(gè)非?;鸬拈_(kāi)源社區(qū),官方有大量的資料和大牛貢獻(xiàn)代碼及文檔。但是從國(guó)內(nèi)的分享來(lái)看,大部分是基于如何搭建出某種簡(jiǎn)單的環(huán)境,尤其是網(wǎng)絡(luò)這塊如何搭建,以保證能建立虛擬機(jī)后在虛擬機(jī)內(nèi)部可以正確的訪問(wèn)各種網(wǎng)絡(luò),但是從介紹來(lái)看絕大多數(shù)的分享者對(duì)OpenStack的底層技術(shù)并不了解,甚至出現(xiàn)了兩臺(tái)云主機(jī)在兩個(gè)vlan就無(wú)法ping通的實(shí)驗(yàn)。因?yàn)榫W(wǎng)絡(luò)虛擬化在OpenStack進(jìn)行商業(yè)活動(dòng)中提供服務(wù)的重要性,每年的OpenStack會(huì)議都有大量的會(huì)議在討論網(wǎng)絡(luò)相關(guān)的技術(shù)。而此時(shí)也是SDN體現(xiàn)價(jià)值的一個(gè)重要案例。OpenStack的缺點(diǎn)已經(jīng)被各種吐槽,我個(gè)人認(rèn)為OpenStack為了獲取最廣泛的支持,采取了吸納百家的策略,就是現(xiàn)在項(xiàng)目眾多,耦合性也越來(lái)越大;最麻煩的是,對(duì)于計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)的虛擬化,它不是采用了一種經(jīng)過(guò)考慮后慎重選擇一種最有前途的然后進(jìn)行專注和持續(xù)積累的方式,而是選擇了每種技術(shù)都支持且經(jīng)過(guò)抽象封裝了一層中間層,這就導(dǎo)致的問(wèn)題是OpenStack的專注無(wú)法集中,開(kāi)發(fā)者的力量被分散,代碼需要經(jīng)過(guò)多次的封裝,自然也就效率非常低下。商業(yè)版本除了修正其固有的BUG外,還必須解決上述問(wèn)題。

VXLAN/NVGRE

VXLAN 和NVGRE的兩種方案都是為了解決大二層中Vlan ID個(gè)數(shù)不夠的問(wèn)題,除了衛(wèi)峰所述的封裝導(dǎo)致的傳輸效率降低和負(fù)載均衡受影響外,還會(huì)對(duì)硬件設(shè)備的要求上有進(jìn)一步提高,據(jù)我所知,現(xiàn)在BCM或MVL幾乎只有一兩款芯片產(chǎn)品支持,這對(duì)OpenFlow的本意來(lái)說(shuō)本身就是個(gè)挑戰(zhàn);更別說(shuō)那些通過(guò)收購(gòu)其他網(wǎng)絡(luò)公司來(lái)完善自己產(chǎn)品布局的某些企業(yè)下這些收購(gòu)后的子公司,他們的產(chǎn)品更是在SDN上沒(méi)有什么大的進(jìn)展。

從ACL中吸收了經(jīng)驗(yàn)而改進(jìn)形成的OpenFlow規(guī)則,結(jié)合現(xiàn)在盛行的SDN概念,已經(jīng)開(kāi)出了很多花朵,但是這些花朵能否最后能秋季成熟還是個(gè)未知數(shù)。但是OpenFlow確實(shí)在QOS分類、實(shí)現(xiàn)ACL的防火墻的安全功能、在現(xiàn)有網(wǎng)絡(luò)上對(duì)新協(xié)議進(jìn)行試驗(yàn)都是十分有效的。SDN是一個(gè)對(duì)現(xiàn)有網(wǎng)絡(luò)考慮了兼容性的框架,如果結(jié)合具體的業(yè)務(wù)需求,將OpenFlow的規(guī)則利用起來(lái),必能給客戶帶來(lái)收益,給云計(jì)算、設(shè)備商和芯片商等企業(yè)帶來(lái)發(fā)展的機(jī)會(huì)和激烈的競(jìng)爭(zhēng)。OpenFlow到底是會(huì)革命成功大放光彩,還是僅是一種過(guò)渡形態(tài)的曇花一現(xiàn),可能后者的概率要大一些。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)