簡體   English   中英

UDP數據包從內核到Linux中用戶空間的路徑

[英]Path of the UDP packet from kernel to user-space in Linux

我正在維護一些網絡驅動程序,但是數據丟失有一些問題。 結果是,當我使用ping或nping發送ICMP或UDP ping時,某些udp / icmp數據包丟失了。

我確定在傳輸的ping / nping端,驅動程序和內核會收到ping答復(tcpdump將傳入的udp或icmp數據包顯示為答復)。

但是應用程序ping / nping有時顯示出例如80%的數據包丟失。 我懷疑這些數據包在內核空間和用戶空間之間丟失了。

我知道對於UDP,有維護UDP數據包的過程udp_rcv(),但是我不知道將數據包傳遞到用戶空間應用程序的路徑中的下一個過程是什么。

Linux內核的版本為3.3.8。

我的問題是-如何跟蹤從驅動程序到用戶空間套接字緩沖區的數據包轉換的整個路徑?

udp_rcv()是作為.handler傳遞到struct net_protocol .handler 您可以查看結構中此處理程序字段的用法,也可以查看是否發生某些錯誤。 有一個回調err_handler 也許丟包在這里發生,錯誤處理程序將被調用。

PS請記住,UDP不能保證100%的傳輸成功,並且100個數據包中有一個丟失的數據包可能是預期的行為。 (:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM