Теоретические основы и архитектура

NG-MVPN (RFC 6513 и RFC 6514) отделяет сигнализацию и туннели: BGP переносит автообнаружение PE и клиентские join, а доставка данных идёт по туннелю, выбранному атрибутом PMSI Tunnel. В семействе MCAST-VPN (AFI 1, SAFI 5) определены семь типов маршрутов: Intra-AS и Inter-AS I-PMSI A-D, S-PMSI A-D, Leaf A-D, Source Active A-D и два C-multicast маршрута (Shared Tree и Source Tree Join). Туннелем PMSI может быть mLDP P2MP или MP2MP LSP (RFC 6388), P2MP RSVP-TE (RFC 4875), PIM-дерево или ingress replication; inclusive туннель охватывает все PE, selective - только заинтересованные. Для доставки C-multicast маршрута только вышестоящему PE используется RT, построенный из VRF Route Import. Урок строит эти механизмы на опыте L3VPN и MPLS: PE-RR сессии MP-BGP, LDP, IGP до loopback корня. В результате ядро размножает пакеты по меткам, без PIM и GRE, а control plane масштабируется лучше, чем у Rosen.

Что изменил NG-MVPN

В RFC 6513 и RFC 6514 решена главная проблема Rosen: клиентская multicast-сигнализация и обнаружение PE перенесены с PIM поверх GRE в BGP, а ядро получило право использовать любую технологию туннелей. Архитектура вводит абстракцию PMSI (Provider Multicast Service Interface): сервис доставки от входного PE к набору выходных PE. Inclusive PMSI (I-PMSI) охватывает все PE этой mVPN, Selective PMSI (S-PMSI) - только PE, заинтересованные в конкретном потоке (C-S,C-G) или группе. Реализация PMSI - это туннель: P2MP или MP2MP LSP протокола mLDP (RFC 6388), P2MP RSVP-TE (RFC 4875), PIM-дерево, ingress replication (набор юникастных туннелей) или другое. BGP только сообщает, какой туннель использовать.

Маршруты BGP MVPN: семь типов

Для этого определено семейство MCAST-VPN: AFI 1, SAFI 5 для IPv4 (RFC 6514). NLRI начинается с типа маршрута:

ТипНазваниеНазначение
1Intra-AS I-PMSI A-DАвтообнаружение PE, анонс I-PMSI и атрибут PMSI Tunnel
2Inter-AS I-PMSI A-DТо же между AS (границы ASBR)
3S-PMSI A-DАнонс туннеля для конкретного (C-S,C-G) или wildcard
4Leaf A-DОтвет листа на запрос Leaf Information Required (RSVP-TE, ingress replication)
5Source Active A-DPE сообщает об активном источнике (C-S,C-G) для ASM и SPT-only
6C-multicast Shared Tree JoinКлиентский (*,G) join к PE за RP
7C-multicast Source Tree JoinКлиентский (S,G) join к PE за источником

Типы 1-5 несут сведения об автообнаружении и туннелях, типы 6 и 7 называют C-multicast маршрутами: именно они заменяют клиентские PIM Join/Prune.

Атрибут PMSI Tunnel

Маршруты типов 1 и 3 (а также 2 и 4 в части Inter-AS) содержат PMSI Tunnel Attribute: флаги (в том числе Leaf Information Required), тип туннеля, метку MPLS и идентификатор туннеля. Тип туннеля: 0 - нет информации, 1 - P2MP RSVP-TE, 2 - mLDP P2MP, 3 - PIM-SSM, 4 - PIM-SM, 5 - BIDIR-PIM, 6 - ingress replication, 7 - mLDP MP2MP. Для mLDP идентификатор - это P2MP FEC element: адрес корня и opaque value. Лист, получив такой атрибут, сам запускает построение LSP в сторону корня; поэтому BGP заменяет и обнаружение, и сопоставление группы с туннелем.

Route Targets и VRF Route Import

Маршруты A-D (типы 1, 3, 5) импортируются по RT, настроенным для mVPN (как правило, совпадающим с RT VRF). Для C-multicast маршрутов (типы 6 и 7) нужно, чтобы их получил только вышестоящий PE (upstream PE). Для этого PE добавляет в VPNv4-маршрут к источнику или RP расширенное community VRF Route Import: адрес исходящего PE и локальный номер VRF. Принимающий PE при отправке C-multicast маршрута берёт это community из лучшего юникастного маршрута и прикрепляет как RT: маршрут импортируется именно в VRF upstream PE, а не всеми PE. Поэтому для NG-MVPN в BGP обязательны расширенные communities, а RR должен передавать семейство mvpn без их потери.

mLDP: P2MP и MP2MP

mLDP (RFC 6388) расширяет LDP: появляются FEC-элементы P2MP (тип 0x06) и MP2MP (up 0x07, down 0x08), согласуются capabilities P2MP и MP2MP. LSP строится от листьев к корню: лист отправляет label mapping на соседа LDP, который по IGP является next hop к адресу корня; на каждом узле метка принимается от нижестоящих и объединяется. Узлы с несколькими ветвями реплицируют пакет на все нижестоящие метки. P2MP LSP передаёт трафик от корня к листьям; MP2MP позволяет передавать от любого участника, но при этом использует корневой узел как точку встречи. Путь дерева следует за IGP к корню, поэтому mLDP требует доступности loopback корня с LDP-метками на каждом шаге, а при изменении IGP дерево перестраивается.

P2MP RSVP-TE и ingress replication

P2MP RSVP-TE (RFC 4875) строит дерево сигнализацией от корня: один P2MP LSP состоит из sub-LSP к каждому листу, возможны явные пути, резервирование полосы и FRR. Для mVPN PE узнаёт листья из маршрутов Leaf A-D и самостоятельно создаёт sub-LSP. Цена: состояние и конфигурация на корне, сложнее масштабировать. Ingress replication использует юникастные LSP к каждому листу; ядру не нужны P2MP-возможности, но на PE создаётся столько копий пакета, сколько листьев, что ограничивает применение небольшим числом получателей или ядром, где P2MP недоступен.