guard/docs/research/papers.md
loki5512344 cf9608ce5d
Initial commit: Rampart v0.2.0
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
2026-07-20 20:53:32 +02:00

184 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Papers & References - Материалы для изучения
> Ссылки на статьи, RFC, проекты, инструменты которые легли в основу Rampart.
---
## Minecraft протокол
| Ресурс | Зачем |
|---|---|
| [wiki.vg/Protocol](https://wiki.vg/Protocol) | Официальная неофициальная документация MC протокола. Handshake, VarInt, все пакеты. |
| [wiki.vg/Handshaking_sequence](https://wiki.vg/Handshaking_sequence) | Полная последовательность handshake → login → play |
| [Velocity источник](https://github.com/PaperMC/Velocity) | Как PaperMC парсит MC протокол в Java - референс |
| [Pumpkin-MC](https://github.com/Snowiiii/Pumpkin) | MC сервер на Rust - референс для Rust парсинга протокола |
---
## eBPF / XDP
| Ресурс | Зачем |
|---|---|
| [Outfluencer/Minecraft-XDP-eBPF](https://github.com/Outfluencer/Minecraft-XDP-eBPF) | Референс: XDP фильтр специально для Minecraft (Rust + C, 190+ stars) |
| [xdp-project/xdp-tutorial](https://github.com/xdp-project/xdp-tutorial) | Лучший туториал по XDP - от простого к сложному |
| [libbpf-bootstrap](https://github.com/libbpf/libbpf-bootstrap) | Шаблоны eBPF программ с современным подходом (skeleton, CO-RE) |
| [aya-rs/aya](https://github.com/aya-rs/aya) | Альтернатива libbpf-rs - eBPF полностью на Rust (без C) |
| [BPF Performance Tools](https://www.brendangregg.com/bpf-performance-tools-book.html) | Книга Brendan Gregg - глубокий разбор BPF/eBPF |
| [Cloudflare: XDP введение](https://blog.cloudflare.com/l4drop-xdp-ebpf-based-ddos-mitigations/) | Как Cloudflare использует XDP для DDoS mitigation |
| [Facebook: XDP at scale](https://engineering.fb.com/2018/05/22/open-source/open-sourcing-katran-a-scalable-network-load-balancer/) | Katran - XDP load balancer от Facebook |
---
## Rust networking
| Ресурс | Зачем |
|---|---|
| [tokio-rs/tokio](https://github.com/tokio-rs/tokio) | Async runtime - основа edge ноды |
| [tokio-rs/tokio-uring](https://github.com/tokio-rs/tokio-uring) | io_uring runtime для tokio |
| [bytedance/monoio](https://github.com/bytedance/monoio) | Thread-per-core io_uring runtime от ByteDance |
| [glommio](https://github.com/DataDog/glommio) | io_uring runtime от DataDog |
| [rustls](https://github.com/rustls/rustls) | TLS на Rust - для mTLS |
| [quinn-rs/quinn](https://github.com/quinn-rs/quinn) | QUIC реализация на Rust |
| [zero-copy-paxos](https://www.usenix.org/conference/osdi14/technical-sessions/presentation/ports) | Статья о zero-copy в системных сервисах |
| [Uring и io_uring (LWN)](https://lwn.net/Articles/776703/) | Детальный разбор io_uring от автора |
---
## DDoS защита и сети
| Ресурс | Зачем |
|---|---|
| [Cloudflare Blog: DDoS](https://blog.cloudflare.com/tag/ddos/) | Статьи Cloudflare о реальных атаках и защите |
| [Path.net технический блог](https://path.net/blog/) | Как устроена игровая DDoS защита |
| [RFC 4271](https://datatracker.ietf.org/doc/html/rfc4271) | BGP - основа Anycast маршрутизации |
| [RFC 9000](https://datatracker.ietf.org/doc/html/rfc9000) | QUIC протокол (официальный RFC) |
| [WireGuard whitepaper](https://www.wireguard.com/papers/wireguard.pdf) | Технический документ WireGuard |
| [Hping3 man page](https://linux.die.net/man/8/hping3) | Инструмент для тестирования защиты |
| [tcpkali](https://github.com/satori-com/tcpkali) | Benchmark инструмент для TCP |
---
## Балансировка и прокси
| Ресурс | Зачем |
|---|---|
| [Envoy proxy docs](https://www.envoyproxy.io/docs/envoy/latest/) | EWMA, Circuit Breaker, xDS - референс архитектуры |
| [HAProxy конфигурация](https://www.haproxy.org/download/2.8/doc/configuration.txt) | Полная документация HAProxy |
| [Consistent Hashing paper](https://dl.acm.org/doi/10.1145/258533.258660) | Оригинальная статья Karger et al. 1997 |
| [EWMA в Envoy](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancers#weighted-least-request) | Как Envoy реализует EWMA балансировку |
| [Nginx SO_REUSEPORT](https://nginx.org/en/docs/http/ngx_http_upstream_module.html) | Как Nginx использует SO_REUSEPORT |
---
## Наблюдаемость
| Ресурс | Зачем |
|---|---|
| [OpenTelemetry](https://opentelemetry.io/docs/) | Официальная документация OTel |
| [ClickHouse docs](https://clickhouse.com/docs) | Документация ClickHouse - схемы, запросы |
| [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) | Prometheus-совместимое хранилище для долгосрочных метрик |
| [Grafana Tempo](https://grafana.com/oss/tempo/) | Хранилище distributed traces |
| [Parca](https://github.com/parca-dev/parca) | Continuous profiling для production |
| [tokio-console](https://github.com/tokio-rs/console) | Debug async tokio tasks |
| [Brendan Gregg: Flame Graphs](https://www.brendangregg.com/flamegraphs.html) | Методология профилирования через flame graphs |
---
## Безопасность
| Ресурс | Зачем |
|---|---|
| [STRIDE модель](https://docs.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats) | Методология threat modeling |
| [subtle crate](https://docs.rs/subtle/) | Constant-time операции в Rust |
| [HMAC RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104) | Оригинальный HMAC RFC |
| [cargo-audit](https://github.com/rustsec/rustsec) | CVE проверка Rust зависимостей |
| [cargo-deny](https://github.com/EmbarkStudios/cargo-deny) | Политики лицензий и зависимостей |
| [SLSA framework](https://slsa.dev/) | Supply chain security уровни |
| [cosign](https://github.com/sigstore/cosign) | Подпись Docker образов |
---
## Смежные open-source проекты
| Проект | Язык | Что взять |
|---|---|---|
| [Velocity](https://github.com/PaperMC/Velocity) | Java | MC proxy - основа нашего плагина |
| [Gate (Minekube)](https://github.com/minekube/gate) | Go | Высокопроизводительный MC proxy - архитектурный референс |
| [Minecraft-XDP-eBPF](https://github.com/Outfluencer/Minecraft-XDP-eBPF) | Rust+C | XDP для Minecraft - брать за основу XDP компонента |
| [Sonar](https://github.com/jonesdevelopment/sonar) | Java | Antibot для Velocity - интегрируем как слой |
| [RedisBungee-Reloaded](https://github.com/ProxioDev/RedisBungee) | Java | Cross-proxy синхронизация - референс |
| [VeloFlame](https://github.com/) | Java | Velocity форк с встроенным антиботом (июль 2026) |
| [Pumpkin-MC](https://github.com/Snowiiii/Pumpkin) | Rust | MC сервер на Rust - референс протокола |
| [Katran](https://github.com/facebookincubator/katran) | C++ | XDP load balancer от Facebook - архитектурный референс |
| [NATS](https://github.com/nats-io/nats-server) | Go | Event bus - используем для критических событий |
| [FRRouting](https://github.com/FRRouting/frr) | C | BGP routing - для Anycast в v0.6+ |
| [headscale](https://github.com/juanfont/headscale) | Go | Self-hosted WireGuard координатор - для v0.6+ |
---
## Статьи и блоги по теме
| Статья | Почему стоит прочитать |
|---|---|
| [How TCPShield works](https://tcpshield.com/blog/) | Понять конкурента изнутри |
| [Cloudflare: Lessons from protecting 26M HTTP RPS](https://blog.cloudflare.com/ddos-threat-report-for-2024-q4/) | Реальная статистика DDoS атак |
| [Linux networking performance](https://talawah.io/blog/linux-kernel-vs-dpdk-http-performance-showdown/) | Kernel vs DPDK vs XDP сравнение |
| [Tokio internals](https://tokio.rs/blog/2019-10-scheduler) | Как работает tokio scheduler |
| [io_uring в production](https://developers.mattermost.com/blog/hands-on-iouring-go/) | Реальный опыт io_uring |
| [eBPF maps deep dive](https://prototype-kernel.readthedocs.io/en/latest/bpf/ebpf_maps.html) | 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 (для совместимости) |
---
## Инструменты для разработки
```bash
# Анализ трафика
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
```