Добрый день! Меня зовут Михолап Константин. Работаю в небольшом операторе связи инженером, а вот в каком уже поймете по AS и страничке в PeeringDB.
В 2025-ом году никого уже не удивить наличием возможности визуализировать входящий трафик для разного рода ISP или ЦОД, поэтому возможно Вы уже слышали что-то про Akvorado.
В рамках этой статьи познакомимся с адаптацией такого программного комплекса инструмента Akvorado. И так, Akvorado - это Netflow-коллектор с функциями визуализации собираемого трафика. К публике он вышел в 2022 году, о нем много кто слышал, я уверен. Были разные материалы например в linkmeup. Очень прост для установки, развертывания и возможно даже обслуживания (если вы чуть-чуть знаете Сlickhouse).


Главные достоинства изображены на скриншоте, примеры использования, но мы углубимся немного в сложности, применения в суровом русском провайдере. О том, что такое полоса предоплаты и бёрст думаю говорить не стоит.
Нюансы развертывания
Необходимо было адаптировать представленный продукт в сеть оператора, для того чтобы собирать данные о трафике от поставщиков, поэтому в конфиг файле akvorado.yaml зададим заготовленный перечень своих автономных систем.
clickhouse: asns: 31257: Orion Telecom Krk
Далее, чтобы наши данные влезли, пришлось поработать с докером, чтобы использовать свою директорию для контейнеров и данных. Для этого использовал настройку, которую задают в файле /etc/docker/daemon.json
{ "data-root": "/mnt/disk/akvorado/data" }
Переходим к файлу inlet.yaml, чтобы отредактировать настройки SNMP, Exporter Classifiers, Interface Classifiers. Можно использовать дефолтный конфиг и адаптировать его под свои нужды. Если у Вас несколько городов очень удобно классифицировать трафик по Exporter.Name и сразу метить его регионом принадлежности.
metadata: workers: 10 provider: type: snmp communities: ::/0: public core: default-sampling-rate: 1000 workers: 6 exporter-classifiers: - ClassifySiteRegex(Exporter.Name, "^([^-]+)-", "$1") - Exporter.Name endsWith ".KRK" && ClassifyRegion("krk") - ClassifyTenant("orion") - ClassifyRole("clients") interface-classifiers: - | ClassifyConnectivityRegex(Interface.Description, "^(<<|##) (?i)(upstream|transit|peering|pni|ppni|ix):? ", "$2") && ClassifyProviderRegex(Interface.Description, "^(<<|##) (?i)(upstream|transit|peering|pni|ppni|ix):? (\\S+)", "$3") && ClassifyExternal() - ClassifyInternal()
Пару слов про импорт сетей, бывает такая потребность если сетей очень много, а их хочется как-то классифицировать, то можно использовать YAML include. Создадим заранее файл network.yaml куда поместим одну сеть для классификации.
109.226.247.0/24: name: white-zlgk-clients role: clients site: white-zlgk region: zlgk tenant: orion
Чтобы импорт заработал из файла, нам необходимо вернуться в akvorado.yaml и отредактировать его.
clickhouse: networks: !include "network.yaml"
Суровые реалии российского мелкого провайдеринга будут отображены ниже.

Так вот, куча поставщиков, у многих лучшая или худшая связность. Хуже все то, что этим трафиком нужно управлять, потом чувствуешь себя героем мема с Заком Галифианакисом.

Конечно приходится отталкиваться от ширины канала и использовать в лучшем случае BGP Community от магистрального провайдера (например в ещё более лучшем случае использовать BGP Community на Local Preference от той AS откуда идет трафик), в худшем случае использовать самые топорные атрибуты например AS Path...
Или другой мем

Необходимость для отслеживания внутреннего трафика
В рамках сети провайдера большое количество трафика от абонентов с применением технологии NAT/CGNAT, отсюда нам необходимо жонглировать трафиком чтобы не перегрузить сервера. Помимо этого знать сколько трафика летит с той или иной агрегации.

Рассмотрим второй кейс отслеживания внутреннего трафика, когда L3-агрегация стоит за другой L3-агрегацией. Отсюда нужно учитывать к эксплуатации емкость двух агрегацией и делить трафик одной агрегации от другой.

Более детальный кейс L3-агрегации за L3-агрегацией

Выводы
Более чем уверен, что большинство из читающих использовали Akvorado по своим нуждам и адаптациям под свою сеть будь то операторы связи или же крупные ЦОД. В рамках статьи постарался показать обычные кейсы только для входящего трафика для тех кто ещё не знаком с этим инструментом. Если вы крупный магистральный оператор с кучей транзитного трафика, конечно Вам не помешает использование BMP благо у Akvorado есть поддержка.
Мое личное мнение, что Akvorado недооцененный продукт, абсолютно бесплатный на данный момент, что немало важно в наше время. Долго наблюдал когда же появится хоть какой-то материал здесь, но его не было.
Всем добра и спасибо за внимание!
