網(wǎng)絡(luò)丟包是什么?怎么解決
網(wǎng)絡(luò)丟包是我們?cè)谑褂胮ing對(duì)目站進(jìn)行詢問(wèn)時(shí),數(shù)據(jù)包由于各種原因在信道中丟失的現(xiàn)象。ping使用了ICMP回送請(qǐng)求與回送回答報(bào)文。ICMP回送請(qǐng)求報(bào)文是主機(jī)或路由器向一個(gè)特定的目的主機(jī)發(fā)出的詢問(wèn),收到此報(bào)文的機(jī)器必須給源主機(jī)發(fā)送ICMP回送回答報(bào)文。這種詢問(wèn)報(bào)文用來(lái)測(cè)試目的站是否可到達(dá)以及了解其狀態(tài)。需要指出的是,ping是直接使用網(wǎng)絡(luò)層ICMP的一個(gè)例子,它沒(méi)有通過(guò)運(yùn)輸層的UDP或TCP。
網(wǎng)絡(luò)丟包的原因主要有物理線路故障、設(shè)備故障、病毒攻擊、路由信息錯(cuò)誤等,下面我們結(jié)合具體情況進(jìn)行說(shuō)明。
物理線路故障
網(wǎng)管員發(fā)現(xiàn)廣域網(wǎng)線路時(shí)通時(shí)斷,發(fā)生這種情況時(shí),有可能是線路出現(xiàn)故障,也可能是用戶方面的原因。為了分清是否是線路故障,可以做如下測(cè)試。
如果廣域網(wǎng)線路是通過(guò)路由器實(shí)現(xiàn)的,可以登錄到路由器,通過(guò)擴(kuò)展ping向?qū)Χ寺酚善鲝V域網(wǎng)接口發(fā)送大量的數(shù)據(jù)包進(jìn)行測(cè)試。
如果線路是通過(guò)三層交換機(jī)實(shí)現(xiàn),可在線路兩端分別接一臺(tái)計(jì)算機(jī),并將IP地址分別設(shè)為本端三層路由交換機(jī)的廣域網(wǎng)接口地址,使用“ping 對(duì)端計(jì)算機(jī)地址 -t”命令進(jìn)行測(cè)試。
如果上述測(cè)試沒(méi)有發(fā)生丟包現(xiàn)象,則說(shuō)明線路運(yùn)營(yíng)商提供的線路是好的,引起故障的原因在于用戶自身,需要進(jìn)一步查找。
如果上述測(cè)試發(fā)生丟包現(xiàn)象,則說(shuō)明故障是由線路供應(yīng)商提供的線路引起的,需要與線路供應(yīng)商聯(lián)系盡快解決問(wèn)題。
由物理線路引起的丟包現(xiàn)象還有很多,如光纖連接問(wèn)題,跳線沒(méi)有對(duì)準(zhǔn)設(shè)備接口,雙絞線及RJ-45接頭有問(wèn)題等。另外,通信線路受到隨機(jī)噪聲或者突發(fā)噪聲造成的數(shù)據(jù)報(bào)錯(cuò)誤,射頻信號(hào)的干擾和信號(hào)的衰減等都可能造成數(shù)據(jù)包的丟失。我們可以借助網(wǎng)絡(luò)測(cè)試儀來(lái)檢查線路的質(zhì)量。
設(shè)備故障
設(shè)備故障主要是指設(shè)備硬件方面的故障,不包含軟件配置不當(dāng)造成的丟包。如網(wǎng)卡是壞的,交換機(jī)的某個(gè)端口出現(xiàn)了物理故障,光纖收發(fā)器的電端口與網(wǎng)絡(luò)設(shè)備接口,或兩端設(shè)備接口的雙工模式不匹配。
筆者近日在工作中發(fā)現(xiàn)一交換機(jī)端口的光纖模塊故障造成的丟包現(xiàn)象,該交換機(jī)在通信一段時(shí)間后死機(jī),即不能通信,重啟后恢復(fù)正常。在經(jīng)過(guò)一段時(shí)間觀察后發(fā)現(xiàn),某光纖模塊存在問(wèn)題,取一塊新的模塊替換,一切正常。究其原因,交換機(jī)會(huì)對(duì)所有接收到的數(shù)據(jù)包進(jìn)行CRC錯(cuò)誤檢測(cè)和長(zhǎng)度校驗(yàn),將檢查出有錯(cuò)誤的包丟棄,正確的包轉(zhuǎn)發(fā)出去。但這個(gè)過(guò)程中有些有錯(cuò)誤的包在CRC錯(cuò)誤檢測(cè)和長(zhǎng)度校驗(yàn)中都均未檢測(cè)出錯(cuò)誤,這樣的包在轉(zhuǎn)發(fā)過(guò)程中不會(huì)被發(fā)送出去,也不會(huì)被丟棄,它們將會(huì)堆積在動(dòng)態(tài)緩存中,永遠(yuǎn)無(wú)法發(fā)送出去,等到緩存中堆積滿了,就會(huì)造成交換機(jī)死機(jī)的現(xiàn)象。最終結(jié)果是,數(shù)據(jù)包無(wú)法到達(dá)目的主機(jī)。
網(wǎng)絡(luò)擁塞
網(wǎng)絡(luò)擁塞造成丟包率上升的原因很多,主要是路由器資源被大量占用造成的。
如果發(fā)現(xiàn)網(wǎng)速慢,并且丟包率呈現(xiàn)上升的情況,這時(shí)應(yīng)該show process cpu和show process mem,一般情況下發(fā)現(xiàn)IP input process占用過(guò)多的資源。接下來(lái)可以檢查fast switching在大流量外出端口是否被禁用,如果是,則需要重新使用。
再看一下Fast switching on the same interface是否被禁用,如一個(gè)接口配有多個(gè)網(wǎng)段并且這些網(wǎng)段間流量很大時(shí),路由器工作在process-switches方式,這種情況下要在接口上執(zhí)行命令“enable ip route-cache same-interface”。
接下來(lái),用show interfaces和show interfaces switching命令識(shí)別大量包進(jìn)出的端口。一旦確認(rèn)進(jìn)入端口后,打開(kāi)IP accounting on the outgoing interface看其特征,如果是攻擊,源地址會(huì)不斷變化但是目的地址不變,可以用命令“access list”暫時(shí)解決此類問(wèn)題(最好在接近攻擊源的設(shè)備上配置),最終解決辦法是停止攻擊源。
應(yīng)用中遇到的造成網(wǎng)絡(luò)擁塞的情況還有很多,如大量的UDP流量,可以用解決spoof attack的步驟解決此問(wèn)題。大量的組播流、廣播包穿越路由器,路由器配置了IP NAT并且有很多DNS包穿越路由器等。上述情況造成網(wǎng)絡(luò)擁塞后,通信雙方采取流量控制,丟棄不能傳輸?shù)陌?/p>
路由錯(cuò)誤
網(wǎng)絡(luò)路徑錯(cuò)誤也會(huì)導(dǎo)致數(shù)據(jù)包不能到達(dá)目的主機(jī),如主機(jī)的默認(rèn)路由配置錯(cuò)誤,主機(jī)發(fā)出的訪問(wèn)其他網(wǎng)絡(luò)的數(shù)據(jù)包會(huì)被網(wǎng)關(guān)丟棄。但此類丟包屬于正常情況下的丟包,是意料之中的,不會(huì)對(duì)網(wǎng)絡(luò)造成影響。