Skip to contentSkip to conversation

udp packet not reach application

DISCUSSION Min Wang 3 participants 3 messages Apr 29, 2013 – Apr 30, 2013 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

Min Wang

author
#1 lore raw

HI

since Linux-net mailing list no longer active, so post here. Hope it is the right place.

I have following issue ( kernel 3.2.28), google around, could not find any good similar case.

one the host:
all the /proc/sys/net/ipv4/conf/*/rp_filter are 0

a device sent udp traffics to my udp app ( listen on port x)

At first, it was working as my app did get udp traffic.

After a while, strace showed that my app stuck at recvfrom, no udp traffic.

But tcpdump did show that the udp traffic was still coming/alive.

Even if I restart my app, strace still showed it was stuck at recv_from.

it seems the kernel stop or did not deliver the udp packet to my app at some point.

So I have to restart NIC interface, then I could see udp traffic received at my app. (strange also?)

What could be wrong? Driver? or Kernel or my app?

At which point the kernel could possibly stop delivering the packets to upper layer even though traffic seen from tcpdump?

Thanks a lot!

min

#2 lore raw

What does netstat -s say in the UDP and IP sections?

What does tcpdump say about the checksums of the incoming UDP datagrams which are not being given to your application?

If you happen to send a UDP datagram from the local host to your application, is it received? That is, sending a UDP datagram to your application via some path that does not go through this NIC?

Does your NIC claim to support checksum offload?

Just what is your NIC?

rick jones

#3 lore raw
In reply to Min Wang
Quoted 7 lines · Min Wang

At first, it was working as my app did get udp traffic.

After a while, strace showed that my app stuck at recvfrom, no udp traffic.

But tcpdump did show that the udp traffic was still coming/alive.

Try dropwatch to see where the packets get dropped.