Принципы организации Multicast-рассылки
Современный человек на каждом шагу сталкивается с большим потоком визуальной и звуковой информации: домашнее телевидение, рекламные цифровые билборды, мультимедийные системы в поездах и самолетах, информирование в аэропортах и вокзалах и многое другое. Все эти системы требуют быстрой и эффективной передачи данных от одного источника до множества получателей. Такой же принцип работы используется при осуществлении видеоконференций, а в промышленном секторе – в системах видеонаблюдения и звукового аварийного оповещения.
На схеме изображена система, в которой источник информации отправляет три одинаковых экземпляра данных для трех получателей на их индивидуальные IP-адреса. Именно так выглядит одноадресная (unicast) рассылка.
Даже человеку, далекому от сетевых технологий, понятно, что в такой сети источнику приходится формировать несколько идентичных пакетов. А если получателей не три, а сотни или тысячи? В подобных системах необходимо применить совершенно другой подход – многоадресную (multicast) рассылку.
Multicast обеспечивает доставку трафика группе клиентов на IP-адрес группы multicast-рассылки. Схема передачи данных выглядит следующим образом:
Независимо от того, сколько клиентов заинтересованы в получении данных, сервер-источник будет отправлять только один пакет, тем самым избегая излишнего дублирования. Плюсы такого подхода очевидны:
рациональное использование пропускной способности;
экономия вычислительных возможностей сервера;
снижение нагрузки на сеть.
Более подробно рассмотрим механизм работы многоадресной рассылки.
Инструменты технологии multicast
Static Multicast – отслеживание и добавление статических многоадресных MAC-адресов вручную для фильтрации многоадресного трафика. Некоторые устройства не поддерживают динамическую регистрацию в multicast-группе, но в то же время способны получать многоадресный трафик. Чтобы это было возможно, такие устройства нужно зарегистрировать вручную: создать запись с групповым адресом и номерами портов в таблице многоадресной рассылки маршрутизатора.
IGMP (Internet Group Management Protocol) – протокол управления многоадресной передачей данных. Используется для динамической регистрации узлов-получателей в многоадресной группе. С его помощью хосты-клиенты оповещают маршрутизатор о своем желании получать многоадресный трафик (т.е. подписаться на рассылку). На сегодняшний день существует три версии данного протокола, все они совместимы между собой.
В рамках IGMP существует 3 типа сообщений:
Membership Query – запрос о принадлежности к группе
Membership Report – ответ о принадлежности к группе
Leave Group Message – сообщение о выходе из группы
Механизм работы IGMP
При запуске приложения на клиенте и указания группы рассылки в сеть будет отправлено сообщение IGMP Membership Report (IGMP Join): таким образом хост изъявляет о своем желании получать трафик для данной заданной группы. Такие пакеты могут жить только в пределах своей подсети.
Роутер получает IGMP-Report и заносит в свою таблицу multicast-маршрутизации информацию о том, что на данном интерфейсе присутствуют клиенты, заинтересованные в получении трафика.
Клиенты начинают получать желаемый трафик. При этом маршрутизатор должен периодически проверять находятся ли на данном интерфейсе заинтересованные получатели или их уже нет. Чтобы проверить это, маршрутизатор отправляет на нисходящие интерфейсы запросы IGMP Query. Узел группы, получивший данный запрос, должен отправить IGMP Report, чтобы подтвердить свое желание получения трафика. При получении маршрутизатором хотя бы одного ответа на IGMP Query он продолжает вещать в тот интерфейс, откуда пришел ответ, потому что это означает, что там все еще есть заинтересованные клиенты. Но если на несколько отправленных IGMP Query ответа так и не поступило, маршрутизатор удаляет данные об этом интерфейсе из своей таблицы и прекращает вещание.
Если получатель более не заинтересован в получении трафика, он может отправить сообщение IGMP Leave о выходе из группы на адрес группы, не дожидаясь запроса IGMP Query.
Групповой IP-адрес. Сервер-источник отправляется пакеты не на индивидуальные IP-адреса узлов, а на IP-адрес группы (выделенные специально для этих целей адреса – в диапазоне от 224.0.0.0 до 239.255.255.255).
Групповой MAC-адрес. Для того чтобы передавать кадры по локальной сети, каждому групповому IP-адресу должен соответствовать групповой MAC-адрес. Он всегда начинается с префикса 01:00:5Е, а оставшаяся часть формируется из 23 младших бит IP-адреса группы по определенному алгоритму.
IGMP Snooping — функция коммутаторов 2-го уровня, которая позволяем им изучать членов многоадресных групп, подключенных к их портам. Это осуществляется за счет прослушивания IGMP-запросов и ответов, которые передаются между получателями и маршрутизаторами в многоадресной сети.
Функция IGMP Snooping используется для того, чтобы избежать перенаправления трафика на все, даже не заинтересованные в его получении, узлы, т.е. для предотвращения флуда.
Маршрутизация Multicast-трафика
Зачастую стоит задача транслирования многоадресного потока данных через несколько подсетей, разделенных маршрутизаторами. Каждый интерфейс маршрутизатора является широковещательным доменом, поэтому многоадресные пакеты маршрутизироваться между ними не будут. Именно для таких систем используют специализированные протоколы многоадресной маршрутизации. Например, протокол PIM.
PIM (Protocol Independent Multicast) – набор протоколов многоадресной маршрутизации, которые строят путь передвижения многоадресного трафика от сервера до клиентов через маршрутизаторы. Имеет два основных режима – Dense и Sparse, отличающихся принципом работы.
При использовании Dense mode маршрутизатор предполагает, что заинтересованные получатели есть везде, поэтому начинает рассылать multicast-трафик на все интерфейсы, кроме того за которым числится источник (лавинная рассылка). Трафик будет отправляться во все порты до тех пор, пока маршрутизатор не получит специальное сообщение о прекращении вещания в этот интерфейс. Вещание продолжится до тех пор, пока не будет получено очередное сообщение.
Sparse mode использует совершенно противоположный подход. Заинтересованные в получении информации клиенты должны отправить специальное сообщение для того, чтобы начать получать трафик. Именно этот режим чаще всего используется на практике, т.к. позволяет избежать флуда и обеспечивает более эффективное взаимодействие между узлами многоадресной сети.
Организация multicast-рассылки на маршрутизаторе Moxa
Типовая схема
Рассмотрим следующую типовую схему подключения сервера и клиентов, которые находятся в разных сегментах сети:
Таблица 1
Номер порта EDR-810-2GSFP |
Номер VLAN EDR-810-2GSFP | IP-адрес интерфейса EDR-810-2GSFP |
IP-адрес подключенных устройств |
5 |
2 |
10.1.1.254/24 |
10.1.1.101/24 (приемник 1) |
6 |
2 |
10.1.1.254/24 |
10.1.1.102/24 (приемник 2) |
7 |
1 |
192.168.127.254/24 |
192.168.127.100/24 (источник) |
Для того чтобы данные с сервера-источника были переданы клиентам, заинтересованным в получении трафика, должны быть выполнены следующие действия:
Настройка сервера-источника на вещание в определенную группу
Настройка клиентов на прием потока для определенной группы
Настройка маршрутизатора: включение IGMP и multicast-маршрутизации на интерфейсах
Настройка маршрутизатора
Базовая настройка EDR-810-2GSFP для реализации типовой схемы будет выглядеть следующим образом: