Связывание Linux (balance-tlb), гости KVM и коммутаторы L2 = одноадресное лавинное рассылание?

У меня проблема одноадресной лавинной рассылки в моей сети, которая началась, когда я переместил некоторое программное обеспечение на виртуализированных гостей. Похоже, это очень похоже на то, о чем сообщалось здесь: Переключить флуд при связывании интерфейсов в Linux . Этот вопрос восходит к 2012 году ... так что, возможно, теперь есть лучшее решение, возможно, на стороне Linux / KVM.

Далее я попытаюсь объяснить архитектуру и шаги по устранению неполадок, которые я выполнил. Я надеюсь, что кто-нибудь может дать мне несколько советов и, возможно, решение! Заранее благодарим!

АРХИТЕКТУРА

Сервер

Хост Linux с PROXMOX 4.1 и несколькими виртуальными машинами Windows.

Хост имеет 4-гигабитные интерфейсы Ethernet (с MAC-адресами A, B, C и D), связанные с помощью метода balance-tlb.

Связь затем передается на виртуальные машины. Таким образом, каждая виртуальная машина имеет свой собственный MAC-адрес (с MAC-адресами X, Y, Z, ...).

Программное обеспечение, размещенное на виртуальных машинах, взаимодействует со многими устройствами на местах.

Сеть

Сервер подключается к коммутатору Juniper, который затем подключается к широкой сети Cisco. Все на уровне 2.

ПРОБЛЕМА

В сети Cisco время от времени наблюдаю одноадресные штормы. Кажется, они запускаются каждые 5 минут или несколько раз. Я проанализировал трафик и увидел, что внезапно трафик с некоторых устройств на определенную виртуальную машину (а не наоборот) реплицируется на все физические порты коммутаторов (в той же VLAN). Проблема решается в одиночку через несколько секунд.

IDEA

Прочитав документацию Cisco (относительно одноадресной лавинной рассылки и «времени устаревания» MAC-адресов), а также упомянутую выше ссылку, я обнаружил, что проблема может быть связана с тем, что MAC-адрес виртуальные машины не так часто появляются в сети, так что по прошествии определенного «времени устаревания» коммутаторы начинают пересылать такой трафик на все порты, пока не обнаружат, где находится хост.

УСТРАНЕНИЕ НЕПОЛАДОК

Я подключил ноутбук в сети и начал пинговать его с одной виртуальной машины. Я обнюхал пакеты на портативном компьютере.

Из этого я мог видеть:

  • ARP-запрос от виртуальной машины, использующий в качестве источника MAC свой собственный MAC-адрес (скажем X)

  • ARP-ответ от портативного компьютера, используя в качестве источника MAC - собственный MAC-адрес (L), а получателя - MAC-адрес виртуальной машины (X)

  • ping-запросы от виртуальной машины, используя в качестве источника MAC один из MAC-адресов связанных физических портов Ethernet (A, B, C , D, и время от времени переключаясь между тремя из них) и в качестве MAC-адреса назначения L

  • ping-ответы с портативного компьютера, используя в качестве источника MAC L и в качестве назначения MAC MAC-адрес виртуальной машины (X)

В основном это Кажется, что, за исключением первого запроса ARP, виртуальная машина никогда не появляется на ноутбуке со своим собственным MAC-адресом (X), но всегда с A, B, C или D (различаются во времени). Однако ноутбук всегда реагирует на X.

РЕШЕНИЕ?

Я читал, что в режиме balance-tlb трафик уходит с разных интерфейсов в зависимости от нагрузки. Однако я думаю, что такое поведение в сочетании с тем фактом, что виртуальные машины появляются в сети с исходным MAC-адресом используемого физического интерфейса, может вызвать проблему, о которой я сообщил.

Если это верно, знает ли кто-нибудь, существует ли способ всегда принудительно использовать собственный MAC-адрес виртуальной машины для каждого обмена данными? (например, как это уже происходит для запросов ARP)

Если это правильно, знает ли кто-нибудь, есть ли способ всегда принудительно использовать собственный MAC-адрес виртуальной машины для каждого обмена данными? (например, как это уже происходит для запросов ARP)

Если это правильно, знает ли кто-нибудь, есть ли способ всегда принудительно использовать собственный MAC-адрес виртуальной машины для каждого обмена данными? (например, как это уже происходит для запросов ARP) Или, может быть, решение находится где-то еще?

Я думал, что могу настроить виртуальные машины Windows для сброса таблицы ARP каждые 3 минуты ... но мне это кажется слишком грубой силой ...:)

Еще раз спасибо за любую помощь!

РЕДАКТИРОВАТЬ: Я подтверждаю, что если во время переполнения я быстро войду в соответствующую виртуальную машину и выполню сброс таблицы ARP, я увижу новые запросы ARP от виртуальной машины (сообщающие свой собственный MAC-адрес) к сети), и буря немедленно прекращается.

2
задан 13 April 2017 в 15:13
2 ответа

Balance-tlb (режим 5) и balance-alb (режим 6) не работают с виртуальными мостами. Они могут вызывать зацикливание широковещательной передачи, при некоторых условиях переписывают исходный MAC-адрес в пакетах, а режим 6 перехватывает ARP намеренно.

Вам необходимо использовать активное резервное копирование (режим 1) без конфигурации коммутатора или balance-xor (режим 2) или 802.3ad (режим 4) с конфигурацией коммутатора.

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

0
ответ дан 3 December 2019 в 16:06

https://en.wikipedia.org/wiki/Unicast_flood Возможно, что ваши ::::::: "" "" хосты с таймерами ARP дольше, чем тайм-аут адресного кеша на коммутаторах ..... "" "" "согласно статье. Попробуйте установить таймеры ARP хоста гипервизора KVM и хостов виртуальных машин короче, чем у самого коммутатора, к которому они подключаются через физический порт Ethernet. Сообщите нам, что вы нашли. И поделитесь с нами. Спасибо.

-1
ответ дан 3 December 2019 в 16:06

Теги

Похожие вопросы