Назад | Перейти на главную страницу

Связывание Linux (баланс-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). Проблема решается самостоятельно через несколько секунд.

ИДЕЯ

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

ИСПРАВЛЕНИЕ ПРОБЛЕМ

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

Отсюда я мог видеть:

По сути, кажется, что, за исключением первого запроса 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. Сообщите нам, что вы нашли. И поделитесь с нами. Спасибо.