早在2015年,品高云正式上線了BingoSDN v3.0版本,并成為品高云操作系統(tǒng)(BingoCloudOS)V6.0的云網(wǎng)絡(luò)核心組件。至今三年多的時(shí)間里,BingoSDN v3.0服務(wù)了各行各業(yè)不同的應(yīng)用系統(tǒng),在包括政府、公安、軌道交通、金融、軍工以及教育等行業(yè)發(fā)揮了其重要作用。聯(lián)系客服小表妹(VX:pingaoyunzzm)了解更多。
不夸張地說(shuō),BingoSDN v3.0擁有著非常出色的性能,它的虛擬網(wǎng)絡(luò)性能損耗比只占物理服務(wù)器的2%,同時(shí)可支持創(chuàng)建13億個(gè)VPC,并且經(jīng)過(guò)了權(quán)威的第三方測(cè)試……(之前我們已經(jīng)分享了很多關(guān)于BingoSDN v3.0的內(nèi)容,感興趣的讀者可以到通過(guò)文末的相關(guān)閱讀深入了解)。BingoSDN v3.0的成功讓我們對(duì)SDN云網(wǎng)絡(luò)的發(fā)展之路充滿信心,但同時(shí)也給BingoSDN v4.0帶來(lái)更高的要求和更大的挑戰(zhàn)。在BingoSDN v4.0的設(shè)計(jì)之初,我們就在反復(fù)地思考:云網(wǎng)絡(luò)的未來(lái)將會(huì)怎樣發(fā)展?未來(lái)的挑戰(zhàn)是什么?
經(jīng)過(guò)了2年多的打磨,BingoSDN v4.0終于伴隨著B(niǎo)ingoCloudOS V8.0的迭代正式上線投入使用,并且已經(jīng)在多個(gè)行業(yè)用戶中穩(wěn)定運(yùn)行。設(shè)計(jì)一個(gè)滿意的作品真的來(lái)之不易,BingoSDN v4.0的每一條血管、每一個(gè)毛孔、每一個(gè)細(xì)胞都是我們親手打造的,希望通過(guò)下文,可以分享我們對(duì)新一代SDN的一些思考。
本期大咖 >>
林冬藝
從SDN概念誕生以來(lái)一直在關(guān)注和研究,任職于BingoCloud SDN云網(wǎng)絡(luò)團(tuán)隊(duì),主要負(fù)責(zé)云網(wǎng)絡(luò)、云網(wǎng)絡(luò)安全、NFV、高性能云網(wǎng)絡(luò)等的架構(gòu)與設(shè)計(jì)。目前,BingoCloudOS產(chǎn)品的SDN相關(guān)功能主要來(lái)自林冬藝所在團(tuán)隊(duì) 。
一、跨地域多中心SDN控制器容災(zāi)問(wèn)題
隨著云計(jì)算的不斷普及,受物理數(shù)據(jù)中心的地理?xiàng)l件限制,一云多中心成為云計(jì)算發(fā)展的必經(jīng)過(guò)程,此時(shí),云網(wǎng)絡(luò)跨地域容災(zāi)則是我們首先要面對(duì)的問(wèn)題?;诖松钊胨伎?,我們能否在BingoSDN v4.0中做到整個(gè)云的計(jì)算節(jié)點(diǎn)在只剩下一臺(tái)服務(wù)器的情況下也能正常工作?如果實(shí)現(xiàn)這一點(diǎn),云網(wǎng)絡(luò)的容災(zāi)能力將可以不止提升一個(gè)級(jí)別。
二、新型應(yīng)用架構(gòu)帶來(lái)的沖擊
Docker、K8S、FaaS(Function as a Service)概念的興起,使得網(wǎng)絡(luò)的地址空間快速擴(kuò)張。在過(guò)去虛擬機(jī)的時(shí)代,一臺(tái)物理服務(wù)器能虛擬出30臺(tái)虛擬機(jī)就已經(jīng)很了不起了,但是現(xiàn)在僅憑一臺(tái)物理服務(wù)器就虛擬出上千個(gè)Docker也絲毫都不夸張。同時(shí),F(xiàn)aaS的到來(lái)對(duì)網(wǎng)絡(luò)的響應(yīng)速度提出了更高的要求:在高并發(fā)情況下,要想一秒內(nèi)啟動(dòng)上百臺(tái)Docker,在函數(shù)執(zhí)行完成后瞬間釋放,對(duì)云網(wǎng)絡(luò)的彈性響應(yīng)速度要求極嚴(yán)格,這需要SDN控制器以最快的速度、最短的傳輸距離和最高效的處理方式完成首包的處理下發(fā)流表。
三、黑盒網(wǎng)絡(luò)問(wèn)題
我們從BingoSDN v3.0開(kāi)始就一直堅(jiān)持使用標(biāo)準(zhǔn)的Openflow協(xié)議,并且沒(méi)有對(duì)協(xié)議本身做太多的修改,這令我們的運(yùn)維同事倍感壓力。因?yàn)橐郧皞鹘y(tǒng)云網(wǎng)絡(luò)Bridge、VLAN、Route、IPtables四件套走天下的模式,在SDN云網(wǎng)絡(luò)面前徹底沒(méi)用了——在SDN云網(wǎng)絡(luò)中這些都只是一條一條看不懂的流表規(guī)則,而且流表規(guī)則與VPC組網(wǎng)邏輯沒(méi)有任何聯(lián)系。就是這樣的黑盒網(wǎng)絡(luò),讓許多運(yùn)維同事需要不少時(shí)間來(lái)適應(yīng)。當(dāng)然,我們做了很多運(yùn)維的培訓(xùn)工作以及運(yùn)維工具來(lái)幫助他們,不過(guò)我們還是希望BingoSDN v4.0能徹底解決這樣的問(wèn)題,讓流表一眼就能看明白。
四、網(wǎng)絡(luò)隔離不再只是Subnet
Subnet的隔離方式是我們普遍熟悉的,但不知道大家有沒(méi)有發(fā)現(xiàn)它有一個(gè)弊端:同一個(gè)Subnet地址是連續(xù)的。我們?cè)谙耄懿荒軐?shí)現(xiàn)192.168.1.1-3-5-7-是一個(gè)Subnet,而192.168.1.2-4-6-8是一個(gè)Subnet,并且它們的VLAN或者VXLAN是相同ID,還能通過(guò)策略授權(quán)指定地址呢?
這樣設(shè)計(jì)并不是在玩雜技,而是因?yàn)槲覀儸F(xiàn)實(shí)的用戶就有很多這樣的需求,尤其是政務(wù)云用戶。在私有云和混合云中經(jīng)常存在專(zhuān)線復(fù)用隔離或者特定安全事件的及時(shí)隔離等情況,這種需求往往非常麻煩:只能通過(guò)物理交換機(jī)的ACL策略完成,還有可能遺留很多隱患。如果在BingoSDN v4.0中可以像安全組一樣實(shí)現(xiàn)這些,將使得網(wǎng)絡(luò)隔離的粒度更細(xì),并且更加友好。
▼
最終我們還是把BingoSDN v4.0做出來(lái)了,它完美解決了上述的問(wèn)題和挑戰(zhàn),并且現(xiàn)在已經(jīng)在包括公安行業(yè)、金融行業(yè)和傳媒行業(yè)等用戶中上線使用。我們甚至還在設(shè)計(jì)與開(kāi)發(fā)的過(guò)程中做出了很多新鮮的功能,這也算是BingoSDN v4.0的一些小彩蛋了。
五、分布式SDN控制器模型
跨地域多中心容災(zāi)和新型應(yīng)用架構(gòu)對(duì)網(wǎng)絡(luò)響應(yīng)速度有著很高的要求,我們認(rèn)為迫切需要把BingoSDN v3.0的集群模型演進(jìn)成分布式模型,這是BingoSDN v4.0最大的變革:在每一臺(tái)計(jì)算節(jié)點(diǎn)上部署一個(gè)SDN控制器,本地SDN控制器僅負(fù)責(zé)控制本地的虛擬交換機(jī),SDN控制器節(jié)點(diǎn)之間通過(guò)消息隊(duì)列同步網(wǎng)絡(luò)位置與VPC配置信息,這樣我們就踏上分布式的道路了。
在消息隊(duì)列的選型上,我們花費(fèi)了大量的精力。我們希望實(shí)現(xiàn)的是一個(gè)完全分布式(每個(gè)計(jì)算節(jié)點(diǎn)都是消息隊(duì)列節(jié)點(diǎn))的消息隊(duì)列,因此Kafka、Redis等集群模式的消息隊(duì)列不適合我們這種完全分布式的模型。如果消息隊(duì)列也成為故障單點(diǎn),那就不是真正意義上的分布式了。而RabbitMQ的網(wǎng)絡(luò)分區(qū)以及在分布式的場(chǎng)景之下暴露出的非常多的問(wèn)題,讓我深刻地明白為什么OpenStack會(huì)在最新版里面把RabbitMQ替換掉。
我們認(rèn)為,消息隊(duì)列應(yīng)該更輕、更穩(wěn)定、更高效。我們的目標(biāo)是即使宕機(jī)到只剩一臺(tái)計(jì)算節(jié)點(diǎn)時(shí)它的網(wǎng)絡(luò)依舊正常,我們不想作出妥協(xié)。兩個(gè)月之后,我們基于ZeroMQ的Socket機(jī)制成功重新定義了一套消息隊(duì)列模型,這套模型非常輕量級(jí),而且很快。有趣的是消息持久化的機(jī)制結(jié)合了云平臺(tái)能力,讓它變得有點(diǎn)像迅雷P2P機(jī)制,所以經(jīng)常被同事們調(diào)侃這是SDN迅雷。那天以后全世界都優(yōu)雅了很多——SDN控制器和虛擬交換機(jī)更近了,它們通過(guò)Unix Socket進(jìn)行通訊,哪怕物理網(wǎng)絡(luò)中斷也不會(huì)造成影響,本地通訊和輕負(fù)載還令網(wǎng)絡(luò)響應(yīng)速度有了質(zhì)的飛躍。
六、SDN可視化運(yùn)維
可視化運(yùn)維的動(dòng)態(tài)拓?fù)鋱D
其中一條流表的分析視圖
我們團(tuán)隊(duì)從來(lái)不按套路出牌,所以我們打造的可視化運(yùn)維平臺(tái)可以看到每一條流表,包括歷史流表,也可以了解每條流表推送的原因是什么,比方說(shuō),外部網(wǎng)絡(luò)訪問(wèn)虛擬機(jī)、虛擬機(jī)發(fā)起ARP尋址、安全組沒(méi)有授權(quán)攔截等等。后續(xù)我們還能做到:分析這條流表是SDN控制器的哪一個(gè)模塊、哪一行代碼計(jì)算出來(lái)的流表;還可以看到整個(gè)云網(wǎng)絡(luò)的邏輯拓?fù)渑c物理拓?fù)?。我們相信,未?lái)SDN可視化運(yùn)維會(huì)成為BingoSDN產(chǎn)品的一個(gè)爆點(diǎn)。
七、微隔離
微隔離的功能實(shí)現(xiàn)其實(shí)并不難,因?yàn)槲覀儧](méi)有依賴VLAN或者VXLAN的隔離方式,純粹的標(biāo)準(zhǔn)Openflow流表使得我們控制網(wǎng)絡(luò)的粒度可以精細(xì)到傳輸層的端口。只不過(guò)沒(méi)想到的是,當(dāng)我們剛把測(cè)試版本做出來(lái)就有了用戶需求,所以我們?cè)贐ingoSDN v3.0上也支持微隔離功能,目前也已經(jīng)有部分用戶在使用了。微隔離也算是BingoSDN v4.0的一個(gè)排頭兵吧。
八、寫(xiě)在最后
BingoSDN v4.0目前已經(jīng)正式上線了??偟膩?lái)說(shuō),相對(duì)于BingoSDN v3.0版本,新版本由集中式架構(gòu)轉(zhuǎn)換為控制器下沉至云節(jié)點(diǎn)的分布式架構(gòu),網(wǎng)絡(luò)控制處理能力得到了橫向擴(kuò)展。另外,BingoSDN v4.0增加了對(duì)微隔離技術(shù)的支持,統(tǒng)一子網(wǎng)和安全組可以進(jìn)行二次隔離;還可通過(guò)SDN仲裁機(jī)制保證網(wǎng)絡(luò)可用性,支持跨IDC容災(zāi)以及超大規(guī)模組網(wǎng)。基于BingoSDN v4.0的可視化運(yùn)維平臺(tái),排障更輕松,有效幫助用戶提升運(yùn)維質(zhì)量和效率。
問(wèn)題和挑戰(zhàn)從來(lái)不會(huì)讓我們停下腳步,而是激勵(lì)我們不斷向前。未來(lái),我們將繼續(xù)升級(jí)完善BingoSDN,為SDN云網(wǎng)絡(luò)的發(fā)展貢獻(xiàn)一份力量,為用戶帶來(lái)更優(yōu)質(zhì)的服務(wù)與產(chǎn)品使用體驗(yàn)。