Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
dpi:dpi_components:router:start [2023/09/26 11:01] – elena.krasnobryzh | dpi:dpi_components:router:start [2024/05/20 12:58] (текущий) – [Поддержка LAG] elena.krasnobryzh |
---|
| |
===== Общее описание ===== | ===== Общее описание ===== |
<note tip>Подробнее о решении: [[https://www.youtube.com/watch?v=YgWU35Ay-0k|Обзор Роутера]].</note> | <note tip>Подробнее о решении: {{youtube>YgWU35Ay-0k?}}.</note> |
Сам СКАТ не занимается построением таблицы маршрутизации. Он делегирует эту работу проверенным специализированным инструментам, в примере [[dpi:dpi_components:router:start#внутренняя_архитектура_роутера|внутренней архитектуры роутера]] использован [[dpi:dpi_components:router:start#конфигурирование_роут-демона_bird_frr_etc|роут-демон BIRD]]. Роут-демон обрабатывает требуемые протоколы маршрутизации (BGP, OSPF и пр.) и по ним строит общую таблицу маршрутизации, которую загружает в ядро. СКАТ по этой таблице осуществляет маршрутизацию пакетов. | Сам СКАТ не занимается построением таблицы маршрутизации. Он делегирует эту работу проверенным специализированным инструментам, в примере [[dpi:dpi_components:router:start#внутренняя_архитектура_роутера|внутренней архитектуры роутера]] использован [[dpi:dpi_components:router:start#конфигурирование_роут-демона_bird_frr_etc|роут-демон BIRD]]. Роут-демон обрабатывает требуемые протоколы маршрутизации (BGP, OSPF и пр.) и по ним строит общую таблицу маршрутизации, которую загружает в ядро. СКАТ по этой таблице осуществляет маршрутизацию пакетов. |
| |
| |
==== Общее описание VRF ==== | ==== Общее описание VRF ==== |
| <note>Статья в блоге: [[https://vasexperts.ru/blog/skat/vrf-lite-i-l3vpn-v-skat/|VRF Lite и L3VPN в СКАТ]]</note> |
<note tip>В СКАТ реализован VRF Lite — он разделяет таблицы маршрутизации, но не помещает трафик отдельного VRF в уникальный туннель (MPLS, VXLAN).</note> | <note tip>В СКАТ реализован VRF Lite — он разделяет таблицы маршрутизации, но не помещает трафик отдельного VRF в уникальный туннель (MPLS, VXLAN).</note> |
| |
<code bash> | <code bash> |
router_device { | router_device { |
device= | device= |
tap= | tap= |
peer= | peer= |
vrf= | vrf= |
subnet= | subnet= |
subnet= | subnet= |
subnet6= | subnet6= |
subnet6= | subnet6= |
} | } |
<note tip>Секции ''lag'' в fastdpi.conf - это холодный параметр, требуется рестарт fastdpi при изменении описания LAG.</note> | <note tip>Секции ''lag'' в fastdpi.conf - это холодный параметр, требуется рестарт fastdpi при изменении описания LAG.</note> |
| |
| ====ARP менеджмент==== |
| |
| NeighborDB - это БД nexthop, которую обслуживает сам fastDPI: посылает ARP request для выяснения MAC-адреса nexthop, обновляет ARP кеш для этих nexthop. Для обновления используются следующие опции: |
| * ''router_neighbor_lifetime'' — время жизни записи в ARP кеше, в секундах.\\ По истечении этого времени запись нужно обновить отправкой ARP request (ICMPv6 NDP в случае IPv6). Значение по умолчанию: 300 секунд |
| * ''router_neighbor_refresh_timeout'' — время ожидания ответа на ARP request (сек). Значение по умолчанию: 3 секунды |
| * ''router_neighbor_refresh_attempt'' — количество безуспешных попыток обновления, нужных для того чтобы перевести запись ARP-кеша в состояние Unreachable (недостижимая); другими словами, сколько подряд надо послать ARP Request без ответа, чтобы запись стала unreachable.\\ Значение по умолчанию: 10 попыток |
| * ''router_neighbor_unreachable_refresh'' — после того, как запись становится Unreachable, fastDPI периодически пытается оживить её, посылая ARP Request. Данная опция задает этот период в секундах (по умолчанию 30 сек). |
| |
| Запись nexthop состоит из: |
| * nexthop IP; |
| * //Обязательно// — имя порта, через который осуществляется связь с этим nexthop (в случае LAG — один из портов, входящих в LAG); |
| * //Опционально// — VLAN |
| * //Опционально// — MAC-адрес nexthop. Записи с явно заданным MAC-адресом nexthop являются static ARP cache record — по ним никогда не посылается ARP-запросов IPv4 и IPv6 NeighborDB хранится в SDR в файле ''router.mdb''. SDR (System Data Repository) — это новая сущность наподобие UDR, но содержащая системные настройки. Каталог, где располагается SDR, задается новой опцией ''sdr_path'', по умолчанию это ''/var/db/dpisdr''. |
| |
| Управление NeighborDB (добавление/модификация/удаление записей) производится через команды CLI: |
| * ''router neighbor dump'' — вывод полного списка всех загруженных записей и их внутреннего состояния |
| * ''router neighbor dump db'' — вывод дампа БД router.mdb. |
| * ''router neighbor add'' — добавление новой записи (нового nexthop) в NeighborDB. |
| * ''router neighbor update'' — модификация существующей записи NeighborDB |
| * ''router neighbor delete'' — удаление записи NeighborDB |
| * ''router neighbor refresh'' — принудительное обновление (отправка ARP Request) MAC-адреса конкретного nexthop IP или всех nexthop в указанном VRF или всей NeighborDB |
| * ''router neighbor purge'' — удаление всех записей NeighborDB (полная очистка NeighborDB). |
| |
| <note tip>Синтаксис каждой из этих команд см. ''fdpi_cli <command> ?''</note> |
| |
| **Приоритетность в ARP кеше**\\ |
| С появлением NeighborDB в fastDPI появлились два независимых источника записей в ARP кеше: |
| * [прежний] BIRD/FRR: fastDPI отлавливает взаимодействие BIRD/FRR с соседями и соотвественно заполняет свой ARP кеш для nexthop; fastDPI не обновляет статус таких записей отправкой ARP Request, а надеется на то, что это сделает BIRD/FRR |
| * [новый] NeighborDB: fastDPI сам следит за актуальностью записей, своевременно отправляя ARP Request. **Записи NeighborDB имеют бОльший приоритет**, чем записи от BIRD/FRR. |
===== Поддержка Multi-path routing (ECMP) ===== | ===== Поддержка Multi-path routing (ECMP) ===== |
В СКАТ 10.2 добавлена поддержка multi-path routing ([[https://en.wikipedia.org/wiki/Equal-cost_multi-path_routing|ECMP]]). | В СКАТ 10.2 добавлена поддержка multi-path routing ([[https://en.wikipedia.org/wiki/Equal-cost_multi-path_routing|ECMP]]). |
# Битовая маска | # Битовая маска |
# Значения: | # Значения: |
# 1 - анонсировать адрес абонента в сторону subs | # 0x00001 - анонсировать адрес абонента в сторону subs |
# 2 - анонсировать адрес абонента в сторону inet (если у абонента не подключен NAT) | # 0x00002 - анонсировать адрес абонента в сторону inet (если у абонента не подключен NAT) |
# 4 - анонсировать NAT-подсети в сторону inet | # 0x00004 - анонсировать NAT-подсети в сторону inet |
# 8 - анонсировать абонентские шлюзы (направление задается флагами 1 и 2) | # 0x00008 - анонсировать абонентские шлюзы (направление задается флагами 1 и 2) |
| # 0x10000 - деанонсировать L3-абонента при наступлении acct idle (закрытие acct-сесси по idle timeout) |
# Значение по умолчанию: 0 - ничего никуда не анонсировать | # Значение по умолчанию: 0 - ничего никуда не анонсировать |
#router_subs_announce=0 | #router_subs_announce=0 |
[СКАТ 10.2+] Если в fastdpi.conf задано ''nat_exclude_private=1'', то есть не применять NAT для пакетов "приватный IP -> приватный IP", то СКАТ **будет** анонсировать приватный адрес абонента с подключенным NAT в сторону inet, так как вышестоящий роутер должен знать маршрут до серого IP-адреса абонента. | [СКАТ 10.2+] Если в fastdpi.conf задано ''nat_exclude_private=1'', то есть не применять NAT для пакетов "приватный IP -> приватный IP", то СКАТ **будет** анонсировать приватный адрес абонента с подключенным NAT в сторону inet, так как вышестоящий роутер должен знать маршрут до серого IP-адреса абонента. |
| |
| <note>Описание параметров [[dpi:opt_cgnat:сgnat_settings:start#параметры_и_возможные_значения|по ссылке]]</note> |
==== Анонс адресов L3-абонентов ==== | ==== Анонс адресов L3-абонентов ==== |
| |
В СКАТ 10.2 действует следующий алгоритм анонсов IP-адресов [[dpi:bras_bng:opt_bras_l3:start|L3-абонентов]]: | В СКАТ 10.2 действует следующий алгоритм анонсов IP-адресов [[dpi:bras_bng:general_setup:start#настройка_bras_l3_в_fastdpi|L3-абонентов]]: |
* по умолчанию, анонс адреса производится для успешной авторизации (accept) и НЕ производится для неуспешной (reject) | * по умолчанию, анонс адреса производится для успешной авторизации (accept) и НЕ производится для неуспешной (reject) |
* fastdpi.conf-параметр ''auth_announce_reject'' позволяет глобально разрешить анонсы для reject: | * fastdpi.conf-параметр ''auth_announce_reject'' позволяет глобально разрешить анонсы для reject: |