networking - netstat中的 "broadcast/multicast datagrams undelivered"表示什么?

标签 networking udp freebsd netstat

我正在诊断 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/

相关文章:

java - 检查Java中自己的应用程序的Internet使用情况

linux - VirtualBox 中的开发机器 - (Debian-min vs ArchLinux vs recommend-one)

c++ - mknod(2) 要求 FreeBSD 上的 super 用户使用什么代替?

encoding - 重新编码和流式传输 UDP 电视 channel

java - 多播支持在 Java 交易系统中可能有哪些用途?

java - 有什么办法可以让UDP丢包更低一些吗?

io - 在 FreeBSD 上查找具有大量磁盘 I/O 的进程

r - 使用 ggraph/ggplot2 在网络图中定位节点和边

c# - 无法将套接字重新绑定(bind)到现有 IP/端口组合

c - TCP 非阻塞连接失败,getsockopt OptValue 113 请建议