Теоретические основы и архитектура
Сеть широкополосного доступа оператора связывает абонентов (квартиры, частные дома, офисы) с магистральным ядром MPLS. Она состоит из трёх уровней: 1. Уровень доступа (Access Layer): коммутаторы доступа L2 (FTTB/FTTH/GPON OLT), к которым подключаются абонентские CPE и ONT. 2. Уровень агрегации (Aggregation Layer): кольцевые коммутаторы (Metro Ethernet), собирающие трафик с десятков OLT и коммутаторов доступа по протоколам QinQ (802.1ad, двойное тегирование: внешний S-VLAN для сервиса/района и внутренний C-VLAN для абонента). 3. Граничный маршрутизатор доступа BNG (Broadband Network Gateway, ранее именовавшийся BRAS — Broadband Remote Access Server). BNG является шлюзом по умолчанию (Default Gateway) для всех абонентов. BNG терминирует сессии пользователей, взаимодействует с сервером RADIUS для аутентификации, биллинга и авторизации, применяет тарифные планы (полисинг скорости) и направляет абонентский трафик в соответствующий VRF ядра MPLS.
Три уровня сети доступа и роль BNG
Абонент (ONT/CPE) подключается к OLT (GPON/XGS-PON) или Ethernet-коммутатору доступа (FTTB), те собираются в кольцо или звезду агрегации (Metro Ethernet, 10/100G), и только там стоит BNG - первая точка L3 для абонента. Доступ и агрегация работают на L2: у них нет маршрутов абонентов, они только метят кадры и ограничивают область широковещания. BNG терминирует абонента (IP-адрес, сессия, политика, учёт), поэтому объём состояния на нём измеряется десятками-сотнями тысяч сессий, а не MAC-адресами. Подробнее о PPPoE/IPoE - в следующем уроке, о RADIUS - далее; здесь разбираем то, что стоит ниже сессии: теги, изоляцию и стыковку с MPLS.
Q-in-Q: 802.1Q, 802.1ad и ёмкость тегов
VLAN ID - 12 бит, то есть 4094 рабочих значения: на город с сотнями тысяч абонентов этого мало. Двойное тегирование даёт 4094 x 4094 комбинаций. Внешний тег (S-VLAN, Service/Provider VLAN) идентифицирует OLT, порт агрегации или сервис; внутренний (C-VLAN, Customer VLAN) - абонента или услугу. Для IEEE 802.1ad внешний тег имеет TPID 0x88A8, внутренний - 0x8100; на практике часть оборудования доступа ставит на внешний тег и 0x8100 (так называемый "legacy Q-in-Q"), поэтому TPID на стыке OLT - агрегация - BNG надо проверять явно: при несовпадении BNG не распознает кадр как двойной. Каждый дополнительный тег добавляет 4 байта: при MTU абонента 1500 на агрегации нужен MTU не меньше 1508 на Ethernet-уровне, а с PPPoE (+8) и MPLS-метками в ядре - ещё больше, поэтому в сетях доступа обычно задают jumbo MTU 9000+ на всех аплинках.
1:1 и N:1 (модели VLAN по TR-101)
В модели 1:1 каждому абоненту соответствует своя пара S+C (или свой C-VLAN в порту): абонент изолирован на L2 по построению, а BNG получает идентификатор линии прямо из тегов. Цена - число подынтерфейсов на BNG и масса конфигурации (поэтому тегированные интерфейсы создают динамически по первому кадру, а не вручную). В модели N:1 (service VLAN) множество абонентов делится одним VLAN на сервис (Internet, IPTV, VoIP); изоляцию обеспечивают сами коммутаторы: split horizon/private VLAN на портах доступа, запрет форвардинга между клиентскими портами, DHCP snooping + IP source guard + dynamic ARP inspection, MAC forced forwarding. Модель N:1 экономнее по ресурсам BNG, но подмена MAC/IP, ARP-спуфинг и чужой DHCP-сервер блокируются только дисциплиной на access-уровне. Для услуг обычно берут отдельный C-VLAN (или S-VLAN) на Internet, IPTV (multicast) и VoIP, чтобы применять разные QoS и VRF.
Идентификация линии: DHCP option 82 и PPPoE Intermediate Agent
Если абонент не вводит логин, BNG должен знать, с какой физической линии пришёл запрос. Коммутатор доступа с DHCP snooping вставляет в DHCPv4-запрос option 82 (RFC 3046): sub-option 1 Circuit-ID (порт/VLAN), sub-option 2 Remote-ID (идентификатор узла доступа, часто MAC или hostname). Формат по TR-101 такой: Access-Node-Identifier eth slot/port[:vlan-id], например OLT-05 eth 1/3/7:20. Для IPv6 аналоги - DHCPv6 option 18 (Interface-ID) и 37 (Remote-ID); для PPPoE - тег PPPoE Intermediate Agent (Agent-Circuit-ID/Remote-ID в PPPoE Vendor-Specific tag). BNG передаёт эти значения в RADIUS (атрибуты Agent-Circuit-Id/Agent-Remote-Id или NAS-Port-Id) и по ним привязывает сессию к линии. Важная ловушка: пакет, пришедший от коммутатора с option 82, но с giaddr = 0.0.0.0, штатный DHCP-relay отбрасывает как недоверенный; нужно явно включить доверие (ip dhcp relay information trust-all на Cisco).
Привязка абонента к VRF и выход в MPLS
В L3VPN-ядре BNG - обычный PE. Для статических подынтерфейсов привязка к VRF задаётся конфигурацией (vrf forwarding, ip binding vpn-instance, routing-instances ... interface). Для динамических сессий VRF выбирается атрибутом RADIUS или профилем (подробнее - в уроке про RADIUS). Маршруты абонентов (подсеть C-VLAN или /32 сессий) попадают в BGP VRF через redistribute connected/subscriber и уходят по MP-BGP с меткой VPN: транспортная метка PE-BNG определяется LDP/SR, как в предыдущих модулях. Служебные ресурсы (DHCP, RADIUS, DNS, портал оплаты) размещают в своей VRF/сервисной сети и импортируют с нужными RT, чтобы они были доступны абонентской VRF, но абоненты не видели друг друга. IP-пакеты абонента идут в ядро как VPN-трафик: стек состоит из транспортной и VPN-метки, поэтому MTU ядра должен покрывать 1500 + 8 (максимум PPPoE) + метки.