色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡述linux系統UDP丟包問題分析思路(上)

jf_78858299 ? 來源:cizixs ? 作者:吳偉 ? 2023-05-18 17:24 ? 次閱讀

最近工作中遇到某個服務器應用程序 UDP 丟包,在排查過程中查閱了很多資料,總結出來這篇文章,供更多人參考。

在開始之前,我們先用一張圖解釋 linux 系統接收網絡報文的過程。

  1. 首先網絡報文通過物理網線發送到網卡
  2. 網絡驅動程序會把網絡中的報文讀出來放到 ring buffer 中,這個過程使用 DMA(Direct Memory Access),不需要 CPU 參與
  3. 內核從 ring buffer 中讀取報文進行處理,執行 IP 和 TCP/UDP 層的邏輯,最后把報文放到應用程序的 socket buffer 中
  4. 應用程序從 socket buffer 中讀取報文進行處理

圖片

在接收 UDP 報文的過程中,圖中任何一個過程都可能會主動或者被動地把報文丟棄,因此丟包可能發生在網卡和驅動,也可能發生在系統和應用。

之所以沒有分析發送數據流程,一是因為發送流程和接收類似,只是方向相反;另外發送流程報文丟失的概率比接收小,只有在應用程序發送的報文速率大于內核和網卡處理速率時才會發生。

本篇文章假定機器只有一個名字為 eth0 的 interface,如果有多個 interface 或者 interface 的名字不是 eth0,請按照實際情況進行分析。

NOTE:文中出現的 RX(receive) 表示接收報文,TX(transmit) 表示發送報文。

確認有 UDP 丟包發生

要查看網卡是否有丟包,可以使用 ethtool -S eth0 查看,在輸出中查找 bad 或者 drop 對應的字段是否有數據,在正常情況下,這些字段對應的數字應該都是 0。如果看到對應的數字在不斷增長,就說明網卡有丟包。

另外一個查看網卡丟包數據的命令是 ifconfig,它的輸出中會有 RX(receive 接收報文)和 TX(transmit 發送報文)的統計數據:

~#ifconfig eth0...        RX packets 3553389376  bytes 2599862532475 (2.3 TiB)        RX errors 0  dropped 1353  overruns 0  frame 0        TX packets 3479495131  bytes 3205366800850 (2.9 TiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0...

此外,linux 系統也提供了各個網絡協議的丟包信息,可以使用 netstat -s 命令查看,加上 --udp 可以只看 UDP 相關的報文數據:

[root@holodesk02 GOD]# netstat -s -uIcmpMsg:    InType0: 3    InType3: 1719356    InType8: 13    InType11: 59    OutType0: 13    OutType3: 1737641    OutType8: 10    OutType11: 263Udp:    517488890 packets received    2487375 packets to unknown port received.    47533568 packet receive errors    147264581 packets sent    12851135 receive buffer errors    0 send buffer errorsUdpLite:IpExt:    OutMcastPkts: 696    InBcastPkts: 2373968    InOctets: 4954097451540    OutOctets: 5538322535160    OutMcastOctets: 79632    InBcastOctets: 934783053    InNoECTPkts: 5584838675

對于上面的輸出,關注下面的信息來查看 UDP 丟包的情況:

  • packet receive errors 不為空,并且在一直增長說明系統有 UDP 丟包
  • packets to unknown port received 表示系統接收到的 UDP 報文所在的目標端口沒有應用在監聽,一般是服務沒有啟動導致的,并不會造成嚴重的問題
  • receive buffer errors 表示因為 UDP 的接收緩存太小導致丟包的數量

NOTE:并不是丟包數量不為零就有問題,對于 UDP 來說,如果有少量的丟包很可能是預期的行為,比如丟包率(丟包數量/接收報文數量)在萬分之一甚至更低。

網卡或者驅動丟包

之前講過,如果 ethtool -S eth0 中有 rx_***_errors 那么很可能是網卡有問題,導致系統丟包,需要聯系服務器或者網卡供應商進行處理。

# ethtool -S eth0 | grep rx_ | grep errors     rx_crc_errors: 0     rx_missed_errors: 0     rx_long_length_errors: 0     rx_short_length_errors: 0     rx_align_errors: 0     rx_errors: 0     rx_length_errors: 0     rx_over_errors: 0     rx_frame_errors: 0     rx_fifo_errors: 0

netstat -i 也會提供每個網卡的接發報文以及丟包的情況,正常情況下輸出中 error 或者 drop 應該為 0。

如果硬件或者驅動沒有問題,一般網卡丟包是因為設置的緩存區(ring buffer)太小,可以使用 ethtool 命令查看和設置網卡的 ring buffer。

ethtool -g 可以查看某個網卡的 ring buffer,比如下面的例子

# ethtool -g eth0Ring parameters for eth0:Pre-set maximums:RX:        4096RX Mini:    0RX Jumbo:    0TX:        4096Current hardware settings:RX:        256RX Mini:    0RX Jumbo:    0TX:        256

Pre-set 表示網卡最大的 ring buffer 值,可以使用 ethtool -G eth0 rx 8192 設置它的值。

Linux 系統丟包

linux 系統丟包的原因很多,常見的有:UDP 報文錯誤、防火墻、UDP buffer size 不足、系統負載過高等,這里對這些丟包原因進行分析。

UDP 報文錯誤

如果在傳輸過程中UDP 報文被修改,會導致 checksum 錯誤,或者長度錯誤,linux 在接收到 UDP 報文時會對此進行校驗,一旦發明錯誤會把報文丟棄。

如果希望 UDP 報文 checksum 及時有錯也要發送給應用程序,可以在通過 socket 參數禁用 UDP checksum 檢查:

int disable = 1;setsockopt(sock_fd, SOL_SOCKET, SO_NO_CHECK, (void*)&disable, sizeof(disable)

原文:https://cizixs.com/2018/01/13/linux-udp-packet-drop-debug/

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10854

    瀏覽量

    211587
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209333
  • dma
    dma
    +關注

    關注

    3

    文章

    560

    瀏覽量

    100549
  • 網絡驅動
    +關注

    關注

    0

    文章

    7

    瀏覽量

    7409
收藏 人收藏

    評論

    相關推薦

    esp32 udp broadcast怎么避免?

    esp32 udp broadcast
    發表于 06-17 06:05

    udp數據的原因?

    編譯sdk/examples/protocols/sockets/udp_server 例子程序,修改了代碼,把發送回去的代碼注釋,只是記錄上次接收數據的時間和當前接收數據的時間間隔,運行一個
    發表于 06-25 07:03

    共享控制系統預測補償控制算法

    對共享控制系統中數據包在因特網傳輸過程發生的現象進行建模,分析
    發表于 03-21 15:01 ?16次下載

    網卡

    網卡率(Loss Tolerance或packet loss rate)是指測試中
    發表于 12-26 12:09 ?1302次閱讀

    網絡數據的原因及攝像機的原因

    不少人在使用網絡和監控攝像系統的時候都有遇到過數據的情況,數據的原因是多種多樣的,以下就為大家介紹一下網絡數據
    的頭像 發表于 01-11 09:27 ?1.3w次閱讀

    Linux應用的延時和模擬

    合適之類,很多地方可以用到。  我們做的應用軟件,還有測試 TCP/UDP? 對比,測試 BDP 對 TCP/IP 的影響時,我們都需要一些網絡中的延時和模擬,很多商業的軟件可以做這個事,其實完美
    發表于 04-02 14:38 ?486次閱讀

    網絡時常用的排錯思路

    今天浩道跟大家分享硬核網絡故障排錯干貨,主要針對網絡時常用的排錯思路。讓你遇到網絡時,不再迷茫!
    的頭像 發表于 10-24 09:20 ?1685次閱讀

    Linux優化實戰:如何分析網絡的問題

    所謂,是指在網絡數據的收發過程中,由于種種原因,數據還沒傳輸到應用程序中,就被丟棄了。
    發表于 01-13 13:57 ?969次閱讀

    深入分析Linux網絡問題!

    那到底是哪里發生了呢?排查之前,我們可以回憶一下 Linux 的網絡收發流程,先從理論分析,哪里有可能會發生
    的頭像 發表于 04-21 09:09 ?1114次閱讀

    深入分析Linux網絡問題

    所謂,是指在網絡數據的收發過程中,由于種種原因,數據還沒傳輸到應用程序中,就被丟棄了。這些被丟棄的數量,除以總的傳輸數,也就是我們
    的頭像 發表于 05-04 15:08 ?1394次閱讀
    深入<b class='flag-5'>分析</b><b class='flag-5'>Linux</b>網絡<b class='flag-5'>丟</b><b class='flag-5'>包</b>問題

    簡述linux系統UDP問題分析思路(下)

    在開始之前,我們先用一張圖解釋 linux 系統接收網絡報文的過程。 1. 首先網絡報文通過物理網線發送到網卡 2. 網絡驅動程序會把網絡中的報文讀出來放到 ring buffer 中,這個
    的頭像 發表于 05-18 17:25 ?1501次閱讀

    如何解決MPSoC萬兆以太網應用中UDP接收問題

    本文介紹如何使能 Linux 網絡協議棧中的 RFS(receive flow steering)功能以優化 MPSoC APU 的并行處理能力,解決問題。
    的頭像 發表于 06-14 10:10 ?936次閱讀
    如何解決MPSoC萬兆以太網應用中<b class='flag-5'>UDP</b>接收<b class='flag-5'>丟</b><b class='flag-5'>包</b>問題

    Linux下模擬網絡時延和神器介紹

    今天浩道跟大家分享推薦一款Linux用于模擬網絡時延和神器!有這些業務運維或測試場景的小伙伴,可以用起來了!
    發表于 07-02 14:07 ?1692次閱讀
    <b class='flag-5'>Linux</b>下模擬網絡時延和<b class='flag-5'>丟</b><b class='flag-5'>包</b>神器介紹

    網絡故障如何定位

    是數據被包了,類似情況想必大家都不陌生。針對網絡,本人提供一些常見的故障定位方法,希望能夠幫助大家對網絡
    的頭像 發表于 11-10 11:27 ?1275次閱讀
    網絡<b class='flag-5'>丟</b><b class='flag-5'>包</b>故障如何定位

    網絡問題分析

    通常會帶來嚴重的性能下降,特別是對 TCP 來說,通常意味著網絡擁塞和重傳,進而還會導致網絡延遲增大、吞吐降低。 一、 哪里可能 接下來,我就以最常用的反向代理服務器 Ngin
    的頭像 發表于 11-13 11:24 ?1009次閱讀
    網絡<b class='flag-5'>丟</b><b class='flag-5'>包</b>問題<b class='flag-5'>分析</b>
    主站蜘蛛池模板: 老师破女学生特级毛片| 极品美女穴| 亚洲AV久久无码高潮喷水 | 秋霞电影院兔费理论84MB| 99久久国产露脸精品麻豆| 摸董事长的裤裆恋老小说| a级精品九九九大片免费看| 欧美日韩中文国产一区发布| 99久久精品久久久久久清纯| 色列少女漫画| 国产午夜精品美女免费大片| 亚洲高清国产拍精品影院| 国产日韩精品一区二区在线观看| 小sao货水好多真紧h的视频| 久久99精国产一区二区三区四区| 在线观看免费国产成人软件| 久久伊人在| 洲精品无码高潮喷水A片| 日本一二三区在线视频| 国产婷婷色一区二区三区在线| 亚洲视频成人| 日本无卡无吗在线| 国产又粗又猛又爽黄老大爷| 伊人最新网址| 日日碰狠狠躁久久躁综合网| 久久4k岛国高清一区二区| 超熟女专门志| 一个人在线观看免费高清视频| 日本xxxx19| 妹妹的第一次有点紧| 国产午夜亚洲精品理论片八戒 | 2022国产精品不卡a| 性VIDEOSTV另类极品| 日本亚洲欧洲免费旡码| 毛片一区二区三区| 精品区2区3区4区产品乱码9| 粉嫩自拍 偷拍 亚洲| 啊…嗯啊好深男男小黄文| 中文字幕精品在线观看| 亚洲最大日夜无码中文字幕| 熟女强奷系列中文字幕|