plataforma

Rendimiento de nivel operador, del driver de la tarjeta al panel

Un motor en Rust sin garbage collector, filtros eBPF/XDP que corren en el driver de la NIC y una base de datos columnar hecha para miles de millones de flows. Todo queda instalado en su propio servidor, sin depender de una nube de terceros para detectar ni para mitigar.

Ingeniería en númeroscore + interfaz
pruebas automatizadas en el core
1.198
vectores de ataque decodificados
50
tablas analíticas en ClickHouse
125
materialized views
20
reflectores bloqueados en XDP
13
endpoints en la API REST v1
46
flujo de datos

Cómo circulan los datos

La telemetría entra por la izquierda, el motor decide cada 10 s y la respuesta vuelve al borde por BGP o pasa por el scrubber. Todo queda registrado en ClickHouse: flows, ataques, decisiones y auditoría.

Arquitectura de EdgeWarden Los routers de borde exportan flows al colector, que enriquece los datos y los entrega al motor de análisis. En cada ciclo de 10 segundos, el motor pasa las anomalías a la etapa de decisión, que escribe la acción en la cola de ClickHouse, anuncia FlowSpec, RTBH o desvío a los routers mediante GoBGP o ExaBGP, o envía el prefijo al proveedor de scrubbing externo. El scrubber XDP lee la cola, recibe el tráfico desviado y devuelve el tráfico limpio al borde, mientras el analyzer verifica su salud cada 10 segundos. El panel, la API y las alertas reciben los eventos del motor. lee la cola vigila /health · 10 s anuncios BGP: FlowSpec · RTBH · desvío /32 con NO_EXPORT desvío o envío Borde Juniper MX Huawei NE MikroTik · Cisco y cualquier exportador de flow Colector UDP 2055 · 6343 BMP · SNMP · pcap Enriquecimiento ASN · GeoIP · rDNS DNS pasivo · sonda TLS 10 s Motor de análisis 50 vectores baseline · burst Panel y alertas Interfaz :3099 REST API v1 Correo · Telegram Webhook · Slack Syslog · SNMP Trap ClickHouse flows · ataques · decisiones · cola · auditoría Decisión cascada determinista bloqueo CGNAT · techo 80 % Scrubber XDP driver de la NIC · nft GoBGP · ExaBGP FlowSpec · RTBH · desvío Scrubbing externo proveedor de mitigación

Deslice hacia el lado para ver el diagrama completo.

Telemetría Escritura y cola en ClickHouse Anuncios BGP Tráfico desviado Tráfico limpio Monitor de salud Alertas
  1. Routers de bordeJuniper, Huawei, MikroTik, Cisco y cualquier equipo que exporte flow.
  2. ColectorNetFlow, IPFIX y sFlow en UDP 2055/6343, BMP en TCP 11019, SNMP y captura de paquetes.
  3. EnriquecimientoASN, GeoIP, rDNS, sonda TLS, DNS pasivo, decodificador de túneles y mapa puerto → proveedor.
  4. Motor de análisisCiclo de 10 s, configurable hasta 1 s: decoders, umbrales, baseline, burst, carpet bomb, spoofing, RPKI/IRR y threat intel.
  5. DecisiónCascada determinista con bloqueo de CGNAT y techo del 80 % de la capacidad medida del scrubber.
  6. AcciónGoBGP o ExaBGP anuncian a los routers; el scrubber XDP/nftables limpia; el proveedor de mitigación recibe lo que no cabe.
  7. Panel e integracionesInterfaz web, API REST v1, correo, Telegram, webhook, Syslog y SNMP Trap.
stack

Elegido para no atascarse en medio de un ataque

Cada pieza hace una sola cosa y está donde más rinde. Ninguna depende de un servicio externo para funcionar.

Rust + TokioEl motor

Recolección, análisis, decisión y mitigación en un binario asíncrono, sin garbage collector y sin pausas en medio de un ataque. El build de release usa LTO y jemalloc, y está protegido contra ingeniería inversa.

tokiojemalloclto

eBPF/XDP con ayaEl plano de datos

Filtro y scrubber corren en el driver de la tarjeta, antes de la pila de red de Linux. Un destino que no está en mitigación pasa con una sola búsqueda en un hash.

ayaXDP_DROPXDP_PASS

ClickHouseFlows e historial

Base de datos columnar para miles de millones de flows, con consultas en milisegundos y compresión cercana a 10:1. También guarda la cola de mitigación, las decisiones y la auditoría.

125 tablas20 MVsLZ4

MariaDB / MySQLUsuarios y configuración

Usuarios y roles, dashboards, Managed Objects, claves de API e informes programados.

22 tablas

RedisEstado en caliente

Baselines estadísticas y alertas en tiempo real. Después de un reinicio, el motor restaura las baselines desde Redis en lugar de volver a aprender la red desde cero.

baselinesalertas

GoBGP v3 / ExaBGPSesiones BGP

GoBGP por gRPC nativo, o ExaBGP. La configuración generada por la interfaz muestra el diff antes de aplicarse y admite rollback.

gRPC :50051FlowSpecBMP

Next.js 16 + React 19Interfaz

Más de 60 pantallas en portugués de Brasil, tema claro y oscuro, terminal SSH en el navegador, dashboards que se reorganizan arrastrando y Swagger UI integrado.

:3099xterm.jsOpenAPI
roles de nodo

Separe a quien decide del equipo que recibe el ataque

El mismo paquete de instalación funciona en tres roles, elegidos con una línea en config.toml. Los nodos se comunican por la cola de mitigación en ClickHouse, sin protocolo propietario.

Qué hace cada rol de nodo
Función All-in-oneel predeterminado Analyzerfuera del camino del tráfico Scrubberen el camino del tráfico desviado
Recibe flows y detectaSíSíNo, el colector escucha solo en loopback
Decide y anuncia por BGPSíSíNo
Filtra con XDP y nftablesSíNunca toca el filtro localSí, leyendo la cola de mitigación
Interfaz web y APISíSíNo, arranca liviano
Cuándo usarloRed única, un servidor para todoSeparar la inteligencia del equipo que recibe el ataqueAppliance de limpieza dedicado, con cuota de nodos en la licencia

Monitor de salud: el desvío nunca se convierte en agujero negro

El analyzer consulta el /health del scrubber cada 10 s. Tras 3 fallas seguidas, los desvíos activos se retiran y no se anuncia ninguno nuevo. Con la primera respuesta correcta, todo vuelve. El scrubber responde 503 si el filtro no cargó o si el nodo está fuera de la cuota de la licencia.

  1. responde
  2. responde
  3. 1.ª falla
  4. 2.ª falla
  5. 3.ª falla
  6. desvíos retirados
  7. vuelve a desviar
plano de datos

Filtrado en el driver de la tarjeta

El programa XDP de EdgeWarden corre antes de la pila de red de Linux. Con el mapa vacío, la máquina se comporta como si el filtro no existiera, así que se puede instalar sin riesgo. Cualquier falla deja pasar el paquete, nunca lo descarta. Función del plan Enterprise.

Sanidad L3/L4

Descarta direcciones martian, fragmentos y combinaciones de flags imposibles.

Amplificación

Bloquea 13 reflectores conocidos por puerto de origen y tamaño mínimo de paquete.

13 reflectores

Rate limit por origen

Token bucket por dirección de origen, para botnets y reflectores con IP real.

hasta 65.536 orígenes

Protección SYN Nuevo

Descarta el primer SYN y deja pasar a quien retransmite, sin convertir el scrubber en reflector como haría un SYN cookie.

Límite por destino

Techo de tráfico por víctima, ajustable por cliente en el Managed Object.

hasta 16.384 víctimas

Firmas de contenido Nuevo

Firmas UDP de 4 u 8 bytes más puerto, registradas por el operador, con contador por firma.

hasta 1.024 firmas

Los 13 reflectores bloqueados en el driver

Puerto de origen UDP. QUIC en UDP/443 queda fuera a propósito: lo tratan el detector QUIC y FlowSpec.

  • QOTD17
  • chargen19
  • DNS53
  • portmap111
  • NTP123
  • NetBIOS137
  • SNMP161
  • CLDAP389
  • RIPv1520
  • SSDP1900
  • WS-Discovery3702
  • mDNS5353
  • memcached11211

Modo observación. Con una heurística desactivada, el filtro cuenta lo que descartaría sin descartar nada, y el panel Plano de datos (Plano de dados) muestra los aciertos por heurística cada minuto. El carpet bomb en IPv4 e IPv6 se trata por prefijo, buscando a la víctima en una trie LPM.

appliance

Centro de limpieza 100G de referencia

La implementación de referencia usa un Dell PowerEdge R760 con dos tarjetas NVIDIA/Mellanox ConnectX-6 Dx (4 puertos de 100G), Debian 13 y kernel 6.12 LTS. Cada router recibe un puerto de 100G, o 200G con LACP usando un puerto de cada tarjeta, lo que mantiene el servicio aunque falle una tarjeta completa.

  • Arquitectura 100G/200G por router, con capacidad validada en cada implementación
  • Descarte de decenas de Mpps por puerto con NIC de XDP nativo
  • Camino sin bucles por diseño: desvío /32 o /128 con community y NO_EXPORT; el tráfico limpio vuelve por una tabla que nunca contiene el desvío
  • Driver mlx5 estándar del kernel, sin instalar paquetes del fabricante
  • NIC recomendadas: Mellanox ConnectX-5/6 e Intel E810 en la gama alta; X710, X520/X540 y ConnectX-4 en costo-beneficio
Dos tarjetas ConnectX-6 Dx con dos puertos de 100G cada una; cada router usa un puerto de cada tarjeta en LACP, con 200G en total Dell PowerEdge R760 Debian 13 · kernel 6.12 LTS ConnectX-6 Dx · tarjeta 1 NUMA de la CPU 0 ConnectX-6 Dx · tarjeta 2 NUMA de la CPU 1 Router 1 LACP 2 × 100G Router 2 LACP 2 × 100G
Un puerto de cada tarjeta por router. Si falla una tarjeta completa, el router sigue con 100G. Sin LACP, los 4 puertos atienden hasta 4 routers Juniper con 100G cada uno.

Dos modos de implementación

Modos de implementación del centro de limpieza
ÍtemModo A: todo en el R760Modo B: analyzer separado
recomendado
En el R760Colector, ClickHouse, MariaDB, interfaz, GoBGP y XDPSolo el core con XDP
BGP con el bordeEl propio R760El analyzer
Monitor de saludNo hace faltaObligatorio

Bordes con plantilla de camino limpio

Juniper MXValidado en producción

Un puerto por router, tráfico sucio y limpio en el mismo cable; un filtro de entrada envía el limpio a la routing-instance CLEAN. IPv4 e IPv6.

Huawei NE40E / NE8000Validación pendiente

Plantilla VRP8 escrita a partir de la documentación oficial, con un puerto sucio y uno limpio. Aún necesita validación en laboratorio.

Capacidad medida, no prometida. La capacidad de reenvío limpio se mide en cada implementación y queda registrada en el sistema. EdgeWarden solo desvía hasta el 80 % del valor medido; por encima de eso, la decisión pasa a scrubbing externo, luego a FlowSpec sobre el vector y, en último caso, a RTBH.

compatibilidad

Protocolos abiertos, fabricantes reales

Cualquier router que exporte flow y hable BGP FlowSpec o RTBH queda cubierto por las funciones estándar. Las funciones específicas de cada fabricante se listan abajo, sin exagerar.

Recolección y telemetría

  • NetFlow v5
  • NetFlow v9RFC 3954
  • IPFIXRFC 7011
  • sFlow v5
  • SNMP v1/v2c/v3
  • BMPRFC 7854
  • libpcap · AF_PACKET v3
  • AF_XDP · DPDKpróximamente

Mitigación

  • BGP FlowSpecRFC 5575/8955
  • RTBH
  • GoBGPgRPC
  • ExaBGP
  • eBPF/XDP
  • nftables

Validación de rutas

  • RPKI/RTR
  • IRRRIPE · RADb

Túneles decodificados

  • VxLAN
  • GENEVE
  • GRE
  • L2TP
  • IP-in-IP
  • MPLS-in-UDP
Integración por fabricante
FabricanteFlow y BGP estándarFunciones específicas
JuniperJunOS, MXSíFlowSpec y RTBH en producción, plantillas de scrubbing IPv4/IPv6, contadores de firewall (JUNIPER-FIREWALL-MIB), hardening de filtros estáticos, PBR vía prefix-list, terminal SSH
HuaweiVRP8, NE40E/NE8000SíPBR vía ACL y terminal SSH. Plantilla de scrubbing escrita, a la espera de validación en laboratorio
MikroTikRouterOSSíPBR vía address-list y terminal SSH
CiscoIOS, IOS-XRSíTerminal SSH en el navegador. Sin PBR automático
Nokia, Arista y otrosSíSin integración específica: funcionan por NetFlow/IPFIX/sFlow y BGP FlowSpec/RTBH
REST API v1

Intégrelo a su NOC, Zabbix, SIEM o portal

API REST v1 documentada en OpenAPI/Swagger: 46 endpoints, claves con alcance, restricción por IP y por cliente, límite de tasa y webhooks.

  • Swagger UI integrado en /api-docs, que funciona incluso en un appliance sin internet
  • La clave se muestra una sola vez; el servidor guarda solo el hash SHA-256
  • Alcances para tráfico, flows, ataques, violaciones, mitigaciones, Managed Objects, informes y sistema
  • Aplique FlowSpec, RTBH, desvío o scrubbing externo con un POST, con los mismos bloqueos de seguridad de la interfaz
  • Límite predeterminado de 120 solicitudes por minuto por clave, con respuesta 429 y Retry-After
  • Health check listo para Zabbix en /api/v1/system/health
Ataques activos en la última hora
# clave de ejemplo: cree la suya en Configurações → Chaves de API (Configuración → Claves de API)
export EW=https://edgewarden.example.net
export FSK=fsk_a1b2c3d4e5f60718_SU_SECRETO

curl -s -H "Authorization: Bearer $FSK" \
  "$EW/api/v1/attacks?status=active&hours=1"

{
  "data": [{
    "target_ip": "203.0.113.9",
    "attack_type": "udp_flood",
    "severity": "high",
    "status": "active",
    "bytes_per_sec": 3750000000,
    "source_count": 18422,
    "zone_group": "AS65000-CLIENTES",
    "zone_cidr": "203.0.113.0/24"
  }],
  "pagination": { "page": 1, "total": 1 }
}

La respuesta de arriba está abreviada. Las mitigaciones solicitadas por la API entran como pending y el core las aplica en el ciclo siguiente, en unos 10 s.

La alerta llega sin que nadie pregunte

Cada Managed Object puede tener sus propios canales. Use la API para enriquecer el evento, no para enterarse del ataque.

  • Syslog y SIEMEventos en CEF, JSON o RFC 5424, por UDP o TCP.
  • SNMP Trap v2cPara Zabbix, PRTG, LibreNMS y SolarWinds, con una codificación que aguanta ráfagas.
  • TelegramObjetivo, vector y acción tomada, directo al grupo del NOC.
  • CorreoPor su propio SMTP, con informes programados y boletines del Analista de Ataques.
  • WebhookEvento attack_detected en JSON para su sistema.
  • Slack y TeamsMediante el webhook de entrada del canal.
licencia y seguridad

Su red no se detiene porque se cayó un servidor de licencias

Licenciamiento

  • Licencia firmada con Ed25519 y verificada sin conexión
  • Heartbeat cada 24 h y 30 días de gracia sin contacto con el servidor
  • Identificación de hardware que resiste bond, LACP y VLAN
  • El binario es el mismo en todos los planes; la licencia habilita las funciones y la cuota de routers y de nodos de limpieza
Último heartbeat confirmadoPeríodo de gracia
día 0día 15día 30

El propio servidor

  • Los servicios corren como www-data, sin sudo, solo con las capabilities necesarias: CAP_NET_RAWCAP_NET_BIND_SERVICECAP_BPFCAP_NET_ADMIN
  • Credenciales de router cifradas con AES-256-GCM; el SSH hacia el borde está hecho en Rust puro
  • Secreto de sesión único generado en cada instalación
  • Firewall del propio servidor en nftables, editable desde la interfaz
  • Actualización verificada con sha256sum, que preserva configuración y logs, con rollback
hardware

Dimensionamiento recomendado

Elija el tier según el volumen de flows de su red. La guía de instalación trae los comandos de cada etapa, del sysctl al HTTPS.

Requisitos de hardware por tier
Recurso SmallISP regional Medium recomendadoISP / DC mediano EnterpriseTier-1 / DC grande
VolumenHasta 20K flows/s, redes de hasta ~5 GbpsHasta 50K flows/s, redes de hasta ~20 Gbps100K+ flows/s, redes de 40 Gbps+
CPU8 núcleos (Xeon / EPYC)16 núcleos (Xeon Scalable / EPYC)32+ núcleos (EPYC / Xeon Platinum)
RAM32 GB DDR464 GB DDR4 ECC128+ GB DDR4/DDR5 ECC
Disco500 GB NVMe SSD2 TB NVMe SSD4+ TB NVMe (RAID 10)
Red1 Gbps10 Gbps25 / 40 / 100 Gbps
SistemaDebian 13+ (Trixie)Debian 13+ (Trixie)Debian 13+ (Trixie)
  • eBPF/XDP: Debian 13 ya trae kernel 6.x; use una NIC con XDP nativo (se recomiendan Mellanox o Intel).
  • ClickHouse: a partir del tier Medium, sepárelo en un servidor dedicado.
  • Retención: dimensione el disco según el período de retención deseado (compresión de cerca de 10:1).
  • Alta disponibilidad: en Enterprise, se recomienda un clúster de 2 o más nodos.

Arquitectura revisada. ¿La probamos en su red?

Le mostramos EdgeWarden funcionando con los flows de sus routers, y usted recibe una licencia demo con todas las funciones Enterprise por 7 días. La demostración y el soporte son en portugués.