Симулятор может работать в 2х режимах 'make run' и 'make script', работает всё через make.
В интерактивном режиме (make run) make запускает симулятор под rlwrap,
rlwrap предоставляет удобный REPL с историей и поддержкой многострочного редактирования (Ctrl+^).
REPL на любую непонятную команду отвечает справкой, так что если что не ясно можно почитать help.
Для отображения симуляции понадобится утилита https://github.com/sakateka/tlook
Все 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 - одна из неудачных попыток
В dnsguard который является XDP программой нам нужен HTB без очередей (as a meter). В данный момент здесь лежит только одна рабочая реализация htb-v5.c. Всё остальное - это попытки реализовать что-то рабочее и просто разобраться с различными свойствами алгоритма.