Layers: Layer 1: XDP/eBPF — TCP state machine, SYN throttle, blacklist, ringbuf Layer 2: PoW Challenge — SHA-256 hashcash, dynamic difficulty, constant-time verify Layer 3: Rust Core — HMAC handshake, rate limit, death code (existing) Layer 4: Velocity — Physics check, CAPTCHA, protocol verification Layer 5: Paper — Heartbeat, auto-registration (existing) Layer 6: Traffic Intel — EWMA, 168h profiling, reputation, alerts Infra: XDP→Prometheus metrics, ClickHouse + Grafana dashboard, Docker Compose Testing: 100-IP DDoS simulation, MHDDoS ref analysis, load test report Fixes: VarInt sign extension UB, pure ACK deadlock, RST/FIN cleanup Ref: MHDDoS, Sonar, LimboFilter, AtomGuard, Infrarust, MC-XDP-eBPF, PowGo
78 lines
1.9 KiB
YAML
78 lines
1.9 KiB
YAML
services:
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 3s
|
|
timeout: 1s
|
|
retries: 5
|
|
|
|
clickhouse:
|
|
image: clickhouse/clickhouse-server:latest
|
|
container_name: rampart-clickhouse
|
|
ports:
|
|
- "8123:8123"
|
|
- "9000:9000"
|
|
volumes:
|
|
- ./clickhouse/schema.sql:/docker-entrypoint-initdb.d/schema.sql:ro
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8123/ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
|
|
grafana:
|
|
image: grafana/grafana:latest
|
|
container_name: rampart-grafana
|
|
ports:
|
|
- "3000:3000"
|
|
depends_on:
|
|
clickhouse:
|
|
condition: service_started
|
|
environment:
|
|
GF_INSTALL_PLUGINS: grafana-clickhouse-datasource
|
|
volumes:
|
|
- ./grafana/datasources:/etc/grafana/provisioning/datasources:ro
|
|
- ./grafana/dashboards:/etc/grafana/provisioning/dashboards:ro
|
|
restart: unless-stopped
|
|
|
|
edge:
|
|
build:
|
|
context: ..
|
|
dockerfile: deploy/docker/Dockerfile.edge
|
|
ports:
|
|
- "25565:25565"
|
|
environment:
|
|
RAMPART_CONFIG: /etc/rampart/config.toml
|
|
volumes:
|
|
- ./config/edge.toml:/etc/rampart/config.toml:ro
|
|
depends_on:
|
|
redis:
|
|
condition: service_healthy
|
|
|
|
velocity:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/Dockerfile.velocity
|
|
environment:
|
|
RAMPART_HMAC_SECRET: test_secret_32_bytes_long_for_integration_test
|
|
RAMPART_ALLOWED_DOMAINS: play.example.com
|
|
ports:
|
|
- "25577:25577"
|
|
depends_on:
|
|
- paper
|
|
|
|
paper:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/Dockerfile.paper
|
|
environment:
|
|
EULA: "true"
|
|
RAMPART_HMAC_SECRET: test_secret_32_bytes_long_for_integration_test
|
|
RAMPART_ALLOWED_DOMAINS: play.example.com
|
|
ports:
|
|
- "25566:25566"
|
|
depends_on:
|
|
- redis
|