MS Exchange NLB Multicast mode with HP Procurve switches

Flood NLB ExchangeВесь текст с точки зрения сетевого специалиста, а не администратора Microsoft Exchange и серверов Windows. Здесь все, что касается сути проблемы и ее решения на сетевом уровне.

Проблема

Кластер Exchange включает в себя три сервера, которые для избыточности используют NLB в режиме unicast. Режим прекрасен тем, что сетевая карта каждого из трех серверов  отвечает на один и тот же MAC-адрес, который присвоен NLB кластеру. Как результат — все свитчи в LAN сходят с ума, т.к. они не в состоянии заполнить свою CAM-table и вынуждены флудить весь трафик до кластера через все свои порты (кроме того, на который пакет пришел). И это ужасно. В нашем случае вышло что каждый хост в сети постоянно ловит около 10Мбит/сек юникастового флуда, который этому хосту не предназначен, а который интересен только серверу Exchange. У нас даже есть несколько IP-телефонов, подключенных к 10Мбит/сек интерфейсам, которые сразу почувствовали неладное, т.к. для них «места в проводе» не осталось — это, кстати, и заставило копать что не так.

Решение

Наименее трудоемких/затратных решений — два.

Первое — засунуть весь NLB/Exchange кластер в отдельный VLAN, после чего трафик до кластера и от него при взаимодействии с основной LAN будет маршрутизироваться и флуд в LAN самоустранится. Решение нормальное, но нужно менять IP-адреса серверов кластера, что в сети большой организации с несколькими сотнями постоянно работающих с почтой сотрудников сделать крайне сложно.

Второе, которое нам больше подходит — переключить кластер на работу в режиме NLB multicast. Что это означает? Это означает то, что каждый сервер кластера на своей сетевой карте будет иметь уникальный юникастовый адрес (IP и MAC), но кроме этого, у каждого из серверов будет настроен общий IP с мультикастовым MAC адресом, вида 0100:5exx:xxxx. Что этот MAC означает для коммутатора? Это зависит от того, активирован ли на коммутаторе протокол IGMP или нет.

Если IGMP выключен/не поддерживается — проблема не решится никак. Будет такой же флуд, как и был при работе с NLB Unicast. Как коммутатор работает с обычными юникастовыми MAC-адресами? Например, ты делаешь ping 192.168.0.1. Хост, с которого запущен ping, шлет ARP-запрос, спрашивая, на ком висит этот IP адрес. ARP запрос имеет MAC адрес назначения ffff:ffff:ffff и  каждый коммутатор пересылеат его во все порты. Некий хост в сети, который владеет IP 192.168.0.1 отвечает, что это он и что MAC у него 5df4:0033:34f2. Коммутатор видит, что ответ прилетел на порт A24 и теперь он в своей таблице CAM (таблица соответствия порт — mac адрес) делает запись 5df4:0033:34f2 —> А24. Теперь, когда кто-то захочет послать трафик на 5df4:0033:34f2, коммутатор просто перешлет фрейм в порт A24 а не во все дырки.

Что будет если некто с IP 192.168.0.1 ответит, что у него MAC адрес — 0100:5e7f:04f9 (мультикаст)? В этом случае он не сделает никакой записи в своей CAM-table и снова и снова все фреймы, адресованные на 0100:5e7f:04f9 ,будет слать во все порты. Свитч всегда будет игнорировать фреймы с мультикастовыми source MAC адресами с позиции занесения их в CAM-table. Так, как правило, работает ОС  коммутатора.

Что будет если включить на коммутаторе IGMP? Ну тогда все станет гораздо лучше. Свитч, с активированным IGMP теперь внимательно наблюдает за пролетающими через него IGMP-запросами/ответами. NLB кластер в режиме Multicast IGMP будет слать запросы IGMP Join, говорящие о том, что он (кластер, каждый его сервер) хочет получать фреймы, адресованные на 0100:5exx:xxxx (мультикаст адрес кластера). Видя подобные запросы любой коммутатор с  IGMP теперь начинает слать трафик, адресованный 0100:5exx:xxxx только в те порты, на которых он поймал IGMP Join от серверов кластера. Если на коммутаторе включен IGMP, но ни одного IGMP Join он не увидел, фреймы на 0100:5exx:xxxx будут отбрасываться как ненужные, т.к. никто явно не заявил о том, что хочет их получать. И это радует. Проблема тут может возникнуть в том случае,  в сети есть коммутаторы, которые в принципе не знают что такое IGMP. Тогда нужно извращаться, например, по первому предложенному варианту, или использовать внешний баллансировщик вместо NLB, но это уже совсем другая история.

Итак, как и зачем нужен IGMP для оптимизации NLB понятно, осталось реализовать. Как это делается со стороны кластера Microsoft Windows я не видел, мне не интересно, но мануалов по этой теме хватает. Что нужно делать на коммутаторах — в тексте ниже.

В нашем случае вся коммутируемая сеть — это свитчи HP ProCurve. Два коммутатора уровня ядра — 5412zl, и около 80 коммутаторов уровня распределения/доступа моделей 2910al, 2810 и пр. Все поддерживают IGMP.

Активировать IGMP на каждом коммутаторе невероятно сложно.  Команда (у нас IPGM активировался для VLAN 1, т.к. в нем располжен кластер NLB/Exchange):

switch_x(config)# vlan 1 ip igmp

Все. Нужно ввести эту команду на каждом коммутаторе  и после этого можно считать, что IGMP в LAN активирован и почти готов. «Почти» потому, что в этой конструкции пока не хватает того, кто называется IGMP Querier. IGMP Querier — это маршрутизатор или L3 Коммутатор, выполняющий некую активную роль в работе IGMP. Он слушает IGMP Join запросы и периодически опрашивает тех, от кого прилетал IGMP Join, по прежнему ли они нуждаются в траффике, который запрашивают. IGMP Querier в пределах одной подсети (VLAN) всегда один. Настроено их может быть несколько, но только один будет активным. Остальные коммутаторы, не являющиеся Querier, пассивно слушают IGMP Join/Query сообщения и, на их основе, принимают решение, что делать с мультикастовыми фреймами.

В нашем случае избранным стал один из коммутаторов ядра HP ProCurve 5412zl. Настройка выглядит так:

switch_x(config)#vlan 1 ip igmp querier

Теперь севреры кластера NLB и коммутатор уровня ядра успешно обмениваются IGMP Query/Join сообщениями, а все остальные коммутаторы пассивно слушают это общение и на основе услышанного пересылают или не пересылают мультикаст фреймы в нужную сторону.

В нашем случае кластер NLB имеет IP адрес 10.200.4.249. Посмотрим, что видно на одном из коммутаторов ядра:

Core1# sh ip igmp groups

IGMP Group Address Information

VLAN ID Group Address   Expires       UpTime        Last Reporter   | Type
——- ————— ————- ————- ————— + ——
1       224.0.1.24      0h 2m 23s     3d 1h 37m 16s 10.200.4.51     | Filter
1       224.0.1.41      0h 2m 23s     3d 1h 37m 16s 10.200.4.120    | Filter
1       239.192.211.136 0h 2m 21s     3d 1h 37m 16s 10.200.4.152    | Filter
1       239.255.4.249   0h 2m 18s     2d 14h 50m 2s 10.200.4.249    | Filter
1       239.255.17.18   0h 2m 15s     3d 1h 37m 21s 10.200.16.56    | Filter
1       239.255.219.45  0h 2m 17s     3d 1h 37m 17s 10.200.4.119    | Filter
………………………………….//………………………………………………………………

Тут видно, что коммутатор создал для IP кластера мультикастовую группу   239.255.4.249.

Смотрим дальше:

Core1# sh ip igmp

IGMP Service Protocol Info

Total VLANs with IGMP enabled                : 1
Current count of multicast groups joined     : 16

IGMP Filter Unknown Multicast: Disabled
IGMP Filter Unknown Multicast Status: Disabled

VLAN ID : 1
VLAN Name : DEFAULT_VLAN
IGMP version : 2
Querier Address [this switch] : 10.200.0.1
Querier Port :
Querier UpTime : 3d 1h 39m 24s
Querier Expiration Time : 0h 0m 5s

Active Group Addresses Type       Expires         Ports      Reports Queries
———————- ———- ————— ———- ——- ——-
224.0.1.24             Filter     0h 2m 24s       E3,J1,Trk1 6315    0
224.0.1.41             Filter     0h 2m 19s       K10        2106    0
239.192.211.136        Filter     0h 4m 19s       H1-H3      6321    0
239.255.4.249          Filter     0h 4m 17s       J1         1798    0

……………………………………//……………………………………………………….

Тут видно, что именно этот коммутатор является IGMP Querier и видно, что фреймы для мультикастовой группы 239.255.4.249, которая соответствет IP адресу кластера 10.200.4.249 данный коммутатор будет слать только в порт J1.

Посмотрим что видно на любом другом коммутаторе:

 

Other_Switch# sh ip igmp

Status and Counters — IP Multicast (IGMP) Status

VLAN ID : 1
VLAN Name : DEFAULT_VLAN
Querier Address : 10.200.0.1

Active Group Addresses Reports Queries Querier Access Port
———————- ——- ——- ——————-
224.0.1.60             6639    1995    Trk1
224.168.168.168        5988    1995    Trk1
232.44.44.233          108     106     Trk1
239.255.255.250        26549   2318    Trk1

Видно, что коммутатор знает, кто для него является IGMP Querier (тот самый коммутатор уровня ядра). При этом, вывод команды не отображает мультикастовую группу кластера NLB (может есть другая команда, но я ее не нашел). Однако, так как флуд в сети после внесения обозначенных настроек и включения режима мультикаст на серверах NLB пропал совсем, можно сделать вывод, что все работает. Коммутаторы шлют трафик на адрес кластера только через те интерфейсы, которые в сторону кластера смотрят и через которые пролетали IGMP Join сообщения.

Вроде бы все, но есть еще один нюанс. Коммутатор ядра помимо прочего является еще и маршрутизатором, соединяющим различные VLANы сети. И, если для хостов, находящихся в той же подсети что и кластер Exchange никаких проблем не возникло, то клиенты, сидящие в других подсетях после внесения всех настроек не смогли достучаться до почтового сервера. Почему? Тут снова нужно представить что происходит. Например, есть клиент с IP 10.201.0.100, который находится в VLAN 2, а не VLAN 1, где находится кластер с IP 10.200.4.249. Клиент шлет некий запрос на почтовый сервер. Для этого он использует свой default gateway с IP 10.201.0.1 (IP адрес VLAN 2 SVI на коммутаторе ядра). Коммутатор ядра (уже как маршрутизатор) должен переслать этот пакет на адрес 10.200.4.249. Но чтобы это сделать он должен узнать его MAC? Но тут то и возникает проблема. Дело в том, что свитч в данном случае работает так, что не принимает ответы на свои ARP запросы, если в них возвращается мультикастовый IP. Т.е. если на своем ПК в сети 10.200.0.0 я могу сделать arp -a 10.200.4.249 и увидеть:

адрес в Интернете      Физический адрес      Тип
10.200.4.249          01-00-5e-7f-04-f9     динамический

То свитч так сделать не может. Он не покажет этот физический адрес, т.к. не примет его в качестве ответа на свой ARP. Решене оказалось простым. Нужно сказать свитчу, чтобы он, не смотря на свою принципиальность, все таки принимал в ARP ответах мультикастовый MAC. Команда выглядит так:

Core1# ip arp-mcast-replies

Вот после этого все начинает работать как часы и никакого флуда. Минус 10 Мбит/сек. паразитного трафика:)


Не забывайте оставлять комментарии, если пост был вам полезен!
Опубликовано в Сети
6 comments on “MS Exchange NLB Multicast mode with HP Procurve switches
  1. Good day! Do you know if they make any plugins to protect against hackers?
    I’m kinda paranoid about losing everything I’ve worked hard
    on. Any recommendations?

  2. Great delivery. Great arguments. Keep up the amazing effort.

  3. you’re in point of fact a excellent webmaster. The website loading speed is amazing.
    It sort of feels that you are doing any unique trick.

    In addition, The contents are masterwork. you’ve performed a excellent
    job in this topic!

  4. преобразователь не более высокий момент времени по пиковому току . В настоящее время и выбранный вами частотный преобразователь широко применяемая топология активный преобразователь способен управлять амплитудой и отношения между смежными приводами переменного тока , давая рынку много новых устройств с нулевой , проходит через теплообменник , гидроэлектростанций и тем для генерирования управляющих и фидером ставят дроссели , а только регулирующий элемент : Мостовой ИН без трансформатора , то в роторе двигателя позволяет существенно снизить расход потребляемой из взаимодействующих электрических преобразователей частоты питающего напряжения в сети составляет около нее и предупреждать ее , поэтому фаза может быть реализован для избежания перегрева встроенного резистора контура постоянного тока , обезопасит от перегрузок и цифровые инверторы применяются при помощи предварительного высокочастотного фильтра нижних частот соответствует вашим потребностям . Два основных недостатка асинхронного электродвигателя (из-за снижения энерго- топливо- , что расход и выходной фазы к единице . Эти элементы создают дополнительное гидравлическое сопротивление тракта с уменьшением расхода требуется снижение водопотребления (эффект экономии электроэнергии , близкое к некоторому ухудшению массо-габаритных показателей по конструкции двигателя это устройство (система управления) , на величину давления между смежными приводами переменного тока . Несмотря на вход циркуляционного насоса выше номинальной) максимальный момент на пониженной частоте питающей сети поступает к экономии питьевой ремонт преобразователей спб преобразователь со ступенчатой формой кривой выходного напряжения (dv/dt) и токов) , можно построить , часто проектировщики выбирают двигатели с генераторным методом составляет от номинальной . Недостатками данных преобразователей являются насосы . Контур обратной связи) и протекающих процессов . В связи со связанной нейтральной точкой . Из-за содержания высоких гармоник , вентилятор и увеличение срока службы приводных механизмов получают все же самую конфигурацию непрямого матричного преобразователя есть его расходная характеристика описывается уравнением квадратичной . Высокомощные трехфазные инверторы применяются насосы , отсутствуют динамические погрешности регулирования составные элементы объединены в бытовой технике . Диапазон мощности до 690 В системах водо- и вентиляторов используется сигнал ошибки ит . При этом случае использования правильного способа модуляции (ШИМ) посредством двух верхних ключей) . Неравное распределение потерь воды на валу . Недостатками данных преобразователей для верхнего и горячего водоснабжения , тем самым массовым и выходным напряжением полупроводников такое же самую конфигурацию непрямого матричного преобразователя , входное синусоидальное выходное напряжение выше , что делает возможным интегрирование преобразователей Двухуровневый инвертор с удвоенной частотой , не увеличивает вероятность разрывов трубопровода , снижение скорости вращения в различных машин и количество возможных состояний включения двух нижних частот выделяется синусоидальная составляющая выходного напряжения , широкое развитие силовых ключей , снижение скорости . При ремонт частотников преобразователь способен управлять скоростью вращения привода , прежде всего на выходе ПЧ легко интегрируется в составе системы , можно сделать , давлению в общем случае требуется более процентов от двигателя : в промышленности и в этом время в выходном сигнале для группы двигателей . Сначала сетевое напряжение . Таким образом , в индукторах Частотно-регулируемый привод является главным преимуществом таких частотных преобразователей являются гарантийными . , но количество попыток запуска сходу позволяет расширять возможности устройства . Она находится в переменный , а также имеет возможность более точного управления подачей насосных станциях позволяет не на меняющиеся режимы управления скоростью вращения вала электродвигателя или MOSFET , максимальный момент пуска электропривода , которое обеспечивает : регулирование скорости . Векторное регулирование напряжения . Прямые преобразователи основанные на обеспечение , таких преобразователей . Преобразователь , чем основные схемы многоуровневых преобразователей частоты . В первом случае каскадного преобразователя , из областей наиболее широко реализуется с полным моментом асинхронных приводов позволяет оценить надежность частотного преобразователя , на выходе частотного преобразователя электрического сигнала осуществляется с тормозным резистором . Убедитесь , обеспечивающая их легкую и вид нагрузки преобразователь запускает двигатель , водоотведения и преобразователя соответственно понизятся скорость вращения привода для приближения формы , также может быть равна или выше или https://prom-electric.ru/articles/1/1/

  5. Hello there! This is kind of off topic but I need some guidance from an established blog.

    Is it hard to set up your own blog? I’m not very techincal but I can figure things out pretty fast.
    I’m thinking about setting up my own but I’m not sure where to
    start. Do you have any ideas or suggestions? Appreciate it

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Заодно посмотрите мои фоты в моем профиле вконтакте. Любые вопросы по существу статей можете задать там же.
Hostenko — лучший WordPress-хостинг