- remove Java plugins (velocity/paper), dashboard, all MC-specific code
(handshake, death_code, varint, hostname-HMAC); available in history pre-v0.2
- merge crates/* into one package with src/bin/{rampart,rampart-manager,rampart-cli}
- ProtocolHandler trait + registry (no implementations yet), universal PoW kept
- XDP: universal L3/L4 filter (xdp/core/) + pluggable hook API (xdp/hooks/),
fix IPv6 saddr bug; clang build verified
- docs: bilingual knowledge base (docs/kb/: attacks x4, defense-levels,
practice x3), rewrite README/architecture for universal concept
- TODO.md v4.0: <=300-line module limit, competitor benchmark section (ref/)
- deploy/CI/docs cleanup: no MC references, new binary names
cargo build/clippy(-D warnings)/test green (55 tests)
2.8 KiB
2.8 KiB
Testing - Rampart
Как тестировать: unit, integration, нагрузочное, DDoS simulation.
1. Unit и integration тесты (Rust)
cargo test # все тесты
cargo test --test config_parse
cargo test -- --nocapture # с выводом
Существующие наборы (tests/):
| Тест | Что покрывает |
|---|---|
config_parse |
Парсинг и валидация единого конфига (src/config) |
filter_logic |
Blacklist, rate limit, geo-фильтры |
pow_roundtrip |
Выдача/решение/проверка PoW challenge |
protocol_registry |
Реестр протокольных плагинов |
2. Статический анализ
cargo fmt --all --check
cargo clippy --all-targets --all-features -- -D warnings
cargo deny check
XDP: smoke-check компиляции BPF-программы:
clang -O2 -g -target bpf -c xdp/core/universal_filter.c -o /tmp/universal_filter.o
3. Локальный integration-стенд (Docker)
bash deploy/test/run_test.sh
Поднимает backend-stub (TCP echo), edge (rampart с config.test.toml) и
attacker-контейнер. Сценарии — в deploy/test/README.md.
4. Нагрузочное тестирование
Много-IP TCP flood на VDS (edge-only)
deploy/test/stress/ — полный цикл без Redis/ClickHouse: edge-контейнер с
stub-бэкендом (socat echo) + attacker-контейнер со 100 source IP.
flood.py шлёт чистые TCP-соединения (connect / slowloris / keepalive),
во время флуда параллельно подключаются generic TCP-клиенты (legit.py),
замеряющие RTT.
git clone https://github.com/loki5512344/rampart.git && cd rampart
cargo build --release --bin rampart
cd deploy/test/stress && bash run-stress.sh
Фазы: A — сырая пропускная способность (лимиты сняты), B — защита (per-IP rate limit + reputation bans), C — SYN flood hping3, D — активные соединения.
tcpkali / hping3
tcpkali --connections 1000 --connect-rate 5000 --duration 60s EDGE_IP:25565
hping3 -S --flood -p 25565 --rand-source EDGE_IP # только на свои серверы!
5. Метрики для проверки во время теста
curl -s http://localhost:9090/metrics | grep rampart_
# rampart_connections_total{result="allowed|blocked"}
# rampart_rate_limit_hits
# rampart_pow_challenges_total{result=...}
# rampart_attack_status
Версия: 2.0 | Август 2026