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