openstack: vms, обменивающая многоадресную рассылку на eth1, перестает работать, когда у меня истекает время IGMP

У меня есть две идентичные доверенные виртуальные машины, настроенные с помощью dhcp для eth1. Я установил mgen и сконфигурировал сценарии mgen, чтобы они передавали два многоадресных сообщения обмена в секунду в течение 360 секунд. Одна виртуальная машина прекращает прием пакетов через 260 секунд (время ожидания IGMP Snooping Group). Вторая виртуальная машина продолжает получать сообщения в течение всего периода.

У меня возникает та же проблема, если я использую идентичные виртуальные машины CentOS 6.5.

Почему один работает? Почему другой таймаут так и не восстановится?

Настроить;

  • Через инструментальную панель havana я создал сеть с подсетью 10.16.1/24, отключенным шлюзом, включенным dhcp с диапазоном 10.16.1.100,10.16.1.120.

  • Запущено 2 надежных экземпляра, каждый с двумя NICS; eth0 для моего обычного общедоступного интерфейса и eth1 для подсети 10.16.1/24.

  • Зайдите на каждую виртуальную машину и создайте eth1.cfg, настроенный для dhcp

    auto eth1 iface eth1 inet dhcp

  • ifup eth1 на каждом вм

  • apt-get устанавливает mgen на каждый виртуальный компьютер

  • настроить одну виртуальную машину с помощью этого скрипта mgen

    0.0 JOIN 224.225.1.104 INTERFACE eth1 0.0 LISTEN UDP 5104 10.0 ON 1 UDP SRC 5002 DST 224.225.1.103/5103 PERIODIC [1 512] 370.0 LEAVE 224.225.1.104 370.0 OFF 1

  • Настройте другую виртуальную машину с помощью бесплатного скрипта

    0.0 JOIN 224.225.1.103 INTERFACE eth1 0.0 LISTEN UDP 5103 10.0 ON 1 UDP SRC 5002 DST 224.225.1.104/5104 PERIODIC [1 512] 370.0 LEAVE 224.225.1.103 350.0 OFF 1

  • установить маршрут на каждой виртуальной машине

    ip route add 224.225.1/24 dev eth1

  • запустить скрипт на каждой виртуальной машине одновременно

    mgen input mcast.mgn

При запуске mgen он печатает сообщения, полученные от другой виртуальной машины. Одна виртуальная машина получает до 260 секунд и прекращает прием;

18:50:35.414601 RECV proto>UDP flow 1 seq 251 src 10.16.1.103/5002 dst 224.225.1.103/5103 sent 18:50:35.304360 size 512 
18:52:04.672731 OFF flow 1 srcPort 5002 dst 224.225.1.104/5104

Другой завершает как ожидалось;

18:52:04.563455 RECV proto UDP flow 1 seq 341 src 10.16.1.104/5002 dst 224.225.1.104/5104 sent 18:52:04.672341 size 512 
18:52:05.305505 OFF flow 1 srcPort 5002 dst 224.225.1.103/5103

Что дает?

ОБНОВИТЬ

Использование wireshark на успешной виртуальной машине показывает следующий трафик IGMP.

захват Wireshark на успешной ВМ

Обратите внимание, что успешная виртуальная машина использует IGMPv2, а неисправная - IGMPv3. Я не понимаю этого, поскольку виртуальные машины создаются одинаково - один и тот же базовый образ - одни и те же команды настройки - и т. Д.

Также выполнен захват Wireshark от сбойной ВМ. Интересно, что он не захватывает ни один из пакетов IGMPv2. Это, вероятно, объясняет, почему он никогда не отвечает на запрос о членстве.

Согласно этому сообщению, IGMPv3 должен быть обратно совместим с v2. Тем не менее, я использовал эту информацию, чтобы заставить неисправную виртуальную машину также использовать IGMPv2, и выполнил еще один захват Wireshark. В результате неисправная виртуальная машина по-прежнему не получает запрос на членство в IGMP.

2 ответа

Решение

Необходимо добавить правило брандмауэра, чтобы разрешить IGMP в ВМ.

В Havana/Horizon Access & Security отредактируйте правила по умолчанию и добавьте новое правило;

  • Правило: другой протокол
  • Направление: Ingress
  • Протокол IP: 2
  • Удаленный: CIDR
  • CIDR: 0.0.0.0/0

Может быть ошибка копирования + вставки, но у вас может быть ошибка в добавленной вами инструкции добавления маршрута. Маршрут для всего диапазона многоадресной рассылки: 224.0.0.0/4

Заявление о маршруте, которое вы опубликовали, тоже может сработать, но первый октет вашего оператора неверен (у вас 225 вместо 224).

Другие вопросы по тегам