У меня проблема одноадресной лавинной рассылки в моей сети, которая началась, когда я переместил некоторое программное обеспечение на виртуализированных гостей. Похоже, это очень похоже на то, о чем сообщалось здесь: Переключить флуд при связывании интерфейсов в 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). Проблема решается в одиночку через несколько секунд.
Прочитав документацию 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-адрес) к сети), и буря немедленно прекращается.
Balance-tlb (режим 5) и balance-alb (режим 6) не работают с виртуальными мостами. Они могут вызывать зацикливание широковещательной передачи, при некоторых условиях переписывают исходный MAC-адрес в пакетах, а режим 6 перехватывает ARP намеренно.
Вам необходимо использовать активное резервное копирование (режим 1) без конфигурации коммутатора или balance-xor (режим 2) или 802.3ad (режим 4) с конфигурацией коммутатора.
Вы также можете использовать циклический перебор (режим 0) или широковещательной рассылки (режим 3) с конфигурацией переключателя, но это не очень хорошо для производительности потока TCP.
https://en.wikipedia.org/wiki/Unicast_flood Возможно, что ваши ::::::: "" "" хосты с таймерами ARP дольше, чем тайм-аут адресного кеша на коммутаторах ..... "" "" "согласно статье. Попробуйте установить таймеры ARP хоста гипервизора KVM и хостов виртуальных машин короче, чем у самого коммутатора, к которому они подключаются через физический порт Ethernet. Сообщите нам, что вы нашли. И поделитесь с нами. Спасибо.