FastTrack на MikroTik – уменьшаем нагрузку на CPU

FastTrack на MikroTik

Добрый вечер, уважаемые читатели моего скромного блога! Прошу прощения, что давно ничего не писал, я был занят одним проектом, да и идей особо не было. Однако сегодня я хочу поделиться с вами своей историей о нагрузке на CPU моего MikroTik hAP ac. Вы узнаете про FastTrack на MikroTikи оптимизацию Firewall.

Итак, что мы имеем:

  • 2 постоянно работающих L2TP+IPSec подключения
  • 18 правил Firewall
  • 13 правил NAT
  • 3 правила Mangle
  • 10 скриптов в Scheduler (5 из которых выполняются каждую минуту)
  • Один игровой сервер
  • Один личный компьютер
  • Мобильные устройства

Все это дело вроде бы работало без сбоев, пока однажды, когда я был на работе, у меня не пропала связь с Микротиком. Поскольку я работаю в провайдере и от него же у меня дома интернет, я зашел в биллинг – интернет оплачен, сессии нет. Зашел на свитч – линк на порту есть, ошибки не копятся, но маки не приходят. Перезагрузка порта не помогла.

Когда я наконец пришел домой после смены, было похоже что Микротик завис. Лампочки горели, но DHCP он не раздавал, по MAC к нему подключиться тоже не удалось. После его перезагрузки связь восстановилась. Подозреваю что причиной стала высокая и длительная нагрузка на CPU, но выяснил я это уже позже. Как оказалось, при скачивании торрента на компьютере со скоростью 25-30 МБ/сек, нагрузка на CPU Микротика держится в районе 90-100%. А перед уходом на работу я как раз поставил скачиваться 5 сезонов сериала.

Как же я решил проблему высокой нагрузки на CPU MikroTik?

  1. Оптимизация маркировки пакетов. Не помню почему, но у меня было сделано 2 правила маркировки и соответственно 2 маршрута на VPN – отдельно для Telegram и отдельно для всего остального. Практической необходимости для этого я не нашел, поэтому объединил все в одно правило и исправил Address Lists. Быть может это никак не сказывалось на производительности, но все же я решил сделать нормально.
  2. Оптимизация Firewall.
    • В первую очередь необходимо убедиться, что правила расположены в нужном порядке. Сделать это не трудно – достаточно посмотреть статистику трафика. Правила с наибольшим количеством трафика должны быть самыми первыми. В идеале, самым первым правилом должно быть action=accept chain=forward connection-state=established,related.
    • Далее, я сократил число правил, объединив некоторые правила. Например тот же forward портов, порты можно было указать в одном правиле через запятую. Не знаю, почему не сделал этого раньше.
  3. Настраиваем FastTrack на MikroTik.
    • Если у вас есть бридж, объединяющий локальные интерфейсы, убедитесь что у него включена галочка Fast Forward. Также не забываем отключить IP Firewall для бриджа: /interface bridge settings set use-ip-firewall=no
    • Добавляем правило Firewall: /ip firewall filter add action=fasttrack-connection chain=forward connection-state=established,related
    • Сразу под ним должно быть расположено правило: /ip firewall filter add action=accept chain=forward connection-state=established,related
    • Если вы маркируете часть трафика и заворачиваете его на VPN, проверьте, чтобы в IP => Settings не стояла галочка Route Cache. При одновременно включенных FastTrack и Route Cache, у меня сильно проседала скорость открытия сайтов, которые заворачиваются на VPN.
  4. Оптимизация торрент-клиента. Если не качаете торренты, можете не читать это. Если в вашем торрент-клиенте включен протокол uTP – выключите его. Практической пользы от него я не увидел, зато из-за него очень сильно возрастает количество сетевых пакетов и соответственно нагрузка на CPU. Живой пример: после отключения uTP на моем торрент-клиенте, нагрузка на CPU Микротика при скачивании торрента у меня упала на 40%.

Подводим итоги: после выполнения этих манипуляций, при скачивании торрента со скоростью 25-30 МБ/сек, а также работающем игровом сервере (с игроками онлайн), двумя активными VPN соединениями и параллельном серфинге интернета – нагрузка на CPU моего Микротика не превышает 20-25%.