search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

資深網路架構師揭秘金山雲骨幹網

骨幹網(Internet Backbone Network)是連接國與國、城市與城市之間的高速互聯網絡。如下圖所示,它通過海纜和路纜,將分佈在世界各地的數據中心連接起來,是互聯網服務提供商和雲計算服務提供商的重要基礎設施,肩負著滿足全球範圍內網路數據通信需求的重任。

全球骨幹網示意圖

骨幹網的角色如此重要,以至於與此有關的話題,常常會引起業界的關注和討論。作為雲計算的基礎,國內的雲計算服務提供商是如何運維自己的骨幹網的?又是如何實現自動化運維的?有哪些值得分享、思考的經驗和做法?作為一名從業10年的網路架構師,我向大家介紹一下金山雲骨幹網的現況,希望對大家有所幫助。

如何快速發現骨幹網級別故障?

首先簡要介紹一下建設進展。金山雲目前在北京和上海兩地之間租用專線搭建起了骨幹網路,按照計劃,今年金山雲會在廣州部署節點,將進一步擴大環網規模,搭建北上廣骨幹環網,大幅提升金山雲公有雲服務的網路質量SLA。

當然,這並不是說建設骨幹環網后就不會出故障了,對於互聯網公司和雲計算服務商來說,運營商的骨幹網路故障是很讓人頭痛的,因為在通常情況下,這種故障會影響到多個省份用戶網路的訪問質量。

例如,2016年11月19日晚8點,包括華南、西南、華中等在內的國內多個地區,超過10個省份的用戶,在訪問華北地區的服務節點時,均出現了問題。測試結果顯示,ICMP丟包率高達30%,延遲增大了約100ms,這種級別的丟包率和延遲情況,如果不及時處理,將導致用戶的業務嚴重受損。

那麼,對於這種骨幹網級別的故障,雲服務商能否做到快速發現定位呢?當然是可以的。

金山雲的做法是,通過自研開源監控的方式,研發出服務於金山雲整個骨幹網的網路質量監控系統(Netbench)。

金山雲網路質量監控系統監控圖

如上圖所示,金山雲的這套系統支持多地區、多ISP監控,可在運營商發生骨幹網故障時,快速發現並準確定位故障,同時採用電子地圖這種直觀形式,顯示出各省份各地級市的網路質量(延遲、丟包等數據),如果某地出現問題,地圖上相應位置的顏色就會變得不同。

金山雲網路質量監控系統架構圖

金山雲這套網路質量監控系統的主要特點,分為定位策略、主要功能、應用場景三部分:

一、定位策略

抓取訪問客戶服務的用戶IP作為監控目的IP;

多對多的監控模式,多個源IP監控全國各個省市的用戶IP(保證數據的準確性避免路由ecmp不均勻的問題);

通過對抓取到的IP進行篩選,排除掉一些不準確的IP,最終篩選出每省份數百個有效IP進行監控;

商用的IP地址庫與BGP IP結合對抓取到的IP進行區分(ISP、省、市等);

Master-Slave的部署模式,監控周期可精確到分鐘級(每1分鐘)。

二、主要功能

提供簡訊、微信、郵件告警;

提供故障時的MTR數據(平均每省份多個MTR),可幫助判斷loss節點;

提供柱狀圖、歷史數據展示等功能,可追溯故障,查看故障時的丟包以及延遲情況;

可針對重要的IP進行指定監控。

三、應用場景

可覆蓋CDN、靜態、BGP等多網路類型;

目前可針對EIP(計算)、KS3(存儲)、KLS等業務類型進行監控。

骨幹網調度架構圖

如何快速解決骨幹網級別故障?

對於骨幹網級別的故障,除了需要快速發現,更需要快速解決。

有些互聯網和雲計算服務提供商,會通過多線BGP切換故障ISP流量至其他的ISP的方式繞開故障點,由於南北互通問題,跨網訪問的質量很差,丟包和延遲都無法保證,而且在跨網切換時,會有較長時間的路由收斂,導致客戶長連接業務中斷。

金山雲避免了這些問題。因為金山雲的自建骨幹網路擁有支持跨區域調度能力,當出現故障時,能夠通過骨幹網跨地區調度故障運營商流量,這種調度只是在同ISP不同地區之間的調度,只增加地區間的延遲,對整體丟包並無影響,這樣一來,整體服務質量就得到了保障,同ISP內的路由切換收斂時間,可保證用戶無感知,在近幾次運營商南北骨幹網故障中,金山雲均做到了故障的快速調度恢復,客戶也不必再因為運營商骨幹網的故障而頭疼了。

骨幹網路調度前後對比圖

這裡解釋一下原因。金山雲可以做到以省市為單位的出口切換級別,比如目標浙江省出現了故障,會優先嘗試調度浙江省出向流量至正常地區節點,在丟包恢復后將不會有下一步切換動作,不會導致全國切換而加大其它省份的延遲,只有在多省份同時異常而且調度出向無效后才會切全局入向流量。當前已經定義了一整套切換規則來判定什麼情況下切換,什麼情況下不切換。

骨幹網運維自動化

每當出現骨幹網級別的故障時,工程師很容易出現誤操作刷錯腳本等低級錯誤,導致業務受影響,故障處理速度上也得不到最有效的保障。

目前金山雲上線的骨幹網自動化運維平台,可實現對這種骨幹網級別的故障的自動化判斷和處理等一系列自動化流程,減輕了工程師的壓力,它有著如下特點:

首先,Netbench提供判斷依據,給出當前網路的質量情況,作為自動化腳本的觸發條件開始進入自動化流程;

第二,通過Python腳本定義多個故障場景,當出現不同類型的骨幹網時可根據腳本庫調出對應的腳本;

第三,通過Netconf下發所需要調用的腳本策略配置到對應的核心網路設備上;

第四,直接對接郵件系統,從Netbench調用MTR發送給ISP進行自動報障;

第五,對接微信、簡訊告警平台,在故障時讓客戶能第一時間知道當前故障狀態以及故障的處理進度。

自動化調度架構圖

在兩三個Region級別的骨幹網通過「人」計算還是可以實現最優調度的,但是隨著Region的增加,「人」計算的方式效率會越來越低,準確度也會越來越差,那麼如何解決多Region骨幹網調度呢?我總結出了幾種方法:

1、通過Netbench的MTR功能定時定點採集每Region到每ISP的數據,平均每省份保證10-20個IP即可(排除路由Ecmp hash不均的問題);

2、對採集到的數據進行分層分級,區分到運營商層面的超核、核心、省市等,並在這些層級的IP上保留MTR當中的延遲值(運營商的設備都會對ICMP有保護所以不採用丟包值);

3、通過腳本分析構建ISP的邏輯IP網路拓撲圖;

4、在運營商骨幹網故障時能夠清晰的描述到是哪個層級哪個核心節點出現的問題,能夠在拓撲上清晰地看到問題所在;

5、在故障時可通過構建的邏輯IP拓撲計算出調度的最優RTT路徑;

6、結合自動化調度實現最優調度。

隨著客戶對網路問題的重視程度的增加,骨幹網以及多Region骨幹網結構已經是現在的互聯網服務提供商和雲計算服務提供商不可或缺的重要環節。越來越多的重網路業務的出現,比如實施對戰類的手機遊戲、視頻直播等對網路質量要求非常高的業務,不能一而再再而三地把我們所謂的SLA推到運營商的層面,站在客戶業務的角度去考慮這是極其不負責任的態度,我們要在有限的網路環境中儘可能把客戶的問題合理解決,這樣客戶才能把重要的業務託付到你那裡。

由於運營、成本問題、運維、網路現狀受限等複雜的因素,金山雲目前並沒有使用商用SDN的技術來實現骨幹網自動化,,而是通過實踐,使用了BGP、Python、GO等網路協議以及腳本工具配合Netconf來實現對於金山雲骨幹網的自動化。我希望通過介紹金山雲在骨幹網運維方面的思路,能給大家帶來一些啟發和幫助。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦