BGP en MikroTik: filtrar prefijos sin gastar memoria (input.filter-nlri)
23 de septiembre de 2026
Un ISP que recibe la tabla completa de internet por BGP maneja cerca de un millón de rutas. Eso consume mucha memoria. Y acá hay una trampa que muchos no conocen: el filtro de entrada normal no ahorra memoria. RouterOS v7 tiene la solución correcta: filtrar los prefijos antes de guardarlos.
La trampa del filtro de entrada normal
Cuando usas input.filter (una cadena de routing filter) para rechazar prefijos, RouterOS igual los recibe, procesa y guarda en memoria; solo los marca como "not active, filtered". Es decir: rechazas la ruta, pero la RAM ya se gastó. En un router con la tabla completa, esto pesa.
La solución: filtrar antes de almacenar
RouterOS v7 ofrece filtros que actúan antes de que el prefijo se guarde en memoria, reduciendo mucho el uso de RAM:
input.filter-nlri: una cadena de filtro que descarta los NLRI (los prefijos IPv4/IPv6 entrantes) directamente antes de almacenarlos.input.accept-nlri: una address-list; forma rápida de aceptar solo ciertos prefijos, filtrando el resto antes incluso de parsearlos.input.filter-communities: filtra por comunidad BGP, también antes de guardar.
La diferencia es clave: estos no dejan rastro en la tabla (no aparecen como "filtered" gastando memoria); simplemente no entran.
# aceptar solo los prefijos de una address-list (el resto se descarta sin guardar)
/routing/bgp/connection/set [find name=upstream1] input.accept-nlri=prefijos-permitidos
# o filtrar por comunidad antes de almacenar
/routing/bgp/connection/set [find name=upstream1] input.filter-communities=comunidades-ok
Ojo: aplicar o cambiar estos filtros requiere reiniciar/refrescar la sesión BGP para que tome efecto. Planifícalo en una ventana.
Cuándo usar cada uno
| Filtro | Efecto |
|---|---|
input.filter | Rechaza, pero igual gasta memoria (queda como "filtered") |
input.filter-nlri | Descarta prefijos antes de guardar → ahorra RAM |
input.accept-nlri | Acepta solo una lista de prefijos; el resto ni se parsea |
input.filter-communities | Descarta por comunidad antes de guardar |
El caso típico de ISP
Si no necesitas la tabla completa (por ejemplo, tomas tabla parcial + ruta por defecto), input.filter-nlri o input.accept-nlri te dejan quedarte solo con lo que usas, y tu router respira. Es la diferencia entre un CCR cómodo y uno ahogado de memoria. Combínalo con RPKI, route reflectors y multipath para un BGP que escala de verdad.
En MikroTik Chile afinamos el BGP de ISP para que filtre eficiente y no muera de memoria —tabla parcial, filtrado por NLRI y comunidad, RPKI— aprovechando bien el hardware. Si tu router sufre con la tabla completa, optimicémoslo.