====== Замыкание локального трафика ====== {{indexmenu_n>2}} ===== Описание ===== FastDPI BRAS может замыкать локальный (внутрисетевой) трафик между пользователями (''local interconnect''). При включенном режиме замыкания BRAS ищет в своей БД UDR IP-адрес получателя. Если он найден и сессия не просрочена и не является явно закрытой (не было DHCPRELEASE), то пакет не пропускается наружу, а отправляется обратно на входной DPDK-интерфейс получателя. Так как это локальный трафик, никакие функции СКАТ (фильтрация, полисинг, услуги) к нему не применяются. При замыкании локального трафика BRAS корректирует L2-заголовки пакета: в качестве MAC-адреса источника подставляет свой MAC-адрес ''bras_arp_mac'', MAC-адрес получателя определяется по свойствам IP-адреса получателя, VLAN-теги меняет на теги, относящиеся к абоненту-получателю (BRAS запомнил эти теги и MAC-адрес в UDR при старте [[dpi:bras_bng:bras_l2_vlan:bras_l2_vlan_session|DHCP-сессии]] получателя). При этом допускается разное количество VLAN-тегов у отправителя и получателя; например, в разнородной локальной сети абонент-отправитель может иметь два VLAN-тега (QinQ, VLAN-per-user), а абонент-получатель – один VLAN-тег, или наоборот. ===== Настройка ===== Включение этой возможности регулируется параметром ''bras_terminate_local'' конфигурационного файла ''fastdpi.conf'': * Значение 0 – данная возможность отключена (**это значение по умолчанию**) * Значение 1 – замыкание локального трафика включено Локальность трафика определяется автономной системой, как описано [[dpi:bras_bng:general_setup#настройка_bras_l3_в_fastdpi|здесь]] Существует возможность запретить замыкание локального трафика для конкретного абонента, см. Радиус-атрибут [[dpi:bras_bng:radius_integration:radius_auth_server_integration:radius_auth_response#VasExperts-Enable-Interconnect|VasExperts-Enable-Interconnect]]. Пакет от одного локального абонента к другому будет дропнут, если хотя бы для одного из абонентов интерконнект запрещен. В случае добавления QinQ-заголовка существует проблема [[dpi:bras_bng:bras_l2_vlan_term:bras_l2_vlan_qinqtype|Double VLAN EtherType]] СКАТ запрещает local interconnect между абонентами в одном VLAN, но относящимся к разным подсетям. Это сделано для борьбы с ''fdb storm'' для некоторых (старых) коммутаторов. Начиная с версии СКАТ 8.1, эту проверку можно отключить параметром ''fastdpi.conf'' bras_skip_detect_vlan_interconnect=1 ==== Замыкание по автономным системам (AS) ==== СКАТ 7.4+: добавлен режим [[dpi:bras_bng:bras_l2_vlan_term:bras_l2_vlan_term_as|терминации по 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 | pass((Замыкание локального трафика проводится только для потока из 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'' для интерфейса) )) | dest abonent | | **local** | pass | pass((Замыкание локального трафика проводится только для потока из 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'' для интерфейса) )) | dest abonent | | **local+term** | pass | dev | dest abonent |