[Решено] Сетевой интерфейс раз в 29 секунд отбрасывает 1 пакет

Автор dpitikov, 16 сентября 2013, 11:38:25

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dpitikov

Здравствуйте!

Прошу помочь мне в определении причины нижеописанной ситуации.

Сетевой интерфейс компьютера
Открыть содержимое (спойлер)

cat /etc/debian_version
7.1

uname -a
Linux 3.10-0.bpo.2-amd64 #1 SMP Debian 3.10.5-1~bpo70+1 (2013-08-11) x86_64 GNU/Linux

cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto br0
iface br0 inet static
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0
    address 192.168.2.122
    netmask 255.255.255.0
    gateway 192.168.2.20
    dns-nameservers 192.168.2.20

ethtool -i eth0
driver: e1000e
version: 2.4.14-NAPI
[свернуть]
раз в 29 секунд отбрасывает 1 пакет.
Сначала я заметил, что показатель dropped в выводе ifconfig не нулевой и постоянно увеличивается. С помощью простого скрипта я определил, что счетчик этот увеличивается периодически и отвечает за число пакетов, отброшенных ядром по разным причинам.

Вопросы:
1) как узнать, что это за пакет и почему ядро его отбрасывает?

Заранее спасибо.


dpitikov

Я пробовал tcpdump. И тут у меня два вопроса:
1) он смотрит трафик перед ядром, или после. Если до, то есть теоретическая возможность увидеть интересующий меня пакет;
2) что мне искать в выводе tcpdump'а? С учетом предположения #1, что tcpdump находится перед ядром, нужны какие-то признаки, по которым можно из тысяч других пакетов найти искомый.

ogost

а зачем у вас бридж настроен с единственным интерфейсом?
согласно гуглу пакеты роняет либо сама карточка, либо сетевой стэк: http://linux-troubleshooting.blogspot.com/2010/06/packet-drops-in-linux.html

dpitikov

#4
Мост у меня из одного интерфейса до тех пор, пока не запущу виртуальные машины (kvm). Потом он выглядит как-то так:


# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.6805ca1a1d8f       no              eth0
                                                        vnet0


Сообщение объединено: 18 сентября 2013, 17:24:57

Проблема решена!

Коммутатор HP 1810g-8 раз в 30 секунд рассылал пакеты LLDP (как я понял, для определения топологии доступной сети).
Причиной отбрасывания пакета с определенной версии ядра (2.6.x) может быть (с форумов):

Softnet backlog full
Bad / Unintended VLAN tags
Unknown / Unregistered protocols
IPv6 frames when the server is not configured for IPv6

По неведомым лично мне причинам, ядро записало пакет LLDP в неизвестные (незарегистрированные?) ему протоколы.

Поймал его с помощью:

tcpdump -i eth0 -nnve not ip and not arp
14:05:14.045769 > , ethertype LLDP (0x88cc),
length 121: LLDP, length 107
        Chassis ID TLV (1), length 7
          Subtype MAC address (4):
        Port ID TLV (2), length 2
          Subtype Local (7): 7
        Time to Live TLV (3), length 2: TTL 120s
        Port Description TLV (4), length 7: Port #7
        System Name TLV (5), length 6: J9802A
        System Description TLV (6), length 49
          HP 1810-8G, PL.1.5, eCos-3.0, 1_12_8-customized-h
        System Capabilities TLV (7), length 4
          System  Capabilities [Bridge] (0x0004)
          Enabled Capabilities [Bridge] (0x0004)
        Management Address TLV (8), length 12
          Management Address length 5, AFI IPv4 (1):
          Interface Index Interface Numbering (2): 0
        End TLV (0), length 0


Всем спасибо!

Сообщение объединено: 18 сентября 2013, 17:31:39

Для тех, у кого есть/будет аналогичная проблема, привожу несколько ссылок, которые помогли мне:
https://forums.suse.com/showthread.php?1320-Mystery-RX-packet-drops-on-SLES11-SP2-every-30-sec/page2
https://communities.vmware.com/thread/454201?start=0&tstart=0
+
полезная утилита dropwatch
https://fedorahosted.org/dropwatch/