Small
ISP regional
Hasta 20K flows/sredes de hasta ~5 Gbps
- CPU
- 8 núcleos (Xeon / EPYC)
- RAM
- 32 GB DDR4
- Disco
- 500 GB NVMe SSD
- Red
- 1 Gbps
- Sistema
- Debian 13+ (Trixie)
EdgeWarden es un solo paquete que funciona como all-in-one, analyzer o scrubber, definido por una línea en config.toml. Cada rol exige un recurso distinto: el que analiza vive de disco y memoria; el que limpia tráfico vive de la tarjeta de red y de los núcleos.
Vale para todos los roles
mlx5, ice, i40e o ixgbeUna escala relativa entre roles para orientar la compra. El número exacto depende del volumen de flows, de la retención y del tráfico que atraviesa el filtro.
| Rol | CPU | RAM | Disco | Red | Qué lo exige |
|---|---|---|---|---|---|
| All-in-oneel predeterminado | Mediacrece con los flows/s | Alta | Altacrece con la retención | Bajamuy alta si filtra en línea | Recolección, análisis, bases de datos, interfaz y filtro en la misma máquina. En la instalación típica solo recibe muestras de flow y anuncia FlowSpec; quien descarta es el router. Si además filtra en línea, sume la demanda del scrubber. |
| Analyzerfuera del camino del tráfico | Mediacrece con los flows/s | Alta | Altacrece con la retención | Baja | Ejecuta ClickHouse, MariaDB, Redis, GoBGP y la interfaz. Solo recibe muestras de flow, así que la tarjeta importa poco; ClickHouse quiere NVMe y memoria libre para la caché de páginas, y el swap arruina la latencia. |
| Scrubberen el camino del tráfico desviado | Muy altapor núcleo, en el nodo NUMA de la tarjeta | Baja | Bajasin bases locales | Muy altaXDP nativo, PCIe x16 | Solo el core con el filtro XDP, sin bases de datos, sin BGP y sin interfaz. Lo que cuenta es una tarjeta con XDP nativo, núcleos físicos en el mismo nodo NUMA que ella y un slot PCIe x16 de generación suficiente. |
| Packet Sensormódulo opcional (SPAN/TAP) | Alta | Media | Media | Alta | Captura de paquetes para detectar en menos de 1 s y leer SNI, DNS y HTTP Host. No es un rol: se suma al all-in-one o al analyzer (el scrubber lo desactiva). Orden de magnitud estimado por motor: libpcap ~1–2 Gbps y AF_PACKET v3 ~5 Gbps; la captura por AF_XDP y el motor DPDK llegan próximamente. |
Baja, Media, Alta y Muy alta comparan los roles entre sí; no son mediciones.
En el scrubber, menos es más. El nodo de limpieza usa el mismo paquete, pero solo arranca el core. No instale MariaDB, Redis, ClickHouse, Apache, PHP, Node.js, GoBGP ni certbot: lee la cola de mitigación en el ClickHouse del analyzer.
Firewall solo con nftables, nunca con ufw, que descartaría el tráfico limpio.
Cuando hay limpieza de tráfico, el modo recomendado separa a quien decide de quien recibe el ataque. Por eso cada máquina tiene una lista de compras distinta.
/32 o /128 de la víctima, con next-hop en el scrubber./health del scrubber cada 10 s. Tres fallas seguidas retiran los desvíos activos; una respuesta correcta vuelve a habilitar el desvío./health, solo para el analyzer.Los tamaños dimensionan la máquina que recolecta y analiza (all-in-one o analyzer). El scrubber se dimensiona por la tarjeta de red, en las secciones siguientes.
ISP regional
Hasta 20K flows/sredes de hasta ~5 Gbps
ISP / DC mediano
Hasta 50K flows/sredes de hasta ~20 Gbps
Tier-1 / DC grande
100K+ flows/sredes de 40 Gbps+
El montaje documentado en detalle para limpiar tráfico a 100G. Un servidor equivalente sigue la misma lógica: una tarjeta por CPU, slot x16 y XDP nativo.
intel_iommu=on iommu=pt, sin irqbalance y con el driver mlx5 del propio kernel (sin MLNX_OFED).mq y afinidad de IRQ fija, reaplicados en el arranque por una unit de systemd.| Ítem | Modo A: todo en el R760 | Modo B: analyzer separado recomendado |
|---|---|---|
| En el R760 | Colector, ClickHouse, MariaDB, interfaz, GoBGP y XDP | Solo el core con XDP |
| BGP con el borde | El propio R760 | El analyzer |
| Monitor de salud | No hace falta | Obligatorio |
Un puerto por router, sucio y limpio en el mismo cable; un filtro de entrada envía el tráfico limpio a la routing-instance CLEAN. IPv4 e IPv6.
Plantilla VRP8 escrita a partir de la documentación oficial, con un puerto sucio y uno limpio. Aún necesita validación en laboratorio.
Tasa de línea de un puerto de 100G con tramas de 64 B: el peor caso que el filtro tiene que enfrentar.
Descarte XDP por núcleo en la literatura (paper XDP, CoNEXT 2018, ConnectX-5 Ex). referencia, no benchmark de EdgeWarden
Tope de desvío sobre la capacidad medida en su implementación. Por encima de eso, la decisión pasa a scrubbing externo, FlowSpec sobre el vector y, en último caso, RTBH.
Arquitectura 100G/200G por router, con capacidad validada en cada implementación. Descartar es barato; el tráfico limpio que sigue adelante cuesta un orden de magnitud más y no tiene cifra publicada. Por eso la capacidad se mide en la instalación y queda registrada en el sistema, y el tope del 80 % se aplica sobre ella.
El filtro corre en el driver de la tarjeta. Sin soporte nativo, EdgeWarden pasa al modo genérico (SKB): funciona, pero el paquete se filtra recién después de que el kernel ya gastó recursos en él.
| Tarjeta | Driver | Velocidad | XDP | Observación |
|---|---|---|---|---|
| Gama alta | ||||
| Mellanox ConnectX-5 / 6 | mlx5 | 25G / 100G | Nativo | El mejor soporte de XDP nativo. Para dos puertos de 100G a la vez, use ConnectX-5 Ex, ConnectX-6 Dx o ConnectX-7. |
| Intel E810 | ice | 25G / 100G | Nativo | Generación actual de Intel, con XDP completo. |
| Costo-beneficio (producción) | ||||
| Intel X710 | i40e | 10G / 40G | Nativo | Excelente soporte de XDP, muy probada. |
| Intel X520 / X540 | ixgbe | 10G | Nativo | Más antigua, pero con XDP sólido y fácil de conseguir usada. |
| Mellanox ConnectX-4 | mlx5 | 10G / 25G | Nativo | Muy buen precio en el mercado de usados. |
| Laboratorio | ||||
| Intel I350 / I210 | igb | 1G | Básico | Buena para pruebas. |
| virtio-net | virtio | VM | Prueba | Para pruebas en VM con KVM. |
Para recibir ataques reales, el mínimo es una Intel X520 (10G); lo ideal, una Mellanox ConnectX-5 (25G).
200 Gbps exige PCIe 4.0 x16. La ConnectX-5 común (MCX516A-CCAT, PCIe Gen3) no sostiene dos puertos de 100G al mismo tiempo, y en un slot x8 ninguna tarjeta entrega la tasa nominal.
En VM con vmxnet3, el XDP nativo exige kernel 6.3 o más reciente; por debajo, solo modo genérico. El orden de magnitud queda en 1–2 Gbps.
Identifique la tarjeta por el driver, nunca por la MAC: ya apareció un OUI de Mellanox en una tarjeta Intel.
Comandos de solo lectura: no cambian nada en la tarjeta ni en el sistema. El ajuste en sí (anillos, colas, IRQ) está en el paso 11 de la guía de instalación y requiere ventana de mantenimiento.
IF=eth0 # interfaz del plano de datos (la que recibe el tráfico sucio)
# Driver de la tarjeta: define si XDP puede correr nativo
ethtool -i $IF | grep driver
# Nodo NUMA de la tarjeta (0 o 1; -1 = BIOS sin SLIT)
cat /sys/class/net/$IF/device/numa_node
# ¿En qué modo arrancó XDP? (con el core en marcha)
ip -d link show $IF | grep -i xdp
# "xdp" = nativo, en el driver — obligatorio a esta escala
# "xdpgeneric" = fallback SKB, corre DESPUÉS de GRO
# Verificar si la tarjeta está descartando paquetes (todo debe quedar en cero)
ethtool -S $IF | grep -iE "drop|discard|miss|nobuf|error" | grep -v ": 0$"
# Ancho y generación del slot PCIe
lspci -vv -s $(basename $(readlink /sys/class/net/$IF/device)) | grep -i "LnkSta:"
mlx5_core, ice, i40e o ixgbe: XDP nativo disponible.xdp en la salida de ip link: el filtro está en el driver. Si aparece xdpgeneric, resuelva la tarjeta o el driver antes de poner tráfico real.ethtool -S, es decir, nada descartado en la tarjeta.Cuéntenos el volumen de flows, la retención que quiere mantener y cuántos routers van a desviar a limpieza. El equipo le indica el servidor y la tarjeta de cada rol. La atención se brinda en portugués.