Ayuda terminación Q-in-Q con Mikrotik

Buenos días!

Estoy teniendo problemas para la terminación de un Q-in-Q y posteriormente hacer un DHCP-Relay a través de IPsec. El escenario es el siguiente:

Me entregan Svlans desde la 700 a la 800, cada una de ellas lleva dentro las vlan 10,20 y 30, todo esto en el puerto sfp+
Necesito terminar todas esas vlan directamente en el mikrotik y poder asignarles IP desde el Servidor DHCP que está al otro lado del túnel IPsec. Las peticiones DHCP me llegan a través de las Vlan 10, 20 y 30 de cada Svlan (700-800) el servidor responde y la entrega directamente al equipo cliente.

Lo que hice hasta el momento es crear las Vlans de la siguiente manera:

add interface=sfp-sfpplus1 name=Bistream.S-Vlan700 vlan-id=700
add disabled=yes interface=Bistream.S-Vlan700 name=S-Vlan700.CE-Vlan10 vlan-id=10
add disabled=yes interface=Bistream.S-Vlan700 name=S-Vlan700.CE-Vlan20 vlan-id=20
add disabled=yes interface=Bistream.S-Vlan700 name=S-Vlan700.CE-Vlan30 vlan-id=30

Así con todas las Svlan.
Luego las he añadido a un bridge siguiendo el manual de @pokoyo :

interface bridge add name=CVlans10
interface bridge add name=CVlans20
interface bridge add name=CVlans30

interface bridge port
add bridge=C.Vlans10 interface=S-Vlan700.CE-Vlan10 pvid=10
add bridge=C.Vlans20 interface=S-Vlan700.CE-Vlan20 pvid=20
add bridge=C.Vlans30 interface=S-Vlan700.CE-Vlan30 pvid=30

El túnel IPsec lo tengo levantado y hago ping desde los 2 extremos al otro. Veo que llegan los Discover de los equipos pidiendo IP, pero no llegan de vuelta del servidor. Lo que dice el LOG:
1670411252888.png

Si hago un TORCH veo que responde con IP de destino 255.255.255.255

Si me pongo una ip del rango en el bridge CVlans10 por ejemplo e intento hacer ping a algún equipo de esa red, no obtengo respuesta ni añadiendo el src-address. No se que puede estar mal en la configuración. Gracias de antemano

Saludos
 
¿te importaría dibujarlo? No acabo de entender el propósito del bridge. Pinta los dos extremos, quien eres tú y dónde está el dhcp y el relay, así como los clientes que necesiten acceso a las vlans finales 10, 20, 30.

Saludos!
 
aquí te va, en la ONT cliente aclaro que el dhcp client es para hacer el ACS, luego se configura la ONT y pude IP pública por la Vlan10, la 20 queda para TR069 y la 30 VoIP. En el conmutador, se pasan todas las Svlans de las OLT y la Vlan7 de salida a tránsito tal cual.

1670426314911.png
 
Vale, me queda claro el setup. Pero no acabo de ver para qué bridge. Es decir, si tú en tu SPF+ ya tienes un Q-in-Q (simplifiquémoslo a lo mínimo, una de las service VLAN, la 700, y las otras tres dentro), entiendo que lo que te quedaría sería hacer el relay para pedirle el direccionamiento al servidor DHCP que te lo tiene que asignar para cada vlan finales (10, 20, 30) que entiendo son las que quieres acabar direccionando. ¿es así?

¿puede ser que las vlans de servicio te las estén mandando como 802.1ad? Si es sí, cuando crees dichas vlans sobre el puerto sfp+, márcalas con la opción use-service-tag=yes. Es decir:
Código:
/interface vlan
add interface=sfp-sfpplus1 name=Bistream.S-Vlan700 vlan-id=700 use-service-tag=yes
add interface=Bistream.S-Vlan700 name=S-Vlan700.CE-Vlan10 vlan-id=10
add interface=Bistream.S-Vlan700 name=S-Vlan700.CE-Vlan20 vlan-id=20
add interface=Bistream.S-Vlan700 name=S-Vlan700.CE-Vlan30 vlan-id=30

Saludos!
 
El tema del bridge creo que sería necesario para no crear un Relay para cada subinterfaz. Es decir, uno para la CVlan20 de la SVlan700, otro para la CVlan20 de la SVlan701, etc... lo suyo creo que sería agrupar todas las CVlan10 en un bridge, todas las CVlan20 en otro y las CVlan30 en otro no?. Las SVlanes me las entregan sin taggear, con lo que no tengo que activar el use-service-tag=yes pero si hago un Torch en la SVlan700 por ejemplo, puedo ver el tráfico e IPs dentro de las CVlan10, sin embargo si hago torch en la CVlan10 no veo absolutamente nada. Lo mismo pasa con el Dhcp Relay. Si lo pongo en la interfaz CVlan10 o 20 de la SVlan700, no llegan peticiones pero si lo pongo en la SVlan700 si llegan, pero no vuelven... La verdad es que no se muy bien lo que puede pasar ahí...

1670449610127.png

Gracias!
 
Según tu planteamiento, tú querrías que tu CCR fuera agnóstico del QinQ, y se dedicara únicamente a direccionar las tres VLANs de cliente. Si esto es así, simplemente con enviar esas dos VLANs a lo que en tu dibujo llamas "conmutador" te valdría, y él se encargaría del QinQ. Sería en ese conmutador donde tendrías el bridge y tendrías que montar unas vlans dentro de otras. Pero, a nivel de router, tú simplemente entregarías las 3 vlans de servicio en el puerto sfp+

Tendrías, algo así (lo hice con dos vlans de ejemplo)

Router A (DHCP Server, unido al relay por ether3; en tu caso sería el túnel)
Código:
// Direccionamiento de la interfaz que te une con el relay
/ip address
add address=192.168.15.1/30 interface=ether3 network=192.168.15.0

// Pool para los DHCP server de ambas VLANs
/ip pool
add name=vlan-a ranges=192.168.150.2-192.168.150.100
add name=vlan-b ranges=192.168.151.2-192.168.151.100

// DHCP server, ambos sobre un mismo puerto, el que te une al relay (túnel en tu caso), especificando las IPs llamantes (las vlans remotas)
/ip dhcp-server
add address-pool=vlan-a interface=ether3 name=server-vlan-a relay=192.168.150.1
add address-pool=vlan-b interface=ether3 name=server-vlan-b relay=192.168.151.1
/ip dhcp-server network
add address=192.168.150.0/24 dns-server=1.1.1.1 gateway=192.168.150.1 netmask=24
add address=192.168.151.0/24 dns-server=1.1.1.1 gateway=192.168.151.1 netmask=24


Router B (Relay, el equivalente a tu CCR, unido al server por ether1, entregando las vlans direccionadas en otro puerto, ether2)
Código:
// VLANs sobre el puerto a direccionar
/interface vlan
add interface=ether2 name=a vlan-id=10
add interface=ether2 name=b vlan-id=20

// Direccionamiento de las VLANs, con la cual se llamará al relay. 192.168.15.2 sería la IP de tu lado del túnel.
/ip address
add address=192.168.15.2/30 interface=ether1 network=192.168.15.0
add address=192.168.150.1/24 interface=a network=192.168.150.0
add address=192.168.151.1/24 interface=b network=192.168.151.0

// Relay, apuntando a la IP del otro extremo del túnel, la 192.168.15.1 en mi caso, y directamente sobre las vlans
/ip dhcp-relay
add dhcp-server=192.168.15.1 disabled=no interface=a local-address=192.168.150.1 name=relay-a
add dhcp-server=192.168.15.1 disabled=no interface=b local-address=192.168.151.1 name=relay-b

Sin embargo, si vas a querer participar con el CCR en el QinQ y direccionar cada vlan de cliente de manera individual por cada service vlan (lo más normal si vas a manejar segmentos de IP públicas muy grandes, y vas a querer luego hacerlos cachitos más pequeños), no te queda otra que llevarte el QinQ al router y montar un relay por cada VLAN cliente. Al menos a mi a simple vista no se me ocurre cómo hacerlo de otra manera.

No obstante, como es un setup bastante complejo (le estuve dando vueltas un par de días y no consigo encontrar una manera de hacer lo que pretendes sin caer en uno de los dos modos anteriormente mencionados), plantéalo en el foro oficial de Mikrotik, a ver si alguien con más experiencia en QinQ te echa un cable, y te dice cómo poder montar las mismas dos VLANs que tú entregas desde el Relay, en múltiples service VLANs sin duplicarlas.

Saludos!
 
Bueno majo, pues después de darle muchísimas vueltas, creo que lo tengo. Y tu intuición no te fallaba: si quieres montar el stack desde el propio CCR sin tener que direccionar cada vlan cliente, tienes que meter un bridge de por medio. ¿por qué? pues porque te toca crear las vlans cliente sobre el propio bridge, mientras que las de servicio irán sobre el puerto que te une al conmutador (sfpplus1 en tu caso), haciendo de ese puerto un trunk de vlans de servicio. Y, para taggear una VLAN en otra, usarás las VLANs de servicio como puertos del bridge.

Tendríamos este esquema:

1670784357480.png

Configuración del servidor DHCP (la puedes obviar en tu caso, pero por que saga también en la foto)
Código:
###############
# DHCP Server #
###############

# Direccionamiento de la interfaz que te une con el relay
/ip address
add address=192.168.15.1/30 interface=ether1 network=192.168.15.0

# Cremos los pools
/ip pool
add name=relay-pool10 ranges=192.168.10.2-192.168.10.100
add name=relay-pool20 ranges=192.168.20.2-192.168.20.100
add name=relay-pool30 ranges=192.168.30.2-192.168.30.100

# Cremos los DHCP Servers y su direccionamiento, apuntando a la interfaz que escuchará al relay
# Como IP de relay, entregamos las direcciones asignadas a cada vlan cliente
/ip dhcp-server
add address-pool=relay-pool10 interface=ether1 name=server-relay-civlan10 relay=192.168.10.1
add address-pool=relay-pool20 interface=ether1 name=server-relay-civlan20 relay=192.168.20.1
add address-pool=relay-pool30 interface=ether1 name=server-relay-civlan30 relay=192.168.30.1
/ip dhcp-server network
add address=192.168.10.0/24 dns-server=1.1.1.1,1.0.0.1 gateway=192.168.10.1 netmask=24
add address=192.168.20.0/24 dns-server=1.1.1.1,1.0.0.1 gateway=192.168.20.1 netmask=24
add address=192.168.30.0/24 dns-server=1.1.1.1,1.0.0.1 gateway=192.168.30.1 netmask=24

Configuración del CCR (aquí viene la miga)
Código:
################
# Router (CCR) #
################

# Cremos el bridge para las vlans de cliente
/interface bridge
add name=br-vlans

# Creamos las VLANs: las de cliente sobre el bridge, las de servicio sobre el puerto físico, para luego montarle la otra dentro taggeada.
/interface vlan
add interface=br-vlans name=civlan10 vlan-id=10
add interface=br-vlans name=civlan20 vlan-id=20
add interface=br-vlans name=civlan30 vlan-id=30
add interface=sfpplus1 name=service-700 use-service-tag=yes vlan-id=700
add interface=sfpplus1 name=service-701 use-service-tag=yes vlan-id=701
add interface=sfpplus1 name=service-702 use-service-tag=yes vlan-id=702
# ... etc con las otras vlans de servicio

# Metemos las VLANs de servicio como puertos del bridge, par poder apilar una en otra
/interface bridge port
add bridge=br-vlans frame-types=admit-only-vlan-tagged interface=service-700
add bridge=br-vlans frame-types=admit-only-vlan-tagged interface=service-701
add bridge=br-vlans frame-types=admit-only-vlan-tagged interface=service-702
# ... etc con las otras vlans de servicio

# taggeamos las vlans de cliente sobre el propio bridge (quien las direcciona) y apiladas sobre cada vlan de servicio
/interface bridge vlan
add bridge=br-vlans tagged=br-vlans,service-700,service-701,service-702 vlan-ids=10
add bridge=br-vlans tagged=br-vlans,service-700,service-701,service-702 vlan-ids=20
add bridge=br-vlans tagged=br-vlans,service-700,service-701,service-702 vlan-ids=30

# Direccionamos las VLANs, para que las identifique el relay
/ip address
add interface=ether1 address=192.168.15.2/30 # Interface al relay, en tu caso, túnel
add interface=civlan10 address=192.168.10.1/24
add interface=civlan20 address=192.168.20.1/24
add interface=civlan30 address=192.168.30.1/24

# Relay setup
/ip dhcp-relay
add dhcp-server=192.168.15.1 disabled=no interface=civlan10 local-address=192.168.10.1 name=relay-civlan-10
add dhcp-server=192.168.15.1 disabled=no interface=civlan20 local-address=192.168.20.1 name=relay-civlan-20
add dhcp-server=192.168.15.1 disabled=no interface=civlan30 local-address=192.168.30.1 name=relay-civlan-30

# Filtramos las VLANs de cliente por 802.1Q
/interface bridge
set [find name=br-vlans] frame-types=admit-only-vlan-tagged vlan-filtering=yes


Switch de servicio
Código:
################
# Switch (CRS) #
################

# cremos el bridge
/interface bridge
add name=br-vlans

# Taggeamos todo sobre el puerto trunk,
# y entregamos en acceso cada vlan de servicio a su puerto correspondiente
/interface bridge port
add bridge=br-vlans interface=ether1
add bridge=br-vlans interface=ether2 pvid=700
add bridge=br-vlans interface=ether3 pvid=701
add bridge=br-vlans interface=ether4 pvid=702

# Declaramos la tabla de vlans de servicio
/interface bridge vlan
add bridge=br-vlans tagged=ether1 vlan-ids=700
add bridge=br-vlans tagged=ether1 vlan-ids=701
add bridge=br-vlans tagged=ether1 vlan-ids=702

# Filtramos el bridge, por 802.1ad
# (vlans de servicio únicamente)
/interface bridge
set [find name=br-vlans] ether-type=0x88a8 frame-types=admit-only-vlan-tagged vlan-filtering=yes

Un CPE de cliente cualquiera
Código:
# Cremos las distintas VLANs sobre la interfaz WAN
/interface vlan
add interface=ether1 name=vlan10 vlan-id=10
add interface=ether1 name=vlan20 vlan-id=20
add interface=ether1 name=vlan30 vlan-id=30

# Levantamos un cliente DHCP sobre cualquiera de las VLANs
/ip dhcp-client
add interface=vlan10
add add-default-route=no disabled=yes interface=vlan20
add add-default-route=no disabled=yes interface=vlan30

Y listo! Ya tienes todas tus vlans de cliente direccionadas, stackeadas en distintas vlans de servicio que atraviesan la infraestructura intermedia, ocultando lo que llevan dentro.

Saludos!
 
Muchas gracias! la manera en como taggeas las Cvlan en la parte Vlan del bridge no la conocía! ahora mismo voy a hacer pruebas a ver si hemos dado en el clavo! pero por otro lado me preocupa la parte del Switch de Servicio ya que yo sólo tengo acceso a mi CCR y a las ONT de cliente, no se si es totalmente necesario meter ese switch o se podría hacer todo desde el CCR. Tu que opinas?
 
Ese switch de servicio vendría a ser el que tú pintas en tu como "Concentrador" (ese no entiendo muy bien su propósito en tu dibujo) o, mejor visto, el "switch cabeceras OLT"; uno de los dos. Básicamente el que reciba un trunk con todas las vlans de servicio y las reparta en modo acceso a cada OLT la que le toca.

Saludos!
 
Buenas,

Esta semana me llegan los equipos, tanto el CCR2004 como el CRS317 para hacer las pruebas. Tanto si funciona como si no iré posteando por aquí ( que seguro que funciona)

Salu2
 
Buenas,

Esta semana me llegan los equipos, tanto el CCR2004 como el CRS317 para hacer las pruebas. Tanto si funciona como si no iré posteando por aquí ( que seguro que funciona)

Salu2
Suerte, y mucho ánimo con el setup!

Saludos.
 
Buenas!
Ya tengo todo montado, pero revisando un poco en la config que me planteas, no entiendo la parte en el CRS en la que taggeas todo sobre el puerto trunk y entregas en acceso cada vlan en un puerto diferente, ya que al CRS llegan todas las Vlan por el mismo puerto. Fuera de eso, he creado en el mismo CRS todas las SVlan y Cvlan sobre el puerto sfp+, y ya consigo comunicar con lo que hay del otro lado, así que eso ok. El tema es cómo paso ahora las Vlans al CCR2004. Te paso un esquema de cómo lo tengo montado.
1672414531692.png

Gracias!
 
El CRS vendría a ser el switch al que tú conectas tu CCR por un lado (trunk) y el que sea el elemento de red al que le vayas a dar servicio (creo que en tu caso era una OLT). Ese equipo no es necesario que sea un CRS, podría ser cualquier otro switch gestionable con soporte de 802.1ad . Te puse el ejemplo de entregar ya las vlans untagged para que veas cómo se hace, pero si necesitas ir a otro elemento de red en modo trunk, podrías ir de igual forma, configurando su puerto tal y como configuras el trunk que te une al CCR.

Saludos!
 
Arriba