背景信息
騰訊網絡架構伴隨騰訊15年的發展,幾乎承載了全互聯網業務產品,包括即時通訊(QQ/微信)、SNS(QZONE)、網絡媒體(騰訊網/微博)、游戲(QQGAME)等,為了給廣大互聯網用戶提供更好的接入體驗,數十萬服務器分布在全球10多個城市、數十個數據中心,產生的跨城數據中心間流量達到數百G規模。在業務類型多樣及流量需求規模巨大的情況下,騰訊數據中心間網絡主要存在如下挑戰:
首先,從響應業務的角度來看,數據中心間網絡鏈路帶寬資源有限,難以滿足業務臨時性的大容量傳輸需求,通常需要業務部門自行搭建VPN平臺并通過公網傳輸;對重點業務流量的QoS保障也需要較長的時間擴容來滿足,業務部門通常抱怨基礎架構側行動緩慢、缺乏靈活性、響應速度慢;
其次,從鏈路利用率角度分析,為確保數據中心間專線可靠性需要做到業務專線1:1 備份,所以正常的情況下網絡鏈路利用率低于50%。昂貴的數據中心間網絡專線帶寬浪費過半,而業務部門又苦于數據中心間專線帶寬不夠,如何提高DCI(Data Center Interconnect,數據中心互聯)鏈路利用率成為一個難題。
第三,從網絡管理的角度分析,在大型骨干網中,由于地理分布較廣和業務類型眾多等原因,一個管理域中設備數量往往接近1000臺(例如CN2,800多臺設備;Google backbone, 600多臺設備)。面對如此大型的網絡,完全通過人工方式管理這些分布式的系統需要一個非常復雜的管理體系和風險控制流程。據統計,中國互聯網規模每18個月會增加一倍,由此可見設備數量將會持續不斷地快速增加,針對未來的網絡規模,完全通過傳統的方式管理將是不可想象的。同時業務模式的多樣性,意味著需要為不同的業務類型提供差異化服務,也就是當需要管理一個容納1000臺設備的網絡的同時,還要求在每臺設備上為不同的業務類型提供實時變化的差異化服務,其復雜程度可想而知。
SDN(Software Defined Networking,軟件定義網絡將網絡配置從單臺設備遷移到軟件平臺,設備本身變得更加簡單。網絡配置由中央控制器管理,控制器是一個包含算法、分析和規則的軟件,它來自一組規則,并使用OpenFlow或其他協議將配置下發到網絡設備。SDN允許網絡工程師更為靈活地控制和管理網絡,以便最好地服務需求,從而達到增加功能和降低運營成本的目的。
為了更好地滿足業務的帶寬需求、提升專線利用率以及降低運營復雜度,騰訊逐步實踐數據中心間網絡SDN解決方案。在這里我們提出一個全新的概念:“Network as a Router”,假設整個網絡只有一臺路由器,所有功能和配置都在這臺路由器實現,試想一下,管理這樣的網絡將會是一件多么輕松愉悅的事情,我們甚至可以做到通過這臺路由器提供的標準API,讓每個用戶對自己在網絡上使用的資源進行管理。可以看到,Google全球數據中心擁有超過100萬臺服務器,數據中心之間有著頻繁、高帶寬的通信需求。據統計,在2011年Google為數據中心之間建設DWDM高達15T。正因為貫徹了采用TE技術結合SDN的理念,面對數量龐大的設備和鏈路,Google才能做到從容不迫,鏈路利用率達到90%。下面主要介紹騰訊數據中心間網絡如何從傳統的網絡架構演變為“Network as a Router”,并且在SDN解決方案下怎樣實現智能的流量調度、網絡管理。
解決思路
規劃和構建一個網絡就好比建設一座城市,羅馬不是一天建成的,網絡架構的改變也是一項長期且重大的工程,需要在一個總體的藍圖下分階段逐步演進。
a. 道路建設
任何一座智能城市,都是需要建立在穩固的基礎架構設施之上,沒有好的公路更談不上城市的智能。網絡也是一樣,任何智能網絡都是建立在穩定、可靠的基礎設施之上的。
在數據中心間網絡上,需要選擇穩定、可靠的網絡設備和主備鏈路,選擇設備節點的異地備份,選擇具備良好擴展性的路由協議。物理硬件設施的基礎特性跟傳統的網絡理念是一致的。
b. BRT工程
當一個城市把公路修好之后是否可以高枕無憂呢?,答案是否定的,隨著車輛的增多、城市人口的增長,逐步會發現寬敞的馬路在高峰期還是會發生大面積擁堵,為了應對這一問題,國內各大城市開始建設BRT(Bus Rapid Transit,快速公交系統)工程,公交車專用車道,提前預留專用道路給公交車,讓優先級別高的公交車可以暢通無阻地通行。
在網絡上也需要相應的技術手段預留帶寬,讓專用的流量在專用的帶寬上轉發,例如MPLS-TE,不同優先級別的TE,可以為不同的業務類型保障承諾不同等級的服務。
c. 智能交通
現在駕車為了更快地到達目的地,通常會選擇導航工具,因為導航工具會提供到達目的地所有路徑的交通信息,推薦給你的選擇可能不是物理距離最短路徑,但卻是一條交通暢通,讓你花費時間最短的路徑,這里體現了道路交通的一部分智能化。
在我們網絡上也可以實現類似的功能,和過去不同的是,現在我們可以把全網的所有鏈路和設備都看作一個資源池,從A點到B點,使用者不需要知道直連的物理鏈路有多少,只需能夠調配資源池里面的所有資源即可,因為從A到B的路徑不僅僅只有A->B直連的,也有可能有A->C->B或者A->D->B的。到底使用哪個路徑到達目的地,使用者也許不必關心。
如何把不同的流量放到不同的路徑上,從而避免網絡發生擁塞的情況呢?這就要完全依賴網絡控制器了(controller)。Controller不僅僅能看到某條物理專線的帶寬,還能看到整個資源池,總體調度是池里的資源,可以判斷哪里有網絡帶寬資源,甚至聯動業務應用的計算按照網絡資源情況把計算放到有資源的節點進行處理。
就如下圖所示Network Controller有面對用戶的接口,它能夠獲取到網管工具傳遞給它的信息,通過用戶信息和網管信息等,有效控制網絡設備和網絡資源。根據實時需求,把不同的flow在不同的路徑上實施添加、刪除、修改等操作,讓全網資源得到合理的共享。相當于把全網看作為一臺路由器進行管理和維護,我們只需要維護和管理Controller就可以管理整個網絡了,從而實現“Network as a Router”的目標。