Теоретические основы и архитектура
Лабораторная работа: интеграция BNG в ядро MPLS с изоляцией абонентов в VRF и внедрение CGNAT (Carrier-Grade NAT: адреса по RFC 6598, требования к CGN по RFC 6888). Из-за дефицита публичных IPv4 оператор выдаёт абонентам адреса из Shared Address Space 100.64.0.0/10 (RFC 6598; это не RFC 1918, и его нельзя отдавать клиенту как LAN-подсеть). Сессии PPPoE терминируются на BNG в VRF SUBS, служебная сеть оператора достигается через L3VPN. Интернет-трафик из VRF направляется в NAT444 (NAT на CPE плюс CGN): тысячи абонентов транслируются в небольшой пул публичных адресов, а число портов на абонента ограничено (Port Block Allocation, PBA: блок 512-2048 портов, в лаборатории 1024). Это защищает пул от исчерпания одним клиентом, а PBA логирует только выдачу и освобождение блока вместо каждой сессии (IPFIX/syslog): на этом строится сопоставление «публичный IP:порт и время - абонент», которого требует законодательство многих стран. Пул публичных адресов суммируется и объявляется upstream в глобальной таблице (eBGP), иначе ответы из Интернета не вернутся.
Что собирает лабораторная
Лаборатория замыкает модуль: PE1 (10.255.0.1) работает как BNG, терминирует PPPoE-абонентов в VRF SUBS (RD 65000:300, RT 65000:300), авторизует их по RADIUS (10.255.0.50), делает CGNAT (NAT444) и выпускает трафик в Интернет через глобальную таблицу (uplink 172.16.40.0/30, upstream 172.16.40.2, AS 64496). Служебная сеть оператора 10.90.0.0/24 (OSS: DNS, портал, DHCP) стоит за PE2 (10.255.0.2) в той же VRF SUBS и достигается через L3VPN с RR 10.255.0.100. Поэтому на одном узле сходятся три плоскости: сессии доступа, VPN-сервисы и публичный Интернет.
Адресация и RFC 6598
Для абонентов выбрана подсеть 100.64.0.0/10 (Shared Address Space, RFC 6598): она не должна пересекаться ни с публичными адресами, ни с RFC 1918 у клиентов, и поэтому её нельзя выдавать на CPE как LAN. Лабораторные значения: Loopback10 в VRF SUBS 100.64.0.1/32 (unnumbered-адрес шаблона PPP), пул сессий 100.64.1.2-100.64.1.254, публичный пул NAT 198.51.100.0/28 (адреса .1-.14; документационная подсеть RFC 5737 стоит вместо реального блока). Подсеть пула суммируется (Null0 или discard) и объявляется upstream, иначе ответы из Интернета не вернутся.
NAT444, EIM и отношения с приложениями
NAT444 означает два NAT подряд (IPv4 CPE 192.168/16 -> 100.64/10 -> публичный). RFC 6888 (требования к CGN) и RFC 4787/5382/5508 (поведение UDP/TCP/ICMP) требуют: endpoint-independent mapping (EIM) - один внутренний адрес и порт отображаются в один внешний независимо от направления, необходимо для P2P, игр и WebRTC; endpoint-independent filtering (EIF) по желанию оператора; hairpinning - соединение абонента на публичный адрес другого абонента, возвращаемое внутри CGN; ограничение числа портов на абонента, чтобы один клиент с торрентом не исчерпал пул. ALG (FTP, SIP, PPTP) на CGN усложняют работу и часто отключаются. UDP-таймауты (например, 30-120 с для UDP, 2 ч 4 мин для установленного TCP, 4 мин для half-open) задают нагрузку на таблицу сессий.
Ёмкость и port block allocation
Пригодных портов на один публичный IP около 64 512 (1024-65535). Если блок на абонента равен 1024 портам, на один IP приходится 63 абонента, а на пул из 14 адресов - около 882 абонентов; соотношение 1:10-1:60 типично для операторов. Динамический NAT без блоков создаёт запись логов на каждую сессию: сотни миллионов строк в сутки. Port Block Allocation (PBA) выдаёт абоненту блок (512-2048 портов) и логирует только выдачу и освобождение блока; Deterministic NAT (RFC 7422) вычисляет внешний IP и диапазон портов из внутреннего адреса алгоритмом, поэтому логирование по сути не требуется. Платформы: Junos MX с MS-MPC (secured-port-block-allocation), у Cisco IOS-XE расширенные режимы CGN зависят от платформы, а у RouterOS (src-nat/masquerade) блоков портов нет, поэтому она подходит только для небольшого масштаба.
Логирование и законный перехват
Сопоставление "публичный IP:порт и время - абонент" - юридическое требование во многих странах (хранение месяцы). Механизмы: syslog (на каждое событие, объёмно), NetFlow v9/IPFIX с NAT-полями (postNATSourceIPv4Address 225, postNAPTSourceTransportPort 227, natEvent 230), а для PBA/Deterministic - логирование блоков или отсутствие логов. Время на NAS и логгерах должно быть синхронизировано (NTP), иначе сопоставление ломается. Дополнительно логируется привязка "логин - внутренний адрес" из RADIUS Accounting.
Выход в MPLS и маршрутизация
Абонентская VRF SUBS экспортирует /32 сессий (redistribute connected) и импортирует маршрут служебной сети: OSS 10.90.0.0/24 доступен всем сессиям через L3VPN (метки: транспортная от LDP/SR + VPN-метка). Интернет-путь идёт мимо L3VPN: ip route vrf SUBS 0.0.0.0 ... global (Cisco) или next-hop сервисного интерфейса (Junos) направляет default в NAT, а из NAT пакет с публичным адресом выходит в глобальную таблицу. Транзит публичных адресов через MPLS-ядро нужен только если NAT вынесен на другой PE (централизованный CGN): тогда VRF SUBS должна содержать default на PE2, а возвратный маршрут пула анонсироваться обратно. Размещение NAT на BNG снижает транзит, но привязывает ёмкость NAT к BNG.
IPv6 как способ уменьшить CGNAT
Dual-stack через IPv6CP/SLAAC и DHCPv6-PD (RFC 8415) выводит IPv6-трафик (30-60% у крупных сервисов) в обход CGNAT. Если IPv4 в ядре не нужен, применяют DS-Lite (RFC 6333: IPv4-in-IPv6 туннель до AFTR, где NAT44), 464XLAT (RFC 6877: CLAT на CPE + PLAT на NAT64) или NAT64/DNS64 (RFC 6146/6147). BNG в этом случае терминирует IPv6-сессию, а IPv4-плоскость обслуживает AFTR/PLAT.
Порядок проверки и сбои
Проверяйте цепочку по звеньям: PPPoE поднят и Accept от RADIUS получен, адрес из 100.64.1.0/24 в VRF SUBS, default ведёт в NAT, NAT создаёт трансляцию с публичным адресом из пула, ответ возвращается (пул объявлен upstream), логи выдачи портов доходят до коллектора, служебная сеть 10.90.0.0/24 видна через L3VPN.
- Нет
ip nat inside/outsideили не тот VRF в правиле: трансляций нет. - Нет маршрута пула у upstream: SYN уходит, ответ - нет.
- Лимит записей на хост занижен: один абонент блокируется при обычной работе браузера.
- Пул исчерпан (14 адресов x 63 блока): новые сессии отклоняются.
- Не включено логирование: нарушено требование перехвата.
- MTU: PPPoE 1492 + NAT-туннель DS-Lite дают ещё меньше, нужен MSS clamping.
Схема архитектуры и топология
+----------------------+ Shared Space 100.64.0.0/10 +---------------------+
| Subscriber (VRF SUBS)| ============================> | BNG + CGNAT |
| IP: 100.64.1.10 | PBA: 1024-port block | Pool: 198.51.100.0/28|
| src port: any | <============================ | (global table) |
+----------------------+ +---------------------+Схема прохождения трафика и стек меток
Carrier-Grade NAT (CGNAT / NAT444) Translation:
1. Subscriber session in VRF SUBS: 100.64.1.10:51234 (RFC 6598 space).
2. Default route in VRF SUBS sends the packet to the CGN function (service
blade or inline NAT engine).
3. CGN picks a public IP from 198.51.100.0/28 and allocates a port block
(e.g. 1024 ports) to this subscriber.
4. Source is translated to 198.51.100.x:<port from the block> and the
packet leaves through the global table toward the upstream.
5. Only the block allocation/release is logged (IPFIX/syslog) to map
public IP:port and time back to the subscriber.
6. The public pool is summarized and advertised to the upstream, otherwise
return traffic never comes back.Таблица состояний и параметров
| Режим CGNAT | Механизм выделения портов | Преимущества | Логирование (Syslog/IPFIX) |
|---|---|---|---|
| Dynamic NAT44 (пул) | Порт из общего пула на каждую сессию | Максимальная плотность упаковки абонентов | Запись на каждую сессию: сотни миллионов строк в сутки |
| Port Block Allocation (PBA) | Абоненту выдаётся блок 512-2048 портов | Предсказуемый лимит на клиента, защита пула от одного торрент-клиента | Логируются только выдача и освобождение блока: объём логов падает на порядки |
| Deterministic NAT (RFC 7422) | Внешний IP и диапазон портов вычисляются алгоритмом из внутреннего адреса | Нет динамического учёта блоков, поведение предсказуемо | По сути не требуется: достаточно хранить алгоритм и его параметры с датами изменений |
Архитектурная модель и принцип работы
В реальных сетях оператора MPLS объединяет оборудование различных производителей. Ниже представлены практические примеры конфигурации и вывода команд Data Plane / Control Plane для четырёх платформ: Cisco IOS-XE/XR, Huawei VRP, Juniper Junos и MikroTik RouterOS v7. Обратите внимание на различия в синтаксисе и механизмах распределения меток.
Практическая конфигурация (Cisco, Huawei, Juniper, MikroTik)
Cisco (IOS-XE/XR)
ip nat pool PUB-POOL 198.51.100.1 198.51.100.14 prefix-length 28
ip access-list standard CGN-ACL
permit 100.64.0.0 0.63.255.255
ip nat inside source list CGN-ACL pool PUB-POOL vrf SUBS overload
ip nat translation max-entries all-host 2048
ip nat log translations syslog
interface Virtual-Template1
ip nat inside
interface GigabitEthernet4
description uplink-to-internet-gw
ip address 172.16.40.1 255.255.255.252
ip nat outside
ip route vrf SUBS 0.0.0.0 0.0.0.0 172.16.40.2 global
ip route 198.51.100.0 255.255.255.240 Null0
router bgp 65000
address-family ipv4
network 198.51.100.0 mask 255.255.255.240