Распределители нагрузки KEMP, использующие UCARP (VRRP) - многоадресный MAC-адрес не определяется

10

Хорошо - я боролся с этим в течение по крайней мере 20 часов подряд. Извините, если это похоже на длинную напыщенную речь или сообщение в блоге, но я дошел до истощения.

Итак, вот сделка. Мы используем балансировщики нагрузки KEMP, которые используют UCARP (Linux-клон CARP, который является VRRP-клоном) для сердцебиения HA и постоянных состояний. Мы хотим использовать IGMP в нашей среде, чтобы предотвратить наводнения в центре обработки данных.

У нас есть два коммутатора Dell PowerConnect 8124F, работающие на ПО 5.1.1.7, которые работают в качестве верхней части стойки. Эти два подключены к пачке Cisco 3750-X, которая является нашим ядром.

Проблемы начались, когда мы обновили PowerConnect 5.1.x, где они, по-видимому, по умолчанию оставили IGMP-слежку включенной, если вы не укажете обратное. И вот - наши балансировщики нагрузки ушли в сплит-мозг, вызывая всевозможные теплые нечеткие забавы.

  • Если я отключаю отслеживание IGMP в VLAN, где балансировщики нагрузки выполняют многоадресную рассылку, ничего не происходит, многоадресная рассылка все еще не работает
  • Если я настрою IP PIM на нашем ядре, коммутаторы PowerConnect увидят его в той же VLAN, но по-прежнему не будут передавать многоадресный трафик.
  • Если я включаю флуд весь незарегистрированный многоадресный трафик, он все равно ничего не делает.
  • Если я отключаю отслеживание IGMP глобально на коммутаторах PowerConnect, весь многоадресный трафик работает. Он работает настолько хорошо, что мы получаем многоадресный трафик на каждый порт, имеющий одну и ту же VLAN-метку. Чудесно.

Я заметил некоторые странные записи MAC-адресов в VLAN в нашем ядре:

coresw#sh mac address-table vlan 367 | include 5e00
 367    0000.5e00.0101    DYNAMIC     Po13   seq_no:0

И я думаю .. Разве это не адрес многоадресной рассылки? Почему это не в "многоадресной таблице адресов sh mac"?

coresw#sh mac address-table multicast vlan 367
Vlan    Mac Address       Type        Ports
----    -----------       ----        -----
coresw#

А потом я прочитал это в руководстве по PowerConnect CLI:

Многоадресный трафик - это трафик, предназначенный для группы узлов. Группы хостов идентифицируются по MAC-адресу назначения, то есть в диапазоне 01: 00: 5e: 00: 00: 00-01: 00: 5e: 7f: ff: ff: ff для многоадресного трафика IPv4 или 33: 33: xx: xx : xx: xx для многоадресного трафика IPv6.

Похоже, мы пропустили "01" в начале MAC-адреса, нет? Динамическая запись MAC выше начинается с «00». На данный момент я думаю о том, чтобы позвонить в KEMP и сообщить им, что их продукт ужасно неправильно настроен. Но тогда я иду читать RFC для VRRP - и вот:

MAC-адрес виртуального маршрутизатора, связанный с виртуальным маршрутизатором, представляет собой MAC-адрес IEEE 802 в следующем формате:

IPv4-кейс: 00-00-5E-00-01- {VRID} (в шестнадцатеричном формате, в стандартном порядке следования битов в Интернете)

Хорошо, так что коммутаторы обычно не выбирают диапазон MAC-адресов многоадресной рассылки для VRRP. Хорошо, давайте настроим статическую группу хостов на коммутаторах Dell. Нет.

Неверный ввод: MAC-адрес многоадресной рассылки должен иметь формат 01XX: XXXX: XXXX

Хорошо, тогда .. Следующий шаг, попробуйте добавить статическую запись Mac:

osl-sys-swrack03(config)#mac address-table multicast ?

forbidden                forbid adding specific multicast addresses to
                         specific ports.

osl-sys-swrack03(config)#

Так что - нет способа настроить статическую многоадресную запись MAC. Если я пытаюсь сделать то же самое с обычной статической записью MAC, я могу привязать ее только к одному порту - этот кластер балансировки нагрузки работает через 4 разных порта по 10 гигабайт.

Обновление : Кажется, есть некоторая путаница относительно MAC-адресов. 172.30.1.0/24 - это фронтальная сеть балансировки нагрузки. 172.30.1.6 - это общий VIP по умолчанию для кластера, .7 - это IP-адрес управления для первого балансировщика нагрузки, а .8 - для второго балансировщика нагрузки. Все остальные адреса (30, 40, 70, 80 и т. Д.) Являются VIP-персонами с различными услугами на них. Когда происходит аварийное переключение, все VIP меняют свой MAC-адрес на физический MAC-адрес второго LB. Адрес многоадресной рассылки в нижней таблице не меняется.

coresw#sh ip arp vlan 367
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  172.30.1.6             78   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.40           204   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.80           167   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.70            38   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.66            12   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.35           185   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.60            97   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.30            80   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.61            33   0050.56b4.5004  ARPA   Vlan367    <- VIP - Loadbalancer1 physical MAC
Internet  172.30.1.7             27   0050.56b4.5004  ARPA   Vlan367    <- Management - Loadbalancer1 physical MAC
Internet  172.30.1.8             21   0050.56b4.08c2  ARPA   Vlan367    <- Management - Loadbalancer2 physical MAC

osl-sys-coresw#sh mac address-table dynamic vlan 367
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
 367    0000.5e00.0101    DYNAMIC     Po13   seq_no:0   <- multicast HA mac (UCARP)
 367    0050.56b4.08c2    DYNAMIC     Po13   seq_no:0   <- Loadbalancer1 physical MAC
 367    0050.56b4.5004    DYNAMIC     Po13   seq_no:0   <- Loadbalancer2 physical MAC

И это история. Что я буду делать с этим?

pauska
источник
What on earth am I going to do with this?<- Текила. Многое из этого.
voretaq7
Вы путаете адрес многоадресной рассылки, используемый между «виртуальными маршрутизаторами» (чтобы указать, кто там, а кто хозяин), и адрес одноадресной рассылки, используемый для самого виртуального маршрутизатора (т. Е. MAC для виртуального IP-адреса).
Ricky Beam
@RickyBeam Не могли бы вы быть более конкретным? Причина, по которой в списке выше было (было) два mac-адреса, заключается в том, что у нас есть две пары балансировщиков нагрузки, каждая со своим собственным идентификатором (01 и 02 в конце) - если вы об этом думаете?
Пауска
1
Нет, вы все еще не понимаете одноадресный MAC-адрес, связанный с IP-адресом виртуального маршрутизатора, - именно эти хосты MAC используют для связи со своей службой с балансировкой нагрузки. Адрес многоадресной рассылки - это то, что подсистемы балансировки нагрузки знали, кто отвечает. (читайте раздел 5.1.1)
Рикки Бим
@RickyBeam Извините, это не имеет никакого смысла для меня. Одноадресный MAC-адрес для каждого балансировщика нагрузки (00:56, vmware) полностью отличается от 0000.5e00.0101, который я вижу, когда отключаю отслеживание IGMP.
Пауска

Ответы:

5

Я был в состоянии решить проблему. На Kemp (с парой HA) у вас есть возможность использовать «Виртуальный MAC-адрес». Если этот флажок не установлен, то MAC для балансировщика нагрузки VIP соответствует физическому интерфейсу активного модуля Kemp. Если этот флажок установлен, то MAC-адрес VIP является MAC-адресом VRRP. Как вы упомянули выше, RFC VRRP утверждает, что MAC является «00:00» {бла}, а последний октет является идентификатором маршрутизатора. По умолчанию идентификатор Kemp HA [router] равен 01. На моих Powerconnects с использованием прошивки 5.1.xx я не использую VRRP, но я провел несколько трассировок и определил, что Powerconnect пропустит кадр VRRP, если идентификатор маршрутизатора такой же, как у него самого. Они делают это ДАЖЕ, если VRRP не настроен, и в этом режиме они устанавливают значение по умолчанию 01. Поэтому изменение идентификатора маршрутизатора Kemp HA на что-то вроде 22 (0x16) приводит к тому, что все работает.

Эд Смит
источник
Ты мой герой. Спасибо, что наконец-то это выяснили! Чрезвычайно плохая формулировка части KEMP - они должны дать вам описание, которое фактически говорит вам, что это переводит в ID маршрутизатора VRRP.
pauska
2

Адрес многоадресной рассылки, который вы ищете: 224.0.0.18 [mac: 01005e.000012]. Это канал управления для всех узлов VRRP. [править] Если KEMP не изменил код, CARP (UCARP) отправляет трафик с использованием одноадресного MAC-адреса VRRP [00005e.0001xx] - вот где коммутатор, естественно, изучит его.

Если у вас нет опроса в сети (предположительно в каждом сегменте), то ваши коммутаторы в конечном итоге забудут, где находятся группы - хосты не отправляют периодические членства, если их не просят. [править: в зависимости от конфигурации, коммутатор может отбрасывать неизвестную многоадресную рассылку, а не затоплять.] Это может быть выделенный запрос (он отправляет пакет, он не заботится о каких-либо ответах) или чаще маршрутизатор многоадресной рассылки в вашей инфраструктуре , В этом простом случае запрос - это все, что требуется, поскольку сообщения VRRP в любом случае запрещены для пересечения сегментов.

Я не знаком с коммутаторами Dell, поэтому не знаю, какие команды cli вам нужны.

[ОБНОВИТЬ]

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
367    0000.5e00.0101    DYNAMIC     Po13   seq_no:0   <- multicast HA mac (UCARP)

Это не мультикаст Mac. Это одноадресный MAC- источник многоадресного трафика. Многоадресный Mac не будет отображаться в таблице адресов Mac. Это в таблице групповой рассылки. Cisco IOS имеет show mac-address-table multicast(ничего не показывает на моем маршрутизаторе) и show ip igmp groups(показывает 3 группы). Этот маршрутизатор установлен в режим pim sparse-mode; Коммутаторы nortel и cisco видят в этом запрос.

И метод KEMP глубоко испорчен использованием MAC-адреса хоста MAC для виртуальных адресов. В вашем случае 5004 принадлежит ник. Когда 5004 исчезнет, ​​у всех все еще будет «IP: 6 == MAC: 5004» в их таблицах; они будут продолжать пытаться общаться с мертвым хостом, пока эта запись не будет заменена. KEMP, очевидно, делает ставку на бесплатную игру, которую уважают все в сети. HSRP, VRRP, и OpenBSD предназначен карп все использовать виртуальный MAC именно по этой причине. (они, похоже, не смогли взломать UCARP, чтобы использовать nic mac вместо виртуального mac VRRP при передаче своего мультикастового трафика.)

Учитывая, что они взломали UCARP, вы уверены, что он даже использует многоадресную рассылку?

Рики Бим
источник
Я уже настроил маршрутизатор PIM на нашем ядре в той же VLAN - разве это не устранит необходимость в запросе?
Пауска
1
В теории да. Убедитесь, что коммутатор (-ы) видят запрос. ( show ip igmp snooping querier vlan 367для cisco)
Рикки Бим
Они не видят никаких запросов, но они видят грохота (sh ip igmp snooping mrouter). Должен ли я иметь Querier И Mrouter? Я думал, что последний заменяет первый ..
pauska
1
Я не знаю, знает ли Dell это лечит. Мои коммутаторы cisco, hp и adtran показывают Mrouter PIM как запросчик, но они испытывают недостаток (или не настроены для) поддержки PIM сами.
Рикки Бим