Многоадресная передача на маршрутизаторе, что это такое
Обновлено: 21.11.2024
Многоадресная рассылка не раз становилась модным словечком в истории. Многоадресная IP-рассылка означает, что один отправитель отправляет данные нескольким получателям, но отправляет только одну копию. Это очень удобно для потоковой передачи мультимедиа, поэтому давайте рассмотрим, как это работает.
Как и при широковещании, существуют специальные адреса, предназначенные для многоадресных данных. Разница в том, что некоторые из них можно маршрутизировать и использовать в Интернете. Пространство многоадресной рассылки, зарезервированное IANA, — 224.0.0.0/4. Мы больше не говорим «Класс D». Адреса, охваченные 224/4, — от 224.0.0.0 до 239.255.255.255.
Многоадресная рассылка более эффективна, чем широковещательная, поскольку широковещательные пакеты должны быть получены всеми участниками локального канала. Каждая ОС принимает прерывание и передает пакет для проверки, которая обычно включает в себя несколько копий данных. В многоадресной рассылке сетевая карта не прослушивает эти многоадресные пакеты, если только ей не было дано указание сделать это.
По умолчанию с сетевыми картами с поддержкой многоадресной рассылки сетевой адаптер будет прослушивать только 224.0.0.1 при загрузке. Это адрес, назначенный «всем системам в этой подсети». Да, это очень похоже на трансляцию. На самом деле, многие говорят, что широковещательная рассылка — это частный случай многоадресной рассылки.
Многоадресная рассылка избирательна в отношении того, кому она отправляется, просто в силу того, что сетевые карты могут игнорировать неинтересные вещи. Вот как работает локальная ссылка, а как насчет Интернета? Если кто-то хочет транслировать рождение ребенка знаменитости в Африке с помощью многоадресной рассылки, мы не хотим, чтобы каждый маршрутизатор в Интернете потреблял пропускную способность, необходимую для доставки этого на каждый компьютер. Помимо того, что сетевая карта может принимать решения локально, существуют механизмы многоадресной маршрутизации, которые служат для «обрезания» определенных подсетей. Если никто не хочет видеть его в вашей сети, нет причин позволять ему путешествовать по сети.
Люди, желающие увидеть такое зрелище, запустят специальную программу, которая, в свою очередь, предложит сетевой карте присоединиться к многоадресной группе. Сетевая карта использует протокол управления группами Интернета (IGMP), чтобы предупредить локальные многоадресные маршрутизаторы о том, что они хотели бы присоединиться к определенной группе. Однако это работает только в одну сторону. Если кто-то хочет отправлять и получать многоадресную рассылку, уровень IP должен быть более изощренным. Для отправки IP сопоставляет IP-адрес с адресом Ethernet и сообщает драйверу сетевой карты, чтобы он мог настроить карту с другим MAC-адресом.
IGMP сам по себе очень прост. Он очень похож на ICMP, поскольку использует уровень IP, только с другим номером протокола. Заголовок состоит всего из четырех вещей: версия; тип; контрольная сумма; и группа, т. е. многоадресный адрес, к которому нужно присоединиться. Когда этот пакет отправляется, многоадресный маршрутизатор теперь знает, что по крайней мере один хост заинтересован в получении пакетов для определенного многоадресного адреса. Теперь этот маршрутизатор должен каким-то образом выполнить многоадресную маршрутизацию с другими маршрутизаторами, чтобы получить данные.
Здесь становится интересно. Сегодня мы поговорим о нескольких механизмах многоадресной маршрутизации: DVMRP и PIM. Остановившись на мгновение, важно понять, что даже сегодня многоадресная рассылка широко не поддерживается. Когда-то существовала mbone или многоадресная магистраль, к которой люди подключались через туннели IPIP (IP, инкапсулированный в IP). Приложение Unix mrouted понимало DVMRP и IGMP, тогда как интернет-маршрутизаторы не понимали. Большинство людей, которые хотят использовать многоадресную рассылку в наши дни, по-прежнему спрашивают своих интернет-провайдеров, почему определенные протоколы не работают.
Протоколы многоадресной IP-маршрутизации используются для распространения данных (например, потокового аудио/видео) среди нескольких получателей. Используя многоадресную рассылку, источник может отправить одну копию данных на один многоадресный адрес, который затем распространяется на всю группу получателей.
Группа многоадресной рассылки определяет набор получателей, заинтересованных в определенном потоке данных, и представлена IP-адресом из четко определенного диапазона. Данные, отправляемые на этот IP-адрес, пересылаются всем членам группы многоадресной рассылки.
Маршрутизаторы между источником и получателями дублируют пакеты данных и пересылают несколько копий везде, где пути к получателям расходятся. Информация о членстве в группе используется для расчета лучших маршрутизаторов, на которых дублируются пакеты в потоке данных для оптимизации использования сети.
Хост-источник отправляет данные в группу многоадресной рассылки, просто устанавливая IP-адрес назначения дейтаграммы в качестве адреса группы многоадресной рассылки. Любой хост может стать источником и отправлять данные в мультикаст-группу. Источникам не нужно каким-либо образом регистрироваться, прежде чем они смогут начать отправку данных в группу, и они не должны сами быть членами группы.
Существует множество различных протоколов многоадресной рассылки и режимов работы, каждый из которых оптимизирован для определенного сценария. Многие из них все еще находятся на ранней стадии стандартизации. Однако все они работают одинаково, как показано ниже.
- Протокол обнаружения членства в группе многоадресной рассылки используется хостами-получателями для объявления своего членства в группе локальному маршрутизатору многоадресной рассылки, что позволяет им присоединяться к группам многоадресной рассылки и выходить из них. Основными протоколами обнаружения членства в группе многоадресной рассылки являются протокол управления группами Интернета (IGMP) для IPv4 и обнаружение прослушивателя многоадресной рассылки (MLD) для IPv6.
- Протокол маршрутизации многоадресной рассылки используется для связи между маршрутизаторами многоадресной рассылки и позволяет им вычислять дерево распределения многоадресной рассылки принимающих хостов. Многоадресная рассылка, независимая от протокола (PIM), — это наиболее важный протокол маршрутизации многоадресной рассылки.
Дерево многоадресной рассылки хостов-получателей содержит маршрут к каждому получателю, присоединившемуся к группе многоадресной рассылки, и оптимизировано таким образом, чтобы
Чтобы избежать петель маршрутизации многоадресной рассылки, каждый маршрутизатор многоадресной рассылки должен всегда знать об интерфейсе, который ведет к источнику содержимого этой группы многоадресной рассылки по кратчайшему пути. Это восходящий (входящий) интерфейс, и пакеты никогда не должны пересылаться обратно к источнику многоадресной рассылки. Все остальные интерфейсы являются потенциальными нисходящими (исходящими) интерфейсами, в зависимости от количества ветвей в дереве распространения.
Маршрутизаторы внимательно следят за состоянием входящих и исходящих интерфейсов. Этот процесс определяет состояние многоадресной пересылки. Маршрутизатор с состоянием многоадресной пересылки для конкретной группы многоадресной рассылки по существу «включен» для содержимого этой группы. Интерфейсы из списка исходящих интерфейсов (OIL) маршрутизатора отправляют копии пакетов группы, полученных из списка входящих интерфейсов для этой группы. Списки входящих и исходящих интерфейсов могут различаться для разных групп многоадресной рассылки.
Состояние многоадресной пересылки в маршрутизаторе обычно записывается в нотации (S,G) или (*,G). Они произносятся как «S, запятая G» и «звездная запятая G» соответственно. В (S,G) S относится к индивидуальному IP-адресу источника для многоадресного трафика, а G относится к конкретному IP-адресу группы многоадресной рассылки, для которой S является источником. Все многоадресные пакеты, отправленные из этого источника, имеют S в качестве адреса источника и G в качестве адреса получателя.
Звездочка (*) в нотации (*,G) – это подстановочный знак, указывающий на то, что источник, отправляющий в группу G, неизвестен. Маршрутизаторы пытаются отслеживать эти источники, когда это необходимо, чтобы работать более эффективно.
Интернет и сети TCP/IP
4.3.2 Многоадресный IP-адрес
Multicast IP — это средство, которое отправляет IP-пакет группе хостов, идентифицируемых групповым адресом (RFC 1112, 1584).
Многоадресная маршрутизация реализуется подмножеством IP-маршрутизаторов, которые называются многоадресные маршрутизаторы . Групповые адреса могут быть как постоянными, так и временными и принадлежат к классу D (т. е. иметь 1110 в качестве 4 бит старшего порядка). Каждый хост может стать членом группы или выйти из нее, отправляя сообщения с запросами на присоединение и выход с указанием группового адреса группы, к которой он хочет присоединиться или выйти. Многоадресный маршрутизатор узнает, какие группы активны, периодически (каждую минуту) опрашивая членов своего домена. Этот процесс опроса выполняется иерархически с использованием протокола, называемого протоколом управления группами Интернета (IGMP; RFC 1112).
В частности, многоадресный маршрутизатор отправляет запрос «к каким группам вы принадлежите?» всем хостам своего локального домена (используя групповой адрес, к которому принадлежат все хосты, поддерживающие многоадресную рассылку). При получении запроса хост запускает таймер обратного отсчета со случайным значением от 0 до некоторого T (рекомендуется T = 10 с). Когда таймер истекает, хост отправляет отчет с адресом группы в качестве адреса назначения для каждой группы, к которой он принадлежит. Многоадресный маршрутизатор прослушивает все эти отчеты, предназначенные для групповых адресов. Если хост слышит отчет от другого хоста, сигнализирующий о членстве этого хоста в общей группе, то хост не отправляет свой собственный ответ, соответствующий этой группе. Эта процедура ограничивает количество отчетов на запрос. Когда он хочет присоединиться к новой группе, хост отправляет отчет для этой группы, не дожидаясь запроса. Этот отчет должен быть отправлен несколько раз через случайные промежутки времени, чтобы убедиться, что он дошел до многоадресного маршрутизатора. Обратите внимание, что многоадресный маршрутизатор не поддерживает список членов группы. Требуется, чтобы узлы использовали свои индивидуальные IP-адреса, а не групповой адрес, в качестве исходного адреса отправляемых ими IP-пакетов. Например, алгоритм повторной сборки IP-дейтаграмм предполагает, что каждый хост использует другой исходный адрес.
Затем маршрутизаторы многоадресной рассылки создают дерево маршрутизаторов многоадресной рассылки от хоста до пунктов назначения, принадлежащих к группе многоадресной рассылки. IP-туннели (см. следующую страницу) соединяют многоадресные маршрутизаторы. Это дерево представляет собой дерево кратчайших путей от источника ко всем возможным адресатам, обрезанным так, чтобы охватить только адресаты группы многоадресной рассылки.Чтобы вычислить это дерево, маршрутизаторы запускают алгоритм Беллмана-Форда, описанный ранее, где пункт назначения фактически является источником многоадресной рассылки. В обрезанном дереве пакеты дублируются в последней развилке дерева. Обратите внимание, что обрезанное дерево не минимизирует сумму расстояний, пройденных реплицированными пакетами. Результаты вычислений дерева кэшируются в маршрутизаторах для последующих пакетов.
Когда узлы присоединяются к группе или покидают ее, маршрутизаторы автоматически обновляют дерево. Если члены группы принадлежат к одной и той же локальной сети, маршрутизатор многоадресной рассылки локальной сети преобразует групповой IP-адрес в адрес многоадресной локальной сети. Если члены группы принадлежат к общей нешироковещательной сети множественного доступа (например, Frame Relay), то многоадресный маршрутизатор этой сети должен передавать копии другим членам группы.
Магистральная IP-многоадресная сеть, или MBone, представляет собой сеть, наложенную на Интернет, которая используется для интерактивных многоадресных видео- и аудиотрансляций. MBone состоит из многоадресных маршрутизаторов, соединенных виртуальными ссылками, образованными туннелями. Предположим, что многоадресный пакет поступает на MBone-маршрутизатор A. A знает, что его следует перенаправить на MBone-маршрутизатор B, который не подключен напрямую к A. Пакет должен быть направлен через соседний узел C, который не является многоадресным маршрутизатором. Если A отправляет многоадресный пакет непосредственно C, C не будет знать, как его переслать, потому что адрес назначения пакета — это не IP-адрес B, а групповой адрес многоадресной рассылки, который C не может понять. Таким образом, A инкапсулирует многоадресный пакет в другую IP-датаграмму с адресом назначения B, а затем пересылает его C. В конце концов пакет достигает B, где он декапсулируется и извлекается исходный многоадресный пакет. Этот процесс инкапсуляции/декапсуляции создает виртуальный канал между A и B, называемый туннелем, точнее, туннелем уровня 3, поскольку инкапсуляция осуществляется в пакет уровня 3 или IP.
Многоадресная маршрутизация
Дип Медхи, Картик Рамасами, в Network Routing (Second Edition), 2018 г.
Основная цель маршрутизатора – маршрутизация пакетов. Другими словами: когда он получает IP-пакет, он должен посмотреть адрес назначения, проверить таблицу маршрутизации и выяснить следующий переход, куда переслать IP-пакет. Мы используем протоколы маршрутизации для изучения различных сетей и заполнения таблицы маршрутизации.
Вот иллюстрация, иллюстрирующая это:
Выше мы видим R1, который хочет доставить IP-пакет в пункт назначения 2.2.2.2. Он проверяет свою таблицу маршрутизации, находит запись OSPF с адресом 192.168.12.2 в качестве следующего перехода (R2). Теперь R1 может пересылать IP-пакет к месту назначения.
Все, что я объяснил выше, относится к одноадресному трафику. Как насчет многоадресного трафика? Давайте посмотрим на другой пример:
Вверху мы видим R1, который получает многоадресный пакет от какого-то видеосервера, адрес назначения 239.1.1.1. Однако таблица маршрутизации является таблицей одноадресной маршрутизации. Там нет информации о каких-либо многоадресных адресах. Наш маршрутизатор не будет знать, куда перенаправлять многоадресный трафик…
Протоколы многоадресной маршрутизации
Для маршрутизации многоадресного трафика нам необходимо использовать протокол многоадресной маршрутизации. Существует два типа протоколов многоадресной маршрутизации:
Мы обсудим оба типа, начнем с плотного режима.
Плотный режим
Протоколы многоадресной маршрутизации в плотном режиме используются для сетей, в которых большинство подсетей вашей сети должны получать многоадресный трафик. Когда маршрутизатор получает многоадресный трафик, он направляет его на все свои интерфейсы, кроме интерфейса, на котором он получил многоадресный трафик. Вот пример:
Выше показан видеосервер, отправляющий многоадресный трафик на маршрутизатор R1. Когда R1 получает эти пакеты, он рассылает их по всем своим интерфейсам. R2 и R3 сделают то же самое, поэтому два наших хоста (H2 и H3) будут получать многоадресный трафик. В приведенном выше примере оба наших хоста заинтересованы в многоадресном трафике, но что, если есть хосты, которые не хотят его получать?
Многоадресный маршрутизатор может сообщить своему соседу, что он больше не хочет получать многоадресный трафик. Это происходит, когда:
- У маршрутизатора нет нисходящих соседей, которым требуется многоадресный трафик.
- На интерфейсе прямого подключения маршрутизатора нет хостов, которым требуется многоадресный трафик.
Вот пример:
Выше мы видим R1, который получает многоадресный трафик от нашего видеосервера. Он пересылает этот многоадресный трафик на маршрутизаторы R2 и R3, но эти два маршрутизатора не заинтересованы в многоадресном трафике. Они отправят сообщение сокращения, чтобы сообщить R1, что он больше не должен пересылать многоадресный трафик.
Существует несколько протоколов маршрутизации в плотном режиме:
- DVMRP (протокол многоадресной маршрутизации с дистанционным вектором)
- MOSPF (многоадресная передача OSPF)
- Насыщенный режим PIM
PIM (Protocol Independent Multicast) — самый популярный протокол маршрутизации многоадресной рассылки, который мы обсудим в других уроках многоадресной рассылки.
RPF (переадресация по обратному пути)
Многоадресная маршрутизация уязвима для петель маршрутизации. Один простой механизм предотвращения образования петель заключается в том, что маршрутизаторы никогда не будут пересылать многоадресные пакеты на тот интерфейс, на который они получили пакет. Однако существует одна дополнительная проверка, называемая RPF (переадресация по обратному пути). Взгляните на пример ниже:
- R1 рассылает пакет маршрутизатору R3.
- R3 рассылает пакет маршрутизатору R2.
- R2 пересылает его обратно на R1.
Теперь у нас есть цикл многоадресной маршрутизации. Мы можем предотвратить это, внедрив проверку RPF:
Когда маршрутизатор получает многоадресный пакет на интерфейс, он просматривает исходный IP-адрес и выполняет две проверки:
- Есть ли у нас запись, соответствующая исходному адресу в таблице маршрутизации одноадресной рассылки?
- Если да, то какой интерфейс мы используем для доступа к этому исходному адресу?
Когда многоадресный пакет получен на интерфейсе, который соответствует информации из таблицы маршрутизации одноадресной рассылки, он проходит проверку RPF, и мы принимаем пакет. Если проверка RPF не проходит, мы отбрасываем пакет.
Позвольте мне представить это на примере:
Выше мы видим маршрутизатор R1, который пересылает многоадресный трафик маршрутизаторам R2 и R3. R2 также передает его R3.
R3 теперь будет выполнять проверку RPF для обоих многоадресных пакетов. Он видит исходный адрес 192.168.1.100 и проверяет таблицу одноадресной маршрутизации. Он находит запись OSPF для 192.168.1.0/24, которая указывает на маршрутизатор R1.
Пакет, который он получает от R1, пройдет проверку RPF, поскольку мы получаем его на интерфейсе Fa0/0, а тот, который он получает от R2, — нет. Многоадресный пакет от маршрутизатора R2 будет отброшен.
R3 затем направит многоадресный пакет на R2, который также выполнит проверку RPF. Он отбросит этот пакет, так как R2 использует свой интерфейс к R1 для достижения 192.168.1.100.
Еще один способ взглянуть на это так: проверка RPF гарантирует, что мы принимаем многоадресные пакеты только по кратчайшему пути. Многоадресные пакеты, которые проходят более длинные пути, отбрасываются. Для R3 кратчайший путь к 192.168.1.100 лежит через R1.
Разреженный режим
Сейчас вы можете подумать, что плотный режим очень неэффективен из-за переполнения многоадресным трафиком. Если в вашей сети всего несколько приемников, тогда да, вы будете тратить много пропускной способности и ресурсов на маршрутизаторах.
Альтернативой является разреженный режим, который намного эффективнее. Протоколы многоадресной маршрутизации в разреженном режиме пересылают многоадресный трафик только тогда, когда его запрашивает другой маршрутизатор. Это полная противоположность плотному режиму:
Читайте также: