hardware e dimensionamento

O servidor certo depende do papel dele

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

Sistema
Debian 13 (Trixie), kernel 6.12
Arquitetura
x86_64
Software
O mesmo pacote e o mesmo binário nos três papéis; a licença define a cota de nós de limpeza
Placa para filtrar
XDP nativo no driver: mlx5, ice, i40e ou ixgbe
demanda por papel

Onde cada papel pesa

Uma 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.

Demanda relativa de CPU, RAM, disco e rede por papel de nó
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.

dois nós

Um nó fora do caminho, outro dentro dele

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.

Dois nós: analyzer fora do caminho do tráfego e scrubber no caminho do tráfego desviado O roteador de borda envia amostras de flow ao analyzer, que anuncia por BGP o desvio da vítima. O roteador entrega o tráfego desviado ao scrubber pela porta suja; o scrubber filtra com XDP e devolve o tráfego limpo pela porta limpa, que segue para a rede do cliente. O analyzer consulta o /health do scrubber a cada 10 segundos, e os dois nós compartilham a fila de mitigação no ClickHouse. Internet vítima + ataque Roteador de borda tabela principal + CLEAN Rede do cliente 203.0.113.10 limpo amostras de flow NetFlow · sFlow BGP desvio /32 · /128 porta suja (desvio) porta limpa (CLEAN) Analyzer fora do caminho do tráfego coletor · detecção · GoBGP ClickHouse · MariaDB · Redis interface web e API pesa em: disco NVMe e RAM Scrubber no caminho do tráfego desviado core + filtro XDP no driver sem bancos, sem BGP, sem UI devolve o limpo ao roteador pesa em: placa de rede e núcleos GET /health · 10 s 3 falhas retiram o desvio fila de mitigação ClickHouse :8123 Dois nós: analyzer fora do caminho do tráfego e scrubber no caminho do tráfego desviado O roteador de borda envia amostras de flow ao analyzer, que anuncia por BGP o desvio da vítima. O roteador entrega o tráfego desviado ao scrubber pela porta suja; o scrubber filtra com XDP e devolve o tráfego limpo pela porta limpa, que segue para a rede do cliente. O analyzer consulta o /health do scrubber a cada 10 segundos, e os dois nós compartilham a fila de mitigação no ClickHouse. Internet vítima + ataque Rede do cliente 203.0.113.10 Roteador de borda principal + CLEAN flows BGP suja limpa Analyzer fora do caminho coletor · detecção GoBGP · ClickHouse MariaDB · Redis · UI pesa em disco e RAM Scrubber no caminho desviado core + filtro XDP sem bancos sem BGP, sem UI pesa em placa e núcleos GET /health · 10 s fila de mitigação ClickHouse :8123
Modo B, o recomendado para limpar tráfego. No Juniper MX, porta suja e porta limpa dividem o mesmo cabo; no Huawei NE40E/NE8000, são duas portas.
  • AnalyzerRecebe as amostras de flow do roteador, detecta e anuncia por BGP o desvio /32 ou /128 da vítima, com next-hop no scrubber.
  • Porta sujaO roteador entrega ao scrubber só o tráfego da vítima desviada, não a rede inteira.
  • Porta limpaO que passa pelo XDP volta ao roteador pela tabela CLEAN, que nunca contém o desvio. Não há loop.
  • Vigia de saúdeO analyzer consulta o /health do scrubber a cada 10 s. Três falhas seguidas retiram os desvios ativos; uma resposta boa volta a liberar o desvio.
  • Fila de mitigaçãoOs dois nós se falam pelo ClickHouse do analyzer. A porta 8123 fica liberada só para o scrubber; a 8090, do /health, só para o analyzer.
portes de referência

Três portes, pelo volume de flows

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.

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)

Medium

recomendado

ISP / DC médio

Até 50K flows/sredes até ~20 Gbps

CPU
16 cores (Xeon Scalable / EPYC)
RAM
64 GB DDR4 ECC
Disco
2 TB NVMe SSD
Rede
10 Gbps
Sistema
Debian 13+ (Trixie)

Enterprise

Tier-1 / DC grande

100K+ flows/sredes de 40 Gbps+

CPU
32+ cores (EPYC / Xeon Platinum)
RAM
128+ GB DDR4/DDR5 ECC
Disco
4+ TB NVMe (RAID 10)
Rede
25 / 40 / 100 Gbps
Sistema
Debian 13+ (Trixie)
  • eBPF/XDP: o Debian 13 já traz kernel 6.x; use placa com XDP nativo (Mellanox ou Intel recomendadas).
  • ClickHouse: a partir do porte Medium, separe-o num servidor dedicado.
  • Retenção: dimensione o disco pelo período de retenção desejado (compressão de cerca de 10:1).
  • Alta disponibilidade: no Enterprise, recomenda-se cluster com 2 ou mais nós.
centro de limpeza

Centro de limpeza de referência: Dell PowerEdge R760

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.

Placas
2 × NVIDIA/Mellanox ConnectX-6 Dx (MCX623106A) com 2 portas de 100G cada: 4 × 100G. Também servem ConnectX-5 Ex, ConnectX-6 e ConnectX-7.
Slots
Uma placa por CPU: slots 2 + 7 (PCIe Gen5 x16) ou 3 + 6 (Gen4 x16).
Ligação
Hoje, um roteador por scrubber: uma porta de 100G ou LACP com uma porta de cada placa (200G), que continua de pé se uma placa inteira cair. Os demais roteadores desviam por ele, com uma VLAN limpa entre eles. Ligação direta a vários roteadores (até 4 Juniper ou 2 Huawei): em breve.
Sistema
Debian 13, kernel 6.12 LTS com BTF, intel_iommu=on iommu=pt, sem irqbalance e com o driver mlx5 do próprio kernel (sem MLNX_OFED).
BIOS
Perfil Performance, Sub-NUMA Cluster desligado, SR-IOV desligado.
Ajuste da placa
Uma fila por núcleo físico do nó NUMA da placa, anéis de 4096, LRO e GRO de hardware desligados, qdisc mq e afinidade de IRQ fixa, reaplicados no boot por uma unit do systemd.
Gerência
iDRAC fora de banda; a gerência do host passa pela porta de dados.

Dois modos de implantação

Modos de implantação do centro de limpeza
ItemModo A: tudo no R760Modo B: analyzer separado recomendado
No R760Coletor, ClickHouse, MariaDB, interface, GoBGP e XDPSó o core com XDP
BGP com a bordaO próprio R760O analyzer
Vigia de saúdeNão precisaObrigatório

Bordas com template de caminho limpo

Juniper MXValidado em produção

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.

Huawei NE40E / NE8000Validação pendente

Template VRP8 escrito a partir da documentação oficial, com uma porta suja e uma limpa. Ainda precisa de validação em laboratório.

Capacidade: o que dá para afirmar

148,8Mpps

Taxa de linha de uma porta de 100G com quadros de 64 B: o pior caso que o filtro precisa encarar.

~24Mpps

Descarte XDP por núcleo na literatura (paper XDP, CoNEXT 2018, ConnectX-5 Ex). referência, não benchmark do EdgeWarden

80%

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%.

placas de rede

O que conta é o XDP nativo

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.

Placas de rede recomendadas para eBPF/XDP
PlacaDriverVelocidadeXDPObservação
Topo de linha
Mellanox ConnectX-5 / 6mlx525G / 100GNativoO melhor suporte a XDP nativo. Para duas portas de 100G ao mesmo tempo, use ConnectX-5 Ex, ConnectX-6 Dx ou ConnectX-7.
Intel E810ice25G / 100GNativoGeração atual da Intel, com XDP completo.
Custo-benefício (produção)
Intel X710i40e10G / 40GNativoExcelente suporte a XDP, muito testada.
Intel X520 / X540ixgbe10GNativoMais antiga, mas com XDP sólido e fácil de achar usada.
Mellanox ConnectX-4mlx510G / 25GNativoÓtimo preço no mercado de usados.
Laboratório
Intel I350 / I210igb1GBásicoBoa para testes.
virtio-netvirtioVMTestePara 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.

verificação

Como verificar o servidor

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.

bash · somente leitura
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:"

O que esperar

  • Driver 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.
  • Contadores: nenhuma linha na saída do ethtool -S, ou seja, nada descartado na placa.
  • LnkSta: Width x16 e Speed 16GT/s (Gen4) ou 32GT/s (Gen5). x8 ou Gen3 indica slot ou riser errado, com metade da banda.
  • NUMA: use só os núcleos do nó da placa; 16 filas no nó certo rendem mais que 64 espalhadas.

Precisa de ajuda para dimensionar?

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.