Релиз Carbon Reductor 5.9.3

Релиз Carbon Reductor 5.9.3

Выход версии 5.9.3 прошёл довольно быстро, тем не менее изменений с версии 5.8 было сделано очень много и ниже мы их опишем.

Новая обработка списков

Мы перешли на python в этой части и не жалеем по нескольким причинам:

  • nosetests позволяют гораздо легче тестировать код
  • код стал значительно чище
  • предыдущая версия на bash становилась всё менее и менее понятной с каждой новой «фишкой»

В результате новая версия обработки сократила число адресов, добавленных в базу зря (чем меньше адресов добавлено, тем выше производительность поиска по ней).

В бонус получили более правильную логику работы с кириллицей и прочими своеобразными URL’ами.

HTTP URL-матчинг модуль

После того, как мы сделали первую версию обработки списков, остро всплыл один недостаток алгоритма матчинга URL, который раньше затыкался (не всегда удачно) на этапе обработки списков. Мы решили поступить правильно и навести в коде модуля ядра «красоту» и переработать его.

Использование cmocka

В самом начале, перед рефакторингом мы поняли, что наш старый костыль для проведения чего-то похожего на Unit-тесты модуля фильтрации (его часть можно использовать в userspace для тестов) ужасен и неудобен. Для перехода на эту замечательную либу для тестирования понадобилось всего 2-3 часа (включая хоть какую-то дружбу тестов с инструментами для разработки команды). Дальше расширить покрытие тестами было уже значительно легче, а с хорошими тестами и рефакторить код получалось куда проще.

Производительность

Если чистая производительность (без учёта влияния нагрузки на сетёвки и прохода по всему сетевому стэку) алгоритма предыдущей версии составляла около 800000 пакетов/сек на 1 ядро процессора ≈2.5-3GHz, то сейчас нам удалось выжать 1900000-2100000 пакетов.

Решение проблемы с //

Имеется такая дурацкая бага:

http://test.url/get//request

часть браузеров приводит к виду

http://test.url/get/request

а часть — нет. Эту проблему имеют многие другие DPI (провели небольшой опрос среди коллег, абсолютно все могут обходить заблокированные HTTP-URL просто добавив второй / в URL). В общем для Carbon Reductor теперь нет разницы, какое число слэшей поставлено в запросе.

В качестве бонуса — это сократило объём используемой Carbon Reductor памяти.

Чистка кода

Перед этой глобальной доработкой мы решили воспользоваться новым опытом, полученным за время разработки Carbon Reductor и привести в порядок весь код проекта. Он стал значительно понятнее и короче аж на 30%. Надеемся, что это позволит нам быстрее двигаться вперёд в будущем!

Исправления багов

Отображение заблокированных адресов в вебе

После добавления новой обработки списков, файл со всеми обработанными URL (http.load) содержит адреса в разных кодировках, из-за чего пока что имеется проблема с его отображением в вебке. В качестве временного workaround, по умолчанию теперь в списках отображается необработанный список Роскомнадзора — rkn.list.

Диагностика

Теперь диагностика проверяет 3 дополнительных источника проблем:

  • неполная загрузка URL в ядро (с версии 5.9.3 — ещё и исправляет)
  • старая версия веб-интерфейса (при неудачном стечении обстоятельств могла вызвать проблему со стартом самого reductor и не работала фильтрация)
  • запуск более чем 1го экземпляра crond (обычно из-за того, что «pid-файлы лгут»). Автоматически это исправлять мы побоялись, но уведомление администратору придёт. В целом это довольно серьёзная ошибка, приводящая к дублированию периодических задач.

Резолв HTTPS

Значительно снижена нагрузка на CPU при запуске резолва, немного ускорена её работа (раньше полный резолв на пустой базе занимал около 1м 30с, сейчас около 55 секунд), а также немного выпрямлен код всей этой подсистемы.

Чего ждать в следующей версии

Двойной буфер для загрузки URL в ядро

Сама она уже написана, лежит в отдельной экспериментальной ветке, осталось только корректно добавить блокировки, но сейчас имеется большое число более приоритетных задач, так что в релизе появится ориентировочно в первой половине ноября.

Без блокировок вероятны (пусть и не столь сильно) kernel panic при переключении. Нам была бы очень полезна помощь в обкатке этой версии под большой нагрузкой.

Оптимизация скорости обработки списков

В версии 5.9.1 мы добились скорости около 1.3 сек для 15000 необработанных URL. К сожалению, реальный мир заставил исправлять ошибки и в 5.9.3 скорость упала почти до 8 секунд. Мы поработаем над этим.


На этом все, всем спасибо :)

 

Релиз Carbon Billing 4.52.117

Релиз Carbon Billing 4.52.117

Всем доброго времени суток! Вы не поверите, но у нас метель в прямом смысле этого слова. На календаре октябрь месяц, а снега выпало уже довольно много. Самое интересное, что в течение дня погода может меняться несколько раз. С яркого осеннего солнышка на метель с жутким зимним ветром. Ну да ладно, давайте по сути :) В этом месяце мы хотим рассказать о последних доработках в Carbon Billing 4. Поехали! Читать далее

Блокировки сайтов — к чему стоит готовится и как обезопасить себя?

Блокировки сайтов — к чему стоит готовится и как обезопасить себя?

Здравствуйте, друзья! Решили поделиться с вами успехами по внедрению нашего замечательного фильтра трафика Carbon Reductor, а еще обсудить актуальные вопросы, поговорить о наболевшем. Начнем по порядку.

За 2 месяца Carbon Reductor’ом заинтересовались более 60 компаний. Мы растем и в планах сделать полную карту установок – она впечатляет! Разумеется, рост дается не легко, мы постоянно улучшаем продукт и вводим дополнительные фишки, которых нет у конкурентов. Сначала поведаем последние новости, потом расскажем еще немного про продукт. Читать далее

Релиз Carbon Reductor 5.8.1

Релиз Carbon Reductor 5.8.1

Регистрация и активация

Теперь регистрация и активация производятся через хелпдеск. В случае неудачи — на ближайший месяц оставлен fallback режим. Это позволит нам продолжить развивать систему мониторинга и добавить много других удобных возможностей.
Читать далее

CLrO1KQUAAAnPDg

Релиз Carbon XGE 5.18

Релиз Carbon XGE 5.18

Уже готова к выходу новая версия XGE 5.18, мы сделали для него очень классный логотип :) XGE обзавелся новыми фишками, в частности xgesh теперь чувствует на много лучше, теперь он разбит на несколько файлов и это прекрасно! Читать далее

browser2

Релиз Carbon Reductor 5.7.5

Релиз Carbon Reductor 5.7.5

Дождливое лето никак нас не смутило, у нас появилось больше времени на разработку, и мы выпускаем новую версию Carbon Reductor даже чуть раньше срока, потому как накопилось довольно много фишек. Надеемся, что мы сможем держать этот темп и дальше. Читать далее

Релиз Carbon Billing 5.11.0 и Carbon XGE Router 5.17.1

Релиз Carbon Billing 5.11.0 и Carbon XGE Router 5.17.1

Доброго времени суток! В этом месяце мы так активно работали, что решили сделать обзор новинок двух новых продуктов в одном посте. Приятного чтения :) Читать далее

Более 40 внедрений за 2 месяца

Более 40 внедрений за 2 месяца

Всем привет! Мы подготовили отчет за 2 месяца, с радостью рапортуем вам об этом! За 2 последних месяца более 40 компаний стали нашими клиентами. Еще мы подготовили карту установок по городам. Посмотрите :)
Читать далее

Релиз Carbon Reductor 5.7.3

Релиз Carbon Reductor 5.7.3

Здравствуйте! Готова новая версия фильтра трафика по спискам Роскомнадзора Carbon Reducotr. Предлагаем ознакомиться со списком изменений:

  • Добавлена фильтрация ftp (по ip, только 21 порт)
    В реестре появились ссылки на FTP, теперь Reductor способен блокировать к ним доступ по указанному IP адресу
  • Добавлен скрипт проверки отчётов РКН (check_rkn_report.sh)
    При проверке утилита РКН позволяет дать отчет о незаблокированных адресах. Новая утилита может пройтись по этому списку и выдать максимум информации, которая известная Редуктору об этих URL, что помогает решить проблему с незаблокированными адресами
  • Диагностика проверяет состояние кэша резолва https
  • Улучшен вывод утилиты url_info.sh. Эта утилита, которая используется в check_rkn_report.sh, теперь ее вывод более компактный и содержит только нужную информацию
  • Исправлена логика работы с https ресурсами в разборе единого реестра (незначительные ошибки)
  • Исправлено сохранение реестра и запроса/подписи при обновлении Carbon Reductor (в 07:45 больше не приходит письмо о проблемах об актуальности списков)
    При обновлении редуктор терял старый реестр и диагностикой отправлялось ошибочное уведомление администратору по электронной почте.
  • IP адреса ресурсов, исключённых из реестра не удалялись из списка фильтруемых
    Баг просуществовал около недели
  • Исправлены ошибочные срабатывания диагностики на потери пакетов
    на сетевых картах
  • Добавлен скрипт проверяющий наличие шторма прерываний ( irqstorm_check ) добавлен его вызов в nic_tunung_help
  • Улучшена обработка некоторых не совсем корректно описанных URL из реестра
  • Исключён излишний дебаг скрипта ip_update, из-за которого логи ротировались слишком часто, что приводило к довольно коротким отчётам в вебке (за 1-2 дня).
Среди наших клиентов