Skip to content

sakateka/htb-simulator

Repository files navigation

Симулятор нагрузки для проверки реализаций токен бакетов

Симулятор может работать в 2х режимах 'make run' и 'make script', работает всё через make.

В интерактивном режиме (make run) make запускает симулятор под rlwrap, rlwrap предоставляет удобный REPL с историей и поддержкой многострочного редактирования (Ctrl+^).

REPL на любую непонятную команду отвечает справкой, так что если что не ясно можно почитать help.

Для отображения симуляции понадобится утилита https://github.com/sakateka/tlook

Реализации

Token bucket (TB)

Все tb-*.c содержат рабочие варианты token bucket-ов

  • tb-v3.c - Наиболее удачная версия, на основе который был сделан htb-v5.c
  • tb-dnsguard.c - tb-v3.c с незначительными правками в интерфейсе функции
  • tb-old.c - текущая продакшен реализация (уже заменена)
  • tb-new.c - альтернативная реализация, которая не была зарелизена, но которую я решил реализовать и отладить тут. Этот вариант устарел в пользу tb-v3.c
  • tb-bad.c - одна из неудачных попыток

Hierarchical Token Bucket (HTB)

В dnsguard который является XDP программой нам нужен HTB без очередей (as a meter). В данный момент здесь лежит только одна рабочая реализация htb-v5.c. Всё остальное - это попытки реализовать что-то рабочее и просто разобраться с различными свойствами алгоритма.