Uno de los beneficios largamente esperados de RouterOS versión 7 es una nueva pila de protocolos de enrutamiento que habilita nuevas capacidades y soluciona las limitaciones en RouterOSv6 causadas por el uso de un kernel de Linux muy antiguo.
La nueva pila de enrutamiento en v7 ha creado un gran revuelo en la comunidad de MikroTik, ya que las pruebas de laboratorio han demostrado que es significativamente más eficiente en el procesamiento de grandes cantidades de rutas BGP.
La capacidad de usar la nueva generación de enrutadores CCR de MikroTik con ARM64 para procesar rápidamente rutas BGP es una publicación de blog en sí misma y lo abordaremos en el futuro; sin embargo, la información a continuación proporciona una mirada rápida a la comparación de rendimiento entre ROS v6 y v7.
La nueva pila de enrutamiento también allana el camino para agregar una serie de funciones que se han necesitado durante mucho tiempo, como RPKI y el soporte de una gran comunidad.
Mediante un laboratorio basado en EVE-NG, analizaremos los cambios de configuración e iBGP utilizando IPv6 AFI con OSPFv3 como IGP para la accesibilidad de loopback/next hop. Antes de 7.1beta2, esto no ha funcionado durante años debido a las limitaciones de recursión de enrutamiento.
Estado del protocolo de enrutamiento v7
Para obtener la información más actualizada sobre las funciones y capacidades en v7, MikroTik creó una página que rastrea el estado de las funciones en las diferentes versiones beta.
https://help.mikrotik.com/docs/display/ROS/v7+Enrutamiento+Protocolo+Estado
Diseño de laboratorio
Versión de ROS: 7.1beta2 (7.1beta3 se lanzó justo antes de publicar esto; en algún momento actualizaré con pruebas en beta3).
Modelado de red: EVE-NG Pro.
OSPFv3
Uno de los mayores cambios en OSPF tanto para la versión 2 (IPv4) como para la versión 3 (IPv6) es la consolidación de los menús en una única ubicación para la configuración de OSPF.
En ROSv7, toda la configuración se realiza en /routing/ospf/ y se pueden crear instancias para v2 o v3.
Cambio de ROSv6: Las opciones del menú OSPF han cambiado en ROSv7, esto se debe en parte a la combinación de OPSFv2 y OSPFv3 en un solo marco de configuración.
Opciones de comando OSPF en ROSv6 para OSPFv2 y OSPFv3
Opciones de comando OSPF en ROSv7 para ambas versiones de OSPF
Cambio de ROSv6: hay una nueva marca en la tabla de enrutamiento de IPv6 para ECMP y ninguna marca para RIP.
Al mirar la nueva salida para la tabla de enrutamiento, se destacan algunas cosas. ECMP tiene una nueva bandera que usa el símbolo "+" para indicar dos o más rutas iguales.
ECMP en IPv6 es una limitación de características que tenía RouterOSv6 y esto facilitará la implementación de redes IPv6 con MikroTik.
Falta RIP o Protocolo de Internet de enrutamiento en los indicadores de enrutamiento. No está claro en este momento si RIPv2 o RIP-NG llegarán a RouterOSv7, ya que ya no se usa con mucha frecuencia en las redes de producción.
Corrección de problemas con el enrutamiento recursivo en IPv6
Ser capaz de usar enrutamiento recursivo para publicidad de loopbacks y usar iBGP con IPv6 ha sido una limitación de ROSv6 durante mucho tiempo debido al uso del kernel de Linux más antiguo.
Ahora que ROSv7 agregó el soporte inicial para OSPF y BGP, podemos probar la recursión de enrutamiento IPv6.
Aquí hay una prueba de PE-1 a PE-2 (2001:db8:101::12) usando iBGP.
Cambio de ROSv6: uso de filtros en OSPF.
Uno de los primeros desafíos importantes que tuve que resolver cuando trabajaba con ROSv7 fue averiguar por qué todas las rutas disponibles se publicitaban en OSPF.
Al principio parecía un error, pero cuando investigué más a fondo, me encontré con este fragmento en los nuevos documentos de ayuda de MikroTik.
Ejemplos de enrutamiento básico de ROSv7 – RouterOS – Documentación de MikroTik
Resulta que el comportamiento predeterminado es anunciar todas las rutas en ausencia de un filtro de salida.
El siguiente desafío fue descubrir la nueva sintaxis de filtrado.
/regla de filtro de enrutamiento
add chain=OSPF-permit-only-configured
/regla de selección de filtro de enrutamiento
add chain=OSPF-permit-only-configured_select do-where=\
OSPF-permit-only-configured
Para usar una regla en ROSv7, se debe usar el comando "/routing filter select-rule" y hacer referencia a la regla de filtro o no se tomará ninguna acción.
En el ejemplo anterior, solo se anunciarán las interfaces que se configuraron para OSPF.
Configuración OSPF
Aquí hay un resumen de la configuración OSPF del enrutador PE-1
/enrutamiento instancia ospf
add name=IPv6 out-filter=OSPF-permit-only-configured_select router-id=\
100.127.0.11 version=3
/enrutamiento área ospf
add area-id=0.0.0.0 instance=IPv6 name=area-0
/regla de filtro de enrutamiento
add chain=OSPF-permit-only-configured
/regla de selección de filtro de enrutamiento
add chain=OSPF-permit-only-configured_select do-where=\
OSPF-permit-only-configured
/enrutamiento interfaz ospf
add area=area-0 network=ether1 network-type=point-to-point
add area=area-0 network=ether2 network-type=point-to-point
add area=area-0 network=lo-ospf network-type=broadcast
BGP
Al igual que con OSPF, BGP vio un cambio en la estructura del menú.
En ROSv7, la configuración de BGP se ha renovado y está mucho más cerca del estilo de configuración que usa Cisco/Juniper con elementos de configuración que se pueden anidar y reutilizar.
Teniendo en cuenta todo el trabajo que se está realizando para mejorar el tiempo de convergencia de la tabla completa en ROSv7, este cambio es un paso en la dirección correcta para permitir que MikroTik compita con proveedores de redes más grandes en el área de interconexión y tránsito.
Cambio de ROSv6: las opciones del menú BGP han cambiado en ROSv7 para adaptarse a nuevas funciones como Plantillas y RPKI.
Opciones de comando BGP en ROSv6
Opciones de comando BGP en ROSv7
Nueva función: roles de BGP
Esta es una nueva capacidad en BGP a partir de julio de 2020 y MikroTik fue uno de los primeros en implementarla.
draft-ietf-idr-bgp-open-policy-13 – Prevención de fugas de ruta usando roles en mensajes de actualización y apertura
El objetivo principal es clasificar los emparejamientos en diferentes roles que eviten fugas de ruta inadvertidas mediante la adopción de algunas políticas de filtrado básicas como un componente de la asignación de roles.
Los emparejamientos aceptables son:
Aquí hay un ejemplo de tipos de roles en ROSv7.
Esta es una descripción general de cómo los roles se ocupan de los anuncios de ruta y el filtrado.
Nueva función: Plantillas BGP.
BGP Las plantillas BGP permiten que se reutilicen configuraciones específicas para una conexión entre pares en la configuración de la conexión.
Esto ahorra bastante tiempo al implementar una gran cantidad de interconexiones iBGP, interconexiones de tránsito, interconexiones IX, etc.
Opciones disponibles para configurar en plantillas
Aquí hay una plantilla BGP configurada en el laboratorio para esta publicación. La plantilla está referenciada por la configuración de conexión (también conocida como configuración de pares).
/plantilla bgp de enrutamiento
add address-families=ipv6 as=8675309 instance=bgp name=ASN-8675309
/enrutamiento conexión bgp
add local.address=2001:db8:127::11 .role=ibgp-rr-client remote.address=\
2001:db8:127::1 .as=8675309 template=ASN-8675309
Nueva función: iBGP ECMP para IPv6.
ECMP ha estado funcionando en ROSv6 durante mucho tiempo, pero debido a las limitaciones del kernel, no ha estado disponible en IPv6 debido a los problemas en la recursividad de enrutamiento y la puesta en funcionamiento de iBGP.
Ahora que la recursión de enrutamiento está arreglada para IPv6, ECMP es posible.
Rutas IPV6 compatibles con ECMP en BGP indicadas con el nuevo símbolo "+" en la tabla de enrutamiento para ECMP.
Aquí hay un ejemplo de una ruta de seguimiento al mismo prefijo que usa dos rutas diferentes con ECMP.
Configuración de BGP
Aquí hay una descripción general de la configuración de BGP para PE-1.
/routing instance
add id=100.127.0.11 name=bgp
/routing bgp template
add address-families=ipv6 as=8675309 instance=bgp name=ASN-8675309
/routing bgp connection
add local.address=2001:db8:127::11 .role=ibgp-rr-client remote.address=\
2001:db8:127::1 .as=8675309 template=ASN-8675309
Configuraciones de laboratorio
Todas las configuraciones de laboratorio para ROSv7 se enumeran a continuación (probadas en 7.1beta2).
PE-1
/interface bridge
add name=lo-bgp
add name=lo-ospf
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip vrf
add list=all name=main
/routing instance
add id=100.127.0.11 name=bgp
/routing bgp template
add address-families=ipv6 as=8675309 instance=bgp name=ASN-8675309
/routing ospf instance
add name=IPv6 out-filter=OSPF-permit-only-configured_select router-id=\
100.127.0.11 version=3
/routing ospf area
add area-id=0.0.0.0 instance=IPv6 name=area-0
/ip dhcp-client
add disabled=no interface=ether1
/ipv6 address
add address=2001:db8:126:1::2/126 advertise=no interface=ether1
add address=2001:db8:127::11/128 advertise=no interface=lo-ospf
add address=2001:db8:101::11/128 advertise=no interface=lo-bgp
add address=2001:db8:126:3::2/126 advertise=no interface=ether2
add address=2001:db8:a1a::1 interface=ether4
/routing bgp connection
add local.address=2001:db8:127::11 .role=ibgp-rr-client remote.address=\
2001:db8:127::1 .as=8675309 template=ASN-8675309
/routing filter rule
add chain=OSPF-permit-only-configured
/routing filter select-rule
add chain=OSPF-permit-only-configured_select do-where=\
OSPF-permit-only-configured
/routing ospf interface
add area=area-0 network=ether1 network-type=point-to-point
add area=area-0 network=ether2 network-type=point-to-point
add area=area-0 network=lo-ospf network-type=broadcast
/system identity
set name=PE-1
CORE-1
/interface bridge
add name=lo-bgp
add name=lo-ospf
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip vrf
add list=all name=main
/routing instance
add id=100.127.0.1 name=bgp
/routing bgp template
add address-families=ipv6 as=8675309 instance=bgp name=ASN-8675309
/routing ospf instance
add name=IPv6 router-id=100.127.0.1 version=3
/routing ospf area
add area-id=0.0.0.0 instance=IPv6 name=area-0
/ip dhcp-client
add disabled=no interface=ether1
/ipv6 address
add address=2001:db8:126:1::1/126 advertise=no interface=ether1
add address=2001:db8:127::1/128 advertise=no interface=lo-ospf
add address=2001:db8:126:2::1/126 advertise=no interface=ether2
add address=2001:db8:126:3::1/126 advertise=no interface=ether3
add address=2001:db8:101::1/128 advertise=no interface=lo-bgp
add address=2001:db8:126:4::1/126 advertise=no interface=ether4
/routing bgp connection
add listen=yes local.address=2001:db8:127::1 .role=ibgp-rr remote.address=\
2001:db8:127::11 template=ASN-8675309
add listen=yes local.address=2001:db8:127::1 .role=ibgp-rr remote.address=\
2001:db8:127::12 template=ASN-8675309
/routing filter rule
add chain=OSPFv3-in match-prfx-value=dst<equal>2001:db8:101::/128
add chain=OSPFv3-in match-prfx-value=dst<equal>2001:db8:101::/128
/routing ospf interface
add area=area-0 network=ether1 network-type=point-to-point
add area=area-0 network=ether2 network-type=point-to-point
add area=area-0 network=ether3 network-type=point-to-point
add area=area-0 network=lo-ospf network-type=broadcast
add area=area-0 network=ether4 network-type=point-to-point
/system identity
set name=CORE-1
PE-2
/interface bridge
add name=lo-bgp
add name=lo-ospf
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip vrf
add list=all name=main
/routing instance
add id=100.127.0.12 name=bgp
/routing bgp template
add address-families=ipv6 as=8675309 instance=bgp name=ASN-8675309
/routing ospf instance
add name=IPv6 out-filter=OSPF-permit-only-configured_select router-id=\
100.127.0.12 version=3
/routing ospf area
add area-id=0.0.0.0 instance=IPv6 name=area-0
/ip dhcp-client
add disabled=no interface=ether1
/ipv6 address
add address=2001:db8:126:2::2/126 advertise=no interface=ether1
add address=2001:db8:127::12/128 advertise=no interface=lo-ospf
add address=2001:db8:101::12/128 advertise=no interface=lo-bgp
add address=2001:db8:a1b::1 interface=ether4
add address=2001:db8:126:4::2/126 advertise=no interface=ether2
/routing bgp connection
add local.address=2001:db8:127::12 .role=ibgp-rr-client remote.address=\
2001:db8:127::1 .as=8675309 template=ASN-8675309
/routing filter rule
add chain=OSPF-permit-only-configured
/routing filter select-rule
add chain=OSPF-permit-only-configured_select do-where=\
OSPF-permit-only-configured
/routing ospf interface
add area=area-0 network=ether1 network-type=point-to-point
add area=area-0 network=lo-ospf network-type=broadcast
add area=area-0 network=ether2 network-type=point-to-point
/system identity
set name=PE-2