Una VLAN (virtual local area network), acrónimo de virtual LAN ( red de área local virtual), es un método para crear redes lógicas independientes dentro de una misma red física.[1] Varias VLAN pueden coexistir en un único conmutador físico o en una única red física. Son útiles para reducir el dominio de difusión y ayudan en la administración de la red, separando segmentos lógicos de una red de área local (los departamentos de una empresa, por ejemplo) que no deberían intercambiar datos usando la red local (aunque podrían hacerlo a través de un enrutador o un conmutador de capa OSI 3 y 4).
Una VLAN consiste en dos o más redes de computadoras que se comportan como si estuviesen conectados al mismo computador, aunque se encuentren físicamente conectados a diferentes segmentos de una red de área local.
A principios de la década de 1981, Ethernet era una tecnología consolidada que ofrecía una velocidad de 10 Mbps, mucho mayor que gran parte de las alternativas de la época. Las redes Ethernet tenían una topología en bus, donde el medio físico de transmisión (cable coaxial) era compartido.
Ethernet era, por lo tanto, una red de difusión y como tal cuando dos estaciones transmiten simultáneamente se producen colisiones y se desperdicia ancho de banda en transmisiones fallidas.
El diseño de Ethernet no ofrecía escalabilidad, es decir, al aumentar el tamaño de la red disminuyen sus prestaciones o el costo se hace inasumible. CSMA/CD, el protocolo que controla el acceso al medio compartido en Ethernet, impone de por sí limitaciones en cuanto al ancho de banda máximo y a la máxima distancia entre dos estaciones. Conectar múltiples redes Ethernet era por aquel entonces complicado, y aunque se podía utilizar un router para la interconexión, estos eran caros y requería un mayor tiempo de procesado por paquete grande, aumentando el retardo.
Para solucionar estos problemas, primero W. Kempf inventó el bridge (puente), dispositivo software para interconectar dos LANs.
En 1992 Kalpana desarrolló el switch Ethernet, puente multipuerto implementado en hardware, dispositivo de conmutación de tramas de nivel 2. Usar switches para interconectar redes Ethernet permite separar dominios de colisión, aumentando la eficiencia y la escalabilidad de la red. Una red tolerante de fallos y con un nivel alto de disponibilidad requiere que se usen topologías redundantes: enlaces múltiples entre switches y equipos redundantes. De esta manera, ante un fallo en un único punto es posible recuperar de forma automática y rápida el servicio. Este diseño redundante requiere la habilitación del protocolo spanning tree (STP) para asegurarse de que solo haya activo un camino lógico para ir de un nodo a otro y evitar así el fenómeno conocido como tormentas broadcast. El principal inconveniente de esta topología lógica de la red es que los switches centrales se convierten en cuellos de botella, pues la mayor parte del tráfico circula a través de ellos.
Sincoskie consiguió aliviar la sobrecarga de los switches inventando LAN virtuales al añadir una etiqueta a las tramas Ethernet con la que se diferencia el tráfico. Al definir varias LAN virtuales cada una de ellas tendrá su propio spanning tree y se podrá asignar los distintos puertos de un switch a cada una de las VLAN.
Para unir VLAN que están definidas en varios switches se puede crear un enlace especial llamado trunk, por el que fluye tráfico de varias VLAN. Los switches sabrán a qué VLAN pertenece cada trama observando la etiqueta VLAN (definida en la norma IEEE 802.1Q).
Aunque hoy en día el uso de LAN virtuales es generalizado en las redes Ethernet modernas, usarlas para el propósito original puede ser un tanto extraño, ya que lo habitual es utilizarlas para separar dominios de difusión (hosts que pueden ser alcanzados por una trama broadcast).
IEEE 802.1aq-2012 - Shortest Path Bridging ofrece mucha más escalabilidad a hasta 16 millones comparado con el límite de 4096 de las VLAN.
Aunque las más habituales son las VLAN basadas en puertos (nivel 1), las redes de área local virtuales se pueden clasificar en cuatro tipos según el nivel de la jerarquía OSI en el que operen:
Durante todo el proceso de configuración y funcionamiento de una VLAN es necesaria la participación de una serie de protocolos entre los que destacan el IEEE 802.1Q, STP y VTP (cuyo equivalente IEEE es GVRP). El protocolo IEEE 802.1Q se encarga del etiquetado de las tramas que es asociada inmediatamente con la información de la VLAN. El cometido principal de Spanning Tree Protocol (STP) es evitar la aparición de bucles lógicos para que haya un solo camino entre dos nodos. VTP (VLAN Trunking Protocol) es un protocolo propietario de Cisco que permite una gestión centralizada de todas las VLAN.
El protocolo de etiquetado IEEE 802.1Q es el más común para el etiquetado de las VLAN. Antes de su introducción existían varios protocolos propietarios, como el ISL (Inter-Switch Link) de Cisco, una variante del IEEE 802.1Q, y el VLT (Virtual LAN Trunk) de 3Com. El IEEE 802.1Q se caracteriza por utilizar un formato de trama similar a 802.3 (Ethernet) donde solo cambia el valor del campo Ethertype, que en las tramas 802.1Q vale 0x8100, y se añaden dos bytes para codificar la prioridad, el CFI y el VLAN ID. Este protocolo es un estándar internacional y por lo dicho anteriormente es compatible con bridges y switches sin capacidad de VLAN.
Las VLAN y Protocolos de Árbol de Expansión. Para evitar la saturación de los switches debido a las tormentas broadcast, una red con topología redundante tiene que tener habilitado el protocolo STP. Los switches intercambian mensajes STP BPDU (Bridge Protocol Data Units) entre sí para lograr que la topología de la red sea un árbol (no tenga enlaces redundantes) y solo haya activo un camino para ir de un nodo a otro. El protocolo STP/RSTP es agnóstico a las VLAN, MSTP (IEEE 802.1Q) permite crear árboles de expansión diferentes y asignarlos a grupos de las VLAN mediante configuración. Esto permite utilizar enlaces en un árbol que están bloqueados en otro árbol.
En los dispositivos Cisco, VTP (VLAN trunking protocol) se encarga de mantener la coherencia de la configuración VLAN por toda la red. VTP utiliza tramas de nivel 2 para gestionar la creación, borrado y renombrado de las VLAN en una red sincronizando todos los dispositivos entre sí y evitar tener que configurarlos uno a uno. Para eso hay que establecer primero un dominio de administración VTP. Un dominio VTP para una red es un conjunto contiguo de switches unidos con enlaces trunk que tienen el mismo nombre de dominio VTP.
Los switches pueden estar en uno de los siguientes modos: servidor, cliente o transparente. «Servidor» es el modo por defecto, anuncia su configuración al resto de equipos y se sincroniza con otros servidores VTP. Un switch en modo cliente no puede modificar la configuración VLAN, simplemente sincroniza la configuración sobre la base de la información que le envían los servidores. Por último, un switch está en modo transparente cuando solo se puede configurar localmente pues ignora el contenido de los mensajes VTP.
VTP también permite «podar» (función VTP pruning), lo que significa dirigir tráfico VLAN específico solo a los conmutadores que tienen puertos en la VLAN destino. Con lo que se ahorra ancho de banda en los posiblemente saturados enlaces trunk.
Uno de los peores problemas que puede presentarse para un Switch es cuando escucha la misma dirección MAC (Medium Access Control) por dos interfaces físicas diferentes, este es un bucle que en principio, no sabría como resolver.[2]
Este problema si bien parece poco probable que pueda ocurrir, en realidad en redes grandes al tener cientos o miles de cables (muchos de ellos para redundancia), este hecho es tan sencillo como conectar el mismo cable en diferentes patch pannels que cierran un lazo sobre el mismo dispositivo, y en la realidad ocurre con cierta frecuencia, mayor, en la medida que más grande sea la red LAN. También es un hecho concreto cuando el cableado se diseña para poseer caminos redundantes, justamente para incrementar la disponibilidad de la red.
Cuando físicamente se cierra un bucle, la topología pura de red “Jerárquica” deja de serlo y se convierte en una red “Malla”. Para tratar este problema el protocolo Spanning Tree crea una red “Jerárquica lógica (árbol Lógico)” sobre esta red “Malla Física”. Este protocolo crea “Puentes” (bridges) de unión sobre estos enlaces y define a través de diferentes algoritmos que se pueden configurar, cuál es el que tiene mayor prioridad, este puente de máxima prioridad lo denomina “Root Bridge” (o Puente Raíz) y será el que manda jerárquicamente las interfaces por las cuales se separarán los diferentes dominios de colisión. Todo el control de STP se realiza mediante tramas llamadas BPDU (Bridge Protocol Data Unit) que son las que regulan los diferentes dominios de colisión . El parámetro que define esta jerarquía es el BID (Bridge Identifier) que está compuesto por el Bridge Priority + dirección MAC. El Bridge Priority es un valor configurable que por defecto está asignado en 32768.
En general este protocolo se configura de forma automática, y se basa en el orden de encendido de los diferentes Switchs de la red, siendo el primero que se pone en funcionamiento el que se auto designa “Root Bridge”, pero por supuesto se puede realizar de forma manual.
Cada switch reemplaza los BID de raíz más alta por BID de raíz más baja en las BPDU. Todos los switches que reciben las BPDU determinan en sus tablas que el switch que cuyo valor de BID es el más bajo será “su” puente raíz, y a su vez envían nuevas BPDU hacia sus otras interfaces con un ID más alto, incrementando el parámetro “Root Path Cost” (Que veremos en el ejemplo que sigue) informando con esta nueva BPDU a todo dispositivo que esté conectado físicamente a él cómo debe ir armándose este árbol . Si se desea configurar de forma manual, el administrador de red puede establecer jerarquía que desee configurando la prioridad de switch que sea “Root Bridge” en un valor más pequeño que el del valor por defecto (32768, todo valor debe ser múltiplo de 4096), lo que hace que este BID sea más pequeño y a partir de este “root” puede configurar la jerarquía o árbol si lo desea, o también al reconocer los demás switch a este “root”, de forma automática pueden generar el resto del árbol.
En las grandes redes actuales, se suelen establecer importantes relaciones entre las VLANs y el Core de las redes, donde el protocolo por excelencia suele ser MPLS (Multi Protocolo Label Switching)
Las dos aproximaciones más habituales para la asignación de miembros de una VLAN son las siguientes: VLAN estáticas y VLAN dinámicas.
Las VLAN estáticas también se denominan VLAN basadas en el puerto. Las asignaciones en una VLAN estática se crean mediante la asignación de los puertos de un switch o conmutador a dicha VLAN. Cuando un dispositivo entra en la red, automáticamente asume su pertenencia a la VLAN a la que ha sido asignado el puerto. Si el usuario cambia de puerto de entrada y necesita acceder a la misma VLAN, el administrador de la red debe cambiar manualmente la asignación a la VLAN del nuevo puerto de conexión en el switch.
En ella se crean unidades virtuales no estáticas en las que se guardan los archivos y componentes del sistema de archivos mundial
En las VLAN dinámicas, la asignación se realiza mediante paquetes de software tales como el CiscoWorks 2000. Con el VMPS (acrónimo en inglés de VLAN Management Policy Server o Servidor de Gestión de Directivas de la VLAN), el administrador de la red puede asignar los puertos que pertenecen a una VLAN de manera automática basándose en información tal como la dirección MAC del dispositivo que se conecta al puerto o el nombre de usuario utilizado para acceder al dispositivo. En este procedimiento, el dispositivo que accede a la red, hace una consulta a la base de datos de miembros de la VLAN. Se puede consultar el software FreeNAC para ver un ejemplo de implementación de un servidor VMPS.
Con las VLAN de nivel 1 (basadas en puertos), el puerto asignado a la VLAN es independiente del usuario o dispositivo conectado en el puerto. Esto significa que todos los usuarios que se conectan al puerto serán miembros de la misma VLAN. Habitualmente es el administrador de la red el que realiza las asignaciones a la VLAN. Después de que un puerto ha sido asignado a una VLAN, a través de ese puerto no se puede enviar ni recibir datos desde dispositivos incluidos en otra VLAN sin la intervención de algún dispositivo de capa 3.
Los puertos de un switch pueden ser de dos tipos, en lo que respecta a las características VLAN: puertos de acceso y puertos trunk. Un puerto de acceso (switchport mode access) pertenece únicamente a una VLAN asignada de forma estática (VLAN nativa). La configuración predeterminada suele ser que todos los puertos sean de acceso de la VLAN1. En cambio, un puerto trunk (switchport mode trunk) puede ser miembro de múltiples VLAN. Por defecto es miembro de todas, pero la lista de las VLAN permitidas es configurable.
El dispositivo que se conecta a un puerto, posiblemente no tenga conocimiento de la existencia de la VLAN a la que pertenece dicho puerto. El dispositivo simplemente sabe que es miembro de una subred y que puede ser capaz de hablar con otros miembros de la subred simplemente enviando información al segmento cableado. El switch es responsable de identificar que la información viene de una VLAN determinada y de asegurarse de que esa información llega a todos los demás miembros de la VLAN. El switch también se asegura de que el resto de puertos que no están en dicha VLAN no reciben dicha información.
Este planteamiento es sencillo, rápido y fácil de administrar, dado que no hay complejas tablas en las que mirar para configurar la segmentación de la VLAN. Si la asociación de puerto a VLAN se hace con un ASIC (acrónimo en inglés de Application-Specific Integrated Circuit o Circuito integrado para una aplicación específica), el rendimiento es muy bueno. Un ASIC permite que el mapeo de puerto a VLAN sea hecho a nivel hardware.
Los primeros diseñadores de redes solían configurar las VLAN con el objetivo de reducir el tamaño del dominio de colisión en un segmento Ethernet y mejorar su rendimiento. Cuando los switches lograron esto, porque cada puerto es un dominio de colisión, su prioridad fue reducir el tamaño del dominio de difusión. Ya que, si aumenta el número de terminales, aumenta el tráfico difusión y el consumo de CPU por procesado de tráfico broadcast no deseado. Una de las maneras más eficientes de lograr reducir el domino de difusión es con la división de una red grande en varias VLAN.
Actualmente, las redes institucionales y corporativas modernas suelen estar configuradas de forma jerárquica dividiéndose en varios grupos de trabajo. Razones de seguridad y confidencialidad aconsejan también limitar el ámbito del tráfico de difusión para que un usuario no autorizado no pueda acceder a recursos o a información que no le corresponde. Por ejemplo, la red institucional de un campus universitario suele separar los usuarios en tres grupos: alumnos, profesores y administración. Cada uno de estos grupos constituye un dominio de difusión, una VLAN, y se suele corresponder asimismo con una subred IP diferente. De esta manera la comunicación entre miembros del mismo grupo se puede hacer en nivel 2, y los grupos están aislados entre sí, sólo se pueden comunicar a través de un router.
La definición de múltiples VLAN y el uso de enlaces trunk, frente a las redes LAN interconectadas con un router, es una solución escalable. Si se deciden crear nuevos grupos se pueden acomodar fácilmente las nuevas VLAN haciendo una redistribución de los puertos de los switches. Además, la pertenencia de un miembro de la comunidad universitaria a una VLAN es independiente de su ubicación física. E incluso se puede lograr que un equipo pertenezca a varias VLAN (mediante el uso de una tarjeta de red que soporte trunk).
Imagine que la universidad tiene una red con un rango de direcciones IP del tipo 172.16.XXX.0/24, cada VLAN, definida en la capa de enlace de datos (nivel 2 de OSI), se corresponderá con una subred IP distinta:
En cada edificio de la universidad hay un switch denominado de acceso, porque a él se conectan directamente los sistemas finales. Los switches de acceso están conectados con enlaces trunk (enlace que transporta tráfico de las tres VLAN) a un switch troncal, de grandes prestaciones, típicamente Gigabit Ethernet o 10-Gigabit Ethernet. Este switch está unido a un router también con un enlace trunk, el router es el encargado de llevar el tráfico de una VLAN a otra.
A continuación se presentan a modo de ejemplo los comandos IOS para configurar los switches y routers del escenario anterior.
Creamos las VLAN en el switch troncal, suponemos que este switch actúa de servidor y se sincroniza con el resto: (NOTA, el comando "vlan database" ya no está en uso (deprecated), debe ser sustituido en este ejercicio (configuro el 1.º switch como muestra))
Switch-troncal> enable Switch-troncal# configure terminal Switch-troncal(config)# vlan 10 Switch-troncal(config-vlan)# name administración Switch-troncal(config-vlan)# exit Switch-troncal(config)# vlan 20 Switch-troncal(config-vlan)# name profesores Switch-troncal(config-vlan)# exit Switch-troncal(config)# vlan 30 Switch-troncal(config-vlan)# name alumnos Switch-troncal(config-vlan)# exit
Si se desea comprobar la creación de las VLAN, es posible utilizar el siguiente comando para visualizar VLAN's creadas:
Switch-troncal# sh vlan brief
Definimos como puertos trunk los cuatro del switch troncal:
Switch-troncal(config)# interface range g0/0 -3 Switch-troncal(config-if-range)# switchport Switch-troncal(config-if-range)# switchport mode trunk Switch-troncal(config-if-range)# switchport trunk native vlan 10 Switch-troncal(config-if-range)# switchport trunk allowed vlan 10,20,30 Switch-troncal(config-if-range)# exit
Ahora habría que definir en cada switch de acceso qué rango de puertos dedicamos a cada VLAN. Vamos a suponer que se utilizan las interfaces f0/0-15 para la vlan administración, f0/16,31 para vlan profesores y f0/32-47 para la vlan alumnos.
Switch-1(config)# interface range f0/0 -15 Switch-1(config-if-range)# switchport Switch-1(config-if-range)# switchport mode access Switch-1(config-if-range)# switchport access vlan 10 Switch-1(config-if-range)# exit Switch-1(config)# interface range f0/16 -31 Switch-1(config-if-range)# switchport Switch-1(config-if-range)# switchport mode access Switch-1(config-if-range)# switchport access vlan 20 Switch-1(config-if-range)# exit Switch-1(config)# interface range f0/32 -47 Switch-1(config-if-range)# switchport Switch-1(config-if-range)# switchport mode access Switch-1(config-if-range)# switchport access vlan 30 Switch-1(config-if-range)# exit
Definimos como trunk el puerto que conecta cada switch de acceso con el troncal:
Switch-1(config)# interface g0/0 Switch-1(config-if)# switchport Switch-1(config-if)# switchport mode trunk Switch-1(config-if)# switchport trunk native vlan 10 Switch-1(config-if)# switchport trunk allowed vlan 10,20,30 Switch-1(config-if)# exit
En el router creamos una subinterfaz por cada VLAN transportada en el enlace trunk:
Router(config)# interface f2 Router(config-if)# no ip address Router(config-if)# exit Router(config)# interface f2.1 Router(config-if)# encapsulation dot1q 10 Router(config-if)# ip address 172.16.10.1 255.255.255.0 Router(config-if)# exit Router(config)# interface f2.2 Router(config-if)# encapsulation dot1q 20 Router(config-if)# ip address 172.16.20.1 255.255.255.0 Router(config-if)# exit Router(config)# interface f2.3 Router(config-if)# encapsulation dot1q 30 Router(config-if)# ip address 172.16.30.1 255.255.255.0 Router(config-if)# exit
Esta sería la configuración relativa a la creación de las VLAN, se omite la configuración de otros elementos como los hosts, routers y otros dispositivos de red.