Freebsd
FreeBSD netstat -di,Idrop vs Drop and drop count from NIC or kernel?
在 FreeBSD 上,netstat 輸出中的 Drop 和 Idrop 有什麼區別?
$ netstat -di Name Mtu Network Address Ipkts Ierrs Idrop Opkts Oerrs Coll Drop bge0* 1500 <Link#1> 00:16:d4:e3:49:31 0 0 0 0 0 0 0 wpi0 2290 <Link#2> 00:1b:77:86:2d:fa 0 53068 0 179587 3 0 0
另外,netstat 是從 NIC 還是從核心緩衝區獲取丟棄計數?例如,如果 NIC 由於缺少描述符而無法再接受任何數據包,那麼失去的數據包是否會報告為 netstat 中的丟棄值之一?
我問是因為在 Linux 中, ifconfig 從 /proc/net/dev 讀取,據我所知,它僅在核心緩衝區已滿時才會下降。因此,如果 NIC 由於缺少描述符而無法接受數據包,您就不會知道它,即它還沒有進入核心記憶體。
這和 FreeBSD 上的 netstat 具有 BPF 緩衝區統計資訊的 -B 選項,所以現在 netstat -di 報告來自 NIC/驅動程序本身的丟棄計數是有意義的。
正確錯誤?
任何幫助表示讚賞,謝謝
可以通過以下方式觀察到缺少軟體描述符(即 mbuf 集群):
# vmstat -z
看
FAIL
專欄。只有通過驅動程序特定的介面才能觀察到缺少硬體描述符,例如對於 Intel e1000 卡,通過:
# sysctl dev.em.0.debug=1 && dmesg | tail ... em0: Tx Descriptors avail failure = 0 em0: RX discarded packets = 0 ...
還可以通過
loader.conf
某些 NIC調整描述符計數關於您的問題“idrops vs. drop”,您應該查找來源
if_data.ifi_iqdrops if_snd.ifq_drops
如果我理解正確的話,一個是輸入滴,另一個是輸出滴(即
ALTQ
)。**PS。**有關更多資訊,請參閱
ifnet
TCP/IP 圖解第 2 卷,Stevens & Wright 的第 3.3 節“結構”。或您的作業系統的原始碼。