@anatoly_tim

Проблема с агрегацией каналов в Oracle VM Server 3.2.8. В чем может быть проблема дропнутых пакетов на интерфейсах? Как узнать, что это за пакеты?

Добрый день, мучаюсь уже больше двух недель с агрегацией каналов. Используется связка cisco 4948 и 2 сетевых адаптеров со стороны сервера.

В маршрутизаторе 2 порта объединены в port-channel. По нему передается тегированный трафик

interface GigabitEthernet1/3
 description test-eth0
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 2,3
 switchport mode trunk
 no cdp enable
 channel-protocol lacp
 channel-group 6 mode active


interface GigabitEthernet1/39
 description test-eth1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 2,3
 switchport mode trunk
 no cdp enable
 channel-protocol lacp
 channel-group 6 mode active


interface Port-channel6
 description test
 switchport
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 2,3
 switchport mode trunk
 spanning-tree portfast
 spanning-tree bpduguard enable


Со стороны сервера конфигурация следующая:
#
uname -a
Linux ovm-test 2.6.39-300.32.6.el5uek #1 SMP Fri Oct 11 22:05:27 PDT 2013 x86_64 x86_64 x86_64 GNU/Linux


Сетевая карта используется Intel® PRO/1000 PT Dual Port Server Adapter
# lspci | grep Eth
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
04:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06)
04:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06)


Вывод команды ifconfig Как видно имеется большее число dropped пакетов

# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:15:17:D6:B0:14
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:9381 errors:0 dropped:6123 overruns:0 frame:0
          TX packets:1234 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1352583 (1.2 MiB)  TX bytes:165782 (161.8 KiB)

bond0.3  Link encap:Ethernet  HWaddr 00:15:17:D6:B0:14
          inet addr:192.168.32.7  Bcast:192.168.32.127  Mask:255.255.255.128
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1561 errors:0 dropped:146 overruns:0 frame:0
          TX packets:210 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:131627 (128.5 KiB)  TX bytes:33176 (32.3 KiB)

eth0      Link encap:Ethernet  HWaddr 00:15:17:D6:B0:14
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:5038 errors:0 dropped:2521 overruns:0 frame:0
          TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:758116 (740.3 KiB)  TX bytes:13150 (12.8 KiB)
          Interrupt:16 Memory:feba0000-febc0000

eth1      Link encap:Ethernet  HWaddr 00:15:17:D6:B0:14
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:4344 errors:0 dropped:26 overruns:0 frame:0
          TX packets:1141 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:594535 (580.6 KiB)  TX bytes:155006 (151.3 KiB)
          Interrupt:17 Memory:febe0000-fec00000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:46 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6906 (6.7 KiB)  TX bytes:6906 (6.7 KiB)


В интерфейсе бондинга прописаны опции работы с тегированным трафиком
# cat ./ifcfg-bond0
DEVICE=bond0
USERCTL=no
BONDING_OPTS="debug=1 mode=802.3ad miimon=100 xmit_hash_policy=layer2 lacp_rate=1"
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet


Тут мы настраиваем соответствующий VLAN
# cat ./ifcfg-bond0.3
VLAN=yes
DEVICE=bond0.3
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.32.7
NETMASK=255.255.255.128
GATEWAY=192.168.32.125
DNS=192.168.32.70


Конфигурация физических интерфейсов
# cat ./ifcfg-eth0
# Intel Corporation 82571EB Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:15:17:D6:B0:14
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no


# cat ./ifcfg-eth1
# Intel Corporation 82571EB Gigabit Ethernet Controller
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:15:17:D6:B0:15
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no


Не могу понять, откуда берутся эти пакеты. В остальном сеть работает. Возможно, у меня есть ошибки в конфигурации. Кто сталкивался с подобным?

Сам стенд тестовый и пока делать это на реальном сервере нецелесообразно из-за проблемы с пакетами.

Заранее вам благодарен.
  • Вопрос задан
  • 3111 просмотров
Решения вопроса 1
@throughtheether
human after all
Замечая разницу между общим количеством "дропов" на интерфейсе bond0:
bond0     Link encap:Ethernet  HWaddr 00:15:17:D6:B0:14
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:9381 errors:0 dropped:6123 overruns:0 frame:0

и количеством "дропов" на интерфейсе, обрабатывающем трафик влана 3:
bond0.3  Link encap:Ethernet  HWaddr 00:15:17:D6:B0:14
          inet addr:192.168.32.7  Bcast:192.168.32.127  Mask:255.255.255.128
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1561 errors:0 dropped:146 overruns:0 frame:0

предполагаю:
1) как уже отмечено, скорее всего приходит немаркированный трафик (по умолчанию, native vlan на оборудовании cisco имеет номер 1, в нем пересылается служебный трафик вроде CDP и прочая)
2) также вероятно, на сервер приходит трафик в виде фреймов, маркированных (тегированных) 2 вланом. Со стороны коммутатора он разрешен, а на сервере вы его, как я понял, не обрабатываете
Как возможное решение - назначение неиспользуемого влана в качестве native vlan на стороне коммутатора, разрешение только нужных вланов на транке со стороны коммутатора (влан 3 вы используете, влан 2, предположительно, не нужен).
Наличие "дропов" на интерфейсе bond0.3, к сожалению, объяснить не могу. Вероятно, это какие-то отброшенные пакеты вроде ненужного (непрослушиваемого) мультикаста.

На всякий случай, предоставьте, пожалуйста, вывод
ethtool eth0
ethtool eth1

UPD:
Я попросил предоставить вывод ethtool, чтобы удостовериться в корректном режиме портов (1000Mbps, full duplex). На самом деле, о корректном режиме работы портов говорит отсутствие коллизий и crc-ошибок, но чем больше данных - тем лучше в подобных случаях.

Native VLAN не используется, отдаю в PortChanell только 2 вышеупомянутых VLAN'а.
Предоставьте, пожалуйста, вывод с коммутатора
show interface Port-channel6 switchport Если все-таки выяснится, что на интерфейсе Po6 native vlan установлен в 1, по посмотрите на коммутаторе
show cdp
show cdp interface GigabitEthernet1/3
show cdp interface GigabitEthernet1/39


Как думаете, может это как-то связано с ядром?
К сожалению, я недостаточно владею особенностями работы ядра Linux, чтобы ответить на этот вопрос. Могу лишь предложить использовать tcpdump на интерфейсе bond0.3. Необходимо иметь в виду, что пакет, "дропнутый" ядром, может появиться, а может и не появиться в дампе трафика, в зависимости от причины "дропа". Но вполне может быть, чтоб вы увидите чужой мультикаст, например (OSPF Hello с другого конца L2-домена как вариант). Я хочу сказать, что это может быть связано с ядром, а может - и с обстановкой в сети.

UPD2:
Здесь видно, что все-таки native vlan 1 присутствует, упорно гуглил, но так и не понял как убрать эти параметры из конфигурации..
Создайте новый (ранее неиспользуемый) влан на коммутаторе и назначьте его в качестве native, но только на этот интерфейс. Пример:
configure terminal
interface Port-channel6
switchport trunk native vlan XXXX
, XXXX-номер влана.

Еще хотелось бы поделиться наблюдением:
eth0      Link encap:Ethernet  HWaddr 00:15:17:D6:B0:14
          TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
          
eth1      Link encap:Ethernet  HWaddr 00:15:17:D6:B0:14
          TX packets:1141 errors:0 dropped:0 overruns:0 carrier:0

Как следует из этого листинга, объем исходящего трафик с интерфейса eth1 на порядок превосходит объем трафика с интерфейса eth0. Конечно, с такими незначительными показателями торопиться с выводами не стоит, но я вам настоятельно рекомендую проверить схему с объемом трафика более гигабита. У меня есть подозрение, что, в случае, если потребители трафика находятся в другом L2-сегменте (т.е. трафик до них маршрутизируется через default gateway), то производительность может упереться в 1 Гбит/c. Если подобная ситуация будет наблюдаться, обратите внимание на строчку
# cat ./ifcfg-bond0
BONDING_OPTS="debug=1 mode=802.3ad miimon=100 xmit_hash_policy=layer2 lacp_rate=1"

Вероятно, потребуется сменить алгоритм хэширования на более чувствительный к деталям. Но об этом имеет смысл задумываться, имея результаты тестирования с нагрузкой в 1 Гбит/c и выше.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
RicoX
@RicoX
Ушел на http://ru.stackoverflow.com/
Предположу, что дропаются пакеты приходящие с switchport trunk native vlan измените на не используемый и должно перестать сыпать, сам бондинг настроен нормально судя по конфигу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы