絡(luò)測(cè)試儀表實(shí)戰(zhàn):從數(shù)據(jù)中心到園區(qū)網(wǎng)的驗(yàn)收方案與踩坑記錄)
網(wǎng)絡(luò)測(cè)試這個(gè)活兒干得越久越覺得難的不是全棧網(wǎng)絡(luò)測(cè)試儀表不會(huì)用而是問(wèn)題說(shuō)不清。鏈路通了不代表業(yè)務(wù)流暢時(shí)延正常不代表應(yīng)用體驗(yàn)好設(shè)備CPU不高也可能丟包嚴(yán)重。我參與過(guò)的不少網(wǎng)絡(luò)驗(yàn)收項(xiàng)目都卡在同一個(gè)環(huán)節(jié)測(cè)試方案各做各的物理層用光功率計(jì)數(shù)據(jù)面用打流工具應(yīng)用層再用仿真腳本出了跨層問(wèn)題很難快速收斂。這篇就把我們半年多跑過(guò)的測(cè)試方案與場(chǎng)景實(shí)踐完整捋一遍包括設(shè)計(jì)邏輯、參數(shù)選擇、實(shí)測(cè)案例和踩坑記錄給同樣在搞網(wǎng)絡(luò)驗(yàn)收和運(yùn)維的同行做個(gè)參考。1. 全棧網(wǎng)絡(luò)測(cè)試儀表到底把哪些能力塞進(jìn)了一臺(tái)機(jī)器先說(shuō)一個(gè)很現(xiàn)實(shí)的問(wèn)題市面上的網(wǎng)絡(luò)測(cè)試工具不少但多數(shù)是“單科狀元”。負(fù)責(zé)物理鏈路的只管誤碼率負(fù)責(zé)路由協(xié)議的只管控制面收斂負(fù)責(zé)應(yīng)用層的只管HTTP事務(wù)成功率。真正到了數(shù)據(jù)中心搬遷、專線割接、新園區(qū)上線這種大節(jié)點(diǎn)你會(huì)發(fā)現(xiàn)需要同時(shí)搬三臺(tái)設(shè)備到現(xiàn)場(chǎng)每臺(tái)設(shè)備還要不同的操作人員最后報(bào)告格式還不統(tǒng)一等于各說(shuō)各話。1.1 傳統(tǒng)分段測(cè)試為什么越來(lái)越不夠用前兩年我們做某數(shù)據(jù)中心擴(kuò)容驗(yàn)收物理鏈路用一臺(tái)光功率計(jì)測(cè)衰減用另一套儀表打二層流量跑吞吐應(yīng)用層又專門起了一臺(tái)仿真服務(wù)器跑業(yè)務(wù)腳本。三層測(cè)試分開做最直接的后果是吞吐測(cè)試發(fā)現(xiàn)丟包但根本說(shuō)不清是光纖衰耗大、交換機(jī)轉(zhuǎn)發(fā)瓶頸還是光模塊收發(fā)光異常。因?yàn)槿_(tái)設(shè)備沒有統(tǒng)一的時(shí)間基準(zhǔn)連“丟包發(fā)生的那一刻其他層在干什么”都對(duì)齊不了。后來(lái)團(tuán)隊(duì)里A同學(xué)提了一個(gè)思路能不能按“端到端業(yè)務(wù)視角”來(lái)做驗(yàn)收而不是按層級(jí)分開測(cè)于是我們開始找能同時(shí)覆蓋物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和應(yīng)用層的設(shè)備這才注意到網(wǎng)測(cè)科技的全棧測(cè)試儀表。所謂“全?!蓖ㄋ字v就是一臺(tái)機(jī)器既能當(dāng)光模塊誤碼儀又能當(dāng)路由協(xié)議模擬器還能當(dāng)應(yīng)用層壓力機(jī)并且這些能力共用同一個(gè)時(shí)鐘源、同一套統(tǒng)計(jì)口徑。1.2 全棧儀表的關(guān)鍵能力與參數(shù)選型的時(shí)候我們對(duì)比了幾類產(chǎn)品最后留下的核心參數(shù)要求是這樣的能力域關(guān)鍵指標(biāo)我們的最低要求物理層端口類型支持10GE/25GE/40GE/100GE光口物理層誤碼率測(cè)試支持PRBS碼型誤碼率統(tǒng)計(jì)到10的負(fù)12次方量級(jí)數(shù)據(jù)鏈路層幀長(zhǎng)與VLAN支持64到9216字節(jié)自定義幀可嵌套多級(jí)VLAN網(wǎng)絡(luò)層路由協(xié)議至少支持常見動(dòng)態(tài)路由協(xié)議模擬如OSPF、BGP傳輸層連接能力單端口并發(fā)連接數(shù)不低于數(shù)百萬(wàn)級(jí)應(yīng)用層業(yè)務(wù)仿真支持HTTP、數(shù)據(jù)庫(kù)、視頻流等主流業(yè)務(wù)流模型全局時(shí)間戳精度亞微秒級(jí)支持PTP或1588時(shí)鐘同步這里有個(gè)容易被忽略的點(diǎn)多端口。全棧儀表如果只有兩個(gè)測(cè)試端口很多場(chǎng)景根本沒法做。比如測(cè)雙鏈路主備切換至少需要四個(gè)端口——兩個(gè)接主鏈路方向兩個(gè)接備鏈路方向才能模擬鏈路的真實(shí)拓?fù)?。我們最后選的是一臺(tái)帶八個(gè)100GE端口的中型機(jī)箱平時(shí)現(xiàn)場(chǎng)測(cè)試一臺(tái)就能搞定這是傳統(tǒng)分體方案比不了的優(yōu)勢(shì)。2. 從需求到執(zhí)行測(cè)試方案設(shè)計(jì)的一整套流程很多人拿到儀表先連上線開測(cè)這是最容易翻車的操作。全棧儀表功能多反而更需要先想清楚測(cè)什么、邊界在哪里。我們現(xiàn)在的標(biāo)準(zhǔn)流程是“畫像—拆解—定基準(zhǔn)—執(zhí)行—復(fù)盤”五步前兩步?jīng)Q定了測(cè)試的有效性后兩步?jīng)Q定了測(cè)試的可信度。2.1 先畫被測(cè)系統(tǒng)畫像畫像這一步核心是把網(wǎng)絡(luò)拓?fù)?、設(shè)備清單、業(yè)務(wù)模型、變更窗口四件事畫在一張圖上。以某數(shù)據(jù)中心擴(kuò)容為例新增了四個(gè)機(jī)柜接入層換了支持100GE上聯(lián)的新型號(hào)交換機(jī)核心層配置了動(dòng)態(tài)路由業(yè)務(wù)上要跑三套應(yīng)用——Web訪問(wèn)、數(shù)據(jù)庫(kù)同步、視頻流傳輸。畫完拓?fù)鋱D之后要標(biāo)注每個(gè)鏈路的“最大期望流量”。這里我有一個(gè)具體做法先看歷史監(jiān)控平臺(tái)上的峰值流量再問(wèn)業(yè)務(wù)方未來(lái)半年的增量預(yù)期兩者相乘再乘1.5的安全系數(shù)就是測(cè)試目標(biāo)流量。比如Web業(yè)務(wù)當(dāng)前峰值2Gbps預(yù)期翻一倍那測(cè)試目標(biāo)就是6Gbps左右。這個(gè)數(shù)字不是拍腦袋定的是能讓業(yè)務(wù)方簽字確認(rèn)的驗(yàn)收基線。2.2 三層用例拆解法畫像畫完用例按三層拆。物理層用例包括光纖衰減、誤碼率、光模塊收發(fā)光功率網(wǎng)絡(luò)層用例包括二三層轉(zhuǎn)發(fā)時(shí)延、路由收斂時(shí)間、ACL命中應(yīng)用層用例包括業(yè)務(wù)事務(wù)成功率、響應(yīng)時(shí)間分布、并發(fā)用戶上限。每一層用例都要能獨(dú)立執(zhí)行同時(shí)又能聯(lián)合分析。舉個(gè)例子我們?cè)谠O(shè)計(jì)“視頻流傳輸質(zhì)量”這條用例時(shí)網(wǎng)絡(luò)層同時(shí)打了一條“UDP大包高帶寬流量”作為背景流量。這樣做的目的是驗(yàn)證當(dāng)網(wǎng)絡(luò)有壓力時(shí)視頻流是否還能保持穩(wěn)定幀率而不是在空載網(wǎng)絡(luò)里測(cè)一個(gè)理想值。這種“背景流量業(yè)務(wù)流量”疊加的方式是分段測(cè)試最難實(shí)現(xiàn)的。2.3 基準(zhǔn)值與閾值怎么定定閾值這件事我們踩過(guò)一次很深的坑。最早做園區(qū)網(wǎng)絡(luò)驗(yàn)收時(shí)把時(shí)延閾值直接定成“越小越好”結(jié)果鏈路空載時(shí)平均時(shí)延0.2毫秒加背景流量后跳到1.8毫秒業(yè)務(wù)方認(rèn)為不合格但網(wǎng)絡(luò)團(tuán)隊(duì)說(shuō)這個(gè)值已經(jīng)優(yōu)于設(shè)計(jì)指標(biāo)了兩邊僵了一周。后來(lái)我們改成按業(yè)界常見的基準(zhǔn)模型來(lái)定不再自己拍腦袋二層轉(zhuǎn)發(fā)按線速要求三層轉(zhuǎn)發(fā)參考標(biāo)準(zhǔn)測(cè)試基準(zhǔn)業(yè)務(wù)驗(yàn)收按Y.1564這類業(yè)務(wù)配置模型來(lái)走。標(biāo)準(zhǔn)不一定完全貼合業(yè)務(wù)但它提供了一個(gè)公認(rèn)的“公平參照系”最大的價(jià)值是讓甲乙雙方在測(cè)試前就把合格線說(shuō)清楚而不是測(cè)試后互相拉扯。閾值建議一次性寫進(jìn)方案文檔評(píng)審?fù)ㄟ^(guò)后就不允許單方面改。3. 場(chǎng)景一數(shù)據(jù)中心擴(kuò)容與整機(jī)性能驗(yàn)收數(shù)據(jù)中心這個(gè)場(chǎng)景最典型的特點(diǎn)是“高密度、大流量、對(duì)可靠性要求苛刻”。我們的驗(yàn)收通常分三個(gè)階段先證明路是通的再證明路是寬的最后證明路上跑業(yè)務(wù)不難受。3.1 鏈路與誤碼先證明“路是通的”物理鏈路驗(yàn)證很多人覺得只要link up就行這是最大的誤解。光模塊對(duì)接成功后我們直接用儀表起PRBS碼型測(cè)試連續(xù)跑十五分鐘看誤碼率。有一次測(cè)試發(fā)現(xiàn)一條40公里DC互聯(lián)鏈路的誤碼率在10的負(fù)9次方量級(jí)表面看網(wǎng)絡(luò)是通的但這樣的誤碼率在傳輸大文件時(shí)會(huì)產(chǎn)生大量重傳業(yè)務(wù)體感會(huì)非常差。排查鏈路顯示問(wèn)題出在光模塊收光功率接近靈敏度閾值再查發(fā)現(xiàn)是ODF架上的法蘭盤灰塵太多。清潔之后收光功率上來(lái)了三個(gè)dB誤碼率直接降到零。這個(gè)案例給我們的教訓(xùn)是誤碼率測(cè)試不能省凡是光鏈路必須測(cè)滿十五分鐘以上并且要看誤碼實(shí)時(shí)曲線而不是只看最終平均值。3.2 吞吐與并發(fā)把數(shù)據(jù)面壓到極限鏈路驗(yàn)證通過(guò)后進(jìn)入數(shù)據(jù)面壓測(cè)。我們會(huì)用儀表的多個(gè)端口同時(shí)向被測(cè)交換機(jī)打流量從64字節(jié)小包到9216字節(jié)巨幀全覆蓋逐步提高線速百分比。這里看兩個(gè)關(guān)鍵指標(biāo)一是不同幀長(zhǎng)下的線速轉(zhuǎn)發(fā)能力二是加擾過(guò)程中有沒有丟包。小包轉(zhuǎn)發(fā)最能暴露設(shè)備轉(zhuǎn)發(fā)瓶頸。因?yàn)樾“棵氚鼣?shù)多CPU和芯片處理壓力大。實(shí)際測(cè)試中我們發(fā)現(xiàn)某型號(hào)交換機(jī)宣稱支持線速轉(zhuǎn)發(fā)但在64字節(jié)幀下達(dá)到80%線速就開始輕微丟包而廠商的規(guī)格書只寫了“支持線速”沒寫條件。這種問(wèn)題如果不實(shí)測(cè)上線后很容易在突發(fā)流量下出故障。另外并發(fā)連接測(cè)試要模擬真實(shí)的TCP會(huì)話模型不能只追求連接數(shù)大。我們通常設(shè)置“連接建立速率”和“連接保持?jǐn)?shù)”兩個(gè)維度比如每秒建立5萬(wàn)個(gè)新連接同時(shí)保持兩百萬(wàn)個(gè)長(zhǎng)連接觀察設(shè)備會(huì)話表是否正常老化、新建會(huì)話是否受影響。3.3 QoS與業(yè)務(wù)體驗(yàn)從指標(biāo)到體驗(yàn)網(wǎng)絡(luò)指標(biāo)合格不等于業(yè)務(wù)體驗(yàn)合格。我們做驗(yàn)收時(shí)會(huì)在壓測(cè)流中疊加標(biāo)注了不同優(yōu)先級(jí)的流量檢查交換機(jī)有沒有按配置做隊(duì)列調(diào)度。其中一個(gè)測(cè)試方法是把視頻流打上高優(yōu)先級(jí)標(biāo)簽把大文件傳輸流設(shè)為低優(yōu)先級(jí)在全鏈路擁塞的情況下觀察視頻流是否仍然保持低時(shí)延、低抖動(dòng)低優(yōu)先級(jí)流量是否被合理丟棄。實(shí)測(cè)下來(lái)如果設(shè)備沒開QoS高優(yōu)先級(jí)流和低優(yōu)先級(jí)流的時(shí)延會(huì)一起惡化視頻就會(huì)出現(xiàn)卡頓開啟嚴(yán)格優(yōu)先隊(duì)列后高優(yōu)先級(jí)流的平均時(shí)延能從擁塞時(shí)的5毫秒回落到0.3毫秒左右。這個(gè)對(duì)比數(shù)據(jù)是網(wǎng)絡(luò)團(tuán)隊(duì)向業(yè)務(wù)方解釋“為什么要開QoS”最有說(shuō)服力的素材。4. 場(chǎng)景二廣域網(wǎng)專線與分支機(jī)構(gòu)鏈路評(píng)估廣域網(wǎng)場(chǎng)景和機(jī)房完全不同。鏈路距離長(zhǎng)、中間經(jīng)過(guò)的設(shè)備多、運(yùn)營(yíng)商責(zé)任邊界模糊一旦業(yè)務(wù)體驗(yàn)不好很難說(shuō)是哪一段的問(wèn)題。我們的策略是用儀表做“主動(dòng)測(cè)量”讓問(wèn)題在割接窗口內(nèi)暴露出來(lái)。4.1 雙鏈路切換與故障注入某分支機(jī)構(gòu)從單專線改成雙鏈路主備接入后需要在割接前驗(yàn)證切換可靠性。我們用了四端口方案兩個(gè)端口模擬主用鏈路方向兩個(gè)端口模擬備用鏈路方向中間接入一臺(tái)廣域網(wǎng)加速設(shè)備。測(cè)試時(shí)在主鏈路方向上注入斷鏈故障同時(shí)儀器以每秒一次的高頻采樣方式記錄業(yè)務(wù)流的連續(xù)狀態(tài)。實(shí)測(cè)發(fā)現(xiàn)業(yè)務(wù)中斷時(shí)間約1.2秒超出業(yè)務(wù)方承諾的“秒級(jí)切換”預(yù)期。進(jìn)一步排查發(fā)現(xiàn)斷鏈后路由協(xié)議要等三個(gè)丟失探測(cè)周期才觸發(fā)切換把探測(cè)報(bào)文間隔調(diào)小后切換時(shí)間降到400毫秒以內(nèi)。如果沒有全棧儀表同時(shí)模擬主備方向流量這種切換性能驗(yàn)證很難在現(xiàn)場(chǎng)可信地完成。4.2 網(wǎng)絡(luò)損傷模型對(duì)業(yè)務(wù)的影響廣域網(wǎng)驗(yàn)收還要回答一個(gè)問(wèn)題鏈路質(zhì)量差到什么程度業(yè)務(wù)會(huì)真正變卡我們用儀表內(nèi)置的網(wǎng)絡(luò)損傷模型來(lái)模擬不同鏈路狀態(tài)參數(shù)包括丟包率、單向時(shí)延、時(shí)延抖動(dòng)、帶寬限制。當(dāng)時(shí)測(cè)了一套數(shù)據(jù)庫(kù)遠(yuǎn)程同步業(yè)務(wù)測(cè)試結(jié)果很典型損傷條件事務(wù)平均響應(yīng)時(shí)間業(yè)務(wù)表現(xiàn)正常狀態(tài)12ms流暢增加20ms單向時(shí)延42ms可接受有感知增加1%隨機(jī)丟包超過(guò)200ms明顯卡頓增加5%隨機(jī)丟包頻繁超時(shí)不可用這個(gè)數(shù)據(jù)告訴我們?cè)摌I(yè)務(wù)對(duì)丟包比對(duì)時(shí)延更敏感。所以在后續(xù)鏈路選型時(shí)我們更關(guān)注鏈路的丟包率指標(biāo)也據(jù)此調(diào)整了無(wú)線鏈路的糾錯(cuò)參數(shù)。4.3 7×24小時(shí)長(zhǎng)穩(wěn)回歸長(zhǎng)穩(wěn)測(cè)試聽起來(lái)簡(jiǎn)單就是把流量掛著跑一整天實(shí)際上最容易暴露兩類問(wèn)題一類是設(shè)備長(zhǎng)時(shí)間運(yùn)行后內(nèi)存緩慢增長(zhǎng)另一類是緩存池老化導(dǎo)致轉(zhuǎn)發(fā)時(shí)延逐步升高。我們的標(biāo)準(zhǔn)做法是用儀表按“工作日早高峰模型”循環(huán)打流早高峰帶寬拉滿午間降為40%夜間降到10%連續(xù)跑七天每小時(shí)記錄一次時(shí)延、丟包、CPU、內(nèi)存。這種周期性模型比恒定壓力更能暴露調(diào)度算法的缺陷。實(shí)際測(cè)試中某臺(tái)邊緣設(shè)備在第三天凌晨出現(xiàn)內(nèi)存增長(zhǎng)不回落的跡象重啟后恢復(fù)我們據(jù)此要求廠商更新了版本才繼續(xù)后續(xù)驗(yàn)收。5. 場(chǎng)景三園區(qū)網(wǎng)接入與安全策略驗(yàn)證園區(qū)網(wǎng)看起來(lái)技術(shù)含量比數(shù)據(jù)中心低但接入終端五花八門PoE供電、DHCP壓力、安全策略誤殺都是高頻翻車點(diǎn)。全棧儀表在這種場(chǎng)景里的價(jià)值主要是能一部頂多部快速把接入側(cè)能力摸清楚。5.1 接入層壓力與PoE供電驗(yàn)證園區(qū)接入層最常見的問(wèn)題是PoE供電不足。我們遇到過(guò)某一款A(yù)P接上后頻繁重啟查了一圈最后發(fā)現(xiàn)是交換機(jī)PoE預(yù)算不足AP啟動(dòng)瞬間功率超了閾值。用儀表做PoE驗(yàn)證時(shí)我們會(huì)模擬多臺(tái)高功率PD設(shè)備同時(shí)連接逐端口查看分配的功率等級(jí)和實(shí)際輸出功率是否匹配。DHCP壓力測(cè)試也值得做。用儀表模擬幾百個(gè)終端同時(shí)請(qǐng)求地址觀察DHCP服務(wù)器響應(yīng)成功率和分配速度。實(shí)測(cè)某園區(qū)網(wǎng)絡(luò)上聯(lián)擴(kuò)容后DHCP地址池配置錯(cuò)誤導(dǎo)致部分終端獲取不到地址這類問(wèn)題在業(yè)務(wù)方自己拿電腦測(cè)試時(shí)根本發(fā)現(xiàn)不了因?yàn)閿?shù)量不夠。5.2 安全策略命中與限速隔離驗(yàn)證園區(qū)網(wǎng)通常有防火墻和ACL策略我們驗(yàn)收時(shí)會(huì)用儀表構(gòu)造帶有不同特征標(biāo)記的業(yè)務(wù)流驗(yàn)證三類問(wèn)題一是策略有沒有匹配預(yù)期二是匹配到策略后放行和阻斷是否符合預(yù)期三是限速策略是否真的把流量壓到設(shè)定帶寬。有一次現(xiàn)場(chǎng)驗(yàn)證發(fā)現(xiàn)某條限速策略配置成“雙向各限10Mbps”實(shí)際測(cè)試時(shí)下行確實(shí)到10Mbps就丟包但上行能跑到50Mbps。排查發(fā)現(xiàn)設(shè)備對(duì)“限速方向”的語(yǔ)義理解和我們預(yù)期不一樣后來(lái)把策略拆成上行和下行兩條分別配置才正常。這種細(xì)節(jié)用業(yè)務(wù)腳本很難覆蓋但流量發(fā)生器能輕松復(fù)現(xiàn)。5.3 無(wú)線漫游與終端兼容性測(cè)試園區(qū)無(wú)線驗(yàn)收我們除了測(cè)信號(hào)覆蓋還會(huì)用儀表模擬終端做漫游測(cè)試。核心指標(biāo)是漫游切換時(shí)延和丟包數(shù)。測(cè)試方法是模擬一臺(tái)終端在兩個(gè)AP之間來(lái)回移動(dòng)同時(shí)持續(xù)傳輸U(kuò)DP流觀察切換過(guò)程中的丟包窗口。有一個(gè)問(wèn)題是有些AP組合在漫游時(shí)會(huì)觸發(fā)一次較長(zhǎng)的重認(rèn)證過(guò)程導(dǎo)致切換時(shí)延超過(guò)200毫秒實(shí)際表現(xiàn)為視頻通話短暫卡頓。通過(guò)儀表的精確時(shí)間戳記錄我們把問(wèn)題定位到認(rèn)證服務(wù)器的會(huì)話緩存配置上調(diào)整之后切換時(shí)延降到50毫秒以內(nèi)。這種跨AP、跨認(rèn)證鏈路的聯(lián)合分析只有在時(shí)間戳統(tǒng)一的條件下才能做到。6. 實(shí)測(cè)中反復(fù)踩過(guò)的三個(gè)坑再全棧的儀表落地時(shí)也會(huì)遇到“儀表自身沒問(wèn)題、測(cè)試方法有問(wèn)題”的情況。這三類坑我們反復(fù)踩過(guò)每一條都是用真金白銀換來(lái)的教訓(xùn)。6.1 端口鏡像丟包讓誤碼率“假陽(yáng)性”做鏈路測(cè)試時(shí)有人習(xí)慣把儀表接到交換機(jī)的端口鏡像口上想“順便”看一下真實(shí)流量中的誤碼。這個(gè)做法相當(dāng)危險(xiǎn)。端口鏡像本身在復(fù)制報(bào)文時(shí)就會(huì)丟包儀表會(huì)把這種丟包當(dāng)成鏈路誤碼得出“鏈路質(zhì)量不合格”的錯(cuò)誤結(jié)論。我們的處理原則是誤碼率測(cè)試必須用物理透?jìng)鞣绞阶屃髁空鎸?shí)經(jīng)過(guò)被測(cè)鏈路而不是通過(guò)鏡像口觀察如果確實(shí)要看真實(shí)流量那就明確區(qū)分“在線監(jiān)測(cè)”和“在線測(cè)試”兩種模式不要在驗(yàn)收?qǐng)?bào)告里混用數(shù)據(jù)。這個(gè)坑最開始讓我們白白排查了兩天就因?yàn)闆]注意到儀表接的是鏡像口。6.2 時(shí)間戳精度不夠時(shí)延測(cè)試沒有意義時(shí)延測(cè)試的前提是兩端時(shí)鐘對(duì)齊。全棧儀表如果內(nèi)部沒有高精度時(shí)鐘或者沒有啟用PTP同步測(cè)得的一跳時(shí)延誤差可能比實(shí)際時(shí)延還大。具體案例我們測(cè)一條跨城專線時(shí)延第一次測(cè)得平均時(shí)延3.8毫秒第二次重測(cè)變成5.6毫秒差異來(lái)源就是儀表沒有完成時(shí)鐘同步。啟用1588時(shí)鐘同步之后連續(xù)多次測(cè)試結(jié)果穩(wěn)定在4.2毫秒上下數(shù)據(jù)才真正可用?,F(xiàn)在我們的標(biāo)準(zhǔn)操作是任何時(shí)延測(cè)試前先檢查儀表主從時(shí)鐘同步狀態(tài)同步未達(dá)到鎖定狀態(tài)絕不開測(cè)。6.3 打流太猛把現(xiàn)網(wǎng)業(yè)務(wù)誤傷在現(xiàn)網(wǎng)設(shè)備上做測(cè)試最怕把測(cè)試流量打到了生產(chǎn)業(yè)務(wù)上。有一次我們想測(cè)一臺(tái)核心交換機(jī)的剩余容量直接把儀表兩個(gè)端口分別接到兩個(gè)業(yè)務(wù)VLAN里打背景流量結(jié)果高優(yōu)先級(jí)業(yè)務(wù)流量被擠掉了一截引來(lái)業(yè)務(wù)方投訴。從那以后我們給測(cè)試立了規(guī)矩所有現(xiàn)網(wǎng)設(shè)備的壓力測(cè)試必須部署獨(dú)立測(cè)試VLAN或者在低峰期窗口執(zhí)行背景流量上限原則上不超過(guò)鏈路帶寬的30%并且先和業(yè)務(wù)方確認(rèn)影響邊界。全棧儀表雖然能打出線速流量不代表你就有權(quán)把所有線速打到生產(chǎn)網(wǎng)絡(luò)里。7. 把單次測(cè)試變成持續(xù)測(cè)試自動(dòng)化與報(bào)告測(cè)試儀表如果只能到現(xiàn)場(chǎng)調(diào)試價(jià)值會(huì)大打折扣?,F(xiàn)在網(wǎng)絡(luò)變更越來(lái)越頻繁我們把大量常規(guī)測(cè)試腳本化讓儀表像一臺(tái)“持續(xù)運(yùn)行的探針”一樣嵌入日常運(yùn)維。7.1 用Python腳本把測(cè)試任務(wù)自動(dòng)化我們目前的做法是把常用的測(cè)試用例封裝成Python腳本通過(guò)儀表的接口下發(fā)配置、啟動(dòng)測(cè)試、收集結(jié)果。from nettest_api import TestSession session TestSession(host192.0.2.10) session.initialize() task session.create_task(throughput_test) task.set_ports(txport1, rxport2) task.set_traffic(framesize128, line_rate80, duration60) task.start() result task.get_result() session.export_report(formatjson, path/report/throughput_test.json)這個(gè)自動(dòng)化的價(jià)值在于同一個(gè)用例在不同設(shè)備、不同時(shí)間跑出來(lái)的結(jié)果口徑完全一致不用再依賴操作人員手動(dòng)調(diào)節(jié)參數(shù)?,F(xiàn)在設(shè)備到貨驗(yàn)收、版本升級(jí)回歸我們都會(huì)自動(dòng)跑一遍基線用例半小時(shí)內(nèi)生成一份對(duì)比報(bào)告效率比之前高了至少三倍。7.2 測(cè)試報(bào)告標(biāo)準(zhǔn)化與團(tuán)隊(duì)協(xié)作報(bào)告標(biāo)準(zhǔn)化這件事優(yōu)先級(jí)經(jīng)常被低估。我們一開始的報(bào)告五花八門有的只寫“通過(guò)”有的貼一堆原始截圖復(fù)盤時(shí)根本沒法橫向比較。后來(lái)統(tǒng)一了報(bào)告字段測(cè)試場(chǎng)景、拓?fù)浜?jiǎn)圖、儀器端口、流量模型、壓力參數(shù)、觀測(cè)時(shí)長(zhǎng)、判定閾值、原始結(jié)果、結(jié)論、遺留問(wèn)題。每個(gè)字段都是必填項(xiàng)。A同學(xué)負(fù)責(zé)出報(bào)告網(wǎng)絡(luò)團(tuán)隊(duì)負(fù)責(zé)結(jié)論初判業(yè)務(wù)方最后簽字確認(rèn)。這份報(bào)告既是驗(yàn)收憑證也是后續(xù)排障的基線數(shù)據(jù)。自動(dòng)化腳本跑的回歸測(cè)試如果結(jié)果超過(guò)閾值會(huì)直接觸發(fā)告警并附上前一次測(cè)試的對(duì)比數(shù)據(jù)。這樣一來(lái)網(wǎng)絡(luò)團(tuán)隊(duì)不用每次都看原始日志問(wèn)題就能被快速定位到“哪一次變更引入了劣化”。我自己實(shí)際操作下來(lái)感受最深的一點(diǎn)是全棧網(wǎng)絡(luò)測(cè)試儀表只是一件工具測(cè)試方案才是真正的靈魂。同一臺(tái)設(shè)備測(cè)前有沒有畫像、用例有沒有疊加背景流、閾值有沒有和業(yè)務(wù)方對(duì)齊跑出來(lái)的結(jié)果可能是完全不同的兩套結(jié)論。工具幫我們把各層數(shù)據(jù)拉到同一張時(shí)間軸上但決定測(cè)試做得對(duì)不對(duì)的還是我們自己的方法和流程。建議每一個(gè)團(tuán)隊(duì)在添置儀表的同時(shí)把方案評(píng)審和報(bào)告標(biāo)準(zhǔn)一并定下來(lái)這個(gè)投入比買設(shè)備本身更值錢。