[Link].
com
Operaciones de un ISP–Preferencia
de rutas utilizando BGP para IPv4 en
RouterOS
P R E S E N T E D BY:
ANDRES OCAMPO,
SR. NETWORK ENGINEER
Perfil: Sobre Andrés Ocampo
Background:
• 5+ años en Networking / ISP / WISP
• Diseñado/Creado redes en todo América
• Certificado MikroTik y Cisco
Trayectoria:
Puntonet (Operador de NOC / Activaciones / Soporte VIP )
Telefónica Ec (Ing. Sr. Soporte Servicio de Datos)
Fibramax (Supervisor General de Telecomunicaciones)
Certificaciones:
Cisco (CCNA R&S, CCNA Security, CCNP R&S)
Mikrotik (MTCNA, MTCTCE)
TEC Monterrey (Maestría en Administración de TI)
Perfil: Sobre IP ArchiTechs
Expertos en Networking
Whitebox | ISP | Data Center | Enterprise
ü Consultoría Global
ü Adminstración de Redes
ü Monitoreo Locations in: US | Canada | South America
ü Test de Carga Call us at: +1 855-645-7684
E-mail: consulting@[Link]
ü Desarrollo Web: [Link]
Operaciones: BGP & Prefix-List
Meta de esta presentación: Cuando esta
presentación acabe, habremos aclarado algunos
conceptos clave:
• Comprender el funcionamiento de los atributos
de BGP y como un cambio de ellos va a forzar el
comportamiento del tráfico
• Comprender cual es la lógica detrás de las
configuraciones de filtros para BGP
• Como configurar estos atributos para modificar
la preferencia de descarga/carga de tráfico.
Operaciones: Laboratorio para la configuración de BGP
Operaciones: Internet, versión básica
Sección 1:
Teoría básica detrás de
Internet
Operaciones: Clasificación de Proveedores
Operaciones: Clasificación de Proveedores
• Clasificación de proveedores:
• Tier 1:
• Red que no tiene tránsito con alguna otra red para
alcanzar un destino, solo peering con otros Tier1
• Backbone global
• Tier 2:
• Red con conexiones de tránsito, clients y algunos peers
• Compra al Tier1 acceso al resto de redes
• Tier 3:
• Red Stub -> porción final sin clientes que hagan tránsito o
peering
Operaciones: BGP Principios básicos
• Como maneja BGP la preferencia de rutas
• Prefijo más específico
• Atributos
• Weight ( > mejor, no transitivo)
• Local Preference ( > mejor, transitivo)
• As-Path Prepend ( < mejor )
• MED (< mejor, no transitivo)
• Comunidades
Operaciones: Uso de atributos para tráfico de descarga
out-filter
download
• As-Path Prepends
• Multi-Exit Discriminator
Operaciones: Uso de atributos para tráfico de carga
upload
In-filter
• Weight
• Local-Preference
Operaciones: BGP, elección de rutas y atributos
Sección 2:
BGP, elección de rutas y
atributos
Operaciones: BGP Principios básicos, atributos
[Link]
• Local-Preference:
• Valor por defecto: 100
• Se prefieren los caminos con mayor local-preference
• Atributo bien conocido
• Sirve para influenciar tráfico de subida.
Operaciones: BGP Principios básicos, atributos
[Link]
• As-Path
• Secuencia de AS existentes para llegar a un destino
• Sirve para influenciar tráfico de descarga.
• Sirve para evitar lazos de enrutamiento
Operaciones: BGP Principios básicos, atributos
[Link]
• Multi-Exit Discriminator (MED)
• Sirve para anunciar a un AS remoto como escoger el camino
hacia nuestro AS
• Funciona únicamente hacia peers eBGP
• El menor MED es preferido
Operaciones: BGP Principios básicos
[Link]
• Comunidades:
• Etiquetas marcadas asignadas a prefijos
• Sirve para setear local-preference u otros atributos
• Representados por dos formatos enteros de 16bits:
• Formato-> (localASN):xxxx
• Opcional y atributo transitivo
Operaciones: BGP Principios básicos
[Link]
• Como elige BGP una ruta:
1. Validar el path -> si no cumple se descarta el
prefijo
• Next-Hop es alcanzable
• eBGP -> generalmente next-hop es la wan
del otro peer
• iBGP -> puede ser una loopback y manejaría
enrutamiento recursivo
• AS-Path no contiene el mismo AS
• Prevención de lazos de enrutamiento
Operaciones: BGP Principios básicos
[Link]
• Como elige BGP una ruta:
2. Weight -> Elije el valor más alto
3. Local-Preference -> Elije el valor más alto
4. As-Path -> Escoge el camino más corto
6. Origin -> IGP < EGP < INCOMPLETE
7. MED -> Se prefiere el de menor valor
8. eBGP mejor que iBGP
9. Router ID -> menor es mejor
10. Cluster List -> camino más corto (si aplica)
11. Peer IP -> menor es mejor
Operaciones: Modificación de atributos
Sección 3:
Route-Filters
Operaciones: Route-filters
• Para que sirven las route-filters:
• Mezcla entre route-map + prefix-list (idioma Cisco)
• Generar filtrado de prefijos
• Utilizan algebra booleana -> optimizar reglas
• Setear atributos de BGP
• Setear prioridades, distancias, etiquetas
Operaciones: Route-filters
• Como se hace match en la optimización de reglas
• Prefix:
• Subred asignada: [Link]/22
• Prefijos posibles:
• [Link]/24
• [Link]/24
• [Link]/24
• [Link]/24
• [Link]/23
• [Link]/23
• [Link]/22
Operaciones: Route-filters
• Versión más sencilla de aplicar de una sola regla:
• Prefix:
• Subred asignada: [Link]/22
• Prefix-length:
• 22-24
• Por defecto -> acepta todo (a diferencia de Cisco)
• Código en RouterOS:
/routing-filter add chain=xxxx prefix=[Link]/22
prefix-length=22-24 action=accept
Operaciones: Route-filters / Expresiones regulares
[Link]
• Expresiones regulares:
• Se usan para generar filtrado de prefijos a nivel de ASN
• Similares a las expresiones regulares de Unix:
Operaciones: Route-filters / Expresiones regulares
[Link]
• Ejemplos simples:
Operaciones: Route-filters / Expresiones regulares
[Link]
• Ejemplos complejos:
Operaciones: OSPF troubleshooting
Sección 4:
Aplicar Route-Filtering en
RouterOS
Operaciones: BGP Route Filtering
Escenario 1: Forzar
Weights
Operaciones: BGP route-filtering
BGP Weights R1 a R2
Operaciones: BGP Route Filters config / status
BGP Weights R1 a R2
R2
/routing filter add chain=bgp-in
action=accept prefix=[Link]/0 set-bgp-
weight=1000
[admin@MikroTik-R2] > routing filter
print where chain=bgp-in
Flags: X – disabled
0 chain=bgp-in prefix=[Link]/0
invert-match=no action=accept set-bgp-
weight=1000 set-bgp-prepend-path=""
Operaciones: BGP Route Filtering / routing table
BGP Weights R1 a R2
R2
[admin@Mikrotik-R2] > ip route print detail where dst-
address=[Link]/0
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 ADb dst-address=[Link]/0 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-weight=1000 bgp-
local-pref=100 bgp-origin=igp bgp-as-path="174”
1 Db dst-address=[Link]/0 gateway=[Link] gateway-
status=recursive via [Link] ether2 distance=200
scope=40 target-scope=30 bgp-local-pref=1000 bgp-
origin=igp received from=RR01
Operaciones: Elección de Tráfico upload R3
Operaciones: BGP Route Filtering
Escenario 2: Forzar
Local-Preference
Operaciones: BGP route-filtering
BGP Local Preference R3 a R5
Operaciones: BGP Route Filters config / status
BGP Local Preference R3 a R5
R3
/routing filter add chain=bgp-in
action=accept prefix=[Link]/0 set-bgp-
local-pref=1000
[admin@MikroTik-R3] > routing filter
print where chain=bgp-in
Flags: X – disabled
0 chain=bgp-in prefix=[Link]/0
invert-match=no action=accept set-bgp-
local-pref=1000 set-bgp-prepend-path=""
Operaciones: BGP Route Filtering / routing table
BGP Weights R1 a R3
R3
[admin@Mikrotik-R3] > ip route print detail where dst-
address=[Link]/0
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 ADb dst-address=[Link]/0 gateway=[Link]
gateway-status=[Link] reachable via ether2
distance=20 scope=40 target-scope=10 bgp-local-pref=1000 bgp-
origin=igp bgp-as-path="174”
1 Db dst-address=[Link]/0 gateway=[Link] gateway-
status=recursive via [Link] ether1 distance=200
scope=40 target-scope=30 bgp-local-pref=100 bgp-origin=igp
received from=RR01
Operaciones: Elección de Tráfico upload R3
Operaciones: BGP Route Filtering
Escenario 3:
Modificar el AS-
Path
Operaciones: BGP route-filtering
BGP As-Path Prepends R1, R2, R3, R5
Operaciones: BGP Route Filters config / status sin Prepends
BGP As-Path Prepends R1
R1
[admin@Mikrotik-R1] > ip route print detail where dst-
address=[Link]/24
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 ADb dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”2000”
1 Db dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether2
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”1708 2000”
Operaciones: BGP Route Filters config / status sin Prepends
BGP As-Path Prepends R5
R5
[admin@Mikrotik-R5] > ip route print detail where dst-
address=[Link]/24
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 ADb dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”2000”
1 Db dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether4
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”174 2000”
Operaciones: Elección de Tráfico ( Tier1 Remoto) sin prepends
Operaciones: BGP Route Filters config / status
BGP As-Path Prepends R2
R2
/routing filter add chain=bgp-out
action=accept prefix=[Link]/24 set-
bgp-prepend=2
[admin@MikroTik-R2] > routing filter
print where chain=bgp-out
Flags: X – disabled
0 chain=bgp-out prefix=[Link]/24
invert-match=no action=accept local-
pref=100 set-bgp-prepend-path="” set-
bgp-prepend=2
Operaciones: BGP Route Filters config / status con Prepends
BGP As-Path Prepends R1
R1
[admin@Mikrotik-R1] > ip route print detail where dst-
address=[Link]/24
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 Db dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”2000 2000 2000”
1 ADb dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether2
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”1708 2000”
Operaciones: BGP Route Filters config / status con Prepends
BGP As-Path Prepends R5
R5
[admin@Mikrotik-R5] > ip route print detail where dst-
address=[Link]/24
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 Db dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether4
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”174 2000 2000 2000”
1 ADb dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”2000”
Operaciones: Elección de Tráfico ( Tier1 Remoto) con prepends
Operaciones: BGP Route Filtering
Escenario 4:
Modificar la Local-
Preference con
Comunidades
Operaciones: BGP route-filtering
BGP Communities R1, R5
Operaciones: Elección de Tráfico ( Tier1 Remoto) con prepends
Operaciones: BGP Route Filters config / status con Prepends
BGP As-Path Prepends R1
R1
[admin@Mikrotik-R1] > ip route print detail where dst-
address=[Link]/24
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 Db dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”2000 2000 2000”
1 ADb dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether2
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”1708 2000”
Operaciones: BGP Route Filters config / status con Prepends
BGP As-Path Prepends R5
R5
[admin@Mikrotik-R5] > ip route print detail where dst-
address=[Link]/24
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 Db dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether4
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”174 2000 2000 2000”
1 ADb dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”2000”
Operaciones: BGP Route Filters config / status
BGP Communities MATCH R1
R1
/routing filter add chain=bgp-in
action=accept bgp-communities=174:1000
set-bgp-local-pref=1000
[admin@MikroTik-R1] > routing filter
print where chain=bgp-in
Flags: X – disabled
0 chain=bgp-in invert-match=no
action=accept set-bgp-prepend-path="”
bgp-communities=174:1000 set-bgp-local-
pref=1000
Operaciones: BGP Route Filters config / status
BGP Communities SET R2
R2
/routing filter add chain=bgp-out
action=accept prefix=[Link]/24 set-
bgp-communities=174:1000 set-bgp-
prepend=2
[admin@MikroTik-R2] > routing filter
print where chain=bgp-out
Flags: X – disabled
0 chain=bgp-out invert-match=no
action=accept set-bgp-prepend-path="”
set-bgp-communities=174:1000 set-bgp-
prepend=2
Operaciones: BGP Route Filters config / status con Comunidades
BGP As-Path Prepends R1
R1
[admin@Mikrotik-R1] > ip route print detail where dst-
address=[Link]/24
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 ADb dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-local-pref=1000
bgp-origin=igp bgp-as-path=”2000 2000 2000” bgp-
communities=174:1000
1 Db dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether2
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”1708 2000”
Operaciones: BGP Route Filters config / status con Comunidades
BGP As-Path Prepends R5
R5
[admin@Mikrotik-R5] > ip route print detail where dst-
address=[Link]/24
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m -
mme,
B - blackhole, U - unreachable, P - prohibit
0 Db dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether4
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”174 2000 2000 2000”
1 ADb dst-address=[Link]/24 gateway=[Link]
gateway-status=[Link] reachable via ether1
distance=20 scope=40 target-scope=10 bgp-local-pref=100 bgp-
origin=igp bgp-as-path=”2000”
Operaciones: Elección de Tráfico ( Tier1 Remoto) con comunidades
Operaciones: BGP troubleshooting / enrutamiento
Causas comunes de problemas con BGP
• Reglas de filtrado mal hechas
• Comunidades desconocidas
• Proveedores utilizan otro tipo de preferencia
•Validar el tema de enrutamiento asimétrico para conexiones hacia IXP / CDN
Design: Questions?
Preguntas??