Introducción
Si bien es cierto que para levantar una sesión BGP es imprescindible definir la dirección IP y ASN remotos del Peer BGP con el cual queremos levantar la sesión, sería un gran error suponer que con esto basta y podemos estar tranquilos. El no configurar correctamente los filtros para una sesión BGP involucra un gran riesgo de seguridad para nosotros y para otros, por lo que es crucial tomarse el tiempo de hacer e implementar al menos los filtros básicos.
Además, sin el uso de filtros BGP no podremos realizar ingeniería de tráfico, que es una de las principales ventajas de este protocolo, y nos permite optimizar el tráfico, reducir costos y mejorar la experiencia de los clientes. Por esto, es muy importante saber cómo usar los filtros BGP para darnos mayor seguridad y control.
Los filtros BGP aplican para direcciones IPv4 y direcciones IPv6.
En este artículo nos vamos a enfocar en las sesiones BGP hacia nuestros proveedor(es) de IP transit y hacia un IX (Internet Exchange) como es el Perú IX (PIT Peru sac).
En el mundo de los filtros BGP hay dos grandes grupos: los filtros IN (import) y los filtros OUT (export). El primero, los filtros IN (import) se aplican sobre los prefijos/rutas que aprendemos desde un Peer BGP, es decir, influencian el tráfico de subida desde nuestro router. Aunque esto pueda parecer contra-intuitivo la primera vista, no lo es cuando consideramos los flujos de los datos. Los filtros IN van a afectar nuestro tráfico de SUBIDA hacia Internet. Por otro lado, los filtros OUT (export) se aplican sobre los prefijos que anunciamos a un Peer BGP, es decir, influencian el tráfico de bajada a nuestro router.
Es importante mencionar que el orden o posición de los filtros es MUY importante, por lo que deberemos fijarnos cuales van primero y cuales después, es decir, análogo a como sucede en los filtros de firewall.
Filtros IN (import)
En relación a los filtros IN (import) los podemos dividir en dos subgrupos: filtros IN de seguridad y filtros IN de ingeniería de tráfico.
Los filtros IN de seguridad evitan que nuestro router agregue a la tabla de ruta ciertos prefijos que NO debemos recibir, como por ejemplo: a) Prefijos y ASNs Bogons y Martians, b) nuestros propios prefijos IP, y en algunos casos filtrar la ruta por defecto si es que usamos un esquema DFZ.
En el caso de los Bogons y Martians (que incluyen segmentos privados) es importante filtrarlos ya que éstos pueden afectar la seguridad de nuestra red y puede causar que ciertos servicios internos (con direcciones IP privadas) no funcionen correctamente si es que el Peer llegase a anunciarnos estos prefijos privados por la sesión BGP.
Por otro lado debemos filtrar nuestros propios prefijos IP, esto es especialmente importante si tenemos múltiples proveedores o múltiples Routers de borde, para así evitar que nuestro tráfico interno se vaya por redes de terceros en vez de viajar por nuestros propios enlaces.
En relación a los filtros IN de ingeniería de tráfico podemos filtrar, darle mayor o menor prioridad, determinados prefijos y/o prefijos originados en un ASN en específico para así optimizar nuestra rutas o en caso de problemas de rendimiento a un destino a través de un proveedor en particular evitar que nuestro tráfico de subida a ese destino salga vía ese proveedor. Estos filtros de ingeniería de tráfico usualmente se combinan con modificación del local preference y/o comunidades BGP.
Un ejemplo bastante común es asignarle un mayor local preference a los prefijos aprendidos por un Internet Exchange y un menor local preference a los prefijos aprendidos por los Proveedores de IP transit, para así asegurarnos que la mayor cantidad de tráfico de subida vaya por el enlace al Internet Exchange en vez de vía IP transit.
Los valores dependen de cada organización, pero algo bastante común es aplicar los siguientes local preference por tipo de sesión:
Tipo Peer BGP | Local Preference |
---|---|
Interno (si aplica iBGP) | 500 |
Internet Exchange (ej: Perú IX (PIT Peru sac)) | 300 |
Proveedor IP transit preferido | 200 |
Proveedor IP transit respaldo | 100 |
Filtros OUT (export)
En relación a los filtros OUT (export) también los podemos dividir en dos subgrupos: filtros OUT de seguridad y filtros OUT de ingeniería de tráfico.
Los filtros OUT de seguridad evitan que nuestro router anuncie a un Peer prefijos que NO debemos anunciarle, como por ejemplo en los casos de un route leaks o “hijacking accidental”. Como regla general, sólo debemos anunciar a otros peers los prefijos que nos pertenecen y/o tenemos la autorización para darles tránsito, y NADA más, es decir, discard todo el resto.
En relación a los filtros OUT de ingeniería de tráfico los podemos usar por ejemplo para enviar prefijos más específicos a un peer para que tenga preferencia en el tráfico de bajada vs otros, para prefijos con prepending mayor a un peer de menor preferencia, aplicar comunidad BGP a un prefijo para realizar blackholing o ingeniería de tráfico más avanzada)
Un ejemplo típico de ingeniería de tráfico para conseguir que la mayor parte del tráfico sea servido desde el Perú IX en vez del proveedor de IP tránsito es el anuncio múltiple con desagragecación de rutas, en este caso consiste en anunciarle un prefijo /22 como 4 prefijos /24 al Internet Exchange, anunciar ese mismo /22 como 2 prefijos /23 al Proveedor de IP Tránsito preferido y como 1 prefijo /22 al Proveedor de IP Tránsito de respaldo. Con esto se consigue que la mayor cantidad de tráfico pueda ser servido desde el Perú IX, que el resto se vaya por el proveedor de IP transit preferido y dejar el failover activo por el proveedor de IP transit de respaldo.
Aplicación de los filtros
Lo mencionado en este artículo sirve para cualquier marca y modelo de Router que tenga una implementación de BGP estándar. Si quieres ver cómo se aplica en la práctica a tu router, hemos creado algunas guías para equipos que más usan nuestros participantes, incluyendo: Mikrotik , Huawei y para Cisco.
Algunos artículos recomendados que les pueden servir:
https://archive.nanog.org/sites/default/files/Snijders_Everyday_Practical_Bgp.pdf