为什么在ifconfig下没有捕获数据包丢弃?

时间:2014-01-14 12:42:54

标签: networking linux-kernel network-programming linux-device-driver ethernet

我提供了以下行,以便模拟Linux机器上的数据包丢弃。

# for randomly dropping 10% of incoming packets:
iptables -A INPUT -m statistic --mode random --probability 0.1 -j DROP

# and for dropping 10% of outgoing packets:
iptables -A OUTPUT -m statistic --mode random --probability 0.1 -j DROP

之后我运行ping some_ip_address,当我终止它时,可以看到行

100 packets transmitted, 84 received, 16% packet loss, time 99137ms

但是当我运行ifconfig命令时,我看到数据包丢失仍为零

      RX packets:16007 errors:0 dropped:0 overruns:0 frame:0
      TX packets:16207 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000

在这里,您可以看到Rx和Tx数据包行中的丢弃字段仍为零。

任何机构都可以告诉我为什么在ifconfig下没有捕获丢包吗?

1 个答案:

答案 0 :(得分:2)

这是因为iptables和ifconfig统计信息引用协议栈中的不同层。 ifconfig统计信息用于NIC(物理层和MAC层),而iptables规则执行一旦帧接收到NIC并传送到内核(INPUT)或在数据包传送到协议栈中的第2层(用于OUTPUT)之前执行。 / p>