Перейти к основному содержимому

12.3 Настройка PIM-SM

12.3.1 Обзор

Введение в функциональность

Protocol Independent Multicasting-Sparse Mode (PIM-SM) — протокол маршрутизации для мультикастинга, разработанный для эффективной работы в глобальных сетях (WAN) с разреженными группами. Он помогает узлам сети, географически распределенным, экономить пропускную способность и уменьшать трафик, одновременно доставляя единственный поток информации в несколько мест. PIM-SM использует модель мультикастинга на основе инициативы получателя, поддерживает как общие, так и деревья кратчайшего пути, а также использует механизмы мягкого состояния для адаптации к изменяющимся сетевым условиям. Протокол полагается на механизм сбора топологии для заполнения таблицы маршрутизации мультикастов маршрутами.

Описание принципа

Модуль PIM-SM основан на следующем стандарте IETF: RFC 4601.

Терминология:

  • Rendezvous Point (RP): Точка встречи (RP) — это маршрутизатор, настроенный как корень дерева распространения не на основе источника для группы мультикастов. Сообщения Join от получателей группы отправляются в направлении RP. Данные от отправителей также направляются в RP, чтобы получатели могли обнаружить отправителей и получить трафик, предназначенный для группы.
  • Multicast Routing Information Base (MRIB): MRIB — это таблица топологии мультикастов, полученная из таблицы маршрутизации юникастов. В PIM-SM MRIB используется для отправки сообщений Join/Prune, а также предоставляет метрики маршрутизации для обработки сообщений Assert.
  • Reverse Path Forwarding (RPF): RPF — это концепция оптимизированного распространения, при которой маршрутизатор принимает пакет от источника SourceA через интерфейс IF1 только в том случае, если IF1 — это интерфейс, который маршрутизатор использует для достижения SourceA. Корректность интерфейса определяется с помощью таблицы маршрутизации юникастов. Пакет, поступивший через интерфейс IF1, пересылается, так как таблица маршрутизации указывает этот интерфейс как кратчайший путь к сети. Таблица маршрутизации юникастов маршрутизатора определяет кратчайший путь для мультикастовых пакетов. Поскольку маршрутизатор принимает пакет только от одного соседа, он распространяет его лишь один раз, что означает (при условии использования соединений точка-точка), что каждый пакет передается по каждой линии один раз в каждом направлении.
  • Tree Information Base (TIB): TIB — это набор данных на маршрутизаторе PIM, содержащий состояние всех деревьев распространения мультикастов на этом маршрутизаторе. TIB формируется за счет получения сообщений Join/Prune, Assert и информации IGMP от локальных хостов.
  • Upstream: Направление к корню дерева (источник или RP).
  • Downstream: Направление от корня дерева.
  • Source-Based Trees: В деревьях, основанных на источнике, пути пересылки основываются на кратчайшем пути до источника. Если метрикой маршрутизации юникастов является количество переходов, ветви деревьев мультикастинга на основе источника (Source-Based Trees) имеют минимальное количество переходов. Если метрикой является задержка, ветви имеют минимальную задержку. Для каждого источника мультикаста существует соответствующее дерево мультикаста, которое напрямую соединяет источник со всеми получателями. Весь трафик для членов ассоциированной группы проходит через дерево, созданное для их источника. Деревья на основе источника имеют две записи с списком исходящих интерфейсов: адрес источника и мультикастовую группу.
  • Shared Trees: Общие деревья или деревья RP полагаются на центральный маршрутизатор (RP), который получает весь трафик от источников и пересылает его получателям. Не все хосты могут быть получателями. Для каждой мультикастовой группы существует одно дерево, независимо от количества источников. Только маршрутизаторы, находящиеся на дереве, знают о группе, и информация отправляется только заинтересованным получателям. С использованием RP у получателей есть точка для присоединения, даже если источник отсутствует. Общее дерево является однонаправленным, и информация передается только от RP к получателям.

Если хост, не являющийся RP, должен отправить данные по дереву, эти данные сначала должны быть туннелированы к RP, а затем переданы мультикастом участникам. Это означает, что даже если получатель также является источником, он может использовать дерево только для получения пакетов от RP, но не для отправки пакетов к RP (если только источник не находится между RP и получателями).

  • Bootstrap Router (BSR): Когда новый источник мультикастинга начинает отправлять пакеты данных или новый получатель начинает отправлять сообщение Join в сторону RP для этой мультикастовой группы, необходимо определить маршрутизатор следующего перехода в направлении RP. BSR предоставляет информацию о сопоставлении группы с RP всем маршрутизаторам PIM в домене, что позволяет им определить корректный адрес RP..
  • Sending out Hello Messages: PIM-маршрутизаторы периодически отправляют сообщения Hello для обнаружения соседних PIM-маршрутизаторов. Сообщения Hello передаются мультикастом по адресу 224.0.0.13 (группа ALL-PIM-ROUTERS). Маршрутизаторы не отправляют подтверждения о получении сообщения Hello. Значение времени удержания (hold time) определяет срок действия информации. В PIM-SM получатель downstream должен присоединиться к группе, прежде чем трафик начнет передаваться на интерфейсе.
  • Electing a Designated Router: В сети с несколькими маршрутизаторами один из них выбирается как DR для определенного периода. DR (Designated Router) отвечает за отправку сообщений Join/Prune к RP для локальных участников.
  • Determining the RP: PIM-SM использует маршрутизатор Bootstrap (BSR) для формирования сообщений Bootstrap и распространения информации о RP. Сообщения передаются мультикастом группе на каждом линке. Если BSR не настроен, маршрутизаторы заливают домен объявлениями. Маршрутизатор с наивысшим приоритетом (если приоритеты одинаковы, применяется более высокий IP-адрес) выбирается как RP. Маршрутизаторы получают и хранят сообщения Bootstrap, отправленные BSR. Когда DR получает информацию о членстве через IGMP или пакет данных от непосредственно подключенного хоста для группы, для которой нет записи, DR сопоставляет адрес группы с одним из кандидатов RP, которые могут обслуживать эту группу. Затем DR отправляет сообщение Join/Prune в сторону этого RP. В небольшом домене RP также может быть настроен статически.
  • Joining the Shared Tree: Для присоединения к мультикастовой группе хост отправляет сообщение IGMP своему вышестоящему маршрутизатору, после чего маршрутизатор может принимать мультикастовый трафик для этой группы. Маршрутизатор отправляет сообщение Join своему вышестоящему PIM-соседу в направлении RP. Когда маршрутизатор получает сообщение Join от нижестоящего маршрутизатора, он проверяет, существует ли состояние для этой группы в таблице маршрутизации мультикастов. Если состояние уже существует, сообщение Join достигло общего дерева, и интерфейс, с которого было получено сообщение, добавляется в список исходящих интерфейсов. Если состояние отсутствует, создается новая запись, интерфейс добавляется в список исходящих интерфейсов, и сообщение Join отправляется дальше в сторону RP.
  • Registering with the RP: DR может начать получать трафик от источника без существования состояния Source или Group для этого источника. В этом случае DR не имеет информации о том, как доставить мультикастовый трафик к RP через дерево. Когда DR источника получает первый мультикастовый пакет, он инкапсулирует его в сообщение Register и отправляет его в RP для этой группы в виде юникаста. RP декапсулирует каждое сообщение Register и пересылает извлеченный пакет данных нижестоящим участникам через RPT.

Как только путь от источника к RP устанавливается, DR начинает отправлять трафик к RP в виде стандартных мультикастовых IP-пакетов, а также в инкапсулированном виде через сообщения Register. Временно RP получает пакеты дважды. Когда RP обнаруживает обычные мультикастовые пакеты, он отправляет сообщение Register-Stop DR источника, указывая на необходимость прекратить отправку сообщений Register.

  • Sending Register-Stop Messages: Когда RP начинает получать трафик от источника как в виде сообщений Register, так и в виде неинкапсулированных IP-пакетов, он отправляет сообщение Register-Stop DR. Это уведомляет DR о том, что трафик теперь принимается как стандартные мультикастовые IP-пакеты через SPT. После получения этого сообщения DR прекращает инкапсулировать трафик в сообщения Register.
  • Pruning the Interface: Маршрутизаторы, подключенные к получателям, отправляют сообщения Prune к RP, чтобы разорвать связь источника с RP. Когда RP получает сообщение Prune, он прекращает пересылать трафик от источника, указанного в этом сообщении. Если все участники мультикастовой группы удалены, состояние IGMP на DR удаляется, а интерфейс исключается из списков Source и Group для данной группы.
  • Forwarding Multicast Packets: Маршрутизаторы PIM-SM пересылают мультикастовый трафик на все интерфейсы, ведущие к получателям, которые явно присоединились к мультикастовой группе. Сообщения отправляются на мультикастовый адрес в локальной подсети и имеют значение Time to Live (TTL), равное 1. Маршрутизатор выполняет проверку RPF и пересылает пакет. Трафик, поступивший на корректный интерфейс, передается на все исходящие интерфейсы, ведущие к нижестоящим получателям, если нижестоящий маршрутизатор отправил сообщение Join этому маршрутизатору или является участником данной группы.

12.3.2 Конфигурация

Рисунок 12-1: PIM-SM

Рисунок 12-1: PIM-SM

PIM-SM — это протокол с мягким состоянием. Основное требование заключается в включении PIM-SM на необходимых интерфейсах и корректной настройке информации о RP статическим или динамическим методом. Все состояния мультикастовых групп поддерживаются динамически в результате сообщений IGMP Report/Leave и PIM Join/Prune.

В данном разделе представлены примеры конфигурации PIM-SM для двух соответствующих сценариев. Следующая схема отображает топологию сети, используемую в этих примерах:

Конфигурация General PIM Sparse-mode (static RP)

В этом примере, используя вышеуказанную топологию, Switch1 выступает в роли Rendezvous Point (RP), и все маршрутизаторы статически настроены с информацией о RP. При настройке RP необходимо убедиться, что:

  • Каждый маршрутизатор включает команду ip pim rp-address 11.1.1.1, даже если к нему не подключены источники или участники группы.
  • Для области действия группы в домене PIM указан только один адрес RP.
  • Все интерфейсы, на которых работает PIM-SM, должны быть включены в режиме sparse-mode.

Шаг 1: Вход в режим конфигурации

Switch# configure terminal

Шаг 2: Настройка интерфейсов и включение PIM-SM

Конфигурация на Switch1:

Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 11.1.1.1/24
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit

Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 12.1.1.1/24
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit

Конфигурация на Switch2:

Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 22.1.1.2/24
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit

Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 12.1.1.2/24
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit

Шаг 3: Добавление статических маршрутов

На Switch1:

Switch(config)# ip route 22.1.1.0/24 12.1.1.2

На Switch2:

Switch(config)# ip route 11.1.1.0/24 12.1.1.1

Шаг 4: Настройка статического RP-адреса

Switch(config)# ip pim rp-address 11.1.1.1

Шаг 5: Выход из режима конфигурации

Switch(config)# end

Шаг 6: Проверка

Используйте следующую команду для отображения сопоставления RP в режиме PIM sparse-mode. Адрес 11.1.1.1 является RP для всех Multicast групп в диапазоне 224.0.0.0/4, настроенного статически:

Switch# show ip pim sparse-mode rp mapping
PIM group-to-RP mappings
Group(s): 224.0.0.0/4, Static
RP: 11.1.1.1
Uptime: 00:08:21

Проверка интерфейсов:

Switch# show ip pim sparse-mode interface
Address Interface VIFindex Ver/ Nbr DR DR HoldTime
Mode Count Prior
11.1.1.1 eth-0-1 2 v2/S 0 1 11.1.1.1 105
12.1.1.1 eth-0-9 0 v2/S 1 1 12.1.1.2 105

Просмотр маршрутов Multicast:

Switch1:

Switch# show ip pim sparse-mode mroute detail
IP Multicast Routing Table
(*,*,RP) Entries: 0
(*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
FCR Entries: 0
(*, 224.1.1.1) Uptime: 00:01:32
RP: 11.1.1.1, RPF nbr: None, RPF idx: None
Upstream:
State: JOINED, SPT Switch: Enabled, JT: off
Macro state: Join Desired,
Downstream:
eth-0-9:
State: JOINED, ET Expiry: 179 secs, PPT: off
Assert State: NO INFO, AT: off
Winner: 0.0.0.0, Metric: 4294967295, Pref: 4294967295, RPT bit: on
Macro state: Could Assert, Assert Track
Join Olist:
eth-0-9

Switch2:

Switch# show ip pim sparse-mode mroute detail
IP Multicast Routing Table
(*,*,RP) Entries: 0
(*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
FCR Entries: 0
(*, 224.1.1.1) Uptime: 00:00:43
RP: 11.1.1.1, RPF nbr: 12.1.1.1, RPF idx: eth-0-9
Upstream:
State: JOINED, SPT Switch: Enabled, JT Expiry: 18 secs
Macro state: Join Desired,
Downstream:
eth-0-1:
State: NO INFO, ET: off, PPT: off
Assert State: NO INFO, AT: off
Winner: 0.0.0.0, Metric: 4294967295, Pref: 4294967295, RPT bit: on
Macro state: Could Assert, Assert Track
Local Olist:
eth-0-1

Настройка General PIM Sparse-mode (dynamic RP)

Статическая настройка RP подходит для небольших и стабильных PIM-доменов, однако она неэффективна для больших и нестабильных сетей. В такой сети, если RP выходит из строя, администратору сети, возможно, придется изменять статические настройки на всех маршрутизаторах PIM. Еще одной причиной выбора динамической настройки является увеличенный трафик маршрутизации, приводящий к изменению RP.

Для динамического поддержания информации о RP используется механизм BSR.

Для настройки RP динамически в вышеуказанном сценарии Switch1 на интерфейсе eth-0-1 и Switch2 на интерфейсе eth-0-9 настроены как кандидаты RP с использованием команды ip pim rp-candidate. Switch2 на интерфейсе eth-0-9 также настроен как кандидат BSR. Поскольку другие маршрутизаторы не настроены как кандидаты BSR, Switch2 становится маршрутизатором BSR и отвечает за отправку информации о сопоставлении группы с RP всем остальным маршрутизаторам в этом PIM-домене.

Шаг 1: Вход в режим конфигурации

Switch# configure terminal

Шаг 2: Настройка интерфейсов, атрибутов и включение PIM-SM

Настройка на Switch1:

Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 11.1.1.1/24
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit

Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 12.1.1.1/24
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit

Настройка на Switch2:

Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 22.1.1.2/24
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit

Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 12.1.1.2/24
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit

Шаг 3: Добавление статических маршрутов

На Switch1:

Switch(config)# ip route 22.1.1.0/24 12.1.1.2

На Switch2:

Switch(config)# ip route 11.1.1.0/24 12.1.1.1

Шаг 4: Настройка кандидатов RP и BSR

На Switch1:

Switch(config)# ip pim rp-candidate eth-0-1

На Switch2:

Switch(config)# ip pim rp-candidate eth-0-9
Switch(config)# ip pim bsr-candidate eth-0-9
Примечание

Маршрутизатор с наивысшим приоритетом выбирается как RP. Если у двух или более маршрутизаторов одинаковый приоритет, используется хэш-функция механизма BSR для выбора RP, чтобы все маршрутизаторы в PIM-домене использовали одного и того же RP для одной и той же группы. Для изменения приоритета кандидата RP используется команда ip pim rp-candidate IFNAME PRIORITY.

Шаг 5: Выход из режима конфигурации

Switch(config)# end

Шаг 6: Проверка

Используйте команду show ip pim sparse-mode rp mapping, чтобы отобразить детали сопоставления группы с RP. Вывод отображает информацию о кандидатах RP. В данном случае два кандидата RP настроены для диапазона групп 224.0.0.0/4. Кандидат RP с адресом 11.1.1.1 имеет приоритет по умолчанию 192, а кандидат RP с адресом 12.1.1.2 настроен с приоритетом 2. Поскольку у кандидата RP 12.1.1.2 более высокий приоритет, он выбирается как RP для мультикастовой группы 224.0.0.0/24.

На Switch2:

switch# show ip pim sparse-mode rp mapping
PIM group-to-RP mappings
This system is the bootstrap router (v2)
Group(s): 224.0.0.0/4
RP: 12.1.1.2
Info source: 12.1.1.2, via bootstrap, priority 2
Uptime: 01:55:20, expires: 00:02:17
RP: 11.1.1.1
Info source: 11.1.1.1, via bootstrap, priority 192
Uptime: 01:55:23, expires: 00:02:13

Для отображения информации о маршрутизаторе RP для конкретной группы используйте следующую команду. Вывод показывает, что адрес 12.1.1.2 выбран в качестве RP для мультикастовой группы 224.1.1.1.

На Switch2:

switch# show ip pim sparse-mode rp-hash 224.1.1.1
RP: 12.1.1.2
Info source: 12.1.1.2, via bootstrap

После того как информация о RP достигает всех маршрутизаторов PIM в домене, различные машины состояния поддерживают все маршруты на основе сообщений Join/Prune от членов группы. Для получения информации о деталях интерфейса и таблице маршрутизации Multicast смотрите раздел "Настройка RP статически".

Настройка Boostrap Router (BSR)

Рисунок 12-2: BSR

Рисунок 12-2: BSR

Каждая PIM-multicast группа должна быть связана с IP-адресом точки Rendezvous Point (RP). Этот адрес используется в качестве корня дерева распределения для определённой группы, ветви которого распространяются ко всем узлам в домене, желающим получать трафик, отправленный группе. Для того чтобы все отправители могли достичь всех получателей, все маршрутизаторы в домене используют одинаковое сопоставление адресов группы с адресами RP. Чтобы определить RP для мультикастовой группы, маршрутизатор PIM поддерживает коллекцию сопоставлений групп с RP, называемую RP-Set.

Механизм Bootstrap Router (BSR) для класса протоколов маршрутизации multicast в домене PIM использует концепцию Rendezvous Point как средство, позволяющее получателям находить источники, отправляющие данные в определённую multicast группу. Механизм BSR — это один из способов, с помощью которых маршрутизатор multicast может узнать набор сопоставлений групп с RP, необходимых для работы.

Некоторые маршрутизаторы PIM в домене настроены как кандидаты на роль RP (Candidate-RPs или C-RPs). Подмножество этих C-RPs впоследствии используется в качестве реальных RP для домена. RP, настроенный с более низким значением в поле приоритета, имеет более высокий приоритет.

Некоторые маршрутизаторы PIM в домене настроены как кандидаты на роль BSR (Candidate-BSRs или C-BSRs). Один из этих C-BSRs избирается в качестве BSR для домена, и все маршрутизаторы PIM в домене узнают результат этого выбора через сообщения BSM (Bootstrap Messages). C-BSR с наибольшим значением в поле приоритета становится Elected-BSR.

C-RPs затем сообщают о своей кандидатуре выбранному BSR, который выбирает подмножество C-RPs и распределяет соответствующие сопоставления группы с RP среди всех маршрутизаторов в домене через сообщения Bootstrap.

Шаг 1: Вход в режим конфигурации

Switch# configure terminal

Шаг 2: Настройка кандидата bsr и кандидата rp

Switch1:

Switch(config)# ip pim bsr-candidate eth-0-1

Switch2:

Switch(config)# ip pim bsr-candidate eth-0-1 10 25
Switch(config)# ip pim rp-candidate eth-0-1 priority 0

Шаг 3: Настройка приоритета кандидата rp

Switch(config)# ip pim rp-candidate eth-0-1 priority 0

Шаг 4: Настройка приоритета dr и включение приёма и отправки unicast bsm-пакетов

Switch(config)# interface eth-0-1
Switch(config-if)# ip pim dr-priority 10
Switch(config-if)# ip pim unicast-bsm

Шаг 5: Выход из режима конфигурации

Switch(config-if)# end

Шаг 6: Проверка

Проверка состояния C-BSR на rtr1:

Switch# show ip pim sparse-mode bsr-router
PIMv2 Bootstrap information
This system is the Bootstrap Router (BSR)
BSR address: 20.0.1.21
Uptime: 00:37:12, BSR Priority: 64, Hash mask length: 10
Next bootstrap message in 00:00:04
Role: Candidate BSR
State: Elected BSR

Проверка состояния C-BSR на rtr2:

Switch# show ip pim sparse-mode bsr-router
PIMv2 Bootstrap information
BSR address: 20.0.1.21
Uptime: 00:02:39, BSR Priority: 64, Hash mask length: 10
Expires: 00:00:03
Role: Candidate BSR
State: Pending BSR
Switch# show ip pim sparse-mode bsr-router
PIMv2 Bootstrap information
BSR address: 20.0.1.21
Uptime: 00:40:20, BSR Priority: 64, Hash mask length: 10
Expires: 00:02:07
Role: Candidate BSR
State: Candidate BSR

Проверка информации о наборе RP на E-BSR:

Switch# sh ip pim sparse-mode rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)
Group(s): 224.0.0.0/4
RP: 20.0.1.11
Info source: 20.0.1.11, via bootstrap, priority 0
Uptime: 00:00:30, expires: 00:02:04

Проверка информации о наборе RP на C-BSR:

Switch# show ip pim sparse-mode rp mapping
PIM Group-to-RP Mappings
Group(s): 224.0.0.0/4
RP: 20.0.1.11
Info source: 20.0.1.21, via bootstrap, priority 0
Uptime: 00:00:12, expires: 00:02:18

Настройка PIM-SSM feature

Функция Source Specific Multicast (SSM) является расширением IP-мультикастинга, при котором трафик датаграмм передается получателям только от тех источников, к которым они явно присоединились. Для мультикастовых групп, настроенных для SSM, создаются только деревья распространения мультикастов на основе источников (без общих деревьев).

PIM-SSM — протокол маршрутизации, поддерживающий реализацию SSM, основанный на режиме разреженности PIM (PIM-SM). PIM-SSM может работать совместно с PIM-SM на маршрутизаторе Multicast. По умолчанию PIM-SSM отключен.

Шаг 1: Вход в режим конфигурации

Switch# configure terminal

Шаг 2: Включение SSM

Включение диапазона по умолчанию:

Switch(config)# ip pim ssm default

Включение PIM-SSM на коммутаторе и установка диапазона групп SSM, указанного в списке доступа:

Switch(config)# ip pim ssm range ipacl

Эти две команды являются альтернативными. Окончательная конфигурация заменяет предыдущую и вступает в силу.

Шаг 3: Выход из режима конфигурации

Switch(config)# end

Шаг 4: Проверка

Switch# show running-config | include pim
ip pim ssm range ipacl