Получил немного странную проблему. У меня есть машина с Proxmox 5.3, которая имеет в своем оборудовании 4-портовую карту Intel NIC (Gigabit, PCI-e) в дополнение к пятому гигабитному Ethernet на материнской плате.

У меня есть компьютер, настроенный на то, что встроенный сетевой адаптер является интерфейсом управления для компьютера, а 4-гигабитные сетевые адаптеры связаны вместе с LACP (и подключены к управляемому коммутатору HP ProCurve 1810G) - все виртуальные машины и контейнеры на коробке получают сетевое подключение через связанный NIC. Очевидно, что коммутатор управляется и поддерживает LACP, и я настроил настройку магистрали на коммутаторе для 4 портов.

Кажется, все работает нормально, или я так думал.

В выходные я установил netdata на хосте Proxmox, и теперь я получаю постоянную тревогу о потере пакетов на bond0 (4 сетевых адаптерах). Я немного озадачен, почему.

Глядя на статистику для bond0, кажется, что RX-пакеты отбрасываются с разумной частотой (в настоящее время отображается ~ 160 RX-пакетов, отброшенных за последние 10 минут - кажется, что TX-пакеты не отбрасываются).

Вывод интерфейса ниже, вы заметите, что интерфейс моста к виртуальным машинам не имеет пропущенных пакетов, это происходит только на bond0 и на его ведомых устройствах. MTU установлен на 9000 (на коммутаторе включены большие кадры) - я все еще видел эту проблему с MTU как 1500. enp12s0 - это NIC управления, остальные 4 NIC - это подчиненные устройства.

bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 9000
    ether 00:1b:21:c7:40:d8  txqueuelen 1000  (Ethernet)
    RX packets 347300  bytes 146689725 (139.8 MiB)
    RX errors 0  dropped 11218  overruns 0  frame 0
    TX packets 338459  bytes 132985798 (126.8 MiB)
    TX errors 0  dropped 2 overruns 0  carrier 0  collisions 0

enp12s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.3  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::7285:c2ff:fe67:19b9  prefixlen 64  scopeid 0x20<link>
    ether 70:85:c2:67:19:b9  txqueuelen 1000  (Ethernet)
    RX packets 25416597  bytes 36117733348 (33.6 GiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 16850795  bytes 21472508786 (19.9 GiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0f0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 9000
    ether 00:1b:21:c7:40:d8  txqueuelen 1000  (Ethernet)
    RX packets 225363  bytes 113059352 (107.8 MiB)
    RX errors 0  dropped 2805  overruns 0  frame 0
    TX packets 15162  bytes 2367657 (2.2 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0f1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 9000
    ether 00:1b:21:c7:40:d8  txqueuelen 1000  (Ethernet)
    RX packets 25499  bytes 6988254 (6.6 MiB)
    RX errors 0  dropped 2805  overruns 0  frame 0
    TX packets 263442  bytes 123302293 (117.5 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0f0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 9000
    ether 00:1b:21:c7:40:d8  txqueuelen 1000  (Ethernet)
    RX packets 33208  bytes 11681537 (11.1 MiB)
    RX errors 0  dropped 2804  overruns 0  frame 0
    TX packets 42729  bytes 2258949 (2.1 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0f1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 9000
    ether 00:1b:21:c7:40:d8  txqueuelen 1000  (Ethernet)
    RX packets 63230  bytes 14960582 (14.2 MiB)
    RX errors 0  dropped 2804  overruns 0  frame 0
    TX packets 17126  bytes 5056899 (4.8 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vmbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
    inet 192.168.1.4  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::21b:21ff:fec7:40d8  prefixlen 64  scopeid 0x20<link>
    ether 00:1b:21:c7:40:d8  txqueuelen 1000  (Ethernet)
    RX packets 54616  bytes 5852177 (5.5 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 757  bytes 61270 (59.8 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Первоначально подозревая, что это какая-то проблема с буфером, я внес некоторые изменения в sysctl, чтобы убедиться, что размеры буферов были адекватными. Настройки sysctl можно найти здесь (они, похоже, не имеют никакого значения):

https://paste.linux.community/view/3b5f2b63

Конфигурация сети:

auto lo
iface lo inet loopback

auto enp12s0
iface enp12s0 inet static
    address  192.168.1.3
    netmask  255.255.255.0

iface enp3s0f0 inet manual

iface enp3s0f1 inet manual

iface enp4s0f0 inet manual

iface enp4s0f1 inet manual

auto bond0
iface bond0 inet manual
    bond-slaves enp3s0f0 enp3s0f1 enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode 802.3ad
    mtu 9000

auto vmbr0
iface vmbr0 inet static
    address  192.168.1.4
    netmask  255.255.255.0
    gateway  192.168.1.1
    bridge-ports bond0
    bridge-stp off
    bridge-fd 0

Действия по устранению неполадок, которые я предпринял:

а) настройки sysctl (как прилагается) б) увеличение MTU и включение гигантских кадров на коммутаторе (без изменений) в) сброс коммутатора и воссоздание транка LACP (без изменений)

Любые идеи о том, что я должен попробовать дальше? Я начинаю думать, что есть кое-что, чего я не понимаю в объединении NIC. Как я уже сказал, все работает нормально, но меня немного беспокоит высокая потеря пакетов.

Другие машины в сети, которые подключены к коммутатору, не имеют этой проблемы (5-ый NIC на машине также в порядке).

1 ответ1

1

Я видел это раньше: кажется, что коммутаторы HP иногда отправляют широковещательные пакеты всем членам магистрали LACP. Ядро затем видит эти пакеты как дубликаты и отбрасывает их (конечно, кроме первого прибывающего).

Хотя это, конечно, не элегантно, в реальной жизни это не создает проблем. Вы можете проверить, является ли это этим эффектом, специально отправив множество широковещательных пакетов и проверив, соответствует ли это статистике отбрасывания.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .