我正在诊断 FreeBSD 中的 UDP 数据包丢失问题。 netstat -s -p udp
具有以下输出:
udp:
116974545 datagrams received
0 with incomplete header
0 with bad data length field
0 with bad checksum
198 with no checksum
6313 dropped due to no socket
119696 broadcast/multicast datagrams undelivered
41534 dropped due to full socket buffers
0 not for hashed pcb
116807002 delivered
955 datagrams output
0 times multicast source filter matched
虽然大部分输出都是直接的,但我真的很困惑 broadcast/multicast datagrams undelivered
表示什么。这是未传送的多播数据包的总数吗?或者这是否指的是由特定原因引起的数字,例如由于套接字缓冲区已满而下降
?
最佳答案
"broadcast/multicast datagrams undelivered"
表示接收到的多播/广播 UDP 数据包总数,但没有套接字愿意接受它们。计数器在两种情况下会发生碰撞:
Case #1 -- 说明您的情况下所有/大部分未传送的 UDP 多播/广播数据包:
531 /*
532 * No matching pcb found; discard datagram. (No need
533 * to send an ICMP Port Unreachable for a broadcast
534 * or multicast datgram.)
535 */
536 UDPSTAT_INC(udps_noportbcast);
Case #2还会碰撞“由于没有 socket 而掉落”计数器,这可能不是您的情况。
596 UDPSTAT_INC(udps_noport);
597 if (m->m_flags & (M_BCAST | M_MCAST)) {
598 UDPSTAT_INC(udps_noportbcast);
599 goto badunlocked;
600 }
关于networking - netstat中的 "broadcast/multicast datagrams undelivered"表示什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22568584/