B站接入層網(wǎng)絡(luò)演進(jìn)實踐
01 網(wǎng)絡(luò)設(shè)計背景
1.1 穩(wěn)定性和擴(kuò)展性
在設(shè)計任何網(wǎng)絡(luò)結(jié)構(gòu)時,網(wǎng)絡(luò)的穩(wěn)定性和擴(kuò)展性是兩個必然要考慮的因素。丟包、擁塞、擴(kuò)容三大標(biāo)準(zhǔn)決定了網(wǎng)絡(luò)質(zhì)量的上限和下限。任何程度的網(wǎng)絡(luò)質(zhì)量波動都會對點直播視頻業(yè)務(wù)的生產(chǎn)和消費造成最為直接的影響?;贐站始終把用戶體驗放在第一位的前提下,在設(shè)計網(wǎng)絡(luò)前必須對網(wǎng)絡(luò)的流量模型,業(yè)務(wù)對網(wǎng)絡(luò)的要求做出充分調(diào)研。繼而從設(shè)備選型、網(wǎng)絡(luò)規(guī)劃、技術(shù)應(yīng)用、協(xié)議設(shè)計、生態(tài)演進(jìn)等多維度做出最貼合當(dāng)下B站客戶需求的網(wǎng)絡(luò)方案并落地實施。
1.2 帶寬和流量模式
隨著視頻化時代到來,承載業(yè)務(wù)的數(shù)據(jù)中心其規(guī)模也與日俱增,新增的數(shù)據(jù)中心所包含的服務(wù)器容量從幾千臺迅速攀升至數(shù)萬臺。傳統(tǒng)的樹形網(wǎng)絡(luò)結(jié)構(gòu)中,在網(wǎng)絡(luò)結(jié)構(gòu)和帶寬容量方面,未曾考慮到數(shù)據(jù)中心內(nèi)東西向流量的需求,大多是為了滿足南北向流量的大帶寬應(yīng)用而設(shè)計,因此這種結(jié)構(gòu)雖然能滿足業(yè)務(wù)一時的應(yīng)用場景。但是由于各層上下聯(lián)帶寬存在較高的收斂比現(xiàn)象,后期如果需要擴(kuò)容帶寬,就需要通過升級各網(wǎng)絡(luò)元件,如擴(kuò)容核心設(shè)備的業(yè)務(wù)板卡、Fabric等。
同時,在線、離線主機(jī)應(yīng)用程序,比如AI、大數(shù)據(jù)計算集群,產(chǎn)生了顯著的東西向流量。一些特定應(yīng)用和場景(比如多活改造),需要集群間的大量數(shù)據(jù)復(fù)制。傳統(tǒng)的樹形結(jié)構(gòu)在滿足東西方向大帶寬需求上捉襟見肘,要么組網(wǎng)成本太高,要么無法實現(xiàn),因為整個組網(wǎng)受限于商用物理設(shè)備形態(tài)限制,比如設(shè)備端口密度等等。
1.3 成本優(yōu)化
B站的網(wǎng)絡(luò)基礎(chǔ)設(shè)施CAPEX(Capital Expenditure)在整體IT成本中占比顯著。因此,技術(shù)團(tuán)隊通過優(yōu)化個別網(wǎng)絡(luò)單元的成本來改善這一現(xiàn)象。具體可以用以下兩種實現(xiàn)方式:
統(tǒng)一所有的網(wǎng)絡(luò)元素,最好使用相同的硬件類型或相同的設(shè)備。執(zhí)行批量采購的同時,引入多家網(wǎng)絡(luò)設(shè)備供應(yīng)商,充分競爭,從而達(dá)到降低成本的目的。
為了豐富廠商的多樣性,需要制定標(biāo)準(zhǔn)的網(wǎng)絡(luò)參數(shù)要求。這一措施大大提高了廠商選擇的靈活性,同時為白盒化設(shè)備提供基本的技術(shù)指標(biāo)。
1.4 高效運營
隨著網(wǎng)絡(luò)設(shè)備數(shù)量增加,網(wǎng)元故障頻次必然增多,縮小網(wǎng)絡(luò)故障域是降低網(wǎng)絡(luò)OPEX(Operational Expenditure)的一個重要指標(biāo)。網(wǎng)絡(luò)中容易產(chǎn)生廣播和單播風(fēng)暴,這會對網(wǎng)絡(luò)穩(wěn)定性和可靠性造成影響。如何高效運營管理網(wǎng)絡(luò),這是一個熱門的話題。在網(wǎng)絡(luò)設(shè)計之初,按全路由設(shè)計能縮小故障范圍,將故障域設(shè)定在更小的網(wǎng)絡(luò)范圍中。在全路由設(shè)計時,盡量使用同一種路由協(xié)議(比如BGP協(xié)議),來簡化設(shè)備控制面復(fù)雜度,從而降低網(wǎng)絡(luò)崩潰的概率。
02 B站接入層結(jié)構(gòu)演進(jìn)
2.1 DCN V1.0網(wǎng)絡(luò)結(jié)構(gòu)
B站DCN V1.0方案中,接入層和核心層均采用堆疊組網(wǎng)方案,網(wǎng)關(guān)配置在Spine設(shè)備,整個網(wǎng)絡(luò)處于一個大型的二層廣播域。如圖1:
圖1 DCN V1.0結(jié)構(gòu)
在堆疊方案中將兩臺接入交換機(jī)虛擬為一臺,起到冗余備份的作用,服務(wù)器通過Bond接入交換機(jī),提升接入層面網(wǎng)絡(luò)的可靠性和穩(wěn)定性。Spine層也是將兩臺核心網(wǎng)絡(luò)設(shè)備通過堆疊虛擬為1臺。堆疊帶來的好處是設(shè)備控制面只有一個,兩臺交換機(jī)進(jìn)行集中式配置,減少了頻繁登錄不同設(shè)備的操作時間,整體簡化了網(wǎng)絡(luò)設(shè)備管理成本;兩臺接入交換機(jī)的表項依靠堆疊心跳線進(jìn)行同步。但在組網(wǎng)方案和后期運維中堆疊方案逐漸暴露了兩個風(fēng)險。
風(fēng)險一:軟件風(fēng)險
無論是哪個廠商的設(shè)備,都無法保證軟件系統(tǒng)不存在BUG,一旦出現(xiàn)BUG就需要對設(shè)備軟件升級補丁或軟件版本。雖然有類似ISSU的技術(shù)可以實現(xiàn)不中斷升級,但I(xiàn)SSU的適用范圍僅限兩個版本差距很小的情況,且在實踐過程中各廠家無損升級技術(shù)復(fù)雜度高,升級風(fēng)險較大,成功率低,會或多或少引入額外問題,導(dǎo)致升級過程中網(wǎng)絡(luò)連通性異常。另外堆疊成員節(jié)點單獨升級會影響控制面,影響網(wǎng)絡(luò)穩(wěn)定性。
風(fēng)險二:分裂風(fēng)險
交換機(jī)之間互聯(lián)的堆疊線路出現(xiàn)故障或者異常時,將導(dǎo)致堆疊分裂,雖然不常見,但是在實際運行過程中仍會遇到,B站歷史上就曾經(jīng)出現(xiàn)過此類Case。產(chǎn)生的問題是分裂后,等同于網(wǎng)絡(luò)中出現(xiàn)了兩臺配置完全相同的交換機(jī),造成網(wǎng)絡(luò)配置沖突,最終導(dǎo)致堆疊系統(tǒng)所承載的業(yè)務(wù)中斷。
面對這個分裂風(fēng)險,當(dāng)然也有相應(yīng)的解決辦法,就是一旦系統(tǒng)檢測到分裂情況,就會將除去堆疊口、管理接口以及管理員指定的例外端口之外的其他端口全部DOWN掉,來防止分裂后對網(wǎng)絡(luò)造成影響。雖然這種方式規(guī)避了配置完全相同的兩臺交換機(jī)出現(xiàn)在網(wǎng)絡(luò)里面,但代價也是顯而易見的,業(yè)務(wù)恢復(fù)操作變得復(fù)雜,遠(yuǎn)程恢復(fù)操作變得極難。
基于以上兩個風(fēng)險點及其他堆疊組網(wǎng)帶來的隱患,B站當(dāng)前數(shù)據(jù)中心接入層組網(wǎng)堆疊技術(shù)已不再使用。
2.2 DCN V2.0網(wǎng)絡(luò)結(jié)構(gòu)
為了解決堆疊方案的問題,2019年初開始,團(tuán)隊開始對DCN網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行重新設(shè)計。Leaf接入層采用M-LAG技術(shù)(跨設(shè)備鏈路聚合組)取代原來的堆疊方式,Spine層不再使用堆疊,每臺設(shè)備獨立運行,同時為了更好的冗余和提升帶寬收斂比,在Spine層增加網(wǎng)絡(luò)設(shè)備數(shù)量。Spine-Leaf層運行EBGP路由協(xié)議,破除大二層網(wǎng)絡(luò)帶來的廣播風(fēng)暴風(fēng)險。DCN V2.0網(wǎng)絡(luò)結(jié)構(gòu)如下圖2:
圖2 DCN V2.0結(jié)構(gòu)
M-LAG(Multichassis Link Aggregation Group)跨設(shè)備鏈路聚合組,是一種實現(xiàn)跨設(shè)備鏈路聚合的機(jī)制,讓兩臺接入交換機(jī)以同一個狀態(tài)和被接入的設(shè)備進(jìn)行鏈路聚合協(xié)商,從而把鏈路可靠性從單板級提高到了設(shè)備級,組成雙活系統(tǒng)。在被接入的設(shè)備看來,就如同和一臺設(shè)備建立了鏈路聚合關(guān)系。相比DCN V1.0結(jié)構(gòu),V2.0結(jié)構(gòu)有效解決了交換機(jī)軟件版本升級難問題,兩臺接入交換機(jī)可以獨立進(jìn)行升級,保證有一臺設(shè)備正常工作即可,對正在運行的業(yè)務(wù)幾乎沒有影響。同時接入層面做一些配置優(yōu)化,如配置Monitor聯(lián)動設(shè)備上下行端口,BGP路由協(xié)議配置優(yōu)化等,相比V1.0時代網(wǎng)絡(luò)穩(wěn)定性和可擴(kuò)展性提升了一個層級。但與此同時,DCN V2.0網(wǎng)絡(luò)結(jié)構(gòu)中還是存在以下問題:
- 收斂比:指單臺網(wǎng)絡(luò)設(shè)備的上行與下行帶寬比例,一般按不同的業(yè)務(wù)應(yīng)用設(shè)計不同收斂比,很難做到1:1的收斂比。由此帶來的運維問題是需要隨時監(jiān)控Spine上行帶寬容量,達(dá)到預(yù)定閾值時需要及時擴(kuò)容帶寬;
- 擴(kuò)展性:因Spine使用高功率框式交換機(jī),在IDC機(jī)房包間擴(kuò)容時,只能采購指定品牌交換機(jī)的業(yè)務(wù)板卡,不利于擴(kuò)展,另外由于整個機(jī)框的端口密度受限,也會限制整個DCN規(guī)模擴(kuò)展;
- 高電柜:現(xiàn)有框式交換機(jī)由于整機(jī)功率高,對機(jī)房環(huán)境有硬性要求,機(jī)房物理機(jī)柜、電力、空調(diào)等均需要按需求進(jìn)行改造。引入額外成本支持,同時改造完后機(jī)房內(nèi)可能還是存在機(jī)房內(nèi)局部過熱情況;
- 心跳線:組網(wǎng)中接入層雖然由原來的堆疊升級到M-LAG技術(shù)進(jìn)行組網(wǎng),但同樣兩臺設(shè)備需要通過心跳線控制兩臺交換機(jī)同步數(shù)據(jù),始終未做到接入層設(shè)備獨立的情況,在設(shè)備升級和日常運維中還是會帶來不少挑戰(zhàn);
- OPEX&CAPEX高:框式設(shè)備對軟件特征的要求高,限制了選擇廠商設(shè)備的靈活性,無法充分引入競爭;維護(hù)多種芯片架構(gòu),增加了測試、培訓(xùn)、維護(hù)的要求。
基于以上M-LAG組網(wǎng)帶來的相關(guān)問題,B站網(wǎng)絡(luò)團(tuán)隊在DCN組網(wǎng)結(jié)構(gòu)上繼續(xù)探索,砥礪前行尋找最新DCN結(jié)構(gòu)組網(wǎng)方案,由此B站DCN V3.0組網(wǎng)結(jié)構(gòu)登場。
03 DCN V3.0網(wǎng)絡(luò)結(jié)構(gòu)
2020年底B站網(wǎng)絡(luò)團(tuán)隊與國內(nèi)外互聯(lián)網(wǎng)頭部企業(yè)、設(shè)備供應(yīng)商等廣泛交流與學(xué)習(xí),開始調(diào)研新一代DCN盒式組網(wǎng)方案,并于2021年中旬完成DCN V3.0網(wǎng)絡(luò)結(jié)構(gòu)整套方案驗證。且于2021Q3在新建數(shù)據(jù)中心落地應(yīng)用3.0組網(wǎng)結(jié)構(gòu),經(jīng)過半年的灰度驗證,整個組網(wǎng)穩(wěn)定運行,當(dāng)前此組網(wǎng)方案已全量在B站數(shù)據(jù)中心部署;DCN 3.0網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示:
圖3 DCN V3.0結(jié)構(gòu)
DCN V3.0網(wǎng)絡(luò)結(jié)構(gòu)說明:
- 組網(wǎng)中相關(guān)名詞解釋:接入層交換機(jī)ASW(Access Switch),匯聚層交換機(jī)PSW(Polymerizes Switch),分發(fā)層交換機(jī)DSW(Distribute Switch);
- POD內(nèi)部的ASW/PSW/DSW 網(wǎng)絡(luò)設(shè)備使用同種規(guī)格芯片(當(dāng)前主流使用的Tomahawk3芯片),均為盒式交換機(jī),設(shè)備輕便,易安裝使用;
- 服務(wù)器萬兆接入場景下,單Server-Pod包含4臺PSW和64臺ASW,PSW上下行帶寬收斂比達(dá)到1:1,單個POD支持64組機(jī)柜,按單機(jī)柜20臺服務(wù)器接入,單POD最大可支持1200臺服務(wù)器規(guī)模;
- 服務(wù)器25G接入場景下,單Server-Pod包含8臺PSW和64臺ASW,保持PSW上下行帶寬收斂比1:1的同時,25G接入場景下單個POD服務(wù)器規(guī)模容量不變;
- 單個POD內(nèi)的服務(wù)器規(guī)??梢愿鶕?jù)業(yè)務(wù)需求變更PSW的上下行收斂比,做到單個Server-POD容量規(guī)模更大,同時可橫向靈活擴(kuò)展Server-POD數(shù)量,支撐整個機(jī)房的規(guī)模應(yīng)用;
- 整個組網(wǎng)去框化,機(jī)房現(xiàn)場無需改造機(jī)柜電力、空調(diào)等物理環(huán)境,直接使用現(xiàn)有普通機(jī)柜就可滿足,且避免了局部過熱的情況;
- POD中兩臺ASW為一組,中間無心跳線連接,兩臺設(shè)備完全獨立,服務(wù)器接入層通過Bond接入,開啟雙發(fā)ARP特性,組網(wǎng)去堆疊化;
- 組網(wǎng)成本上,在相同收斂比的情況下,Capex采購成本相比上一代網(wǎng)絡(luò)顯著降低,達(dá)到降本增效的目的;
- 超大規(guī)模機(jī)房引入Cluster概念的方式進(jìn)行擴(kuò)展,同時在機(jī)房內(nèi)部增加SuperSpine平面,支持整個機(jī)房規(guī)模容量擴(kuò)展。
3.1 組網(wǎng)參數(shù)優(yōu)化
3.1.1 ARP配置優(yōu)化
- 接入層ASW開啟ARP Proxy功能,抑制同一臺交換機(jī)下的服務(wù)器通過二層直接轉(zhuǎn)發(fā)流量;
- 接入層交換機(jī)ASW更改業(yè)務(wù)網(wǎng)段的VLAN MAC地址,指定兩臺ASW設(shè)置相同的MAC地址,用于交換機(jī)轉(zhuǎn)發(fā)流量到服務(wù)器;
- 接入層ASW開啟加快ARP超時時間設(shè)置,默認(rèn)ARP超時時間各廠家不完全相同,統(tǒng)一配置ARP超時參數(shù),加快ARP表項更新,避免故障情況下產(chǎn)生路由黑洞的可能性。
3.1.2 ASW風(fēng)暴抑制
- 接入層ASW下聯(lián)服務(wù)器的聚合接口抑制二層廣播轉(zhuǎn)發(fā)/組播、二層未知單播轉(zhuǎn)發(fā),使得全網(wǎng)不存在二層轉(zhuǎn)發(fā)流量,實現(xiàn)全路由轉(zhuǎn)發(fā)。
3.1.3 LACP配置優(yōu)化
- LACP,即鏈路匯聚控制協(xié)議,全稱: Link Aggregation Control Protocol ;
- 服務(wù)器為默認(rèn)采用Bond Mode 4,部分場景存在Bond Mode 0的情況;
- ASW與服務(wù)器對接的聚合口需要設(shè)置相同LACP SystemID,對端的設(shè)備在邏輯上認(rèn)為收到是LACPDU 報文是從同一臺設(shè)備上發(fā)出;
- ASW內(nèi)兩臺ASW設(shè)置不同的LACP Device ID,使得服務(wù)器看到LACP成員端口編號不同;
- 由于部分業(yè)務(wù)的特殊性,服務(wù)器網(wǎng)卡工作在Bond Mode 0場景下以充分利用網(wǎng)卡帶寬。
3.1.4 DHCP配置優(yōu)化
- DHCP,即動態(tài)主機(jī)配置協(xié)議,全稱: Dynamic Host Configuration Protocol ;
- ASW設(shè)備的DHCP請求開啟option 82特性,將DHCP relay source ip設(shè)置為本機(jī)loopback地址,避免dhcp server回包異常。
3.1.5 Hash配置優(yōu)化
- B站DCN 3.0網(wǎng)絡(luò)結(jié)構(gòu)中,由于DSW、PSW、ASW設(shè)備采用相同的芯片,因此存在HASH極化的風(fēng)險,甚至在采用二層鏈路捆綁的情況下會加劇HASH極化的可能性。為避免出現(xiàn)Hash極化,所有設(shè)備均配置負(fù)載分擔(dān)模式為五元組,即sip+dip+sport+dport,并調(diào)整ASW、PSW、DSW設(shè)備的偏移參數(shù)algorithm。
3.1.6 BGP配置優(yōu)化
- 全網(wǎng)運行EBGP路由協(xié)議,并根據(jù)實際情況不同路由類型的優(yōu)先級;
- 全網(wǎng)根據(jù)不同的業(yè)務(wù)類型將不同的路由條目設(shè)置Community屬性;
- 接入層ASW開啟ARP轉(zhuǎn)32位主機(jī)路由,并通過BGP重分發(fā)至網(wǎng)絡(luò),且設(shè)置community屬性在DCN網(wǎng)內(nèi)傳遞;
- 所有設(shè)備開啟BGP Balance特性,默認(rèn)情況下流量經(jīng)過ECMP進(jìn)行負(fù)載分擔(dān)。
3.1.7 服務(wù)器網(wǎng)絡(luò)配置
- 服務(wù)器網(wǎng)卡默認(rèn)工作在Bond Mode4,部分特殊場景工作在Bond Mode0;
- 服務(wù)器重新編譯ARP內(nèi)核模塊,使服務(wù)器雙網(wǎng)口支持ARP報文雙發(fā)能力,目的是讓接入層兩臺不同的ASW同時學(xué)習(xí)到服務(wù)器ARP地址,形成流量負(fù)載分擔(dān)能力;
- 當(dāng)服務(wù)器接入層發(fā)生DOWN/UP時,在監(jiān)控到網(wǎng)口UP后加入Bond同時批量發(fā)送本 Server的所有ARP到兩個Bond成員口,同步ARP表項,解決單向流量問題。
3.1.8 Failover配置優(yōu)化
- 當(dāng)ASW的上聯(lián)接口全部DOWN時,下行接入服務(wù)器無法感知到,服務(wù)器會繼續(xù)向故障接入交換機(jī)發(fā)送數(shù)據(jù),此時由于ASW的上行端口全DOWN,交換機(jī)會將數(shù)據(jù)包全部丟棄,造成網(wǎng)絡(luò)異常。開啟ASW上下行接口Monitor-Link功能來規(guī)避此問題,當(dāng)上行接口全部故障時,關(guān)閉下行接口。同時當(dāng)上行接口UP時,下行接口也做延遲UP,預(yù)留一定時間供設(shè)備路由協(xié)議收斂,以避免出現(xiàn)路由黑洞的情況產(chǎn)生。
04 未來展望
B站網(wǎng)絡(luò)團(tuán)隊按穩(wěn)定和高效原則設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)。底層物理網(wǎng)絡(luò)通過物理線路、硬件設(shè)備和網(wǎng)絡(luò)技術(shù),形成了一張穩(wěn)定且可靠的DCN網(wǎng)絡(luò),為上層業(yè)務(wù)提供高效和快速的轉(zhuǎn)發(fā)通道?;A(chǔ)網(wǎng)絡(luò)下承機(jī)房基礎(chǔ)設(shè)施、上接業(yè)務(wù),需要解決業(yè)務(wù)需求變化快和基礎(chǔ)網(wǎng)絡(luò)升級難這一對永恒的矛盾點。未來基礎(chǔ)網(wǎng)絡(luò)會繼續(xù)緊跟技術(shù)發(fā)展潮流,根據(jù)業(yè)務(wù)需求,探索新型網(wǎng)絡(luò)結(jié)構(gòu),為B站業(yè)務(wù)提供更穩(wěn)定、更高效及高擴(kuò)展的網(wǎng)絡(luò)服務(wù)。
作者:嗶哩嗶哩系統(tǒng)部網(wǎng)絡(luò)團(tuán)隊
負(fù)責(zé)B站數(shù)據(jù)中心網(wǎng)絡(luò)規(guī)劃、設(shè)計、建設(shè)、運維與優(yōu)化,為公司業(yè)務(wù)提供穩(wěn)定且可靠的網(wǎng)絡(luò)服務(wù)。整個團(tuán)隊專注于數(shù)據(jù)中心內(nèi)網(wǎng)、骨干網(wǎng)絡(luò)、負(fù)載均衡、傳輸網(wǎng)絡(luò)、虛擬化網(wǎng)絡(luò)以及國際化網(wǎng)絡(luò)的落地和應(yīng)用,并根據(jù)業(yè)務(wù)的發(fā)展需求不斷迭代更新底層基礎(chǔ)網(wǎng)絡(luò)設(shè)施。