引言:筆者單位的一個(gè)下級(jí)單位報(bào)告,在單位辦公網(wǎng)站下載一個(gè)大約3.4GB的一個(gè)軟件失敗,觀看視頻有明顯卡頓和馬賽克現(xiàn)象。經(jīng)排查,發(fā)現(xiàn)故障是由于光纜線路使用年限過長(zhǎng),老化非常嚴(yán)重,導(dǎo)致數(shù)據(jù)收發(fā)異常。因業(yè)務(wù)不能中斷,筆者通過調(diào)整服務(wù)器的“最大重新傳輸超時(shí)”(RTO)、“最大傳輸單元”(MTU)、“最大重傳次數(shù)”三個(gè)參數(shù)和交換機(jī)的MTU參數(shù),巧妙地解決了數(shù)據(jù)重傳故障。
筆者單位有很多下級(jí)單位,且各點(diǎn)位比較分散。一天,一個(gè)下級(jí)單位報(bào)告,在單位辦公網(wǎng)站下載一個(gè)大約3.4GB的一個(gè)軟件失敗,然而在門戶網(wǎng)站可以在線觀看視頻,但在觀看電影時(shí)有明顯卡頓和馬賽克現(xiàn)象出現(xiàn)。
針對(duì)問題,筆者確定到下級(jí)單位的網(wǎng)絡(luò)鏈路基本正常,首先懷疑可能是辦公網(wǎng)站上的軟件下載鏈接存在錯(cuò)誤。找到該軟件的網(wǎng)站鏈接地址,無論是使用鼠標(biāo)右鍵“目標(biāo)另存為”還是使用迅雷等軟件下載該軟件均正常,說明該軟件的下載鏈接沒有問題,很可能是下級(jí)單位計(jì)算機(jī)操作系統(tǒng)存在問題。讓下級(jí)單位更換幾臺(tái)計(jì)算機(jī)重新下載該軟件測(cè)試,當(dāng)使用鼠標(biāo)右鍵“目標(biāo)另存為”的方式下載時(shí),過不了幾秒,鏈接還是會(huì)中斷,下載均失敗。
為了解決問題,筆者使用“遠(yuǎn)程桌面”登錄該計(jì)算機(jī),結(jié)果發(fā)現(xiàn)“遠(yuǎn)程桌面”無法正常建立,Ping了一下該計(jì)算機(jī)3389端口,丟包率為0,網(wǎng)絡(luò)正常。筆者又使用65500字節(jié)大小的數(shù)據(jù)包Ping該計(jì)算機(jī),丟包率高達(dá)33%,網(wǎng)絡(luò)基本不可用。
1.根據(jù)故障現(xiàn)象和測(cè)試結(jié)果,筆者認(rèn)為網(wǎng)絡(luò)中可能存在廣播風(fēng)暴或ARP病毒等,造成網(wǎng)絡(luò)阻塞,數(shù)據(jù)包超時(shí)丟失。遂對(duì)下級(jí)單位的所有上網(wǎng)計(jì)算機(jī)進(jìn)行了病毒查殺,結(jié)果并未查殺到病毒。
2.對(duì)所有的網(wǎng)絡(luò)連接點(diǎn)進(jìn)行了檢查,發(fā)現(xiàn)各連接點(diǎn)并沒有出現(xiàn)松脫、連接不緊密、線路短路等現(xiàn)象。
3.因?qū)ο逻B接的網(wǎng)絡(luò)特別簡(jiǎn)單,就是“計(jì)算機(jī)終端→交接機(jī)→光纖收發(fā)器→光纖收發(fā)器→交換機(jī)→計(jì)算機(jī)終端”的模式,對(duì)各網(wǎng)絡(luò)設(shè)備進(jìn)行了硬件測(cè)試,各網(wǎng)絡(luò)硬件工作均正常,沒有物理故障。
4.對(duì)下級(jí)單位的網(wǎng)絡(luò)流量數(shù)據(jù)包進(jìn)行捕獲,并對(duì)異常數(shù)據(jù)包進(jìn)行分析,發(fā)現(xiàn)網(wǎng)絡(luò)中并未出現(xiàn)病毒數(shù)據(jù)包和非合理廣播數(shù)據(jù)包,惟一異常的數(shù)據(jù)包就是部分TCP發(fā)送異常,很多TCP數(shù)據(jù)包都產(chǎn)生了超時(shí)。對(duì)這些超時(shí)的數(shù)據(jù)包進(jìn)行分析,發(fā)現(xiàn)錯(cuò)誤提示為“在數(shù)據(jù)報(bào)組裝期間生存時(shí)間為0”,也就是發(fā)生超時(shí),TCP數(shù)據(jù)包重組失敗。
數(shù)據(jù)包發(fā)生超時(shí)重傳的原因有很多,但是本故障中數(shù)據(jù)包發(fā)生重傳的原因是TCP數(shù)據(jù)報(bào)文過大造成的。在IP數(shù)據(jù)包傳輸過程中,數(shù)據(jù)包首先要判斷由哪個(gè)接口進(jìn)行轉(zhuǎn)發(fā),并查詢?cè)摻涌诘南嚓P(guān)參數(shù),以獲得其MTU(Maximum Transmission Unit,最大傳輸單元),網(wǎng)絡(luò)層把MTU值與要發(fā)送的IP數(shù)據(jù)包進(jìn)行長(zhǎng)度比較,如果IP數(shù)據(jù)包的長(zhǎng)度比MTU值大(一般默認(rèn)最大長(zhǎng)度值為1500字節(jié),MTU值不宜過大,也不宜過小,如果MTU配置過大,則可能會(huì)超過了接收端所能夠承受的最大值,或者是超過了發(fā)送路徑上途經(jīng)的某臺(tái)設(shè)備所能夠承受的最大值,也會(huì)造成報(bào)文分片甚至丟棄,加重網(wǎng)絡(luò)傳輸?shù)呢?fù)擔(dān),影響數(shù)據(jù)正常傳輸。MTU值過小的弊端在本文的最后有提及),就會(huì)對(duì)IP數(shù)據(jù)包進(jìn)行分片處理,分片后的數(shù)據(jù)包長(zhǎng)度小于或等于MTU值,當(dāng)分片數(shù)據(jù)報(bào)文都到達(dá)目的端后,會(huì)對(duì)所有的分片數(shù)據(jù)報(bào)文進(jìn)行重組,當(dāng)有一個(gè)分片或多個(gè)分片丟失后,就會(huì)造成數(shù)據(jù)報(bào)重組超時(shí),所以就會(huì)發(fā)送超時(shí)的錯(cuò)誤提示,導(dǎo)致TCP數(shù)據(jù)包傳輸異常。
導(dǎo)致數(shù)據(jù)重傳一般有以下原因:一是計(jì)算機(jī)病毒和廣播風(fēng)暴。當(dāng)網(wǎng)絡(luò)帶寬發(fā)生阻塞時(shí),很多TCP數(shù)據(jù)包會(huì)被延時(shí)接收,當(dāng)延時(shí)超過最大重傳時(shí)間時(shí),就會(huì)要求重傳。二是網(wǎng)絡(luò)設(shè)備設(shè)置不當(dāng)和物理故障。當(dāng)網(wǎng)絡(luò)中存在多種網(wǎng)絡(luò)設(shè)備時(shí),有人會(huì)對(duì)各類網(wǎng)絡(luò)設(shè)備設(shè)置不同的MTU,當(dāng)各類網(wǎng)絡(luò)設(shè)備的MTU不同時(shí),可能就會(huì)導(dǎo)致數(shù)據(jù)包重傳。比如,對(duì)路由器的MTU設(shè)置為1200字節(jié),而交換機(jī)的MTU設(shè)置為800字節(jié)時(shí),就有可能會(huì)造成數(shù)據(jù)重傳。三是網(wǎng)絡(luò)線路原因。當(dāng)各網(wǎng)絡(luò)連接節(jié)點(diǎn)連接不緊密或網(wǎng)絡(luò)鏈路出現(xiàn)其他異常故障時(shí),也會(huì)造成數(shù)據(jù)包重傳,而筆者單位發(fā)生這個(gè)故障就是光纜老化導(dǎo)致。
筆者單位到這個(gè)下級(jí)單位架設(shè)有一條超過38公里的光纜,光纜兩端使用光纖收發(fā)器進(jìn)行連接,來連通網(wǎng)絡(luò)。光纜大部分采用的是埋地方式敷設(shè),大約有9公里的光纜采用架空方式,雖然為鎧裝光纜,但使用時(shí)間已經(jīng)超過17年,期間光纜斷裂多次,光纜存在纖芯色散嚴(yán)重、油脂套管收縮嚴(yán)重、涂覆層油凝固、防水密封膠脫落、熱縮套管破裂、光纜接續(xù)盒進(jìn)水、外凱鋼絲層和內(nèi)徑加強(qiáng)鋼絲銹蝕等問題。特別是纖芯柔韌性降低明顯,極易折斷,使用OTDR(光時(shí)域反射儀)對(duì)光纜進(jìn)行測(cè)試時(shí),發(fā)現(xiàn)有多點(diǎn)和多段衰耗較大,光纜老化非常嚴(yán)重,其中架空部分光纜老化尤其嚴(yán)重,即使單位使用了60公里的光纖收發(fā)器,光纖收發(fā)器經(jīng)常不能很好地正常識(shí)別,導(dǎo)致數(shù)據(jù)收發(fā)異常。
因辦公需要,要求對(duì)下網(wǎng)絡(luò)中斷時(shí)間不得超過1小時(shí),為確保網(wǎng)絡(luò)能符合辦公要求,而此光纜又不可能立即重新敷設(shè),筆者采取了三種解決方法。
1.對(duì)衰耗特別嚴(yán)重的光纜進(jìn)行了更換。在對(duì)光纜進(jìn)行測(cè)試后,發(fā)現(xiàn)其中有1段大約長(zhǎng)2公里和1段大約長(zhǎng)1.5公里的光纜衰耗特別嚴(yán)重。在這兩處敷設(shè)了新的光纜,對(duì)這兩段的原有光纜進(jìn)行了更換,熔接用時(shí)約25分鐘。
2.在提供的服務(wù)器上,對(duì)“最大重新傳輸超時(shí)”(RTO,Retransmission Timeout)、“最大傳輸單元”(MTU)和“最大重傳次數(shù)”3個(gè)參數(shù)進(jìn)行了修改(服務(wù)器采用Windows 2003 Server操作系統(tǒng)),這里將RTO設(shè)置為5000ms,將MTU設(shè)置為800字節(jié),將“最大重傳次數(shù)”設(shè)置為5次。
(1)修改RTO這個(gè)參數(shù)可以采用兩種方法。
方法一:命令修改法。在操作系統(tǒng)中運(yùn)行“cmd”命令,然后依次運(yùn)行以下命令,netsh-interfaceipv4-show interface,可以查看到服務(wù)器外接的網(wǎng)絡(luò)接口所對(duì)應(yīng)的Idx值(如圖1)。
其對(duì)外服務(wù)的網(wǎng)卡接口名稱為“本地連接”,其對(duì)應(yīng)的Idx值為12。使用“set interface "12"retrasmittime=5000”命令就可以修改RTO這個(gè)參數(shù)為5000ms,修改的命令和結(jié)果如下:
確定。
方法二:修改注冊(cè)表法。運(yùn)行“regedit”命令打開注冊(cè)表,分別打開KEY_LOCALMACHINESystemCurrentControlSetServicesTcpipParametersInterfaces適配器ID(適配器ID可以根據(jù)對(duì)外網(wǎng)絡(luò)的網(wǎng)址來確定(如圖2),服務(wù)器中共有硬件或軟件等各類“網(wǎng)卡”7個(gè),圖中對(duì)外服務(wù)的為第三個(gè),其網(wǎng)關(guān)為192.168.1.1,自己的IP地址為192.168.1.100),添加“TCPInitialRtt” 名稱的屬性項(xiàng),數(shù)據(jù)類型為REG_DWORD,修改其數(shù)值為“5000”(即為 5000ms,5 秒)。
圖1 網(wǎng)絡(luò)接口所對(duì)應(yīng)的Idx值
圖2 注冊(cè)表編輯器界面
此參數(shù)控制TCP使用對(duì)每個(gè)新連接的初始重新傳輸超時(shí)。它適用于連接請(qǐng)求(SYN,synchronous) 和每個(gè)連接發(fā)送的第一個(gè)數(shù)據(jù)段。
(2)修改MTU這個(gè)參數(shù)可以采用命令修改法。在操作系統(tǒng)中運(yùn)行“cmd”命令,然后依次運(yùn)行以下命令,netshinterface-ipv4,使 用“set interface "12" mtu=800”命令就可以修改“最大傳輸單元”這個(gè)參數(shù),修改的命令和結(jié)果如下:
確定。
(3)修改“最大重傳次數(shù)”這個(gè)參數(shù)可以采用2種方法。
方法一:命令修改法。在操作系統(tǒng)中運(yùn)行“cmd”命令,然后依次運(yùn)行以下命令,netsh-interface-ipv4,使 用“set interface "12"dadtransmits=5”命令就可以修改“最大傳輸單元”這個(gè)參數(shù)為5次,修改的命令和結(jié)果如下:
確定。
方法二:修改注冊(cè)表法。運(yùn)行“regedit”打開注冊(cè)表,分別打開HKEY_LOCAL_MACHINESystemCurrent Control SetServicesTcpipParameters,添加“TcpMax DataRetransmissions”名稱的屬性項(xiàng),數(shù)據(jù)類型為REG_DWORD,修改其數(shù)值為“5”(即為5次)。
3.在連接下級(jí)單位的交換機(jī)端口上,對(duì)該接口的MTU這個(gè)參數(shù)進(jìn)行了修改(筆者單位使用的交換機(jī)為華為交換機(jī),下級(jí)單位的交換機(jī)設(shè)置相同),修改相應(yīng)接口MTU參數(shù)為800字節(jié)。
配置注意事項(xiàng):需要在交換機(jī)端口執(zhí)行命令undo portswitch,配置以太網(wǎng)接口從二層模式切換到三層模式。同時(shí)在配置完成后,需要重啟接口以保證配置的MTU生效??梢韵葓?zhí)行命令shutdown,關(guān)閉接口,再執(zhí)行命令undo shutdown,開啟接口。也可以直接在接口視圖下執(zhí)行命令restart,重啟接口。
通過這些方法,可以很好地解決數(shù)據(jù)重傳的問題,不會(huì)造成網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)闹袛唷?/p>
但有利就有弊,這些方法的采用也存在一定的不足,主要不足體現(xiàn)在以下兩個(gè)方面:一是采用了方法2和方法3后,會(huì)導(dǎo)致網(wǎng)絡(luò)速度減慢。二是在設(shè)置了QoS的交換機(jī)上,由于QoS隊(duì)列長(zhǎng)度有限,如果MTU配置過小而報(bào)文尺寸較大,可能會(huì)造成分片過多,報(bào)文會(huì)被QoS隊(duì)列丟棄,影響數(shù)據(jù)正常傳輸。