← Volver al blog

BGP en MikroTik: filtrar prefijos sin gastar memoria (input.filter-nlri)

23 de septiembre de 2026

BGP en MikroTik: filtrar prefijos sin gastar memoria (input.filter-nlri)

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

FiltroEfecto
input.filterRechaza, pero igual gasta memoria (queda como "filtered")
input.filter-nlriDescarta prefijos antes de guardar → ahorra RAM
input.accept-nlriAcepta solo una lista de prefijos; el resto ni se parsea
input.filter-communitiesDescarta 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.

Conversemos