Теоретические основы и архитектура
Лабораторная: перенос IPv6 через IPv4 MPLS-ядро с помощью 6PE и 6VPE и проверка того же решения на стыке двух AS. Dual-stack нужен только на PE, P-маршрутизаторы IPv6 не знают: 1. 6PE (RFC 4798) переносит глобальный IPv6. PE по iBGP между IPv4-loopback-ами обмениваются семейством IPv6 labeled unicast (AFI 2 / SAFI 4); next hop - IPv4-mapped адрес ::FFFF:IPv4_PE, метка привязана к префиксу. P коммутируют по внешней транспортной метке. 2. 6VPE (RFC 4659) - то же для VRF: семейство VPNv6 (AFI 2 / SAFI 128), 192-битные префиксы (RD 64 бита + IPv6 128 бит), стек [транспорт | VPN-метка]. 3. Inter-AS: варианты A, B и C работают и для IPv6; в Option B между ASBR идёт VPNv6, в Option C - IPv4 BGP-LU для loopback-ов и VPNv6 между RR.
Задача: IPv6 через ядро, которое знает только IPv4
У оператора AS 65000 ядро (P1 10.255.0.11, RR 10.255.0.100) настроено под IPv4 MPLS: IGP и LDP на IPv4-адресах loopback. Нужно перевозить IPv6 абонентов, не включая IPv6 на P-роутерах. Решение - два механизма, в которых IPv6-пакет едет внутри LSP до IPv4-loopback удалённого PE; dual-stack нужен только на PE.
6PE (RFC 4798): глобальный IPv6 поверх IPv4 LSP
- Сигнализация: iBGP-сеанс между IPv4-адресами loopback (PE1 10.255.0.1 - RR 10.255.0.100) несёт семейство IPv6 с метками: AFI 2 / SAFI 4 (labeled unicast, RFC 8277). NLRI = IPv6-префикс + метка. На Cisco -
address-family ipv6+neighbor ... send-label, на Huawei -ipv6-family unicast+label-route-capability, на Junos -family inet6 labeled-unicast explicit-null. - Next-hop: 16-байтный IPv4-mapped адрес
::FFFF:10.255.0.2, то есть IPv4-адрес loopback удалённого PE, вложенный в IPv6. Его формирует сам BGP из адреса, с которого ведётся IPv4-сеанс (update-source), поэтому сеанс должен быть с Loopback0: адрес next-hop должен совпасть с /32, для которого есть LDP-метка. - Пересылка: PE1 ищет
2001:db8:2::/64, находит next-hop::FFFF:10.255.0.2, разрешает его в IPv4 LSP до 10.255.0.2/32 и ставит стек[транспортная LDP | IPv6-метка | IPv6]. P-роутеры коммутируют по верхней метке и не открывают IPv6-заголовок. - Explicit-null: если PE2 анонсировал бы для IPv6-префикса implicit-null, предпоследний узел снял бы последнюю метку и отдал PE2 пакет с EtherType MPLS, но без метки; поэтому используют реальную метку на префикс (Cisco) или IPv6 explicit-null (метка 2; Junos
explicit-null) - у PE2 остаётся метка, по которой он понимает, что внутри IPv6.
6VPE (RFC 4659): IPv6 в VRF
6VPE - это L3VPN для IPv6: те же VRF, RD/RT и метки VPN, но семейство VPNv6 (AFI 2 / SAFI 128). NLRI = RD (8 байт) + IPv6-префикс (16 байт); next-hop - 24 байта (RD 0 + ::FFFF:IPv4). Стек [транспортная LDP | VPN-метка | IPv6]. На Cisco VRF получает address-family ipv6 (vrf definition A-V6), на Huawei ipv6-family в ip vpn-instance, на Junos family inet6 на интерфейсе и family inet6-vpn unicast в BGP. Один VRF может нести и IPv4, и IPv6 с общим RD и разными RT на семейство.
| 6PE | 6VPE | |
|---|---|---|
| Назначение | глобальный IPv6 / Internet | изолированные клиентские IPv6 L3VPN |
| Семейство BGP | IPv6 labeled unicast (2/4) | VPNv6 (2/128) |
| RD / RT | нет | есть |
| Метка из BGP | да (IPv6-метка на префикс) | да (VPN-метка) |
| Что нужно на P | IPv4 MPLS | IPv4 MPLS |
| Next-hop | ::FFFF:IPv4 | ::FFFF:IPv4 с RD 0 |
Inter-AS для IPv6
Три варианта из предыдущих уроков работают и для IPv6:
- Option A: на ASBR отдельные IPv6-подинтерфейсы и eBGP IPv6 внутри VRF (
address-family ipv6 vrf); меток на стыке нет. - Option B: ASBR1 10.1.0.1 (AS 65000) и ASBR2 10.1.0.2 (AS 65001) обмениваются VPNv6 по тому же IPv4-eBGP-сеансу, что и VPNv4 (
address-family vpnv6,neighbor ... activate); ASBR ставит next-hop-self (IPv4-mapped адрес своего loopback), выделяет метку и делает swap. Для ASBR без VRF нужен тот же механизм удержания чужих RT (no bgp default route-target filter,undo policy vpn-target, Junoskeep all). - Option C: ASBR обмениваются только IPv4-loopback PE/RR с метками (BGP-LU IPv4), а VPNv6 идёт multihop-сеансом между RR с сохранением next-hop. Так как next-hop -
::FFFF:адрес удалённого PE, он разрешается в тот же межоператорский IPv4 LSP: для IPv6 не нужно отдельной транспортной сигнализации.
Ловушки, специфичные для IPv6
- ICMPv6 и traceroute: P-роутер без IPv6 не умеет отправлять ICMPv6 Time Exceeded или Packet Too Big; сообщение уезжает по LSP до egress PE и возвращается оттуда. На практике traceroute IPv6 через 6PE показывает звёздочки или большую задержку на P-хопах, а скрыть ядро можно отключением копирования TTL.
- Path MTU: из-за отсутствия ICMPv6 Packet Too Big от P-роутеров проблема MTU в ядре превращается в чёрную дыру. MTU ядра должен быть не меньше MTU на PE + 4 байта метки на уровень (8 байт в 6PE/6VPE), а минимальный IPv6 MTU 1280 должен проходить без фрагментации.
- Next-hop: если с RR сеанс ведётся не с loopback, next-hop становится адресом интерфейса; LDP-метки для него нет, 6PE ломается.
- RR должен поддерживать семейства: на RR нужны
ipv6 labeled-unicastиvpnv6сroute-reflector-client; без них PE видят друг друга по IPv4, но не получают IPv6-маршрутов. - PE-CE: IPv6 PE-CE - отдельные соседства (eBGP по IPv6 link-local или глобальным адресам, статика);
ipv6 enableна интерфейсе иipv6 unicast-routingобязательны.
Схема архитектуры и топология
+---------------------+ IPv4-Only MPLS Core Backbone +---------------------+
| 6PE / 6VPE | =====================================> | 6PE / 6VPE |
| Ingress: IPv6 Native| [Outer: IPv4 LDP | Inner: IPv6 Label] | Egress: IPv6 Native |
| Encapsulates to IPv4| (No IPv6 required on Core P routers!) | Decapsulates to IPv6|
+---------------------+ +---------------------+Схема прохождения трафика и стек меток
6PE / 6VPE Packet Processing:
1. Ingress PE receives native IPv6 packet (2001:db8:1::1 -> 2001:db8:2::1).
2. Look up BGP Next-Hop (IPv4-mapped IPv6 address ::FFFF:10.255.0.2).
3. Push Inner Label: Allocated by BGP for IPv6 prefix / VRF.
4. Push Outer Label: Standard IPv4 LDP / SR transport label toward 10.255.0.2.
5. Core P routers switch packet using standard IPv4 transport labels. Core knows NOTHING about IPv6!Таблица состояний и параметров
| Архитектура перехода на IPv6 | 6PE (IPv6 Provider Edge) | 6VPE (IPv6 VPN Provider Edge) |
|---|---|---|
| Целевая услуга | Глобальная IPv6-связность | Изолированные IPv6 L3VPN клиентов |
| Семейство BGP | AFI 2 (IPv6), SAFI 4 (labeled unicast) | AFI 2 (IPv6), SAFI 128 (VPNv6) |
| Требования к P-маршрутизаторам | Только IPv4 MPLS-транспорт (LDP или SR) | Только IPv4 MPLS-транспорт (LDP или SR) |
| Разделение клиентов | Нет (глобальная таблица) | 64-битный Route Distinguisher (RD) и RT |
| Inter-AS | Метки на next hop через IPv4 BGP-LU | Option A, B (VPNv6 между ASBR) или C (VPNv6 между RR) |
Архитектурная модель и принцип работы
В реальных сетях оператора MPLS объединяет оборудование различных производителей. Ниже представлены практические примеры конфигурации и вывода команд Data Plane / Control Plane для четырёх платформ: Cisco IOS-XE/XR, Huawei VRP, Juniper Junos и MikroTik RouterOS v7. Обратите внимание на различия в синтаксисе и механизмах распределения меток.
Практическая конфигурация (Cisco, Huawei, Juniper, MikroTik)
Cisco (IOS-XE/XR)
ipv6 unicast-routing
interface GigabitEthernet2
description CE-global-IPv6
ipv6 address 2001:DB8:1::1/64
router bgp 65000
neighbor 10.255.0.100 remote-as 65000
neighbor 10.255.0.100 update-source Loopback0
address-family ipv6
network 2001:DB8:1::/64
neighbor 10.255.0.100 activate
neighbor 10.255.0.100 send-label
exit-address-familyМинимальный 6PE на PE1: ipv6 unicast-routing включает IPv6-маршрутизацию, интерфейс к CE получает глобальный IPv6-адрес. Сеанс iBGP к RR остаётся IPv4 и идёт с Loopback0 - от этого адреса строится next-hop ::FFFF:10.255.0.1. В address-family ipv6 префикс объявляется командой network, а send-label включает IPv6 labeled unicast (AFI 2 / SAFI 4): с каждым IPv6-префиксом передаётся метка. P-маршрутизаторам IPv6 не нужен.
Huawei (VRP)
ipv6
interface GigabitEthernet0/0/2
ipv6 enable
ipv6 address 2001:DB8:1::1/64
bgp 65000
peer 10.255.0.100 as-number 65000
peer 10.255.0.100 connect-interface LoopBack0
ipv6-family unicast
network 2001:DB8:1:: 64
peer 10.255.0.100 enable
peer 10.255.0.100 label-route-capability