Virtual Distributed Ethernet (VDE)

Virtual Distributed Ethernet (VDE) forma parte del proyecto Virtual Square y es un switch virtual y gestionable, al que se pueden conectar maquinas virtuales Kernel-based Virtual Machine (KVM).

En el siguiente ejemplo se parte de un host con Gentoo y una única interfaz de red eth0, a la que llega una vlan1 (native) y otra vlan2 (trunk). En el se crea un switch VDE con cinco puertos activos, port1 se asigna a ambas VLAN, es el que conecta el switch virtual con el resto de la red, mientras que port[2-5] se asignan a una única VLAN, como muestra el siguiente esquema.


Instalación y configuración
Lo primero, asegúrate de tener habilitado en el kernel el soporte para 802.1d Ethernet Bridging y Universal TUN/TAP device driver support:
[*] Networking support  --->
        Networking options  --->
                <M> 802.1d Ethernet Bridging
                [*]   IGMP/MLD snooping
Device Drivers  --->
        [*] Network device support  --->
                [*]   Network core driver support
                <M>     Universal TUN/TAP device driver support
Continua con un emerge de Bridge y VDE. Todos disponibles en la rama estable de portage:
emerge -av net-misc/bridge-utils net-misc/vde
Modifica la configuración de la red creando un bridge br0 e indica que este requiere que se haya iniciado la interfaz de red física eth0 y el servicio vde que creara la interfaz virtual tap0.
config_eth0="null"

rc_net_br0_need="net.eth0 vde"
bridge_br0="eth0 tap0"
brctl_br0="setfd 0 sethello 0 stp off"
config_br0="192.168.0.2/24 broadcast 192.168.0.255"
routes_br0="default via 192.168.0.1"
dns_servers_br0="192.168.0.1"
No olvides crear el enlace simbólico para la nueva interfaz de red br0, igual que hiciste con eth0 en su momento.
cd /etc/init.d/
ln -s net.lo net.br0
Edita el archivo de configuración de VDE, para añadir a VDE_OPTS la opción -mgmt indicando la ruta al socket de gestión. Por lo demás los comentarios son bastante claros.
# load the tun module
VDE_MODPROBE_TUN="yes"
# virtual tap networking device to be used for vde
VDE_TAP="tap0"
# mode and group for the socket
VDE_SOCK_CHMOD="770"
VDE_SOCK_CHOWN=":kvm"

# This is the actual options string passed to VDE.  Change this at your own risk.
VDE_OPTS="-tap ${VDE_TAP} -daemon -mgmt /var/run/vde.ctl/mgmt"
Ahora inicia la nueva configuración de red y el switch VDE, puedes añadir ambos servicios al nivel de inicio default para que arranquen con el sistema.
rc-update add vde default
rc-update add net.br0 default
/etc/init.d/net.eth0 stop && /etc/init.d/net.br0 start

Gestión del switch virtual
Para poder gestionar el switch VDE sin necesidad de ser root, tu usuario tiene que pertenecer al grupo que indicaste en /etc/conf.d/vde, mediante VDE_SOCK_CHOWN.
gpasswd -a usuario kvm
Con VDE se incluye una pequeña herramienta, unixterm, con la que conectarte al socket de gestión. Utilízala pasando como argumento la ruta que indicaste en /etc/conf.d/vde con la opción -mgmt a VDE_OPTS.
unixterm /var/run/vde.ctl/mgmt
Ya has accedido a la consola de gestión. Con el comando help puedes ver una lista de todos los comandos disponibles.
VDE switch V.2.2.2
(C) Virtual Square Team (coord. R. Davoli) 2005,2006,2007 - GPLv2

vde$ help
0000 DATA END WITH '.'
COMMAND PATH       SYNTAX          HELP
------------       --------------  -----
ds                 ============    DATA SOCKET MENU
ds/showinfo                        show ds info
help               [arg]           Help (limited to arg when specified)
logout                             logout from this mgmt terminal
shutdown                           shutdown of the switch
showinfo                           show switch version and info
load               path            load a configuration script
[...]
Guarda la configuración en /etc/vde2/vde_switch.rc sin dejar lineas en blanco, para hacer que sea persistente. Siguiendo con el ejemplo, la linea[1] indica que como máximo habrá ocho puertos, en las lineas[2-3] se crea la vlan2 (trunk) y se le añade port1, con las lineas[4-11] se crean y activan port[2-5] y por ultimo en la linea[12] se asigna port5 a la vlan2 (native).
port/setnumports 8
vlan/create 2
vlan/addport 2 1
port/create 2
port/allocatable 2 1
port/create 3
port/allocatable 3 1
port/create 4
port/allocatable 4 1
port/create 5
port/allocatable 5 1
port/setvlan 5 2
Todo listo, ya puedes conectar la Virtualización con Quick Emulator (QEMU) al switch virtual, pero no intentes utilizar livbirt, aun no permite configuraciones de red que usen un switch VDE.