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.
Обратите внимание, что успешная виртуальная машина использует 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).