在所有Linux和Unix中丢弃数据包

我有个问题。 我有Supermicro-X11SBA-LN4F的主板。 有4个以太网端口。 在第一个端口,我连接到互联网。 在第二个端口连接到我的本地networking

当我写ifconfignetstat -i ,我可以在我的第二个接口(我的本地networking)上看到丢包。 这个数字是递增的

 em2 Link encap:Ethernet HWaddr 0c:c4:7a:7b:91:3e inet addr:192.168.110.181 Bcast:192.168.110.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:17441 errors:0 dropped:1380 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1226317 (1.2 MB) TX bytes:0 (0.0 B) 

从谷歌search后,我发现这个: https : //www.novell.com/support/kb/doc.php?id = 7007165

 Beginning with kernel 2.6.37, it has been changed the meaning of dropped packet count. Before, dropped packets was most likely due to an error. Now, the rx_dropped counter shows statistics for dropped frames because of: Softnet backlog full -- (Measured from /proc/net/softnet_stat) Bad / Unintended VLAN tags Unknown / Unregistered protocols IPv6 frames when the server is not configured for IPv6 If any frames meet those conditions, they are dropped before the protocol stack and the rx_dropped counter is incremented. 

首先我写了这个命令:

 tcpdump -vv -i em2 

运行此命令时,停止在第二个接口上丢弃数据包的计数。 但是,当我放弃tcpdump ,丢弃的数据包的计数再次递增。

  • 我禁用了IPv6
  • 我检查了所有的VLAN。 在那个端口上,我在本地networking中只有一个Untag VLAN
  • 我检查了文件/proc/net/softnet_stat 。 在那个文件中,我只有第一列的信息,这是很好的

    00000013 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00002fbc 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000000f3 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000268f 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

  • 我通过“tcpdump”分析了所有stream量。 我只有 – ARP请求,Broadcats和Rip。 这并不坏

  • 我启用混杂模式,但没有帮助
  • 我检查了电缆和连接器
  • 我安装最新的驱动程序
  • 我增加了环caching大小,但是这并没有帮助
  • 我检查了所有的Unix和Linux:Zeroshell,Pfense,FreeBsd,Ubuntu服务器(使用本机内核并由我编译),CentOS(使用本机内核并由我编译)。 都显示相同的症状。

     ethtool -i em2 driver: igb version: 5.3.4.4 firmware-version: 3.25, 0x800005d0 bus-info: 0000:06:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: no 

在该界面上的所有统计信息:

 ethtool -S em2 NIC statistics: rx_packets: 29675 tx_packets: 0 rx_bytes: 2208735 tx_bytes: 0 rx_broadcast: 29636 tx_broadcast: 0 rx_multicast: 39 tx_multicast: 0 multicast: 39 collisions: 0 rx_crc_errors: 0 rx_no_buffer_count: 0 rx_missed_errors: 0 tx_aborted_errors: 0 tx_carrier_errors: 0 tx_window_errors: 0 tx_abort_late_coll: 0 tx_deferred_ok: 0 tx_single_coll_ok: 0 tx_multi_coll_ok: 0 tx_timeout_count: 0 rx_long_length_errors: 0 rx_short_length_errors: 0 rx_align_errors: 0 tx_tcp_seg_good: 0 tx_tcp_seg_failed: 0 rx_flow_control_xon: 0 rx_flow_control_xoff: 0 tx_flow_control_xon: 0 tx_flow_control_xoff: 0 rx_long_byte_count: 2208735 tx_dma_out_of_sync: 0 lro_aggregated: 0 lro_flushed: 0 tx_smbus: 0 rx_smbus: 0 dropped_smbus: 0 os2bmc_rx_by_bmc: 0 os2bmc_tx_by_bmc: 0 os2bmc_tx_by_host: 0 os2bmc_rx_by_host: 0 tx_hwtstamp_timeouts: 0 rx_hwtstamp_cleared: 0 rx_errors: 0 tx_errors: 0 tx_dropped: 0 rx_length_errors: 0 rx_over_errors: 0 rx_frame_errors: 0 rx_fifo_errors: 0 tx_fifo_errors: 0 tx_heartbeat_errors: 0 tx_queue_0_packets: 0 tx_queue_0_bytes: 0 tx_queue_0_restart: 0 rx_queue_0_packets: 29675 rx_queue_0_bytes: 2090035 rx_queue_0_drops: 0 rx_queue_0_csum_err: 0 rx_queue_0_alloc_failed: 0 

我的问题在哪里? 请帮帮我。

  ifconfig em2; ethtool -S em2 em2 Link encap:Ethernet HWaddr 0c:c4:7a:7b:91:3e inet addr:192.168.110.181 Bcast:192.168.110.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15387 errors:0 dropped:1224 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1085031 (1.0 MB) TX bytes:0 (0.0 B) NIC statistics: rx_packets: 15387 tx_packets: 0 rx_bytes: 1146579 tx_bytes: 0 rx_broadcast: 15367 tx_broadcast: 0 rx_multicast: 20 tx_multicast: 0 multicast: 20 collisions: 0 rx_crc_errors: 0 rx_no_buffer_count: 0 rx_missed_errors: 0 tx_aborted_errors: 0 tx_carrier_errors: 0 tx_window_errors: 0 tx_abort_late_coll: 0 tx_deferred_ok: 0 tx_single_coll_ok: 0 tx_multi_coll_ok: 0 tx_timeout_count: 0 rx_long_length_errors: 0 rx_short_length_errors: 0 rx_align_errors: 0 tx_tcp_seg_good: 0 tx_tcp_seg_failed: 0 rx_flow_control_xon: 0 rx_flow_control_xoff: 0 tx_flow_control_xon: 0 tx_flow_control_xoff: 0 rx_long_byte_count: 1146579 tx_dma_out_of_sync: 0 lro_aggregated: 0 lro_flushed: 0 tx_smbus: 0 rx_smbus: 0 dropped_smbus: 0 os2bmc_rx_by_bmc: 0 os2bmc_tx_by_bmc: 0 os2bmc_tx_by_host: 0 os2bmc_rx_by_host: 0 tx_hwtstamp_timeouts: 0 rx_hwtstamp_cleared: 0 rx_errors: 0 tx_errors: 0 tx_dropped: 0 rx_length_errors: 0 rx_over_errors: 0 rx_frame_errors: 0 rx_fifo_errors: 0 tx_fifo_errors: 0 tx_heartbeat_errors: 0 tx_queue_0_packets: 0 tx_queue_0_bytes: 0 tx_queue_0_restart: 0 rx_queue_0_packets: 15387 rx_queue_0_bytes: 1085031 rx_queue_0_drops: 0 rx_queue_0_csum_err: 0 rx_queue_0_alloc_failed: 0 

可能发生什么事是,你看到你的子网上的IPv6广播stream量,根据你从tcpdump输出发布在这里:

 12:19:41.622297 IP6 (hlim 1, next-header UDP (17) payload length: 112) fe80::a4a0:460b:c99a:c992.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 solicit (xid=455863 (elapsed-time 700) (client-ID hwaddr/time type 1 time 495735714 e03f49b54e07) (IA_NA IAID:65027913 T1:0 T2:0) (Client-FQDN) (vendor-class) (option-request vendor-specific-info DNS-server DNS-search-list Client-FQDN)) 

根据你在这里写的问题:

从内核2.6.37开始,已经改变了丢包数的含义。 之前,丢包很可能是由于错误。 现在,rx_dropped计数器显示丢失的帧的统计信息,因为:

Softnet backlog full – (从/ proc / net / softnet_stat测量)

坏/无意的VLAN标签

未知/未注册的协议

服务器未configuration为IPv6时的IPv6帧

如果任何帧满足这些条件,则在协议栈和rx_dropped计数器递增之前丢弃它们。

从你的输出和你的问题来看,你确实在服务器上禁用了IPv6。

这使我得出的结论是,你看到丢弃的数据包可能是由于来自networking上其他主机的IPv6广播stream量。

为了testing这个,你可以重新启用IPv6并查看丢弃的数据包是否消失。 如果他们这样做,这是无害的。