Замыкание локального трафика [Документация VAS Experts]

Замыкание локального трафика

Описание

FastDPI BRAS может замыкать локальный (внутрисетевой) трафик между пользователями (local interconnect). При включенном режиме замыкания BRAS ищет в своей БД UDR IP-адрес получателя. Если он найден и сессия не просрочена и не является явно закрытой (не было DHCPRELEASE), то пакет не пропускается наружу, а отправляется обратно на входной DPDK-интерфейс получателя. Так как это локальный трафик, никакие функции СКАТ (фильтрация, полисинг, услуги) к нему не применяются.

При замыкании локального трафика BRAS корректирует L2-заголовки пакета: в качестве MAC-адреса источника подставляет свой MAC-адрес bras_arp_mac, MAC-адрес получателя определяется по свойствам IP-адреса получателя, VLAN-теги меняет на теги, относящиеся к абоненту-получателю (BRAS запомнил эти теги и MAC-адрес в UDR при старте DHCP-сессии получателя). При этом допускается разное количество VLAN-тегов у отправителя и получателя; например, в разнородной локальной сети абонент-отправитель может иметь два VLAN-тега (QinQ, VLAN-per-user), а абонент-получатель – один VLAN-тег, или наоборот.

Настройка

Включение этой возможности регулируется параметром bras_terminate_local конфигурационного файла fastdpi.conf:

  • Значение 0 – данная возможность отключена (это значение по умолчанию)
  • Значение 1 – замыкание локального трафика включено
Локальность трафика определяется автономной системой, как описано здесь

Существует возможность запретить замыкание локального трафика для конкретного абонента, см. Радиус-атрибут VasExperts-Enable-Interconnect. Пакет от одного локального абонента к другому будет дропнут, если хотя бы для одного из абонентов интерконнект запрещен.

В случае добавления QinQ-заголовка существует проблема Double VLAN EtherType
СКАТ запрещает local interconnect между абонентами в одном VLAN, но относящимся к разным подсетям. Это сделано для борьбы с fdb storm для некоторых (старых) коммутаторов. Начиная с версии СКАТ 8.1, эту проверку можно отключить параметром fastdpi.conf
bras_skip_detect_vlan_interconnect=1

Замыкание по автономным системам (AS)

СКАТ 7.4+: добавлен режим терминации по AS: в этом режиме для замыкания локального трафика IP-адрес приемника должен относится к автономной системе, помеченной как term.

В сетях, где ядро (внутренние серверы и службы, доступные абонентам) находится перед СКАТ, и имеется несколько входящих (смотрящих на абонентов) DPDK-интерфейсов, дополнительно можно указать для каждого DPDK-интерфейса, с какими параметрами замыкать трафик абонентов к ядру. Предполагается, что IP-адреса серверов ядра относятся к локальной AS и что IP-адреса серверов прописаны статически. Для этого для каждого входного DPDK-интерфейса задается параметр в fastdpi.conf:

bras_term_dev_inner=dev=17-00.1;bras_gateway_ip=10.0.1.17;bras_gateway_mac=00:1f:a0:11:53:b4;bras_vlan_subst=33
bras_term_dev_inner=dev=17-00.0;bras_gateway_ip=10.0.1.18;bras_gateway_mac=00:1f:a0:11:53:b5;bras_vlan_subst=35

При замыкании локального трафика по AS СКАТ проверяет, задан ли параметр bras_term_dev_inner для DPDK-интерфейса, с которого пришел пакет. Если задан, то СКАТ действует по следующим правилам:

destination AS
source AS non-local local local+term
non-local pass pass1) dest abonent
local pass pass2) dest abonent
local+term pass dev dest abonent
1) , 2)
Замыкание локального трафика проводится только для потока из LAN в WAN, поэтому такого рода пакеты не должны попадать в СКАТ, — они должны быть смаршрутизированы оборудованием до СКАТ.
где:
1. pass — пакет обрабатывается далее (пропускается наружу)
2. dest abonent — пакет направляется к абоненту-получателю обратно в локальную сеть. Если абонент-получатель неизвестен СКАТ — пакет отбрасывается.
- srcMAC = bras_arp_mac
- destMAC = MAC-адрес абонента-получателя
- VLAN-теги берутся из свойств абонента-получателя
3. dev — (обращение к локальному сервису) пакет направляется обратно в локальную сеть с параметрами, взятыми из conf-параметра bras_term_dev_inner:
- srcMAC = bras_arp_mac
- destMAC = bras_gateway_mac для данного входного интерфейса (из bras_term_dev_inner для интерфейса)
- VLAN-тег = bras_vlan_subst для данного входного интерфейса (из bras_term_dev_inner для интерфейса)