У меня проблема с одноадресным наводнением в моей сети, которая началась, когда я переместил некоторое программное обеспечение на виртуализированных гостей. Похоже, это очень похоже на то, что сообщается здесь: Переключить флуд при связывании интерфейсов в 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) Или, может быть, решение где-то еще?
Я думал, что могу настроить виртуальные машины 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 дольше, чем тайм-аут адресного кеша на коммутаторах ..... "" "" "согласно статье. Попробуйте установить хост гипервизора KVM и Таймеры ARP хостов виртуальных машин должны быть короче, чем у самого коммутатора, к которому они подключаются через физический порт Ethernet. Сообщите нам, что вы нашли. И поделитесь с нами. Спасибо.