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