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

Два многоадресных кластера NLB в одной VLAN обрабатывают один и тот же трафик

У меня есть более старый кластер NLB на основе ISA2006, который я планирую перенести на новый кластер TMG2010 NLB. Мне нужно, чтобы оба кластера были активны в течение некоторого времени во время миграции (конечно, с разными IP-адресами).

Оба кластера NLB работают в многоадресном режиме, и пакеты рассылаются физической сетью на всех портах соответствующей VLAN, как и должно быть в случае NLB.

Вот это обзор логической схемы сети:

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда я включаю NLB в новом кластере, он также будет обрабатывать трафик, предназначенный для текущего активного другого кластера NLB, даже если MAC-адрес назначения кадров ему не принадлежит. Это вызывает множество головных болей, таких как пересылка дублированных пакетов (например, я получаю 4 ответа на один DNS-запрос) или множество журналов для пакетов в новом кластере, которые отбрасываются как TCP вне состояния.

Учтите следующее: оба NLB активны, и хост A отправляет IP-пакет хосту B на другой стороне кластеров NLB. Вот что происходит:

  1. Хост A проверит свою таблицу маршрутизации и заметит, что он должен переслать пакет на свой шлюз по умолчанию 192.168.1.6 (старый NLB)
  2. Хост A передает ARP-запрос для IP-адреса, и на него отвечает соответствующий виртуальный NLB-MAC старого кластера.
  3. Хост A отправляет пакет с IP-адресом назначения B и MAC-адресом назначения старого кластера по сети
  4. Пакет рассылается по всем портам VLAN, потому что MAC-адрес назначения нигде не изучен и является MAC-адресом назначения многоадресной рассылки, также нет отслеживания IGMP или чего-либо еще.
  5. Кадр поступает, как и предполагалось, в члены кластера старого NLB, они обрабатывают и пересылают его соответствующим образом.
  6. Фрейм также поступает в члены кластера нового кластера NLB (потому что он залит), но вместо того, чтобы отбрасывать фрейм на уровне 2, поскольку MAC назначения не совпадает ни с одним из его собственных, он также обрабатывает тот же пакет и пересылает его.

То же самое происходит с пакетами, исходящими из другой сети. Это действительно сбивает меня с толку, потому что я думал, что сетевой стек уровня ОС 2 должен сразу же отбрасывать кадры задолго до того, как они будут перенаправлены на уровень приложения.

Как только я отключу NLB в новом кластере, он прекратит обработку трафика, предназначенного для другого кластера.
Есть ли у кого-нибудь идеи, как я могу предотвратить такое поведение или действительно ли это так, как должно работать?