linux系統核心UDP丟包原因分析

2021-06-28 05:05:58 字數 506 閱讀 3075

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 中讀...