Мультикаст EcoRouter Documentation / Мультикаст
Без мультикастового вещания для успешной передачи данных различным пользователям трафик в сети должен дублироваться на каждом узловом участке. Такое дублирование приводит к неэффективному использованию ресурсов сети. Multicast-приложения являются гораздо более эффективными, так как передают только один экземпляр трафика. Его дублирование обычно происходит только в L3-устройствах, расположенных ближе к потребителям. Для решения задач доставки/приема мультикастовых данных EcoRouterOS поддерживает работу следующих протоколов:
- IGMPv1/v2/v3,
- PIM-SM,
- PIM-SSM.
Инструкции по настройке протоколов доступны в документации. В данном документе содержатся краткие описания нескольких специфичных технологий, которые поддерживаются маршрутизатором для более тонкой настройки мультикастового домена при отсутствии нужной функциональности в оборудовании других производителей:
- IGMP SSM Mapping для возможности доставки/приема мультикастовых потоков с определенного сервера при IGMPv2;
- IGMP proxy для создания IGMP домена между L2/L3 устройствами и работы маршрутизатора в качестве клиента мультикастовой группы;
- PIM-DM поддержка более раннего протокола мультикастовой маршрутизации;
- PIM-SDM смешанный режим работы.
Описание по настройке этих расширений можно найти в соответствующих главах.
IGMP
IGMP (Internet Group Management Protocol) — протокол управления групповой передачей данных в IP-сетях. IGMP используется клиентским компьютером и локальным маршрутизатором, осуществляющим групповую передачу. В EcoRouter поддерживаются 1-3 версии протокола.
Список команд, использующихся для настройки протокола IGMP в EcoRouter, представлен в таблице ниже.
Команда | Режим | Описание |
---|---|---|
ip igmp access-group <номер списка доступа> | (config-if)# | Фильтрация доступа к определенным мультикаст-группам с помощью списков доступа |
ip igmp immediate-leave group-list <номер списка фильтров> | (config-if)# | Команда сокращения времени отписки последнего клиента от группы/групп, заданных в списке фильтрации |
ip igmp join-group <ip-адрес> | (config-if)# | Команда добавления интерфейса маршрутизатора в мультикаст-группу |
ip igmp last-member-query-count <2-7> | (config-if)# | Настройка количества IGMP query сообщений, отправляемых в ответ на сообщение типа leave. По умолчанию 2 |
ip igmp last-member-query-interval <1000-25500> | (config-if)# | Настройка интервала отправки IGMP query сообщений. По умолчанию 1000 мс |
ip igmp limit <1-2097152> | (config)# | Настройка ограничений количества мультикаст-маршрутов |
ip igmp mroute-proxy <имя интерфейса> | (config-if)# | Включение проксирования для мультикаст маршрутов на другой интерфейс |
ip igmp proxy unsolicited-report-interval <1000-25500> | (config-if)# | Задание значения задержки между двумя IGMP join сообщениями. По умолчанию 1000 мс |
ip igmp proxy-service | (config-if)# | Включение режима IGMP proxy |
ip igmp querier-timeout <60-300> | (config-if)# | Задание времени до перевыборов querier маршрутизатора в сегменте в секундах |
ip igmp query-interval <1-18000> | (config-if)# | Задание частоты отправки General Query. По умолчанию 125 с |
ip igmp query-max-response-time <1-240> | (config-if)# | Задание максимального значения времени ответа на IGMP query в секундах. По умолчанию 10 с |
ip igmp robustness-variable <2-7> | (config-if)# | Задание числа для тонкой настройки IGMP сообщений. По умолчанию 2 |
ip igmp startup-query-count <2-10> | (config-if)# | Задание количества query сообщений. По умолчанию 2 |
ip igmp startup-query-interval <1-18000> | (config-if)# | Настройка интервала отправки IGMP query сообщений. По умолчанию 31 с |
ip igmp static-group <ip-адрес> | (config-if)# | Назначение интерфейса устройства на прослушивания определенной мультикаст-группы |
ip igmp version <1-3> | (config-if)# | Выставление версии IGMP |
ip igmp ssm-map {enable | static <номер списка доступа>} | (config)# | Включение SSM-маппирования. Задание статического SSM с помощью списка доступа |
ip igmp tos-check | (config)# | Проверка значения поля TOS. Включена по умолчанию |
ip igmp vrf <имя виртуального маршрутизатора> {limit <1-2097152> | ssm-map enable | ssm-map static <номер списка доступа>} | (config)# | Команды настройки для выполнения в виртуальном маршрутизаторе |
ip igmp ra-option | (config-if)# | Включает проверку опции во входящих IGMP-пакетах |
Настройка IGMP в сегменте с настроенным PIM сводится к включению IGMP на интерфейсе маршрутизатора, ближайшего к пользователю. Включение осуществляется с помощью команды на настроенном нисходящем интерфейсе ip igmp version <1-3>.
Шаг 1. Включение глобальной поддержки мультикаста.
ecorouter(config)#ip multicast-routing
Шаг 2. Настройка интерфейсов устройства.
ecorouter(config)#interface e10
ecorouter(config-if)#ip address 10.10.10.1/24
ecorouter(config)#port te0
ecorouter(config-port)#service-instance 10
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e10
Шаг 3. Включение IGMP на нисходящем интерфейсе.
ecorouter(config-if)#ip igmp version 2
При включении PIM на интерфейсе IGMPv3 включается автоматически.
Шаг 4. Настройка таймеров протокола: частоты рассылки запросов устройством и времени ожидания ответов.
ecorouter(config-if)#ip igmp query-interval 100
ecorouter(config-if)#
ip igmp query-max-response-time 20
Шаг 5. Для корректной работы со всем спектром ОС необходимо отключать проверку значения поля ToS в сообщениях IGMP report.
ecorouter(config)#no ip igmp tos-check
IGMP SSM Mapping
Для поддержки SSM необходима функциональность IGMPv3, однако не все оборудование в сети поддерживает все версии этого протокола. EcoRouterOS позволяет выполнить маршрутизацию мультикастового трафика от специфичного источника до клиентов, которые поддерживают только вторую версию IGMP протокола. Ниже приведен пример настройки:
Шаг 1. Настройка портов, интерфейсов и сервисных интерфейсов.
ecorouter(config)#interface e1
ecorouter(config-if)#ip address 10.12.0.2/16
ecorouter(config)#interface e2
ecorouter(config-if)#ip address 10.23.0.2/16
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance ge1/e1
ecorouter(config-service-instance)#connect ip interface e1
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance ge2/e2
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e2
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance ge2/e2
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e2
Шаг 2. Задание policy-filter-list для определенной группы.
ecorouter(config)#policy-filter-list 2 permit 235.7.7.7
Шаг 3. Включение SSM-mapping для определенной группы.
ecorouter(config)#ip igmp ssm-map enable
ecorouter(config)#ip igmp ssm-map static 2 1.1.1.1
ecorouter(config)#ip pim ssm default
Шаг 4. Настройка PIM-SM.
ecorouter(config)#ip pim rp-address 10.12.0.2
ecorouter(config)#interface e1
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config-if)#interface e2
ecorouter(config-if)#ip pim sparse-mode
На интерфейсе fa0/0 другого маршрутизатора настроен IP адрес 10.12.0.1/16. Теперь если клиент запросит группу 235.7.7.7 одновременно с отправкой мультикастового трафика с сервера и с маршрутизатора на эту группу, то на маршрутизаторе можно наблюдать следующую картину:
Ecorouter#show ip mroute IP Multicast Routing Table Flags: I - Immediate Stat, T - Timed Stat, F - Forwarder installed B - BIDIR Timers: Uptime/Stat Expiry Interface State: Interface (TTL) (1.1.1.1, 235.7.7.7), uptime 00:04:24, stat expires 00:03:29 Owner PIM, Flags: TF Incoming interface: e1 Outgoing interface list: e2 (1) (10.12.0.1, 235.7.7.7), uptime 00:04:24, stat expires 00:00:09 Owner PIM, Flags: TF
Incoming interface: e1
Outgoing interface list:
Как видно, интерфейсов в списке outgoing для сервера 10.12.0.1 нет. При включении на интерфейсе протокола PIM командой ip pim sparse-mode, IGMPv3 включается по умолчанию. Можно было просто включить IGMPv3 отдельно от PIM командой ip igmp version 3. Полезная команда для просмотра информации по статическому маппингу show ip igmp ssm-map <ip-адрес>:
ecorouter#show ip igmp ssm-map 235.7.7.7 Group address: 235.7.7.7 Database : Static Source list : 1.1.1.1
Proxy-IGMP
Использование этой технологии позволит избежать зависимости от используемого протокола мультикастовой маршрутизации и уменьшить размер служебного трафика в сети. Маршрутизатор выступает в роли клиента и передает информацию в виде сообщений IGMP Report в сторону PIM-домена. PIM-соседи в таком случае не нужны. Устройство хранит информацию о запрошенных группах, полученную через нисходящие интерфейсы, в базе данных. Сам прокси-сервис работает на восходящих интерфейсах, передавая запросы от клиентов. Ниже приведен пример топологии и конфигурирования IGMP Proxy сервиса в EcoRouterOS.
Настройка
Шаг 1. Задание имени устройства и включение мультикастовой маршрутизации.
(config)#hostname ECO-2
(config)#ip multicast-routing
Шаг 2. Настройка портов, интерфейсов и сервисных интерфейсов.
(config)#interface e1
(config-if)#ip address 10.23.0.2/16
(config-if)#ip igmp version 2
(config)#interface e2
(config-if)#ip address 10.24.0.2/16
(config-if)#ip igmp version 2
(config)#port ge1
(config-port)#service-instance ge1/e1
(config-service-instance)#encapsulation untagged
(config-service-instance)#connect ip interface e1
(config)#port ge2
(config-port)#service-instance ge2/e2
(config-service-instance)#encapsulation untagged
(config-service-instance)#connect ip interface e2
Шаг 3. Включение IGMP Proxy.
(config)#interface e2
(config-if)#ip igmp proxy-service
(config)#interface e1
(config-if)#ip igmp mrouter-proxy e2
Прокси-сервис работает с любой версией IGMP. Для проверки статуса сервиса и просмотра запрошенных групп используются команды show ip igmp proxy и show ip igmp proxy groups. Если сервис запущен и работает, то статус группы должен быть «Active».
PIM-SM/SSM
Тонкая настройка протоколов мультикастовой маршрутизации довольно сложна и не рассматривается в данном документе. Для базовой настройки необходимо выполнить следующие действия.
Шаг 1. Включение мультикастовой маршрутизации командой конфигурационного режима ip multicast-routing.
Шаг 2. Включение протокола мультикастовой маршрутизации на нужных интерфейсах контекстной командой ip pim sparse-mode. При введении этой команды на интерфейсе автоматически включается протокол IGMPv3.
Шаг 3. Статическое задание точки встречи деревьев от источника и клиентов (Rendezvous Point, далее – RP) командой ip pim rp-address <IP> [<POLICY-FILTER-LIST>] [override]. Здесь с помощью номера <POLICY-FILTER-LIST> можно привязать RP к определенной мультикастовой группе, а параметр override повышает приоритет статической записи о RP по сравнению с полученной динамическим путем. Динамический путь описан ниже.
Шаг 4. Добавление возможности переключения на более короткий маршрут до источника при помощи команды ip pim spt-treshold [group-list <POLICY-FILTER-LIST>], где номер policy-filter-list указывает конкретные мультикастные группы.
Этих шагов достаточно для успешной доставки мультикаст-трафика от сервера до клиентов, однако при выходе из строя RP все клиенты перестанут получать запрашиваемые данные.
Поэтому предпочтение отдается протоколу bootstrap, который динамически информирует участников мультикастового домена о RP.
Таким образом, на 4 шаге для информирования PIM-соседей о RP необходимо сконфигурировать кандидата на эту роль командой конфигурационного режима ip pim rp-candidate <название интерфейса> [priority <0-255>] [group-list <POLICY-FILTER-LIST>] [interval <1-16383>]. Параметры команды описаны в таблице ниже.
Параметр | Описание |
---|---|
<название интерфейса> | Интерфейс, назначаемый кандидатом. Интерфейс должен быть предварительно создан в системе |
priority | Приоритет, при задании нескольких кандидатов. Чем меньше значение данного параметра, тем выше приоритет кандидата. Допустимые значения от 0 до 255. Значение по умолчанию 192 |
group-list <POLICY-FILTER-LIST> | Группы, которым рассылается реклама о кандидате |
interval | Интервал рассылки сообщений в секундах. Допустимые значения от 1 до 16383 |
Далее необходимо сконфигурировать рекламных агентов, которые будут рассылать информацию о RP, так называемых BSR, командой конфигурационного режима ip pim bsr-candidate <название интерфейса> [<0-32>][<0-255>]. Параметры команды описаны в таблице ниже.
Параметр | Описание |
---|---|
<название интерфейса> | Интерфейс, назначаемый рекламным агентом (BSR). Интерфейс должен быть предварительно создан в системе |
<0-32> | Длина хэш-маски для расчета хэш-значения RP. Допустимые значения от 0 до 32. Значение по умолчанию 10 |
<0-255> | Приоритет BSR, при наличии нескольких агентов в сети. Чем больше значение данного параметра, тем выше приоритет кандидата. Допустимые значения от 0 до 255. Значение по умолчанию 64 |
Ниже приведен пример схемы и конфигурирования маршрутизаторов. При мультикаст-вещании со стороны сервера Multicast-1 маршрут протекания трафика будет ECO-3 – ECO-2 – ECO-4 – PC1, а после того, как ближайший к клиенту маршрутизатор получит информацию о сервере, произойдет SPT switchover – маршрут поменяется на ECO-3 – ECO-4 – PC1.
Шаг 1. Задание имени устройства и включение мультикастовой маршрутизации.
ecorouter(config)#hostname ECO-2
ecorouter(config)#ip multicast-routingШаг 2. Настройка портов, интерфейсов и сервисных интерфейсов.
ecorouter(config)#interface e3
ecorouter(config-if)#ip address 10.23.0.3/16
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#interface e4
ecorouter(config-if)#ip address 10.24.0.2/16
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#port ge3
ecorouter(config-port)#service-instance ge3/e3
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e3
ecorouter(config)#port ge4
ecorouter(config-port)#service-instance ge4/e4
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e4Шаг 3. Включение маршрутизации.
ecorouter(config)#router isis
ecorouter(config-router)#net 49.0001.0000.0000.0003.00
ecorouter(config-router)#exit
ecorouter(config)#interface e3
ecorouter(config-int)#ip router isis
ecorouter(config-int)#interface e4
ecorouter(config-int)#ip router isis
ecorouter(config-int)#exitШаг 4. Задание информации о RP и включение возможности SPT-switchover.
ecorouter(config)#ip pim bsr-candidate e3
ecorouter(config)#ip pim rp-candidate e3 priority 20
ecorouter(config)#ip pim spt-tresholdКонфигурация оставшихся маршрутизаторов будет аналогичной.
ecorouter(config)#hostname ECO-3
ecorouter(config)#ip multicast-routing
ecorouter(config)#interface e1
ecorouter(config-if)#ip address 10.13.0.3/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#interface e2
ecorouter(config-if)#ip address 10.23.0.3/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#interface e4
ecorouter(config-if)#ip address 10.34.0.3/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance ge1/e1
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e1
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance ge2/e2
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e2
ecorouter(config)#port ge4
ecorouter(config-port)#service-instance ge4/e4
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e4
ecorouter(config)#router isis
ecorouter(config-router)#net 49.0001.0000.0000.0003.00
ecorouter(config)#hostname ECO-4
ecorouter(config)#ip multicast-routing
ecorouter(config)#ip pim spt-treshold
ecorouter(config)#ip pim bsr-candidate e3
ecorouter(config)#ip pim rp-candidate e3 priority 40
ecorouter(config)#interface e1
ecorouter(config-if)#ip address 10.14.0.4/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config-if)#ip igmp version 2
ecorouter(config)#interface e2
ecorouter(config-if)#ip address 10.24.0.4/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#interface e3
ecorouter(config-if)#ip address 10.34.0.4/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance ge2/e2
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e2
ecorouter(config)#port ge4
ecorouter(config-port)#service-instance ge4/e4
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e4
ecorouter(config)#router isis
ecorouter(config-router)#net 49.0001.0000.0000.0003.00
Подробнее о IGMP можно прочитать в соответствующем разделе.
Для включения Source-Specific-Multicast требуется ввести дополнительную команду ip pim ssm {default | range} <номер policy-filter-list>, где default означает применить ко всем группам, а range и номер policy-filter-list позволяют выделить конкретные группы, для которых будет использоваться SSM. Подробнее о настройке SSM-mapping и policy-filter-list читайте в соответствующих разделах.
Дополнительные команды конфигурирования
Команда | Режим | Описание |
---|---|---|
ip pim accept-register <policy-filter-list> | (conf)# | Указывает RP принимать Register сообщения от определенных источников |
ip pim cisco-register-checksum | (conf)# | Опция для расчета checksum в Register сообщениях. Для совместимости с более старыми версиями Cisco IOS |
ip pim ignore-rp-set-priority | (conf)# | Используется для игнорирования приоритета RP, чтобы полагаться только на хеш-алгоритм |
ip pim jp-timer <1-65535> | (conf)# | Тайминг для отправки сообщений Join и Prune |
ip pim register-rate-limit <1-65535> | (conf)# | Управление количеством отправляемых Register сообщений |
ip pim register-rp-reachability | (conf)# | Включение проверки RP доступности на маршрутизаторе (по умолчанию в конфигурации) |
ip pim register-source <адрес> | (conf)# | Задание адреса в Register сообщениях |
ip pim register-suppression <1-65535> | (conf)# | Изменение RP-keepalive-timer, если команда ip pim rp-register-kat не задана |
ip pim rp-register-kat <1-65535> | (conf)# | Изменение таймеров для мониторинга Register сообщений |
ip pim dr-priority | (conf-int)# | Приоритет маршрутизатора для выбора DR |
ip pim bsr-border | (conf-int)# | Пометить интерфейс как пограничный, для отмены передачи/приема bootstrap |
ip pim exclude-genid | (conf-int)# | Исключение опции generated ID |
ip pim hello-holdtime <1-65535> | (conf-int)# | Установка таймера holdtime для сообщений hello |
ip pim hello-interval <1-18724> | (conf-int)# | Установка таймера interval для сообщений hello |
ip pim neighbor-filter <policy-filter-list> | (conf-int)# | Установка соседств с конкретными маршрутизаторами |
ip pim propagation-delay <1000-5000> | (conf-int)# | Установка задержки распространения сообщений |
ip pim unicast-bsm | (conf-int)# | Включение unicast bootstrap сообщений. Для совместимости с более старыми версиями Cisco IOS |
ip pim sparse-mode passive | (conf-int)# | Включение пассивного режима |
ip multicast ttl-threshold <1-255> | (conf-int)# | Включение TTL-scope мультикастового домена |
ip mroute <адрес подсети > <rpf сосед> | (conf)# | Статическая запись о подсети, в которой находится источник мультикаста |
Команды просмотра
Команда | Описание |
---|---|
show ip mroute | Таблица мультикастовой маршрутизации |
show ip mvif | Информация о созданных виртуальных интерфейсах, которые поддерживают мультикаст |
show ip rpf <адрес источника> | Отображение RPF информации о источнике |
show ip pim bsr-router | Информация о BSR маршрутизаторах в домене |
show ip pim interface | Информация об интерфейсах, на которых включена мультикастовая маршрутизация |
show ip pim local-members | Локальная информация о запрошенных группах |
show ip pim mroute [detail] | Детальная информация по мультикастовой маршрутизации |
show ip pim neighbor | Информация о соседских отношениях |
show ip pim nexthop | Информация о RP, источниках многоадресной рассылки, интерфейсах через которые получены данные |
show ip pim rp mapping | Информация о RP в домене |
show ip pim rp-hash <адрес группы> | Информация о RP для конкретной группы |
show ip mroute count | Вывод статистической информации |
Команды сброса данных
clear ip mroute statistics <*/адрес группы>
clear ip mroute <*/адрес группы>
clear ip pim sparse-mode bsr rp-set *
PIM-DM and mixed Sparse-Dense mode
EcoRouterOS поддерживает более ранний протокол мультикастовой маршрутизации PIM-DM. Механизм его работы подразумевает излишнее заполнение домена мультикастовым трафиком, поэтому сетевым инженерам необходимо тщательно продумать пути протекания пакетов по сети. Возможно, потребуется отделить домены юникастовой маршрутизации от мультикастовой. В данном случае следует воспользоваться статической записью о маршруте до источника. Для включения функционала на маршрутизаторе достаточно одной команды в режиме конфигурирования интерфейсов - ip pim dense-mod.
В EcoRouterOS существует расширение, которое позволяет задать смешанный Sparse-Dense режим на интерфейсе. В этом режиме трафик для группы, идущий по Dense-режиму, будет обработан по правилам PIM-DM, a трафик для группы, идущий по Sparse-режиму, будет обработан по правилам PIM-SM. Для того чтобы включить смешанный режим работы, необходимо в режиме конфигурирования интерфейсов ввести команду ip pim sparse-dense-mode.
Для определенных групп можно настроить обработку трафика исключительно PIM-DM логикой. Для этого используется команда ip pim dense-group <адрес группы>.