筆者所在單位有多個分支機構(gòu),各分支機構(gòu)通過租用運營商的線路連接至筆者所在單位的城域網(wǎng)路由器,再通過地址轉(zhuǎn)換設(shè)備使用統(tǒng)一的互聯(lián)網(wǎng)出口訪問互聯(lián)網(wǎng)。單位對外發(fā)布業(yè)務(wù)的服務(wù)器部署于DMZ區(qū),通過邊緣層的防火墻發(fā)布至外網(wǎng)。各分支機構(gòu)通過互聯(lián)網(wǎng)訪問發(fā)布的業(yè)務(wù)。圖1是內(nèi)部網(wǎng)絡(luò)拓撲圖。
圖1 網(wǎng)絡(luò)拓撲結(jié)構(gòu)
單位發(fā)布了一套視頻學(xué)習(xí)系統(tǒng)供業(yè)務(wù)培訓(xùn)使用,系統(tǒng)部署于DMZ區(qū),通過防火墻向互聯(lián)網(wǎng)發(fā)布,分支機構(gòu)通過公網(wǎng)訪問該系統(tǒng)。系統(tǒng)上線后,部分分支反映用戶在客戶端播放視頻時出現(xiàn)卡頓的現(xiàn)象,但是從客戶端能正常Ping通系統(tǒng)的公網(wǎng)地址202.x.x.36。位于筆者單位內(nèi)部的用戶能正常訪問該系統(tǒng)。
圖2 抓包信息
根據(jù)故障現(xiàn)象及和分支維護人員的溝通,筆者分析故障的可能原因如下。
1.服務(wù)器性能不足。
2.網(wǎng)絡(luò)、安全設(shè)備性能不足。
3.到各分支鏈路帶寬不足。
4.運營商城域網(wǎng)線路問題。
1.監(jiān)測服務(wù)器。在服務(wù)器上對CPU、內(nèi)存、存儲、網(wǎng)絡(luò)進行檢測,服務(wù)器使用率比較低,系統(tǒng)運行正常。
2.監(jiān)測網(wǎng)絡(luò)、安全設(shè)備。對服務(wù)器接入網(wǎng)絡(luò)、核心交換機、防火墻的CPU、內(nèi)存、包轉(zhuǎn)發(fā)進行檢測,也在合理的范圍內(nèi)。防火墻的安全策略也沒有問題,上網(wǎng)行為審計設(shè)備沒有限制帶寬。鑒于筆者所在單位內(nèi)部的用戶能正常通過公網(wǎng)訪問視頻,可基本排除中心服務(wù)器端出現(xiàn)故障的可能。
3.監(jiān)測各分支鏈路帶寬。登錄到分支路由器,分支路由器上的CPU、內(nèi)存使用率也很低,端口無明顯錯誤報文,端口數(shù)據(jù)流量不高,線路也比較穩(wěn)定。
4.經(jīng)監(jiān)測以上幾個方面從表面看都沒有問題,沒有辦法,筆者到其中一個分支,觀察故障現(xiàn)象。在該分支上 Ping系統(tǒng)的公網(wǎng)地址沒有問題,但是看視頻時確實卡頓,只能通過抓包的方式分析故障原因。
分別在故障分支客戶端上抓包,發(fā)現(xiàn)有大量的要求重傳的報文和丟失的報文(如圖2)。
與在中心端客戶端所抓的包文做比較,在中心端的抓包沒有此現(xiàn)象。
通過對比兩者的抓包結(jié)果和兩者的網(wǎng)絡(luò)區(qū)別,突然想到,分支到中心端的線路是專線線路,會不會是運行商的MPLS線路呢,這樣的話,數(shù)據(jù)包就會在運營商的網(wǎng)絡(luò)設(shè)備上打上MPLS標(biāo)簽,數(shù)據(jù)包很有可能超過網(wǎng)絡(luò)設(shè)備的MTU值,就會造成數(shù)據(jù)包分片,甚至部分分片的數(shù)據(jù)包丟失。馬上聯(lián)系運營商確認,結(jié)果確實如此。
馬上查閱相關(guān)資料,使用兩種方式解決此問題。
一是在客戶端通過Ping -l 加上字節(jié)數(shù)到服務(wù)器確認兩者的MTU,然后在Windows 操作系統(tǒng)下通過netsh interface ipv4 set subinterface "本地連接"mtu=1480 store=persistent命令修改了客戶端的MTU值,重啟電腦再查看服務(wù)器視頻,視頻能夠流暢播放了。
二是在分支機構(gòu)的接入路由器接口上通過“tcp mss 884”命令將MSS值改為884字節(jié),所有的電腦都能正常播放視頻了。
由于中心到分支使用了嵌套的MPLS網(wǎng)絡(luò),在IP包前封裝了MPLS標(biāo)簽,導(dǎo)致MTU的增大超過了1500字節(jié),進而使報文被分片處理,導(dǎo)致了訪問服務(wù)器效率降低。同時,被分片的的字節(jié)過小的話,會被安全設(shè)備當(dāng)做攻擊報文而丟棄。修改MTU值或MSS值后,報文不會被分包處理,提高了訪問效率。