Small
ISP regional
Até 20K flows/sredes até ~5 Gbps
- CPU
- 8 cores (Xeon / EPYC)
- RAM
- 32 GB DDR4
- Disco
- 500 GB NVMe SSD
- Rede
- 1 Gbps
- Sistema
- Debian 13+ (Trixie)
O EdgeWarden é um pacote só, que roda como all-in-one, analyzer ou scrubber, escolhido por uma linha no config.toml. Cada papel pesa num recurso diferente: quem analisa vive de disco e memória; quem limpa tráfego vive de placa de rede e de núcleos.
Vale para todos os papéis
mlx5, ice, i40e ou ixgbeUma escala relativa entre os papéis, para orientar a compra. O número exato depende do volume de flows, da retenção e do tráfego que atravessa o filtro.
| Papel | CPU | RAM | Disco | Rede | O que pesa |
|---|---|---|---|---|---|
| All-in-oneo padrão | Médiacresce com os flows/s | Alta | Altacresce com a retenção | Baixamuito alta se filtrar em linha | Coleta, análise, bancos, interface e filtro na mesma máquina. Na instalação típica ela só recebe amostras de flow e anuncia FlowSpec; quem descarta é o roteador. Se também filtrar em linha, some a demanda do scrubber. |
| Analyzerfora do caminho do tráfego | Médiacresce com os flows/s | Alta | Altacresce com a retenção | Baixa | Roda o ClickHouse, o MariaDB, o Redis, o GoBGP e a interface. Recebe só amostras de flow, então a placa importa pouco; o ClickHouse quer NVMe e memória livre para o cache de páginas, e swap acaba com a latência. |
| Scrubberno caminho do tráfego desviado | Muito altapor núcleo, no nó NUMA da placa | Baixa | Baixasem bancos locais | Muito altaXDP nativo, PCIe x16 | Só o core com o filtro XDP, sem bancos, sem BGP e sem interface. O que conta é a placa com XDP nativo, os núcleos físicos do mesmo nó NUMA dela e um slot PCIe x16 de geração suficiente. |
| Packet Sensormódulo opcional (SPAN/TAP) | Alta | Média | Média | Alta | Captura de pacotes para detectar em menos de 1 s e ler SNI, DNS e HTTP Host. Não é um papel: soma-se ao all-in-one ou ao analyzer (o scrubber o desliga). Ordem de grandeza estimada por motor: libpcap ~1–2 Gbps e AF_PACKET v3 ~5 Gbps; a captura por AF_XDP e o motor DPDK chegam em breve. |
Baixa, Média, Alta e Muito alta comparam os papéis entre si; não são medições.
No scrubber, menos é mais. O nó de limpeza usa o mesmo pacote, mas só o core sobe. Não instale MariaDB, Redis, ClickHouse, Apache, PHP, Node.js, GoBGP nem certbot: ele lê a fila de mitigação no ClickHouse do analyzer.
Firewall só com nftables, nunca com ufw, que descartaria o tráfego limpo.
Quando há limpeza de tráfego, o modo recomendado separa quem decide de quem recebe o ataque. Por isso cada máquina tem uma lista de compras diferente.
/32 ou /128 da vítima, com next-hop no scrubber./health do scrubber a cada 10 s. Três falhas seguidas retiram os desvios ativos; uma resposta boa volta a liberar o desvio./health, só para o analyzer.Os portes dimensionam a máquina que coleta e analisa (all-in-one ou analyzer). O scrubber se dimensiona pela placa de rede, nas seções seguintes.
ISP regional
Até 20K flows/sredes até ~5 Gbps
ISP / DC médio
Até 50K flows/sredes até ~20 Gbps
Tier-1 / DC grande
100K+ flows/sredes de 40 Gbps+
A montagem documentada em detalhe para limpar tráfego em 100G. Um servidor equivalente segue a mesma lógica: uma placa por CPU, slot x16 e XDP nativo.
intel_iommu=on iommu=pt, sem irqbalance e com o driver mlx5 do próprio kernel (sem MLNX_OFED).mq e afinidade de IRQ fixa, reaplicados no boot por uma unit do systemd.| Item | Modo A: tudo no R760 | Modo B: analyzer separado recomendado |
|---|---|---|
| No R760 | Coletor, ClickHouse, MariaDB, interface, GoBGP e XDP | Só o core com XDP |
| BGP com a borda | O próprio R760 | O analyzer |
| Vigia de saúde | Não precisa | Obrigatório |
Uma porta por roteador, sujo e limpo no mesmo cabo; um filtro de entrada manda o limpo para a routing-instance CLEAN. IPv4 e IPv6.
Template VRP8 escrito a partir da documentação oficial, com uma porta suja e uma limpa. Ainda precisa de validação em laboratório.
Taxa de linha de uma porta de 100G com quadros de 64 B: o pior caso que o filtro precisa encarar.
Descarte XDP por núcleo na literatura (paper XDP, CoNEXT 2018, ConnectX-5 Ex). referência, não benchmark do EdgeWarden
Teto de desvio sobre a capacidade medida na sua implantação. Acima disso, a decisão passa para scrubbing externo, FlowSpec no vetor e, por último, RTBH.
Arquitetura 100G/200G por roteador, com capacidade validada em cada implantação. Descartar é barato; o tráfego limpo que segue adiante custa uma ordem de grandeza mais e não tem número publicado. Por isso a capacidade é medida na instalação e gravada no sistema, e é sobre ela que vale o teto de 80%.
O filtro roda no driver da placa. Sem suporte nativo, o EdgeWarden cai para o modo genérico (SKB): funciona, mas o pacote só é filtrado depois que o kernel já gastou com ele.
| Placa | Driver | Velocidade | XDP | Observação |
|---|---|---|---|---|
| Topo de linha | ||||
| Mellanox ConnectX-5 / 6 | mlx5 | 25G / 100G | Nativo | O melhor suporte a XDP nativo. Para duas portas de 100G ao mesmo tempo, use ConnectX-5 Ex, ConnectX-6 Dx ou ConnectX-7. |
| Intel E810 | ice | 25G / 100G | Nativo | Geração atual da Intel, com XDP completo. |
| Custo-benefício (produção) | ||||
| Intel X710 | i40e | 10G / 40G | Nativo | Excelente suporte a XDP, muito testada. |
| Intel X520 / X540 | ixgbe | 10G | Nativo | Mais antiga, mas com XDP sólido e fácil de achar usada. |
| Mellanox ConnectX-4 | mlx5 | 10G / 25G | Nativo | Ótimo preço no mercado de usados. |
| Laboratório | ||||
| Intel I350 / I210 | igb | 1G | Básico | Boa para testes. |
| virtio-net | virtio | VM | Teste | Para testar em VM com KVM. |
Para receber ataque de verdade, o mínimo é uma Intel X520 (10G); o ideal é uma Mellanox ConnectX-5 (25G).
200 Gbps exige PCIe 4.0 x16. A ConnectX-5 comum (MCX516A-CCAT, PCIe Gen3) não sustenta duas portas de 100G ao mesmo tempo, e num slot x8 nenhuma placa entrega a taxa nominal.
Em VM com vmxnet3, o XDP nativo exige kernel 6.3 ou mais novo; abaixo disso, só o modo genérico. A ordem de grandeza fica em 1–2 Gbps.
Identifique a placa pelo driver, nunca pelo MAC: já apareceu OUI da Mellanox em placa Intel.
Comandos só de leitura: não mudam nada na placa nem no sistema. O ajuste em si (anéis, filas, IRQ) está no passo 11 do guia de instalação e pede janela de manutenção.
IF=eth0 # interface do plano de dados (a que recebe o tráfego sujo)
# Driver da placa: define se o XDP pode rodar nativo
ethtool -i $IF | grep driver
# Nó NUMA da placa (0 ou 1; -1 = BIOS sem SLIT)
cat /sys/class/net/$IF/device/numa_node
# Em que modo o XDP subiu? (com o core rodando)
ip -d link show $IF | grep -i xdp
# "xdp" = nativo, no driver — obrigatório nesta escala
# "xdpgeneric" = fallback SKB, roda DEPOIS do GRO
# Conferir se está sobrando pacote na placa (tudo deve ficar em zero)
ethtool -S $IF | grep -iE "drop|discard|miss|nobuf|error" | grep -v ": 0$"
# Largura e geração do slot PCIe
lspci -vv -s $(basename $(readlink /sys/class/net/$IF/device)) | grep -i "LnkSta:"
mlx5_core, ice, i40e ou ixgbe: XDP nativo disponível.xdp na saída do ip link: o filtro está no driver. Se aparecer xdpgeneric, resolva a placa ou o driver antes de pôr tráfego de verdade.ethtool -S, ou seja, nada descartado na placa.Conte o volume de flows, a retenção que quer manter e quantos roteadores vão desviar para limpeza. A equipe indica o servidor e a placa de cada papel.