QinQ: Encapsulando VLAN dentro de otra VLAN
- jogofus
- 18 may 2024
- 4 Min. de lectura
Hace tiempo hablamos sobre el encapsulamiento de las VLAN en las VxLAN, y estas eran transportadas mediante IPsec para extender la capa 2 del modelo OSI. Si no has leído esa entrada, te recomiendo que le eches un vistazo: Encapsulando a través de Internet: VXLAN over IPSEC
VxLAN, como comentamos, encapsula la trama ethernet en capa 3, añadiendo las cabeceras necesarias de VxLAN, siendo desencapsuladas al llegar al destino.
Pero, ¿y si no tenemos capa 3, como en el caso anterior? Podemos hacer uso de QinQ.
Y aquí es donde empieza la entrada de hoy.
QinQ, ¿qué es?

QinQ está definido como estándar por el IEEE 802.1ad.
Como ya sabemos, existe una limitación con la etiqueta VLAN de 12 bits, que identifica solo un máximo de 4096 VLAN. Para este propósito surgió el QinQ, que añade una etiqueta adicional, aumentando la cantidad de VLAN a 4096 x 4096.

Detalle de la encapsulacion QinQ. Imagen extraída de huawei.com
Debido a que una empresa tipo no tiene una necesidad tan alta como para tener que disponer de tantas VLAN, parece que esto queda relegado a ISP y/o datacenters.
Pero, ¿y si tuvieramos el siguiente escenario?
En nuestra empresa tenemos un considerable número de switches, conectados algunos en cascada (mala práctica, pero se puede dar el caso) y necesitamos transportar ciertas VLAN a través de la red del switch A al switch B. Esto supondría tener que configurar todas las VLAN en todos los switches, así como los puertos por los que tienen que pasar.
Si tenemos solo dos o tres switches, no supone ningún problema, ¿verdad?
Pero como hemos dicho antes, imaginemos que tenemos 12 switches entre medias (espero que a nadie le toque vivir esto). ¿Configurarías todos y cada uno de ellos?

Pues aquí es donde nos vendrá como anillo al dedo usar QinQ. Definiremos las VLAN que queramos (como si dos doscientas VLAN) y solo pasará por la red una única VLAN.
La ventaja de esto creo que es más que obvia: aparte del aumento considerable de VLAN, solo necesitaremos tener una única vlan definida en todos los switches para el transporte de las demás. De esta forma, será escalable, y cuando añadamos una VLAN nueva, automáticamente será transportada por la red del switch A al switch B.
Manos a la obra. QinQ: Encapsulando VLAN dentro de otra VLAN
En este caso se van a utilizar switches Huawei para la demostración, pero la gran mayoría de switches de gama media/alta dispone de esta característica. Si eres de los que usa la interfaz gráfica para la configuración, siento decirte que en la gran mayoría de fabricantes (switches, routers, firewalls) esta característica no está disponible, solamente a través de CLI.
Ahora sí, aquí tenemos nuestro escenario.
Es bastante simple para no hacerlo muy pesado.
Tenemos 4 switches Huawei CloudEngine 6800. Los switches sw2 y sw3 son los que harán de transporte.
Los servidores srv1 y srv3 están en la vlan 100 y los srv2 y srv4 en la vlan 200.
La vlan que va a encapsular a las anteriores será la vlan 50.
Configuración sw1
system-view
!
sysname sw1
!
vlan batch 100 200
!
interface GigabitEthernet 1/0/0
undo shutdown
port link-type trunk
port trunk allow-pass vlan 100 200
!
interface GigabitEthernet 1/0/10
undo shutdown
port link-type access
port default vlan 100
!
interface GigabitEthernet 1/0/11
undo shutdown
port link-type access
port default vlan 200
Configuración sw4
system-view
!
sysname sw4
!
vlan batch 100 200
!
interface GigabitEthernet 1/0/0
undo shutdown
port link-type trunk
port trunk allow-pass vlan 100 200
!
interface GigabitEthernet 1/0/10
undo shutdown
port link-type access
port default vlan 100
!
interface GigabitEthernet 1/0/11
undo shutdown
port link-type access
port default vlan 200
Esta configuración es la básica para este caso. Si en un futuro se añadieran más vlan, tendríamos que crearlas, asignarles el puerto de acceso y añadirlas al trunk (porque no vamos a hacer un trunk de todas las vlan, ¿verdad?
Ahora vamos a proceder a configurar los switches encargados de encapsular esas vlan en la vlan 50.
Configuración sw2
system-view
!
sysname sw2
!
vlan 50
!
interface GigabitEthernet 1/0/0
undo shutdown
port link-type dot1q-tunnel
port default vlan 50
!
interface GigabitEthernet 1/0/1
undo shutdown
port link-type trunk
port trunk allow-pass vlan 50
!
Configuración sw3
system-view
!
sysname sw2
!
vlan 50
!
interface GigabitEthernet 1/0/1
undo shutdown
port link-type dot1q-tunnel
port default vlan 50
!
interface GigabitEthernet 1/0/0
undo shutdown
port link-type trunk
port trunk allow-pass vlan 50
!
De esta forma, le decimos a los switches sw2 y sw3 que lo que les llegue a su puerto desde el switch de acceso (en el caso del sw2 a través del puerto 1/0/0) lo encapsule en la vlan 50, permitiendo el tráfico de esa vlan 50 a través del otro puerto.
Y ahora procedemos a comprobar el tráfico, si llega o no.
El srv1 y srv3 tienen el direccionamiento 192.168.100.0/24 y el srv2 y srv4 tienen direccionamiento 192.168.200.0/24
Como se comprueba, desde la vlan 100 podemos hacer ping a los equipos que forman parte de la misma vlan, pero no a los de la vlan 200.
Y aquí la captura con wireshark:
Y esto es todo por hoy. ¡Espero que os haya servido!
¡Hasta la próxima!
Comments