- 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)
|
||
|---|---|---|
| .. | ||
| configs | ||
| attacker.Dockerfile | ||
| edge.Dockerfile | ||
| flood.py | ||
| legit.py | ||
| README.md | ||
| run-stress.sh | ||
| start.sh | ||
Стресс-тест Rampart на VDS (без Redis/ClickHouse)
Проверяет edge-ноду (слои 1–3) на реальном VDS. Не требует Redis, ClickHouse или внешних сервисов — только бинарь rampart и stub-бэкенд (socat echo) в одном контейнере.
Топология
┌─────────────── host VDS ───────────────┐
│ docker bridge 172.30.0.0/24 │
│ │
│ rampart-edge (172.30.0.2) │
│ ├─ rampart :25565 (bind 0.0.0.0)│
│ ├─ socat echo :25566 (127.0.0.1) │ ← stub бэкенд
│ └─ metrics :9090 │
│ │
│ rampart-attacker (172.30.0.3) │
│ └─ 100 source IP (172.30.0.101-200) │ ← flood.py / hping3
└────────────────────────────────────────┘
- Метрики на хосте:
curl http://127.0.0.1:9090/metrics - Edge слушает на хосте:
127.0.0.1:25565
Быстрый старт
# 1. На VDS: клонировать репозиторий, собрать бинарь
git clone https://github.com/loki5512344/rampart.git && cd rampart
cargo build --release --bin rampart
# 2. Запустить весь цикл (setup + 4 фазы)
# run-stress.sh сам найдёт бинарь (target/release), а папку — по себе (переменная DIR опциональна)
cd deploy/test/stress
bash run-stress.sh
Для запуска из другого места задай
DIR(по умолчанию — папка скрипта).
Фазы
| Фаза | Конфиг | Что делает | Проверяет |
|---|---|---|---|
| A | edge-high.toml (лимиты 100k) |
TCP connect flood со 100 IP | сырую пропускную способность L4 |
| B | edge-defense.toml (дефолтные лимиты) |
та же атака | rate limit + reputation ban, доступность легитимных клиентов |
| C | — | SYN flood hping3 (rand-source) | поведение без XDP (обрабатывает kernel) |
| D | edge-high.toml |
300 keepalive-коннектов | удержание активных соединений |
Во время фаз A и B параллельно подключается legit.py (generic TCP-клиенты), меряющий RTT — доказывает, что реальные клиенты проходят во время атаки.
Атаки
flood.py открывает чистые TCP-соединения (connect / slowloris / keepalive режимы) со случайных source IP. Никакой протокольной маскировки нет: на уровне L3/L4 флуд неотличим от легитимного трафика. Различие даёт только per-IP rate limit и репутация.
Метрики для сбора
curl -s http://127.0.0.1:9090/metrics | grep -E 'rampart_(connections_total|rate_limit_hits|attack_status)'