Новая нумерация и оглавление по частям, раздел 22 объединён, заглушки по старым адресам

This commit is contained in:
Daniel Lavrushin
2026-09-23 21:15:53 +02:00
parent 0d45afd550
commit f53aed1ef6
48 changed files with 749 additions and 596 deletions
+110 -224
View File
@@ -12,139 +12,108 @@
> **Примечание:** Данная документация сгенерирована с помощью ИИ на основе транскрипта ~5-часовой видеолекции и проверена вручную. Может содержать неточности.
### [1. Введение и общая архитектура АСБИ](chapters/01.md)
### Часть I. Обзор системы
- 1.1. Что такое АСБИ (Автоматизированная система обеспечения безопасности интернета)
- 1.2. Закон о суверенном интернете и участники проекта (ГРЧЦ, ДЦОА, RDP.ru)
#### [1. Введение и общая архитектура АСБИ](docs/overview.md)
- 1.1. Что такое АСБИ
- 1.2. Закон о суверенном интернете и участники проекта
- 1.3. Что такое ТСПУ — комплекс оборудования у операторов связи
- 1.4. Общая схема: байпасы, балансировщики, фильтры, сегмент управления
### [2. Прохождение трафика через ТСПУ](chapters/02.md)
#### [2. Прохождение трафика через ТСПУ](docs/traffic-flow.md)
- 2.1. Стык оператора связи: типы инкапсуляции (VLAN, QinQ, MPLS, PPPoE)
- 2.2. Разделение на LAN-порты (абоненты) и WAN-порты (интернет)
- 2.1. Стык оператора связи: типы инкапсуляции
- 2.2. Разделение на LAN-порты и WAN-порты
- 2.3. Простейший вариант ТСПУ (один байпас, один фильтр)
- 2.4. Типовая схема ТСПУ
### [3. Байпас (Bypass)](chapters/03.md)
#### [3. Места установки ТСПУ в сети оператора](docs/placement.md)
- 3.1. Назначение и роль байпаса в ТСПУ
- 3.2. Байпасы Silicom (федеральный проект)
- 3.2.1. Порты: Net0/Net1 (оператор) и Mon0/Mon1 (балансировщик)
- 3.2.2. Режим Inline — основной рабочий режим
- 3.2.3. Режим TAP — копирование трафика без влияния на оператора
- 3.2.4. Режим Active Bypass — замыкание без копирования
- 3.2.5. Режим Passive Bypass — аварийное оптическое замыкание канала
- 3.2.6. Переключение между режимами и влияние на оператора
- 3.3. Байпасы GL Sun (пилотный проект, Урал)
- 3.3.1. Отличие от Silicom: только пассивный байпас
- 3.3.2. Флап линков при каждом переключении
- 3.4. Мониторинг каналов: Heartbeat-пакеты байпаса
- 3.5. Автоматическое переключение в TAP/Active Bypass при потере канала
- 3.6. Развитие: отечественные байпасы
- 3.1. До BRAS/BPE/BNG (между абонентами и терминацией сессий)
- 3.2. До CGNAT (после BRAS) — наиболее удобная точка
- 3.3. После CGNAT (ближе к выходу в интернет)
- 3.4. Режим On-a-stick (BRAS/CGNAT подключены петлёй)
### [4. Балансировщик (EcoFilter Balancer)](chapters/04.md)
#### [4. Эшелонированная система (ТСПУ тип Б)](docs/echelon.md)
- 4.1. Назначение: распределение трафика по фильтрам
- 4.2. Аппаратная платформа: 32-портовый, 1U, пропускная способность 3.2 Тбит/с
- 4.3. Организация портов: пары LAN/WAN, линки
- 4.3.1. Принцип чётных/нечётных портов
- 4.3.2. Жёсткая привязка: трафик возвращается в тот же линк
- 4.3.3. Асимметричный трафик: все линки — на один балансировщик
- 4.4. Фильтры на балансировщике (Flow rules)
- 4.4.1. Байпас служебного трафика (BGP, мультикаст, маршрутизация)
- 4.4.2. Отправка трафика на группу балансировки
- 4.5. Балансировка трафика
- 4.5.1. Хэш-сумма: source IP + destination IP + протокол
- 4.5.2. Учёт количества ядер фильтров
- 4.5.3. Дополнительный 4-байтный заголовок для фильтров
- 4.5.4. Симметричность хэша: одна сессия — один фильтр, одно ядро
- 4.6. Отказоустойчивость
- 4.6.1. Keep-alive пакеты к фильтрам
- 4.6.2. Программный байпас при потере группы портов
- 4.6.3. Перебалансировка трафика (опционально)
- 4.7. Работа с различными инкапсуляциями (VLAN, MPLS)
- 4.8. Обработка HTTP-редиректов и TCP Reset через фильтры
- 4.1. Назначение: обработка трафика, не прошедшего через ТСПУ тип А
- 4.2. Проблема асимметричного трафика у крупных операторов
- 4.3. Балансировщик Eco Highway
- 4.4. Два конвейера (Pipeline) в Eco Highway
- 4.5. Отличия EcoFilter Balancer от Eco Highway
- 4.6. Отсутствие логирования на Eco Highway (только real-time)
- 4.7. Прозрачный пропуск трафика, уже обработанного ТСПУ тип А
### [5. Фильтр (EcoFilter)](chapters/05.md)
### Часть II. Байпас и балансировщик
- 5.1. Путь пакета через фильтр
- 5.1.1. Проверка: IP-пакет или нет
- 5.1.2. Проверка по ACL (привязка к пулу)
- 5.1.3. Проверка по DPI-листу (IP-подсети)
- 5.1.4. Обработка движком DPI
- 5.1.5. Решение: пропустить или заблокировать (drop)
- 5.2. Работа на уровне L2: фильтр как «прозрачный провод»
#### [5. Байпас (Bypass)](docs/bypass.md)
### [6. Места установки ТСПУ в сети оператора](chapters/06.md)
- 5.1. Назначение и роль байпаса в ТСПУ
- 5.2. Байпасы Silicom (федеральный проект)
- 5.3. Байпасы GL Sun (пилотный проект, Урал)
- 5.4. Мониторинг каналов: Heartbeat-пакеты байпаса
- 5.5. Автоматическое переключение в TAP/Active Bypass при потере канала
- 5.6. Развитие: отечественные байпасы
- 6.1. До BRAS/BPE/BNG (между абонентами и терминацией сессий)
- 6.1.1. Особенность: PPPoE-трафик
- 6.2. До CGNAT (после BRAS) — наиболее удобная точка
- 6.2.1. Видимость серых абонентских IP-адресов
- 6.3. После CGNAT (ближе к выходу в интернет)
- 6.3.1. Только белые адреса, сложности траблшутинга
- 6.4. Режим On-a-stick (BRAS/CGNAT подключены петлёй)
- 6.4.1. Двойное прохождение трафика через ТСПУ
- 6.4.2. Разделение по VLAN для обработки трафика одного направления
- 6.4.3. Проблемы двойной обработки и best practice
#### [6. Балансировщик: принцип работы](docs/balancer.md)
### [7. Эшелонированная система (ТСПУ тип Б)](chapters/07.md)
- 6.1. Назначение: распределение трафика по фильтрам
- 6.2. Аппаратная платформа: 32-портовый, 1U, пропускная способность 3.2 Тбит/с
- 6.3. Организация портов: пары LAN/WAN, линки
- 6.4. Фильтры на балансировщике (Flow rules)
- 6.5. Балансировка трафика
- 6.6. Отказоустойчивость
- 6.7. Работа с различными инкапсуляциями (VLAN, MPLS)
- 6.8. Обработка HTTP-редиректов и TCP Reset через фильтры
- 7.1. Назначение: обработка трафика, не прошедшего через ТСПУ тип А
- 7.2. Проблема асимметричного трафика у крупных операторов
- 7.3. Балансировщик Eco Highway
- 7.3.1. BGP-загрузка списков фильтрации из ЦСУ
- 7.3.2. Блокировка по IP-адресам на уровне балансировщика (Telegram, реестр РКН)
- 7.3.3. Фильтры в режиме On-a-stick, VLAN-разделение LAN/WAN
- 7.3.4. Фильтры занимаются только URL-фильтрацией по реестру РКН
- 7.4. Два конвейера (Pipeline) в Eco Highway
- 7.4.1. Разделение портов между конвейерами
- 7.4.2. Физическая перемычка между конвейерами
- 7.4.3. Прохождение пакета: drop / отправка на фильтр / переход на второй конвейер
- 7.4.4. Удвоение количества правил фильтрации
- 7.5. Отличия EcoFilter Balancer от Eco Highway
- 7.6. Отсутствие логирования на Eco Highway (только real-time)
- 7.7. Прозрачный пропуск трафика, уже обработанного ТСПУ тип А
#### [7. Балансировщик: аппаратная платформа](docs/balancer-platform.md)
### [8. Формирование протокольных списков (двухстадийная блокировка)](chapters/08.md)
- 7.1. Одноюнитовый (32 порта QSFP28) и двухюнитовый (65 портов)
- 7.2. Скорости портов: 10G / 25G / 100G
- 7.3. Гидры (breakout): один QSFP28 → четыре SFP+ (10G)
- 7.4. Внутренняя архитектура
- 7.5. Передняя панель: Console, Management Ethernet, USB
- 8.1. Первый этап: распознавание протоколов на фильтрах (ТСПУ тип А)
- 8.2. Отправка логов на SPFS (сервер предварительного формирования списков)
- 8.3. Передача логов по GRPC в центральную систему управления
- 8.4. Анализ, очистка от ложных срабатываний, формирование списков
- 8.5. Загрузка очищенных списков обратно на фильтры (HTTP) и на Eco Highway (BGP)
- 8.6. Время полного цикла блокировки: ~5–15 минут
#### [8. Балансировщик: конфигурация](docs/balancer-config.md)
### [9. Центральная система управления (ЦСУ)](chapters/09.md)
- 8.1. CLI: операционный режим / конфигурационный режим (`edit`)
- 8.2. Обновление прошивки: `call rdp firmware download` / `call rdp install`
- 8.3. Настройка физических портов
- 8.4. Настройка линков (объединение двух портов LAN+WAN в сторону оператора)
- 8.5. Настройка группы балансировки
- 8.6. Профиль Keep-Alive (liveness profile)
- 8.7. Настройка фильтров (Flow rules)
- 8.8. Настройка Heartbeat для GL Sun (пилотный проект)
- 8.9. Management-интерфейс: IP, маска, default gateway
- 9.1. Архитектура: две независимые площадки (основная и резервная)
- 9.2. Связь с ТСПУ через VPN (криптошлюз «Континент»)
- 9.3. Масштаб: ~350 площадок, ~5000 устройств
- 9.4. Подсистемы ЦСУ: формирование списков, мониторинг, логирование, картография
- 9.5. Новая ЦСУ для федерального проекта (замена уральской)
#### [9. Балансировщик: мониторинг и диагностика](docs/balancer-monitoring.md)
### [10. Сегмент управления ТСПУ](chapters/10.md)
- 9.1. `show hardware info` — CPU, память, вентиляторы, БП, температура
- 9.2. `show mng if` — management-интерфейс
- 9.3. `show rdp firmware version` — версии прошивок, tries
- 9.4. Состояние портов и трансиверов: SFP-информация, DDM, статистика фреймов
- 9.5. Статистика правил фильтрации: счётчики пакетов/байт по каждому flow
- 9.6. Состояние группы балансировки
- 9.7. Программный байпас: индивидуально для каждой группы портов
- 10.1. Адресация: 10.<регион>.<площадка>.0/24
- 10.2. Распределение адресов: байпасы, балансировщики, BMC, фильтры, IPMI, SPFS, СПХД
- 10.3. Шлюз по умолчанию — криптошлюз «Континент»
- 10.4. Подсеть логирования (единая для всех ТСПУ)
### Часть III. Фильтр
### [11. Фильтр: аппаратная платформа](chapters/11.md)
#### [10. Фильтр: принцип работы](docs/filter.md)
- 10.1. Путь пакета через фильтр
- 10.2. Работа на уровне L2: фильтр как «прозрачный провод»
#### [11. Фильтр: аппаратная платформа](docs/filter-platform.md)
- 11.1. Младшая линейка: EcoFilter 2020/2040
- 11.2. Старшая линейка: EcoFilter 4080/4120/4160
- 11.3. Модели 2019 года (пилотный проект, Урал)
- 11.3.1. Процессоры Intel Xeon 2695/2699, 18/22 ядра, 128/256 ГБ RAM
- 11.3.2. Фиксированные сетевые интерфейсы
- 11.4. Модели 2020 года (федеральный проект)
- 11.4.1. Процессор Intel Xeon Gold 6212, 24 ядра, 192/384 ГБ RAM
- 11.4.2. Сменные сетевые интерфейсы, 4× SFP+ лог-порта
- 11.5. Разделение интерфейсов: LAN (чётные) / WAN (нечётные)
- 11.6. История платформы: от CGNAT (2013) к DPI-фильтру
### [12. Сессии и трансляции на фильтре](chapters/12.md)
#### [12. Фильтр: сессии и трансляции](docs/filter-sessions.md)
- 12.1. Понятие сессии: local IP:port + global IP:port + remote IP:port
- 12.2. Понятие трансляции: local IP:port ↔ global IP:port
@@ -155,56 +124,39 @@
- 12.7. Тайм-ауты сессий и трансляций
- 12.8. Команды: `show session`, `show xl`, фильтрация по `local`/`remote`, pipe и count
### [13. Фильтр: первоначальная настройка и CLI](chapters/13.md)
#### [13. Фильтр: первоначальная настройка и CLI](docs/filter-cli.md)
- 13.1. Подключение: консоль (115200 8N1) и SSH (порт 22)
- 13.2. Логин по умолчанию: admin / econat
- 13.3. Операционный режим (>) и конфигурационный режим (#)
- 13.4. Навигация по дереву конфигурации: system, pools, access-lists
- 13.4.1. Переход в раздел, exit (..), root (/)
- 13.4.2. Автодополнение (Tab), история команд (↑↓), справка (?)
- 13.5. Применение конфигурации: `apply`, сохранение: `wr`
- 13.6. Управление конфигурациями: save, load, copy, clear config
- 13.7. Одновременная работа двух пользователей: ограничения
- 13.8. «Мышеловка» (trap mode) при незакрытой скобке
- 13.9. Ключевое слово `ls` для быстрого просмотра
### [14. Фильтр: конфигурация подсистем](chapters/14.md)
#### [14. Фильтр: конфигурация подсистем](docs/filter-subsystems.md)
- 14.1. Консольный порт: скорость, тайм-аут неактивности
- 14.2. Management-интерфейс: IP, gateway, DNS, allowed IP
- 14.2.1. Добавление/удаление записей: `+=` и `-=`
- 14.3. Терминал (SSH): auto-logout, prompt, нумерация строк
- 14.3.1. Лимит сессий (20), опасность `never` для auto-logout
- 14.4. Пользователи: создание, удаление, уровни доступа, пароли (secret 0 / 15)
- 14.5. TACACS+: авторизация, fallback на локальную базу
- 14.6. NTP: до 3 серверов, период обновления
- 14.7. SNMP: community (read-only), traps, allow-ip
- 14.8. Системное журналирование (syslog)
- 14.8.1. Внешние лог-серверы (до 2), hostname, time shift
- 14.8.2. Уровни логирования по подсистемам (1=ошибки, 2=предупреждения, 3=информация)
- 14.8.3. Подсистема `all` — максимальный уровень для всех
- 14.8.4. Логирование команд пользователя (уровень fatal)
- 14.8.5. SNMP traps: только уровень fatal
- 14.9. Журналирование соединений (connection log) — через лог-интерфейс (DPDK)
- 14.10. Журналирование протоколов (debug logger) — отправка на SPFS
- 14.10.1. Выбор протоколов (all / конкретные)
- 14.10.2. Количество пакетов на протокол (по умолчанию 30, рекомендуется 3)
### [15. Фильтр: настройка интерфейсов и общих параметров](chapters/15.md)
#### [15. Фильтр: настройка интерфейсов и общих параметров](docs/filter-interfaces.md)
- 15.1. Интерфейсы: enable/disable, description (LACP не используется)
- 15.2. NAT Defaults — общие параметры устройства
- 15.2.1. **VLAN Mode**: untagged / vlan / qinq — глубина поиска IP-заголовка (всегда qinq)
- 15.2.2. Sessions per Translation (по умолчанию 4096)
- 15.2.3. **Forward Traffic**: всегда ON
- 15.2.4. **L2 MTU**: 9216
- 15.2.5. **LLDP**: выключен (требование операторов — прозрачность)
- 15.2.6. **Permit Invalid Flow**: всегда ON — приём TCP-сессий без SYN
- 15.3. Тайм-ауты сессий и трансляций
- 15.4. IPv6: включение, диапазон адресов для обработки
### [16. Фильтр: ACL и пулы — запуск трафика на обработку](chapters/16.md)
#### [16. Фильтр: ACL и пулы — запуск трафика на обработку](docs/filter-acl-pools.md)
- 16.1. Создание ACL: `create acl`, правила (allow/deny), протоколы, source/destination, VLAN
- 16.2. Создание пула: `create pool`, тип = fake (без NAT)
@@ -214,39 +166,15 @@
- 16.6. IPv6 в пуле
- 16.7. Секция bypass — heartbeat к байпасу GL Sun (только пилотный проект)
### [17. Фильтр: настройка DPI](chapters/17.md)
#### [17. Фильтр: настройка DPI](docs/filter-dpi.md)
- 17.1. Общие настройки модуля DPI
- 17.1.1. Включение/выключение DPI
- 17.1.2. **Send RST off**: отключение TCP Reset при блокировке протоколов
- 17.1.3. Functionality mode: normal (не double mirror traffic)
- 17.2. Настройка реестра РКН
- 17.2.1. Источник: RKN или GRFЦ
- 17.2.2. Логин/пароль для доступа к серверу РКН
- 17.2.3. Привязка к DPI-листу (list number)
- 17.2.4. Proxy-сервер, dump server
- 17.2.5. Проблемы скачивания: минимальная скорость ~10 Мбит/с
- 17.3. Деградация протоколов (protocols capacity)
- 17.3.1. Шкала 0–100: 0 = полная блокировка, 100 = полный пропуск
- 17.3.2. Дроп пакетов с заданной вероятностью
- 17.3.3. Эффективная деградация: 2–10% пропускания
- 17.3.4. Влияние на голосовые вызовы и мессенджеры
- 17.4. Настройка DPI-листов (0–16)
- 17.4.1. Enable/disable каждого листа
- 17.4.2. BitTorrent UTP detection
- 17.4.3. WH List Mode: blacklist (по умолчанию) / whitelist
- 17.4.4. **Behavior**: block / ignore / color / redirect
- 17.4.5. Redirect URL — страница-заглушка для заблокированных HTTP-ресурсов
- 17.4.6. Download URL — источник списков, update schedule
- 17.4.7. Protocols — список распознаваемых протоколов
- 17.4.8. **No IP** / **IP** — исключение/включение адресов для обработки
- 17.4.9. QUIC list
- 17.5. Формат списков фильтрации
- 17.5.1. IP-адреса, подсети, диапазоны, URL
- 17.5.2. HTTP: блокировка конкретного URL
- 17.5.3. HTTPS: блокировка только по домену (SNI/Client Hello)
### [18. Фильтр: мониторинг и диагностика](chapters/18.md)
#### [18. Фильтр: мониторинг и диагностика](docs/filter-monitoring.md)
- 18.1. `show version` — версия ПО, серийный номер (= MAC management)
- 18.2. `show ip if` — параметры management-интерфейса
@@ -255,26 +183,15 @@
- 18.5. Аппаратная часть: `show power`, `show fan`, `show temperature`
- 18.6. Интерфейсы: `show interface brief`, traffic monitor, трансиверы (DDM)
- 18.7. Ресурсы: `show resources`
- 18.7.1. Таблицы сессий/трансляций: не более 20% загрузки
- 18.7.2. Свободные буферы: не должны уходить в ноль
- 18.7.3. DPI-ресурсы: не более 100%
- 18.7.4. CPU Load — условный параметр обработки трафика
- 18.8. Память: Control Plane vs Data Plane
- 18.8.1. Data Plane выделяется при старте, не должна расти
- 18.8.2. Пороги: 5–10% свободной памяти — повод для тревоги
- 18.9. `show cps` — скорость создания новых сессий
- 18.10. `show statistic` — статистика сессий и пулов, значение Optimal (= 20%)
- 18.11. Счётчики: `show counters all` / `show counters div` (дельта за секунду)
- 18.12. Системный журнал: `show syslog`, ротация двух файлов
- 18.13. DPI-мониторинг
- 18.13.1. `show dpi records <N>` — содержимое DPI-листа
- 18.13.2. `show dpi state` — количество записей, дата последнего дампа
- 18.13.3. `dpi load <N>` — ручная загрузка списка
- 18.13.4. `dpi run` — принудительное обновление всех списков
- 18.13.5. `show dpi match <ресурс>` — проверка ресурса по всем DPI-листам
- 18.14. Ping и Traceroute (из конфигурационного режима)
### [19. Фильтр: обновление прошивки](chapters/19.md)
#### [19. Фильтр: обновление прошивки](docs/filter-firmware.md)
- 19.1. Два раздела: prim1 и prim2 (равнозначные) + FB (заводская)
- 19.2. `firmware status` — текущее состояние (cur / boot)
@@ -282,79 +199,48 @@
- 19.4. `firmware rollback` / `firmware reset`
- 19.5. Централизованное обновление через ЦСУ
### [20. Балансировщик: аппаратная платформа](chapters/20.md)
### Часть IV. Управление и блокировка
- 20.1. Одноюнитовый (32 порта QSFP28) и двухюнитовый (65 портов)
- 20.2. Скорости портов: 10G / 25G / 100G
- 20.3. Гидры (breakout): один QSFP28 → четыре SFP+ (10G)
- 20.4. Внутренняя архитектура
- 20.4.1. Микросервер (Intel, Linux) — CLI, конфигурация
- 20.4.2. Чип Barefoot Tofino — программируемая коммутация
- 20.4.3. BMC — управление аппаратной частью, сенсоры, блоки питания
- 20.4.4. Ethernet switch (5-портовый) — доступ к микросерверу и BMC
- 20.4.5. Console MUX — переключение консоли между компонентами
- 20.5. Передняя панель: Console, Management Ethernet, USB
#### [20. Сегмент управления ТСПУ](docs/management-segment.md)
### [21. Балансировщик: конфигурация](chapters/21.md)
- 20.1. Адресация: 10.<регион>.<площадка>.0/24
- 20.2. Распределение адресов: байпасы, балансировщики, BMC, фильтры, IPMI, SPFS, СПХД
- 20.3. Шлюз по умолчанию — криптошлюз «Континент»
- 20.4. Подсеть логирования (единая для всех ТСПУ)
- 21.1. CLI: операционный режим / конфигурационный режим (`edit`)
- 21.1.1. Интерфейс похож на Juniper CLI
- 21.1.2. `apply` — применить, `save` — сохранить в startup
- 21.2. Обновление прошивки: `call rdp firmware download` / `call rdp install`
- 21.2.1. Два раздела прошивок (A/B), автоматический rollback (3 попытки / 20 мин)
- 21.2.2. `call rdp firmware reset-tries`
- 21.3. Настройка физических портов
- 21.3.1. Имя порта, номер физического порта (number), линия (lane), скорость (speed)
- 21.3.2. 10G: указание lane (1–4), 100G: все lane задействованы
- 21.4. Настройка линков (объединение двух портов LAN+WAN в сторону оператора)
- 21.5. Настройка группы балансировки
- 21.5.1. Привязка групп портов в сторону фильтров (filter groups)
- 21.5.2. nat-unit-queues: количество ядер фильтра минус один
- 21.6. Профиль Keep-Alive (liveness profile)
- 21.6.1. Допустимая задержка, интервал, пороги потерь и восстановления
- 21.6.2. Минимальное количество активных пар
- 21.6.3. Перебалансировка: включение/выключение
- 21.7. Настройка фильтров (Flow rules)
- 21.7.1. Match-условия: VLAN, IPv4 src/dst, L4 port, MAC, MPLS, глубина тегов
- 21.7.2. Actions: `balancing-as mag-hash` → balance group / `bypass`
- 21.7.3. Приоритеты правил
- 21.7.4. Привязка фильтров к линкам
- 21.8. Настройка Heartbeat для GL Sun (пилотный проект)
- 21.9. Management-интерфейс: IP, маска, default gateway
#### [21. Центральная система управления (ЦСУ)](docs/central-management.md)
### [22. Балансировщик: мониторинг и диагностика](chapters/22.md)
- 21.1. Архитектура: две независимые площадки (основная и резервная)
- 21.2. Связь с ТСПУ через VPN (криптошлюз «Континент»)
- 21.3. Масштаб: ~350 площадок, ~5000 устройств
- 21.4. Подсистемы ЦСУ: формирование списков, мониторинг, логирование, картография
- 21.5. Новая ЦСУ для федерального проекта (замена уральской)
- 22.1. `show hardware info` — CPU, память, вентиляторы, БП, температура
- 22.2. `show mng if` — management-интерфейс
- 22.3. `show rdp firmware version` — версии прошивок, tries
- 22.4. Состояние портов и трансиверов: SFP-информация, DDM, статистика фреймов
- 22.5. Статистика правил фильтрации: счётчики пакетов/байт по каждому flow
- 22.6. Состояние группы балансировки
- 22.6.1. Статус filter groups: up/bypass
- 22.6.2. time-on-path — время прохождения keep-alive пакета
- 22.7. Программный байпас: индивидуально для каждой группы портов
#### [22. Распознавание протоколов и двухстадийная блокировка](docs/protocol-blocking.md)
### [23. Распознавание протоколов (DPI Engine)](chapters/23.md)
- 22.1. Многофакторный анализ сессий
- 22.2. Ложноположительные срабатывания
- 22.3. Обфускация и борьба с обходом блокировок
- 22.4. Двухстадийная блокировка: распознавание → очистка в ЦСУ → блокировка
- 22.5. Первый этап: распознавание протоколов на фильтрах (ТСПУ тип А)
- 22.6. Отправка логов на SPFS (сервер предварительного формирования списков)
- 22.7. Передача логов по GRPC в центральную систему управления
- 22.8. Анализ, очистка от ложных срабатываний, формирование списков
- 22.9. Загрузка очищенных списков обратно на фильтры (HTTP) и на Eco Highway (BGP)
- 22.10. Время полного цикла блокировки: ~5–15 минут
- 23.1. Многофакторный анализ сессий
- 23.1.1. Размеры пакетов и их вариации
- 23.1.2. Частота прохождения пакетов
- 23.1.3. Ключевые слова и паттерны внутри пакетов
- 23.1.4. Особенности анализа шифрованного трафика
- 23.2. Ложноположительные срабатывания
- 23.3. Двухстадийная блокировка: распознавание → очистка в ЦСУ → блокировка
- 23.4. Обфускация и борьба с обходом блокировок
### Часть V. Эксплуатация
### [24. Траблшутинг](chapters/24.md)
#### [23. Траблшутинг](docs/troubleshooting.md)
- 24.1. Общий подход к диагностике проблем доступности
- 24.2. Поиск сессии абонента: обход фильтров площадки
- 24.3. Проверка ресурса в DPI-листах: `show dpi match`
- 24.4. Программный байпас для исключения ТСПУ как причины проблемы
- 24.5. Исключение абонента из обработки: параметр No IP
- 24.6. Перепутки LAN/WAN и их диагностика
- 24.7. Взаимодействие с оператором связи
- 24.8. Ограничения: L2-устройство, невозможность генерации трафика с фильтра
- 23.1. Общий подход к диагностике проблем доступности
- 23.2. Поиск сессии абонента: обход фильтров площадки
- 23.3. Проверка ресурса в DPI-листах: `show dpi match`
- 23.4. Программный байпас для исключения ТСПУ как причины проблемы
- 23.5. Исключение абонента из обработки: параметр No IP
- 23.6. Перепутки LAN/WAN и их диагностика
- 23.7. Взаимодействие с оператором связи
- 23.8. Ограничения: L2-устройство, невозможность генерации трафика с фильтра
### [Бонус: Оборудование](tspu-equipment/README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [1. Введение и общая архитектура АСБИ](../docs/overview.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [2. Прохождение трафика через ТСПУ](../docs/traffic-flow.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [5. Байпас (Bypass)](../docs/bypass.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [6. Балансировщик: принцип работы](../docs/balancer.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [10. Фильтр: принцип работы](../docs/filter.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [3. Места установки ТСПУ в сети оператора](../docs/placement.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [4. Эшелонированная система (ТСПУ тип Б)](../docs/echelon.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [22. Распознавание протоколов и двухстадийная блокировка](../docs/protocol-blocking.md) (пункты 22.5–22.10).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [21. Центральная система управления (ЦСУ)](../docs/central-management.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [20. Сегмент управления ТСПУ](../docs/management-segment.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [11. Фильтр: аппаратная платформа](../docs/filter-platform.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [12. Фильтр: сессии и трансляции](../docs/filter-sessions.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [13. Фильтр: первоначальная настройка и CLI](../docs/filter-cli.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [14. Фильтр: конфигурация подсистем](../docs/filter-subsystems.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [15. Фильтр: настройка интерфейсов и общих параметров](../docs/filter-interfaces.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [16. Фильтр: ACL и пулы — запуск трафика на обработку](../docs/filter-acl-pools.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [17. Фильтр: настройка DPI](../docs/filter-dpi.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [18. Фильтр: мониторинг и диагностика](../docs/filter-monitoring.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [19. Фильтр: обновление прошивки](../docs/filter-firmware.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [7. Балансировщик: аппаратная платформа](../docs/balancer-platform.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [8. Балансировщик: конфигурация](../docs/balancer-config.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [9. Балансировщик: мониторинг и диагностика](../docs/balancer-monitoring.md).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [22. Распознавание протоколов и двухстадийная блокировка](../docs/protocol-blocking.md) (пункты 22.1–22.4).
[← Оглавление](../README.md)
+5
View File
@@ -0,0 +1,5 @@
# Раздел перенесён
Документация реорганизована. Материал этой страницы теперь находится в разделе [23. Траблшутинг](../docs/troubleshooting.md).
[← Оглавление](../README.md)
+31 -31
View File
@@ -1,12 +1,12 @@
# 21. Балансировщик: конфигурация
# 8. Балансировщик: конфигурация
[← Оглавление](../README.md) · [← Раздел 20: Балансировщик: аппаратная платформа](20.md)
[← Оглавление](../README.md) · [← Раздел 7: Балансировщик: аппаратная платформа](balancer-platform.md)
---
Настройка балансировщика (EcoFilter Balancer) начинается после установки прошивки и конфигурации сегмента управления. В отличие от фильтра, на балансировщике **нет дефолтной конфигурации** — все секции (порты, линки, группы балансировки, фильтры) необходимо создавать вручную.
## 21.1. CLI: операционный режим / конфигурационный режим (`edit`)
## 8.1. CLI: операционный режим / конфигурационный режим (`edit`)
CLI балансировщика, как и у фильтра, имеет **два режима** работы:
@@ -17,7 +17,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
> **Отличие от фильтра:** на фильтре для перехода в конфигурационный режим используется команда `config`, а на балансировщике — **`edit`**.
### 21.1.1. Интерфейс похож на Juniper CLI
### 8.1.1. Интерфейс похож на Juniper CLI
Интерфейс командной строки балансировщика **очень похож на CLI Juniper**. Настройки задаются с помощью команды `set`:
@@ -27,7 +27,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
Для тех, кто знаком с оборудованием Juniper, работа с CLI балансировщика не вызовет затруднений.
### 21.1.2. `apply` — применить, `save` — сохранить в startup
### 8.1.2. `apply` — применить, `save` — сохранить в startup
После внесения изменений их необходимо применить и сохранить:
@@ -51,7 +51,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
> **Важно:** в прошивке пилотного проекта (Урал) команда `apply` одновременно и применяла, и сохраняла конфигурацию в startup-config. В текущих (федеральных) прошивках это поведение изменено: `apply` только применяет, а для сохранения нужна отдельная команда `save`.
## 21.2. Обновление прошивки: `call rdp firmware download` / `call rdp install`
## 8.2. Обновление прошивки: `call rdp firmware download` / `call rdp install`
Обновление прошивки балансировщика выполняется в **два этапа** — скачивание и установка:
@@ -80,7 +80,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
| `call rdp firmware set-active` | Установить активную прошивку на указанный раздел |
| `show rdp firmware version` | Показать состояние прошивок (версия, активность, tries) |
### 21.2.1. Два раздела прошивок (A/B), автоматический rollback (3 попытки / 20 мин)
### 8.2.1. Два раздела прошивок (A/B), автоматический rollback (3 попытки / 20 мин)
Как и на фильтре, балансировщик хранит **два раздела** прошивок — **A** и **B**:
@@ -103,7 +103,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
> **Практический совет:** если вам нужно несколько раз перезагрузить балансировщик в короткий промежуток времени (например, для тестирования), помните о лимите в 3 перезагрузки. После третьей перезагрузки за короткий период прошивка будет признана нестабильной. Количество попыток и временной интервал **не настраиваются** — они зашиты в прошивке.
### 21.2.2. `call rdp firmware reset-tries`
### 8.2.2. `call rdp firmware reset-tries`
Для сброса счётчика попыток загрузки используется команда:
@@ -113,7 +113,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
Эта команда обнуляет значение **tries**, позволяя продолжить перезагрузки без риска автоматического переключения на другой раздел. В промышленной эксплуатации эта команда практически не требуется, но знать о ней полезно.
## 21.3. Настройка физических портов
## 8.3. Настройка физических портов
Настройка физических портов — это **первый шаг** конфигурации балансировщика. Поскольку дефолтной конфигурации нет, все порты необходимо создавать вручную.
@@ -135,7 +135,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
set ports p2-2 number 2 lane 2 speed 10g
```
### 21.3.1. Имя порта, номер физического порта (number), линия (lane), скорость (speed)
### 8.3.1. Имя порта, номер физического порта (number), линия (lane), скорость (speed)
Имя порта может быть **произвольным**, однако рекомендуется придерживаться единообразной схемы именования, отражающей номер физического порта и номер линии:
@@ -151,7 +151,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
| `p2-2` | 2 | 2 | 10G | Порт 2, линия 2 — второй 10G-канал |
| `p2` | 2 | — | 100G | Порт 2, все линии — 100G-канал |
### 21.3.2. 10G: указание lane (1–4), 100G: все lane задействованы
### 8.3.2. 10G: указание lane (1–4), 100G: все lane задействованы
Поведение параметра **lane** зависит от выбранной скорости:
@@ -178,7 +178,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
> **Рекомендация:** все физические порты настраиваются в соответствии со схемой организации связи на конкретной площадке. Единых «стандартных» настроек нет — конфигурация полностью зависит от того, какие устройства и на каких скоростях подключены к балансировщику.
## 21.4. Настройка линков (объединение двух портов LAN+WAN в сторону оператора)
## 8.4. Настройка линков (объединение двух портов LAN+WAN в сторону оператора)
**Линк** (link) в терминологии балансировщика — это объединение **двух портов** (LAN и WAN) в сторону оператора связи:
@@ -221,7 +221,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
> **Рекомендация:** в описании линка указывайте, к какому конкретно байпасу и к каким его интерфейсам подключён данный линк. Это значительно упрощает диагностику.
## 21.5. Настройка группы балансировки
## 8.5. Настройка группы балансировки
После настройки портов и линков необходимо создать **группу балансировки** (balance group) и привязать к ней группы портов в сторону фильтров.
@@ -239,7 +239,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
(liveness)
```
### 21.5.1. Привязка групп портов в сторону фильтров (filter groups)
### 8.5.1. Привязка групп портов в сторону фильтров (filter groups)
К группе балансировки привязываются **filter groups** — пары портов (LAN + WAN) в сторону фильтров:
@@ -256,7 +256,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
Каждая filter group объединяет один LAN-порт и один WAN-порт, смотрящие в сторону конкретной пары интерфейсов фильтра.
### 21.5.2. nat-unit-queues: количество ядер фильтра минус один
### 8.5.2. nat-unit-queues: количество ядер фильтра минус один
Параметр **`nat-unit-queues`** сообщает балансировщику количество ядер на подключённых фильтрах, которые участвуют в обработке трафика:
@@ -276,7 +276,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
Этот параметр **напрямую влияет на балансировку** — балансировщик распределяет трафик не только между фильтрами, но и между их ядрами, обеспечивая равномерную нагрузку. В новых версиях ПО число ядер задаётся в настройках группы балансировки (параметр `cores`).
## 21.6. Профиль Keep-Alive (liveness profile)
## 8.6. Профиль Keep-Alive (liveness profile)
К группе балансировки привязывается **профиль Keep-Alive** (liveness profile, параметр группы `liveness-profile`), определяющий параметры отправки keep-alive-пакетов через группы портов в сторону фильтров.
@@ -290,11 +290,11 @@ CLI балансировщика, как и у фильтра, имеет **дв
set liveness profile <имя_профиля> probes-up-count <число>
```
### 21.6.1. Допустимая задержка, интервал, пороги потерь и восстановления
### 8.6.1. Допустимая задержка, интервал, пороги потерь и восстановления
| Параметр | Описание |
| -------------------------- | -------------------------------------------------------------------- |
| **`initial-delay`** | По руководству производителя — максимально допустимая задержка между keep-alive-пакетами, при превышении которой срабатывает счётчик потерь; по эксплуатационным описаниям — пауза перед началом отправки keep-alive после поднятия интерфейсов, чтобы фильтр успел их инициализировать (например, 1000 мс). Подробнее — [раздел 4.6.1](04.md) |
| **`initial-delay`** | По руководству производителя — максимально допустимая задержка между keep-alive-пакетами, при превышении которой срабатывает счётчик потерь; по эксплуатационным описаниям — пауза перед началом отправки keep-alive после поднятия интерфейсов, чтобы фильтр успел их инициализировать (например, 1000 мс). Подробнее — [раздел 6.6.1](balancer.md) |
| **`interval`** | Периодичность отправки keep-alive-пакетов, мс (например, 100) |
| **`probes-down-count`** | Количество последовательно потерянных пакетов, после которых filter group считается **неактивной** (например, 5) |
| **`probes-up-count`** | Количество последовательно полученных ответов, после которых неактивная filter group снова считается **активной** (например, 5) |
@@ -303,15 +303,15 @@ CLI балансировщика, как и у фильтра, имеет **дв
При потере заданного количества последовательных пакетов filter group переводится в состояние **bypass** — трафик не отправляется на фильтр, а перекладывается из одного порта в другой на уровне логики балансировщика.
### 21.6.2. Минимальное количество активных пар
### 8.6.2. Минимальное количество активных пар
Параметр **минимальное количество активных пар** (`active-pairs`) определяет, при каком количестве рабочих filter groups вся группа балансировки **целиком** считается активной.
Пример: если задано значение 8, то группа балансировки будет считаться рабочей, пока хотя бы 8 filter groups активны — неважно, сколько их всего.
> **Уральский пилотный проект:** минимальное количество активных пар было установлено **равным общему количеству** пар в сторону фильтров. В результате при потере хотя бы одного интерфейса вся группа балансировки переходила в неактивное состояние, балансировщик прекращал отправку heartbeat на байпас GL Sun, и тот переводил линки в аппаратный байпас с флапом у оператора ([раздел 3.3.1](03.md)). Весь трафик ТСПУ снимался из-за одного упавшего интерфейса. Такое поведение **не обязательно** — значение можно настроить более гибко.
> **Уральский пилотный проект:** минимальное количество активных пар было установлено **равным общему количеству** пар в сторону фильтров. В результате при потере хотя бы одного интерфейса вся группа балансировки переходила в неактивное состояние, балансировщик прекращал отправку heartbeat на байпас GL Sun, и тот переводил линки в аппаратный байпас с флапом у оператора ([раздел 5.3.1](bypass.md)). Весь трафик ТСПУ снимался из-за одного упавшего интерфейса. Такое поведение **не обязательно** — значение можно настроить более гибко.
### 21.6.3. Перебалансировка: включение/выключение
### 8.6.3. Перебалансировка: включение/выключение
Параметр **перебалансировки** (`rebalance`, значения enable/disable) задаётся в настройках группы балансировки, а не в профиле Keep-Alive, и определяет, что происходит при выходе из строя одной из filter groups:
@@ -324,16 +324,16 @@ CLI балансировщика, как и у фильтра, имеет **дв
> **Рекомендация:** в федеральном проекте перебалансировку планируется **отключить**. При потере filter group для конкретной пары интерфейсов включается **программный bypass** — трафик не отправляется на фильтр, а перекладывается из LAN-порта в WAN-порт и наоборот. Последствия минимальны: небольшая часть трафика временно не фильтруется. Это меньшее зло, чем флапание линков или массовый переезд сессий при перебалансировке. Система мониторинга получает уведомления (логи, SNMP traps), и проблема устраняется вручную.
## 21.7. Настройка фильтров (Flow rules)
## 8.7. Настройка фильтров (Flow rules)
**Фильтр** на балансировщике — именованный набор правил (flows), который привязывается к линкам в сторону оператора (параметр `apply-to-links`, [раздел 21.7.4](#2174-привязка-фильтров-к-линкам)). Каждое правило состоит из условия (match) и действия (action); порядок проверки задаёт приоритет (priority, [раздел 21.7.3](#2173-приоритеты-правил)):
**Фильтр** на балансировщике — именованный набор правил (flows), который привязывается к линкам в сторону оператора (параметр `apply-to-links`, [раздел 8.7.4](#874-привязка-фильтров-к-линкам)). Каждое правило состоит из условия (match) и действия (action); порядок проверки задаёт приоритет (priority, [раздел 8.7.3](#873-приоритеты-правил)):
| Часть | Описание |
| ---------- | ----------------------------------------------------------- |
| **Match** | Условия, по которым отбирается трафик (заголовки пакетов) |
| **Action** | Действие с пакетом при совпадении |
### 21.7.1. Match-условия: VLAN, IPv4 src/dst, L4 port, MAC, MPLS, глубина тегов
### 8.7.1. Match-условия: VLAN, IPv4 src/dst, L4 port, MAC, MPLS, глубина тегов
Доступные условия для match-секции:
@@ -351,7 +351,7 @@ CLI балансировщика, как и у фильтра, имеет **дв
Match-условия можно использовать как для **включения** трафика в обработку, так и для **исключения** определённого трафика.
### 21.7.2. Actions: `balancing-as mag-hash` → balance group / `bypass`
### 8.7.2. Actions: `balancing-as mag-hash` → balance group / `bypass`
Действие (action) определяет, что происходит с пакетом при совпадении:
@@ -383,7 +383,7 @@ Match-условия можно использовать как для **вкл
set filters main flows default-bypass priority 1
```
### 21.7.3. Приоритеты правил
### 8.7.3. Приоритеты правил
Каждому правилу назначается **приоритет** (priority), определяющий порядок обработки. Пакет проверяется по правилам в порядке убывания приоритета — от **высшего** к **низшему**. Первое совпавшее правило определяет действие.
@@ -403,7 +403,7 @@ Match-условия можно использовать как для **вкл
> **Применение для диагностики:** при траблшутинге можно создать правило с высоким приоритетом, которое перехватывает трафик конкретного VLAN и выполняет action `bypass`. Это позволяет исключить конкретный трафик из обработки фильтрами и проверить, влияет ли ТСПУ на проблему. По статистике правила (количество пакетов/байт) можно убедиться, что трафик действительно проходит через это правило.
### 21.7.4. Привязка фильтров к линкам
### 8.7.4. Привязка фильтров к линкам
После настройки правил необходимо **привязать фильтр к линкам** — указать, на каких линках (в сторону оператора) данные правила будут действовать:
@@ -419,7 +419,7 @@ Match-условия можно использовать как для **вкл
Один набор правил (фильтр) может быть привязан к **нескольким линкам** одновременно. Все линки, привязанные к фильтру, используют одни и те же flow rules.
## 21.8. Настройка Heartbeat для GL Sun (пилотный проект)
## 8.8. Настройка Heartbeat для GL Sun (пилотный проект)
Данная настройка актуальна **только для пилотного проекта на Урале**, где используются байпасы GL Sun. В федеральном проекте с байпасами Silicom эта настройка **не требуется** — Silicom самостоятельно генерирует и проверяет heartbeat-пакеты.
@@ -441,7 +441,7 @@ Heartbeat-пакеты отправляются только при услови
> **Примечание:** с байпасами Silicom логика работы другая — Silicom самостоятельно отсылает heartbeat и проверяет доступность интерфейсов, а балансировщик прозрачно пропускает эти пакеты между своими портами.
## 21.9. Management-интерфейс: IP, маска, default gateway
## 8.9. Management-интерфейс: IP, маска, default gateway
Настройка management-интерфейса балансировщика выполняется аналогично другим сетевым устройствам:
@@ -453,7 +453,7 @@ Heartbeat-пакеты отправляются только при услови
Management-интерфейс обеспечивает доступ к устройству по SSH и используется для управления, мониторинга и взаимодействия с ЦСУ.
> **Напоминание:** management Ethernet работает **только** на скорости 1 Гбит/с (см. [раздел 20.2](20.md)).
> **Напоминание:** management Ethernet работает **только** на скорости 1 Гбит/с (см. [раздел 7.2](balancer-platform.md)).
---
@@ -485,4 +485,4 @@ Management-интерфейс обеспечивает доступ к устр
---
[← Оглавление](../README.md) · [← Раздел 20: Балансировщик: аппаратная платформа](20.md) · [Раздел 22: Балансировщик: мониторинг и диагностика →](22.md)
[← Оглавление](../README.md) · [← Раздел 7: Балансировщик: аппаратная платформа](balancer-platform.md) · [Раздел 9: Балансировщик: мониторинг и диагностика →](balancer-monitoring.md)
+16 -16
View File
@@ -1,12 +1,12 @@
# 22. Балансировщик: мониторинг и диагностика
# 9. Балансировщик: мониторинг и диагностика
[← Оглавление](../README.md) · [← Раздел 21: Балансировщик: конфигурация](21.md)
[← Оглавление](../README.md) · [← Раздел 8: Балансировщик: конфигурация](balancer-config.md)
---
Балансировщик предоставляет набор команд для мониторинга аппаратного состояния, проверки прошивок, диагностики портов, анализа правил фильтрации и контроля групп балансировки. Все команды мониторинга выполняются в **операционном режиме**.
## 22.1. `show hardware info` — CPU, память, вентиляторы, БП, температура
## 9.1. `show hardware info` — CPU, память, вентиляторы, БП, температура
Команда `show hardware info` с различными ключевыми словами отображает состояние аппаратных компонентов балансировщика:
@@ -21,9 +21,9 @@
Для быстрой проверки общего состояния платформы удобно использовать `show hardware info all` — команда выводит полную картину по всем аппаратным подсистемам.
> **Практический случай:** именно через мониторинг температурных датчиков была выявлена проблема с зависаниями балансировщиков весной — BMC некорректно считывал показания датчика, ошибочно определял перегрев и выключал микросервер (подробнее — в [разделе 20.4.3](20.md)).
> **Практический случай:** именно через мониторинг температурных датчиков была выявлена проблема с зависаниями балансировщиков весной — BMC некорректно считывал показания датчика, ошибочно определял перегрев и выключал микросервер (подробнее — в [разделе 7.4.3](balancer-platform.md)).
## 22.2. `show mng if` — management-интерфейс
## 9.2. `show mng if` — management-интерфейс
Команда `show mng if` отображает текущее состояние management-интерфейса:
@@ -34,7 +34,7 @@
Команда полезна для быстрой проверки параметров управления после настройки или перезагрузки устройства.
## 22.3. `show rdp firmware version` — версии прошивок, tries
## 9.3. `show rdp firmware version` — версии прошивок, tries
Команда `show rdp firmware version` выводит полную информацию о состоянии прошивок:
@@ -63,11 +63,11 @@
В нормальном состоянии **Tries = 0**. Ненулевое значение означает, что балансировщик предпринимал неудачные попытки загрузки с этого раздела.
Если балансировщик **более 3 раз подряд** за ~20 минут не смог загрузиться с определённого раздела, прошивка считается **ненадёжной** и происходит автоматический rollback на другой раздел (подробнее — в [разделе 21.2.1](21.md)).
Если балансировщик **более 3 раз подряд** за ~20 минут не смог загрузиться с определённого раздела, прошивка считается **ненадёжной** и происходит автоматический rollback на другой раздел (подробнее — в [разделе 8.2.1](balancer-config.md)).
Для сброса счётчика используется команда `call rdp firmware reset-tries`.
## 22.4. Состояние портов и трансиверов: SFP-информация, DDM, статистика фреймов
## 9.4. Состояние портов и трансиверов: SFP-информация, DDM, статистика фреймов
### Информация о трансиверах
@@ -104,7 +104,7 @@
Эта статистика полезна при диагностике проблем с физическим подключением — ошибки на уровне фреймов могут указывать на проблемы с кабелями, трансиверами или несовместимость оборудования.
## 22.5. Статистика правил фильтрации: счётчики пакетов/байт по каждому flow
## 9.5. Статистика правил фильтрации: счётчики пакетов/байт по каждому flow
По каждому правилу фильтрации (flow rule) балансировщик ведёт **счётчики пакетов и байт**, прошедших через данное правило:
@@ -137,7 +137,7 @@
> **Важно:** после завершения диагностики не забудьте **удалить временное правило** и применить конфигурацию.
## 22.6. Состояние группы балансировки
## 9.6. Состояние группы балансировки
Команда для просмотра состояния группы балансировки:
@@ -147,7 +147,7 @@
Вывод показывает общее состояние группы и статус каждой filter group внутри неё.
### 22.6.1. Статус filter groups: up/bypass
### 9.6.1. Статус filter groups: up/bypass
Каждая filter group (пара портов в сторону фильтра) может находиться в одном из двух состояний:
@@ -160,7 +160,7 @@
Переход в `bypass` происходит автоматически при потере заданного количества последовательных keep-alive пакетов (параметр `probes-down-count`, в типовой конфигурации — 5). Обратный переход в `up` также автоматический — при получении достаточного количества ответных keep-alive пакетов.
### 22.6.2. time-on-path — время прохождения keep-alive пакета
### 9.6.2. time-on-path — время прохождения keep-alive пакета
Внутри каждой filter group отображается параметр **`time-on-path`** — время прохождения keep-alive пакета через фильтр (отдельно для направлений to-lan и to-wan):
@@ -184,7 +184,7 @@
Например, time-on-path может составлять около 27 000 нс (27 мкс); конкретное значение зависит от площадки.
> **Важно:** балансировщик **ничего не знает** о работе DPI на фильтрах. Keep-alive-пакеты проходят через фильтр без обработки движком DPI. Параметр `time-on-path` отражает время прохождения пакета от балансировщика через фильтр и обратно, включая первую проверку («IP-пакет или нет»), которую выполняет процессор фильтра ([раздел 4.6.1](04.md)).
> **Важно:** балансировщик **ничего не знает** о работе DPI на фильтрах. Keep-alive-пакеты проходят через фильтр без обработки движком DPI. Параметр `time-on-path` отражает время прохождения пакета от балансировщика через фильтр и обратно, включая первую проверку («IP-пакет или нет»), которую выполняет процессор фильтра ([раздел 6.6.1](balancer.md)).
Если пакеты начинают теряться — time-on-path резко возрастает. После потери **5 последовательных** keep-alive пакетов filter group переводится в состояние `bypass`.
@@ -199,7 +199,7 @@
Система мониторинга должна отслеживать загрузку таблиц на фильтрах и сигнализировать о приближении к пороговым значениям **до** того, как начнутся проблемы с keep-alive.
## 22.7. Программный байпас: индивидуально для каждой группы портов
## 9.7. Программный байпас: индивидуально для каждой группы портов
Программный bypass на балансировщике может управляться как **автоматически** (по результатам keep-alive — для отдельных filter groups), так и **вручную** — для группы балансировки целиком:
@@ -235,7 +235,7 @@
| **Согласование с оператором** | Требуется (работы, окна обслуживания) | **Не требуется** — оператор ничего не замечает |
| **Последствия** | Весь трафик не фильтруется | Не фильтруется **только часть** трафика |
> **Примечание:** сравнение приведено для оптического байпаса GL Sun. У байпасов Silicom переключение сегмента в TAP или Active Bypass выполняется без флапа линков и применяется к отдельному каналу, однако оно так же полностью снимает канал с фильтрации — см. [раздел 3.2.6](03.md).
> **Примечание:** сравнение приведено для оптического байпаса GL Sun. У байпасов Silicom переключение сегмента в TAP или Active Bypass выполняется без флапа линков и применяется к отдельному каналу, однако оно так же полностью снимает канал с фильтрации — см. [раздел 5.2.6](bypass.md).
> **Опыт эксплуатации:** такое поведение было опробовано при тестировании эшелонированной системы в Сургуте. Вместо переключения трафика на оптическом байпасе (что вызывает флапы линков и недовольство оператора) использовался программный bypass на балансировщике — одной командой трафик уводился с фильтров без каких-либо видимых последствий для оператора.
@@ -262,4 +262,4 @@
---
[← Оглавление](../README.md) · [← Раздел 21: Балансировщик: конфигурация](21.md) · [Раздел 23: Распознавание протоколов (DPI Engine) →](23.md)
[← Оглавление](../README.md) · [← Раздел 8: Балансировщик: конфигурация](balancer-config.md) · [Раздел 10: Фильтр: принцип работы →](filter.md)
+13 -13
View File
@@ -1,12 +1,12 @@
# 20. Балансировщик: аппаратная платформа
# 7. Балансировщик: аппаратная платформа
[← Оглавление](../README.md) · [← Раздел 19: Фильтр: обновление прошивки](19.md)
[← Оглавление](../README.md) · [← Раздел 6: Балансировщик: принцип работы](balancer.md)
---
Балансировщик (EcoFilter Balancer) — устройство, обеспечивающее распределение трафика между фильтрами и их отказоустойчивость. Аппаратная платформа **одинакова** как для EcoFilter Balancer, так и для Eco Highway (эшелонированная система) — различия только в программной части.
## 20.1. Одноюнитовый (32 порта QSFP28) и двухюнитовый (65 портов)
## 7.1. Одноюнитовый (32 порта QSFP28) и двухюнитовый (65 портов)
Балансировщик выпускается в двух форм-факторах:
@@ -23,7 +23,7 @@
- **Питание** — два блока питания с горячим резервированием (расположены на задней панели);
- **Высота** — 1U.
## 20.2. Скорости портов: 10G / 25G / 100G
## 7.2. Скорости портов: 10G / 25G / 100G
Порты QSFP28 поддерживают работу на различных скоростях в зависимости от конфигурации и типа установленных трансиверов:
@@ -39,7 +39,7 @@
> **Примечание:** management-интерфейс работает **только** на скорости 1 Гбит/с Ethernet. Скорости 10 и 100 Мбит/с не поддерживаются.
## 20.3. Гидры (breakout): один QSFP28 → четыре SFP+ (10G)
## 7.3. Гидры (breakout): один QSFP28 → четыре SFP+ (10G)
Для подключения 10-гигабитных интерфейсов используются **гидры** (breakout-кабели) — разветвители, преобразующие один порт QSFP28 в четыре порта SFP+ (10G):
@@ -61,7 +61,7 @@
При использовании гидры в одном физическом QSFP28-разъёме появляется **до четырёх** независимых портов по 10 Гбит/с. Каждый из этих портов конфигурируется отдельно с указанием номера линии (lane).
## 20.4. Внутренняя архитектура
## 7.4. Внутренняя архитектура
Внутренняя архитектура балансировщика включает несколько ключевых компонентов, связанных между собой:
@@ -92,7 +92,7 @@
└──────────────────────────────────────────────────┘
```
### 20.4.1. Микросервер (Intel, Linux) — CLI, конфигурация
### 7.4.1. Микросервер (Intel, Linux) — CLI, конфигурация
**Микросервер** — основной «мозг» балансировщика, с которым взаимодействует оператор:
@@ -105,7 +105,7 @@
Микросервер не обрабатывает трафик напрямую — он только управляет чипом коммутации.
### 20.4.2. Чип Barefoot Tofino — программируемая коммутация
### 7.4.2. Чип Barefoot Tofino — программируемая коммутация
**Barefoot Tofino** — высокопроизводительный программируемый чип, обеспечивающий коммутацию трафика на скорости провода:
@@ -116,7 +116,7 @@
Все операции с трафиком (балансировка между фильтрами, программный байпас, фильтрация по flow rules) выполняются **внутри чипа Tofino** без участия микросервера.
### 20.4.3. BMC — управление аппаратной частью, сенсоры, блоки питания
### 7.4.3. BMC — управление аппаратной частью, сенсоры, блоки питания
**BMC** (Baseboard Management Controller) — модуль управления аппаратной платформой:
@@ -132,7 +132,7 @@
- Через **внешнюю консоль** (при определённых настройках Console MUX);
- Через **Management Ethernet** (один порт обеспечивает доступ и к микросерверу, и к BMC).
### 20.4.4. Ethernet switch (5-портовый) — доступ к микросерверу и BMC
### 7.4.4. Ethernet switch (5-портовый) — доступ к микросерверу и BMC
Внутри балансировщика расположен **5-портовый Ethernet-коммутатор**, к которому подключены:
@@ -142,7 +142,7 @@
Благодаря этому коммутатору **один внешний Ethernet-порт** обеспечивает доступ одновременно к микросерверу и BMC — каждый на своём IP-адресе.
### 20.4.5. Console MUX — переключение консоли между компонентами
### 7.4.5. Console MUX — переключение консоли между компонентами
**Console MUX** — мультиплексор консольного порта, позволяющий переключать физическую консоль между различными внутренними компонентами:
@@ -151,7 +151,7 @@
> **Внимание:** скорость консольного порта может различаться в зависимости от того, к какому компоненту вы подключены. Если подключение к BMC — может быть одна скорость, к микросерверу — другая. На новых устройствах иногда приходится **подбирать скорость** консольного соединения.
## 20.5. Передняя панель: Console, Management Ethernet, USB
## 7.5. Передняя панель: Console, Management Ethernet, USB
На передней панели балансировщика расположены:
@@ -172,4 +172,4 @@
---
[← Оглавление](../README.md) · [← Раздел 19: Фильтр: обновление прошивки](19.md) · [Раздел 21: Балансировщик: конфигурация →](21.md)
[← Оглавление](../README.md) · [← Раздел 6: Балансировщик: принцип работы](balancer.md) · [Раздел 8: Балансировщик: конфигурация →](balancer-config.md)
+60 -60
View File
@@ -1,28 +1,28 @@
# 4. Балансировщик (EcoFilter Balancer)
# 6. Балансировщик: принцип работы
[← Оглавление](../README.md) · [← Раздел 3: Байпас](03.md)
[← Оглавление](../README.md) · [← Раздел 5: Байпас](bypass.md)
---
## 4.1. Назначение: распределение трафика по фильтрам
## 6.1. Назначение: распределение трафика по фильтрам
Балансировщик (EcoFilter Balancer) — это **высокопроизводительный программируемый коммутатор**. Его основная задача — принимать трафик операторских каналов от байпасов и **равномерно распределять** его по подключённым фильтрам, а внутри каждого фильтра — по его процессорным ядрам. Для сети оператора балансировщик, как и остальное оборудование ТСПУ, прозрачен на уровне L2.
Помимо балансировки, балансировщик выполняет следующие функции:
- **согласование скоростей** — операторские каналы (как правило, 10G и 100G) распределяются по портам фильтров, которые в проекте в большинстве случаев подключаются интерфейсами 10G. Число фильтров определяется только объёмом трафика, поэтому число портов в сторону фильтров не совпадает с числом операторских каналов;
- **исключение служебного трафика** — возврат оператору без обработки трафика, который не нужно отправлять на фильтры (правила с действием bypass, [раздел 4.4](#44-фильтры-на-балансировщике-flow-rules));
- **исключение служебного трафика** — возврат оператору без обработки трафика, который не нужно отправлять на фильтры (правила с действием bypass, [раздел 6.4](#64-фильтры-на-балансировщике-flow-rules));
- **контроль доступности фильтров** — отправка keep-alive-пакетов через каждую пару портов в сторону фильтров;
- **программный байпас** — вывод из обработки отдельной пары портов или всех фильтров сразу без флапа линков у оператора;
- **прозрачный пропуск heartbeat-пакетов** байпаса Silicom между парными портами линка ([раздел 3.4](03.md)).
- **прозрачный пропуск heartbeat-пакетов** байпаса Silicom между парными портами линка ([раздел 5.4](bypass.md)).
Балансировщик работает только с заголовками пакетов уровней L2–L4 и **ничего не знает** о том, что происходит на фильтрах: распознавание протоколов, DPI-листы и блокировки его не касаются. По документации производителя он поддерживает также прозрачный режим с зеркалированием: трафик пропускается мимо фильтров, а на фильтры отправляется только копия. В проекте фильтры в режиме копии трафика не используются; для вывода фильтров из обработки служит программный байпас ([раздел 4.6.2](#462-программный-байпас-при-потере-группы-портов)).
Балансировщик работает только с заголовками пакетов уровней L2–L4 и **ничего не знает** о том, что происходит на фильтрах: распознавание протоколов, DPI-листы и блокировки его не касаются. По документации производителя он поддерживает также прозрачный режим с зеркалированием: трафик пропускается мимо фильтров, а на фильтры отправляется только копия. В проекте фильтры в режиме копии трафика не используются; для вывода фильтров из обработки служит программный байпас ([раздел 6.6.2](#662-программный-байпас-при-потере-группы-портов)).
В ТСПУ тип А используется балансировщик **EcoFilter Balancer**; в эшелонированной системе (ТСПУ тип Б) на той же аппаратной платформе работает балансировщик с другим программным обеспечением — **Eco Highway** ([раздел 7](07.md)). Количество балансировщиков на площадке определяется количеством каналов связи оператора и объёмом трафика. В простейшей конфигурации — один-два канала и один фильтр — балансировщик не нужен, и байпас подключается к фильтру напрямую ([раздел 2.3](02.md)).
В ТСПУ тип А используется балансировщик **EcoFilter Balancer**; в эшелонированной системе (ТСПУ тип Б) на той же аппаратной платформе работает балансировщик с другим программным обеспечением — **Eco Highway** ([раздел 4](echelon.md)). Количество балансировщиков на площадке определяется количеством каналов связи оператора и объёмом трафика. В простейшей конфигурации — один-два канала и один фильтр — балансировщик не нужен, и байпас подключается к фильтру напрямую ([раздел 2.3](traffic-flow.md)).
С завода балансировщик поставляется с заводской (factory) прошивкой ограниченной функциональности и базовой версией рабочей прошивки, но **без рабочей конфигурации**. После установки нужной версии прошивки и настройки сегмента управления в конфигурации нет ни линков, ни групп балансировки, ни правил, а все используемые порты нужно настроить самостоятельно — всё это создаётся при проектировании конкретного узла ([раздел 21](21.md)).
С завода балансировщик поставляется с заводской (factory) прошивкой ограниченной функциональности и базовой версией рабочей прошивки, но **без рабочей конфигурации**. После установки нужной версии прошивки и настройки сегмента управления в конфигурации нет ни линков, ни групп балансировки, ни правил, а все используемые порты нужно настроить самостоятельно — всё это создаётся при проектировании конкретного узла ([раздел 8](balancer-config.md)).
## 4.2. Аппаратная платформа: 32-портовый, 1U, пропускная способность 3.2 Тбит/с
## 6.2. Аппаратная платформа: 32-портовый, 1U, пропускная способность 3.2 Тбит/с
| Параметр | Значение |
| -------------------------- | --------------------------------------------------------------------------------- |
@@ -37,9 +37,9 @@
Каждый порт QSFP28 состоит из четырёх линий (lane) по 25 Гбит/с. На скорости 100G задействованы все четыре линии; если настроить каждую линию отдельно на 10G, один физический порт даёт до четырёх портов 10G. Для их подключения используются **«гидры»** — breakout-кабели QSFP → 4 × SFP+, оптические или DAC.
Внутри чипа Tofino — два независимых конвейера (pipeline) со своими ресурсами, каждый обслуживает свою половину портов. На EcoFilter Balancer оба конвейера настроены одинаково, поэтому к какому из них относится порт, значения не имеет — в отличие от Eco Highway ([раздел 7.4](07.md)). Подробно аппаратная часть описана в [разделе 20](20.md).
Внутри чипа Tofino — два независимых конвейера (pipeline) со своими ресурсами, каждый обслуживает свою половину портов. На EcoFilter Balancer оба конвейера настроены одинаково, поэтому к какому из них относится порт, значения не имеет — в отличие от Eco Highway ([раздел 4.4](echelon.md)). Подробно аппаратная часть описана в [разделе 7](balancer-platform.md).
## 4.3. Организация портов: пары LAN/WAN, линки
## 6.3. Организация портов: пары LAN/WAN, линки
Все порты балансировщика логически делятся на две группы:
@@ -73,32 +73,32 @@
Фильтр 1: te2/te1 Фильтр 1: te4/te3
```
### 4.3.1. Принцип чётных/нечётных портов
### 6.3.1. Принцип чётных/нечётных портов
На фильтрах разделение портов жёсткое: в каждой паре чётный порт — LAN, нечётный — WAN ([раздел 11.5](11.md)). На балансировщике жёсткой привязки нет — порт становится LAN или WAN только при настройке линка или filter group. Для однозначности при проектировании принят тот же принцип, что и на фильтрах:
На фильтрах разделение портов жёсткое: в каждой паре чётный порт — LAN, нечётный — WAN ([раздел 11.5](filter-platform.md)). На балансировщике жёсткой привязки нет — порт становится LAN или WAN только при настройке линка или filter group. Для однозначности при проектировании принят тот же принцип, что и на фильтрах:
- **чётные** порты — **LAN** (в сторону абонентов);
- **нечётные** порты — **WAN** (в сторону интернета).
Для 10-гигабитных портов чётность определяется по номеру линии: p4-2 — LAN, парный ему p4-1 — WAN. У 100-гигабитных портов номера линии нет, и определяющим является номер порта: p10 — LAN, p9 — WAN. Принцип действует как для портов в сторону операторского оборудования, так и для портов в сторону фильтров. На балансировщике Eco Highway он не соблюдается: там LAN- и WAN-порты разнесены по разным конвейерам ([раздел 7.4.1](07.md)).
Для 10-гигабитных портов чётность определяется по номеру линии: p4-2 — LAN, парный ему p4-1 — WAN. У 100-гигабитных портов номера линии нет, и определяющим является номер порта: p10 — LAN, p9 — WAN. Принцип действует как для портов в сторону операторского оборудования, так и для портов в сторону фильтров. На балансировщике Eco Highway он не соблюдается: там LAN- и WAN-порты разнесены по разным конвейерам ([раздел 4.4.1](echelon.md)).
### 4.3.2. Жёсткая привязка: трафик возвращается в тот же линк
### 6.3.2. Жёсткая привязка: трафик возвращается в тот же линк
Пакет, вошедший в LAN-порт линка, после обработки выходит только через WAN-порт того же линка, и наоборот: вошедший через p4-2 выйдет только через p4-1, вошедший через p4-1 — только через p4-2. Ни в какой другой порт пакет попасть не может — это сделано специально, чтобы пакеты разных линков никогда не смешивались.
Это правило обеспечивает **прозрачность ТСПУ** для сети оператора: если оператор отправил пакет в конкретный канал, ТСПУ вернёт его в продолжение того же канала, независимо от того, каким фильтром пакет был обработан. Механизм — служебный 4-байтный заголовок, по которому балансировщик узнаёт исходный линк вернувшегося от фильтра пакета ([раздел 4.5.3](#453-дополнительный-4-байтный-заголовок-для-фильтров)).
Это правило обеспечивает **прозрачность ТСПУ** для сети оператора: если оператор отправил пакет в конкретный канал, ТСПУ вернёт его в продолжение того же канала, независимо от того, каким фильтром пакет был обработан. Механизм — служебный 4-байтный заголовок, по которому балансировщик узнаёт исходный линк вернувшегося от фильтра пакета ([раздел 6.5.3](#653-дополнительный-4-байтный-заголовок-для-фильтров)).
### 4.3.3. Асимметричный трафик: все линки — на один балансировщик
### 6.3.3. Асимметричный трафик: все линки — на один балансировщик
Оба направления каждого потока должны попадать на один и тот же фильтр и одно его ядро; проще всего это обеспечить, когда оба направления проходят через один и тот же балансировщик. Поэтому на один балансировщик заводятся все линки, по которым могут идти прямое и обратное направления одного и того же трафика. В частности, все каналы одного агрегированного линка (LAG) оператора приходят на один балансировщик: оборудование оператора с каждой стороны распределяет потоки по каналам агрегата своим хэшем, и прямое и обратное направления одной сессии могут оказаться в разных каналах. Поэтому при проектировании узла у оператора выясняют, какие каналы входят в агрегаты.
Речь идёт о случае, когда оба направления проходят через ТСПУ, но по разным каналам. Если одно из направлений вообще минует ТСПУ, тип А такой трафик обработать не может — для этого предназначена эшелонированная система ([раздел 7.2](07.md)).
Речь идёт о случае, когда оба направления проходят через ТСПУ, но по разным каналам. Если одно из направлений вообще минует ТСПУ, тип А такой трафик обработать не может — для этого предназначена эшелонированная система ([раздел 4.2](echelon.md)).
Если одного балансировщика недостаточно, применяется перекрёстная (кроссированная) схема с несколькими балансировщиками, к которым подключены одни и те же фильтры. Чтобы поток попадал на один и тот же фильтр и одно ядро, на какой бы балансировщик он ни пришёл, группы балансировки на всех балансировщиках такой схемы настраиваются одинаково — те же фильтры в том же порядке, то же число ядер; в новых версиях ПО для сверки предусмотрена контрольная сумма конфигурации группы балансировки (`show ecofilter-balancer balancing-config-hash`). В эшелонированной системе такая схема может не подойти, поскольку фильтры там подключаются по схеме on-a-stick ([раздел 7.3.3](07.md)).
Если одного балансировщика недостаточно, применяется перекрёстная (кроссированная) схема с несколькими балансировщиками, к которым подключены одни и те же фильтры. Чтобы поток попадал на один и тот же фильтр и одно ядро, на какой бы балансировщик он ни пришёл, группы балансировки на всех балансировщиках такой схемы настраиваются одинаково — те же фильтры в том же порядке, то же число ядер; в новых версиях ПО для сверки предусмотрена контрольная сумма конфигурации группы балансировки (`show ecofilter-balancer balancing-config-hash`). В эшелонированной системе такая схема может не подойти, поскольку фильтры там подключаются по схеме on-a-stick ([раздел 4.3.3](echelon.md)).
## 4.4. Фильтры на балансировщике (Flow rules)
## 6.4. Фильтры на балансировщике (Flow rules)
> **Примечание о версиях ПО.** Имена параметров в этой главе — группы балансировки (`balance-groups`) с парами портов `filter-group`, наборы правил `filters` с привязкой `apply-to-links`, действие `balancing-as mag-hash` с `to-balance-group`, параметры `nat-unit-queues` и `rebalance` — относятся к ранней модели конфигурации балансировщика, по которой построен и [раздел 21](21.md). В новых версиях ПО модель другая: группа балансировки задаётся как `ecofilter-balancer ecofilter-unit` с парами портов `pair` и числом ядер `cores`, правила — как `ecofilter-balancer flow` с действиями `bypass` (по умолчанию), `drop` и `to-ecofilter`, а метод хэширования — одним параметром для всего устройства (`ecofilter-balancer balancing-method`). Логика работы при этом та же.
> **Примечание о версиях ПО.** Имена параметров в этой главе — группы балансировки (`balance-groups`) с парами портов `filter-group`, наборы правил `filters` с привязкой `apply-to-links`, действие `balancing-as mag-hash` с `to-balance-group`, параметры `nat-unit-queues` и `rebalance` — относятся к ранней модели конфигурации балансировщика, по которой построен и [раздел 8](balancer-config.md). В новых версиях ПО модель другая: группа балансировки задаётся как `ecofilter-balancer ecofilter-unit` с парами портов `pair` и числом ядер `cores`, правила — как `ecofilter-balancer flow` с действиями `bypass` (по умолчанию), `drop` и `to-ecofilter`, а метод хэширования — одним параметром для всего устройства (`ecofilter-balancer balancing-method`). Логика работы при этом та же.
Термин «фильтр» на балансировщике означает не устройство, а **именованный набор правил**, который привязывается к линкам в сторону оператора (параметр `apply-to-links`). Каждое правило (flow) состоит из трёх частей:
@@ -106,11 +106,11 @@
- **action** — действие с совпавшим пакетом;
- **priority** — приоритет: правила проверяются в порядке приоритета, от высшего к низшему, и срабатывает первое совпавшее. Направление шкалы — больше или меньше число означает более высокий приоритет — в документации производителя описано противоречиво, поэтому его стоит проверять на используемой версии ПО.
Действий в ТСПУ тип А два: отправить трафик на группу балансировки, то есть на фильтры, или вернуть его оператору без обработки (bypass). В документации производителя для новых версий ПО описаны также действие `drop` и блокировка по таблицам, загружаемым с внешнего gRPC-сервера (`external-acl`, действие `block`). В рассматриваемой схеме ТСПУ тип А блокировку выполняют фильтры, а балансировщик трафик не блокирует — в отличие от эшелонированной системы ([раздел 7](07.md)).
Действий в ТСПУ тип А два: отправить трафик на группу балансировки, то есть на фильтры, или вернуть его оператору без обработки (bypass). В документации производителя для новых версий ПО описаны также действие `drop` и блокировка по таблицам, загружаемым с внешнего gRPC-сервера (`external-acl`, действие `block`). В рассматриваемой схеме ТСПУ тип А блокировку выполняют фильтры, а балансировщик трафик не блокирует — в отличие от эшелонированной системы ([раздел 4](echelon.md)).
Правила можно строить двумя способами: перечислить трафик-исключения с действием bypass, а всё остальное отправить на фильтры, — либо, наоборот, перечислить трафик, который нужно отправить на фильтры, а всё остальное вернуть оператору завершающим правилом. Обычно правил на балансировщике ТСПУ тип А немного, они задаются вручную и описывают исключения — например, служебный VLAN возвращается оператору, а весь остальной трафик отправляется на фильтры. На Eco Highway, наоборот, правила загружаются из ЦСУ и исчисляются десятками и сотнями тысяч ([раздел 7.3.1](07.md)). По каждому правилу балансировщик считает пакеты и байты; эта статистика используется при диагностике ([разделы 22.5](22.md) и [24.4](24.md)).
Правила можно строить двумя способами: перечислить трафик-исключения с действием bypass, а всё остальное отправить на фильтры, — либо, наоборот, перечислить трафик, который нужно отправить на фильтры, а всё остальное вернуть оператору завершающим правилом. Обычно правил на балансировщике ТСПУ тип А немного, они задаются вручную и описывают исключения — например, служебный VLAN возвращается оператору, а весь остальной трафик отправляется на фильтры. На Eco Highway, наоборот, правила загружаются из ЦСУ и исчисляются десятками и сотнями тысяч ([раздел 4.3.1](echelon.md)). По каждому правилу балансировщик считает пакеты и байты; эта статистика используется при диагностике ([разделы 9.5](balancer-monitoring.md) и [23.4](troubleshooting.md)).
### 4.4.1. Байпас служебного трафика (BGP, мультикаст, маршрутизация)
### 6.4.1. Байпас служебного трафика (BGP, мультикаст, маршрутизация)
Действие **bypass** возвращает совпавший трафик оператору через парный порт линка сразу на входе, не отправляя его на фильтры. Так поступают с трафиком, который не нужно и нежелательно анализировать:
@@ -123,11 +123,11 @@
Если правила построены по второму способу, набор завершается правилом с самым низким приоритетом, пустым условием (совпадает всё) и действием bypass: весь трафик, не попавший под предыдущие правила, возвращается оператору без обработки. Тогда на фильтры попадает только трафик, явно отобранный правилами, а всё, что правилами не перечислено, остаётся без фильтрации.
Отбором по VLAN пользуются и при подключении BRAS или CGNAT по схеме on-a-stick: на фильтры отправляют только VLAN одного направления, чтобы каждая сессия обрабатывалась один раз ([раздел 6.4.2](06.md)).
Отбором по VLAN пользуются и при подключении BRAS или CGNAT по схеме on-a-stick: на фильтры отправляют только VLAN одного направления, чтобы каждая сессия обрабатывалась один раз ([раздел 3.4.2](placement.md)).
### 4.4.2. Отправка трафика на группу балансировки
### 6.4.2. Отправка трафика на группу балансировки
Действие балансировки задаётся как `balancing-as mag-hash` — распределение по хэшу от адресов источника, назначения и IP-протокола — вместе с целевой группой (`to-balance-group`): групп балансировки может быть несколько, и правило определяет, в какую из них отправить трафик. В новых версиях ПО этому соответствует действие `to-ecofilter`, а метод хэширования задаётся отдельно для всего устройства ([раздел 4.5.1](#451-хэш-сумма-source-ip--destination-ip--протокол)).
Действие балансировки задаётся как `balancing-as mag-hash` — распределение по хэшу от адресов источника, назначения и IP-протокола — вместе с целевой группой (`to-balance-group`): групп балансировки может быть несколько, и правило определяет, в какую из них отправить трафик. В новых версиях ПО этому соответствует действие `to-ecofilter`, а метод хэширования задаётся отдельно для всего устройства ([раздел 6.5.1](#651-хэш-сумма-source-ip--destination-ip--протокол)).
Пример: правило с условием «первый VLAN-тег равен 1» и действием балансировки отправляет трафик VLAN 1 на фильтры, а завершающее правило bypass возвращает оператору всё остальное.
@@ -143,11 +143,11 @@
| **MAC-адреса** | MAC-адрес источника и назначения, в том числе с маской |
| **Тип кадра** | EtherType (`packet-type`) и поля LLC |
В одном правиле можно комбинировать несколько условий, например VLAN и IPv4-подсеть. Настройка правил описана в [разделе 21.7](21.md).
В одном правиле можно комбинировать несколько условий, например VLAN и IPv4-подсеть. Настройка правил описана в [разделе 8.7](balancer-config.md).
## 4.5. Балансировка трафика
## 6.5. Балансировка трафика
### 4.5.1. Хэш-сумма: source IP + destination IP + протокол
### 6.5.1. Хэш-сумма: source IP + destination IP + протокол
Трафик распределяется по filter groups на основе **хэш-суммы** от трёх полей IP-пакета:
@@ -157,19 +157,19 @@
В новых версиях ПО метод хэширования задаётся для всего устройства параметром `ecofilter-balancer balancing-method`; описанной схеме соответствует метод `layer-3`, он же используется по умолчанию, а в качестве хэш-функции производитель указывает CRC32. Доступны и другие методы — только по адресу назначения (`dst-ip`) и с добавлением портов TCP/UDP (`layer-4`), — но в ТСПУ используется балансировка по адресам и протоколу.
Для вычисления хэша балансировщик разбирает стек инкапсуляции и добирается до IP-заголовка ([раздел 4.7](#47-работа-с-различными-инкапсуляциями-vlan-mpls)). Если IP-пакет не найден, трафик пропускается прозрачно и на фильтры не отправляется.
Для вычисления хэша балансировщик разбирает стек инкапсуляции и добирается до IP-заголовка ([раздел 6.7](#67-работа-с-различными-инкапсуляциями-vlan-mpls)). Если IP-пакет не найден, трафик пропускается прозрачно и на фильтры не отправляется.
Балансировка работает за счёт **огромного количества** разных сочетаний «адрес источника — адрес назначения — протокол», реально встречающихся в операторском трафике: когда таких сочетаний много и ни одно из них не несёт заметной доли трафика, хэш распределяет нагрузку по всем filter groups и ядрам достаточно равномерно.
Обратная сторона: порты TCP/UDP в хэш не входят, поэтому **весь трафик между одной парой адресов по одному протоколу** — сколько бы соединений в нём ни было — попадает на одну пару портов одного фильтра и на одно его ядро. Разбалансировать такой поток невозможно: если, например, 200 Гбит/с идут с одного адреса на один адрес по одному протоколу, весь этот трафик будет направлен в одну пару портов и на одно ядро одного фильтра — и в пару портов 10G он физически не поместится. Это стоит учитывать для адресов, за которыми стоит много абонентов, — например, при установке ТСПУ после CGNAT ([раздел 6.3](06.md)): трафик многих абонентов с одного внешнего адреса к одному и тому же ресурсу (узлу CDN, кэш-серверу, популярному сервису) попадает на одно ядро.
Обратная сторона: порты TCP/UDP в хэш не входят, поэтому **весь трафик между одной парой адресов по одному протоколу** — сколько бы соединений в нём ни было — попадает на одну пару портов одного фильтра и на одно его ядро. Разбалансировать такой поток невозможно: если, например, 200 Гбит/с идут с одного адреса на один адрес по одному протоколу, весь этот трафик будет направлен в одну пару портов и на одно ядро одного фильтра — и в пару портов 10G он физически не поместится. Это стоит учитывать для адресов, за которыми стоит много абонентов, — например, при установке ТСПУ после CGNAT ([раздел 3.3](placement.md)): трафик многих абонентов с одного внешнего адреса к одному и тому же ресурсу (узлу CDN, кэш-серверу, популярному сервису) попадает на одно ядро.
### 4.5.2. Учёт количества ядер фильтров
### 6.5.2. Учёт количества ядер фильтров
Параметр **`nat-unit-queues`** задаёт количество ядер на подключённых фильтрах, которые занимаются обработкой трафика. Это значение **всегда равно общему количеству ядер процессора фильтра минус один**: все ядра, кроме одного, отданы процессу EcoNAT, обрабатывающему трафик, а одно ядро сервисное — на нём работают Linux, системные логи и управление.
Параметр **напрямую влияет** на балансировку: он учитывается при вычислении хэша, чтобы трафик равномерно распределялся не только между фильтрами, но и между **ядрами** каждого фильтра. В новых версиях ПО число ядер задаётся в настройках группы балансировки (параметр `cores`, по умолчанию 1 — поэтому значение нужно задавать явно). Настройка — в [разделе 21.5.2](21.md).
Параметр **напрямую влияет** на балансировку: он учитывается при вычислении хэша, чтобы трафик равномерно распределялся не только между фильтрами, но и между **ядрами** каждого фильтра. В новых версиях ПО число ядер задаётся в настройках группы балансировки (параметр `cores`, по умолчанию 1 — поэтому значение нужно задавать явно). Настройка — в [разделе 8.5.2](balancer-config.md).
### 4.5.3. Дополнительный 4-байтный заголовок для фильтров
### 6.5.3. Дополнительный 4-байтный заголовок для фильтров
В точке балансировки к пакету добавляется **дополнительный 4-байтный заголовок**. По структуре он похож на VLAN-тег, но VLAN-тегом не является. Заголовок выполняет две функции:
@@ -178,11 +178,11 @@
Фильтр возвращает пакет **с тем же 4-байтным заголовком**. Балансировщик считывает заголовок, определяет исходный линк, удаляет заголовок и отправляет пакет обратно оператору.
В эшелонированной системе вместо этого заголовка используется VLAN-тег: балансировщик Eco Highway помечает им трафик, а фильтр после обработки меняет его на другой ([раздел 7.3.3](07.md)).
В эшелонированной системе вместо этого заголовка используется VLAN-тег: балансировщик Eco Highway помечает им трафик, а фильтр после обработки меняет его на другой ([раздел 4.3.3](echelon.md)).
Из-за 4-байтного заголовка кадры на участке между балансировщиком и фильтром на 4 байта длиннее исходных: максимальный кадр оператора вместе с заголовком должен укладываться в MTU портов балансировщика в сторону фильтров и в L2 MTU фильтра, иначе крупные кадры будут отбрасываться. В проекте на портах балансировщика выставляется MTU около 9000 байт (по умолчанию 9000, платформа допускает до 10240), а на фильтрах — L2 MTU 9216 ([раздел 15.2.4](15.md)); если оператор использует кадры крупнее, MTU нужно согласовать при проектировании.
Из-за 4-байтного заголовка кадры на участке между балансировщиком и фильтром на 4 байта длиннее исходных: максимальный кадр оператора вместе с заголовком должен укладываться в MTU портов балансировщика в сторону фильтров и в L2 MTU фильтра, иначе крупные кадры будут отбрасываться. В проекте на портах балансировщика выставляется MTU около 9000 байт (по умолчанию 9000, платформа допускает до 10240), а на фильтрах — L2 MTU 9216 ([раздел 15.2.4](filter-interfaces.md)); если оператор использует кадры крупнее, MTU нужно согласовать при проектировании.
### 4.5.4. Симметричность хэша: одна сессия — один фильтр, одно ядро
### 6.5.4. Симметричность хэша: одна сессия — один фильтр, одно ядро
Хэш вычисляется **симметрично**: у обратного пакета (от интернета к абоненту) адреса источника и назначения поменялись местами, но итоговое значение совпадает со значением для прямого пакета. Сама функция CRC32 несимметрична, так что симметрию обеспечивает способ формирования входных данных хэша.
@@ -192,26 +192,26 @@
- более того — на одно и то же **ядро** этого фильтра, а если оба направления проходят через один балансировщик, — и на одну и ту же пару портов;
- сессия **никогда не распределяется** по разным фильтрам.
Благодаря этому фильтр всегда видит полную картину сессии — и запрос, и ответ, — что необходимо для корректного распознавания трафика и применения политик. Распределение детерминировано, пока состав группы балансировки не меняется ([раздел 4.6.3](#463-перебалансировка-трафика-опционально)).
Благодаря этому фильтр всегда видит полную картину сессии — и запрос, и ответ, — что необходимо для корректного распознавания трафика и применения политик. Распределение детерминировано, пока состав группы балансировки не меняется ([раздел 6.6.3](#663-перебалансировка-трафика-опционально)).
Балансировщик **не ведёт логов** о том, куда отправлен конкретный пакет: балансировка выполняется аппаратно, программируемым чипом, на скорости провода. Чтобы найти, на каком фильтре обслуживается сессия абонента, нужно обойти фильтры площадки — вручную, если их два-три, или простым скриптом, если их много (на некоторых площадках — около полутора десятков); скрипт справляется примерно за десяток секунд ([раздел 24.2](24.md)).
Балансировщик **не ведёт логов** о том, куда отправлен конкретный пакет: балансировка выполняется аппаратно, программируемым чипом, на скорости провода. Чтобы найти, на каком фильтре обслуживается сессия абонента, нужно обойти фильтры площадки — вручную, если их два-три, или простым скриптом, если их много (на некоторых площадках — около полутора десятков); скрипт справляется примерно за десяток секунд ([раздел 23.2](troubleshooting.md)).
## 4.6. Отказоустойчивость
## 6.6. Отказоустойчивость
### 4.6.1. Keep-alive пакеты к фильтрам
### 6.6.1. Keep-alive пакеты к фильтрам
Балансировщик непрерывно проверяет каждую filter group **keep-alive-пакетами**. С байпасами Silicom это второй, независимый от heartbeat байпаса контур контроля: heartbeat байпаса проверяет канал до балансировщика и дальше него не проходит, а keep-alive балансировщика — путь до фильтра и обратно ([раздел 3.4](03.md)).
Балансировщик непрерывно проверяет каждую filter group **keep-alive-пакетами**. С байпасами Silicom это второй, независимый от heartbeat байпаса контур контроля: heartbeat байпаса проверяет канал до балансировщика и дальше него не проходит, а keep-alive балансировщика — путь до фильтра и обратно ([раздел 5.4](bypass.md)).
Принцип работы:
1. Балансировщик отправляет keep-alive-пакеты в оба порта filter group — в **LAN-порт** и в **WAN-порт**;
2. Пакет проходит через фильтр: keep-alive — служебный не-IP-пакет, и фильтр передаёт его в парный порт сразу, на первой же проверке («IP-пакет или нет»);
3. Пакет возвращается на балансировщик через парный порт той же filter group;
4. Балансировщик фиксирует время прохождения — `time-on-path`, в наносекундах, отдельно для каждого направления (в ранних версиях ПО — `to-lan` и `to-wan` в состоянии filter group, в новых — по портам в выводе `show liveness profile-status`). Например, 27 000 нс, то есть 27 мкс ([раздел 22.6.2](22.md)).
4. Балансировщик фиксирует время прохождения — `time-on-path`, в наносекундах, отдельно для каждого направления (в ранних версиях ПО — `to-lan` и `to-wan` в состоянии filter group, в новых — по портам в выводе `show liveness profile-status`). Например, 27 000 нс, то есть 27 мкс ([раздел 9.6.2](balancer-monitoring.md)).
На фильтре принятые keep-alive-пакеты учитываются счётчиком `cr_pass_ecobalancer_keepalive` — по нему можно убедиться, что пакеты балансировщика до фильтра доходят.
Keep-alive проверяют не только физический канал, но и то, что фильтр продолжает обрабатывать трафик: даже первую проверку («IP-пакет или нет») выполняет процессор фильтра, поэтому если фильтр завис или перегружен настолько, что не пропускает пакеты, keep-alive не вернётся. Оценивать загрузку фильтра — не основная задача keep-alive, однако сильно перегруженный фильтр — например, при загрузке таблиц сессий заметно выше рекомендованных 20 % — теоретически может начать терять и их ([раздел 22.6](22.md)).
Keep-alive проверяют не только физический канал, но и то, что фильтр продолжает обрабатывать трафик: даже первую проверку («IP-пакет или нет») выполняет процессор фильтра, поэтому если фильтр завис или перегружен настолько, что не пропускает пакеты, keep-alive не вернётся. Оценивать загрузку фильтра — не основная задача keep-alive, однако сильно перегруженный фильтр — например, при загрузке таблиц сессий заметно выше рекомендованных 20 % — теоретически может начать терять и их ([раздел 9.6](balancer-monitoring.md)).
Параметры проверки задаются в **профиле Keep-Alive** (liveness profile), который привязывается к группе балансировки:
@@ -229,9 +229,9 @@ Keep-alive проверяют не только физический канал,
Когда число активных пар в группе балансировки опускается ниже `active-pairs`, неактивной считается вся группа: её состояние становится bypass, и весь её трафик возвращается оператору без обработки.
В пилотном проекте на Урале значение `active-pairs` было равно общему числу пар в сторону фильтров, поэтому проблема с одним-единственным интерфейсом переводила всю группу балансировки в неактивное состояние. Балансировщик прекращал отправку heartbeat-пакетов на оптический байпас GL Sun, и вся площадка уходила в аппаратный байпас с флапом линков у оператора ([раздел 3.3.1](03.md)). Такое значение не обязательно — порог можно задать гибче.
В пилотном проекте на Урале значение `active-pairs` было равно общему числу пар в сторону фильтров, поэтому проблема с одним-единственным интерфейсом переводила всю группу балансировки в неактивное состояние. Балансировщик прекращал отправку heartbeat-пакетов на оптический байпас GL Sun, и вся площадка уходила в аппаратный байпас с флапом линков у оператора ([раздел 5.3.1](bypass.md)). Такое значение не обязательно — порог можно задать гибче.
### 4.6.2. Программный байпас при потере группы портов
### 6.6.2. Программный байпас при потере группы портов
При потере keep-alive для конкретной filter group балансировщик переводит эту пару портов в **программный байпас**: трафик, который по хэшу приходится на неё, не отправляется на фильтр, а сразу перекладывается с входного порта линка на парный и возвращается оператору.
@@ -243,25 +243,25 @@ Keep-alive проверяют не только физический канал,
- когда keep-alive снова начинают проходить, пара **автоматически возвращается** в работу (если перебалансировка выключена);
- о переключении балансировщик пишет в журнал. В стандартный набор SNMP-трапов (перезагрузка, авторизация, состояние физических портов, блоки питания) такое событие не входит; в новых версиях ПО трап на изменение состояния можно настроить отдельно (условие `xpath`). Так система мониторинга узнаёт о проблеме, и её можно устранить.
Это значительное улучшение по сравнению с пилотным проектом на Урале, где потеря хотя бы одного интерфейса переводила **всю площадку** в аппаратный байпас с флапом линков у оператора ([раздел 4.6.1](#461-keep-alive-пакеты-к-фильтрам)), а возврат в работу требовал повторного флапа.
Это значительное улучшение по сравнению с пилотным проектом на Урале, где потеря хотя бы одного интерфейса переводила **всю площадку** в аппаратный байпас с флапом линков у оператора ([раздел 6.6.1](#661-keep-alive-пакеты-к-фильтрам)), а возврат в работу требовал повторного флапа.
Программный байпас можно включить и **вручную** — для диагностики или на время технических работ. Вручную переключается группа балансировки целиком: в новых версиях ПО это команда `call ecofilter-balancer set-bypass-ecofilter-unit` с режимами auto (штатная работа: трафик идёт на фильтры, пока группа активна), bypass (весь трафик группы идёт мимо фильтров) и primary (трафик принудительно направляется на фильтры) ([раздел 22.7](22.md)); команды ручного переключения перенесены в EcoFilter Balancer из программного байпаса Eco Highway. Так можно одной командой исключить ТСПУ из обработки трафика без какого-либо влияния на линки оператора; такой режим применялся при испытаниях эшелонированной системы.
Программный байпас можно включить и **вручную** — для диагностики или на время технических работ. Вручную переключается группа балансировки целиком: в новых версиях ПО это команда `call ecofilter-balancer set-bypass-ecofilter-unit` с режимами auto (штатная работа: трафик идёт на фильтры, пока группа активна), bypass (весь трафик группы идёт мимо фильтров) и primary (трафик принудительно направляется на фильтры) ([раздел 9.7](balancer-monitoring.md)); команды ручного переключения перенесены в EcoFilter Balancer из программного байпаса Eco Highway. Так можно одной командой исключить ТСПУ из обработки трафика без какого-либо влияния на линки оператора; такой режим применялся при испытаниях эшелонированной системы.
Если фильтр перегружен и теряет keep-alive, filter group может периодически переключаться между работой и программным байпасом. Физических флапов у оператора это не вызывает, но при каждом переключении теряется небольшое количество пакетов ([раздел 22.6](22.md)). Чтобы перегрузку заметить раньше, система мониторинга должна отслеживать загрузку таблиц на фильтрах и срабатывать на превышение оптимального значения.
Если фильтр перегружен и теряет keep-alive, filter group может периодически переключаться между работой и программным байпасом. Физических флапов у оператора это не вызывает, но при каждом переключении теряется небольшое количество пакетов ([раздел 9.6](balancer-monitoring.md)). Чтобы перегрузку заметить раньше, система мониторинга должна отслеживать загрузку таблиц на фильтрах и срабатывать на превышение оптимального значения.
### 4.6.3. Перебалансировка трафика (опционально)
### 6.6.3. Перебалансировка трафика (опционально)
Альтернатива программному байпасу — **перебалансировка** (параметр группы балансировки `rebalance`): трафик пропавшей filter group перераспределяется по оставшимся рабочим парам портов. В примерах конфигурации перебалансировка включена, но в проекте её планируется **выключить**, поскольку:
- перебалансировка занимает время и вычислительные ресурсы;
- хэш пересчитывается для всех сессий, и сессии могут перейти на другие пары портов и другие фильтры;
- новый фильтр видит такие сессии «с середины», без начального обмена, а контекст анализа на прежнем фильтре теряется; чтобы такие сессии вообще заводились в обработку, на фильтрах должен быть включён приём TCP-сессий без SYN ([раздел 15.2.6](15.md)).
- новый фильтр видит такие сессии «с середины», без начального обмена, а контекст анализа на прежнем фильтре теряется; чтобы такие сессии вообще заводились в обработку, на фильтрах должен быть включён приём TCP-сессий без SYN ([раздел 15.2.6](filter-interfaces.md)).
Производитель описывает этот режим как резервирование N+X: неисправный фильтр исключается из группы балансировки, его потоки перераспределяются между исправными, а при выходе из строя всех фильтров срабатывает режим bypass. В проекте резервирование фильтров по схеме N+1 не предусмотрено: число фильтров рассчитывается так, чтобы пропустить трафик оператора в худшем сценарии; допустим ли при этом выход из строя одного фильтра, определяется расчётом мощностей конкретной площадки ([раздел 1.4](01.md)).
Производитель описывает этот режим как резервирование N+X: неисправный фильтр исключается из группы балансировки, его потоки перераспределяются между исправными, а при выходе из строя всех фильтров срабатывает режим bypass. В проекте резервирование фильтров по схеме N+1 не предусмотрено: число фильтров рассчитывается так, чтобы пропустить трафик оператора в худшем сценарии; допустим ли при этом выход из строя одного фильтра, определяется расчётом мощностей конкретной площадки ([раздел 1.4](overview.md)).
Рекомендуемый подход для федерального проекта — программный байпас на уровне отдельной filter group без перебалансировки. Часть трафика временно не фильтруется, но это меньшее зло, чем флап линков оператора или массовый переезд сессий.
## 4.7. Работа с различными инкапсуляциями (VLAN, MPLS)
## 6.7. Работа с различными инкапсуляциями (VLAN, MPLS)
Балансировщик **не снимает и не модифицирует** теги, метки и другие заголовки инкапсуляции — он только читает их, чтобы добраться до IP-заголовка. По документации производителя балансировщик разбирает:
@@ -272,15 +272,15 @@ Keep-alive проверяют не только физический канал,
и находит в них пакеты IPv4 и IPv6.
Заголовки инкапсуляции можно использовать в условиях правил: значения VLAN-тегов и их число, число MPLS-меток ([раздел 4.4.2](#442-отправка-трафика-на-группу-балансировки)). Отбора по значениям MPLS-меток среди условий нет, да он и не был бы надёжным: значения меток на линке назначает соседний маршрутизатор оператора (при LDP и RSVP-TE — динамически), и они могут меняться при перестроении LSP.
Заголовки инкапсуляции можно использовать в условиях правил: значения VLAN-тегов и их число, число MPLS-меток ([раздел 6.4.2](#642-отправка-трафика-на-группу-балансировки)). Отбора по значениям MPLS-меток среди условий нет, да он и не был бы надёжным: значения меток на линке назначает соседний маршрутизатор оператора (при LDP и RSVP-TE — динамически), и они могут меняться при перестроении LSP.
Балансировщик сам разбирает сложную инкапсуляцию — множество тегов и меток — и сам выбирает ядро фильтра, сообщая его в 4-байтном заголовке, поэтому распределять такой трафик по ядрам фильтру не нужно. Это облегчает работу фильтра, у которого ограничений на типы инкапсуляции и их балансировку больше. Разбирать заголовки для анализа фильтр всё равно должен сам и работает только с IP-пакетом; глубина разбора VLAN-тегов на фильтре задаётся параметром VLAN Mode ([раздел 15.2.1](15.md)).
Балансировщик сам разбирает сложную инкапсуляцию — множество тегов и меток — и сам выбирает ядро фильтра, сообщая его в 4-байтном заголовке, поэтому распределять такой трафик по ядрам фильтру не нужно. Это облегчает работу фильтра, у которого ограничений на типы инкапсуляции и их балансировку больше. Разбирать заголовки для анализа фильтр всё равно должен сам и работает только с IP-пакетом; глубина разбора VLAN-тегов на фильтре задаётся параметром VLAN Mode ([раздел 15.2.1](filter-interfaces.md)).
На фильтр пакет уходит с исходным стеком заголовков и добавленным 4-байтным заголовком балансировки, а обратно оператору — с тем же стеком, с каким пришёл. Кадры, в которых IP-пакет не найден, на фильтры не отправляются и прозрачно передаются в парный порт линка. Heartbeat-пакеты байпаса Silicom также до фильтров не доходят — балансировщик передаёт их между парными портами.
## 4.8. Обработка HTTP-редиректов и TCP Reset через фильтры
## 6.8. Обработка HTTP-редиректов и TCP Reset через фильтры
При блокировке ресурса фильтр отправляет абоненту **HTTP-редирект** (перенаправление на страницу-заглушку; по документации производителя — ответ «307 Temporary Redirect») для HTTP или **TCP Reset** для HTTPS: подменить содержимое зашифрованного соединения невозможно, а сам ресурс определяется по SNI в ClientHello ([раздел 17.5.3](17.md)). Для трафика без MPLS-меток фильтр формирует такой пакет сам.
При блокировке ресурса фильтр отправляет абоненту **HTTP-редирект** (перенаправление на страницу-заглушку; по документации производителя — ответ «307 Temporary Redirect») для HTTP или **TCP Reset** для HTTPS: подменить содержимое зашифрованного соединения невозможно, а сам ресурс определяется по SNI в ClientHello ([раздел 17.5.3](filter-dpi.md)). Для трафика без MPLS-меток фильтр формирует такой пакет сам.
С MPLS-трафиком так не получается. MPLS-путь однонаправлен: метки, с которыми пакет абонента пришёл на фильтр, действительны только для направления в сторону интернета, а стек меток обратного направления фильтру неизвестен — собранный им самим пакет оборудование оператора отбросит или доставит не туда. Поэтому для трафика с MPLS-метками используется другая логика:
@@ -289,8 +289,8 @@ Keep-alive проверяют не только физический канал,
3. Обратный пакет приходит уже с правильными метками обратного направления, и фильтр **подменяет** его содержимое на HTTP-редирект или TCP Reset, сохраняя метки;
4. Балансировщик по 4-байтному заголовку возвращает модифицированный пакет в тот же линк, и пакет доходит до абонента с корректной инкапсуляцией.
Роль балансировщика здесь двоякая. Разбирая стек меток и вычисляя симметричный хэш по IP-адресам под ними, он приводит ответ сервера на тот же фильтр и то же ядро, которые обработали запрос абонента, хотя метки у ответа другие. А при возврате он не трогает метки и отправляет пакет строго в исходный линк, поэтому подменённый ответ проходит ровно тем же путём, что и настоящий ответ сервера. Решение о блокировке и отправке редиректа или Reset принимает фильтр ([раздел 5.1.5](05.md)).
Роль балансировщика здесь двоякая. Разбирая стек меток и вычисляя симметричный хэш по IP-адресам под ними, он приводит ответ сервера на тот же фильтр и то же ядро, которые обработали запрос абонента, хотя метки у ответа другие. А при возврате он не трогает метки и отправляет пакет строго в исходный линк, поэтому подменённый ответ проходит ровно тем же путём, что и настоящий ответ сервера. Решение о блокировке и отправке редиректа или Reset принимает фильтр ([раздел 10.1.5](filter.md)).
---
[← Оглавление](../README.md) · [← Раздел 3: Байпас](03.md) · [Раздел 5: Фильтр →](05.md)
[← Оглавление](../README.md) · [← Раздел 5: Байпас](bypass.md) · [Раздел 7: Балансировщик: аппаратная платформа →](balancer-platform.md)
+34 -34
View File
@@ -1,31 +1,31 @@
# 3. Байпас (Bypass)
# 5. Байпас (Bypass)
[← Оглавление](../README.md) · [← Раздел 2: Прохождение трафика через ТСПУ](02.md)
[← Оглавление](../README.md) · [← Раздел 4: Эшелонированная система](echelon.md)
---
## 3.1. Назначение и роль байпаса в ТСПУ
## 5.1. Назначение и роль байпаса в ТСПУ
Байпас — это устройство, обеспечивающее **физическую защиту каналов связи оператора** при установке ТСПУ. Каналы связи оператора физически разрываются и заводятся на байпас, который в штатном режиме прозрачно пропускает трафик дальше — в сторону балансировщика и фильтров.
Основная задача байпаса — гарантировать, что связность сети оператора не будет нарушена при тех авариях, которые байпас способен обнаружить: потеря пути через ТСПУ (по heartbeat-пакетам), пропадание линка на портах Mon, зависание подключённого inline-устройства и потеря питания. В такой ситуации байпас замыкает каналы оператора напрямую, минуя остальное оборудование ТСПУ; это последнее средство сохранить трафик оператора. При наличии балансировщика отказ отдельных фильтров байпас не отслеживает — его отрабатывает балансировщик программным байпасом группы портов ([раздел 4.6](04.md)); в схеме без балансировщика ([раздел 2.3](02.md)) контур heartbeat замыкается на самом фильтре, поэтому отказ или зависание фильтра байпас видит и замыкает канал.
Основная задача байпаса — гарантировать, что связность сети оператора не будет нарушена при тех авариях, которые байпас способен обнаружить: потеря пути через ТСПУ (по heartbeat-пакетам), пропадание линка на портах Mon, зависание подключённого inline-устройства и потеря питания. В такой ситуации байпас замыкает каналы оператора напрямую, минуя остальное оборудование ТСПУ; это последнее средство сохранить трафик оператора. При наличии балансировщика отказ отдельных фильтров байпас не отслеживает — его отрабатывает балансировщик программным байпасом группы портов ([раздел 6.6](balancer.md)); в схеме без балансировщика ([раздел 2.3](traffic-flow.md)) контур heartbeat замыкается на самом фильтре, поэтому отказ или зависание фильтра байпас видит и замыкает канал.
Количество байпасов на площадке определяется **исключительно количеством линков оператора**, в разрыв которых устанавливается ТСПУ: каждый канал занимает на байпасе свою четвёрку портов (сегмент), а одно устройство может обслуживать один или несколько каналов. Скорость байпаса зависит от модели и установленных модулей: как правило, это **10 или 100 Гбит/с**; площадок с гигабитными линками мало. Каждый байпас имеет management-интерфейс в сегменте управления площадки — под байпасы отведены первые 128 адресов management-подсети ([раздел 10.2](10.md)).
Количество байпасов на площадке определяется **исключительно количеством линков оператора**, в разрыв которых устанавливается ТСПУ: каждый канал занимает на байпасе свою четвёрку портов (сегмент), а одно устройство может обслуживать один или несколько каналов. Скорость байпаса зависит от модели и установленных модулей: как правило, это **10 или 100 Гбит/с**; площадок с гигабитными линками мало. Каждый байпас имеет management-интерфейс в сегменте управления площадки — под байпасы отведены первые 128 адресов management-подсети ([раздел 20.2](management-segment.md)).
Термин «байпас» в документации ТСПУ используется в трёх значениях, которые важно различать:
- **аппаратный байпас** — само устройство (Silicom, GL Sun) и его режимы, физически замыкающие канал оператора; предмет этого раздела;
- **программный байпас** балансировщика — вывод из обработки отдельной группы портов в сторону фильтра при потере keep-alive или вручную, без участия аппаратного байпаса и без флапа линков у оператора ([раздел 4.6](04.md), [22.7](22.md));
- **действие bypass** в правилах балансировщика — возврат определённого трафика оператору без анализа ([раздел 4.4](04.md), [21.7](21.md)).
- **программный байпас** балансировщика — вывод из обработки отдельной группы портов в сторону фильтра при потере keep-alive или вручную, без участия аппаратного байпаса и без флапа линков у оператора ([раздел 6.6](balancer.md), [9.7](balancer-monitoring.md));
- **действие bypass** в правилах балансировщика — возврат определённого трафика оператору без анализа ([раздел 6.4](balancer.md), [8.7](balancer-config.md)).
Ниже описано распределение оборудования на момент развёртывания федерального проекта; о более поздних поставках — см. [раздел 3.6](#36-развитие-отечественные-байпасы). В проекте АСБИ используются два типа аппаратных байпасов:
Ниже описано распределение оборудования на момент развёртывания федерального проекта; о более поздних поставках — см. [раздел 5.6](#56-развитие-отечественные-байпасы). В проекте АСБИ используются два типа аппаратных байпасов:
| Проект | Производитель | Особенности |
| ------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Федеральный** | Silicom | Активное устройство с режимами Inline, TAP, Active Bypass и Passive Bypass; переключение между первыми тремя без флапа линков; собственные heartbeat-пакеты |
| **Пилотный (Урал)** | GL Sun | Оптический переключатель: только пропуск трафика или замыкание канала; каждое переключение — флап линков; heartbeat отправляет балансировщик (по TCP) или, на площадках без балансировщика, фильтр |
## 3.2. Байпасы Silicom (федеральный проект)
## 5.2. Байпасы Silicom (федеральный проект)
Байпасы Silicom устанавливаются в рамках федерального проекта и обладают полным набором режимов работы, обеспечивающих гибкое управление прохождением трафика.
@@ -33,7 +33,7 @@
В терминологии производителя режимы называются Inline (Normal), Bypass, Tap и Linkdrop. Принятые в ТСПУ названия **Active Bypass** и **Passive Bypass** соответствуют двум схемам обхода в архитектуре Silicom Double Bypass: активной (электронной, управляемой программно и по heartbeat) и пассивной (оптической, срабатывающей при пропадании питания или отказе активной электроники). Режим Linkdrop, в котором оба сетевых порта принудительно гасятся, имитируя отключение кабеля, в описанной здесь схеме работы ТСПУ не задействован.
### 3.2.1. Порты: Net0/Net1 (оператор) и Mon0/Mon1 (балансировщик)
### 5.2.1. Порты: Net0/Net1 (оператор) и Mon0/Mon1 (балансировщик)
Для каждого канала связи байпас Silicom имеет **четыре порта**:
@@ -53,9 +53,9 @@
Линк балансировщика (или пара портов фильтра)
```
Все соединения двунаправленные: каждая пара Net/Mon — полнодуплексный проходной сегмент. Байпас Silicom — активное устройство: в режимах Inline, TAP и Active Bypass сигнал операторских линков принимается собственной оптикой модуля (порты Net выведены разъёмами MPO/LC), а линки Mon0/Mon1 — отдельные, со сменными трансиверами. Состояние линка между сторонами не транслируется: падение порта балансировщика или отключение патч-корда Mon оператор не увидит как link-down — байпас обнаружит это сам, по пропаданию линка на Mon-порту или по прекращению возврата heartbeat, и переведёт сегмент в режим обхода ([раздел 3.5](#35-автоматическое-переключение-в-tapactive-bypass-при-потере-канала)); падение линка оператора, наоборот, не видно на балансировщике. При диагностике нужно проверять состояние всех четырёх портов сегмента. В описании линка балансировщика рекомендуется указывать, к какому байпасу и какому его сегменту подключён линк ([раздел 21.4](21.md)).
Все соединения двунаправленные: каждая пара Net/Mon — полнодуплексный проходной сегмент. Байпас Silicom — активное устройство: в режимах Inline, TAP и Active Bypass сигнал операторских линков принимается собственной оптикой модуля (порты Net выведены разъёмами MPO/LC), а линки Mon0/Mon1 — отдельные, со сменными трансиверами. Состояние линка между сторонами не транслируется: падение порта балансировщика или отключение патч-корда Mon оператор не увидит как link-down — байпас обнаружит это сам, по пропаданию линка на Mon-порту или по прекращению возврата heartbeat, и переведёт сегмент в режим обхода ([раздел 5.5](#55-автоматическое-переключение-в-tapactive-bypass-при-потере-канала)); падение линка оператора, наоборот, не видно на балансировщике. При диагностике нужно проверять состояние всех четырёх портов сегмента. В описании линка балансировщика рекомендуется указывать, к какому байпасу и какому его сегменту подключён линк ([раздел 8.4](balancer-config.md)).
### 3.2.2. Режим Inline — основной рабочий режим
### 5.2.2. Режим Inline — основной рабочий режим
**Inline** — основной рабочий режим байпаса. В этом режиме трафик прозрачно пропускается насквозь от оборудования оператора к балансировщику и обратно:
@@ -72,7 +72,7 @@
Весь трафик оператора проходит через ТСПУ и подвергается анализу и фильтрации. Это штатный режим работы при нормальном функционировании всего оборудования.
### 3.2.3. Режим TAP — копирование трафика без влияния на оператора
### 5.2.3. Режим TAP — копирование трафика без влияния на оператора
**TAP** — режим зеркалирования (копирования) трафика. В этом режиме:
@@ -90,7 +90,7 @@
В режиме TAP система фильтрации получает **полную копию** всего трафика оператора, но **никаким образом не может на него повлиять** — ни заблокировать, ни модифицировать. Это очень удобный **режим отладки**: можно настраивать систему фильтрации и выявлять проблемы при полной гарантии, что операторский трафик не пострадает.
### 3.2.4. Режим Active Bypass — замыкание без копирования
### 5.2.4. Режим Active Bypass — замыкание без копирования
**Active Bypass** — режим чистого обхода. Практически идентичен режиму TAP, за исключением того, что **копия трафика в сторону балансировщика не отправляется**:
@@ -100,9 +100,9 @@
Mon0 Mon1 ← линки up, heartbeat продолжается
```
Каналы оператора замыкаются активной электроникой байпаса, ТСПУ полностью исключено из пути прохождения трафика. Порты Mon0/Mon1 при этом остаются включёнными: линки в сторону балансировщика не падают, операторский трафик на них не подаётся, но heartbeat-пакеты продолжают отправляться — благодаря этому байпас обнаруживает восстановление пути через балансировщик и возвращается в Inline. Режим включается программно — по команде или автоматически при потере канала до балансировщика ([раздел 3.5](#35-автоматическое-переключение-в-tapactive-bypass-при-потере-канала)).
Каналы оператора замыкаются активной электроникой байпаса, ТСПУ полностью исключено из пути прохождения трафика. Порты Mon0/Mon1 при этом остаются включёнными: линки в сторону балансировщика не падают, операторский трафик на них не подаётся, но heartbeat-пакеты продолжают отправляться — благодаря этому байпас обнаруживает восстановление пути через балансировщик и возвращается в Inline. Режим включается программно — по команде или автоматически при потере канала до балансировщика ([раздел 5.5](#55-автоматическое-переключение-в-tapactive-bypass-при-потере-канала)).
### 3.2.5. Режим Passive Bypass — аварийное оптическое замыкание канала
### 5.2.5. Режим Passive Bypass — аварийное оптическое замыкание канала
**Passive Bypass** — аварийный режим, в который байпас переходит автоматически при **отключении электропитания**, а также при отказе своей активной электроники (её контролирует внутренний сторожевой таймер). Каналы замыкаются на физическом уровне оптическим переключателем, который в обесточенном состоянии соединяет волокна Net0 и Net1 напрямую, минуя приёмопередатчики байпаса:
@@ -122,13 +122,13 @@
Оптический бюджет для двух режимов считается по-разному. В режиме Inline каждая сторона оператора линкуется с сетевыми портами байпаса, поэтому бюджет — это своё плечо волокна плюс вносимые потери байпаса (по спецификации Silicom около 1–2 дБ; они присутствуют и в Inline, и в Passive Bypass). В режиме Passive Bypass устройства оператора линкуются напрямую друг с другом, и их трансиверы должны перекрывать сумму обоих плеч волокна плюс те же вносимые потери — это более жёсткое требование, и именно оно закладывается при проектировании стыка. Кроме того, на обеих сторонах канала должны стоять совместимые трансиверы: тип, длина волны, скорость и настройки FEC на 100G.
### 3.2.6. Переключение между режимами и влияние на оператора
### 5.2.6. Переключение между режимами и влияние на оператора
Ключевое преимущество байпасов Silicom — переключение между режимами **Inline**, **TAP** и **Active Bypass** выполняется активной электроникой без изменения состояния оптических линков оператора и происходит **безболезненно для оператора связи**:
- порты оператора **не флапают** (не падают);
- при ручном переключении теряются лишь единичные пакеты — те, которые уже ушли в сторону балансировщика, но не успели вернуться в момент переключения;
- при автоматическом переключении к этому добавляется время обнаружения аварии — окно контроля возврата heartbeat (по умолчанию 20 мс, см. [раздел 3.4](#34-мониторинг-каналов-heartbeat-пакеты-байпаса)), в течение которого трафик канала не проходит;
- при автоматическом переключении к этому добавляется время обнаружения аварии — окно контроля возврата heartbeat (по умолчанию 20 мс, см. [раздел 5.4](#54-мониторинг-каналов-heartbeat-пакеты-байпаса)), в течение которого трафик канала не проходит;
- такие перерывы, как правило, **незаметны** ни для оператора, ни для абонентов — пропадание трафика на доли секунды восстанавливается протоколами верхних уровней.
Сводная таблица режимов:
@@ -140,29 +140,29 @@
| **Active Bypass** | Замкнут напрямую | Нет | up, heartbeat идут | Без флапа |
| **Passive Bypass** | Замкнут напрямую | Нет | отключены от канала оператора (при обесточивании — down) | Флапы линков при входе и при возврате в Inline |
## 3.3. Байпасы GL Sun (пилотный проект, Урал)
## 5.3. Байпасы GL Sun (пилотный проект, Урал)
Байпасы GL Sun — оптические байпасы (производитель Guilin GLsun, КНР), используемые в рамках **пилотного проекта на Урале**. По сравнению с Silicom они значительно проще и имеют ряд существенных ограничений.
### 3.3.1. Отличие от Silicom: только пассивный байпас
### 5.3.1. Отличие от Silicom: только пассивный байпас
Байпас GL Sun — это оптический переключатель без собственных сетевых портов: в устройствах этого класса одно 1U-шасси защищает от одной до четырёх линий, время оптического переключения — единицы миллисекунд (по спецификациям GLSUN менее 8–10 мс), управление — по RS-232 и Ethernet (web-интерфейс и командный протокол поверх TCP). В применённой в пилотном проекте конфигурации байпас поддерживает **только один механизм переключения** — оптическое замыкание канала, эквивалент режима Passive Bypass у Silicom; режимов TAP и Active Bypass с безболезненным переключением у него нет. Фактически GL Sun умеет только:
- **пропускать трафик** через себя (аналог Inline);
- **замыкать канал** оптически (аналог Passive Bypass) — при пропадании питания, при прекращении heartbeat-пакетов или по команде.
Требования к стыку те же, что и для пассивного обхода Silicom ([раздел 3.2.5](#325-режим-passive-bypass--аварийное-оптическое-замыкание-канала)): совместимые трансиверы с обеих сторон и запас оптического бюджета на вносимые потери переключателя. Для GL Sun это критичнее — прямое замыкание происходит при каждом переключении, а не только в аварии.
Требования к стыку те же, что и для пассивного обхода Silicom ([раздел 5.2.5](#525-режим-passive-bypass--аварийное-оптическое-замыкание-канала)): совместимые трансиверы с обеих сторон и запас оптического бюджета на вносимые потери переключателя. Для GL Sun это критичнее — прямое замыкание происходит при каждом переключении, а не только в аварии.
Байпас GL Sun не генерирует heartbeat-пакеты самостоятельно — он работает как сторожевой таймер и лишь ожидает подтверждений от защищаемого устройства. Heartbeat-пакеты отправляет **балансировщик** (или **фильтр**, если балансировщика на площадке нет — на Урале есть несколько таких площадок), работая с байпасом в активном режиме. Обмен идёт по IP (TCP) на адрес байпаса через сеть управления, а не через порты данных, и байпас должен отвечать на эти пакеты; поэтому проверяется работоспособность самого балансировщика и сети управления, а не оптического пути через него:
- на балансировщике задаются IPv4-адрес и порт байпаса, период отправки, группа балансировки, при активном состоянии которой отправляются heartbeat-пакеты, и список линков байпаса, для которых выполняется проверка (это сущности самого байпаса, например 01 и 02); дополнительно задаются тип сервиса и автоматический возврат трафика в основной режим после восстановления группы балансировки — не всегда полезная опция ([раздел 21.8](21.md));
- на фильтре (площадки без балансировщика) аналогичная секция bypass в конфигурации задаёт IP-адрес байпаса, интервал отправки и список каналов ([раздел 16.7](16.md)).
- на балансировщике задаются IPv4-адрес и порт байпаса, период отправки, группа балансировки, при активном состоянии которой отправляются heartbeat-пакеты, и список линков байпаса, для которых выполняется проверка (это сущности самого байпаса, например 01 и 02); дополнительно задаются тип сервиса и автоматический возврат трафика в основной режим после восстановления группы балансировки — не всегда полезная опция ([раздел 8.8](balancer-config.md));
- на фильтре (площадки без балансировщика) аналогичная секция bypass в конфигурации задаёт IP-адрес байпаса, интервал отправки и список каналов ([раздел 16.7](filter-acl-pools.md)).
Состояние Bypass Watchdog держится в `active`, пока группа балансировки активна и байпас подтверждает приём. Если группа балансировки перешла в неактивное состояние, балансировщик перестаёт отправлять heartbeat-пакеты, состояние становится `disconnected`, и байпас оптически замыкает контролируемые линии ([раздел 22.7](22.md)). Обратная сторона такой схемы: авария в сегменте управления сама по себе приводит к аппаратному обходу и флапу линков оператора, хотя тракт обработки трафика исправен — это надо учитывать при работах в сети управления площадок с GL Sun. Следствие для пилотного проекта: при потере связи даже с одним фильтром вся площадка переводилась на аппаратный байпас с флапом линков у оператора, а для возврата площадки в работу требовалось заводить работы и повторный флап; в федеральном проекте программно байпасится только затронутая группа портов балансировщика, без переключения аппаратного байпаса ([раздел 4.6](04.md)).
Состояние Bypass Watchdog держится в `active`, пока группа балансировки активна и байпас подтверждает приём. Если группа балансировки перешла в неактивное состояние, балансировщик перестаёт отправлять heartbeat-пакеты, состояние становится `disconnected`, и байпас оптически замыкает контролируемые линии ([раздел 9.7](balancer-monitoring.md)). Обратная сторона такой схемы: авария в сегменте управления сама по себе приводит к аппаратному обходу и флапу линков оператора, хотя тракт обработки трафика исправен — это надо учитывать при работах в сети управления площадок с GL Sun. Следствие для пилотного проекта: при потере связи даже с одним фильтром вся площадка переводилась на аппаратный байпас с флапом линков у оператора, а для возврата площадки в работу требовалось заводить работы и повторный флап; в федеральном проекте программно байпасится только затронутая группа портов балансировщика, без переключения аппаратного байпаса ([раздел 6.6](balancer.md)).
В федеральном проекте эта схема **не актуальна**: байпасы Silicom самостоятельно отправляют heartbeat-пакеты и самостоятельно проверяют доступность интерфейсов, поэтому логика работы с ними иная и на балансировщике для них ничего настраивать не нужно.
### 3.3.2. Флап линков при каждом переключении
### 5.3.2. Флап линков при каждом переключении
Каждое переключение режима работы байпаса GL Sun — это **флап линков оператора**: оптический переключатель физически меняет пару соединённых трансиверов (оператор ↔ ТСПУ на оператор ↔ оператор), и даже при времени переключения менее 10 мс приёмники на стороне оператора фиксируют потерю и повторное появление сигнала. Оператор видит падение и восстановление интерфейсов, что может приводить к:
@@ -170,9 +170,9 @@
- заметному перерыву в прохождении трафика;
- необходимости согласовывать возврат площадки в работу как плановые работы — с повторным флапом.
Безфлапового переключения, как у Silicom ([раздел 3.2.6](#326-переключение-между-режимами-и-влияние-на-оператора)), у GL Sun нет.
Безфлапового переключения, как у Silicom ([раздел 5.2.6](#526-переключение-между-режимами-и-влияние-на-оператора)), у GL Sun нет.
## 3.4. Мониторинг каналов: Heartbeat-пакеты байпаса
## 5.4. Мониторинг каналов: Heartbeat-пакеты байпаса
Байпас Silicom осуществляет **постоянный мониторинг доступности каналов** в сторону балансировщика с помощью специальных **heartbeat-пакетов**, которые генерирует сам, без участия внешнего программного обеспечения.
@@ -199,14 +199,14 @@
По документации Silicom heartbeat-пакеты по умолчанию отправляются каждые 5 мс, а окно контроля составляет 20 мс; оба параметра настраиваются: интервал от 3 мс до 10 с, окно контроля от 10 мс до 50 с.
Heartbeat-пакеты байпаса Silicom — небольшие служебные Ethernet-кадры; формат кадра задаётся в настройках байпаса. По умолчанию это IPX-пакет, то есть не IP; по запросу RDP.ru на устанавливаемых байпасах формат заменяется на согласованный с разработчиком балансировщика вариант, прохождение которого проверялось на стендовых тестах. Балансировщик не отправляет такие кадры на фильтры, а прозрачно передаёт в парный порт линка; в схеме без балансировщика ([раздел 2.3](02.md)) их без обработки пропускает в парный порт фильтр, и контур проверки замыкается на фильтре.
Heartbeat-пакеты байпаса Silicom — небольшие служебные Ethernet-кадры; формат кадра задаётся в настройках байпаса. По умолчанию это IPX-пакет, то есть не IP; по запросу RDP.ru на устанавливаемых байпасах формат заменяется на согласованный с разработчиком балансировщика вариант, прохождение которого проверялось на стендовых тестах. Балансировщик не отправляет такие кадры на фильтры, а прозрачно передаёт в парный порт линка; в схеме без балансировщика ([раздел 2.3](traffic-flow.md)) их без обработки пропускает в парный порт фильтр, и контур проверки замыкается на фильтре.
Важно: при наличии балансировщика heartbeat-пакеты байпаса **не доходят до фильтров** — они заворачиваются обратно на уровне балансировщика. Таким образом, существуют **две независимые стадии** проверки отказоустойчивости:
1. **Байпас → Балансировщик** — heartbeat-пакеты байпаса проверяют доступность каналов до балансировщика;
2. **Балансировщик → Фильтр** — keep-alive-пакеты балансировщика проверяют доступность и работоспособность фильтров (подробнее — в [разделе 4.6](04.md)).
2. **Балансировщик → Фильтр** — keep-alive-пакеты балансировщика проверяют доступность и работоспособность фильтров (подробнее — в [разделе 6.6](balancer.md)).
## 3.5. Автоматическое переключение в TAP/Active Bypass при потере канала
## 5.5. Автоматическое переключение в TAP/Active Bypass при потере канала
Если heartbeat-пакеты, отправленные через Mon0, не возвращаются в Mon1 (или наоборот) в течение окна контроля, байпас считает, что **канал связи до балансировщика неисправен**. Кроме потери heartbeat, байпас уходит в обход при пропадании линка на Mon-портах, при зависании подключённого inline-устройства и по команде оператора.
@@ -227,13 +227,13 @@ Heartbeat-пакеты байпаса Silicom — небольшие служе
(± копия на Mon0/Mon1, в зависимости от настроек; heartbeat продолжаются)
```
Такое автоматическое переключение обеспечивает **защиту трафика оператора** без ручного вмешательства: если выйдет из строя балансировщик или канал между байпасом и балансировщиком, каналы оператора будут замкнуты напрямую, и связность сети сохранится. При наличии балансировщика отказ отдельного фильтра байпас не видит — его обрабатывает балансировщик программным байпасом группы портов ([раздел 4.6.2](04.md)); в схеме без балансировщика контур heartbeat проходит через фильтр, поэтому его отказ приводит к переключению байпаса.
Такое автоматическое переключение обеспечивает **защиту трафика оператора** без ручного вмешательства: если выйдет из строя балансировщик или канал между байпасом и балансировщиком, каналы оператора будут замкнуты напрямую, и связность сети сохранится. При наличии балансировщика отказ отдельного фильтра байпас не видит — его обрабатывает балансировщик программным байпасом группы портов ([раздел 6.6.2](balancer.md)); в схеме без балансировщика контур heartbeat проходит через фильтр, поэтому его отказ приводит к переключению байпаса.
Отдельно стоит помнить о возврате из **Passive Bypass**: он даёт второй флап линков оператора, поскольку оптический тракт снова переключается с прямого соединения Net0 ↔ Net1 на приёмопередатчики байпаса. Возврат площадки в работу после аварийного обхода поэтому согласуется с оператором как плановые работы.
Побочный эффект возврата из байпаса в Inline: на фильтры сразу приходит большой объём трафика, и большинство сессий видны «с середины», без начального TCP SYN. Чтобы такие сессии заводились в обработку, на фильтрах должен быть включён приём TCP-сессий без SYN ([раздел 15.2.6](15.md)).
Побочный эффект возврата из байпаса в Inline: на фильтры сразу приходит большой объём трафика, и большинство сессий видны «с середины», без начального TCP SYN. Чтобы такие сессии заводились в обработку, на фильтрах должен быть включён приём TCP-сессий без SYN ([раздел 15.2.6](filter-interfaces.md)).
## 3.6. Развитие: отечественные байпасы
## 5.6. Развитие: отечественные байпасы
По открытым данным, с 2022 года Silicom прекратил техническую поддержку своего оборудования для ТСПУ, и для проекта был разработан отечественный байпас: разработчиком решения называют компанию «Булат», программное обеспечение — RDP.ru, аппаратную часть — АО «Сигналтек». С 2023 года также тестируются оптические переключатели российского производства, созданные по заказу Роскомнадзора.
@@ -243,4 +243,4 @@ Heartbeat-пакеты байпаса Silicom — небольшие служе
---
[← Оглавление](../README.md) · [← Раздел 2: Прохождение трафика через ТСПУ](02.md) · [Раздел 4: Балансировщик →](04.md)
[← Оглавление](../README.md) · [← Раздел 4: Эшелонированная система](echelon.md) · [Раздел 6: Балансировщик: принцип работы →](balancer.md)
+9 -9
View File
@@ -1,10 +1,10 @@
# 9. Центральная система управления (ЦСУ)
# 21. Центральная система управления (ЦСУ)
[← Оглавление](../README.md) · [← Раздел 8: Формирование протокольных списков](08.md)
[← Оглавление](../README.md) · [← Раздел 20: Сегмент управления ТСПУ](management-segment.md)
---
## 9.1. Архитектура: две независимые площадки (основная и резервная)
## 21.1. Архитектура: две независимые площадки (основная и резервная)
Центральная система управления (ЦСУ) — это централизованная платформа, через которую осуществляется управление всеми ТСПУ, развёрнутыми по стране. ЦСУ располагается в **двух независимых ЦОДах**:
@@ -32,7 +32,7 @@
Обе площадки **связаны между собой** выделенным каналом связи, по которому осуществляется репликация данных и обеспечивается отказоустойчивость. Пользователи (инженеры эксплуатации) также попадают на ЦСУ через **шифрованные VPN-каналы**.
## 9.2. Связь с ТСПУ через VPN (криптошлюз «Континент»)
## 21.2. Связь с ТСПУ через VPN (криптошлюз «Континент»)
Связь между площадками ТСПУ и центральной системой управления осуществляется через **VPN**, построенный на криптошлюзах **«Континент»** (модель IPC-3000 или аналогичная).
@@ -45,9 +45,9 @@
Каждая площадка ТСПУ связана **как с основной, так и с резервной** площадкой ЦСУ, что обеспечивает непрерывность управления при выходе из строя одной из площадок.
Криптошлюз «Континент» на площадке ТСПУ выступает **шлюзом по умолчанию** для всех устройств сегмента управления (адрес .254 в подсети управления — подробнее в [разделе 10](10.md)).
Криптошлюз «Континент» на площадке ТСПУ выступает **шлюзом по умолчанию** для всех устройств сегмента управления (адрес .254 в подсети управления — подробнее в [разделе 20](management-segment.md)).
## 9.3. Масштаб: ~350 площадок, ~5000 устройств
## 21.3. Масштаб: ~350 площадок, ~5000 устройств
На текущем этапе федерального проекта ЦСУ обслуживает:
@@ -59,7 +59,7 @@
Предполагается дальнейшее расширение по мере развития проекта.
## 9.4. Подсистемы ЦСУ: формирование списков, мониторинг, логирование, картография
## 21.4. Подсистемы ЦСУ: формирование списков, мониторинг, логирование, картография
ЦСУ представляет собой **многокомпонентную распределённую систему**, состоящую из нескольких подсистем, каждая из которых выполняет свою задачу:
@@ -75,7 +75,7 @@
Поддержкой и настройкой ЦСУ занимается **команда DevOps**. Инженеры, обслуживающие ТСПУ, являются **пользователями** ЦСУ — они используют её интерфейсы для мониторинга и управления, но не занимаются настройкой самой системы. Заливка программного обеспечения на ЦСУ также выполняется командой DevOps, тогда как заливка ПО на оборудование ТСПУ выполняется совместно инженерами площадки и разработчиками (ДЦА готовит конфигурации и новое ПО, инженеры на местах выполняют установку).
## 9.5. Новая ЦСУ для федерального проекта (замена уральской)
## 21.5. Новая ЦСУ для федерального проекта (замена уральской)
В ходе развития проекта АСБИ существовали **две версии** ЦСУ:
@@ -92,4 +92,4 @@
---
[← Оглавление](../README.md) · [← Раздел 8: Формирование протокольных списков](08.md) · [Раздел 10: Сегмент управления ТСПУ →](10.md)
[← Оглавление](../README.md) · [← Раздел 20: Сегмент управления ТСПУ](management-segment.md) · [Раздел 22: Распознавание протоколов и двухстадийная блокировка →](protocol-blocking.md)
+19 -19
View File
@@ -1,10 +1,10 @@
# 7. Эшелонированная система (ТСПУ тип Б)
# 4. Эшелонированная система (ТСПУ тип Б)
[← Оглавление](../README.md) · [← Раздел 6: Места установки ТСПУ](06.md)
[← Оглавление](../README.md) · [← Раздел 3: Места установки ТСПУ](placement.md)
---
## 7.1. Назначение: обработка трафика, не прошедшего через ТСПУ тип А
## 4.1. Назначение: обработка трафика, не прошедшего через ТСПУ тип А
Эшелонированная система (ТСПУ тип Б, второй эшелон) предназначена для **обработки трафика, который не прошёл через стандартные ТСПУ** (тип А, первый эшелон).
@@ -14,7 +14,7 @@
Идея эшелонирования возникла как способ **сократить общее количество ТСПУ**, развёртываемых по стране. Вместо установки ТСПУ тип А у каждого мелкого оператора на уровне доступа, можно у нескольких крупных операторов в ключевых точках установить двухстадийную систему фильтрации, что позволяет снизить затраты на реализацию проекта.
## 7.2. Проблема асимметричного трафика у крупных операторов
## 4.2. Проблема асимметричного трафика у крупных операторов
Сеть крупного оператора связи, если идти от абонентов к выходу в интернет, делится на несколько сегментов:
@@ -48,13 +48,13 @@
В таких случаях традиционная схема фильтрации **не работает**: на фильтре ТСПУ тип А сессия «не соберётся», потому что одна сторона сессии проходит через ТСПУ, а ответная — возвращается иным путём, минуя его. Для обработки такого **асимметричного трафика** и предназначен ТСПУ тип Б.
## 7.3. Балансировщик Eco Highway
## 4.3. Балансировщик Eco Highway
Эшелонированная система, как и ТСПУ тип А, состоит из балансировщика и фильтров, но с существенными отличиями. Балансировщик эшелона называется **Eco Highway** (в отличие от **EcoFilter Balancer** в ТСПУ тип А). Аппаратная платформа **одинакова** — это тот же одноюнитовый 32-портовый коммутатор на базе чипа **Barefoot Tofino**. Различается только **программное обеспечение**.
Ключевое отличие Eco Highway: он **сам выполняет фильтрацию трафика** на основе заголовков L3/L4 (IP-адреса, порты), а не просто распределяет трафик по фильтрам.
### 7.3.1. BGP-загрузка списков фильтрации из ЦСУ
### 4.3.1. BGP-загрузка списков фильтрации из ЦСУ
В отличие от EcoFilter Balancer, где правила фильтрации (flow rules) задаются вручную и исчисляются единицами, на Eco Highway списки фильтрации:
@@ -72,7 +72,7 @@
| Белый список | Ресурсы, исключённые из фильтрации |
| Port redirect | Трафик, подлежащий отправке на фильтры |
### 7.3.2. Блокировка по IP-адресам на уровне балансировщика (Telegram, реестр РКН)
### 4.3.2. Блокировка по IP-адресам на уровне балансировщика (Telegram, реестр РКН)
Eco Highway самостоятельно блокирует трафик, который можно идентифицировать по IP-адресам и портам — **без отправки на фильтры**:
@@ -81,7 +81,7 @@ Eco Highway самостоятельно блокирует трафик, кот
Принципиальное отличие от ТСПУ тип А: на первом эшелоне блокировка протоколов (Telegram и др.) выполняется **на фильтрах** с помощью DPI. На втором эшелоне эта блокировка выполняется **на самом балансировщике** по IP-спискам. Более того, в прошивке фильтров, предназначенных для эшелонированной системы, возможности блокировки протоколов (например, Telegram) **отсутствуют** — они просто не нужны, поскольку этим занимается Eco Highway.
### 7.3.3. Фильтры в режиме On-a-stick, VLAN-разделение LAN/WAN
### 4.3.3. Фильтры в режиме On-a-stick, VLAN-разделение LAN/WAN
Фильтры в эшелонированной системе подключены **иначе**, чем в ТСПУ тип А:
@@ -99,7 +99,7 @@ Eco Highway самостоятельно блокирует трафик, кот
Таким образом, логическое разделение LAN/WAN сохраняется, но на уровне физики все интерфейсы фильтра однотипные.
### 7.3.4. Фильтры занимаются только URL-фильтрацией по реестру РКН
### 4.3.4. Фильтры занимаются только URL-фильтрацией по реестру РКН
Поскольку блокировка по IP-адресам и протоколам выполняется самим Eco Highway, фильтры в эшелонированной системе занимаются **исключительно URL-фильтрацией** по реестру Роскомнадзора — той частью блокировки, которая требует глубокого анализа содержимого пакетов (DPI) и не может быть выполнена на уровне балансировщика.
@@ -107,13 +107,13 @@ Eco Highway самостоятельно блокирует трафик, кот
Благодаря упрощённому функционалу (нет распознавания протоколов, нет логирования соединений) производительность фильтров на эшелоне **несколько выше**, чем на ТСПУ тип А — примерно на 15%. Однако разница невелика, и при проектировании рекомендуется использовать те же расчётные цифры производительности, что и для ТСПУ тип А.
## 7.4. Два конвейера (Pipeline) в Eco Highway
## 4.4. Два конвейера (Pipeline) в Eco Highway
Внутри чипа Barefoot Tofino, на котором построен балансировщик, существуют **два независимых конвейера** (Pipeline 1 и Pipeline 2) — логические структуры, обрабатывающие входящий трафик на высокой скорости. Каждый конвейер обладает собственным **независимым набором ресурсов**: памятью и вычислительной мощностью.
На обычном балансировщике (EcoFilter Balancer) оба конвейера **настроены идентично** — в какой бы конвейер ни попал пакет, обработка будет одинаковой. На Eco Highway конвейеры **настраиваются по-разному** — это позволяет в два раза увеличить доступное количество правил фильтрации.
### 7.4.1. Разделение портов между конвейерами
### 4.4.1. Разделение портов между конвейерами
Все физические порты балансировщика **жёстко привязаны** к одному из двух конвейеров на заводском уровне — примерно половина портов обслуживается Pipeline 1, половина — Pipeline 2.
@@ -124,7 +124,7 @@ Eco Highway самостоятельно блокирует трафик, кот
Принцип чётных/нечётных портов, используемый на EcoFilter Balancer, на эшелоне **не соблюдается** и не имеет значения.
### 7.4.2. Физическая перемычка между конвейерами
### 4.4.2. Физическая перемычка между конвейерами
Поскольку конвейеры **логически изолированы** друг от друга внутри чипа (прямой связи между ними нет), для передачи пакета из одного конвейера в другой используется **физическая перемычка** (jumper) — кабель, соединяющий порт одного конвейера с портом другого.
@@ -151,7 +151,7 @@ Eco Highway самостоятельно блокирует трафик, кот
Перемычка должна быть рассчитана на **весь объём трафика**, проходящего через балансировщик. В худшем случае весь трафик может пройти через перемычку, поэтому она не должна стать узким местом. При большом количестве высокоскоростных каналов может потребоваться несколько перемычек.
### 7.4.3. Прохождение пакета: drop / отправка на фильтр / переход на второй конвейер
### 4.4.3. Прохождение пакета: drop / отправка на фильтр / переход на второй конвейер
Когда пакет попадает на вход Eco Highway, он проходит следующий путь:
@@ -167,13 +167,13 @@ Eco Highway самостоятельно блокирует трафик, кот
Также важно: хотя порты привязаны к конвейерам на входе, на **выходе** пакет может быть отправлен через **любой порт** — это логическая сущность обработки, а не жёсткая привязка входа к выходу. Пакет, пришедший через определённый LAN-порт, всё равно вернётся через **парный** ему WAN-порт (сохраняется привязка к линку оператора), но маршрут внутри балансировщика может быть произвольным.
### 7.4.4. Удвоение количества правил фильтрации
### 4.4.4. Удвоение количества правил фильтрации
Разделение правил между двумя конвейерами позволяет **в два раза увеличить** общее количество правил фильтрации на Eco Highway. Память внутри чипа Barefoot Tofino, хранящая эти правила, является **очень быстрой** (работает на скорости провода), но крайне ограниченной по объёму — это, по сути, программируемый TCAM (Content-Addressable Memory). Каждое дополнительное правило — на вес золота.
На обычном EcoFilter Balancer, где оба конвейера идентичны, удвоение невозможно — один и тот же набор правил дублируется. На Eco Highway каждый конвейер несёт **свой уникальный набор**, удваивая суммарную ёмкость.
## 7.5. Отличия EcoFilter Balancer от Eco Highway
## 4.5. Отличия EcoFilter Balancer от Eco Highway
| Характеристика | EcoFilter Balancer (тип А) | Eco Highway (тип Б) |
| --------------------------- | -------------------------- | ------------------------------------------- |
@@ -190,7 +190,7 @@ Eco Highway самостоятельно блокирует трафик, кот
Разрабатываются обе платформы **одной группой программистов**, и код во многом пересекается. Решения, созданные в рамках реализации Eco Highway, нередко переносятся на EcoFilter Balancer (например, команды программного байпаса), и наоборот.
## 7.6. Отсутствие логирования на Eco Highway (только real-time)
## 4.6. Отсутствие логирования на Eco Highway (только real-time)
На Eco Highway **не ведётся логирование** — информация о дропнутых и перенаправленных пакетах **не отправляется** на серверы логирования. Доступен только **просмотр в реальном времени** (real-time) на самом устройстве, без сохранения истории.
@@ -204,14 +204,14 @@ Eco Highway самостоятельно блокирует трафик, кот
- **Программный байпас** — можно перевести Eco Highway в режим полного программного байпаса и проверить, восстанавливается ли доступность у оператора;
- **Проверка на фильтрах** — убедиться, что нужная сессия не обрабатывается и на фильтрах второго эшелона.
## 7.7. Прозрачный пропуск трафика, уже обработанного ТСПУ тип А
## 4.7. Прозрачный пропуск трафика, уже обработанного ТСПУ тип А
Eco Highway должен уметь **различать** трафик, уже обработанный ТСПУ тип А на первом эшелоне, и трафик, который первый эшелон не видел.
Трафик, который **уже прошёл** через ТСПУ тип А (на нижнем уровне, на уровне доступа), **не должен обрабатываться повторно** на втором эшелоне. Для этого на Eco Highway предусмотрена возможность **прозрачного пропуска** такого трафика — он просто «пролетает насквозь» без фильтрации.
Это позволяет избежать двойной обработки и связанных с ней проблем (удвоение сессий, ложные срабатывания, избыточная нагрузка), аналогичных проблемам двойного прохождения при on-a-stick подключении (подробнее — в [разделе 6.4.3](06.md)).
Это позволяет избежать двойной обработки и связанных с ней проблем (удвоение сессий, ложные срабатывания, избыточная нагрузка), аналогичных проблемам двойного прохождения при on-a-stick подключении (подробнее — в [разделе 3.4.3](placement.md)).
---
[← Оглавление](../README.md) · [← Раздел 6: Места установки ТСПУ](06.md) · [Раздел 8: Формирование протокольных списков →](08.md)
[← Оглавление](../README.md) · [← Раздел 3: Места установки ТСПУ](placement.md) · [Раздел 5: Байпас →](bypass.md)
+8 -8
View File
@@ -1,12 +1,12 @@
# 16. Фильтр: ACL и пулы — запуск трафика на обработку
[← Оглавление](../README.md) · [← Раздел 15: Фильтр: настройка интерфейсов и общих параметров](15.md)
[← Оглавление](../README.md) · [← Раздел 15: Фильтр: настройка интерфейсов и общих параметров](filter-interfaces.md)
---
Чтобы фильтр начал обрабатывать трафик, необходимо выполнить два действия: **создать пул** и **привязать к нему ACL**. Без этих настроек — какие бы DPI-листы ни были сконфигурированы — весь трафик будет прозрачно пропускаться через устройство без какой-либо обработки.
Это одна из ключевых стадий в пути прохождения пакета через фильтр (подробнее — в [разделе 5.1](05.md)): IP-пакет должен попасть в ACL и в пул, чтобы далее передаваться на обработку движком DPI.
Это одна из ключевых стадий в пути прохождения пакета через фильтр (подробнее — в [разделе 10.1](filter.md)): IP-пакет должен попасть в ACL и в пул, чтобы далее передаваться на обработку движком DPI.
> **Важно:** при заводской (дефолтной) конфигурации фильтра пулы и ACL **отсутствуют**. Их необходимо создать вручную при первоначальной настройке.
@@ -74,7 +74,7 @@ ACL (Access Control List) — это набор правил, определяю
apply
```
Правила обрабатываются **по порядку номеров** — первое совпавшее правило определяет судьбу пакета. Это аналогично работе ACL на маршрутизаторах: если пакет совпал с правилом `allow`, он направляется в пул; если с правилом `deny` — этот пул для пакета больше не рассматривается и проверяются следующие пулы; не попав ни в один пул, пакет прозрачно проходит через фильтр ([раздел 5.1.2](05.md)).
Правила обрабатываются **по порядку номеров** — первое совпавшее правило определяет судьбу пакета. Это аналогично работе ACL на маршрутизаторах: если пакет совпал с правилом `allow`, он направляется в пул; если с правилом `deny` — этот пул для пакета больше не рассматривается и проверяются следующие пулы; не попав ни в один пул, пакет прозрачно проходит через фильтр ([раздел 10.1.2](filter.md)).
## 16.2. Создание пула: `create pool`, тип = fake (без NAT)
@@ -165,13 +165,13 @@ ACL (Access Control List) — это набор правил, определяю
Помимо connection log, в пуле присутствуют:
- **Тайм-ауты** — наследуются из секции `nat_defaults` при создании пула (подробнее — в [разделе 15.3](15.md)). При необходимости могут быть переопределены на уровне пула;
- **Тайм-ауты** — наследуются из секции `nat_defaults` при создании пула (подробнее — в [разделе 15.3](filter-interfaces.md)). При необходимости могут быть переопределены на уровне пула;
- **Ограничения на пользователей (limiter)** — актуальны только для NAT, в проекте ТСПУ **не используются**;
- **Параметр `hairpin`** — по умолчанию включён, актуален для режима с трансляцией адресов (позволяет абонентам обмениваться трафиком через NAT, не выходя вовне). В проекте ТСПУ менять не требуется.
## 16.6. IPv6 в пуле
Поддержка IPv6 в пуле настраивается аналогично глобальным настройкам IPv6 (подробнее — в [разделе 15.4](15.md)):
Поддержка IPv6 в пуле настраивается аналогично глобальным настройкам IPv6 (подробнее — в [разделе 15.4](filter-interfaces.md)):
| Параметр | Описание |
| --------------------- | ------------------------------------------------------------ |
@@ -197,14 +197,14 @@ ACL (Access Control List) — это набор правил, определяю
| **Интервал отправки** | Период отправки heartbeat-пакетов |
| **Список каналов** | Каналы (линки) байпаса, по которым выполняется проверка |
На Урале осталось несколько площадок с такой схемой. С байпасами Silicom, которые сами отправляют heartbeat-пакеты и сами проверяют доступность каналов, секция не нужна (подробнее о байпасах — в [разделе 3.3](03.md); аналогичная настройка на балансировщике — в [разделе 21.8](21.md)).
На Урале осталось несколько площадок с такой схемой. С байпасами Silicom, которые сами отправляют heartbeat-пакеты и сами проверяют доступность каналов, секция не нужна (подробнее о байпасах — в [разделе 5.3](bypass.md); аналогичная настройка на балансировщике — в [разделе 8.8](balancer-config.md)).
---
### Диагностическая заметка: `show cps` показывает ноль
Если команда `show cps` показывает нулевое количество создаваемых сессий, одна из возможных причин — трафик **не попадает в пул**. Это может означать, что ACL не отбирает трафик: через фильтр могут идти гигабиты и десятки гигабит, но если пакеты не совпадают с правилами ACL привязанного пула, сессии создаваться не будут (подробнее — в [разделе 18.9](18.md)).
Если команда `show cps` показывает нулевое количество создаваемых сессий, одна из возможных причин — трафик **не попадает в пул**. Это может означать, что ACL не отбирает трафик: через фильтр могут идти гигабиты и десятки гигабит, но если пакеты не совпадают с правилами ACL привязанного пула, сессии создаваться не будут (подробнее — в [разделе 18.9](filter-monitoring.md)).
---
[← Оглавление](../README.md) · [← Раздел 15: Фильтр: настройка интерфейсов и общих параметров](15.md) · [Раздел 17: Фильтр: настройка DPI →](17.md)
[← Оглавление](../README.md) · [← Раздел 15: Фильтр: настройка интерфейсов и общих параметров](filter-interfaces.md) · [Раздел 17: Фильтр: настройка DPI →](filter-dpi.md)
+3 -3
View File
@@ -1,6 +1,6 @@
# 13. Фильтр: первоначальная настройка и CLI
[← Оглавление](../README.md) · [← Раздел 12: Сессии и трансляции на фильтре](12.md)
[← Оглавление](../README.md) · [← Раздел 12: Фильтр: сессии и трансляции](filter-sessions.md)
---
@@ -22,7 +22,7 @@
- **Логин:** `admin`
- **Пароль:** `econat`
Данного пользователя можно удалить и создать новых (подробнее о настройке пользователей — в [разделе 14.4](14.md)).
Данного пользователя можно удалить и создать новых (подробнее о настройке пользователей — в [разделе 14.4](filter-subsystems.md)).
## 13.3. Операционный режим (>) и конфигурационный режим (#)
@@ -175,4 +175,4 @@ CLI поддерживает стандартный набор средств н
---
[← Оглавление](../README.md) · [← Раздел 12: Сессии и трансляции на фильтре](12.md) · [Раздел 14: Фильтр: конфигурация подсистем →](14.md)
[← Оглавление](../README.md) · [← Раздел 12: Фильтр: сессии и трансляции](filter-sessions.md) · [Раздел 14: Фильтр: конфигурация подсистем →](filter-subsystems.md)
+4 -4
View File
@@ -1,6 +1,6 @@
# 17. Фильтр: настройка DPI
[← Оглавление](../README.md) · [← Раздел 16: Фильтр: ACL и пулы](16.md)
[← Оглавление](../README.md) · [← Раздел 16: Фильтр: ACL и пулы](filter-acl-pools.md)
---
@@ -100,7 +100,7 @@
- Ошибки на интерфейсе фильтра (в одном случае проблема решилась перезагрузкой фильтра);
- Проблемы на стороне коммутатора или промежуточного оборудования.
При диагностике проблем скачивания следует обращать внимание на скорость и ошибки на management-интерфейсе. Команда `dpi run` позволяет принудительно инициировать обновление всех DPI-листов (подробнее — в [разделе 18.13.4](18.md)).
При диагностике проблем скачивания следует обращать внимание на скорость и ошибки на management-интерфейсе. Команда `dpi run` позволяет принудительно инициировать обновление всех DPI-листов (подробнее — в [разделе 18.13.4](filter-monitoring.md)).
> **Примечание:** запуск `dpi run` не гарантирует, что реестр будет скачан — сервер РКН может ответить, что обновлений нет, и в этом случае ничего скачано не будет.
@@ -195,7 +195,7 @@
- Для **HTTP**: абоненту отправляется HTTP-редирект на страницу-заглушку (по документации производителя — ответ «307 Temporary Redirect»);
- Для **HTTPS**: абоненту и серверу отправляется TCP Reset, разрывающий соединение (поскольку содержимое зашифровано и подмена ответа невозможна).
**Режим ignore** — используется для **первой стадии двухстадийной блокировки**: фильтр распознаёт протоколы и отправляет логи на SPFS, но сам трафик не блокирует. Данные передаются в ЦСУ для формирования очищенных списков (подробнее — в [разделе 8](08.md)).
**Режим ignore** — используется для **первой стадии двухстадийной блокировки**: фильтр распознаёт протоколы и отправляет логи на SPFS, но сам трафик не блокирует. Данные передаются в ЦСУ для формирования очищенных списков (подробнее — в [разделе 22](protocol-blocking.md)).
Также в секции DPI-листа присутствует параметр **logs on/off** — включение журналирования срабатываний данного списка. В проекте ТСПУ эта функциональность, как правило, используется.
@@ -307,4 +307,4 @@ Download URL задаёт источник списков для DPI-листо
---
[← Оглавление](../README.md) · [← Раздел 16: Фильтр: ACL и пулы](16.md) · [Раздел 18: Фильтр: мониторинг и диагностика →](18.md)
[← Оглавление](../README.md) · [← Раздел 16: Фильтр: ACL и пулы](filter-acl-pools.md) · [Раздел 18: Фильтр: мониторинг и диагностика →](filter-monitoring.md)
+2 -2
View File
@@ -1,6 +1,6 @@
# 19. Фильтр: обновление прошивки
[← Оглавление](../README.md) · [← Раздел 18: Фильтр: мониторинг и диагностика](18.md)
[← Оглавление](../README.md) · [← Раздел 18: Фильтр: мониторинг и диагностика](filter-monitoring.md)
---
@@ -117,4 +117,4 @@
---
[← Оглавление](../README.md) · [← Раздел 18: Фильтр: мониторинг и диагностика](18.md) · [Раздел 20: Балансировщик: аппаратная платформа →](20.md)
[← Оглавление](../README.md) · [← Раздел 18: Фильтр: мониторинг и диагностика](filter-monitoring.md) · [Раздел 20: Сегмент управления ТСПУ →](management-segment.md)
+3 -3
View File
@@ -1,6 +1,6 @@
# 15. Фильтр: настройка интерфейсов и общих параметров
[← Оглавление](../README.md) · [← Раздел 14: Фильтр: конфигурация подсистем](14.md)
[← Оглавление](../README.md) · [← Раздел 14: Фильтр: конфигурация подсистем](filter-subsystems.md)
---
@@ -91,7 +91,7 @@
## 15.3. Тайм-ауты сессий и трансляций
В секции `nat_defaults` также настраиваются **тайм-ауты** для сессий и трансляций (подробнее о сессиях и трансляциях — в [разделе 12](12.md)):
В секции `nat_defaults` также настраиваются **тайм-ауты** для сессий и трансляций (подробнее о сессиях и трансляциях — в [разделе 12](filter-sessions.md)):
- Тайм-ауты для **трансляций** и **сессий** задаются **раздельно**;
- Параметры различаются по типу протокола (TCP, UDP, ICMP);
@@ -120,4 +120,4 @@
---
[← Оглавление](../README.md) · [← Раздел 14: Фильтр: конфигурация подсистем](14.md) · [Раздел 16: Фильтр: ACL и пулы →](16.md)
[← Оглавление](../README.md) · [← Раздел 14: Фильтр: конфигурация подсистем](filter-subsystems.md) · [Раздел 16: Фильтр: ACL и пулы →](filter-acl-pools.md)
+5 -5
View File
@@ -1,6 +1,6 @@
# 18. Фильтр: мониторинг и диагностика
[← Оглавление](../README.md) · [← Раздел 17: Фильтр: настройка DPI](17.md)
[← Оглавление](../README.md) · [← Раздел 17: Фильтр: настройка DPI](filter-dpi.md)
---
@@ -202,7 +202,7 @@
**Нулевое значение** может означать:
1. **Трафик не проходит** через фильтр вообще;
2. **Трафик проходит, но не попадает в пул** — ACL не отбирает трафик, сессии не создаются. Через фильтр могут идти гигабиты и десятки гигабит, но `show cps` будет показывать ноль (подробнее — в [разделе 16](16.md)).
2. **Трафик проходит, но не попадает в пул** — ACL не отбирает трафик, сессии не создаются. Через фильтр могут идти гигабиты и десятки гигабит, но `show cps` будет показывать ноль (подробнее — в [разделе 16](filter-acl-pools.md)).
## 18.10. `show statistic` — статистика сессий и пулов, значение Optimal (= 20%)
@@ -243,7 +243,7 @@
## 18.12. Системный журнал: `show syslog`, ротация двух файлов
Помимо логирования на внешний сервер (см. [раздел 14.8](14.md)), логи хранятся **внутри устройства** на локальном разделе.
Помимо логирования на внешний сервер (см. [раздел 14.8](filter-subsystems.md)), логи хранятся **внутри устройства** на локальном разделе.
Особенности внутреннего хранения:
@@ -319,8 +319,8 @@
| `ping <адрес>` | Бесконечный пинг до указанного хоста (прервать — `Ctrl+C`) |
| `traceroute <адрес>` | Трассировка маршрута до хоста |
> **Важно:** ping и traceroute работают **только через management-интерфейс**. Фильтр — это L2-устройство без IP-интерфейсов в тракте данных, поэтому инициировать трафик через LAN/WAN-интерфейсы **невозможно** (подробнее — в [разделе 5.2](05.md)).
> **Важно:** ping и traceroute работают **только через management-интерфейс**. Фильтр — это L2-устройство без IP-интерфейсов в тракте данных, поэтому инициировать трафик через LAN/WAN-интерфейсы **невозможно** (подробнее — в [разделе 10.2](filter.md)).
---
[← Оглавление](../README.md) · [← Раздел 17: Фильтр: настройка DPI](17.md) · [Раздел 19: Фильтр: обновление прошивки →](19.md)
[← Оглавление](../README.md) · [← Раздел 17: Фильтр: настройка DPI](filter-dpi.md) · [Раздел 19: Фильтр: обновление прошивки →](filter-firmware.md)
+3 -3
View File
@@ -1,6 +1,6 @@
# 11. Фильтр: аппаратная платформа
[← Оглавление](../README.md) · [← Раздел 10: Сегмент управления ТСПУ](10.md)
[← Оглавление](../README.md) · [← Раздел 10: Фильтр: принцип работы](filter.md)
---
@@ -108,7 +108,7 @@
Интерфейсы нумеруются с единицы и объединены в пары соседних номеров (te1/te2, te3/te4 …): в каждой паре чётный — LAN, нечётный — WAN.
Этот принцип чётных/нечётных портов **един** для всех моделей и поколений фильтров. Тот же принцип по договорённости принят при проектировании на балансировщиках EcoFilter Balancer, где жёсткой привязки нет ([раздел 4.3.1](04.md)); на Eco Highway он **не соблюдается** ([раздел 7.4.1](07.md)).
Этот принцип чётных/нечётных портов **един** для всех моделей и поколений фильтров. Тот же принцип по договорённости принят при проектировании на балансировщиках EcoFilter Balancer, где жёсткой привязки нет ([раздел 6.3.1](balancer.md)); на Eco Highway он **не соблюдается** ([раздел 4.4.1](echelon.md)).
Разделение LAN/WAN прослеживается через всё оборудование ТСПУ — от байпасов через балансировщики до фильтров. Это фундаментальный принцип архитектуры: трафик от абонентов всегда приходит со стороны LAN, трафик из интернета — со стороны WAN.
@@ -139,4 +139,4 @@
---
[← Оглавление](../README.md) · [← Раздел 10: Сегмент управления ТСПУ](10.md) · [Раздел 12: Сессии и трансляции на фильтре →](12.md)
[← Оглавление](../README.md) · [← Раздел 10: Фильтр: принцип работы](filter.md) · [Раздел 12: Фильтр: сессии и трансляции →](filter-sessions.md)
+6 -6
View File
@@ -1,6 +1,6 @@
# 12. Сессии и трансляции на фильтре
# 12. Фильтр: сессии и трансляции
[← Оглавление](../README.md) · [← Раздел 11: Фильтр: аппаратная платформа](11.md)
[← Оглавление](../README.md) · [← Раздел 11: Фильтр: аппаратная платформа](filter-platform.md)
---
@@ -58,7 +58,7 @@
└──────────────┘ └──────────────┘ └──────────────┘
```
Несмотря на то, что в режиме без NAT поля Local и Global дублируются, структура сессии остаётся прежней — это наследие архитектуры платформы, начинавшейся как CGNAT-устройство (подробнее — в [разделе 11.6](11.md)). На практике это означает, что команды фильтрации с ключевым словом `global` в нашем проекте **не имеют большого смысла** — достаточно использовать `local` и `remote`.
Несмотря на то, что в режиме без NAT поля Local и Global дублируются, структура сессии остаётся прежней — это наследие архитектуры платформы, начинавшейся как CGNAT-устройство (подробнее — в [разделе 11.6](filter-platform.md)). На практике это означает, что команды фильтрации с ключевым словом `global` в нашем проекте **не имеют большого смысла** — достаточно использовать `local` и `remote`.
## 12.4. Направление сессии: Egress (от абонента) / Ingress (к абоненту)
@@ -94,7 +94,7 @@
То есть для пакетов со стороны LAN: Source IP → Local IP, Destination IP → Remote IP.
Для пакетов со стороны WAN: поля **меняются местами** — Destination IP → Local IP, Source IP → Remote IP.
Это **крайне важный принцип** для траблшутинга. Если при просмотре сессий в поле Local IP появляются интернет-адреса (которые там быть не должны), это признак проблемы на пути прохождения трафика — например, **перепутки LAN/WAN** (подробнее — в [разделе 24.6](24.md)).
Это **крайне важный принцип** для траблшутинга. Если при просмотре сессий в поле Local IP появляются интернет-адреса (которые там быть не должны), это признак проблемы на пути прохождения трафика — например, **перепутки LAN/WAN** (подробнее — в [разделе 23.6](troubleshooting.md)).
## 12.6. Связь трансляций и сессий: одна трансляция — много сессий
@@ -122,7 +122,7 @@
## 12.7. Тайм-ауты сессий и трансляций
Тайм-ауты для сессий и трансляций задаются **раздельно** в секции NAT Defaults конфигурации фильтра (подробнее — в [разделе 15.3](15.md)):
Тайм-ауты для сессий и трансляций задаются **раздельно** в секции NAT Defaults конфигурации фильтра (подробнее — в [разделе 15.3](filter-interfaces.md)):
- **Тайм-аут сессии** — время с момента последнего пакета, после которого сессия удаляется;
- **Тайм-аут трансляции** — время с момента удаления последней связанной сессии, после которого удаляется сама трансляция.
@@ -188,4 +188,4 @@ API для удалённого доступа к данным фильтра о
---
[← Оглавление](../README.md) · [← Раздел 11: Фильтр: аппаратная платформа](11.md) · [Раздел 13: Фильтр: первоначальная настройка и CLI →](13.md)
[← Оглавление](../README.md) · [← Раздел 11: Фильтр: аппаратная платформа](filter-platform.md) · [Раздел 13: Фильтр: первоначальная настройка и CLI →](filter-cli.md)
+4 -4
View File
@@ -1,6 +1,6 @@
# 14. Фильтр: конфигурация подсистем
[← Оглавление](../README.md) · [← Раздел 13: Фильтр: первоначальная настройка и CLI](13.md)
[← Оглавление](../README.md) · [← Раздел 13: Фильтр: первоначальная настройка и CLI](filter-cli.md)
---
@@ -43,7 +43,7 @@
nameservers 192.168.1.45 8.8.8.8 8.8.4.4
```
Также можно использовать режим многострочного ввода через скобки (см. [раздел 13.8 — «мышеловка»](13.md)).
Также можно использовать режим многострочного ввода через скобки (см. [раздел 13.8 — «мышеловка»](filter-cli.md)).
## 14.3. Терминал (SSH): auto-logout, prompt, нумерация строк
@@ -198,7 +198,7 @@
## 14.10. Журналирование протоколов (debug logger) — отправка на SPFS
Секция **debug logger** (несмотря на название «debug», это штатная функциональность) отвечает за отправку **протокольных логов** — результатов распознавания протоколов движком DPI — на серверы **SPFS** для дальнейшего формирования очищенных списков блокировки (подробнее о полном цикле — в [разделе 8](08.md)).
Секция **debug logger** (несмотря на название «debug», это штатная функциональность) отвечает за отправку **протокольных логов** — результатов распознавания протоколов движком DPI — на серверы **SPFS** для дальнейшего формирования очищенных списков блокировки (подробнее о полном цикле — в [разделе 22](protocol-blocking.md)).
### 14.10.1. Выбор протоколов (all / конкретные)
@@ -229,4 +229,4 @@
---
[← Оглавление](../README.md) · [← Раздел 13: Фильтр: первоначальная настройка и CLI](13.md) · [Раздел 15: Фильтр: настройка интерфейсов и общих параметров →](15.md)
[← Оглавление](../README.md) · [← Раздел 13: Фильтр: первоначальная настройка и CLI](filter-cli.md) · [Раздел 15: Фильтр: настройка интерфейсов и общих параметров →](filter-interfaces.md)
+41 -41
View File
@@ -1,16 +1,16 @@
# 5. Фильтр (EcoFilter)
# 10. Фильтр: принцип работы
[← Оглавление](../README.md) · [← Раздел 4: Балансировщик](04.md)
[← Оглавление](../README.md) · [← Раздел 9: Балансировщик: мониторинг и диагностика](balancer-monitoring.md)
---
Фильтр — основное устройство ТСПУ: он анализирует трафик и применяет к нему политики блокировки. Это сервер EcoFilter на платформе RDP.ru EcoSGE. Программный комплекс фильтра вырос из CGNAT-устройства, и трафик на нём обрабатывает процесс **EcoNAT** — на всех ядрах процессора, кроме одного сервисного ([раздел 4.5.2](04.md)). Из функций платформы (NAT, BRAS, управление качеством сервиса, URL-фильтрация, DPI) в ТСПУ задействованы две: **EcoFilter** — фильтрация по спискам (реестр Роскомнадзора и другие списки) и **EcoDPI** — распознавание протоколов и приложений вплоть до седьмого уровня модели OSI. Происхождением от CGNAT объясняются понятия, с которыми приходится работать на фильтре: пулы, трансляции и сессии, секция общих параметров `nat_defaults` ([разделы 11.6](11.md), [12](12.md), [15.2](15.md) и [16](16.md)).
Фильтр — основное устройство ТСПУ: он анализирует трафик и применяет к нему политики блокировки. Это сервер EcoFilter на платформе RDP.ru EcoSGE. Программный комплекс фильтра вырос из CGNAT-устройства, и трафик на нём обрабатывает процесс **EcoNAT** — на всех ядрах процессора, кроме одного сервисного ([раздел 6.5.2](balancer.md)). Из функций платформы (NAT, BRAS, управление качеством сервиса, URL-фильтрация, DPI) в ТСПУ задействованы две: **EcoFilter** — фильтрация по спискам (реестр Роскомнадзора и другие списки) и **EcoDPI** — распознавание протоколов и приложений вплоть до седьмого уровня модели OSI. Происхождением от CGNAT объясняются понятия, с которыми приходится работать на фильтре: пулы, трансляции и сессии, секция общих параметров `nat_defaults` ([разделы 11.6](filter-platform.md), [12](filter-sessions.md), [15.2](filter-interfaces.md) и [16](filter-acl-pools.md)).
## 5.1. Путь пакета через фильтр
## 10.1. Путь пакета через фильтр
Порты фильтра, через которые идёт трафик, объединены в пары: чётный порт пары — LAN (сторона абонентов), нечётный — WAN (сторона интернета) ([раздел 11.5](11.md)). По этой ориентации фильтр определяет, какой адрес сессии локальный (абонентский), а какой удалённый ([раздел 12.5](12.md)), поэтому перепутанные LAN и WAN нарушают обработку ([раздел 24.6](24.md)). Проходящий через фильтр кадр покидает его только через парный порт. Исключение — пакеты, которые фильтр сам формирует при блокировке: ответ абоненту (перенаправление или TCP Reset) уходит обратно в LAN-порт, через который пришёл запрос. За балансировщиком кадр приходит с 4-байтным служебным заголовком: по нему фильтр выбирает ядро для обработки и с тем же заголовком возвращает кадр на балансировщик ([раздел 4.5.3](04.md)).
Порты фильтра, через которые идёт трафик, объединены в пары: чётный порт пары — LAN (сторона абонентов), нечётный — WAN (сторона интернета) ([раздел 11.5](filter-platform.md)). По этой ориентации фильтр определяет, какой адрес сессии локальный (абонентский), а какой удалённый ([раздел 12.5](filter-sessions.md)), поэтому перепутанные LAN и WAN нарушают обработку ([раздел 23.6](troubleshooting.md)). Проходящий через фильтр кадр покидает его только через парный порт. Исключение — пакеты, которые фильтр сам формирует при блокировке: ответ абоненту (перенаправление или TCP Reset) уходит обратно в LAN-порт, через который пришёл запрос. За балансировщиком кадр приходит с 4-байтным служебным заголовком: по нему фильтр выбирает ядро для обработки и с тем же заголовком возвращает кадр на балансировщик ([раздел 6.5.3](balancer.md)).
Так фильтры подключаются в ТСПУ тип А. В эшелонированной системе (ТСПУ тип Б) фильтр подключён к балансировщику Eco Highway по схеме on-a-stick: порты равноправны, направление обозначает служебный VLAN-тег, который фильтр после обработки меняет на парный, а распознаванием протоколов фильтры там не занимаются ([разделы 7.3.3](07.md) и [7.3.4](07.md)).
Так фильтры подключаются в ТСПУ тип А. В эшелонированной системе (ТСПУ тип Б) фильтр подключён к балансировщику Eco Highway по схеме on-a-stick: порты равноправны, направление обозначает служебный VLAN-тег, который фильтр после обработки меняет на парный, а распознаванием протоколов фильтры там не занимаются ([разделы 4.3.3](echelon.md) и [4.3.4](echelon.md)).
Каждый пакет проходит **цепочку проверок**. Если на каком-то этапе пакет под обработку не подпадает, фильтр сразу передаёт его в парный порт без изменений, и пакет продолжает путь по сети оператора так, будто фильтра в тракте нет. До движка DPI доходит только трафик, прошедший все предварительные проверки:
@@ -45,9 +45,9 @@
перенаправление)
```
Даже первую, самую простую проверку («IP-пакет или нет») выполняет программное ядро фильтра — процесс EcoNAT. Если процесс завис или фильтр перегружен настолько, что перестал обрабатывать трафик, не проходит и она: keep-alive-пакеты балансировщика перестают возвращаться, и балансировщик переводит эту пару портов в программный байпас, а при включённой перебалансировке перераспределяет её трафик по остальным парам портов ([раздел 4.6](04.md)). Поэтому keep-alive проверяют не только физический канал, но и то, что фильтр продолжает обрабатывать трафик. В схеме без балансировщика ту же роль играют heartbeat-пакеты байпаса ([раздел 3.1](03.md)).
Даже первую, самую простую проверку («IP-пакет или нет») выполняет программное ядро фильтра — процесс EcoNAT. Если процесс завис или фильтр перегружен настолько, что перестал обрабатывать трафик, не проходит и она: keep-alive-пакеты балансировщика перестают возвращаться, и балансировщик переводит эту пару портов в программный байпас, а при включённой перебалансировке перераспределяет её трафик по остальным парам портов ([раздел 6.6](balancer.md)). Поэтому keep-alive проверяют не только физический канал, но и то, что фильтр продолжает обрабатывать трафик. В схеме без балансировщика ту же роль играют heartbeat-пакеты байпаса ([раздел 5.1](bypass.md)).
### 5.1.1. Проверка: IP-пакет или нет
### 10.1.1. Проверка: IP-пакет или нет
Сначала фильтр ищет в кадре IP-пакет. Инкапсуляция на стыке оператора зависит от его технологий и от места установки ТСПУ, и вариантов много:
@@ -57,7 +57,7 @@
- PPPoE-трафик, в том числе с двумя VLAN-тегами и внутри MPLS;
- и другие комбинации.
Фильтр не снимает эти заголовки, а разбирает стек, чтобы добраться до IP-пакета: MPLS-метки он просматривает до конца стека, а сколько VLAN-тегов разбирать, задаёт параметр `vlan_mode` (VLAN Mode) в секции `nat_defaults` ([раздел 15.2.1](15.md)):
Фильтр не снимает эти заголовки, а разбирает стек, чтобы добраться до IP-пакета: MPLS-метки он просматривает до конца стека, а сколько VLAN-тегов разбирать, задаёт параметр `vlan_mode` (VLAN Mode) в секции `nat_defaults` ([раздел 15.2.1](filter-interfaces.md)):
| Значение `vlan_mode` | Где фильтр ищет IP-пакет |
| ------------------------- | -------------------------------------------------------------------------- |
@@ -72,17 +72,17 @@
В документации производителя описаны ещё две настройки этого этапа:
- `inner_vlan` и `outer_vlan` — значения TPID внутреннего и внешнего VLAN-тегов (по умолчанию оба 0x8100). Они доступны на платформах с сетевыми контроллерами Intel серий 710/810 и нужны для правильной обработки QinQ: значение задаётся для всего устройства и должно совпадать с тем, как теги формирует оборудование оператора (например, TPID 0x88A8 у внешнего тега по IEEE 802.1ad или встречающийся на старом оборудовании 0x9100);
- `pppoe_analyzer` — обработка трафика PPPoE (по умолчанию выключена). При установке ТСПУ до BRAS, где идёт PPPoE-трафик ([раздел 6.1.1](06.md)), её стоит проверить.
- `pppoe_analyzer` — обработка трафика PPPoE (по умолчанию выключена). При установке ТСПУ до BRAS, где идёт PPPoE-трафик ([раздел 3.1.1](placement.md)), её стоит проверить.
У фильтра ограничений на типы инкапсуляции больше, чем у балансировщика ([раздел 4.7](04.md)): например, балансировщик разбирает до трёх VLAN-тегов, а фильтр — не больше двух. Кадр, в котором фильтр IP-пакет не нашёл, проходит через него прозрачно, без анализа.
У фильтра ограничений на типы инкапсуляции больше, чем у балансировщика ([раздел 6.7](balancer.md)): например, балансировщик разбирает до трёх VLAN-тегов, а фильтр — не больше двух. Кадр, в котором фильтр IP-пакет не нашёл, проходит через него прозрачно, без анализа.
Кадры без IP-пакета фильтр передаёт в парный порт на этой же проверке. За балансировщиком до фильтра доходят практически только keep-alive-пакеты балансировщика — прочие не-IP-кадры балансировщик пропускает сам, не отправляя на фильтры ([раздел 4.7](04.md)). Keep-alive возвращаются на балансировщик, который по времени их прохождения контролирует путь через фильтр ([раздел 4.6.1](04.md)). В схеме без балансировщика через фильтр прозрачно проходят и служебные кадры сети оператора — например, ARP или LACP, а heartbeat-кадры байпаса Silicom, подключённого к фильтру напрямую, тоже проходят в парный порт без обработки ([раздел 3.4](03.md)).
Кадры без IP-пакета фильтр передаёт в парный порт на этой же проверке. За балансировщиком до фильтра доходят практически только keep-alive-пакеты балансировщика — прочие не-IP-кадры балансировщик пропускает сам, не отправляя на фильтры ([раздел 6.7](balancer.md)). Keep-alive возвращаются на балансировщик, который по времени их прохождения контролирует путь через фильтр ([раздел 6.6.1](balancer.md)). В схеме без балансировщика через фильтр прозрачно проходят и служебные кадры сети оператора — например, ARP или LACP, а heartbeat-кадры байпаса Silicom, подключённого к фильтру напрямую, тоже проходят в парный порт без обработки ([раздел 5.4](bypass.md)).
### 5.1.2. Проверка по ACL (привязка к пулу)
### 10.1.2. Проверка по ACL (привязка к пулу)
Найденный IP-пакет фильтр проверяет на принадлежность к **пулу**. Пул — понятие из CGNAT: там он задаёт тип трансляции и набор внешних адресов, а привязанный к пулу **ACL** (Access Control List) определяет, какой трафик этот пул обслуживает. DPI обрабатывает только трафик, попавший в какой-либо пул, поэтому пул нужен и там, где адреса не транслируются. В ТСПУ используются пулы типа **fake**: трансляции в них нет — что пришло, то и ушло.
Минимальная рабочая настройка — включённый (`enable`) пул типа `fake` с привязанным ACL. Новый пул создаётся с типом `cgnat`, поэтому тип `fake` задаётся явно ([раздел 16](16.md)).
Минимальная рабочая настройка — включённый (`enable`) пул типа `fake` с привязанным ACL. Новый пул создаётся с типом `cgnat`, поэтому тип `fake` задаётся явно ([раздел 16](filter-acl-pools.md)).
Правило ACL состоит из:
@@ -98,15 +98,15 @@
- совпало правило `deny` — этот пул для пакета больше не рассматривается, проверяются следующие;
- не совпало ни одно правило — тоже переход к следующему пулу.
Если подходящего пула не нашлось, пакет прозрачно уходит в парный порт. Назначать нескольким пулам одинаковый приоритет не следует: по документации производителя тогда будет задействован только один из них. IPv6-трафик отбирается собственными настройками пула: обработку IPv6 нужно включить, иначе сессии по IPv6 не заводятся и этот трафик проходит через фильтр прозрачно ([разделы 15.4](15.md) и [16.6](16.md)).
Если подходящего пула не нашлось, пакет прозрачно уходит в парный порт. Назначать нескольким пулам одинаковый приоритет не следует: по документации производителя тогда будет задействован только один из них. IPv6-трафик отбирается собственными настройками пула: обработку IPv6 нужно включить, иначе сессии по IPv6 не заводятся и этот трафик проходит через фильтр прозрачно ([разделы 15.4](filter-interfaces.md) и [16.6](filter-acl-pools.md)).
Пул выбирается при создании сессии — по первому пакету потока; следующие пакеты фильтр находит в таблице сессий, и вся дальнейшая обработка ведётся в рамках сессий ([раздел 12](12.md)). Здесь фильтр может и отбросить пакет ещё до DPI: по умолчанию TCP-сессия заводится только по пакету с флагом SYN, а TCP-пакет без SYN, для которого сессии нет, отбрасывается. В ТСПУ такое поведение отключают параметром `permit_invalid_flow` ([раздел 5.2](#52-работа-на-уровне-l2-фильтр-как-прозрачный-провод)).
Пул выбирается при создании сессии — по первому пакету потока; следующие пакеты фильтр находит в таблице сессий, и вся дальнейшая обработка ведётся в рамках сессий ([раздел 12](filter-sessions.md)). Здесь фильтр может и отбросить пакет ещё до DPI: по умолчанию TCP-сессия заводится только по пакету с флагом SYN, а TCP-пакет без SYN, для которого сессии нет, отбрасывается. В ТСПУ такое поведение отключают параметром `permit_invalid_flow` ([раздел 10.2](#102-работа-на-уровне-l2-фильтр-как-прозрачный-провод)).
> **Важно:** в заводской конфигурации фильтра пулов и ACL нет. Пока они не созданы, фильтр пропускает весь трафик прозрачно, какие бы DPI-листы ни были настроены. Признак такой ситуации — нулевая скорость создания сессий в `show cps` при идущем через фильтр трафике ([раздел 18.9](18.md)).
> **Важно:** в заводской конфигурации фильтра пулов и ACL нет. Пока они не созданы, фильтр пропускает весь трафик прозрачно, какие бы DPI-листы ни были настроены. Признак такой ситуации — нулевая скорость создания сессий в `show cps` при идущем через фильтр трафике ([раздел 18.9](filter-monitoring.md)).
### 5.1.3. Проверка по DPI-листу (IP-подсети)
### 10.1.3. Проверка по DPI-листу (IP-подсети)
Следующий этап — **DPI-листы**. DPI-лист объединяет настройки одной политики фильтрации: на какой трафик она распространяется, что в нём ищется (загружаемый список IP-адресов, доменов и URL, распознаваемые протоколы) и что делать при совпадении ([раздел 5.1.5](#515-решение-пропустить-или-заблокировать-drop)). Подробно настройки DPI-листов описаны в [разделе 17.4](17.md).
Следующий этап — **DPI-листы**. DPI-лист объединяет настройки одной политики фильтрации: на какой трафик она распространяется, что в нём ищется (загружаемый список IP-адресов, доменов и URL, распознаваемые протоколы) и что делать при совпадении ([раздел 10.1.5](#1015-решение-пропустить-или-заблокировать-drop)). Подробно настройки DPI-листов описаны в [разделе 17.4](filter-dpi.md).
Набор листов задан прошивкой: это листы с номерами 0–16 — лист 0 и шестнадцать листов 1–16. Каждый лист включается и выключается независимо. В более поздних версиях ПО, по документации производителя, листы создаются по мере необходимости командой `create dpilist N` — в стандартной конфигурации с номерами 0–24, по запросу заказчика — до 1000.
@@ -119,17 +119,17 @@
| `no_ip_remote` | удалённые адреса (серверов), исключённые из обработки листом |
| `ipv6` / `no_ipv6` | то же для IPv6 |
Исключения проверяются первыми: адрес из `no_ip` листом не обрабатывается, даже если входит в `ip`. Штатно в `ip` задаётся сеть `0.0.0.0/0` для всех VLAN — тогда лист действует на весь трафик, дошедший до DPI. Добавить адрес абонента в `no_ip` — удобный способ диагностики: если у абонента после этого что-то изменилось (например, заработало приложение), этот лист на его трафик действительно влиял ([раздел 17.4.8](17.md)).
Исключения проверяются первыми: адрес из `no_ip` листом не обрабатывается, даже если входит в `ip`. Штатно в `ip` задаётся сеть `0.0.0.0/0` для всех VLAN — тогда лист действует на весь трафик, дошедший до DPI. Добавить адрес абонента в `no_ip` — удобный способ диагностики: если у абонента после этого что-то изменилось (например, заработало приложение), этот лист на его трафик действительно влиял ([раздел 17.4.8](filter-dpi.md)).
В более поздних версиях ПО этих параметров в описании DPI-листа уже нет (в руководстве пользователя EcoSGE 3.1.8 они остались лишь в отдельных примерах конфигурации): вместо них к листу привязывается ACL (`acl`, `aclv6`). Трафик, совпавший с разрешающим правилом, обрабатывается листом, совпавший с запрещающим — передаётся следующему листу; значение по умолчанию `none` равносильно `permit ip any any`, то есть лист действует на весь трафик. Аналог диагностики через `no_ip` здесь — запрещающее правило для адреса абонента в ACL листа.
Пакет, адреса которого не подпадают ни под один включённый лист, DPI не анализирует — он прозрачно уходит в парный порт. Листы применяются в порядке возрастания номера; если сработали несколько листов, выполняется действие листа с наименьшим номером. Лист с `behaviour ignore` других листов при этом не перекрывает: по руководству EcoSGE 3.1.8 совпавший с ним трафик передаётся на проверку следующему листу.
В ТСПУ фильтрация по реестру Роскомнадзора выполняется в листе 0. В ранних версиях ПО настройки реестра находятся прямо в листе 0; в более поздних они вынесены в отдельный раздел, лист для реестра выбирается параметром `list_number` (по умолчанию 0; в руководстве EcoSGE 3.1.8 значение по умолчанию не задано, и лист указывают явно), а все листы устроены одинаково ([раздел 17.2](17.md)). Действие (`behaviour`) задаётся для листа целиком, а лист 0 блокирует по реестру, поэтому распознавание протоколов (`ignore`) и блокировку по очищенным спискам из ЦСУ (`block`, например в листе 5) настраивают в других листах ([раздел 8](08.md)).
В ТСПУ фильтрация по реестру Роскомнадзора выполняется в листе 0. В ранних версиях ПО настройки реестра находятся прямо в листе 0; в более поздних они вынесены в отдельный раздел, лист для реестра выбирается параметром `list_number` (по умолчанию 0; в руководстве EcoSGE 3.1.8 значение по умолчанию не задано, и лист указывают явно), а все листы устроены одинаково ([раздел 17.2](filter-dpi.md)). Действие (`behaviour`) задаётся для листа целиком, а лист 0 блокирует по реестру, поэтому распознавание протоколов (`ignore`) и блокировку по очищенным спискам из ЦСУ (`block`, например в листе 5) настраивают в других листах ([раздел 22](protocol-blocking.md)).
### 5.1.4. Обработка движком DPI
### 10.1.4. Обработка движком DPI
Трафик, прошедший предварительные проверки, анализирует **движок DPI**. Он сверяет трафик со списками фильтрации — IP-адресами, доменами и URL (для HTTP — по запрошенному URL, для HTTPS — по имени сервера в SNI, [раздел 17.5](17.md)) — и распознаёт протоколы и приложения.
Трафик, прошедший предварительные проверки, анализирует **движок DPI**. Он сверяет трафик со списками фильтрации — IP-адресами, доменами и URL (для HTTP — по запрошенному URL, для HTTPS — по имени сервера в SNI, [раздел 17.5](filter-dpi.md)) — и распознаёт протоколы и приложения.
Распознавание — это **многофакторный анализ сессии**, а не отдельного пакета: движку нужно несколько пакетов сессии в обоих направлениях. Кроме очевидных полей — адресов и портов источника и назначения — учитывается не один десяток признаков, например:
@@ -137,11 +137,11 @@
- частота прохождения пакетов;
- частота появления тех или иных ключевых слов внутри пакетов.
У трафика, который шифруется и намеренно скрывает свою природу (протоколы мессенджеров, обфусцированные VPN), явных полей, указывающих на протокол, нет, поэтому он распознаётся по косвенным признакам. Такое распознавание **не стопроцентно**: другой шифрованный трафик может быть принят, например, за Telegram, и его блокировка задела бы полезные ресурсы. Поэтому для блокировки таких протоколов применяется двухэтапная схема: сначала фильтры только распознают трафик и отправляют логи, а блокируют уже по спискам, очищенным от ложных срабатываний в ЦСУ ([разделы 8](08.md) и [23](23.md)). Распознавание можно обойти — например, протоколом, который маскируется под другой. Если протокол в новой версии перестал распознаваться, нужна новая сигнатура ([раздел 23.4](23.md)).
У трафика, который шифруется и намеренно скрывает свою природу (протоколы мессенджеров, обфусцированные VPN), явных полей, указывающих на протокол, нет, поэтому он распознаётся по косвенным признакам. Такое распознавание **не стопроцентно**: другой шифрованный трафик может быть принят, например, за Telegram, и его блокировка задела бы полезные ресурсы. Поэтому для блокировки таких протоколов применяется двухстадийная схема: сначала фильтры только распознают трафик и отправляют логи, а блокируют уже по спискам, очищенным от ложных срабатываний в ЦСУ ([раздел 22](protocol-blocking.md)). Распознавание можно обойти — например, протоколом, который маскируется под другой. Если протокол в новой версии перестал распознаваться, нужна новая сигнатура ([раздел 22.3](protocol-blocking.md)).
Модуль DPI можно выключить целиком — тогда весь трафик проходит через фильтр прозрачно, без анализа. Так проверяют, связана ли проблема абонента с обработкой на фильтре вообще ([раздел 17.1.1](17.md)).
Модуль DPI можно выключить целиком — тогда весь трафик проходит через фильтр прозрачно, без анализа. Так проверяют, связана ли проблема абонента с обработкой на фильтре вообще ([раздел 17.1.1](filter-dpi.md)).
### 5.1.5. Решение: пропустить или заблокировать (drop)
### 10.1.5. Решение: пропустить или заблокировать (drop)
По результату анализа фильтр решает судьбу пакета: в общем случае — пропустить его в парный порт или отбросить (drop), если трафик попадает под запрещающую политику. Что делать при срабатывании, задаёт параметр `behaviour` DPI-листа:
@@ -157,39 +157,39 @@
**Блокировка (`block`)** — основной режим для реестра Роскомнадзора и для очищенных протокольных списков:
- **HTTP** — запрос к заблокированному ресурсу не пропускается, а абоненту отправляется ответ с перенаправлением на страницу-заглушку оператора, сообщающую, что ресурс заблокирован. Адрес страницы задаёт параметр `redirect_url`; по документации производителя это ответ «307 Temporary Redirect» с этим адресом в заголовке `Location`. URL передаётся открыто, поэтому блокировать можно конкретную страницу;
- **HTTPS** — содержимое зашифровано, и подменить ответ нельзя: ресурс определяется по домену в SNI, а соединение разрывается пакетами TCP Reset. Блокируется домен целиком ([раздел 17.5.3](17.md)). По документации производителя проверяется и сертификат сервера, если он передаётся открыто (до TLS 1.3), а соединение без SNI пропускается;
- **трафик с MPLS-метками** — ответ абоненту фильтр сам сформировать не может: MPLS-путь однонаправлен, и стек меток обратного направления фильтру неизвестен. Поэтому запрос абонента пропускается к серверу, фильтр дожидается ответного пакета в той же сессии и подменяет его содержимое на перенаправление или TCP Reset, сохраняя метки ([раздел 4.8](04.md));
- **протоколы, блокировка которых включена в DPI-листе** (указаны в `protocols` листа с `behaviour block`) — пакеты заблокированной сессии отбрасываются, TCP Reset при этом не отправляется (см. ниже про send RST). Вместо полной блокировки протокол можно «деградировать»: параметры деградации (protocols capacity) задают для протокола значение от 0 до 100 в условных единицах (это не проценты): 0 — полная блокировка, 100 — полный пропуск, промежуточные значения — сброс части пакетов сессии с вероятностью, зависящей от значения. Сама по себе настройка деградации — даже значение 0 — ничего не блокирует: она действует только на протоколы, блокировка которых включена в DPI-листе, и не затрагивает лист распознавания с `ignore` ([раздел 17.3](17.md)).
- **HTTPS** — содержимое зашифровано, и подменить ответ нельзя: ресурс определяется по домену в SNI, а соединение разрывается пакетами TCP Reset. Блокируется домен целиком ([раздел 17.5.3](filter-dpi.md)). По документации производителя проверяется и сертификат сервера, если он передаётся открыто (до TLS 1.3), а соединение без SNI пропускается;
- **трафик с MPLS-метками** — ответ абоненту фильтр сам сформировать не может: MPLS-путь однонаправлен, и стек меток обратного направления фильтру неизвестен. Поэтому запрос абонента пропускается к серверу, фильтр дожидается ответного пакета в той же сессии и подменяет его содержимое на перенаправление или TCP Reset, сохраняя метки ([раздел 6.8](balancer.md));
- **протоколы, блокировка которых включена в DPI-листе** (указаны в `protocols` листа с `behaviour block`) — пакеты заблокированной сессии отбрасываются, TCP Reset при этом не отправляется (см. ниже про send RST). Вместо полной блокировки протокол можно «деградировать»: параметры деградации (protocols capacity) задают для протокола значение от 0 до 100 в условных единицах (это не проценты): 0 — полная блокировка, 100 — полный пропуск, промежуточные значения — сброс части пакетов сессии с вероятностью, зависящей от значения. Сама по себе настройка деградации — даже значение 0 — ничего не блокирует: она действует только на протоколы, блокировка которых включена в DPI-листе, и не затрагивает лист распознавания с `ignore` ([раздел 17.3](filter-dpi.md)).
**Распознавание (`ignore`)** — первая стадия двухэтапной блокировки: лист со списком распознаваемых протоколов срабатывает, но трафик не трогает, а логи о распознанных сессиях уходят на SPFS и далее в ЦСУ ([разделы 8](08.md) и [14.10](14.md)). ЦСУ отсеивает ложные срабатывания и загружает очищенные списки в **другой** DPI-лист — с `behaviour block`.
**Распознавание (`ignore`)** — первая стадия двухстадийной блокировки: лист со списком распознаваемых протоколов срабатывает, но трафик не трогает, а логи о распознанных сессиях уходят на SPFS и далее в ЦСУ ([разделы 22](protocol-blocking.md) и [14.10](filter-subsystems.md)). ЦСУ отсеивает ложные срабатывания и загружает очищенные списки в **другой** DPI-лист — с `behaviour block`.
**Белый список.** Параметр `whitelist_mode` переключает лист из режима чёрного списка (по умолчанию: совпавшее блокируется, остальное пропускается) в режим белого: пропускается только совпавшее, всё остальное блокируется. В ТСПУ этот режим не используется — ошибка в таком листе может отрезать абонентам весь трафик; он нужен в других сценариях, например вместе с функциями BRAS.
**TCP Reset при блокировке протоколов (send RST).** Приложение (например, Telegram), получив TCP Reset в ответ на попытку соединения, тут же пытается соединиться снова — непрерывно и очень быстро, порождая огромное число сессий; наблюдались случаи, когда мобильные устройства абонентов из-за этого начинали тормозить. Поэтому отправку TCP Reset при блокировке протоколов можно отключить общим параметром модуля DPI send RST, и в ТСПУ он **всегда `off`**: попытка соединения просто отбрасывается, соединение висит и обрывается по тайм-ауту, и лавины новых сессий не возникает ([раздел 17.1.2](17.md)). В руководствах пользователя EcoSGE такого общего параметра нет; в более поздних версиях ПО блокировку без TCP Reset и без перенаправления задают для отдельного листа значением `behaviour drop`.
**TCP Reset при блокировке протоколов (send RST).** Приложение (например, Telegram), получив TCP Reset в ответ на попытку соединения, тут же пытается соединиться снова — непрерывно и очень быстро, порождая огромное число сессий; наблюдались случаи, когда мобильные устройства абонентов из-за этого начинали тормозить. Поэтому отправку TCP Reset при блокировке протоколов можно отключить общим параметром модуля DPI send RST, и в ТСПУ он **всегда `off`**: попытка соединения просто отбрасывается, соединение висит и обрывается по тайм-ауту, и лавины новых сессий не возникает ([раздел 17.1.2](filter-dpi.md)). В руководствах пользователя EcoSGE такого общего параметра нет; в более поздних версиях ПО блокировку без TCP Reset и без перенаправления задают для отдельного листа значением `behaviour drop`.
## 5.2. Работа на уровне L2: фильтр как «прозрачный провод»
## 10.2. Работа на уровне L2: фильтр как «прозрачный провод»
Хотя фильтр анализирует трафик вплоть до седьмого уровня модели OSI, в топологии сети он работает на **уровне L2**. Для оператора и его оборудования фильтр — **прозрачный провод**: кадры входят в один порт пары и выходят из парного, а изменения вносятся только в пакеты блокируемых сессий. Это обеспечивают несколько свойств и настроек; описание относится к подключению парами портов в ТСПУ тип А (о схеме on-a-stick — в [разделе 7.3.3](07.md)).
Хотя фильтр анализирует трафик вплоть до седьмого уровня модели OSI, в топологии сети он работает на **уровне L2**. Для оператора и его оборудования фильтр — **прозрачный провод**: кадры входят в один порт пары и выходят из парного, а изменения вносятся только в пакеты блокируемых сессий. Это обеспечивают несколько свойств и настроек; описание относится к подключению парами портов в ТСПУ тип А (о схеме on-a-stick — в [разделе 4.3.3](echelon.md)).
**Нет L3-интерфейсов в тракте.** В ОС Linux, на которой построен фильтр, виден только management-интерфейс. Порты тракта, как и лог-интерфейсы, отданы под управление **DPDK** (Data Plane Development Kit) и процессу EcoNAT, который обрабатывает пакеты напрямую, минуя сетевой стек ОС. IP-адресов у портов тракта нет: ping и traceroute с фильтра выполняются только через management-интерфейс ([раздел 18.14](18.md)), а собственного трафика в тракт фильтр (при выключенном LLDP — см. ниже) не инициирует. Исключение — пакеты, которые он вставляет в блокируемые сессии: перенаправление и TCP Reset, адресованные участникам сессии.
**Нет L3-интерфейсов в тракте.** В ОС Linux, на которой построен фильтр, виден только management-интерфейс. Порты тракта, как и лог-интерфейсы, отданы под управление **DPDK** (Data Plane Development Kit) и процессу EcoNAT, который обрабатывает пакеты напрямую, минуя сетевой стек ОС. IP-адресов у портов тракта нет: ping и traceroute с фильтра выполняются только через management-интерфейс ([раздел 18.14](filter-monitoring.md)), а собственного трафика в тракт фильтр (при выключенном LLDP — см. ниже) не инициирует. Исключение — пакеты, которые он вставляет в блокируемые сессии: перенаправление и TCP Reset, адресованные участникам сессии.
**Заголовки инкапсуляции сохраняются.** VLAN-теги, MPLS-метки и другие заголовки фильтр не снимает и не меняет: он разбирает их только для того, чтобы найти IP-пакет, и все манипуляции выполняет с IP-пакетом. Кадр выходит из фильтра с тем же стеком заголовков, с каким вошёл, — включая 4-байтный заголовок балансировщика.
**Пересылка включена.** Параметр `forward_traffic` в `nat_defaults` (по умолчанию `on`) разрешает пересылку кадров через фильтр; значение `off` нужно, только когда фильтр анализирует зеркалированный трафик и обратно от него ничего не ждут. В ТСПУ фильтр стоит в разрыв, поэтому `forward_traffic` всегда `on`, а режим работы модуля DPI (`functionality_mode`) — обычный, для схемы «в разрыв», а не для зеркалированного трафика ([разделы 15.2.3](15.md) и [17.1.3](17.md)).
**Пересылка включена.** Параметр `forward_traffic` в `nat_defaults` (по умолчанию `on`) разрешает пересылку кадров через фильтр; значение `off` нужно, только когда фильтр анализирует зеркалированный трафик и обратно от него ничего не ждут. В ТСПУ фильтр стоит в разрыв, поэтому `forward_traffic` всегда `on`, а режим работы модуля DPI (`functionality_mode`) — обычный, для схемы «в разрыв», а не для зеркалированного трафика ([разделы 15.2.3](filter-interfaces.md) и [17.1.3](filter-dpi.md)).
**LLDP выключен.** По документации производителя LLDP на платформе по умолчанию включён: устройство периодически (в разных редакциях документации — раз в 30 или 60 секунд) рассылает LLDP-сообщения через все задействованные интерфейсы, и соседнее оборудование видит его в своей топологии. В ТСПУ LLDP выключают (`lldp off` в `nat_defaults`) по просьбе операторов связи: оборудование должно оставаться невидимым и не появляться на схемах их сети ([раздел 15.2.5](15.md)).
**LLDP выключен.** По документации производителя LLDP на платформе по умолчанию включён: устройство периодически (в разных редакциях документации — раз в 30 или 60 секунд) рассылает LLDP-сообщения через все задействованные интерфейсы, и соседнее оборудование видит его в своей топологии. В ТСПУ LLDP выключают (`lldp off` в `nat_defaults`) по просьбе операторов связи: оборудование должно оставаться невидимым и не появляться на схемах их сети ([раздел 15.2.5](filter-interfaces.md)).
**L2 MTU — 9216 байт.** Параметр `l2mtu` задаёт максимальный размер принимаемого Ethernet-кадра — с заголовками, но без контрольной суммы. Кадр длиннее этого значения фильтр не пропускает, а отбрасывает (такие потери видны в выводе `show interface <имя>` как «Packets droped because of L2MTU»). Значение по умолчанию — 1522 байта (в более поздних версиях ПО, по документации производителя, — 9216), максимум — 9692 байта. В ТСПУ ставят 9216 — распространённый предельный размер jumbo-кадра у сетевого оборудования; на портах балансировщиков MTU выставляют около 9000 байт. Для абонентского трафика этого хватает с большим запасом, тогда как при значении 1522 не прошёл бы уже 1500-байтный IP-пакет в QinQ-кадре с заголовком балансировщика (14 + 8 + 4 + 1500 = 1526 байт). Если же оператор передаёт jumbo-кадры, кадр вместе с 4-байтным заголовком должен укладываться и в L2 MTU фильтра, и в MTU портов балансировщика — это согласуют при проектировании ([раздел 4.5.3](04.md)).
**L2 MTU — 9216 байт.** Параметр `l2mtu` задаёт максимальный размер принимаемого Ethernet-кадра — с заголовками, но без контрольной суммы. Кадр длиннее этого значения фильтр не пропускает, а отбрасывает (такие потери видны в выводе `show interface <имя>` как «Packets droped because of L2MTU»). Значение по умолчанию — 1522 байта (в более поздних версиях ПО, по документации производителя, — 9216), максимум — 9692 байта. В ТСПУ ставят 9216 — распространённый предельный размер jumbo-кадра у сетевого оборудования; на портах балансировщиков MTU выставляют около 9000 байт. Для абонентского трафика этого хватает с большим запасом, тогда как при значении 1522 не прошёл бы уже 1500-байтный IP-пакет в QinQ-кадре с заголовком балансировщика (14 + 8 + 4 + 1500 = 1526 байт). Если же оператор передаёт jumbo-кадры, кадр вместе с 4-байтным заголовком должен укладываться и в L2 MTU фильтра, и в MTU портов балансировщика — это согласуют при проектировании ([раздел 6.5.3](balancer.md)).
**`permit_invalid_flow` включён.** По умолчанию параметр выключен: TCP-сессия заводится только по пакету с флагом SYN, а TCP-пакеты без SYN, для которых сессии нет, считаются ошибочными или вредоносными и отбрасываются. Для NAT-устройства это нормальное поведение, для фильтра — опасное: он часто видит TCP-сессии не с начала, а «с середины»:
- **после возврата ТСПУ из байпаса в рабочий режим** — из аппаратного байпаса в Inline или из программного байпаса балансировщика, в том числе отдельной пары портов ([разделы 3.5](03.md) и [4.6.2](04.md)), — а также при первом включении в тракт на фильтры сразу приходит трафик множества уже установленных сессий, SYN которых фильтр не видел. С выключенным параметром фильтр будет его дропать: все эти TCP-сессии абонентов оборвутся по тайм-ауту, и их придётся устанавливать заново;
- **при перераспределении трафика** — когда балансировщик перебалансирует нагрузку и сессии переезжают на другой фильтр ([раздел 4.6.3](04.md)), а также после перезапуска фильтра, когда таблица сессий пуста;
- **после возврата ТСПУ из байпаса в рабочий режим** — из аппаратного байпаса в Inline или из программного байпаса балансировщика, в том числе отдельной пары портов ([разделы 5.5](bypass.md) и [6.6.2](balancer.md)), — а также при первом включении в тракт на фильтры сразу приходит трафик множества уже установленных сессий, SYN которых фильтр не видел. С выключенным параметром фильтр будет его дропать: все эти TCP-сессии абонентов оборвутся по тайм-ауту, и их придётся устанавливать заново;
- **при перераспределении трафика** — когда балансировщик перебалансирует нагрузку и сессии переезжают на другой фильтр ([раздел 6.6.3](balancer.md)), а также после перезапуска фильтра, когда таблица сессий пуста;
- **при несимметричном трафике** — когда исходящий трафик сессии прошёл через одну площадку или один фильтр, а ответный — через другой: второй фильтр не видел SYN, с которого абонент начал соединение, и сессия там не заведётся;
- **для долго молчащих TCP-соединений** (по документации производителя): когда сессия на фильтре удалена по тайм-ауту неактивности, следующий пакет соединения приходит уже без SYN.
Поэтому в ТСПУ параметр **всегда включён**: фильтр принимает пакеты «с середины» и заводит для них сессии. Параметр глобальный — действует на всё устройство и в пулах не переопределяется; изменение применяется командой `apply` ([раздел 15.2.6](15.md)).
Поэтому в ТСПУ параметр **всегда включён**: фильтр принимает пакеты «с середины» и заводит для них сессии. Параметр глобальный — действует на всё устройство и в пулах не переопределяется; изменение применяется командой `apply` ([раздел 15.2.6](filter-interfaces.md)).
---
[← Оглавление](../README.md) · [← Раздел 4: Балансировщик](04.md) · [Раздел 6: Места установки ТСПУ →](06.md)
[← Оглавление](../README.md) · [← Раздел 9: Балансировщик: мониторинг и диагностика](balancer-monitoring.md) · [Раздел 11: Фильтр: аппаратная платформа →](filter-platform.md)
+7 -7
View File
@@ -1,10 +1,10 @@
# 10. Сегмент управления ТСПУ
# 20. Сегмент управления ТСПУ
[← Оглавление](../README.md) · [← Раздел 9: Центральная система управления](09.md)
[← Оглавление](../README.md) · [← Раздел 19: Фильтр: обновление прошивки](filter-firmware.md)
---
## 10.1. Адресация: 10.<регион>.<площадка>.0/24
## 20.1. Адресация: 10.<регион>.<площадка>.0/24
Каждая площадка ТСПУ имеет собственный **сегмент управления** — выделенную подсеть для management-интерфейсов всех устройств. Адресация сегмента управления построена по единой схеме:
@@ -21,7 +21,7 @@
Таким образом, для площадки в Москве management-адрес будет выглядеть как `10.77.<номер_площадки>.0/24`.
## 10.2. Распределение адресов: байпасы, балансировщики, BMC, фильтры, IPMI, SPFS, СПХД
## 20.2. Распределение адресов: байпасы, балансировщики, BMC, фильтры, IPMI, SPFS, СПХД
Все 256 адресов подсети /24 распределяются между устройствами площадки по фиксированной схеме:
@@ -57,7 +57,7 @@
- **SPFS** (.231–.235) — серверы предварительного формирования списков;
- **СПХД** (.241–.245) — серверы предварительного хранения данных (syslog-серверы), используемые для хранения системных журналов со всех устройств площадки.
## 10.3. Шлюз по умолчанию — криптошлюз «Континент»
## 20.3. Шлюз по умолчанию — криптошлюз «Континент»
Адрес **.254** в подсети управления закреплён за **криптошлюзом «Континент»**, который является **шлюзом по умолчанию** для всех устройств площадки.
@@ -75,7 +75,7 @@
Каждая площадка ТСПУ связана **с обеими площадками ЦСУ** (основной и резервной), что обеспечивает отказоустойчивость управления.
## 10.4. Подсеть логирования (единая для всех ТСПУ)
## 20.4. Подсеть логирования (единая для всех ТСПУ)
Помимо основной подсети управления (/24), в сегменте управления присутствует **отдельная подсеть логирования**. Эта подсеть используется для лог-интерфейсов фильтров — выделенных высокопроизводительных интерфейсов (DPDK), через которые передаются журналы соединений (connection log).
@@ -85,4 +85,4 @@
---
[← Оглавление](../README.md) · [← Раздел 9: Центральная система управления](09.md) · [Раздел 11: Фильтр: аппаратная платформа →](11.md)
[← Оглавление](../README.md) · [← Раздел 19: Фильтр: обновление прошивки](filter-firmware.md) · [Раздел 21: Центральная система управления →](central-management.md)
+16 -16
View File
@@ -13,7 +13,7 @@
- **ТСПУ** (технические средства противодействия угрозам) — комплексы оборудования, устанавливаемые непосредственно у операторов связи, в разрыв их каналов связи;
- **Центральная система управления (ЦСУ)** — централизованная система, с которой взаимодействуют все ТСПУ и через которую выполняются основные операции по управлению их оборудованием: доступ к устройствам площадок, формирование и распространение списков фильтрации, мониторинг, логирование, централизованная установка программного обеспечения.
ЦСУ размещается в двух физически независимых ЦОД — на основной и резервной площадках — с резервированием. Связь площадок ТСПУ с ЦСУ организована через интернет по шифрованным VPN-каналам: каждая площадка ТСПУ связана как с основной, так и с резервной площадкой ЦСУ, а площадки ЦСУ связаны VPN-каналом между собой. На текущем этапе ЦСУ обслуживает порядка **350 площадок** ТСПУ и суммарно около **5 000 устройств**; в дальнейшем система будет расширяться (подробнее — в [разделах 9](09.md) и [10](10.md)). На схемах ЦСУ обозначается как **ЦСУО** — центральная система управления оборудованием.
ЦСУ размещается в двух физически независимых ЦОД — на основной и резервной площадках — с резервированием. Связь площадок ТСПУ с ЦСУ организована через интернет по шифрованным VPN-каналам: каждая площадка ТСПУ связана как с основной, так и с резервной площадкой ЦСУ, а площадки ЦСУ связаны VPN-каналом между собой. На текущем этапе ЦСУ обслуживает порядка **350 площадок** ТСПУ и суммарно около **5 000 устройств**; в дальнейшем система будет расширяться (подробнее — в [разделах 21](central-management.md) и [20](management-segment.md)). На схемах ЦСУ обозначается как **ЦСУО** — центральная система управления оборудованием.
<img width="1838" height="839" alt="image" src="https://github.com/user-attachments/assets/ed6540bc-1fb2-4dd8-b0d6-56e376d63ddc" />
@@ -36,16 +36,16 @@ _Общая схема АСБИ: центральная система упра
## 1.3. Что такое ТСПУ — комплекс оборудования у операторов связи
**ТСПУ** (Технические средства противодействия угрозам) — это комплекс оборудования, который устанавливается **в разрыв каналов связи оператора**: каналы оператора разрываются и заворачиваются на ТСПУ, а именно на его байпасы. Основные устройства ТСПУ — фильтры — выполняют фильтрацию и обработку проходящего трафика: распознавание протоколов средствами DPI (Deep Packet Inspection), фильтрацию по реестру Роскомнадзора, блокировку и деградацию протоколов (подробнее — в [разделах 5](05.md), [17](17.md) и [23](23.md)).
**ТСПУ** (Технические средства противодействия угрозам) — это комплекс оборудования, который устанавливается **в разрыв каналов связи оператора**: каналы оператора разрываются и заворачиваются на ТСПУ, а именно на его байпасы. Основные устройства ТСПУ — фильтры — выполняют фильтрацию и обработку проходящего трафика: распознавание протоколов средствами DPI (Deep Packet Inspection), фильтрацию по реестру Роскомнадзора, блокировку и деградацию протоколов (подробнее — в [разделах 10](filter.md), [17](filter-dpi.md) и [22](protocol-blocking.md)).
Ключевой принцип работы ТСПУ — **прозрачность для оператора**. Фильтры обрабатывают трафик на канальном уровне (L2) — на пути прохождения трафика нет L3-интерфейсов, а байпасы и балансировщики только передают его между парными портами. Поэтому для внешнего наблюдателя ТСПУ представляет собой «провод»: трафик, вошедший через определённый канал связи оператора, обязательно возвращается в тот же канал — ТСПУ не меняет прохождение пакетов по каналам оператора. По требованию операторов оборудование должно быть незаметно в их сети; поэтому, например, на фильтрах отключается протокол LLDP (подробнее — в [разделах 4.3.2](04.md), [5.2](05.md) и [15.2.5](15.md)).
Ключевой принцип работы ТСПУ — **прозрачность для оператора**. Фильтры обрабатывают трафик на канальном уровне (L2) — на пути прохождения трафика нет L3-интерфейсов, а байпасы и балансировщики только передают его между парными портами. Поэтому для внешнего наблюдателя ТСПУ представляет собой «провод»: трафик, вошедший через определённый канал связи оператора, обязательно возвращается в тот же канал — ТСПУ не меняет прохождение пакетов по каналам оператора. По требованию операторов оборудование должно быть незаметно в их сети; поэтому, например, на фильтрах отключается протокол LLDP (подробнее — в [разделах 6.3.2](balancer.md), [10.2](filter.md) и [15.2.5](filter-interfaces.md)).
ТСПУ может устанавливаться в нескольких различных местах сети оператора (подробнее — в [разделе 6](06.md)). На одной площадке оператора может быть развёрнуто различное количество оборудования в зависимости от количества каналов связи и объёма трафика — от двух-трёх фильтров на небольших площадках до полутора десятков на крупных.
ТСПУ может устанавливаться в нескольких различных местах сети оператора (подробнее — в [разделе 3](placement.md)). На одной площадке оператора может быть развёрнуто различное количество оборудования в зависимости от количества каналов связи и объёма трафика — от двух-трёх фильтров на небольших площадках до полутора десятков на крупных.
Существует два типа ТСПУ:
- **ТСПУ тип А** (первый эшелон) — основной тип, который используется практически везде. Под «ТСПУ» без уточнения типа подразумевается именно тип А;
- **ТСПУ тип Б** (второй эшелон, эшелонированная система) — устанавливается на уровне ядра сети крупных операторов для обработки трафика, который не прошёл через ТСПУ тип А; эшелоны позволяют сократить число ТСПУ, устанавливаемых у мелких операторов по всей стране (подробнее — в [разделе 7](07.md)).
- **ТСПУ тип Б** (второй эшелон, эшелонированная система) — устанавливается на уровне ядра сети крупных операторов для обработки трафика, который не прошёл через ТСПУ тип А; эшелоны позволяют сократить число ТСПУ, устанавливаемых у мелких операторов по всей стране (подробнее — в [разделе 4](echelon.md)).
## 1.4. Общая схема: байпасы, балансировщики, фильтры, сегмент управления
@@ -75,7 +75,7 @@ _Состав ТСПУ. Слева — абоненты и оборудован
- **LAN-порты** — смотрят в сторону абонентов (в сторону оборудования оператора, за которым находятся абоненты: BRAS, CGNAT и т. п.);
- **WAN-порты** — смотрят в сторону интернета.
Как это разделение закреплено на портах фильтров и балансировщиков, описано в [разделах 2.2](02.md), [4.3](04.md) и [11.5](11.md).
Как это разделение закреплено на портах фильтров и балансировщиков, описано в [разделах 2.2](traffic-flow.md), [6.3](balancer.md) и [11.5](filter-platform.md).
### Байпасы
@@ -83,11 +83,11 @@ _Состав ТСПУ. Слева — абоненты и оборудован
Скорость байпаса зависит от модели и установленных модулей: как правило, это **10 или 100 Гбит/с**; площадок с гигабитными линками мало. После байпасов все каналы приходят на балансировщики.
Байпас — последнее средство сохранить трафик оператора при отказе ТСПУ: при обесточивании оборудования или при потере контроля пути через ТСПУ он замыкает каналы оператора напрямую, минуя остальные устройства ТСПУ (при обесточивании у оператора возможны флапы линков). Режимы работы байпасов, их отличия для проектов и переход на отечественные устройства описаны в [разделе 3](03.md).
Байпас — последнее средство сохранить трафик оператора при отказе ТСПУ: при обесточивании оборудования или при потере контроля пути через ТСПУ он замыкает каналы оператора напрямую, минуя остальные устройства ТСПУ (при обесточивании у оператора возможны флапы линков). Режимы работы байпасов, их отличия для проектов и переход на отечественные устройства описаны в [разделе 5](bypass.md).
### Балансировщики
Балансировщики — это **высокопроизводительные программируемые коммутаторы**, принимающие трафик от байпасов и распределяющие его по подключённым фильтрам. В ТСПУ тип А используется балансировщик **EcoFilter Balancer**, в эшелонированной системе — **Eco Highway** (см. [раздел 7](07.md)).
Балансировщики — это **высокопроизводительные программируемые коммутаторы**, принимающие трафик от байпасов и распределяющие его по подключённым фильтрам. В ТСПУ тип А используется балансировщик **EcoFilter Balancer**, в эшелонированной системе — **Eco Highway** (см. [раздел 4](echelon.md)).
Основные характеристики:
@@ -95,11 +95,11 @@ _Состав ТСПУ. Слева — абоненты и оборудован
- пропускная способность — **3,2 Тбит/с**, практически на полной скорости при размере пакета более 160 байт; как правило, этой производительности хватает с большим запасом;
- количество балансировщиков зависит от количества каналов связи и от объёма операторского трафика.
Подробно принципы балансировки описаны в [разделе 4](04.md), аппаратная платформа — в [разделе 20](20.md).
Подробно принципы балансировки описаны в [разделе 6](balancer.md), аппаратная платформа — в [разделе 7](balancer-platform.md).
### Фильтры
Фильтры (**EcoFilter**) — это **основные устройства ТСПУ**, занимающиеся непосредственно анализом и обработкой трафика. На фильтрах ТСПУ тип А выполняются распознавание протоколов, фильтрация по реестру Роскомнадзора, блокировка и деградация трафика (в эшелонированной системе блокировка по спискам выполняется на балансировщике Eco Highway — см. [раздел 7](07.md)).
Фильтры (**EcoFilter**) — это **основные устройства ТСПУ**, занимающиеся непосредственно анализом и обработкой трафика. На фильтрах ТСПУ тип А выполняются распознавание протоколов, фильтрация по реестру Роскомнадзора, блокировка и деградация трафика (в эшелонированной системе блокировка по спискам выполняется на балансировщике Eco Highway — см. [раздел 4](echelon.md)).
Количество фильтров зависит **исключительно от объёма трафика**, который необходимо обрабатывать, а не от числа каналов оператора:
@@ -110,7 +110,7 @@ _Состав ТСПУ. Слева — абоненты и оборудован
Фильтры подключаются к балансировщикам преимущественно интерфейсами **10 Гбит/с Ethernet** (на отдельных площадках — 1 Гбит/с); интерфейсов 100 Гбит/с у фильтров проекта нет. Поэтому количество каналов между балансировщиком и фильтрами не совпадает с количеством операторских каналов и может быть достаточно велико.
Путь пакета через фильтр описан в [разделе 5](05.md), модельный ряд и аппаратная платформа — в [разделе 11](11.md).
Путь пакета через фильтр описан в [разделе 10](filter.md), модельный ряд и аппаратная платформа — в [разделе 11](filter-platform.md).
### Сегмент управления
@@ -118,10 +118,10 @@ _Состав ТСПУ. Слева — абоненты и оборудован
Вспомогательные серверы сегмента управления:
- **SPFS** (сервер предварительного формирования списков, на схемах — СПФС) — принимает с фильтров протокольные логи о распознанных сессиях и передаёт их в ЦСУ, где формируются списки блокировки (подробнее — в [разделе 8](08.md));
- **СПХД** (сервер предварительного хранения данных) — хранит системные логи устройств площадки; используется в федеральном проекте (подробнее — в [разделе 14.8](14.md)).
- **SPFS** (сервер предварительного формирования списков, на схемах — СПФС) — принимает с фильтров протокольные логи о распознанных сессиях и передаёт их в ЦСУ, где формируются списки блокировки (подробнее — в [разделе 22](protocol-blocking.md));
- **СПХД** (сервер предварительного хранения данных) — хранит системные логи устройств площадки; используется в федеральном проекте (подробнее — в [разделе 14.8](filter-subsystems.md)).
Адресация и устройство сегмента управления описаны в [разделе 10](10.md).
Адресация и устройство сегмента управления описаны в [разделе 20](management-segment.md).
### Простейший вариант ТСПУ
@@ -137,8 +137,8 @@ _Простейший вариант ТСПУ: байпас и фильтр в
В таком варианте балансировщик не требуется, поскольку весь трафик обрабатывается одним фильтром. Ограничение: могут быть подключены только каналы **1 или 10 Гбит/с** Ethernet, так как фильтры проекта не имеют интерфейсов 100 Гбит/с — только 1G и 10G в зависимости от модели.
В типовой конфигурации, в отличие от простейшей, присутствуют все компоненты: байпасы по количеству каналов оператора, один или несколько балансировщиков и необходимое по объёму трафика число фильтров. Балансировщики принимают трафик от байпасов, распределяют его по фильтрам, а обработанный трафик возвращают через тот же байпас в тот же канал оператора. Типовая схема и прохождение трафика через все участки ТСПУ подробно рассмотрены в [разделе 2](02.md).
В типовой конфигурации, в отличие от простейшей, присутствуют все компоненты: байпасы по количеству каналов оператора, один или несколько балансировщиков и необходимое по объёму трафика число фильтров. Балансировщики принимают трафик от байпасов, распределяют его по фильтрам, а обработанный трафик возвращают через тот же байпас в тот же канал оператора. Типовая схема и прохождение трафика через все участки ТСПУ подробно рассмотрены в [разделе 2](traffic-flow.md).
---
[← Оглавление](../README.md) · [Раздел 2: Прохождение трафика через ТСПУ →](02.md)
[← Оглавление](../README.md) · [Раздел 2: Прохождение трафика через ТСПУ →](traffic-flow.md)
+16 -16
View File
@@ -1,6 +1,6 @@
# 6. Места установки ТСПУ в сети оператора
# 3. Места установки ТСПУ в сети оператора
[← Оглавление](../README.md) · [← Раздел 5: Фильтр](05.md)
[← Оглавление](../README.md) · [← Раздел 2: Прохождение трафика через ТСПУ](traffic-flow.md)
---
@@ -16,7 +16,7 @@
Инкапсуляция на стыке оператора, в разрыв которого встаёт ТСПУ, зависит от технологий конкретного оператора и от места установки в его сети. Это могут быть чистые IP-пакеты, пакеты с VLAN-тегами (одним или двумя — QinQ), пакеты с MPLS-метками, PPPoE-пакеты и различные комбинации. ТСПУ должно уметь разбираться со всеми этими заголовками, чтобы добраться до IP-трафика и выполнить его обработку.
## 6.1. До BRAS/BPE/BNG (между абонентами и терминацией сессий)
## 3.1. До BRAS/BPE/BNG (между абонентами и терминацией сессий)
Первая возможная точка установки — **между абонентами и устройствами терминации абонентских сессий**. Такими устройствами могут быть:
@@ -29,15 +29,15 @@
При установке в этой точке ТСПУ располагается максимально близко к абонентам — до того, как трафик пройдёт через какую-либо обработку на стороне оператора.
### 6.1.1. Особенность: PPPoE-трафик
### 3.1.1. Особенность: PPPoE-трафик
Основная особенность установки **до BRAS** — наличие **PPPoE-трафика**. Широкополосные абоненты подключаются к BRAS по протоколу PPPoE, и этот трафик представляет собой дополнительный уровень инкапсуляции, который необходимо обрабатывать.
Важно: PPPoE-трафик существует **только на участке до BRAS**. Выше BRAS (то есть ближе к интернету) PPPoE-трафика в нормально функционирующих сетях не бывает — BRAS терминирует PPPoE-сессии и дальше передаёт обычные IP-пакеты.
Наличие PPPoE не является критической проблемой — это ещё один уровень инкапсуляции, который фильтру нужно разбирать. Однако его необходимо учитывать при настройке: VLAN-теги фильтр разбирает согласно параметру `vlan_mode` (в проекте — `qinq`), а для обработки самого PPPoE в документации производителя описан отдельный параметр `pppoe_analyzer` (по умолчанию выключен; подробнее — в [разделе 5.1.1](05.md)).
Наличие PPPoE не является критической проблемой — это ещё один уровень инкапсуляции, который фильтру нужно разбирать. Однако его необходимо учитывать при настройке: VLAN-теги фильтр разбирает согласно параметру `vlan_mode` (в проекте — `qinq`), а для обработки самого PPPoE в документации производителя описан отдельный параметр `pppoe_analyzer` (по умолчанию выключен; подробнее — в [разделе 10.1.1](filter.md)).
## 6.2. До CGNAT (после BRAS) — наиболее удобная точка
## 3.2. До CGNAT (после BRAS) — наиболее удобная точка
Вторая точка установки — **между BRAS и CGNAT**. На этом участке BRAS уже терминировал абонентские сессии, но трафик ещё не прошёл трансляцию адресов (NAT).
@@ -46,7 +46,7 @@
1. **Отсутствие PPPoE** — трафик PPPoE уже терминирован на BRAS, что означает меньшее количество заголовков инкапсуляции для обработки;
2. **Видимость абонентских адресов** — серые (частные) IP-адреса абонентов ещё не прошли через NAT-трансляцию и доступны для анализа.
### 6.2.1. Видимость серых абонентских IP-адресов
### 3.2.1. Видимость серых абонентских IP-адресов
На участке до CGNAT фильтры ТСПУ видят **серые** (частные) IP-адреса абонентов — те самые адреса, которые непосредственно назначены абонентским устройствам. Это даёт существенные преимущества при диагностике:
@@ -56,11 +56,11 @@
Эта возможность особенно ценна при траблшутинге — прямая связь между физическим абонентом и его сессиями на ТСПУ значительно ускоряет поиск и устранение проблем.
## 6.3. После CGNAT (ближе к выходу в интернет)
## 3.3. После CGNAT (ближе к выходу в интернет)
Третья точка установки — **после CGNAT**, ближе к выходу в общую сеть интернет. На этом участке трафик уже прошёл трансляцию адресов.
### 6.3.1. Только белые адреса, сложности траблшутинга
### 3.3.1. Только белые адреса, сложности траблшутинга
После CGNAT серых абонентских адресов **больше не видно** — на фильтрах ТСПУ будут присутствовать только **белые** (публичные) IP-адреса из NAT-пула оператора.
@@ -70,11 +70,11 @@
- Для идентификации абонента необходимо **взаимодействовать с оператором** — запрашивать у него информацию о том, в какие порты и IP-адреса был транслирован конкретный абонент на CGNAT;
- Процесс диагностики становится **значительно более длительным** и требует координации между командой ТСПУ и оператором связи.
С точки зрения самой фильтрации (блокировки, распознавания протоколов) размещение после CGNAT не вносит каких-либо ограничений — функциональность ТСПУ остаётся полной. Основное неудобство касается диагностики и траблшутинга. Кроме того, за одним адресом NAT-пула стоит много абонентов, а балансировщик распределяет трафик по парам адресов, поэтому трафик многих абонентов к одному ресурсу попадает на одно ядро фильтра ([раздел 4.5.1](04.md)).
С точки зрения самой фильтрации (блокировки, распознавания протоколов) размещение после CGNAT не вносит каких-либо ограничений — функциональность ТСПУ остаётся полной. Основное неудобство касается диагностики и траблшутинга. Кроме того, за одним адресом NAT-пула стоит много абонентов, а балансировщик распределяет трафик по парам адресов, поэтому трафик многих абонентов к одному ресурсу попадает на одно ядро фильтра ([раздел 6.5.1](balancer.md)).
> **Примечание:** в ряде случаев подсистемы BRAS и CGNAT могут быть **совмещены в одном устройстве**. В этом случае участок «между BRAS и CGNAT» (наиболее удобная точка установки) попросту отсутствует — ТСПУ может быть установлено либо до этого комбинированного устройства, либо после него.
## 6.4. Режим On-a-stick (BRAS/CGNAT подключены петлёй)
## 3.4. Режим On-a-stick (BRAS/CGNAT подключены петлёй)
Помимо трёх линейных точек установки, существует особый вариант размещения ТСПУ — когда сервисное оборудование оператора (BRAS и/или CGNAT) подключено **в режиме on-a-stick** (петлёй).
@@ -101,7 +101,7 @@
| **CGNAT on-a-stick** | Трафик до CGNAT + трафик после CGNAT (сегменты 2 + 3) |
| **BRAS + CGNAT on-a-stick**| Трафик до обоих устройств + трафик после обоих (сегменты 1 + 3) |
### 6.4.1. Двойное прохождение трафика через ТСПУ
### 3.4.1. Двойное прохождение трафика через ТСПУ
При подключении on-a-stick трафик проходит через ТСПУ **дважды**:
@@ -110,7 +110,7 @@
Это означает, что каждая абонентская сессия потенциально **видна фильтрам дважды**, причём на втором проходе адреса могут быть уже другими (после NAT-трансляции на CGNAT). Без дополнительных мер это приводит к удвоению количества сессий и удвоению нагрузки на ТСПУ.
### 6.4.2. Разделение по VLAN для обработки трафика одного направления
### 3.4.2. Разделение по VLAN для обработки трафика одного направления
**Наиболее удобная конфигурация** при подключении on-a-stick — когда оператор чётко разделяет трафик по VLAN:
@@ -119,14 +119,14 @@
В этом случае на ТСПУ можно настроить обработку **только нужного VLAN** (например, трафика до CGNAT, где видны серые абонентские адреса), а второй VLAN — **прозрачно пропустить** на уровне балансировщика, даже не отправляя его на фильтры.
Это достигается через **flow rules** балансировщика (подробнее — в [разделе 4.4](04.md)):
Это достигается через **flow rules** балансировщика (подробнее — в [разделе 6.4](balancer.md)):
- Правило с действием `balancing` — для VLAN, который нужно обрабатывать (трафик отправляется на фильтры);
- Правило с действием `bypass` — для VLAN, который нужно пропустить (трафик прозрачно проходит через балансировщик).
В результате фильтры обрабатывают трафик **только один раз**, каждый абонент виден единожды, путаницы с сессиями не возникает.
### 6.4.3. Проблемы двойной обработки и best practice
### 3.4.3. Проблемы двойной обработки и best practice
Если оператор **не может** чётко отделить трафик до и после BRAS/CGNAT (например, оба направления идут в одном VLAN), возникает ситуация **двойной обработки**. Её последствия:
@@ -142,4 +142,4 @@
---
[← Оглавление](../README.md) · [← Раздел 5: Фильтр](05.md) · [Раздел 7: Эшелонированная система →](07.md)
[← Оглавление](../README.md) · [← Раздел 2: Прохождение трафика через ТСПУ](traffic-flow.md) · [Раздел 4: Эшелонированная система →](echelon.md)
+177 -30
View File
@@ -1,18 +1,18 @@
# 23. Распознавание протоколов (DPI Engine)
# 22. Распознавание протоколов и двухстадийная блокировка
[← Оглавление](../README.md) · [← Раздел 22: Балансировщик: мониторинг и диагностика](22.md)
[← Оглавление](../README.md) · [← Раздел 21: Центральная система управления](central-management.md)
---
Распознавание протоколов — одна из ключевых функций фильтра ТСПУ. Внутренний движок DPI анализирует проходящие сессии и определяет, к какому протоколу или приложению они относятся: Telegram, WhatsApp, Viber, OpenVPN, BitTorrent и другие. Распознавание особенно важно для **шифрованного трафика**, где нет очевидных полей, указывающих на конкретный протокол, и идентификация выполняется **косвенным образом**.
## 23.1. Многофакторный анализ сессий
## 22.1. Многофакторный анализ сессий
DPI-движок фильтра анализирует не отдельные пакеты, а **целые сессии**. Для распознавания необходимо, чтобы в рамках одной сессии прошло **несколько пакетов** в обоих направлениях — одного первого пакета недостаточно.
Анализ проводится по **множеству параметров одновременно** — их может быть десяток и более. Совокупность этих параметров формирует уникальный «профиль» трафика конкретного протокола.
### 23.1.1. Размеры пакетов и их вариации
### 22.1.1. Размеры пакетов и их вариации
Один из ключевых параметров анализа — **размеры пакетов** в рамках сессии и их **вариации**:
@@ -22,7 +22,7 @@ DPI-движок фильтра анализирует не отдельные
Разные протоколы и приложения генерируют пакеты с **характерными размерными профилями**. Например, голосовой трафик мессенджера будет иметь иной размерный профиль, чем передача файлов через тот же мессенджер.
### 23.1.2. Частота прохождения пакетов
### 22.1.2. Частота прохождения пакетов
**Частота прохождения пакетов** — ещё один важный параметр:
@@ -32,7 +32,7 @@ DPI-движок фильтра анализирует не отдельные
Голосовые вызовы, например, генерируют поток пакетов с **регулярными короткими интервалами**, тогда как обмен текстовыми сообщениями создаёт **нерегулярный** трафик с длительными паузами.
### 23.1.3. Ключевые слова и паттерны внутри пакетов
### 22.1.3. Ключевые слова и паттерны внутри пакетов
DPI-движок также анализирует **содержимое пакетов** — ищет характерные ключевые слова, последовательности байтов и структурные паттерны:
@@ -42,7 +42,7 @@ DPI-движок также анализирует **содержимое пак
Помимо очевидных параметров (source/destination IP, порты), анализируются **менее очевидные** признаки, которые в совокупности позволяют отнести сессию к конкретному протоколу.
### 23.1.4. Особенности анализа шифрованного трафика
### 22.1.4. Особенности анализа шифрованного трафика
Шифрованный трафик представляет **особую сложность** для распознавания:
@@ -54,7 +54,7 @@ DPI-движок также анализирует **содержимое пак
> **Принцип работы:** DPI-движок берёт сессию (не один пакет, а несколько пакетов в обоих направлениях), анализирует их по множеству параметров и принимает решение — например, «данный трафик в этой сессии — это Telegram» или «это WhatsApp».
## 23.2. Ложноположительные срабатывания
## 22.2. Ложноположительные срабатывания
Многофакторный анализ **не является стопроцентным** — возможны **ложноположительные срабатывания** (false positives), когда один шифрованный трафик по тем же косвенным критериям ошибочно распознаётся как другой протокол.
@@ -68,9 +68,39 @@ DPI-движок также анализирует **содержимое пак
**Последствия ложного срабатывания:** если фильтр ошибочно распознал легитимный трафик как блокируемый протокол и сразу заблокировал его — пользователь потеряет доступ к полезному ресурсу. Именно поэтому прямая блокировка по результатам DPI на фильтре **не применяется** для протоколов — вместо этого используется двухстадийная схема.
## 23.3. Двухстадийная блокировка: распознавание → очистка в ЦСУ → блокировка
## 22.3. Обфускация и борьба с обходом блокировок
Для минимизации ложноположительных срабатываний блокировка протоколов выполняется **в два этапа** (подробная схема — в [разделе 8](08.md)):
Обфускация — это намеренное изменение характеристик протокола, направленное на то, чтобы DPI-движок **не смог его распознать**. Это постоянная «гонка вооружений» между разработчиками средств обхода блокировок и разработчиками систем фильтрации.
### Принцип «нанайских мальчиков»
Борьба между системами обхода и системами блокировки описывается как **постоянное противостояние**: одна сторона в какой-то момент имеет преимущество, которое затем нивелируется следующим шагом противоположной стороны.
### Типы обфускации и возможности распознавания
| Тип обфускации | Возможность распознавания |
| ------------------------------------------- | ---------------------------------------------------------------------- |
| **Простая** (например, XOR) | Фильтр может «развернуть» обфускацию и распознать протокол |
| **Протокол притворяется другим** | Распознавание возможно, но требует разработки новых сигнатур и методик |
| **Качественная имитация другого протокола** | Распознать **невозможно** без разработки принципиально нового подхода |
### Обновление сигнатур
Когда обнаруживается, что новая версия приложения или протокола **перестала распознаваться** фильтром, это означает необходимость:
1. **Анализа изменений** — что именно изменилось в новой версии протокола;
2. **Разработки новой сигнатуры** — обновление правил распознавания для учёта изменений;
3. **Обновления прошивки** — доставка обновлённого DPI-движка на фильтры.
> **Практический подход:** к этому процессу следует относиться с пониманием — это нормальная и ожидаемая ситуация. Полное и постоянное распознавание всех протоколов **невозможно** в принципе. Задача системы — поддерживать актуальные сигнатуры и оперативно реагировать на изменения.
### Защита от ложных блокировок при борьбе с обфускацией
Двухстадийная система блокировки (раздел 22.4) особенно важна в контексте борьбы с обфускацией. Обфусцированный трафик **по определению** имеет нестандартный профиль, что повышает вероятность ложноположительного срабатывания. Централизованная очистка на ЦСУ снижает этот риск, сопоставляя данные с множества источников.
## 22.4. Двухстадийная блокировка: распознавание → очистка в ЦСУ → блокировка
Для минимизации ложноположительных срабатываний блокировка протоколов выполняется **в два этапа** (этапы подробно описаны ниже — в [разделах 22.5–22.10](#225-первый-этап-распознавание-протоколов-на-фильтрах-тспу-тип-а)):
```text
┌─────────────────────────────────────────────────────────────────┐
@@ -128,38 +158,155 @@ DPI-движок также анализирует **содержимое пак
### Время полного цикла
От момента появления нового, ранее неизвестного сервера блокируемого протокола до его фактической блокировки проходит **от 5 до 15 минут** (подробнее — в [разделе 8.6](08.md)).
От момента появления нового, ранее неизвестного сервера блокируемого протокола до его фактической блокировки проходит **от 5 до 15 минут** (подробнее — в [разделе 22.10](#2210-время-полного-цикла-блокировки-515-минут)).
## 23.4. Обфускация и борьба с обходом блокировок
## 22.5. Первый этап: распознавание протоколов на фильтрах (ТСПУ тип А)
Обфускация — это намеренное изменение характеристик протокола, направленное на то, чтобы DPI-движок **не смог его распознать**. Это постоянная «гонка вооружений» между разработчиками средств обхода блокировок и разработчиками систем фильтрации.
Блокировка протоколов (Telegram, WhatsApp, Viber и др.) в системе ТСПУ реализована **в два этапа** — так называемая двухстадийная блокировка. Необходимость двухстадийного подхода обусловлена природой распознавания шифрованного трафика: фильтр анализирует сессию по множеству косвенных признаков (размеры пакетов, частота прохождения, вариации размеров, ключевые слова внутри пакетов), и такое распознавание **не является стопроцентным**. Возможны ложноположительные срабатывания — когда другой шифрованный трафик по тем же критериям ошибочно распознаётся как, например, Telegram. Прямая блокировка по результатам DPI на фильтре привела бы к случайной блокировке легитимных ресурсов.
### Принцип «нанайских мальчиков»
На **первом этапе** фильтры ТСПУ тип А выполняют только **распознавание** протоколов, но **не блокируют** их:
Борьба между системами обхода и системами блокировки описывается как **постоянное противостояние**: одна сторона в какой-то момент имеет преимущество, которое затем нивелируется следующим шагом противоположной стороны.
1. Трафик проходит через фильтр и обрабатывается движком DPI;
2. DPI-движок анализирует каждую сессию по множеству параметров (многофакторный анализ) и определяет, к какому протоколу она относится;
3. Фильтр фиксирует результат распознавания в виде **протокольного лога** — записи о том, что конкретная сессия предварительно опознана как сессия определённого протокола;
4. Сессия при этом **не блокируется** — трафик продолжает проходить без ограничений.
### Типы обфускации и возможности распознавания
Распознавание выполняется в отдельном DPI-листе, на котором установлен режим **behavior: ignore** — это означает, что срабатывание правил фиксируется, но никаких блокирующих действий не предпринимается. Лист 0 для этого не используется: в нём по умолчанию работает фильтрация по реестру Роскомнадзора ([раздел 10.1.3](filter.md)).
| Тип обфускации | Возможность распознавания |
| ------------------------------------------- | ---------------------------------------------------------------------- |
| **Простая** (например, XOR) | Фильтр может «развернуть» обфускацию и распознать протокол |
| **Протокол притворяется другим** | Распознавание возможно, но требует разработки новых сигнатур и методик |
| **Качественная имитация другого протокола** | Распознать **невозможно** без разработки принципиально нового подхода |
## 22.6. Отправка логов на SPFS (сервер предварительного формирования списков)
### Обновление сигнатур
Протокольные логи с результатами распознавания отправляются с фильтров на **SPFS** (сервер предварительного формирования списков), расположенный на той же площадке ТСПУ.
Когда обнаруживается, что новая версия приложения или протокола **перестала распознаваться** фильтром, это означает необходимость:
Отправка настраивается в секции **debug logger** конфигурации фильтра:
1. **Анализа изменений** — что именно изменилось в новой версии протокола;
2. **Разработки новой сигнатуры** — обновление правил распознавания для учёта изменений;
3. **Обновления прошивки** — доставка обновлённого DPI-движка на фильтры.
- **Включение отправки** — секция активируется для нужных протоколов;
- **Выбор протоколов** — по умолчанию `all` (все распознаваемые протоколы), но можно указать только конкретные (Telegram, WhatsApp и т.д.);
- **Количество пакетов на протокол** — определяет, сколько пакетов из каждой распознанной сессии будет отправлено в лог. По умолчанию значение 0 (без ограничения, что соответствует первым 30 пакетам). На практике для корректного анализа достаточно **3 пакетов** — это значение было подтверждено в ходе тестов на Урале. Значение 30 генерирует избыточный объём лог-трафика;
- **Лог-интерфейс** — по умолчанию используется выделенный лог-интерфейс (DPDK). Возможно переключение на management-интерфейс, однако это **не рекомендуется**, так как производительность отправки логов значительно снизится;
- **Адрес и порт назначения** — указываются координаты сервера SPFS на площадке.
> **Практический подход:** к этому процессу следует относиться с пониманием — это нормальная и ожидаемая ситуация. Полное и постоянное распознавание всех протоколов **невозможно** в принципе. Задача системы — поддерживать актуальные сигнатуры и оперативно реагировать на изменения.
SPFS занимается **накоплением** поступающих протокольных логов со всех фильтров площадки и их **предварительной обработкой** перед отправкой в центральную систему управления.
### Защита от ложных блокировок при борьбе с обфускацией
## 22.7. Передача логов по GRPC в центральную систему управления
Двухстадийная система блокировки (раздел 23.3) особенно важна в контексте борьбы с обфускацией. Обфусцированный трафик **по определению** имеет нестандартный профиль, что повышает вероятность ложноположительного срабатывания. Централизованная очистка на ЦСУ снижает этот риск, сопоставляя данные с множества источников.
Накопленные и предварительно обработанные логи SPFS передаёт в **центральную систему управления (ЦСУ)** по протоколу **gRPC**.
```text
ТСПУ тип А (площадка) Центральная система управления
┌──────────────────────┐ ┌──────────────────────────┐
│ │ │ │
│ Фильтр 1 ──┐ │ │ Подсистема формирования │
│ Фильтр 2 ──┼→ SPFS ├── gRPC ───→│ списков фильтрации │
│ Фильтр N ──┘ │ │ │
│ │ VPN │ • Сбор логов со всех │
└──────────────────────┘ (Континент)│ площадок ТСПУ тип А │
│ • Сохранение в БД │
ТСПУ тип А (площадка) │ • Периодический анализ │
┌──────────────────────┐ │ • Формирование списков │
│ │ │ │
│ Фильтр 1 ──┐ │ └──────────────────────────┘
│ Фильтр 2 ──┼→ SPFS ├── gRPC ───→
│ Фильтр N ──┘ │
│ │
└──────────────────────┘
```
ЦСУ представляет собой **многокомпонентную распределённую систему**, развёрнутую на двух независимых площадках. Связь между площадками ТСПУ и ЦСУ осуществляется через **VPN** (криптошлюз «Континент»). Данные поступают со **всех площадок** ТСПУ тип А по всей стране — это порядка 350 площадок и около 5 000 устройств.
Протокольные логи отправляются **только с фильтров ТСПУ тип А** (первого эшелона). Фильтры ТСПУ тип Б (эшелон) протокольных логов **не генерируют** — на них отсутствует функционал распознавания протоколов, поскольку блокировка протоколов на эшелоне выполняется самим балансировщиком Eco Highway по уже готовым спискам.
## 22.8. Анализ, очистка от ложных срабатываний, формирование списков
Внутри ЦСУ за обработку протокольных логов отвечает **подсистема формирования списков фильтрации**. Эта подсистема выполняет несколько ключевых функций:
**Сбор и хранение.** Логи со всех площадок ТСПУ тип А сохраняются в базе данных ЦСУ. Система агрегирует данные с множества фильтров, что даёт ей **значительно более полную картину**, чем та, которую видит каждый отдельный фильтр.
**Периодический анализ.** С заданной периодичностью подсистема проводит анализ накопленных данных. Периодичность анализа — **настраиваемый параметр**: можно запускать анализ раз в минуту, раз в 5 минут и т.д. Более частый анализ требует большей производительности серверов.
**Очистка от ложных срабатываний.** Ключевое преимущество централизованного анализа — возможность проведения **более глубокого анализа**, чем на отдельном фильтре:
- **Сопоставление сессий с различных устройств** — ЦСУ видит данные с множества фильтров на разных площадках, а не только с одного конкретного. Это позволяет выявлять закономерности, недоступные на уровне единичного фильтра;
- **Статистический анализ** — использование накопленных статистических данных для верификации результатов распознавания;
- **Обогащение данных** — дополнение результатов распознавания сторонней информацией для повышения точности;
- **Выделение конкретных адресов** — на примере Telegram: из всех сессий, распознанных как Telegram, формируется список IP-адресов и портов, на которых были обнаружены серверы Telegram или его прокси различных типов.
**Формирование очищенных списков.** По результатам анализа создаются **очищенные списки**, в которых вероятность ложноположительного срабатывания **крайне низка**. Эти списки содержат конкретные IP-адреса и порты (для каждого протокола — свой список), которые система с высокой степенью уверенности идентифицировала как принадлежащие блокируемому протоколу.
## 22.9. Загрузка очищенных списков обратно на фильтры (HTTP) и на Eco Highway (BGP)
Сформированные очищенные списки загружаются обратно на оборудование ТСПУ двумя путями:
### Загрузка на фильтры ТСПУ тип А (по HTTP)
Очищенные списки загружаются на фильтры по протоколу **HTTP** в **отдельный DPI-лист**, отличный от того, в котором выполняется распознавание:
| DPI-лист | Назначение | Behavior |
|----------|-----------|----------|
| Лист распознавания | Распознавание протоколов (первый этап) | **ignore** — срабатывание фиксируется, но не блокируется |
| DPI-лист 5 (пример) | Блокировка по очищенным спискам из ЦСУ | **block** — трафик блокируется |
Таким образом, на одном фильтре **одновременно работают два процесса**:
- в листе распознавания продолжается распознавание новых сессий и отправка логов;
- в DPI-листе 5 выполняется блокировка по уже проверенным и очищенным спискам.
### Загрузка на Eco Highway (по BGP)
Те же очищенные списки, но в **несколько ином формате**, загружаются по протоколу **BGP** на балансировщики **Eco Highway** (ТСПУ тип Б). На эшелоне блокировка протоколов выполняется **самим балансировщиком** по IP-адресам и портам — без участия фильтров.
```text
Центральная система управления
┌──────────────────────────────┐
│ Очищенные списки │
│ (IP + порт для каждого │
│ протокола) │
└───────┬──────────┬──────────┘
│ │
HTTP │ │ BGP
│ │
▼ ▼
┌───────────┐ ┌───────────┐
│ Фильтры │ │ Eco │
│ ТСПУ А │ │ Highway │
│ │ │ ТСПУ Б │
│ DPI-лист 5│ │ │
│ behavior: │ │ Блокировка│
│ block │ │ по L3/L4 │
└───────────┘ └───────────┘
```
Фильтры ТСПУ тип Б получают от Eco Highway только тот трафик, который требует URL-фильтрации по реестру РКН. Блокировка протоколов в прошивке фильтров эшелона **отсутствует** — она не нужна, поскольку этим занимается сам балансировщик.
## 22.10. Время полного цикла блокировки: ~5–15 минут
Полный цикл двухстадийной блокировки — от момента появления нового, ранее неизвестного сервера блокируемого протокола до его фактической блокировки — составляет **от 5 до 15 минут**.
```text
┌────────────────────────────────────────────────────────────────┐
│ Полный цикл блокировки │
│ │
│ 1. Абонент подключается к новому серверу ─┐ │
│ (например, новая Telegram-прокси) │ │
│ │ ~5–15 мин │
│ 2. Фильтр распознаёт протокол (DPI) │ │
│ 3. Лог отправляется на SPFS │ │
│ 4. SPFS передаёт в ЦСУ (gRPC) │ │
│ 5. ЦСУ анализирует и формирует список │ │
│ 6. Список загружается на фильтры (HTTP) │ │
│ и Eco Highway (BGP) │ │
│ 7. Блокировка активируется ─┘ │
└────────────────────────────────────────────────────────────────┘
```
Эти данные получены в ходе тестирования эшелонированной системы в тестовой зоне в Сургуте. Время полного цикла **зависит от настроек**:
- **Периодичность анализа на ЦСУ** — чем чаще запускается анализ базы данных (например, раз в минуту вместо раз в 5 минут), тем быстрее формируются списки, но тем выше нагрузка на серверы;
- **Настройки SPFS** — параметры накопления и предварительной обработки логов;
- **Количество сессий по данному протоколу** — при большом количестве сессий (много абонентов используют блокируемый протокол) блокировка срабатывает быстрее, так как данных для анализа больше.
**Важно:** до момента обновления списка фильтр **не обрывает** существующие сессии блокируемого протокола. Например, если появилась новая Telegram-прокси, которая ранее нигде не была зафиксирована, абонент может свободно работать через неё до тех пор, пока фильтр не получит обновлённый список, содержащий адрес этой прокси.
Поскольку проект подобного масштаба реализуется впервые, текущие параметры основаны на эмпирических данных из тестовых сегментов. Не исключена корректировка параметров в ту или иную сторону по мере накопления опыта эксплуатации. Если серверы будут перегружаться, можно снизить частоту анализа — это увеличит время блокировки, но позволит существующим серверам справляться с нагрузкой.
---
[← Оглавление](../README.md) · [← Раздел 22: Балансировщик: мониторинг и диагностика](22.md) · [Раздел 24: Траблшутинг →](24.md)
[← Оглавление](../README.md) · [← Раздел 21: Центральная система управления](central-management.md) · [Раздел 23: Траблшутинг →](troubleshooting.md)
+22 -22
View File
@@ -1,6 +1,6 @@
# 2. Прохождение трафика через ТСПУ
[← Оглавление](../README.md) · [← Раздел 1: Введение и общая архитектура АСБИ](01.md)
[← Оглавление](../README.md) · [← Раздел 1: Введение и общая архитектура АСБИ](overview.md)
---
@@ -30,7 +30,7 @@ _Типовая схема ТСПУ: 1 — стык оператора (N × 10/
└─────────────────────────────────────────────┘
```
В обратном пакете (от ресурса к абоненту) source и destination меняются местами. Эта терминология (local/remote) используется далее во всей документации, в том числе при описании сессий на фильтре ([раздел 12](12.md)).
В обратном пакете (от ресурса к абоненту) source и destination меняются местами. Эта терминология (local/remote) используется далее во всей документации, в том числе при описании сессий на фильтре ([раздел 12](filter-sessions.md)).
<img width="1024" alt="image" src="https://github.com/user-attachments/assets/d4b641db-783f-41de-b94b-3211ec2767a3" />
@@ -38,7 +38,7 @@ _Стык оператора: адреса и порты в прямом и об
### Инкапсуляция на стыке оператора
На стыке оператора связи пакет может иметь различную дополнительную инкапсуляцию. Она зависит от технологий, применяемых конкретным оператором, от места в сети, куда устанавливается ТСПУ ([раздел 6](06.md)), и от других факторов.
На стыке оператора связи пакет может иметь различную дополнительную инкапсуляцию. Она зависит от технологий, применяемых конкретным оператором, от места в сети, куда устанавливается ТСПУ ([раздел 3](placement.md)), и от других факторов.
Общая структура кадра Ethernet с учётом возможных дополнительных заголовков:
@@ -60,7 +60,7 @@ _Стык оператора: адреса и порты в прямом и об
| **MPLS** | Одна или несколько MPLS-меток |
| **VLAN + MPLS** | VLAN-тег(и), за ними стек MPLS-меток |
| **Ethernet поверх MPLS** | Внутри MPLS-меток — вложенный Ethernet-кадр со своими VLAN-тегами (псевдопровод EoMPLS, VPLS), и только затем IP |
| **PPPoE** | PPPoE-заголовок и PPP-заголовок перед IP; характерен для участка абонент → BRAS ([раздел 6.1](06.md)) |
| **PPPoE** | PPPoE-заголовок и PPP-заголовок перед IP; характерен для участка абонент → BRAS ([раздел 3.1](placement.md)) |
| **PPPoE + MPLS** | PPPoE-кадр, в свою очередь упакованный в MPLS (например, перенос PPPoE до BRAS через псевдопровод) |
Вариантов инкапсуляции в операторских сетях очень много, и перечислить их исчерпывающе невозможно — на стыке может встретиться практически что угодно. Ключевой момент: **ТСПУ должен уметь разбирать все эти заголовки**, чтобы добраться до IP-пакета и выполнить его анализ и обработку. Все манипуляции выполняются только с IP-пакетом; заголовки инкапсуляции, стоящие перед ним (VLAN-теги, MPLS-метки, PPPoE), ни балансировщик, ни фильтр не снимают и не модифицируют — пакет возвращается оператору с тем же стеком заголовков, с которым пришёл. Служебный заголовок, который балансировщик добавляет для передачи пакета фильтру внутри ТСПУ, снимается до возврата пакета оператору (см. [2.4](#24-типовая-схема-тспу)). Если IP-пакета в стеке заголовков не обнаружено, такой трафик пропускается прозрачно и на фильтры не отправляется.
@@ -83,13 +83,13 @@ _Стык оператора: адреса и порты в прямом и об
Эта идеология **прослеживается через всё оборудование ТСПУ** — от байпасов до балансировщиков и фильтров. Все порты на любом устройстве ТСПУ можно разделить на две группы: порты в сторону абонентов (LAN) и порты в сторону интернета (WAN). Порты всегда работают **парами** LAN + WAN: на байпасе это Net0/Net1 и Mon0/Mon1, на балансировщике — линки и группы портов, на фильтре — пары соседних интерфейсов. Ни LAN-, ни WAN-порты не имеют IP-адресов и не участвуют в маршрутизации.
На **фильтрах** разделение реализовано жёстко: интерфейсы нумеруются с единицы и объединены в пары соседних номеров (te1/te2, te3/te4 …), в каждой паре **чётный** порт — LAN, **нечётный** — WAN ([раздел 11.5](11.md)). На **балансировщиках** жёсткой привязки нет, но такое же разделение принято по договорённости при проектировании схем: чётные порты назначаются LAN-портами, нечётные — WAN-портами, причём как для портов в сторону оператора, так и для портов в сторону фильтров. Для 10-гигабитных портов чётность определяется по второй цифре номера (например, p4-2 — LAN, p4-1 — WAN), для 100-гигабитных — по единственной цифре (p10 — LAN, p9 — WAN); подробнее — в [разделе 4.3](04.md).
На **фильтрах** разделение реализовано жёстко: интерфейсы нумеруются с единицы и объединены в пары соседних номеров (te1/te2, te3/te4 …), в каждой паре **чётный** порт — LAN, **нечётный** — WAN ([раздел 11.5](filter-platform.md)). На **балансировщиках** жёсткой привязки нет, но такое же разделение принято по договорённости при проектировании схем: чётные порты назначаются LAN-портами, нечётные — WAN-портами, причём как для портов в сторону оператора, так и для портов в сторону фильтров. Для 10-гигабитных портов чётность определяется по второй цифре номера (например, p4-2 — LAN, p4-1 — WAN), для 100-гигабитных — по единственной цифре (p10 — LAN, p9 — WAN); подробнее — в [разделе 6.3](balancer.md).
Этот принцип является основой для корректной обработки трафика: пакет, вошедший через определённый LAN-порт, после обработки обязательно выходит через парный ему WAN-порт (и наоборот). Устройства ТСПУ не изучают MAC-адреса и не ведут таблиц коммутации — кадр всегда передаётся строго в парный порт, поэтому для оборудования оператора ТСПУ неотличим от отрезка кабеля.
## 2.3. Простейший вариант ТСПУ (один байпас, один фильтр)
В минимальной конфигурации (см. также [раздел 1.4](01.md)) ТСПУ состоит всего из трёх компонентов:
В минимальной конфигурации (см. также [раздел 1.4](overview.md)) ТСПУ состоит всего из трёх компонентов:
- **один байпас** — для одного-двух каналов связи оператора;
- **один фильтр** — для обработки всего проходящего трафика;
@@ -114,7 +114,7 @@ _Стык оператора: адреса и порты в прямом и об
В таком варианте **балансировщик не нужен**, поскольку весь трафик обрабатывается одним фильтром и распределение по нескольким фильтрам не требуется. Порты байпаса Mon0 и Mon1 подключаются непосредственно к паре портов фильтра: Mon0 — к LAN-порту, Mon1 — к WAN-порту. Heartbeat-пакеты, которыми байпас проверяет канал до фильтра, в этой схеме доходят до фильтра; это служебные кадры, которые фильтр без обработки передаёт в парный порт, и контур проверки замыкается.
Ограничения этой схемы: могут быть подключены только каналы **1 Гбит/с** или **10 Гбит/с** Ethernet, поскольку фильтры проекта (модели 2020/2040 и 4080/4120/4160 — [раздел 11](11.md)) не имеют интерфейсов 100 Гбит/с — только 1G и 10G в зависимости от конкретной модели; пропускная способность ограничена одним фильтром, а при его отказе байпас замыкает канал, и трафик проходит без анализа. По техническому описанию производителя 2024 года интерфейсы 100GE (2 × QSFP28) есть только у более поздней старшей модели EcoFilter 5200 (см. [указатель оборудования](../tspu-equipment/README.md)).
Ограничения этой схемы: могут быть подключены только каналы **1 Гбит/с** или **10 Гбит/с** Ethernet, поскольку фильтры проекта (модели 2020/2040 и 4080/4120/4160 — [раздел 11](filter-platform.md)) не имеют интерфейсов 100 Гбит/с — только 1G и 10G в зависимости от конкретной модели; пропускная способность ограничена одним фильтром, а при его отказе байпас замыкает канал, и трафик проходит без анализа. По техническому описанию производителя 2024 года интерфейсы 100GE (2 × QSFP28) есть только у более поздней старшей модели EcoFilter 5200 (см. [указатель оборудования](../tspu-equipment/README.md)).
## 2.4. Типовая схема ТСПУ
@@ -149,7 +149,7 @@ _Стык оператора: адреса и порты в прямом и об
### Этап 1: Байпас
Канал связи оператора физически разрывается и заводится на байпас: порты **Net0/Net1** смотрят в сторону оборудования оператора (LAN и WAN соответственно), порты **Mon0/Mon1** — в сторону балансировщика. В штатном режиме (Inline) байпас прозрачно пропускает трафик насквозь: Net0 → Mon0 в сторону балансировщика и Mon1 → Net1 обратно (и то же самое для другого направления). Байпас обеспечивает защиту канала: при потере heartbeat-контроля до балансировщика, при пропадании линков Mon или при обесточивании он замыкает линки напрямую, минуя остальное оборудование ТСПУ. У байпасов Silicom переключение между режимами Inline, TAP и Active Bypass для оператора безболезненно — теряются лишь пакеты, которые в момент переключения уже ушли в сторону балансировщика, но не успели вернуться (байпасы GL Sun пилотного проекта таких режимов не имеют и переключаются с флапом линка — [раздел 3.3](03.md)).
Канал связи оператора физически разрывается и заводится на байпас: порты **Net0/Net1** смотрят в сторону оборудования оператора (LAN и WAN соответственно), порты **Mon0/Mon1** — в сторону балансировщика. В штатном режиме (Inline) байпас прозрачно пропускает трафик насквозь: Net0 → Mon0 в сторону балансировщика и Mon1 → Net1 обратно (и то же самое для другого направления). Байпас обеспечивает защиту канала: при потере heartbeat-контроля до балансировщика, при пропадании линков Mon или при обесточивании он замыкает линки напрямую, минуя остальное оборудование ТСПУ. У байпасов Silicom переключение между режимами Inline, TAP и Active Bypass для оператора безболезненно — теряются лишь пакеты, которые в момент переключения уже ушли в сторону балансировщика, но не успели вернуться (байпасы GL Sun пилотного проекта таких режимов не имеют и переключаются с флапом линка — [раздел 5.3](bypass.md)).
Байпас контролирует доступность канала до балансировщика служебными heartbeat-пакетами, которые отправляются из Mon0 и должны вернуться в Mon1 (и наоборот); до фильтров эти пакеты не доходят — балансировщик прозрачно заворачивает их обратно. Если heartbeat-пакеты перестают проходить, байпас автоматически переключает канал в режим TAP или Active Bypass.
@@ -157,13 +157,13 @@ _Стык оператора: адреса и порты в прямом и об
_Байпас: порты NET0/NET1 в сторону оператора, MON0/MON1 в сторону балансировщика, режимы passive/active bypass, TAP и Inline, контуры heartbeat MON0 → MON1 и MON1 → MON0 через балансировщик._
Подробнее о режимах работы байпаса — в [разделе 3](03.md).
Подробнее о режимах работы байпаса — в [разделе 5](bypass.md).
### Этап 2: Балансировщик — линки и исключение служебного трафика
Все порты балансировщика делятся на две группы: порты, подключённые через байпасы к оборудованию оператора, и порты, к которым подключены фильтры; и те и другие организованы парами LAN/WAN. По умолчанию никакой конфигурации в балансировщике нет — номера и назначение портов выбираются при проектировании конкретного узла, поэтому номера портов в примерах условны.
На входе в балансировщик порты в сторону оператора объединяются в **линки** — логические пары LAN + WAN. Пакет, вошедший в LAN-порт линка, после обработки всегда выходит через WAN-порт того же линка (и наоборот) и ни в какой другой порт попасть не может. Так ТСПУ не меняет прохождение пакетов по каналам оператора: пакет, отправленный оператором в конкретный канал, выходит из ТСПУ в продолжение того же канала, и трафик разных линков никогда не смешивается. Соблюдается также правило проектирования: все каналы одного агрегированного линка (LAG) оператора заводятся на один и тот же балансировщик — иначе прямое и обратное направления одной сессии, разнесённые оператором по разным каналам агрегата, могут попасть на разные балансировщики и, следовательно, на разные фильтры ([раздел 4.3.3](04.md)).
На входе в балансировщик порты в сторону оператора объединяются в **линки** — логические пары LAN + WAN. Пакет, вошедший в LAN-порт линка, после обработки всегда выходит через WAN-порт того же линка (и наоборот) и ни в какой другой порт попасть не может. Так ТСПУ не меняет прохождение пакетов по каналам оператора: пакет, отправленный оператором в конкретный канал, выходит из ТСПУ в продолжение того же канала, и трафик разных линков никогда не смешивается. Соблюдается также правило проектирования: все каналы одного агрегированного линка (LAG) оператора заводятся на один и тот же балансировщик — иначе прямое и обратное направления одной сессии, разнесённые оператором по разным каналам агрегата, могут попасть на разные балансировщики и, следовательно, на разные фильтры ([раздел 6.3.3](balancer.md)).
К каждому линку привязаны **правила** (flow rules) балансировщика — они применяются в порядке приоритетов, и возможных действий два: отправить трафик в группу балансировки, то есть на фильтры, или прямо на входе вернуть его оператору через парный порт линка (действие bypass; не путать с устройством «байпас»). Возвращаются без анализа, как правило:
@@ -172,7 +172,7 @@ _Байпас: порты NET0/NET1 в сторону оператора, MON0/M
- служебный трафик оператора, выделенный, например, в отдельный VLAN;
- прочий трафик, который не нужно и нежелательно анализировать.
С таким трафиком на фильтрах ничего плохого произойти не должно, но лучше его не трогать: анализировать его бессмысленно, а служебные протоколы чувствительны к задержкам и потерям. Условия правил могут включать VLAN-теги, количество MPLS-меток, IP-адреса, L4-порты и MAC-адреса: например, если известно, что в VLAN 1 идёт служебный трафик оператора, его можно вернуть оператору целиком. Отбор по MPLS-меткам технически возможен, но практического смысла не имеет. Сами теги и метки балансировщик при этом не снимает: на фильтр пакет уходит с тем же набором меток. Настройка правил описана в [разделе 21.7](21.md).
С таким трафиком на фильтрах ничего плохого произойти не должно, но лучше его не трогать: анализировать его бессмысленно, а служебные протоколы чувствительны к задержкам и потерям. Условия правил могут включать VLAN-теги, количество MPLS-меток, IP-адреса, L4-порты и MAC-адреса: например, если известно, что в VLAN 1 идёт служебный трафик оператора, его можно вернуть оператору целиком. Отбор по MPLS-меткам технически возможен, но практического смысла не имеет. Сами теги и метки балансировщик при этом не снимает: на фильтр пакет уходит с тем же набором меток. Настройка правил описана в [разделе 8.7](balancer-config.md).
<img width="1024" alt="image" src="https://github.com/user-attachments/assets/e1640f7b-7bfa-4e79-abc5-0bc126f66b3a" />
@@ -188,7 +188,7 @@ _Логика балансировщика: порты в сторону опе
Балансировщик разбирает стек заголовков (VLAN, MPLS и т. д.) и вычисляет хэш именно от IP-пакета, найденного под инкапсуляцией. Если IP-пакета в стеке нет, трафик пропускается прозрачно и на фильтры не отправляется.
При вычислении хэша учитывается также число обрабатывающих ядер фильтра (все ядра процессора, кроме одного сервисного, — параметр `nat-unit-queues`), поэтому результат однозначно определяет не только пару портов, но и конкретное **ядро фильтра**, которое будет обрабатывать пакет, — трафик сразу равномерно распределяется по всем ядрам ([раздел 4.5.2](04.md), [21.5.2](21.md)). Балансировка выполняется аппаратно, программируемым чипом, и не логируется: узнать, на какой фильтр попала конкретная сессия, можно только поиском на фильтрах ([раздел 24.2](24.md)).
При вычислении хэша учитывается также число обрабатывающих ядер фильтра (все ядра процессора, кроме одного сервисного, — параметр `nat-unit-queues`), поэтому результат однозначно определяет не только пару портов, но и конкретное **ядро фильтра**, которое будет обрабатывать пакет, — трафик сразу равномерно распределяется по всем ядрам ([раздел 6.5.2](balancer.md), [8.5.2](balancer-config.md)). Балансировка выполняется аппаратно, программируемым чипом, и не логируется: узнать, на какой фильтр попала конкретная сессия, можно только поиском на фильтрах ([раздел 23.2](troubleshooting.md)).
Для передачи информации о балансировке к пакету добавляется **дополнительный 4-байтовый заголовок** (по структуре похож на VLAN-тег, но таковым не является). Этот заголовок сообщает фильтру, на какое ядро направить пакет. После обработки фильтр возвращает пакет с тем же 4-байтовым заголовком, по нему балансировщик определяет, в какой именно операторский линк вернуть пакет, и снимает заголовок перед отправкой оператору. Так достигается корректное прохождение трафика: пакет, пришедший из конкретного порта оператора, возвращается в тот же порт независимо от того, каким фильтром он был обработан.
@@ -198,9 +198,9 @@ _Логика балансировщика: порты в сторону опе
- более того — на одну и ту же пару портов и на одно и то же **ядро** этого фильтра;
- сессия никогда не распределяется по разным фильтрам, поэтому её всегда можно собрать и проанализировать на одном устройстве.
Распределение детерминировано, пока состав группы не меняется; при включённой перебалансировке после отказа группы портов хэш пересчитывается, и часть сессий переезжает на другие фильтры ([раздел 4.6.3](04.md)). Обратная сторона принципа: одна сессия не может быть разбалансирована. Если, например, 200 Гбит/с трафика идут с одного адреса источника на один адрес назначения по одному протоколу, весь этот поток попадёт на один порт одного фильтра и даже на одно его ядро. Равномерная балансировка опирается на то, что в операторском трафике огромное количество разных сессий.
Распределение детерминировано, пока состав группы не меняется; при включённой перебалансировке после отказа группы портов хэш пересчитывается, и часть сессий переезжает на другие фильтры ([раздел 6.6.3](balancer.md)). Обратная сторона принципа: одна сессия не может быть разбалансирована. Если, например, 200 Гбит/с трафика идут с одного адреса источника на один адрес назначения по одному протоколу, весь этот поток попадёт на один порт одного фильтра и даже на одно его ядро. Равномерная балансировка опирается на то, что в операторском трафике огромное количество разных сессий.
Отказоустойчивость на этом участке обеспечивает сам балансировщик — это второй, независимый от heartbeat байпаса (этап 1) контур контроля: в каждую пару портов в сторону фильтра он отправляет keep-alive-пакеты (через LAN-порт, с возвратом через WAN-порт), и если они перестают проходить — порт фильтра или сам фильтр перестал обрабатывать трафик, — трафик этой группы портов программно байпасится, то есть возвращается оператору без обработки, либо, в зависимости от настроек, перебалансируется на рабочие группы. В проекте перебалансировку предполагается отключить — тогда на время недоступности группы её трафик проходит без анализа. Подробнее — в [разделе 4.6](04.md).
Отказоустойчивость на этом участке обеспечивает сам балансировщик — это второй, независимый от heartbeat байпаса (этап 1) контур контроля: в каждую пару портов в сторону фильтра он отправляет keep-alive-пакеты (через LAN-порт, с возвратом через WAN-порт), и если они перестают проходить — порт фильтра или сам фильтр перестал обрабатывать трафик, — трафик этой группы портов программно байпасится, то есть возвращается оператору без обработки, либо, в зависимости от настроек, перебалансируется на рабочие группы. В проекте перебалансировку предполагается отключить — тогда на время недоступности группы её трафик проходит без анализа. Подробнее — в [разделе 6.6](balancer.md).
### Этап 4: Обработка на фильтре
@@ -208,13 +208,13 @@ _Логика балансировщика: порты в сторону опе
1. **Проверка: IP-пакет или нет.** После разбора инкапсуляции фильтр проверяет, есть ли внутри IPv4- или IPv6-пакет. Не-IP кадры без какой-либо обработки выводятся в парный порт; в типовой схеме до фильтра из не-IP трафика доходят практически только keep-alive-пакеты балансировщика, которые таким образом возвращаются балансировщику.
2. **Проверка по ACL.** ACL на фильтре задают, какой трафик подлежит анализу, и привязаны к пулу — логической сущности, в которую попадает отобранный трафик для дальнейшей обработки ([раздел 16](16.md)). Пакет, не попавший ни в один пул (ни одно разрешающее правило ACL его не отобрало), анализу не подлежит и прозрачно передаётся в парный порт.
2. **Проверка по ACL.** ACL на фильтре задают, какой трафик подлежит анализу, и привязаны к пулу — логической сущности, в которую попадает отобранный трафик для дальнейшей обработки ([раздел 16](filter-acl-pools.md)). Пакет, не попавший ни в один пул (ни одно разрешающее правило ACL его не отобрало), анализу не подлежит и прозрачно передаётся в парный порт.
3. **Проверка по DPI-листу.** В DPI-листе указаны IP-подсети и адреса, подлежащие проверке ([раздел 17.4](17.md)). Если IP-адреса пакета не попадают в обработку DPI-листа — пакет прозрачно пропускается.
3. **Проверка по DPI-листу.** В DPI-листе указаны IP-подсети и адреса, подлежащие проверке ([раздел 17.4](filter-dpi.md)). Если IP-адреса пакета не попадают в обработку DPI-листа — пакет прозрачно пропускается.
4. **Обработка движком DPI.** Только пакеты, прошедшие все предыдущие проверки, попадают на анализ DPI-движком. По результатам анализа принимается решение: пропустить пакет либо отбросить его (drop), если он попадает под запрещающие политики; при блокировке ресурса абоненту дополнительно отправляется HTTP-редирект (для HTTP) или TCP Reset (для HTTPS) ([раздел 17.4.4](17.md); особенности для трафика с MPLS — см. ниже).
4. **Обработка движком DPI.** Только пакеты, прошедшие все предыдущие проверки, попадают на анализ DPI-движком. По результатам анализа принимается решение: пропустить пакет либо отбросить его (drop), если он попадает под запрещающие политики; при блокировке ресурса абоненту дополнительно отправляется HTTP-редирект (для HTTP) или TCP Reset (для HTTPS) ([раздел 17.4.4](filter-dpi.md); особенности для трафика с MPLS — см. ниже).
Глубина разбора инкапсуляции на фильтре задаётся настройкой (параметр `vlan_mode`, в проекте всегда `qinq` — [раздел 15.2.1](15.md)); ограничения фильтра по типам инкапсуляции несколько строже, чем у балансировщика.
Глубина разбора инкапсуляции на фильтре задаётся настройкой (параметр `vlan_mode`, в проекте всегда `qinq` — [раздел 15.2.1](filter-interfaces.md)); ограничения фильтра по типам инкапсуляции несколько строже, чем у балансировщика.
Фильтр работает на уровне **L2**: в тракте передачи трафика у него нет L3-интерфейсов, он не является ни маршрутизатором, ни коммутатором и всегда передаёт кадр строго в парный порт. С точки зрения сети оператора фильтр представляет собой **«прозрачный провод»**: все заголовки инкапсуляции (VLAN-теги, MPLS-метки и т. д.) проходят через фильтр без изменений. Фильтр разбирает стек заголовков только для того, чтобы добраться до IP-пакета и выполнить анализ; пропускаемый трафик покидает фильтр в неизменном виде, изменения вносятся только в пакеты блокируемых сессий (drop, подмена на HTTP-редирект или TCP Reset).
@@ -224,14 +224,14 @@ _Логика балансировщика: порты в сторону опе
_Путь пакета через фильтр: вход через LAN-порт (te2), проверки «IP-пакет?», «попадает в pool/ACL?», «попадает в обработку DPI?», затем DPI с решением pass/drop; выход через парный WAN-порт (te1)._
Подробнее путь пакета через фильтр описан в [разделе 5](05.md).
Подробнее путь пакета через фильтр описан в [разделе 10](filter.md).
### Особенность: HTTP-редирект и TCP Reset при наличии MPLS
Особый случай — блокировка трафика с MPLS-метками, когда фильтру нужно отправить абоненту **HTTP-редирект** (перенаправление на страницу-заглушку; по документации производителя — ответ «307 Temporary Redirect») при блокировке HTTP-ресурса или **TCP Reset** при блокировке HTTPS-ресурса ([раздел 17.4](17.md)). Фильтр не может просто сформировать такой пакет сам: MPLS-путь однонаправлен, и метки, с которыми пришёл пакет абонента, действительны только для направления в сторону интернета — стек меток обратного направления фильтру неизвестен.
Особый случай — блокировка трафика с MPLS-метками, когда фильтру нужно отправить абоненту **HTTP-редирект** (перенаправление на страницу-заглушку; по документации производителя — ответ «307 Temporary Redirect») при блокировке HTTP-ресурса или **TCP Reset** при блокировке HTTPS-ресурса ([раздел 17.4](filter-dpi.md)). Фильтр не может просто сформировать такой пакет сам: MPLS-путь однонаправлен, и метки, с которыми пришёл пакет абонента, действительны только для направления в сторону интернета — стек меток обратного направления фильтру неизвестен.
Поэтому для трафика с MPLS-метками фильтр пропускает запрос абонента к ресурсу как есть, дожидается первого ответного пакета той же сессии — он приходит уже с корректными метками обратного направления — и подставляет вместо его содержимого HTTP-редирект (для HTTP) или TCP Reset (для HTTPS: подменить зашифрованный ответ нельзя, ресурс определяется по SNI в ClientHello — [раздел 17.5.3](17.md)), сохраняя метки. Модифицированный пакет доставляется абоненту с корректной инкапсуляцией, и блокировка срабатывает штатно. Для QUIC (UDP/443) TCP Reset неприменим — это UDP-протокол; распознавание QUIC на фильтре включается отдельным списком ресурсов ([раздел 17.4.9](17.md)). Подробнее механизм описан в [разделе 4.8](04.md).
Поэтому для трафика с MPLS-метками фильтр пропускает запрос абонента к ресурсу как есть, дожидается первого ответного пакета той же сессии — он приходит уже с корректными метками обратного направления — и подставляет вместо его содержимого HTTP-редирект (для HTTP) или TCP Reset (для HTTPS: подменить зашифрованный ответ нельзя, ресурс определяется по SNI в ClientHello — [раздел 17.5.3](filter-dpi.md)), сохраняя метки. Модифицированный пакет доставляется абоненту с корректной инкапсуляцией, и блокировка срабатывает штатно. Для QUIC (UDP/443) TCP Reset неприменим — это UDP-протокол; распознавание QUIC на фильтре включается отдельным списком ресурсов ([раздел 17.4.9](filter-dpi.md)). Подробнее механизм описан в [разделе 6.8](balancer.md).
---
[← Оглавление](../README.md) · [← Раздел 1: Введение и общая архитектура АСБИ](01.md) · [Раздел 3: Байпас →](03.md)
[← Оглавление](../README.md) · [← Раздел 1: Введение и общая архитектура АСБИ](overview.md) · [Раздел 3: Места установки ТСПУ →](placement.md)
+20 -20
View File
@@ -1,12 +1,12 @@
# 24. Траблшутинг
# 23. Траблшутинг
[← Оглавление](../README.md) · [← Раздел 23: Распознавание протоколов (DPI Engine)](23.md)
[← Оглавление](../README.md) · [← Раздел 22: Распознавание протоколов и двухстадийная блокировка](protocol-blocking.md)
---
Диагностика проблем на ТСПУ — комплексная задача, требующая понимания архитектуры системы, принципов прохождения трафика и взаимодействия компонентов. В данном разделе описаны типовые подходы к траблшутингу, которые применяются при обращениях операторов связи и абонентов.
## 24.1. Общий подход к диагностике проблем доступности
## 23.1. Общий подход к диагностике проблем доступности
При обращении оператора или абонента с жалобой на недоступность ресурса необходимо последовательно пройти несколько шагов:
@@ -46,11 +46,11 @@
**Если проблема существует прямо сейчас** — шансы на успешную диагностику значительно выше. В этом случае важно работать **в реальном времени** совместно с абонентом или оператором.
## 24.2. Поиск сессии абонента: обход фильтров площадки
## 23.2. Поиск сессии абонента: обход фильтров площадки
Первый практический шаг — **найти сессии** конкретного абонента к конкретному ресурсу на фильтрах площадки.
Балансировщик не ведёт журнала распределения и не сообщает, на какой фильтр отправлена сессия ([раздел 4.5.4](04.md)), поэтому поиск выполняется на каждом фильтре площадки — вручную или простым скриптом. Оба направления сессии всегда находятся на одном и том же фильтре.
Балансировщик не ведёт журнала распределения и не сообщает, на какой фильтр отправлена сессия ([раздел 6.5.4](balancer.md)), поэтому поиск выполняется на каждом фильтре площадки — вручную или простым скриптом. Оба направления сессии всегда находятся на одном и том же фильтре.
### Поиск по локальному адресу
@@ -88,13 +88,13 @@
| Сессии **не найдены ни на одном фильтре** | Трафик абонента не проходит через ТСПУ — абонент идёт другим путём, либо проблема до ТСПУ |
| Сессии есть, но ресурс недоступен | Возможна блокировка на уровне DPI — проверить DPI-листы |
> **Важно:** при поиске сессий помните принцип «локальный адрес всегда на первом месте» (см. [раздел 12](12.md)). Независимо от направления трафика, IP-адрес абонента записывается в поле local. Если в поле local отображаются адреса, которые не являются абонентскими (интернет-адреса), — это признак перепутки LAN/WAN (см. раздел 24.6).
> **Важно:** при поиске сессий помните принцип «локальный адрес всегда на первом месте» (см. [раздел 12](filter-sessions.md)). Независимо от направления трафика, IP-адрес абонента записывается в поле local. Если в поле local отображаются адреса, которые не являются абонентскими (интернет-адреса), — это признак перепутки LAN/WAN (см. раздел 23.6).
### Особенности при установке после CGNAT
Если ТСПУ установлен **после CGNAT** (см. [раздел 6.3](06.md)), на фильтре видны только белые (транслированные) адреса. Для идентификации конкретного абонента необходимо **взаимодействие с оператором** — оператор должен сообщить, в какие порты и IP-адреса абонент был транслирован.
Если ТСПУ установлен **после CGNAT** (см. [раздел 3.3](placement.md)), на фильтре видны только белые (транслированные) адреса. Для идентификации конкретного абонента необходимо **взаимодействие с оператором** — оператор должен сообщить, в какие порты и IP-адреса абонент был транслирован.
## 24.3. Проверка ресурса в DPI-листах: `show dpi match`
## 23.3. Проверка ресурса в DPI-листах: `show dpi match`
Команда `show dpi match` позволяет проверить, находится ли конкретный ресурс в списках блокировки:
@@ -117,13 +117,13 @@
Если необходимо проверить наличие ресурса в списках, загруженных на **Eco Highway** (эшелонированная система), проверку следует выполнять **через центральную систему управления** — там хранятся все списки, загружаемые по BGP.
## 24.4. Программный байпас для исключения ТСПУ как причины проблемы
## 23.4. Программный байпас для исключения ТСПУ как причины проблемы
Один из ключевых методов диагностики — **исключение ТСПУ** из пути прохождения трафика, чтобы определить, является ли ТСПУ причиной проблемы.
### Программный bypass на балансировщике
Наиболее удобный способ — программный bypass на балансировщике (см. [раздел 22.7](22.md)):
Наиболее удобный способ — программный bypass на балансировщике (см. [раздел 9.7](balancer-monitoring.md)):
```text
call ecofilter-balancer set-bypass-ecofilter-unit unit <группа> bypass
@@ -132,7 +132,7 @@
Преимущества:
- **Нет флапов линков** — оператор ничего не замечает;
- **Гранулярность** — отдельные filter groups байпасятся автоматически по keep-alive, вручную переключается группа балансировки целиком ([раздел 4.6.2](04.md));
- **Гранулярность** — отдельные filter groups байпасятся автоматически по keep-alive, вручную переключается группа балансировки целиком ([раздел 6.6.2](balancer.md));
- **Мгновенность** — переключение происходит немедленно.
### Bypass по правилам фильтрации (flow rules)
@@ -146,11 +146,11 @@
apply
```
Это позволяет исключить из обработки только **конкретный VLAN** или подсеть, не затрагивая остальной трафик. По статистике правила (пакеты/байты) можно убедиться, что трафик действительно проходит (см. [раздел 22.5](22.md)).
Это позволяет исключить из обработки только **конкретный VLAN** или подсеть, не затрагивая остальной трафик. По статистике правила (пакеты/байты) можно убедиться, что трафик действительно проходит (см. [раздел 9.5](balancer-monitoring.md)).
### Bypass на оптическом байпасе
Переключение на самом байпасе — более радикальный метод: он полностью снимает канал с фильтрации. У байпасов **Silicom** перевод сегмента в TAP или Active Bypass выполняется **без флапа линков** оператора — теряются лишь пакеты, находившиеся в этот момент внутри ТСПУ (см. [раздел 3.2.6](03.md)). У оптических байпасов **GL Sun** любое переключение **вызывает флапы линков** и, как правило, требует согласования с оператором (см. [раздел 3.3.2](03.md)).
Переключение на самом байпасе — более радикальный метод: он полностью снимает канал с фильтрации. У байпасов **Silicom** перевод сегмента в TAP или Active Bypass выполняется **без флапа линков** оператора — теряются лишь пакеты, находившиеся в этот момент внутри ТСПУ (см. [раздел 5.2.6](bypass.md)). У оптических байпасов **GL Sun** любое переключение **вызывает флапы линков** и, как правило, требует согласования с оператором (см. [раздел 5.3.2](bypass.md)).
### Интерпретация результатов
@@ -159,9 +159,9 @@
| Проблема **исчезла** | ТСПУ являлось причиной — диагностировать дальше на уровне фильтров/DPI |
| Проблема **осталась** | ТСПУ не является причиной — проблема на стороне ресурса, оператора или абонента |
## 24.5. Исключение абонента из обработки: параметр No IP
## 23.5. Исключение абонента из обработки: параметр No IP
Для точечной диагностики на уровне **конкретного абонента** используется параметр **No IP** в настройках DPI-листа (см. [раздел 17.4.8](17.md)).
Для точечной диагностики на уровне **конкретного абонента** используется параметр **No IP** в настройках DPI-листа (см. [раздел 17.4.8](filter-dpi.md)).
### No IP (исключение по локальному адресу)
@@ -212,7 +212,7 @@
После завершения диагностики необходимо **удалить** добавленные записи No IP и применить конфигурацию.
## 24.6. Перепутки LAN/WAN и их диагностика
## 23.6. Перепутки LAN/WAN и их диагностика
**Перепутка LAN/WAN** — ситуация, когда порты LAN и WAN подключены **наоборот**: LAN-порт подключён в сторону интернета, а WAN-порт — в сторону абонентов.
@@ -225,7 +225,7 @@
Это происходит потому, что фильтр определяет направление трафика по портам: трафик, приходящий в LAN-порт, считается абонентским, а source IP записывается как local. Если LAN и WAN перепутаны, source IP интернет-хоста ошибочно записывается как local.
> **Ключевой принцип:** локальный (абонентский) IP-адрес **всегда записывается на первое место** в сессии (см. [раздел 12.5](12.md)). Если на первом месте оказался интернет-адрес — порты перепутаны.
> **Ключевой принцип:** локальный (абонентский) IP-адрес **всегда записывается на первое место** в сессии (см. [раздел 12.5](filter-sessions.md)). Если на первом месте оказался интернет-адрес — порты перепутаны.
### Где может произойти перепутка
@@ -251,7 +251,7 @@
3. Проверить физическое подключение кабелей;
4. Проверить конфигурацию линков на балансировщике.
## 24.7. Взаимодействие с оператором связи
## 23.7. Взаимодействие с оператором связи
Эффективная диагностика часто требует **совместной работы** с оператором связи и конечным абонентом:
@@ -272,7 +272,7 @@
**С оператором:** при переключениях bypass/primary необходимо **согласовывать работы** с оператором, так как переключение оптического байпаса вызывает флапы линков. Программный bypass на балансировщике не требует такого согласования.
## 24.8. Ограничения: L2-устройство, невозможность генерации трафика с фильтра
## 23.8. Ограничения: L2-устройство, невозможность генерации трафика с фильтра
Фильтр ТСПУ — это устройство **уровня L2** (Layer 2). Это накладывает принципиальные ограничения на возможности диагностики:
@@ -305,4 +305,4 @@
---
[← Оглавление](../README.md) · [← Раздел 23: Распознавание протоколов (DPI Engine)](23.md)
[← Оглавление](../README.md) · [← Раздел 22: Распознавание протоколов и двухстадийная блокировка](protocol-blocking.md)