En Windows Sernver 2012, Hyper-V Virtual Switch incluye nuevas características para gestión, seguridad, aislamiento, visibilidad y escalabilidad.
A continuación se muestra un breve resumen de las nuevas características:
- Comandos PowerShell para los Switch de Hyper-V
- Múltiples NICs Virtuales
- Nuevas funcionalidades de Seguridad
- PVLAN (Port Virtual Local Area Network) y "Modo Trunk"
- Port Mirroring (espejo de puertos)
- receive Side Scaling (RSS) y Dynamic Virtual Machine Queue (dVMQ)
Comandos PowerShell para los Switch de Hyper-V
Ahora se puede, desde la línea de comandos ejecutar comandos de forma manual o como parte de un script para configurar un Virtual Switch y sus características.
La sintaxis básica del PowerShell comprende <Verbo>-<Nombre>, como por ejemplo el siguiente ejemplo:
"
Get-VMSwitch"
Los nombres que se pueden utilizar son:
- VMNetworkAdapter
- VMNetworkAdapterAc1
- VMNetworkAdapterVlan
- VMSwitch
Una "VMNetworkAdapter" incluye los siguientes elementos:
- La tarjeta de red virtual en la VM (NIC)
- Un Puerto de Hyper-V Switch
"VMNetworkAdapter" es el nombre principal que puedes utilizar para gestionar varias características de seguridad, Calidad de Servicio QoS, port mirrioring, y demás cuestiones. Seguramente es evidente y no merece indicarlo, pero hay que recordar que es conveniente abrir el PowerShell con la cuenta de administrador, ya que de otra manera los resultados que nos arroja pueden no ser reales.
Para mas información tecleas los siguiente en PowerShell.
Get-Help Set-VMNetworkAdapter
Get_Help *-VMNetworkAdapter (para obtener los verbos de PowerShell)
PS C:\Users\> Get-Help *-VMNetworkAdapter
Name Category Module Synopsis
---- -------- ------ --------
Add-VMNetworkAdapter Cmdlet Hyper-V ...
Connect-VMNetworkAdapter Cmdlet Hyper-V ...
Disconnect-VMNetworkAdapter Cmdlet Hyper-V ...
Get-VMNetworkAdapter Cmdlet Hyper-V ...
Remove-VMNetworkAdapter Cmdlet Hyper-V ...
Rename-VMNetworkAdapter Cmdlet Hyper-V ...
Set-VMNetworkAdapter Cmdlet Hyper-V ...
Test-VMNetworkAdapter Cmdlet Hyper-V ...
Para ver el estado de los adaptadores VMNetworkAdapter tienes que conocer primero las maquinas que tienes en tu servidor y primero teclearías lo siguiente:
PS C:\WINDOWS\system32> Get-VM
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
HV-Ubuntu OffCritical 0 0 00:00:00 No se puede conectar al almacenamiento de configuración...
TestVM Off 0 0 00:00:00 Funcionamiento normal
Con el comando anterior sabemos que el modificador correspondiente a "-VMName" es en nuestro ejemplo "HV-Ubuntu" y "TestVM". Que podremos utilizar para el siguiente comando para obtener todos los detalles del adaptatador virtual:
Get‐VMNetworkAdapter –VMName MyVM | format‐list *
El para ver los Switch que tenemos:
Get-VMSwitch
Pero si queremos mas detalle del Switch como sus características...
Get-VmSwitch -VMName "MyVMswitch" | format-list *
Múltiples NICs Virtuales
En versiones anteriores de Hyper-V, solo se soportaba una tarjeta virtual raíz, mientras que en Windows Server 2012 se soportan múltiples Tarjetas. Además de esto, ahora se puede compartir la tarjeta de red física que está asociada a un Hyper-V Switch con el sistema operativo de gestión.
Nota: Esta funcionalidad hay que activarla ya que no viene por defecto. En el panel de gestión de un virtual switch, hay que acceder al panel de detalles y seleccionar "
Puedes crear varias tarjetas de red virtuales principales que puedes utilizar para "live migration", almacenamiento, o gestión pero lo mejor es que puedes asignarle a cada una de ellas una VLAN diferente. También es posible crear diferentes políticas de QoS para cada interfaz virtual.
A continuación se muestra una representación visual de lo expuesto hasta ahora:
Para crear Tarjetas de red virtuales Virtuales para el sistema operativo de gestión se pueden utilizar los siguientes comandos en Power Shell:
Add-VMNetworkAdapter -ManagementOS -Name Management
Add-VMNetworkAdapter -ManagementOS -Name Storage
Add-VMNetworkAdapter -ManagementOS -Name "Live Migration"
Aunque es de lógica, para elmiminar estas nuevas "tarjetas" se requiere el siguiente comando:
remove-VMNetworkAdapter -ManagementOS -Name Management
remove-VMNetworkAdapter -ManagementOS -Name Storage
remove-VMNetworkAdapter -ManagementOS -Name "Live Migration"
Nuevas funcionalidades de Seguridad
En Hyper-V Virtual Switch tiene las siguientes mejoras:
Port Access Control List (ACLs)
MacAddressSpoofing
RouterGuard
DHCPGuard
IPsec Task Offload (IpsecTO)
1-Port Access Control List (ACLs)
Un "port ACL" es una regla que puedes aplicar en un puerto del Hypwer-V Switch. La regla especifica que paquete está permitido o no en su acceso a la VM. ACLs tienen tres elementos con las siguiente estructura:
Dirección Remota o Local
Dirección
Acción
Puedes especificar una Dirección local o remota, pero no puedes especificar ambas. El valor para esto puede ser IPv4, IPv6 o una dirección MAC o incluso un rango de direcciones IP.
Se pueden configurar varias reglas ACL en un puerto Hyper-V switch. La gestión del trafico ACL puede ser:
Inbound (trafico entrante)
Outbound (trafico saliente)
Both (trafico entrante y saliente)
2-. MacAddressSpoofing
Esta funcionalidad te permite cambiar la dirección MAC origen de una maquina virtual es sus paquetes salientes. Si tienes una VM en que quieras activar esta funcionalidad solo tienes que ejecutar el siguiente comando:
Set-VMNetwoekAdapter -VMName MyVM .MacAddressSpoofing On
Y para bloquear la opción o deshabilitarla:
Set-VMNetwoekAdapter -VMName MyVM .MacAddressSpoofing Off
3-. RouterGuard
RouterGuard te permite especificar que mensajes de anuncio o redirección provenientes de una VM no autorizada deberían ser descartados.
Si tienen una VM que quieres que permita anuncio de rutas o mensajes de redirección desde maquinas no autorizadas, tendrías que ejecutar el siguiente comando:
Set-VMNetworkAdapter -VMName Myvm -RouteGuard off
Y para acctivarlo de nuevo...
Set-VMNetworkAdapter -VMName Myvm -RouteGuard on
4-, DHCPGuard
Permite especificar que mensajes DHCP provenientes de maquinas virtualies pueden ser descartados y asi evitar posible "daños" a nuestra organización. Para las maquinas que realizan esta función, se puede desactivar.
Set-VMNetworkAdapter - Name MyVM -RouteGuard Off (valor por defecto...)
Para desactivarlo...
Set-VMNetworkAdapter - Name MyVM -RouteGuard On
5-. IPsec Task Offload (IpsecTO)
Muchos algoritmos de encriptación hacen uso de forma intensiva del procesador, lo que puede llevar a un pobre rendimiento en la maquina virtual. Hyper-V Virtual Switch proporciona la posibilidad de usar IpsecTo que te permite derivar los procesos de encriptación a la Tarjeta de Red y por tanto utilizar menos CPU del host. Esta función, como es evidente, requiere de una tarjeta de red con esta función.
Port Virtual Local Área Network (PVLAN) y Trunk Mode
El aislamiento de red (Network Isolation) se relaciona también con la seguridad, pero a diferencia de IPSec, que encripta el trafico, el aislamiento segmenta el trafico de manera lógica
El uso de VLANs, por otro lado, sufre problemas de crecimiento sobre todo en entornos altamente virtualizados. El identificador de VLAN está compuesto por un número de 12 bits, y el rango de VLANs se encuentra entre 1-4095. En según que entornos, esto es un gran problema de gestión (lo se por experiencia incluso en entornos no virtualizados).
PVLAN soluciona alguno de los problemas de crecimiento de las VLANS. PVLAN es una característica de puerto del Switch. Con PVLAN existen dos VLAN IDs, un primario VLAN ID y otro secundario. Un PVLAN puede estar en uno de los siguientes tres modos:
Isolated (aislado) Comunica solo con puertos Promiscuos en el PVLAN
Promiscuous (promiscuo) Comunica con todos los puertos en la PVLAN
Community (comunidad) Comunica con puertos en la misma comunidad y con puertos Promiscuos en la PVLAN
PVLAN puede ser usado para crear entornos en los cuales las VMs pueden solo interactuar con Internet y no tener visibilidad del trafico de red de otras VMs. Para lograr esto, coloca todas las VMs (en realidad sus puertos del Hyper-V Switch) en la misma PVLAN con configuracions "isolated" o aislada.El siguiente Script pone el puerto de una VM en una PVLAN en modo "aislado"
Set-VMnetwoerkAdapterVlan -VMName MyVM -Isolated -PrimaryVlanID 10 -SecondaryVlanID 20
Trunk Mode
El Hyper-V Virtual Switch proporciona soporte para "trunk mode" que permite a una VM la posibilidad de ver el tráfico de múltiples VLANS.
En este modo, un puerto switch recibirá trafico de todas las VLANS que se configuran en la lista de VLANs permitidas. También se puede configurar un puerto que de Switch que está conectado a una VM pero que no esta asociado a ninguna tarjeta de red y se requiere en modo trunk
En el siguiente ejemplo la maquina puede mandar y recibir en cualquier VLAN de la lista permitida (VLAN entre la 1 y la 100). Si no hay VLAN especificada en el paquete, el paquete se trata como si proviniera de la VLAN10
Set-VMnetworkadapterVlan -VMName MyVM -Trunk -AllowedVlanIDList 1-100 -NativeVLANId 10
Port Mirroring
Port Mirroring o duplicación de puerto consiste en que el trafico que circula por un puerto es copiado a un puerto duplicado. Esta opción se utiliza para multitud de cosas entre las que pasan depuración de errores de red, sondas, sistemas de analisis y seguridad etc.
En Hyper-V Switch puedes seleccionar varios puertos de Switch como "origen" del trafico o "source" y un puerto como destino o "destination". A continuación se muestra un ejemplo en el cual una máquina denominada "monitorVM" recibe todo el trafico con destino a "myVM" y "MyVM2".
Set-VMNetworkAdapter -VMName MyVM -PortMirroring Source
Set-VMNetworkAdapter -VMName MyVM2 -PortMirroring Source
Set-VMNetworkAdapter -VMName monitorVM -PortMirroring Destination
Receive Side Scaling (RSS) y Dynamic Virtual Machine Queue (dVMQ)
En temas de red, es conveniente resolver los casos en los que el trafico de red es bloqueado o omitido por que puede ocasionar latencia en general.
Para el tráfico nativo, RSS procesa el tráfico entrante de tal manera que no es manejado únicamente por una única CPU/core como ocurriría habitualmente. RSS se encarga de balancear de forma efectiva la gestión del trafico de red entre múltiples CPUs/cores.
dVMQ realiza una operación similar a RSS pero para el tráfico que llega externamente del servidor hacia el Hyper-V Virtual Switch. Con dVMQ, la MAC de destino es marcada para poner el trafico destinado para una Tarjeta de red virtual en una cola especifica. Al igual que ocurre con RSS, se balancea sobre multiples CPUs/cores. Si tus VMs en un un Hyper-V Virtual Switch reciben mucho trafico externo, es una buena idea usar dVMQ.
dVMQ incluye balanceo dinamico. Antiguamente, la mac era marcada de forma estatica, y era difícil de ser manejada por dVMQ. La gestión de dVMQ es es simple y está habilitada por defecto.
Si por algún motivo dVMQ se desactiva, puede ser activado de nuevo con el siguiente comando:
Enable-NetAdapterVmq "mihypervvirtualSwitch"