Обработка ARP
Обработка ARP-запросов включается конфигурационным параметром bras_arp_proxy
, который представляет из себя
набор битовых флагов:
- 0 - режим ARP proxy отключен. В этом режиме BRAS отвечает сам только на ARP-запросы IP-адреса, равного bras_arp_ip.
- 0x0001 - отвечать на ARP-запросы абонентов: если искомый IP-адрес является адресом абонента и статус сессии для этого абонента не равен "сессия закрыта"
- 0x0002 - отвечать на ARP-запросы шлюзов абонентских подсетей. Адреса шлюзов извлекаются из абонентского DHCP-трафика.
- 0x0004 [в режиме роутера] - отвечать, если есть путь до запрашиваемого IP. Данный флаг работает только если включен режим роутера. Если абонент запросит ARP для адреса, маршрут для которого известен, fastDPI ответит сам своим MAC-адресом
bras_arp_mac
.
При включении ARP proxy BRAS отвечает своим MAC-адресом (задается в конфигурационном параметре bras_arp_mac). Заметим, что на все ARP-запросы с разными IP-адресами fastDPI отвечает одним и тем же MAC-адресом, это следует учитывать при конфигурировании сети.
Прежде чем обработать ARP-запрос, fastDPI BRAS проверяет корректность IP-адреса источника ARP-запроса в соответствии с IP source guard.
Особенности обработки ARP-запросов между абонентами, - от абонента A "who has target abonent B IP":
target abonent IP | |||
---|---|---|---|
source abonent IP | no VLAN | VLAN | QinQ |
no VLAN | drop (так как абоненты могут связаться друг с другом сами) | reply | reply |
VLAN | reply | drop , если srcIP vlan == dstIP vlan ; reply , если srcIP vlan != dstIP vlan | reply |
QinQ | reply | reply | reply |
drop - СКАТ молча дропает ARP-запрос
reply - СКАТ отвечает на ARP-запрос своим виртуальным MAC-адресом bras_arp_mac
В СКАТ 10.3 добавлена поддержка режима коммутатора - сегментирование абонентов в общем VLAN на сети доступа. В этом режиме абоненты даже в одном VLAN изолированы друг от друга на коммутаторе, поэтому СКАТ должен сам ответить на ARP-запрос между абонентами в одном VLAN. Это включается параметром в fastdpi.conf
:
# Флаг сегментирования абонентов в общем VLAN на сети доступа # (изоляция абонентов на коммутаторе, т.е. абонам не доставляется трафик между друг другом даже в одном влане) # Учитывается только при установленном флаге 1 в bras_arp_proxy для ARP-запросов от одного абонента другому. # off (типичный случай) - абоненты A и B в одном VLAN могут взаимодействовать между собой напрямую, СКАТ # не обрабатывает ARP-запрос от абонента A "who has abonent B IP" # on - на коммутаторе включена изоляция абонентов, находящихся в одном VLAN, поэтому СКАТ должен сам ответить # на ARP-запрос от абонента A "who has target abonent B IP" #bras_arp_vlan_segmentation=off
При включении bras_arp_vlan_segmentation=on
обработка ARP-запроса между абонентами будет такой:
target abonent IP | |||
---|---|---|---|
source abonent IP | no VLAN | VLAN | QinQ |
no VLAN | drop (так как абоненты могут связаться друг с другом сами) | reply | reply |
VLAN | reply | reply | reply |
QinQ | reply | reply | reply |
Обработка ARP извне (со стороны бордера)
Чтобы ARP таблица на бордере не замусоривалась однотипными записями,
СКАТ не отвечает бордеру своим MAC на ARP запросы по IP абонентов,
вместо этого на бордере должен быть прописан транзитный маршрут через СКАТ для всех подсетей абонентов,
которых он обслуживает. В качестве адреса назначения для таких маршрутов следует указывать значение,
задаваемое параметром bras_arp_ip
.
bras_arp_ip
.