Mikrotik CRS326 - Rendimiento subóptimo en el acceso a Internet

Hola a todos,

Es la primera vez que publico, pero os he leído con atención para ir montando la infraestructura de comunicaciones de mi casa. Muchas gracias por adelantado a todos los que resolvéis dudas y opináis en este foro.

El motivo por el que abro este post es un rendimiento subóptimo en la conexión PPPoE con Vodafone utilizando un Mikrotik CRS326-24G-2S+ como router neutro. Actualmente consigo un máximo de 350 Mbps simétrico en la conexión a Internet. Durante estas pruebas de ancho de banda la CPU del router (cpu0) se pone al 100%. Haciendo pruebas con iperf3 entre dos equipos de la red local sí se superan los 900Mbps sin afectar a la CPU del router. Con el router del operador, las pruebas de ancho de banda con Internet rozan los 900Mbps.

Mi suposición es que el switch-router está al máximo de su capacidad de enrutado/filtrado, aunque según los datos de rendimiento de Mikrotik se deberían alcanzar casi los 800 Mbps (https://mikrotik.com/product/CRS326-24G-2SplusRM#fndtn-testresults).

No consigo identificar otros problemas de rendimiento. El MTU en la configuración PPPoE está por defecto y tras levantar el enlace se muestran valores de 1480 tanto para MTU como MRU. No tengo ninguna configuración sobre prioridades en la VLAN del operador, pero al ponerse el router al 100% de CPU entiendo que este no es el problema.

Las dudas son las siguientes:
- ¿Debería poder conseguir mayor rendimiento en el acceso a Internet con el CRS326?
- ¿Me rindo e incorporo un router a la infraestructura?
- En caso de incorporar un router estoy pensando en el hEX, ¿conseguiría superar los 900Mbps en el acceso a Internet? Según los datos de rendimiento de Mikrotik, el router debería ser capaz, pero tampoco estoy alcanzando los valores de pruebas de Mikrotik con el CRS326.
- ¿Alguna otra recomendación sobre el router a incorporar?

Incluyo a continuación la configuración, muchas gracias por adelantado.

Código:
/interface bridge
add comment=defconf name=bridge vlan-filtering=yes
add name=mgmt
add name=test
add name=vodafone
/interface ethernet
set [ find default-name=ether1 ] mac-address=XX:XX:XX:XX:XX:XX
set [ find default-name=ether14 ] disabled=yes
set [ find default-name=ether15 ] disabled=yes
set [ find default-name=ether16 ] disabled=yes
/interface vlan
add interface=ether1 name=VF vlan-id=24
add interface=bridge name=VLAN_IOT vlan-id=2
add interface=bridge name=VLAN_VPN vlan-id=10
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip pool
add name=dhcp_pool0 ranges=192.168.88.11-192.168.88.254
add name=dhcp_pool1 ranges=10.0.0.2-10.0.0.254
add name=dhcp_pool8 ranges=192.168.3.100-192.168.3.254
add name=dhcp_pool9 ranges=192.168.10.100-192.168.10.254
/ip dhcp-server
add address-pool=dhcp_pool0 disabled=no interface=bridge name=dhcp1
add address-pool=dhcp_pool1 disabled=no interface=mgmt name=dhcp2
add address-pool=dhcp_pool8 disabled=no interface=VLAN_IOT name=dhcp3
add address-pool=dhcp_pool9 disabled=no interface=VLAN_VPN name=dhcp4
/ppp profile
add change-tcp-mss=yes name=OVPN-client only-one=yes use-encryption=required \
    use-mpls=no
add change-tcp-mss=yes name=VF use-compression=no use-encryption=no use-mpls=\
    no use-upnp=no
/interface ovpn-client
add certificate=client cipher=aes256 connect-to=xxxx.xxxx.com \
    disabled=yes name=myvpn port=2294 profile=\
    OVPN-client user=vpnuser
/interface pppoe-client
add ac-name=XXXXX add-default-route=yes disabled=no interface=VF name=\
    pppoe-out1 profile=VF service-name=vodafone user=\
    XXXXXXXX@vodafone
/interface bridge port
add bridge=vodafone comment=defconf interface=ether1 pvid=24
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=ether3
add bridge=bridge comment=defconf interface=ether4
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge comment=defconf interface=ether6
add bridge=bridge comment=defconf interface=ether7
add bridge=bridge comment=defconf interface=ether8
add bridge=bridge comment=defconf interface=ether9
add bridge=bridge comment=defconf interface=ether10
add bridge=bridge comment=defconf interface=ether11
add bridge=bridge comment=defconf interface=ether12
add bridge=bridge comment=defconf interface=ether13
add bridge=bridge comment=defconf interface=ether14
add bridge=bridge comment=defconf interface=ether15
add bridge=bridge comment=defconf interface=ether16
add bridge=bridge comment=defconf interface=ether17
add bridge=mgmt comment=defconf interface=ether18
add bridge=bridge comment=defconf interface=ether19
add bridge=bridge comment=defconf interface=ether20
add bridge=bridge comment=defconf interface=ether21
add bridge=bridge comment=defconf interface=ether23
add bridge=bridge comment=defconf interface=sfp-sfpplus1
add bridge=bridge comment=defconf interface=sfp-sfpplus2
add bridge=bridge interface=ether24
add bridge=mgmt interface=ether22
/ip neighbor discovery-settings
set discover-interface-list=none
/interface bridge vlan
add bridge=bridge tagged=ether3,ether4,ether2,bridge,ether24 vlan-ids=2
add bridge=bridge tagged=bridge,ether3,ether4,ether2 vlan-ids=10
/interface detect-internet
set detect-interface-list=all
/ip address
add address=192.168.88.1/24 comment="Bridge principal" interface=bridge \
    network=192.168.88.0
add address=10.0.0.1/24 comment=\
    "Interfaz auxiliar de gesti\F3n en el puerto 22" interface=mgmt network=\
    10.0.0.0
add address=192.168.3.1/24 interface=VLAN_IOT network=192.168.3.0
add address=192.168.10.1/24 interface=VLAN_VPN network=192.168.10.0
/ip cloud
set ddns-enabled=yes
/ip dhcp-server lease
add address=192.168.88.253 client-id=1:XX:XX:XX:XX:XX:XX mac-address=\
(...)
/ip dhcp-server network
add address=10.0.0.0/24 gateway=10.0.0.1
add address=192.168.3.0/24 dns-server=192.168.3.1 gateway=192.168.3.1
add address=192.168.10.0/24 dns-server=192.168.10.1 gateway=192.168.10.1
add address=192.168.88.0/24 dns-server=192.168.88.1 gateway=192.168.88.1
/ip dns
set allow-remote-requests=yes servers=9.9.9.9,8.8.8.8
/ip dns static
add address=192.168.88.2 name=unifi.
/ip firewall address-list
add address=192.168.88.2-192.168.88.254 list=allowed_to_router
add address=0.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=172.16.0.0/12 comment=RFC6890 list=not_in_internet
add address=192.168.0.0/16 comment=RFC6890 list=not_in_internet
add address=10.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=169.254.0.0/16 comment=RFC6890 list=not_in_internet
add address=127.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=224.0.0.0/4 comment=Multicast list=not_in_internet
add address=198.18.0.0/15 comment=RFC6890 list=not_in_internet
add address=192.0.0.0/24 comment=RFC6890 list=not_in_internet
add address=192.0.2.0/24 comment=RFC6890 list=not_in_internet
add address=198.51.100.0/24 comment=RFC6890 list=not_in_internet
add address=203.0.113.0/24 comment=RFC6890 list=not_in_internet
add address=100.64.0.0/10 comment=RFC6890 list=not_in_internet
add address=240.0.0.0/4 comment=RFC6890 list=not_in_internet
add address=192.88.99.0/24 comment="6to4 relay Anycast [RFC 3068]" list=\
    not_in_internet
add address=10.0.0.2-10.0.0.254 list=allowed_to_router
/ip firewall filter
add action=fasttrack-connection chain=forward comment=FastTrack \
    connection-state=established,related
add action=accept chain=forward comment="Established, Related" \
    connection-state=established,related
add action=accept chain=input comment="default configuration" \
    connection-state=established,related
add action=accept chain=input src-address-list=allowed_to_router
add action=accept chain=input disabled=yes protocol=icmp
add action=accept chain=input dst-port=53 protocol=udp
add action=drop chain=input
add action=drop chain=forward comment="Drop invalid" connection-state=invalid \
    log=yes log-prefix=invalid
add action=drop chain=forward comment=\
    "Drop incoming packets that are not NATted" connection-nat-state=!dstnat \
    connection-state=new in-interface=vodafone log=yes log-prefix=!NAT
add action=drop chain=forward comment=\
    "Drop incoming from internet which is not public IP" in-interface=\
    vodafone log=yes log-prefix=!public src-address-list=not_in_internet
add action=drop chain=forward comment=\
    "Drop packets from LAN that do not have LAN IP" in-interface=bridge log=\
    yes log-prefix=LAN_!LAN src-address=!192.168.0.0/16
/ip firewall nat
add action=masquerade chain=srcnat disabled=yes out-interface=myvpn
add action=masquerade chain=srcnat out-interface=pppoe-out1
/ip route
add disabled=yes distance=1 gateway=myvpn routing-mark=via-n3tfl1x
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www disabled=yes
set api disabled=yes
/ip ssh
set strong-crypto=yes
/system clock
set time-zone-name=Europe/Madrid
/system identity
set name=XXXXXXXX@vodafone
/system ntp client
set enabled=yes primary-ntp=130.206.3.166 secondary-ntp=150.214.94.5
/system ntp server
set enabled=yes
/system routerboard settings
set boot-os=router-os
/system swos
set allow-from-ports="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,\
    p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31"
/tool bandwidth-server
set enabled=no
/tool graphing interface
add interface=ether1
/tool graphing queue
add
/tool graphing resource
add
/tool mac-server
set allowed-interface-list=none
/tool mac-server mac-winbox
set allowed-interface-list=none
/tool mac-server ping
set enabled=no
[CODE]
 
Prueba esto, antes de barajar la opción del router, a ver qué resultado te da: resetea el equipo y deja que cargue la configuración de fábrica (modo router). Sobre esa configuración crea únicamente el cliente PPPoE y la vlan. Edita el cliente PPPoE y le pones como MTU y MRU el valor 1492, y sobre ether1 (o el puerto que uses para conectarte a la ONT), clona la dirección MAC del equipo original de Vodafone; el router. Vuelve a realizar las pruebas y nos dices. Si necesitas, te doy un servidor de pruebas propio de mikrotik, y te olvidas de los speedtest y similares.

Por otro lado, danos un pantallazo de los puertos del bridge, a ver si en ese equipo trabajan o no con hardware offloading ya. Leyendo la wiki, no me queda muy claro cómo funciona el hardware offloading en ese equipo.

Si vemos que esto no te funciona, hablaríamos de meter un router.

Saludos!
 
Muchas gracias por tu respuesta, Pocoyo!

Sobre las pruebas de puesta a fábrica, intentaré hacerlas esta tarde/noche. Para medir el ancho de banda con Internet uso Speedtest, no es 100% fiable, pero para el punto en el que estoy creo que es suficiente. De todas formas, si puedes proporcionarme el servidor de pruebas de mikrotik que indicas, estupendo.

Sobre el hw offloading en los puertos del bridge; por ahora he probado dos configuraciones:
- Un bridge dedicado para la conexión ONT en el que solo incluyo el puerto ether1. En este caso el puerto ether1 no tiene hardware offloading, ya que en este equipo solo un bridge puede incluirlo.
- Un único bridge en el que está incluida la conexión con el ONT. La única diferencia con el anterior es que tengo que habilitar la VLAN de vodafone NEBA (24) en el bridge como tagged. En este caso el puerto ether1 sí tiene hardware offloading.

opcion1.jpg

opcion2.jpg


En cualquiera de los dos casos el resultado de las pruebas es el mismo, 350Mbps.

El problema es que en ningún caso se está realizando el hw offloading de capa 3 (L3 Hardware Offloading). De hecho, tengo la sospecha de que el equipo no lo soporta. En la lista de equipos CRS3XXX de Mikrotik con soporte para ello no se incluye el modelo en cuestión:


Aun así tengo la duda de si cambio a la versión RouterOS v7.1beta4 podría aparecer la configuración que necesito. Ahora mismo, en la versión 6.48 no existen, ni l3hw ni l3-hw-offloading. ¿Sabéis como de estable es la 7.1? Si alguno la estáis usando sin problema podría animarme a probarla.

Gracias de nuevo!
 
Lo soportarán a futuro, o eso es lo que he podido deducir de lo que pone en la wiki

No obstante, la confiugración buena es sacar ether1 del bridge y listo. Es decir, ether1 va por libre, conectado a la ONT, y a nivel bridge principal (a nivel LAN), te quedas con hardware offloading. Esa es la configuración por defecto de cualquier router mikrotik, tipo un hEX (RB750). Te lo preguntaba porque algunos equipos, como por ejemplo el nuevo RB750, el switch chip que llevan no es compatible con HW si, por ejemplo, usan R-STP como protocolo de spanning tree para control de bucles, cosa que viene activo por defecto. Pero veo que no es tu caso, esas "H"'s que salen en la primera columna indican que el bridge principal está trabajando con HW a nivel de LAN, que es lo que nos interesa. Así que recuerda, no apliques ninguna de las dos configuraciones que me has comentado, simplemente saca ether1 del bridge principal, y sobre esa creas la vlan, pppoe y demás parafernalia para convertirla en WAN.

Prueba así y me dices. Si ves que sigues igual, te paso el server de mikrotik para hacer las pruebas.

Saludos!
 
Hola de nuevo!

Siguiendo las indicaciones de Pocoyo he realizado la siguiente prueba:

1. Reset configuration
2. Aplicar la configuración mínima para acceder a Internet. Concretamente ejecuté los siguientes comandos:

Código:
# Crear un bridge específico para el puerto de conexión a Internet
interface bridge add name=vodafone
# Asignar el puerto 0 (ether1) al nuevo bridge
interface bridge port set numbers=0 bridge=vodafone
# Clonar la MAC del router del operador
interface ethernet set ether1 mac-address=XX:XX:XX:XX:XX:XX
# Crear la VLAN del operador asociado al puerto conectado al ONT
interface vlan add interface=ether1 name=VLAN_VF vlan-id=24
# Configurar el PPPoE
interface pppoe-client add ac-name=XXXXXXX add-default-route=yes disabled=no interface=VLAN_VF name=pppoe-out1 password=XXXXXX max-mru=1492 max-mtu=1492 service-name=vodafone user=XXXXXXX@vodafone
# NAT para poder salir a Internet
ip firewall nat add action=masquerade chain=srcnat out-interface=pppoe-out1

3. Lanzar Speedtest: En la línea habitual, 330Mbps


Opciones que veo a continuación:
- Probar la beta 7.1 (me preocupa que no sea estable)
- Añadir un router dedicado a la infraestructura

¿Qué opináis? Gracias por anticipado!
 
Por qué creas un bridge? Ya te dije que no hace falta, ese bridge extra sobra. El puerto que hace de wan va sin bridge ni nada, va suelto.

Saludos!
 
Creaba el bridge adicional simplemente para tener un bridge al que mover el puerto ether1. Para evitar dudas he repetido la prueba sin crear un bridge adicional:

1. Reset configuration
2. Añadir la configuración necesaria:

Código:
# Eliminar el puerto 0 (ether1) del bridge por defecto
interface bridge port remove numbers=0
# Clonar la MAC del router del operador
interface ethernet set ether1 mac-address=XX:XX:XX:XX:XX:XX
# Añadir el puerto conectado al ONT a la VLAN del operador
interface vlan add interface=ether1 name=VLAN_VF vlan-id=24
# Configurar la conexión PPPoE
interface pppoe-client add ac-name=XXXXXX add-default-route=yes disabled=no interface=VLAN_VF name=pppoe-out1 password=XXXXX max-mru=1492 max-mtu=1492 service-name=vodafone user=XXXXXX@vodafone
# Añadir la configuración de NAT para salir a Interet
ip firewall nat add action=masquerade chain=srcnat out-interface=pppoe-out1

3. Prueba con Speedtest: Exactamente igual, 330Mbps.

Adicionalmente he probado con la versión 7.1beta4 por si era posible habitar el hardware offloading del nivel 3. El resultado de la prueba es el siguiente:

1. Sí se habilita la opción del "l3-hw-offloading"
2. Si lo habilito a nivel de switch da error:
Código:
interface ethernet/switch/ set switch1 l3-hw-offloading=yes
failure: L3 HW Offload not supported
3. Si lo habilito a nivel de puertos no da error pero los resultados de Speednet son todavía peores 250Mbps. Eso sí, la CPU no supera el 50% durante la prueba...


He vuelto a la 6.48, creo que me quedo sin opciones que no impliquen un nuevo router.
 
Prueba una última cosa. En el PPPoE, quita el ac-name ni el service-name; normalmente no son necesarios. Por otro lado, con respecto a la MAC que clonas sobre ether1, prueba tanto con la que llevaba el equipo de Vodafone a nivel WAN, como la que llevaba a nivel LAN. Y asegúrate de hacer las pruebas contra un servidor que sepas tiene la capacidad que demandas, normalmente mejor el del propio operador, si lo hubiera en speedtest.

Te dejo por último cómo realizar una prueba contra un servidor público de mikrotik. Ojo con no vulnerar las reglas de uso, las tienes en esta web.
Código:
/tool bandwidth-test address=23.162.144.120 user=btest password=btest duration=25s direction=both

Saludos!
 
La prueba de quitar el ac-name y el service-name: Tienes toda la razón, son innecesarios, pero no cambia la medida de ancho de banda.

La prueba de utilizar la MAC de la LAN del equipo de Vodafone en lugar de la MAC de la WAN: No levanta el enlace PPPoE. De hecho, en su momento, la MAC la obtuve de una captura de red en el interfaz WAN del router, por lo que tampoco tenía muchas dudas al respecto.

Sobre las pruebas con Speednet, las realizo siempre contra un servidor de la operadora.

Haciendo pruebas con el servidor de Mikrotik he obtenido el resultado mostrado a continuación. Solo pude lanzarlo una vez, cuando intenté lanzarlo de nuevo (pasados más de 5 minutos y cumpliendo todas las políticas indicadas en el enlace), ya no conecta.

Código:
/tool bandwidth-test address=23.162.144.120 user=btest password=btest duration=25s direction=both
                    ;;; results can be limited by cpu, note that traffic
                        generation/termination performance might not be
                        representative of forwarding performance
                status: done testing
              duration: 26s
            tx-current: 46.5Mbps
  tx-10-second-average: 50.7Mbps
      tx-total-average: 52.7Mbps
            rx-current: 664.9Mbps
  rx-10-second-average: 652.4Mbps
      rx-total-average: 593.6Mbps
          lost-packets: 0
           random-data: no
             direction: both
               tx-size: 1480
               rx-size: 1480
      connection-count: 20
        local-cpu-load: 100%
       remote-cpu-load: 46%
 
Pues, al menos en rx (download), tienes 600Mbps. ¿Contra qué servidor de speedtest estabas probando? Yo no me fiaría un pelo de esa herramienta como método de prueba. Prueba casi mejor a meterle a un cliente 10 ISO's en torrent de distribuciones linux, habilita un buen número de conexiones, y mira a ver qué velocidad de descarga alcanzas. Ese método es casi más fiable que el anterior.

Saludos!
 
No obstante, y viendo que la CPU del equipo se pone a tope cuando lo tienes en modo routing, y me plantearía una de dos:
- O dejar el propio equipo de vodafone como router.
- O pillar un router mikrotik y dejar ese equipo corriendo SwitchOS, que es donde de verdad le vas a sacar partido.

Como router, si no vas a pasar de 1Gbps, te diría coger un hEX-S y pensarte si engancharlo por ethernet a 1Gbps o por fibra usando un cable de los que ya están hechos y que llevan conectores SFP en ambos extremos (ojo que el hEX-S sólo soporta SFP's a 1,25Gbps). O, si te vienes muy arriba, comprarte un 4011 y enganchar ambos por fibra a 10Gbps.

Saludos!
 
Pues, al menos en rx (download), tienes 600Mbps. ¿Contra qué servidor de speedtest estabas probando? Yo no me fiaría un pelo de esa herramienta como método de prueba. Prueba casi mejor a meterle a un cliente 10 ISO's en torrent de distribuciones linux, habilita un buen número de conexiones, y mira a ver qué velocidad de descarga alcanzas. Ese método es casi más fiable que el anterior.

Saludos!
Alterno entre los servidores de Vodafone en Alcobendas y Madrid, con resultados similares. Haciendo la prueba con torrents alcanzo picos de 60MBytes/seg, también con la CPU del equipo al 100%, claro. No está nada mal, pero en las pruebas con Speedtest utilizando el router de Vodafone alcanzo los 900Mbps, casi el doble. Por cierto, buen truco el de torrents de distribuciones linux, desde luego más fiable que Speedtest.

No obstante, y viendo que la CPU del equipo se pone a tope cuando lo tienes en modo routing, y me plantearía una de dos:
- O dejar el propio equipo de vodafone como router.
- O pillar un router mikrotik y dejar ese equipo corriendo SwitchOS, que es donde de verdad le vas a sacar partido.

Como router, si no vas a pasar de 1Gbps, te diría coger un hEX-S y pensarte si engancharlo por ethernet a 1Gbps o por fibra usando un cable de los que ya están hechos y que llevan conectores SFP en ambos extremos (ojo que el hEX-S sólo soporta SFP's a 1,25Gbps). O, si te vienes muy arriba, comprarte un 4011 y enganchar ambos por fibra a 10Gbps.

Saludos!

A corto plazo no creo que pase de 1Gbps de conexión a Internet, por lo que la opción de hEX-S me parece buena idea, lo que no tengo claro es si utilizar fibra, tendría que comprar dos SFPs, en CRS236 no tengo montado ninguno. Probablemente cobre a 1Gbps, o incluso utilizar bonding debería ser más que suficiente, no?

La opción de utilizar el equipo de Vodafone ni me la planteo.

Muchas gracias por tu ayuda!!
 
Si lo vas a enganchar por cable, también puedes pensar en el hEX (RB750gr3), que lleva idéntico hardware al hEX-S, salvo por el PoE passthrough que hace en el puerto 5 y el puerto SFP.

Una vez lo tengas, la única consideración que tienes que tener con cualquiera de esos dos equipos es que, para que funcione a esa velocidad, han de trabajar sí o sí con hardware offloading. Y, para que ese equipo trabaje de ese modo, hay que editar la configuración por defecto del bridge y seleccionar protocol-mode=none, porque el firmware de mikrotik, para ese hardware concreto, no soporta R-STP junto a hardware-offloading, y al seleccionarlo (viene así por defecto), lo desactiva. Con ese pequeño cambio, sacrificas eso, pero el equipo tiene un rendimiento general muy superior, puesto que la CPU deja de trabajar para ese tráfico y todo se mueve a nivel switch.

Saludos!
 
Hola
Tengo una conexión de Movistar de 1Gb
Cuando hago untest de velocidad con el hgu me da aproximadamente 1G
Pero si pongo una ONT Huawei HG8240 y un hAP ac y hago el test de velocidad no pasa de 600Mb
¿Puede ser un problema de hard?

1618137992238.png

1618138033223.png
 
No es el tipo, es cómo haces la prueba. Si quieres hacer una prueba de ancho de banda de un router mikrotik, tienes que meterlo entre dos routers mikrotik. Es decir, que no sea él quien genera el tráfico, porque sino te pasa eso, que se te va la CPU al 100% y no pruebas nada. Si el bandwidth test lo inicias desde otro equipo y plantas ese en medio, aunque el primer el equipo pete generando tráfico, probarás a qué velocidad pasa el tráfico por el que está en medio.

Saludos!
 
Arriba