LINUX.ORG.RU

Dropped packets Linux/Unix на интерфейсе в локальной сети

 , , , ,


0

1

Добрый день. Существует проблема. Купили материнскую плату – X11SBA-LN4F. Вроде бы прекрасна для организации шлюза доступа в интернет, есть 4 гигабитных порта, BMC для IPMI, потребляет не больше 20 Ватт. На этом плюсы закончились. Ситуация: в первый порт у меня вставлен интернет, во второй локальная сеть. На порту с интернет все нормально, на порту локальной сети, какая-то ерунда. Может проработать день/два и отвалиться линк в локальную сеть, в логах тишина (помогает только рестарт службы). И регулярно я наблюдаю dropped packets в «ifconfig» или «netstat -i» и число этих пакетов регулярно растет.

Сам вывод

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:7100 errors:0 dropped:622 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:515827 (515.8 KB)  TX bytes:0 (0.0 B)

NIC statistics:
     rx_packets: 7100
     tx_packets: 0
     rx_bytes: 544227
     tx_bytes: 0
     rx_broadcast: 7090
     tx_broadcast: 0
     rx_multicast: 10
     tx_multicast: 0
     multicast: 10
     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: 544227
     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: 7100
     rx_queue_0_bytes: 515827
     rx_queue_0_drops: 0
     rx_queue_0_csum_err: 0
     rx_queue_0_alloc_failed: 0

Сетевая карточка Intel I210-AT

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

Вывод lspci

lspci
00:00.0 Host bridge: Intel Corporation Device 2280 (rev 21)
00:02.0 Display controller: Intel Corporation Device 22b1 (rev 21)
00:13.0 SATA controller: Intel Corporation Device 22a3 (rev 21)
00:14.0 USB controller: Intel Corporation Device 22b5 (rev 21)
00:1a.0 Encryption controller: Intel Corporation Device 2298 (rev 21)
00:1b.0 Audio device: Intel Corporation Device 2284 (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 22c8 (rev 21)
00:1c.1 PCI bridge: Intel Corporation Device 22ca (rev 21)
00:1c.2 PCI bridge: Intel Corporation Device 22cc (rev 21)
00:1c.3 PCI bridge: Intel Corporation Device 22ce (rev 21)
00:1f.0 ISA bridge: Intel Corporation Device 229c (rev 21)
00:1f.3 SMBus: Intel Corporation Device 2292 (rev 21)
02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
03:00.0 PCI bridge: Pericom Semiconductor Device 2608
04:01.0 PCI bridge: Pericom Semiconductor Device 2608
04:02.0 PCI bridge: Pericom Semiconductor Device 2608
04:03.0 PCI bridge: Pericom Semiconductor Device 2608
04:04.0 PCI bridge: Pericom Semiconductor Device 2608
05:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
06:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
07:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
09:00.0 PCI bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge (rev 03)
0a:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 30)

Поиски по решению моей проблемы, привели к этому сайту 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

tcpdump -vv -i em2

Самое интересное, что когда я запускаю tcpdump, счетчик дропнутых пакетов не наблюдается. Но когда я останавливаю мониторинг tcpdump, пакеты дропаются опять.

Что я делал: - проверял vlan, у меня кинут на мой проблемный порт нетегированный VLAN и все; - отключал IPv6; - проверял /proc/net/softnet_stat

cat /proc/net/softnet_stat
00001570 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000c58 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000017fc 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0000000b 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

Как видно значения только в первой колонке, что есть хорошо

- проверял кабеля и коннекторы; - пробовал на разных портах и коммутаторах подымать интерфейс в локальную сеть; - включал promiscuous mode, пакеты все равно дропались; - устанавливал самые последние драйвера; - увеличивал ring caches size; - анализировал tcpdump (там идет ARP, Broadcats, Rip, IPX, IP6); - отключал jumbro frame везде и проверял mtu в tcpdump, не было размера фрейма больше 300; - проверял разные дистрибутивы (Zeroshell, Pfense, FreeBsd, Ubuntu Server (с родным ядром и собранным мною), CentOS (с родным ядром и собранным мною); - прошивал эту материнскую плату на последнюю что есть прошивку; - правил iptables нет вообще!

При чем на нашем другом шлюзе (и на других машинах в сети), через который я сижу и Вам сейчас пишу – все нормально. Подскажите пожалуйста, сижу уже не первую неделю, хочу заставить ее работать. Куда копать ? Может кто-то, если есть время захочет свежим взлядом взглянуть, могу даже доступ SSH дать, только с моим контролем =) Спасибо за Ваше внимание и терпение, что прочитали все это.

Раз сетевуха не говорит об ошибках, значит дропает ядро. посмотри на «netstat -s» - там где-то должны быть ненулевые счетчики ошибок.

Я бы отключит для начала sg gso tso gro lro через «ethtool -K»

Судя по версии драйвера у тебя интеловские драйвера. А с оригинальным драйвером igb из ядра не пробовал (только ядро нужно не 2.6, а что-нибудь свежее типа 3.18/4.4)?

А не пробовал гонять трафик через iperf3 в локалке ? Может проблема проявится более стабильно...

vel ★★★★★ ()
Ответ на: комментарий от vel

все пробовал

Ядро – 4.2.0-36-generic; Сделал ethtool -K em3 sg off gso off tso off gro off lro off; С оригинальным драйвером из ядра и пробовал; iperf3 прошел тест

iperf3 -c 192.168.110.181 -p 5001
Connecting to host 192.168.110.181, port 5001
[  4] local 192.168.110.24 port 34620 connected to 192.168.110.181 port 5001
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  11.3 MBytes  94.5 Mbits/sec    0   28.3 KBytes
[  4]   1.00-2.00   sec  11.2 MBytes  94.2 Mbits/sec    0   28.3 KBytes
[  4]   2.00-3.00   sec  11.2 MBytes  94.0 Mbits/sec    0   28.3 KBytes
[  4]   3.00-4.00   sec  11.2 MBytes  94.2 Mbits/sec    0   28.3 KBytes
[  4]   4.00-5.00   sec  11.2 MBytes  94.1 Mbits/sec    0   28.3 KBytes
[  4]   5.00-6.00   sec  11.2 MBytes  94.1 Mbits/sec    0   28.3 KBytes
[  4]   6.00-7.00   sec  11.2 MBytes  94.1 Mbits/sec    0   28.3 KBytes
[  4]   7.00-8.00   sec  11.2 MBytes  94.1 Mbits/sec    0   28.3 KBytes
[  4]   8.00-9.00   sec  11.2 MBytes  94.1 Mbits/sec    0   28.3 KBytes
[  4]   9.00-10.00  sec  11.2 MBytes  94.2 Mbits/sec    0   28.3 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   112 MBytes  94.1 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   112 MBytes  94.1 Mbits/sec                  receiver

iperf Done.
valeriu147 ()

в качестве апа

Спасибо за Ваше внимание и терпение, что прочитали все это.

спасибо за нетупую тему на ЛОРе.

mos ★★★★★ ()
Ответ на: комментарий от vel

гигабитная кароточка

кстати, на машине, где гигабитная карточка, выдает такую интересную картину

iperf3 -c 192.168.110.181 -p 5001
Connecting to host 192.168.110.181, port 5001
[  4] local 192.168.110.180 port 39867 connected to 192.168.110.181 port 5001
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   109 MBytes   917 Mbits/sec   64    389 KBytes
[  4]   1.00-2.00   sec   112 MBytes   940 Mbits/sec    0    486 KBytes
[  4]   2.00-3.00   sec   111 MBytes   930 Mbits/sec    0    567 KBytes
[  4]   3.00-4.00   sec   112 MBytes   938 Mbits/sec    0    615 KBytes
[  4]   4.00-5.00   sec   111 MBytes   934 Mbits/sec    0    641 KBytes
[  4]   5.00-6.00   sec  31.4 MBytes   264 Mbits/sec    2    592 KBytes
[  4]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec    1    592 KBytes
[  4]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec    0    592 KBytes
[  4]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec    1    592 KBytes
[  4]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec    0    592 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   587 MBytes   492 Mbits/sec   68             sender
[  4]   0.00-10.00  sec   586 MBytes   491 Mbits/sec                  receiver
valeriu147 ()
Ответ на: комментарий от vel

добавлю к iperf

кстати, после нескольких запусков iperf я смог вручную «положить» сетевой интерфейс. а не ждать как раньше сутки/двое. в логах есть такое:

Jun  2 14:08:28 gw kernel: [ 9965.525316] igb 0000:06:00.0: Detected Tx Unit Hang
Jun  2 14:08:28 gw kernel: [ 9965.525316]   Tx Queue             <0>
Jun  2 14:08:28 gw kernel: [ 9965.525316]   TDH                  <49>
Jun  2 14:08:28 gw kernel: [ 9965.525316]   TDT                  <87>
Jun  2 14:08:28 gw kernel: [ 9965.525316]   next_to_use          <87>
Jun  2 14:08:28 gw kernel: [ 9965.525316]   next_to_clean        <49>
Jun  2 14:08:28 gw kernel: [ 9965.525316] buffer_info[next_to_clean]
Jun  2 14:08:28 gw kernel: [ 9965.525316]   time_stamp           <10024d844>
Jun  2 14:08:28 gw kernel: [ 9965.525316]   next_to_watch        <ffff88007516f4a0>
Jun  2 14:08:28 gw kernel: [ 9965.525316]   jiffies              <10024df3e>
Jun  2 14:08:28 gw kernel: [ 9965.525316]   desc.status          <108200>
Jun  2 14:08:33 gw kernel: [ 9970.441673] igb 0000:06:00.0 em2: igb: em2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
valeriu147 ()
Ответ на: все пробовал от valeriu147

а почему оно в режиме 100Mbit? Так и должно быть ?

vel ★★★★★ ()
Ответ на: добавлю к iperf от valeriu147

Интересный рецепт «Please try booting the kernel with the pcie_aspm=off kernel parameter.»

не пробовал?

Проблема встречается регулярно, но общего рецепта решения нет.

А в настройках биоса никто не ковырялся ? Нет ли разгона и не используется ли какие-нибудь режимы энергосбережения cpu/chpset ?

vel ★★★★★ ()
Ответ на: комментарий от vel

bios нет. пробовал

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=off"

Конечно делал. В Bios ничего такого нет

valeriu147 ()
Ответ на: bios нет. пробовал от valeriu147

я один раз столкнулся с проблемой, когда интеловская 10Г сетевушка не инитилась драйвером со странной диагностикой. И только после сброса настройки биоса в начальное состояние она стала работать.

Интересно то, что eth0 работает, а eth1 - глючит. А в чем разница ? Оба подключены на гигабит? Как распределены irq между ядрами? Если eth1 принудительно перевести в 100Мбит, то проявится ли проблема ?

Попробуй (используя iperf3 в режиме udp) постепенно повышать скорость начиная со 100Мбит. Если проблема начнет проявлятся с какой-то скорости, то вероятно это следствие проблемы нехватки производительности (N3700 6W TDP явно не шустрый)

vel ★★★★★ ()

устанавливал самые последние драйвера

1. Самые последние у них (intel) Date: 5/31/2016 - при учете перечисленного вами выше и того что прошло меньше двух дней, может те были еще не самые последние? :)
2. Самые последние != самые лучшие, у них там из предыдущих веток еще есть

проверял разные дистрибутивы (Zeroshell, Pfense, FreeBsd, Ubuntu Server (с родным ядром и собранным мною), CentOS (с родным ядром и собранным мною);

Версии дистров пробовали именно те которые «типа» должны работать согласно таблички сайта supermicro ?

anc ★★★★★ ()
Ответ на: комментарий от anc

проблема локализирована

проблема локализирована. поставив свою локалку в первый порт, и запустив iperf я убедился, что она не падает, даже после минуты теста. переставил свой интернет в порт 2 и запустил тест на iperf уже через внешний ip-адрес – упал через пять секунд.

причина: первый ehternet интерфейс на этой материнке идет на прямую от чипсета–проца (soc n3700) – согласно схемы официального мануала материнской платы, а другие 3 интерфейса идут от проца к так называемому Pericom Semiconductor Device, а дальше уже распределяются на три ehternet контролера и mPCI. почему они не работают как надо – будем разбираться.

спасибо всем, кто помогал.

valeriu147 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.