Multi-layer DDoS protection for Minecraft servers. - rampart-core: Edge node with XDP/eBPF + Rust L7 filtering - rampart-manager: REST API with JWT auth, Redis sync - rampart-cli: CLI tool for operators - velocity-plugin: Domain check, HMAC verify, server registry, load balancer - paper-plugin: Auto-registration, heartbeat, HMAC verify - dashboard: React + Vite web UI for management
10 KiB
10 KiB
Papers & References - Материалы для изучения
Ссылки на статьи, RFC, проекты, инструменты которые легли в основу Rampart.
Minecraft протокол
| Ресурс | Зачем |
|---|---|
| wiki.vg/Protocol | Официальная неофициальная документация MC протокола. Handshake, VarInt, все пакеты. |
| wiki.vg/Handshaking_sequence | Полная последовательность handshake → login → play |
| Velocity источник | Как PaperMC парсит MC протокол в Java - референс |
| Pumpkin-MC | MC сервер на Rust - референс для Rust парсинга протокола |
eBPF / XDP
| Ресурс | Зачем |
|---|---|
| Outfluencer/Minecraft-XDP-eBPF | Референс: XDP фильтр специально для Minecraft (Rust + C, 190+ stars) |
| xdp-project/xdp-tutorial | Лучший туториал по XDP - от простого к сложному |
| libbpf-bootstrap | Шаблоны eBPF программ с современным подходом (skeleton, CO-RE) |
| aya-rs/aya | Альтернатива libbpf-rs - eBPF полностью на Rust (без C) |
| BPF Performance Tools | Книга Brendan Gregg - глубокий разбор BPF/eBPF |
| Cloudflare: XDP введение | Как Cloudflare использует XDP для DDoS mitigation |
| Facebook: XDP at scale | Katran - XDP load balancer от Facebook |
Rust networking
| Ресурс | Зачем |
|---|---|
| tokio-rs/tokio | Async runtime - основа edge ноды |
| tokio-rs/tokio-uring | io_uring runtime для tokio |
| bytedance/monoio | Thread-per-core io_uring runtime от ByteDance |
| glommio | io_uring runtime от DataDog |
| rustls | TLS на Rust - для mTLS |
| quinn-rs/quinn | QUIC реализация на Rust |
| zero-copy-paxos | Статья о zero-copy в системных сервисах |
| Uring и io_uring (LWN) | Детальный разбор io_uring от автора |
DDoS защита и сети
| Ресурс | Зачем |
|---|---|
| Cloudflare Blog: DDoS | Статьи Cloudflare о реальных атаках и защите |
| Path.net технический блог | Как устроена игровая DDoS защита |
| RFC 4271 | BGP - основа Anycast маршрутизации |
| RFC 9000 | QUIC протокол (официальный RFC) |
| WireGuard whitepaper | Технический документ WireGuard |
| Hping3 man page | Инструмент для тестирования защиты |
| tcpkali | Benchmark инструмент для TCP |
Балансировка и прокси
| Ресурс | Зачем |
|---|---|
| Envoy proxy docs | EWMA, Circuit Breaker, xDS - референс архитектуры |
| HAProxy конфигурация | Полная документация HAProxy |
| Consistent Hashing paper | Оригинальная статья Karger et al. 1997 |
| EWMA в Envoy | Как Envoy реализует EWMA балансировку |
| Nginx SO_REUSEPORT | Как Nginx использует SO_REUSEPORT |
Наблюдаемость
| Ресурс | Зачем |
|---|---|
| OpenTelemetry | Официальная документация OTel |
| ClickHouse docs | Документация ClickHouse - схемы, запросы |
| VictoriaMetrics | Prometheus-совместимое хранилище для долгосрочных метрик |
| Grafana Tempo | Хранилище distributed traces |
| Parca | Continuous profiling для production |
| tokio-console | Debug async tokio tasks |
| Brendan Gregg: Flame Graphs | Методология профилирования через flame graphs |
Безопасность
| Ресурс | Зачем |
|---|---|
| STRIDE модель | Методология threat modeling |
| subtle crate | Constant-time операции в Rust |
| HMAC RFC 2104 | Оригинальный HMAC RFC |
| cargo-audit | CVE проверка Rust зависимостей |
| cargo-deny | Политики лицензий и зависимостей |
| SLSA framework | Supply chain security уровни |
| cosign | Подпись Docker образов |
Смежные open-source проекты
| Проект | Язык | Что взять |
|---|---|---|
| Velocity | Java | MC proxy - основа нашего плагина |
| Gate (Minekube) | Go | Высокопроизводительный MC proxy - архитектурный референс |
| Minecraft-XDP-eBPF | Rust+C | XDP для Minecraft - брать за основу XDP компонента |
| Sonar | Java | Antibot для Velocity - интегрируем как слой |
| RedisBungee-Reloaded | Java | Cross-proxy синхронизация - референс |
| VeloFlame | Java | Velocity форк с встроенным антиботом (июль 2026) |
| Pumpkin-MC | Rust | MC сервер на Rust - референс протокола |
| Katran | C++ | XDP load balancer от Facebook - архитектурный референс |
| NATS | Go | Event bus - используем для критических событий |
| FRRouting | C | BGP routing - для Anycast в v0.6+ |
| headscale | Go | Self-hosted WireGuard координатор - для v0.6+ |
Статьи и блоги по теме
| Статья | Почему стоит прочитать |
|---|---|
| How TCPShield works | Понять конкурента изнутри |
| Cloudflare: Lessons from protecting 26M HTTP RPS | Реальная статистика DDoS атак |
| Linux networking performance | Kernel vs DPDK vs XDP сравнение |
| Tokio internals | Как работает tokio scheduler |
| io_uring в production | Реальный опыт io_uring |
| eBPF maps deep dive | BPF map типы, когда что использовать |
RFC для изучения
| RFC | Тема |
|---|---|
| RFC 793 | TCP - основа всего |
| RFC 4271 | BGP-4 |
| RFC 4786 | Anycast через BGP |
| RFC 7413 | TCP Fast Open |
| RFC 9000 | QUIC Transport |
| RFC 9001 | QUIC + TLS 1.3 |
| RFC 8446 | TLS 1.3 |
| RFC 2104 | HMAC |
| RFC 5246 | TLS 1.2 (для совместимости) |
Инструменты для разработки
# Анализ трафика
wireshark # GUI пакетный анализатор
tshark # CLI версия wireshark
tcpdump # быстрый захват пакетов
# Benchmark
tcpkali # TCP нагрузочное тестирование
iperf3 # bandwidth тест
hping3 # генерация специфических пакетов
wrk # HTTP benchmark (для Manager API)
# eBPF отладка
bpftool # управление BPF программами и картами
bpftrace # скриптовый язык для eBPF
strace # системные вызовы (для userspace)
# Rust
cargo-flamegraph # flame graphs
cargo-criterion # benchmark с HTML отчётами
cargo-audit # CVE проверка
cargo-deny # политики зависимостей
tokio-console # async tasks debug
# Сеть
wireguard-tools # wg, wg-quick
frr # FRRouting (BGP)
iptables/nftables # firewall
# Мониторинг
prometheus # метрики
grafana # дашборды
clickhouse # attack log аналитика
parca # continuous profiling