Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sakateka/htb-simulator
Hierachical token bucket simulator
https://github.com/sakateka/htb-simulator
algorithm c ebpf hierarchical-token-bucket htb token-bucket xdp
Last synced: 7 days ago
JSON representation
Hierachical token bucket simulator
- Host: GitHub
- URL: https://github.com/sakateka/htb-simulator
- Owner: sakateka
- Created: 2024-09-06T08:30:09.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-09T19:50:09.000Z (8 days ago)
- Last Synced: 2024-11-09T20:30:52.828Z (8 days ago)
- Topics: algorithm, c, ebpf, hierarchical-token-bucket, htb, token-bucket, xdp
- Language: C
- Homepage:
- Size: 13.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Симулятор нагрузки для проверки реализаций токен бакетов
Симулятор может работать в 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.
Всё остальное - это попытки реализовать что-то рабочее и просто разобраться с различными свойствами алгоритма.