阿里妹導(dǎo)讀:VTrace是一個(gè)解決云網(wǎng)絡(luò)持續(xù)性丟包問題的自動(dòng)化診斷系統(tǒng),核心思想是“任務(wù)-匹配-染色-采集-分析”,結(jié)合大數(shù)據(jù)技術(shù),旨在實(shí)時(shí)快速的自動(dòng)分析出云網(wǎng)絡(luò)端到端的流量拓?fù)渎窂?,并給出準(zhǔn)確的問題原因和解決方案,讓網(wǎng)絡(luò)運(yùn)維不再需要那么“專業(yè)”,那么“復(fù)雜”。
一 概述
近日,SIGCOMM 2020公布了今年的入選論文,阿里云網(wǎng)絡(luò)洛神的“VTrace:Automatic Diagnostic System for Persistent Packet Loss in Cloud-Scale Overlay Network”是國內(nèi)歷年來唯一一篇云網(wǎng)絡(luò)方向的入選論文,今年SIGCOMM總計(jì)收到了250篇投稿,成功入選的僅54篇,阿里云網(wǎng)絡(luò)洛神平臺(tái)的技術(shù)實(shí)力得到了網(wǎng)絡(luò)業(yè)界頂級(jí)會(huì)議的認(rèn)可。
為了方便大家更通俗地理解這篇論文,本文將從技術(shù)層面解讀云網(wǎng)絡(luò)面臨的問題,以及介紹VTrace系統(tǒng)的整體技術(shù)架構(gòu)。
說明:以下介紹的所有技術(shù)都已在論文投稿前申請(qǐng)了專利保護(hù)。
二 背景
如果把每天在用的手機(jī)App當(dāng)成現(xiàn)實(shí)生活里的商場(chǎng),電影院,餐館的話,云網(wǎng)絡(luò)就是把這些商場(chǎng),電影院和餐館連接在一起的高速公路。在現(xiàn)實(shí)社會(huì)里,如果駕車去電影院時(shí)發(fā)現(xiàn)路堵了,可能會(huì)導(dǎo)致錯(cuò)過期待已久的電影。同樣的,在云網(wǎng)絡(luò)的世界里,當(dāng)某個(gè)設(shè)備發(fā)生擁塞或者事故了,會(huì)導(dǎo)致各種APP應(yīng)用出現(xiàn)異常、卡頓,視頻打不開等。
而隨著云網(wǎng)絡(luò)拓?fù)淙找鎻?fù)雜,承載的網(wǎng)絡(luò)業(yè)務(wù)不斷增多,虛擬網(wǎng)絡(luò)承載著用戶多種多樣的業(yè)務(wù)功能,如NAT、帶寬等,往往要求頻繁更新以滿足用戶業(yè)務(wù)變化。承載著基礎(chǔ)轉(zhuǎn)發(fā)能力的物理網(wǎng)絡(luò)在轉(zhuǎn)發(fā)策略中任何一個(gè)小小的問題都可能導(dǎo)致用戶在云網(wǎng)絡(luò)中的數(shù)據(jù)包丟失。而傳統(tǒng)工具如traceroute等無法在云網(wǎng)絡(luò)使用,而人為抓包的方式對(duì)運(yùn)維工程師的專業(yè)技能和經(jīng)驗(yàn)要求較高,排查過程也比較繁瑣耗時(shí),往往最終也只能界定丟包位置而難以得到丟包原因。
面對(duì)這樣的問題,云網(wǎng)絡(luò)需要一個(gè)”交通警察“,每當(dāng)網(wǎng)絡(luò)中間有擁塞或者事故了它需要能夠及時(shí)發(fā)現(xiàn)具體位置,然后及時(shí)處理,來讓整個(gè)網(wǎng)絡(luò)恢復(fù)正常。一旦出現(xiàn)卡頓、丟包等問題,云網(wǎng)絡(luò)的交警需要能在幾秒鐘內(nèi)從這張遍布全球數(shù)百萬的設(shè)備里找到原因,是非常大的挑戰(zhàn)。
所以,不管是對(duì)用戶而言,還是對(duì)云網(wǎng)絡(luò)供應(yīng)商來說,都急需一個(gè)可以在高負(fù)載、復(fù)雜拓?fù)涞脑凭W(wǎng)絡(luò)下能實(shí)現(xiàn)快速響應(yīng)的、可控的、自動(dòng)化的丟包問題排查工具,而VTrace就是阿里云網(wǎng)絡(luò)產(chǎn)品設(shè)計(jì)并推出的一款解決云網(wǎng)絡(luò)持續(xù)性丟包問題的自動(dòng)化診斷系統(tǒng),就是我們所說的那個(gè)有著超級(jí)大腦的超級(jí)交警。
三 面臨的挑戰(zhàn)
動(dòng)態(tài)變化的網(wǎng)絡(luò)數(shù)據(jù)流
數(shù)據(jù)在網(wǎng)絡(luò)里面的流轉(zhuǎn)就像我們每天駕駛著車子在城市里穿梭一樣,唯一的區(qū)別是網(wǎng)絡(luò)里面的紅綠燈和每個(gè)路口的方向會(huì)非常多,并且紅綠燈的變化也不固定。用戶可以隨時(shí)修改網(wǎng)絡(luò)的安全組來讓數(shù)據(jù)包停下來或者通過,也可以通過修改路由來讓某個(gè)路口增加一個(gè)分叉。想象一下在一個(gè)有1000個(gè)分叉,并且紅綠燈在不停變換的路口時(shí)指揮交通就可以感受網(wǎng)絡(luò)交警每天的工作壓力了。
無處不在的潛在網(wǎng)絡(luò)丟包點(diǎn)
在數(shù)據(jù)的傳輸過程中,一旦在某個(gè)地方發(fā)生擁塞,或者某個(gè)地方紅燈了,就停下來無法前進(jìn)。這個(gè)現(xiàn)象在網(wǎng)絡(luò)里隨處可見,對(duì)于只有幾十個(gè)路口的小城鎮(zhèn),找到堵塞的路口可能不需要太久,但是對(duì)于云網(wǎng)絡(luò),這樣的路口可能有上萬個(gè),想要快速找到擁塞的路口就非常困難了。
最小化性能影響
為了解決上面的問題,傳統(tǒng)的做法會(huì)讓數(shù)據(jù)在經(jīng)過每個(gè)路口的時(shí)候都給交警發(fā)送一條短信,告訴他到哪了,然后現(xiàn)在是紅燈還是綠燈,前面排隊(duì)還有多久。但是這個(gè)做法首先成本太高,每天發(fā)送的短信可能就需要幾千萬條,另外,如果這個(gè)交警就拿著一部手機(jī)一條條記錄信息,他也根本忙不過來。如何讓網(wǎng)絡(luò)數(shù)據(jù)包能以最低的成本最小的代價(jià)通知到網(wǎng)絡(luò)交警,并且能快速處理這些數(shù)據(jù)包的信息,是需要找到一個(gè)很好的解決方法的。
四 設(shè)計(jì)與技術(shù)
目標(biāo)與要求
基于面臨的挑戰(zhàn),我們希望實(shí)現(xiàn)以下兩個(gè)目標(biāo):
· 低損耗數(shù)據(jù)包信息、流量路徑和傳輸質(zhì)量分析:在不影響用戶業(yè)務(wù)的情況下,分析數(shù)據(jù)包信息,流量路徑以及傳輸質(zhì)量,并精準(zhǔn)探測(cè)網(wǎng)絡(luò)傳輸?shù)臅r(shí)延抖動(dòng)。
· 精準(zhǔn)分析丟包原因定位:當(dāng)丟包發(fā)生,VTrace系統(tǒng)需要快速找到有問題的虛擬網(wǎng)元或物理網(wǎng)元,并提出根本原因及修復(fù)丟包的可能。
考慮到云網(wǎng)絡(luò)環(huán)境,對(duì)VTrace系統(tǒng)有以下幾個(gè)要求:
· VTrace能夠基于數(shù)據(jù)包丟失的用戶現(xiàn)場(chǎng)進(jìn)行分析。
· VTrace的部署和使用不會(huì)影響正常的網(wǎng)絡(luò)功能,對(duì)用戶無感知。
· 由于存在數(shù)百萬云用戶,VTrace需要能夠支持不同用戶的并發(fā)使用。
技術(shù)挑戰(zhàn)
· 主動(dòng)探測(cè)技術(shù)如pingmesh,適用于網(wǎng)絡(luò)監(jiān)控場(chǎng)景,但很難滿足基于用戶數(shù)據(jù)丟失現(xiàn)象進(jìn)行分析的要求,也很可能因?yàn)楹陀脩魯?shù)據(jù)包的差異性難以還原丟包路徑。
· 被動(dòng)式網(wǎng)絡(luò)監(jiān)控技術(shù)如VeriFlow,對(duì)用戶有依賴性,無法滿足對(duì)用戶無感知的要求。
· 網(wǎng)絡(luò)調(diào)試技術(shù)如SDN Traceroute、NetAlytics等,目前不適用一些云網(wǎng)絡(luò)架構(gòu),也無法做到直觀地給出丟包原因。而一些旁路分析架構(gòu),如新提出的INT技術(shù)(In-band Network Telemetry),雖可以實(shí)現(xiàn)目標(biāo),但對(duì)網(wǎng)絡(luò)設(shè)備的要求高,同時(shí)由于旁路導(dǎo)致的帶寬消耗,會(huì)影響對(duì)用戶的網(wǎng)絡(luò)功能。
設(shè)計(jì)思路
1 如何解決多網(wǎng)元節(jié)點(diǎn)的數(shù)據(jù)采集和匯聚?
在采集上我們使用了阿里云上成熟的日志服務(wù)產(chǎn)品(SLS),無需開發(fā)就能快捷完成日志數(shù)據(jù)采集、消費(fèi)等功能,通過其強(qiáng)大的采集能力,將數(shù)百萬的VFD(虛擬轉(zhuǎn)發(fā)設(shè)備)日志匯聚到各地域中心,便于后續(xù)的分析處理。
由于日志數(shù)據(jù)的實(shí)時(shí)性、分布式存儲(chǔ)的地域性以及龐大數(shù)據(jù)量,需要利用大數(shù)據(jù)技術(shù)將所有數(shù)據(jù)收集以執(zhí)行流量路徑重建和進(jìn)一步分析,我們采用了流處理引擎JStorm,JStorm具備千萬級(jí)報(bào)文數(shù)據(jù)實(shí)時(shí)分析能力,其可擴(kuò)展性和強(qiáng)大的計(jì)算能力有助于幫助潛在的大量VTrace任務(wù)進(jìn)行實(shí)時(shí)的計(jì)算分析。
2 如何解決多租戶并發(fā)的隔離以及探針對(duì)轉(zhuǎn)發(fā)的性能損耗?
為了降低性能損耗,我們?cè)O(shè)計(jì)讓控制器下發(fā)規(guī)則時(shí),只需要起始轉(zhuǎn)發(fā)節(jié)點(diǎn)生效,進(jìn)行報(bào)文帶內(nèi)染色,而其他轉(zhuǎn)發(fā)節(jié)點(diǎn)只需支持基于染色的匹配采集,另外也做了染色的快慢速分離和首包的規(guī)則匹配。針對(duì)虛擬轉(zhuǎn)發(fā)設(shè)備則是預(yù)置規(guī)則,沒有動(dòng)態(tài)下發(fā)過程,對(duì)系統(tǒng)壓力小。而在數(shù)據(jù)采集過程中,做一定的限速保護(hù),并在任務(wù)中控制好包的數(shù)量,整體過程對(duì)轉(zhuǎn)發(fā)的性能消耗降到最低,接著探針覆蓋丟包位置,就可簡(jiǎn)單直接地采集到丟包原因。
3 如何解決分布式數(shù)據(jù)采集的時(shí)序問題?
在采集數(shù)據(jù)時(shí),常會(huì)遇到日志流散列在不同地域,時(shí)序也無法保證的問題。因此我們?cè)赩TraceApp和Jstorm之間設(shè)計(jì)了一個(gè)三次握手過程,建立了“任務(wù)-染色-轉(zhuǎn)發(fā)-采集-分析”的體系,確保大量分布式數(shù)據(jù)采集的正確性和時(shí)效性:
新建VTrace任務(wù)時(shí),VTraceApp向任務(wù)DB插入狀態(tài)為new的一條任務(wù)。
Jstorm讀到new任務(wù),將new改為JStormReady。
VTraceApp收到JStormReady后,向控制器發(fā)送下發(fā)VTrace任務(wù)的指令。
4 如何解決復(fù)雜轉(zhuǎn)發(fā)模型下的自動(dòng)算路?
首先,我們基于上云和下云的邊緣標(biāo)準(zhǔn)設(shè)計(jì)出一套標(biāo)準(zhǔn)的排序算法,包含首尾節(jié)點(diǎn)標(biāo)識(shí)、根據(jù)同節(jié)點(diǎn)數(shù)據(jù)的時(shí)序性以及不同節(jié)點(diǎn)的NAT轉(zhuǎn)換關(guān)系。這樣即使流量經(jīng)過的設(shè)備和設(shè)備類型很多,只要虛擬轉(zhuǎn)發(fā)設(shè)備安裝了同款采集探針,不需做任何數(shù)據(jù)開發(fā)和調(diào)整,按照統(tǒng)一算法就可以實(shí)現(xiàn)路徑的自動(dòng)計(jì)算了。再利用安裝的探針來采集每個(gè)數(shù)據(jù)包的時(shí)間指標(biāo),使用路徑中時(shí)延計(jì)算的標(biāo)準(zhǔn)公式,結(jié)合可視化技術(shù),實(shí)現(xiàn)一鍵呈現(xiàn)流量路徑,快速分析丟包位置、丟包原因和時(shí)延情況。
五 覆蓋場(chǎng)景
1 VPC內(nèi)的流量訪問
經(jīng)典場(chǎng)景:企業(yè)上云后,企業(yè)生產(chǎn)業(yè)務(wù)(部署在ECS中)往往需要和云上其他云服務(wù)如RDS數(shù)據(jù)庫進(jìn)行訪問。
2 VPC與公網(wǎng)之間的流量訪問
經(jīng)典場(chǎng)景:大部分的企業(yè)服務(wù)都需要被公網(wǎng)訪問,如游戲服務(wù)等。
3 云上VPC與云下客戶機(jī)房間的訪問
經(jīng)典場(chǎng)景:很多客戶的部分服務(wù)可能有對(duì)外聯(lián)設(shè)備的依賴,會(huì)部署在自建機(jī)房中,那么和云上環(huán)境有互通的需要。
4 不同VPC之間的訪問(可能涉及跨域)
經(jīng)典場(chǎng)景:大企業(yè)級(jí)組網(wǎng),一般有多地域部署的需要,也會(huì)考慮生產(chǎn)環(huán)境/日常環(huán)境/運(yùn)維管理區(qū)的隔離性,會(huì)把不同的環(huán)境部署在不同的VPC上,不同VPC之間互相訪問的需要也是比較常見的。
六 總結(jié)
目前VTrace系統(tǒng)已經(jīng)在阿里云網(wǎng)絡(luò)內(nèi)部大規(guī)模普及,效果顯著,大大減少了診斷時(shí)間,從人為處理的平均幾小時(shí)下降到分鐘級(jí)的耗時(shí),現(xiàn)在它已經(jīng)成為云網(wǎng)絡(luò)故障排查必不可少的工具,未來將會(huì)逐步開放給阿里云用戶,讓阿里云用戶也能體驗(yàn)到VTrace帶來的極速網(wǎng)絡(luò)排障能力。