barra de menu

jueves, 18 de mayo de 2017

Capítulo 2: Ethernet Switching and Virtual LANs

Ethernet es una familia de especificación LAN definida por la IEEE en la 802.3. Cada implementación de Ethernet usa un cable concreto y una señal estándar para la capa física con un formato de direccionamiento común.

  • 10Base-T (802.3i) - 10 Mbps
  • 100Base-TX (802.3u) - 100 Mbps
  • 1000Base-T (802.3ab) - 1000 Mbps

Ehternet es una tecnología de la capa de "Data Link o Enlace" en el modelo OSI. Consiste en un medio compartido con un único dominio de broadcast y de colisión. Los datos transmitidos por los nodos se llaman "tramas" (frames). Cada nodo tiene un identificados único y en ethernet se usa la MAC (media access control), que es una dirección de hardware de 48 bits. Para evitar colisiones, ethernet usa CSMA/CD.




Al compartir el medio y haber solo un dominio de colisión, los nodos pueden transmitir simultáneamente. Es la típica topología donde hay un HUB. Esta implementación solo permite un tráfico de datos a la vez. Todos los equipos están escuchando para saber cuando la línea está en estado "IDLE". Solo cuando está en IDLE se puede transmitir. Si varios equipos detectan la línea en IDLE y empiezan a transmitir, se darán colisiones. Cuando hay colisiones se envía una señal "JAM" para notificar que existe una colisión en el segmento. Cuando un equipo detecta una colisión, para de transmitir y espera un tiempo aleatorio para volver a comprobar si está la línea en IDLE y, si lo está, vuelve a transmitir. Cuando en el entorno compartido tenemos un HUB para conectar los equipos, entonces tenemos un único dominio de colisión: la información de un puerto sale por todos los demás.

Cuando los entornos compartidos empiezan a crecer se dan demasiadas colisiones haciendo ineficaz la red, ya que cuantos más usuarios participen en la red más tráfico no querido/destinado llegará a los equipos.


DEFINICIÓN DE BRIDGING


Se define en la 802.1D-2004 de la IEEE. U sa la microsegmentación para dividir un único dominio de colisión en múltiples, más pequeños y "puenteados". Reduciendo el tamaño del dominio de colisión, se reducen las colisiones que se puenda dar. Esto mejora el rendimiento al permitir varios flujos de datos en una LAN o dominio de broadcast.

 En el "bridging" se construye y se mantiene una tabla de envío (forwarding), conocida como "bridge table", para todos los destinos dentro de esa LAN. Esta tabla está basada en las direcciones MAC de origen de todos los equipos que participan en esa LAN. Esto reduce mucho tráfico innecesario.

MECANISMOS DE BRIDGING

Para construir y mantener la tabla, el switch ejecuta 5 pasos: learning, forwarding, flooding, filtering y aging. Vamos a verlos individualmente.



Cuando un switch arranca, no tiene información de los dispositivos que tiene conectados. Learning es el proceso de aprender todas las direcciones mac de los dispositivos conectados y las almacena en la "bridge table". El switch inspecciona las tramas y en la cabecera (header) viene la dirección mac que se guarda en la tabla. 

El aprendizaje o learning se puede deshabilitar en los switches Juniper EX:

   #set ethernet-switching-options interfaces ge-0/0/0.0 no-mac-learning




Si el switch encuentra una entrada en la tabla bridge, enviará el tráfico de destino por ese interfaz.
Si no encuentra una entrada, enviará la trama por todos los puertos (flooding) que pertenezcan a la misma VLAN (que en realidad también es el mismo dominio de broadcast) excepto por el puerto de donde viene el tráfico de origen.


El flooding (inundación) se usa cuando el switch tiene una dirección mac de destino que no está en su tabla bridge o si el paquete recibido es un paquete de broadcast/multicast. El switch inundará por todos los puertos excepto por el puerto donde se recibe (si se origina en el propio switch igualemente inunda por todos los puertos). Cuando esa dirección mac no conocida responde, el switch aprenderá y almacenará el puerto por donde ha entrado y lo asociará en la tabla bridge.


El switch tiene un filtro propio que hace que si en la tabla bridge, la mac del puerto de origen coincide con el puerto de destino, no se enviará. Un ejemplo claro es cuando tenemos un HUB, ya que estos no diferencian por VLAN.



El "aging" es un recurso usado por el switch y otros dispositivos de comunicaciones que hace que mantengan las direcciones mac en la tabla de bridge, pero únicamente las activas. Cuando recibe tráfico de esa mac, establece un tiempo de espera (que se renueva cada vez que recibe tráfico). Si pasa el tiempo y no ha recibido más tráfico, el switch elimina la mac de la tabla. El tiempo por defecto es de 300 segundos. Se puede configurar en global o incluso por VLAN:

user@switch# set ethernet-switching-options mac-table-aging-time XXX

user@switch# set vlans vlan-name mac-table-aging-time XXX


Para ver la tabla de mac:

show bridge mac-table - En equipos MX

show ethernet-switching table - En equipos EX

Para limpiarla sería:

clear bridge mac-table - En equipos MX

clear ethernet-switching table - En equipos EX

Si usamos la interrogación podremos ver las diferentes opciones que nos da, como por ejemplo, limpiar solo la tabla de una VLAN particular o lo que aprende por una interface específica.


NOTA: para el examen JN0-360, Juniper nos pide conocimientos del sistema operativo JunOS anterior a la introducción del ELS (Enhanced Layer 2 Software). Hay un serie de diferencias respecto a los comandos. La más grande y reconocible es que en la ELS se usa la arquitectura "ethernet-switching".
Aquí tenéis un enlace para ver a partir de que versión y que equipo se ha actualizado:

https://www.juniper.net/documentation/en_US/junos/topics/task/configuration/getting-started-els.html


VLANS 

Una VLAN es una colección de nodos que están agrupados de forma "lógica" (no física) para formar dominios de broadcast separados.

Tiene los mismos atributos que una LAN física, pero la diferencia es que no necesita que los dispositivos estén físicamente en la misma ubicación. Aportan flexibilidad para el diseño de una red, pues se pueden agrupar usuarios individuales segúnlas necesidades del negocio y agrega seguridad. Se establece y mantiene la seguridad a través de la configuración del software.

Los pc's que pertenecen a la misma VLAN tienen conectividad entre ellos
TIPOS DE PUERTOS



Los puertos de acceso suelen tener conectados usuarios finales, pc's, servidores, impresoras, teléfonos, etc. Suelen pertenecer a una sola VLAN (hay una excepción para la voip).

Los puertos troncales (trunks) se conectan a otro switch o a un router. Son los puertos capaces de transportar múltiples VLANs dividiendo el tráfico en base a las etiquetas (tag) con el VLAN ID apropiado. También pueden transportar tramas sin etiqueta usando el atributo native-vlan-id. Además, los puertos troncales envían el tráfico de control sin etiquetar.

TRAMA ETHERNET 802.1Q


Las tramas individuales se etiquetan a lo largo de su paso por la red.

En los puertos troncales se pasan múltiples VLAN






DOMINIO DE BRIDGE/BROADCAST

Para permitir a los equipos MX actuar como un switch y construir una tabla de mac,se debe especificar primero la VLAN que se utilizará para el propósito de switching. Para ello hay que especificar el ID de VLAN en un dominio. Esto requiere que configurar cada VLAN como parte de un dominio:


Para asignar varias VLANs a un mismo "bridge" usaremos el comando vlan-list-id.

Una vez creado, asignamos una interface al bridge y la configuramos como "access":

La unidad (unit) debe ser la 0

CONFIGURACIÓN DE UN PUERTO TRONCAL 802.1Q






Vemos como se configura un puerto troncal. El switch enfrentado tendrá una configuración igual.

Se puede ver el uso del comando "native-vlan-id". Si la interface ge-1/0/3 recibe tramas sin etiqueta, el equipo las asociará a la vlan 100. Si el interface transmitiera tramas asociadas con la vlan 100, estas irán sin etiqueta.

Podemos ver también el uso del "vlan-id-list". Tenemos unos ejemplos de su uso:

  • vlan-id-list [100]: solo la VLAN 100
  • vlan-id-list [100-200]: todas entre la 100 y la 200, ambas incluidas
  • vlan-id-list [100-109 111-200]: todas entre la 100 y la 200 excepto la 110
  • vlan-id-list [100-109 111 113-200]: todas entre 100 y 200 excepto 110 y 112

Para monitorizar estos puertos troncales:





Desde un punto de vista práctico, a la hora de reducir broadcast innecesario, no debemos configurar VLANs en los troncales que no tengan esos servicios conectados. Para automatizar esta tarea, podemos usar el protocolo MVRP.


INTRODUCCIÓN A MVRP (Multiple VLAN Registration Protocol)

Es un protocolo para simplificar la administración de las VLAN. Si lo configuramos en los switches, cuando estos detectan que no tienen puertos activos de la VLAN hacen un "pruning" (poda) de esa VLAN. También se puede usar MVRP para crear VLANs dinámicamente.

MVRP es una aplicación del protocolo MRP (Multiple Registration Protocol) definido en la IEEE 802.1ak.

Este protocolo intercambia PDUs entre los switches que participan en el escenario para enviar la información del registro de las VLAN. De esta manera MVRP está sincronizado. Estas PDUs se envían cuando MVRP detecta un cambio de estado. Estos envíos están basados en los tiempos (timers) que MVRP tiene configurado.

El registro y actualización de MVRP está controlado por los tiempos que son parte del MRP. Se configuran en base a las interfaces y definen cuando pueden ser enviadas las PDUs y cuando el MVRP puede ser actualizado en el switch. Los siguientes tiempos son usados para controlar las operaciones MVRP:

  • JOIN: controla el intervalo para la siguiente PDU que se envíe
  • LEAVE: controla el periodo de timepo que una interface espera en este estado antes de cambiar al estado de "unregistered"
  • LEAVEALL: controla la frecuencia con al que el interface genera los mensajes de "Leaveall"
 La información VLAN es distribuida como parte de los mensajes de intercambio de MVRP and puede ser usado para crear VLANs, es decir, un switch crea una VLAN y se propaga a los otros switches. La creación dinámica de VLANs está habilitada por defecto pero peude ser deshabilitad.

MVRP y MRP usan mensajes para registrar y declarar los estados del switch y para informar sobre los cambios de estado. Los siguientes mensajes son comunicados por MVRP:

  • EMPTY: la información VLAN no está ni declarada no registrada
  • IN: la información VLAN no está declarada pero sí registrada
  • JOINEMPTY: la información VLAN está declarada pero no registrada
  • JOININ: la información VLAN está declarada y registrada
  • LEAVE: la información VLAN que ha sido previamente registrada está ahora revocada
  • LEAVEALL: todos los registros serán "de-registrados". Los participantes que quieran entrar en el escenario MVRP deberán registrarse de nuevo.
  • NEW: la información VLAN es nueva y psoiblemente no se haya registrado previamente
 
MVRP está deshabilitado por defecto en los MX. Solo puede ser configurado en los puertos troncales. Es importante saber que MVRP no soporta protocolos STP (Spanning Tree Protocols)

Configuración de MVRP




Una vez habilitado MVRP, la información de VLAN será creada y compartida dinámicamente por todos los switches participantes. Si quisiéramos deshabilitar la forma dinámica de MVRP:



AS-1# set protocols mvrp no-dynamic-vlan


Como el registro y actualización de MVRP depende de los tiempos que configuremos:


[edit protocols]
user@AS-1# set mvrp interface ge-0/0/14 ?
Possible completions:
<[Enter]> Execute this command
+ apply-groups Groups from which to inherit configuration data
+ apply-groups-except Don't inherit configuration data from these groups
join-timer Join timer interval (100..500 milliseconds)
leave-timer Leave timer interval (300..1000 milliseconds)
leaveall-timer Leaveall timer interval (10..60 seconds)
point-to-point Port is point to point
registration Registration mode
| Pipe through a command


Los tiempos por defecto son:

  • Join Timer: 200 ms
  • Leave Timer: 800 ms
  • Leaveall Timer: 10.000 ms
Juniper no recomienda modificar estos tiempos


A la hora de monitorizar MVRP tenemos varios comandos:




IRB (Integrated Routing and Bridging)

Si usamos un siwtch de capa 2, que no tenga funcionalidades de capa 3, a la hora de proveer enrutamiento entre diferentes subredes, necesitaremos un router para ello (Routing On a Stick).





Con una interface IRB, que es una interface lógica, podemos crear una puerta de enlace para la VLAN.


Ejemplo de configuración de IRB



El switch hace una búsqueda de capa 3 cuando recibe el tráfico con la dirección mac de destina que coincida con su propia dirección mac. Para que el switch pueda enrutar, los dispositivos conectados deben tener configurada la dirección ip de su puerta de enlace y, esta debe coincidir con la dirección ip de la IRB.

Monitorización de IRB


 

Verificación de enrutamiento



Como cualquier router, cuando configuramos una dirección ip en una interface, este añade automáticamente la ruta a la tabla de enrutamiento. En Junos, cada IP configurada en una interface, añade dos rutas: una como host (mácara de 32 bits) que la usa para enviar tráfico a la RE cuando los paquetes están destinados al propio router y, otra ruta de la subred a la que pertenece. Esta última es la utiliza para enviar los paquetes a otros equipos de esa misma subred.


APRENDIZAJE Y ENVÍO DE DIRECCIONES MAC

Un switch aprende la fuente de las direcciones mac a través de las tramas que entran y también por el proceso de inundamiento (flooding). El sistema operativo Junos nos permite modificar el comportamiento de aprendizaje ya sea a nivel de interface, de dominio, de switch virtual o a nivel global.

Los valores posibles para configurar son:

  • Intervalo Mac Timeout: 10s - 1.000.000s (300s por defecto)
  • Estadísticas Mac: deshabiliado por defecto
  • Límite Globlal Mac: 20 - 1.048.575 (393.215 por defecto)
  • Límite Switch Mac: 16 - 1.048.575 (5.120 por defecto)
  • Límite "Bridge Domain" Mac: 16 - 1.048.575 (5.120 por defecto)
  • Límite Interface Mac: 1 -131.071 (1.024 por defecto)
Si habilitamos las Estadísticas Mac, usaremos el siguiente comando para verlas:

show bridge mac-table extensive -para equipos MX

show ethernet-switching statistics - para equipos EX (ELS)

Para configurar estos valores debemos ir a la jerarquía correcta en el Junos:


En rojo se marca el nivel donde se configura



Otra característica a tener en cuenta es que cuando la tabla que almacena las mac llega a su límite de tamaño, para resolver las mac no aprendidas se hace un inundación (flooding)  por defecto. Como hemos visto este límite se puede aumentar y, también podemos cambiar el comportamiento a la hora de tratar esto, haciendo que el equipo descarte las tramas con direcciones mac que no conozca:




Algunos ejemplos para ver información:



FILTROS DE FIREWALL DE CAPA 2

Se pueden usar filtros para controlar las tramas destinadas a la RE y las que pasan a través del equipo.

Se pueden definir filtros que afecten solo al tráfico de entrada o al de salida. Estos puede aceptar o descartar tramas basándose en el contenido de estas, ya sea por las direcciones, el tipo de protocolo, la etiqueta VLAN, etc.

La síntaxis de estos filtros es muy parecida a la de las políticas:

 Como se puede apreciar, estos filtros de capa 2 se aplican bajo "firewall family bridge". 

Al menos es necesario un término (term) y estos son procesados de manera secuencial. Si no hay un "from" presente, entonces todas las tramas son macheadas (coinciden). Si ninguna trama coincide con las condiciones, entonces la acción por defecto es descartar la trama de manera silenciosa (no se notifica a la fuente que se ha descartado).

Un filtro puede aceptar la trama para su envío o su descarte, pero también se puede aplicar un contador para el registro.

Se pueden aplicar en interfaces individuales, a nivel de "bridge domain" o en ambos.

A nivel de interface se puede usar un filtros de input, output o ambos. También se puede aplicar una cadena de filtros usando "input-list o output-list".

A nivel de "bridge domain" solo se pueden aplicar filtros de input. Sucede lo mismo si queremos aplicar en la interface y el dominio a la vez: solo de input. En este caso se procesaría primero el filtro en el interfaces y después el del dominio.

Ejemplos de configuración

Una configurado el filtro se debe aplicar a una o más interfaceso a nivel de bridge como vemos en el ejemplo.

Hay que tener en cuenta que no se pueden usar filtros a nivel del "bridge domain" cunado este se ha creado con el comando "vlan-id list".


En cuanto a los términos (terms) podemos configurar uno solamente y el filtro sería evaluado de la siguiente manera:
  • Si coinciden (match )las condiciones de la trama, se ejecuta la acción configurada en el "then". Si no coincide, se descarta.
Si tenemos múltiples términos, el filtro se evalúa secuencialmente. Lo primero es ver si coinciden las condiciones en el apartado "from" en el primer "term". Si coinciden, se ejecuta la acción del "then". Si no coinciden, se evalúa el "from" del segundo "term" y así continuamente hasta que coincida o no hasta le final del filtro:
  • Si la trama pasa a través de todos los "term" y no coincide con ninguno, esta se descarta.
  • Si un "term" no tiene "from" configurado, se considera que la trama coindice y se ejecutará la acción del "then".
  • Si el "term" no tiene ningún "then" o no se configura ninguna acción dentro del "then" y, la trama coincide con alguna condición del "from", el equipo acepta la trama.
En vez de aplicar un único filtro a la interface usando el "input o output", se puede aplicar una lista de hasta 16 filtros. Esto se haría con los comandos de input-list y output-list.

Lista de condiciones posibles:



Lista de acciones posibles:
Las acciones que se pueden aplicar a una trama son accept o discard (aceptar o descartar). Pero también se pueden incluir modificadores:
  • count: cuenta el número de veces que coincide. Con show firewall se ven.
  • forwarding-class: se usa para CoS. Especifica la cola donde iría la trama.
  • loss-priority: cambia el bit de "packet loss".
  • next: permite a la trama ser evaluada por el siguiente "term".
  • next-hop-group: especifica el next hop (siguiente salto) que se aplica
  • policer: aplica un "rate limit" (limitación de cantidad de tráfico)
  • port-mirror: copia la trama para ser enviada por una interface de salida concreta para analizarla. La trama original se envía normalmente.

Ejemplo de configuración










No hay comentarios:

Publicar un comentario