linux系統核心udp丟包原因分析
1、udp校驗和錯誤
現象:可以用netstat -su 檢視到有udp錯包。
tcpdump捕包,在wireshark開啟捕獲的udp報文,開啟校驗和選項,有錯包。
方案:查詢鏈路故障 www.ahlinux.com
2、防火牆開啟
現象:特定埠的包收不到
方案:使用service iptables stop關閉。
3、rp_filter開啟
現象:tcpdump有包,協議棧收不到。某個位址傳送的包乙個包都收不到,而另一地只發過來的沒問題。
方案:將/etc/sysctl.conf中rp_filter設為0。
參見:校驗包的源位址與其網絡卡位址的開關,防止ip欺騙,linux 2.6.32預設開啟。
4、應用程式效能問題,緩衝區滿。
現象:應用斷斷續續能收到udp包。
方案:使用vmstat和top命令發現cpu或io過載。增大緩衝區,優化程式。
Linux系統核心UDP丟包原因分析
本文討論的udp丟包是指網絡卡接收到資料報後,linux核心的tcp ip協議棧在udp資料報處理過程中的丟包,主要原因有兩個 1 udp資料報格式錯誤或校驗和檢查失敗 2 應用程式來不及處理udp資料報 對於原因1 udp資料報本身的錯誤很少見,應用程式也不可控,本文不討論。首先介紹通用的udp丟...
Linux系統核心UDP丟包原因分析
本文討論的udp丟包是指網絡卡接收到資料報後,linux核心的tcp ip協議棧在udp資料報處理過程中的丟包,主要原因有兩個 1 udp資料報格式錯誤或校驗和檢查失敗 2 應用程式來不及處理udp資料報 對於原因1 udp資料報本身的錯誤很少見,應用程式也不可控,本文不討論。首先介紹通用的udp丟...
linux 系統 UDP 丟包問題分析思路
序言 在開始之前,我們先用一張 釋 linux 系統接收網路報文的過程。首先網路報文通過物理網線傳送到網絡卡 網路驅動程式會把網路中的報文讀出來放到 ring buffer 中,這個過程使用 dma direct memory access 不需要 cpu 參與 核心從 ring buffer 中讀...