前言
隨著云計(jì)算業(yè)務(wù)的蓬勃發(fā)展,全球資源的持續(xù)布局,對(duì)基礎(chǔ)網(wǎng)絡(luò)帶來(lái)了極大的挑戰(zhàn)。騰訊DCI超過(guò)千級(jí)節(jié)點(diǎn)中有數(shù)百臺(tái)核心設(shè)備,龐大的骨干域帶來(lái)的軟硬件資源壓力,網(wǎng)絡(luò)質(zhì)量無(wú)法很好的保障,多廠商互通、分布式協(xié)議嚴(yán)重影響了運(yùn)營(yíng)效率。
在這個(gè)背景下,我們結(jié)合騰訊“海量之道”的設(shè)計(jì)理念,在2018年上線了基于SDN集中控制和SR-TE技術(shù)實(shí)現(xiàn)的新一代DCI網(wǎng)絡(luò)——B2,網(wǎng)絡(luò)系統(tǒng)由自研SDN控制器和商用交換機(jī)搭建而成。隨著不斷的運(yùn)營(yíng)優(yōu)化和資源布局,B2網(wǎng)絡(luò)今天已經(jīng)具備了集中控制、多平面、自動(dòng)化運(yùn)營(yíng)、代碼化架構(gòu)設(shè)計(jì)等特點(diǎn),實(shí)現(xiàn)了彈性擴(kuò)展、高可用、自動(dòng)化變更等能力,當(dāng)前B2網(wǎng)絡(luò)已承載了騰訊絕大部分骨干網(wǎng)流量。本文將重點(diǎn)闡述B2網(wǎng)絡(luò)的設(shè)計(jì)理念、關(guān)鍵實(shí)現(xiàn)以及后續(xù)演進(jìn)方向。
1、外練身法,網(wǎng)絡(luò)簡(jiǎn)化
在做網(wǎng)絡(luò)系統(tǒng)架構(gòu)設(shè)計(jì)時(shí)并不是一味地將網(wǎng)絡(luò)復(fù)雜化,而是讓網(wǎng)絡(luò)保持足夠的簡(jiǎn)潔,具備海量規(guī)模的平滑擴(kuò)展能力,保證系統(tǒng)最優(yōu),大道至簡(jiǎn)。
1.1 轉(zhuǎn)控分離,協(xié)議簡(jiǎn)化
控制面。融軟件集中控制之所擅,我們選用了SDN集中控制模式,將復(fù)雜的控制面交由自主研發(fā)的SDN控制器來(lái)完成,并根據(jù)實(shí)時(shí)網(wǎng)絡(luò)狀態(tài)和業(yè)務(wù)需求,實(shí)現(xiàn)流量智能調(diào)度。
轉(zhuǎn)發(fā)面。匯設(shè)備高速轉(zhuǎn)發(fā)之所長(zhǎng),網(wǎng)絡(luò)設(shè)備只需最簡(jiǎn)單、穩(wěn)定、成熟的基礎(chǔ)特性,在提升網(wǎng)絡(luò)能力的同時(shí),最大限度降低網(wǎng)絡(luò)設(shè)備的實(shí)現(xiàn)復(fù)雜性,網(wǎng)絡(luò)協(xié)議做減法,去掉了相對(duì)復(fù)雜的L3VPN/LDP/RSVP-TE等協(xié)議,讓設(shè)備做自己更擅長(zhǎng)的事情(高速轉(zhuǎn)發(fā))。也基于此,該方案通過(guò)基于ASIC芯片的通用交換機(jī)來(lái)實(shí)現(xiàn),通過(guò)橫向可擴(kuò)展的方式替換掉價(jià)格昂貴的大型路由器,DCI網(wǎng)絡(luò)設(shè)備每100G端口建設(shè)成本得到大幅度的下降。
1.2 網(wǎng)絡(luò)分域,多平面設(shè)計(jì)
B2采用了網(wǎng)絡(luò)分域設(shè)計(jì),每一個(gè)網(wǎng)絡(luò)域都是獨(dú)立的自治域,采用相同的設(shè)計(jì)理念和技術(shù)架構(gòu),減少了單域的設(shè)備數(shù)量,極大降低了設(shè)備資源表項(xiàng)(LSP FEC ECMP)壓力。
同時(shí)遵循大系統(tǒng)小做原則,完成網(wǎng)絡(luò)多平面、SET化的設(shè)計(jì)和部署,不同平面之間沒(méi)有任何的協(xié)議與狀態(tài)信息同步,每個(gè)平面采用不同的技術(shù)方案,相互獨(dú)立性很強(qiáng),保證網(wǎng)絡(luò)高可用之外同時(shí)支持平滑擴(kuò)展和快速迭代。
2、內(nèi)修心性,融會(huì)貫通
身法的修煉賦予了網(wǎng)絡(luò)強(qiáng)健的體魄,但網(wǎng)絡(luò)的快速發(fā)展同樣離不開(kāi)心性的陶冶。隨著自研SDN控制器的持續(xù)迭代升級(jí)、架構(gòu)設(shè)計(jì)代碼化的全面鋪開(kāi),B2網(wǎng)絡(luò)也逐步走向成熟。
2.1 SDN+集中控制
最初,我們的選擇跟大多數(shù)廠商一樣,把ODL做為SDN控制器的首選。隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大、業(yè)務(wù)流量的“暴漲”,ODL過(guò)于“笨重”、主備模型、數(shù)據(jù)強(qiáng)一致性等缺點(diǎn)愈發(fā)凸顯。
隨著docker容器化技術(shù)、微服務(wù)架構(gòu)的快速發(fā)展,我們的SDN控制器也不斷地向前迭代和持續(xù)演進(jìn),去年,我們重新定義了B2網(wǎng)絡(luò),并稱(chēng)之為“SDN+”。
騰訊SDN+的設(shè)計(jì)精髓包括以下幾點(diǎn):
微服務(wù)化。通過(guò)騰訊自研tRPC框架解耦控制器內(nèi)部服務(wù),每個(gè)服務(wù)模塊均支持docker容器化發(fā)布和部署,從架構(gòu)上保證了軟件的可擴(kuò)展性和迭代效率;
統(tǒng)一資源信息管理和豐富的北向API。網(wǎng)絡(luò)資源信息均保存到騰訊云數(shù)據(jù)庫(kù),控制器通過(guò)tRPC跟管理平臺(tái)、運(yùn)營(yíng)平臺(tái)和變更平臺(tái)進(jìn)行交互。豐富的北向API給網(wǎng)絡(luò)的日常運(yùn)維和故障復(fù)盤(pán)分析帶來(lái)了極大的便利;
南向標(biāo)準(zhǔn)協(xié)議。考慮到DCI網(wǎng)絡(luò)仍在大量使用商用框式交換機(jī),控制器采用RFC規(guī)定的標(biāo)準(zhǔn)協(xié)議跟設(shè)備進(jìn)行交互,減少了異構(gòu)廠商帶來(lái)的管控復(fù)雜度;
軟件的高可用性。各服務(wù)模塊均支持雙活,軟件的升級(jí)維護(hù)業(yè)務(wù)完全不感知。
2.2 架構(gòu)設(shè)計(jì)代碼化
網(wǎng)絡(luò)設(shè)計(jì)及網(wǎng)絡(luò)運(yùn)營(yíng)中,配置完全一致化管理十分困難,網(wǎng)絡(luò)規(guī)模越大,配置更容易出現(xiàn)差錯(cuò),猶如黑盒。在配置設(shè)計(jì)時(shí),結(jié)合應(yīng)用場(chǎng)景使用業(yè)界統(tǒng)一的Yang Model加上自研的Tencent Yang構(gòu)建了抽象的配置模型,使用模塊化、抽象化的邏輯屏蔽底層廠商的差異,通過(guò)將配置代碼化,實(shí)現(xiàn)線上的配置管理;對(duì)于動(dòng)態(tài)的參數(shù),創(chuàng)造性的使用了嵌入式的Python代碼實(shí)現(xiàn)函數(shù)規(guī)則,實(shí)時(shí)地生成每臺(tái)設(shè)備的規(guī)劃實(shí)例,實(shí)現(xiàn)設(shè)計(jì)代碼化、配置線上模型化。
3、內(nèi)外兼修,打造彈性智能骨干網(wǎng)
通過(guò)內(nèi)外兼修的方式,B2具備了彈性擴(kuò)展、高可用、自動(dòng)化等特點(diǎn),把騰訊基礎(chǔ)網(wǎng)絡(luò)帶入了一個(gè)全新的高度。
3.1 彈性靈活,支持大規(guī)模擴(kuò)展
網(wǎng)絡(luò)簡(jiǎn)化,靈活擴(kuò)展結(jié)合網(wǎng)絡(luò)分域的設(shè)計(jì)原則,B2采用了骨干和城域的分域模式,實(shí)現(xiàn)了網(wǎng)絡(luò)簡(jiǎn)化,每個(gè)域采用相同的技術(shù)方案可實(shí)現(xiàn)架構(gòu)快速?gòu)?fù)制。每個(gè)網(wǎng)絡(luò)域通過(guò)多平面、SET化的理念完成設(shè)計(jì)和部署,同時(shí)結(jié)合現(xiàn)網(wǎng)的運(yùn)營(yíng)經(jīng)驗(yàn),可以帶來(lái)顯而易見(jiàn)的好處:
更小的故障域。將業(yè)務(wù)分布到越多的網(wǎng)絡(luò)平面上,單一平面或設(shè)備發(fā)生故障,對(duì)于業(yè)務(wù)的影響范圍越小。即網(wǎng)絡(luò)故障域的大小跟平面數(shù)成反比;
更靈活的拓展。將網(wǎng)絡(luò)劃分為不同的平面,平面間物理隔離,各個(gè)平面的建設(shè)擴(kuò)容相互獨(dú)立,解決工程上牽一發(fā)動(dòng)全身的難題,同時(shí)支持scale out方式進(jìn)行平面擴(kuò)展;
更穩(wěn)定的質(zhì)量。不同平面在網(wǎng)絡(luò)技術(shù)、硬件選型、工程部署上可以采用不同的方案,不會(huì)因?yàn)閱我惶匦浴⒂布确矫娴膯?wèn)題引起系統(tǒng)性風(fēng)險(xiǎn),整網(wǎng)具備更高的可靠性;
更可靠的演進(jìn)。隨著業(yè)務(wù)多樣性的發(fā)展,網(wǎng)絡(luò)需要進(jìn)行必要的更新和演進(jìn),在一個(gè)復(fù)雜的大規(guī)模網(wǎng)絡(luò)中,變化往往帶來(lái)的是運(yùn)營(yíng)的災(zāi)難。多平面的網(wǎng)絡(luò)本身具備獨(dú)立的冗余能力,可以將某一個(gè)平面在一段時(shí)間內(nèi)進(jìn)行隔離,從而零風(fēng)險(xiǎn)的進(jìn)行版本更新或架構(gòu)演進(jìn)。
標(biāo)準(zhǔn)互聯(lián),精細(xì)調(diào)度這里可能會(huì)有幾個(gè)疑問(wèn),多域之間如何互聯(lián),流量如何調(diào)度,擁塞問(wèn)題如何解決?不同域之間我們采用了平面級(jí)full mesh、設(shè)備級(jí)partial mesh的互聯(lián)方式,既保證了架構(gòu)規(guī)范的標(biāo)準(zhǔn)和對(duì)稱(chēng)性,又做到了以靈活平滑的大規(guī)模scale out擴(kuò)展。流量調(diào)度方面,控制器基于流量分析平臺(tái)的數(shù)據(jù)輸入,可實(shí)現(xiàn)域間的流量精細(xì)化調(diào)度以及平面間的流量非等價(jià)負(fù)載分擔(dān),滿(mǎn)足不同類(lèi)型業(yè)務(wù)需求的同時(shí),有效提升全網(wǎng)的鏈路利用率。
3.2 智能化,保證網(wǎng)絡(luò)高可用
集中調(diào)度基于騰訊自主研發(fā)的CSPF算法,以集中控制的模式進(jìn)行全網(wǎng)流量調(diào)度,已經(jīng)做到實(shí)時(shí)的流量調(diào)度以及分鐘級(jí)的流量擁塞控制,比過(guò)去完全依賴(lài)設(shè)備TE的效率提升5倍以上,骨干網(wǎng)鏈路的帶寬利用率提升25%以上。
差異化服務(wù)根據(jù)業(yè)務(wù)對(duì)網(wǎng)絡(luò)質(zhì)量的不同訴求,控制器定義不同的SLA等級(jí),并在設(shè)備上創(chuàng)建與之對(duì)應(yīng)的隧道;轉(zhuǎn)發(fā)流量時(shí)聯(lián)動(dòng)各業(yè)務(wù)的服務(wù)標(biāo)識(shí),輕松將業(yè)務(wù)報(bào)文“裝”到不同等級(jí)的隧道里,進(jìn)而實(shí)現(xiàn)業(yè)務(wù)流量的差異化服務(wù)。在網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),可保證核心業(yè)務(wù)優(yōu)先轉(zhuǎn)發(fā),做到核心業(yè)務(wù)不繞路,低優(yōu)先業(yè)務(wù)不丟包。
柔性可用網(wǎng)絡(luò)故障具有一定的突發(fā)性和不確定性,尤其現(xiàn)網(wǎng)承載流量的設(shè)備或鏈路出現(xiàn)突發(fā)性故障時(shí),結(jié)果很可能是災(zāi)難級(jí)的;為最大化保證業(yè)務(wù)的高可用,B2網(wǎng)絡(luò)提供了幾個(gè)關(guān)鍵能力:
控制系統(tǒng)的冗余性:控制器跨可用區(qū)多活且SET化部署,做到網(wǎng)絡(luò)控制平面的高可靠;
轉(zhuǎn)發(fā)路徑的冗余性:控制器預(yù)先為隧道計(jì)算和下發(fā)備份路徑,當(dāng)主路徑出現(xiàn)故障時(shí)流量可在百毫秒自動(dòng)切換至備路徑繼續(xù)轉(zhuǎn)發(fā),整個(gè)過(guò)程業(yè)務(wù)不感知;
逃生通道:具備平面級(jí)和設(shè)備級(jí)的TE隧道一鍵逃生能力,當(dāng)網(wǎng)絡(luò)出現(xiàn)大量TE隧道故障或系統(tǒng)級(jí)故障時(shí),能夠在秒級(jí)讓業(yè)務(wù)回到IP轉(zhuǎn)發(fā)。
3.3 自動(dòng)化,告別人工變更
配置線上化,配置自動(dòng)審計(jì)底層配置通過(guò)轉(zhuǎn)譯層實(shí)現(xiàn)了CLI命令的原子化,而上層的配置設(shè)計(jì)實(shí)現(xiàn)了標(biāo)準(zhǔn)化、模型化、代碼化,兩者一拍即合。通過(guò)代碼化的配置模型,加上轉(zhuǎn)譯層的魯班模版,實(shí)時(shí)生成運(yùn)營(yíng)變更所需的動(dòng)態(tài)變化配置,保證設(shè)備上的配置由配置模型直接生成;同時(shí)直接通過(guò)設(shè)備上的反譯,將現(xiàn)網(wǎng)配置轉(zhuǎn)義成代碼化實(shí)例并在軟件層實(shí)現(xiàn)配置的審計(jì)對(duì)賬,雙重保障確保了每一行配置與規(guī)劃定義的一致,實(shí)現(xiàn)配置自動(dòng)審計(jì),解決了大規(guī)模網(wǎng)絡(luò)中配置一致化的難題。
變更離線化+自動(dòng)化,實(shí)現(xiàn)安全高效操作控制器通過(guò)精準(zhǔn)控制路由的撤銷(xiāo)并逐步將業(yè)務(wù)流量“排干”的方式實(shí)現(xiàn)優(yōu)雅隔離,確保業(yè)務(wù)對(duì)網(wǎng)絡(luò)變更零感知;同時(shí)精準(zhǔn)控制路由的灰度發(fā)布過(guò)程,逐步把業(yè)務(wù)流量“引回來(lái)”,大大減小了變更異??赡軒?lái)的影響。
在SDN+精細(xì)化控制能力、多平面的基礎(chǔ)上,網(wǎng)絡(luò)變更平臺(tái)將多個(gè)系統(tǒng)平臺(tái)串聯(lián)起來(lái),實(shí)現(xiàn)了從優(yōu)雅隔離、灰度啟用、業(yè)務(wù)恢復(fù)、狀態(tài)檢查、自動(dòng)回滾等全流程自動(dòng)化變更,可以做到一個(gè)變更窗口內(nèi)安全的完成平面內(nèi)所有設(shè)備升級(jí),全網(wǎng)升級(jí)周期由原來(lái)的年記縮短至周記,架構(gòu)迭代效率大幅提升。
故障自愈,實(shí)現(xiàn)極簡(jiǎn)運(yùn)維立體監(jiān)控。基于管理面的fullmesh監(jiān)控,通過(guò)控制器實(shí)現(xiàn)軟件定義探測(cè)流、編排探測(cè)路由的方式覆蓋到每一個(gè)網(wǎng)絡(luò)平面、每一臺(tái)設(shè)備甚至每一條鏈路,實(shí)現(xiàn)了端到端全方位的立體監(jiān)控,當(dāng)網(wǎng)絡(luò)出現(xiàn)丟包或時(shí)延變大等異常時(shí),立體監(jiān)控會(huì)立刻感知并上報(bào)告警,實(shí)現(xiàn)秒級(jí)的故障發(fā)現(xiàn)與精準(zhǔn)的故障定位;
故障自愈。控制器根據(jù)告警上報(bào)自動(dòng)定位故障點(diǎn),觸發(fā)故障自愈操作,自動(dòng)且優(yōu)雅地隔離掉某個(gè)平面、某臺(tái)設(shè)備或某條鏈路,實(shí)現(xiàn)故障自愈。為確保隔離動(dòng)作安全有效,控制器通過(guò)自定義的邏輯判斷,如判斷剩余帶寬容量、路由一致性、多點(diǎn)故障等,保證隔離不會(huì)帶來(lái)其他影響或惡化。待立體監(jiān)控判斷故障徹底解除后,可自動(dòng)解除隔離,恢復(fù)流量。
結(jié)語(yǔ)
B2網(wǎng)絡(luò)通過(guò)彈性靈活的擴(kuò)展能力滿(mǎn)足海量的業(yè)務(wù)需求,并構(gòu)建了完善的自動(dòng)化運(yùn)營(yíng)能力,但是在不斷的迭代優(yōu)化過(guò)程中,我們意識(shí)到商用交換機(jī)系統(tǒng)逐漸成了“阻礙”B2網(wǎng)絡(luò)快速演進(jìn)的瓶頸。
過(guò)去幾年騰訊在骨干網(wǎng)領(lǐng)域通過(guò)深度自研和架構(gòu)的不斷迭代,已經(jīng)實(shí)現(xiàn)了網(wǎng)絡(luò)控制面和管理面的全面自研。后續(xù)將逐步把自研交換機(jī)在骨干網(wǎng)上進(jìn)行試點(diǎn),構(gòu)建管理面、控制面、轉(zhuǎn)發(fā)面的端到端全系統(tǒng)自研。