Virtualización da Rede
- Bridges (ip e brctl)
- Veth Pairs
- VLAN
- VXLAN
- VPN
- OpenVSwitch
- As SDN (Software Defined Networks)
4. VXLAN
Que é VXLAN
VXLAN encapsula o tráfico L2 dentro de paquetes UDP en redes L3, permitindo así que segmentos de rede en diferentes subredes actúen como unha rede L2 unificada. Isto é particularmente útil para:
- Aislar redes virtuais en contornas de multitenant.
- Escalabilidade, ao permitir até 16 millóns de redes virtuais grazas ao seu identificador de rede (VXLAN Network Identifier ou VNI).
- Flexibilidade na interconexión de hosts distribuídos en diferentes subredes.
Para configurar VXLAN en Linux, necesitas:
- Unha versión do kernel de Linux 3.8 ou superior (xa que soporta VXLAN de forma nativa).
- O paquete
iproute2, que contén o comandoippara configurar interfaces e rutas. - Conectividade entre os enderezos IP que van participar na rede VXLAN.
1. Configuración de VXLAN en Linux
A continuación explicaremos os pasos para configurar un túnel VXLAN entre dous hosts.
Exemplo de Configuración
Suporemos que temos dous servidores, Host A e Host B, cos seguintes enderezos IP:
- Host A: 192.168.1.10
- Host B: 192.168.1.20
- VNI: 100
a) Crear unha Interface VXLAN
En cada host, crea unha interface VXLAN coa seguinte sintaxe:
ip link add vxlan100 type vxlan id 100 dev eth0 dstport 4789
Explicación dos parámetros:
vxlan100: Nome da interface VXLAN. Escollemos "vxlan100" para indicar que pertence ao VNI 100.id 100: Define o VNI para este túnel. Debe ser o mesmo en ambos hosts para que pertenzan á mesma rede virtual.dev eth0: Interface física a través da cal viaxará o tráfico VXLAN.dstport 4789: Porto UDP estándar para tráfico VXLAN. Pódese omitir, xa que 4789 é o porto por defecto.
b) Configurar o Enderezo IP da Interface VXLAN
Unha vez creada a interface, asignámoslle un enderezo IP en ambos hosts. Por exemplo:
ip addr add 10.0.0.1/24 dev vxlan100 ip link set vxlan100 up
No Host B:
ip addr add 10.0.0.2/24 dev vxlan100 ip link set vxlan100 up
Agora, ambos hosts deberían ser capaces de comunicarse entre eles a través dos enderezos 10.0.0.1 e 10.0.0.2, sempre que o túnel estea configurado correctamente.
c) Configurar o Enderezo de Destino VXLAN
Para definir con quen se debe comunicar cada host, podemos empregar o comando bridge fdb para engadir o enderezo MAC de destino á táboa de reenviamento.
No Host A:
bridge fdb add 00:00:00:00:00:02 dev vxlan100 dst 192.168.1.20
No Host B:
bridge fdb add 00:00:00:00:00:01 dev vxlan100 dst 192.168.1.10
Este comado indica que todo o tráfico destinado á interface VXLAN debe encapsularse e enviarse á IP do outro host.
d) Verificación da Configuración
Para asegurarte de que a configuración é correcta, executa os seguintes comandos:
-
Comproba as Interfaces VXLAN:
ip link show vxlan100 -
Comproba a Conectividade: Tenta facer ping dende
Host AaHost Busando os enderezos VXLAN configurados:ping 10.0.0.2 -
Comproba a Táboa de Reenviamento: Verifica que o enderezo MAC de destino estea configurado correctamente:
bridge fdb show dev vxlan100
e) Configuración de VXLAN con Multicast
Para soportar varios destinos nunha única configuración VXLAN, é posible usar multicast en lugar de configuraciones punto a punto. Isto permite que o tráfico se envíe a múltiples destinos simultaneamente.
Para habilitar VXLAN con multicast, usa un enderezo multicast ao crear a interface:
ip link add vxlan100 type vxlan id 100 dev eth0 group 239.1.1.1 dstport 4789
Neste caso, group 239.1.1.1 é o enderezo multicast que distribuirá o tráfico aos membros desta rede.
f) Configuración Avanzada: VXLAN con VLANs
VXLAN pódese combinar con VLANs para separar o tráfico dentro da mesma rede VXLAN. Configurar isto implica definir VLAN tags nos paquetes que atravesan a interface VXLAN, o que é útil para contornas de varios tenants.
Exemplo de Configuración
Engade unha VLAN á interface VXLAN configurando a interface como unha subinterface VLAN:
sudo ip link add link vxlan100 name vxlan100.10 type vlan id 10 sudo ip addr add 10.1.0.1/24 dev vxlan100.10 sudo ip link set vxlan100.10 up
Neste exemplo, a interface vxlan100.10 creouse coa VLAN ID 10. A configuración de VLAN en VXLAN permite crear varios segmentos illados sobre o mesmo túnel.
## Creacion manual del vxlan
ip link add <novo interface> type vxlan id 1000 dstport 4789 remote 10.0.0.1
ip link set <novo interface> up
ip link set <novo interface> mtu 1450
## Para /etc/network/interfaces.d
## novo interface - Interface vxlan
## bridge - bridge (switch) a crear
auto <novo interface>
iface <novo interface> inet manual
pre-up ip link add <novo interface> type vxlan id 1000 dstport 4789 remote 10.0.0.1
ip link set <novo interface> up
ip link set <novo interface> mtu 1450
post-down ip link set <novo interface> down
post-down ip link del <novo interface>
auto <brigge>
iface <bridge> inet manual
bridge_ports <novo_interface>
bridge_stp off
bridge_fd 0
mtu 1450
2. VXLAN en Open vSwitch
En Open vSwitch, os túneles VXLAN configúranse como portos especiais que se engaden aos bridges, permitindo que o tráfico encapsulado chegue a outros dispositivos compatibles con VXLAN.
Para configurar VXLAN en Open vSwitch, necesitas:
- Unha versión recente de Open vSwitch (a maioría das distribucións actuais inclúen VXLAN).
- Conectividade IP entre os hosts que van formar parte da rede VXLAN.
- Compatibilidade coa encapsulación UDP 4789 (o porto estándar para VXLAN).
3. Configuración Básica de VXLAN en Open vSwitch
A continuación preséntanse os pasos para crear unha configuración VXLAN en Open vSwitch.
3.1 Crear un Bridge para VXLAN
En primeiro lugar, crea un bridge en Open vSwitch onde engadirás o porto VXLAN:
ovs-vsctl add-br br-vxlan
Este bridge funcionará como a interface que xestionará o tráfico de VXLAN encapsulado.
3.2 Crear o Porto VXLAN
Para configurar VXLAN, engade un porto VXLAN ao bridge. Neste exemplo, configuraremos o porto VXLAN con local_ip que representa o enderezo IP do host local e remote_ip para o enderezo do host remoto.
Se necesitas que o tráfico VXLAN chegue a múltiples destinos (unha rede multicast ou escenario punto-a-multipunto), usa remote_ip=flow.
ovs-vsctl add-port br-vxlan vxlan0 -- \ set interface vxlan0 type=vxlan options:local_ip=192.168.1.10 options:remote_ip=192.168.1.20 options:key=100
Explicación dos parámetros:
local_ip: O enderezo IP do host onde configuras VXLAN.remote_ip: O enderezo IP do host de destino. Se queres que este porto acepte tráficos de diferentes orixes, usaflowneste campo.key: Identificador único da VXLAN (VNI). Este valor permite que diferentes túneles se illen entre si; neste caso, o VNI é 100.
ovs-vsctl add-port br0 vxlan1 -- set interface vxlan1 type=vxlan \
options:remote_ip=192.168.1.2 options:key=flow options:dst_port=8472ovs-vsctl add-port br0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip=flow options:key=flowConfiguración de VXLAN Multicast
Se estás a traballar nun ambiente onde varios nodos deben participar na mesma VXLAN, podes usar multicast en vez dun enderezo IP específico en remote_ip. Para isto, configuras un enderezo multicast para remote_ip:
ovs-vsctl add-port br-vxlan vxlan0 -- \ set interface vxlan0 type=vxlan options:local_ip=192.168.1.10 options:remote_ip=239.1.1.1 options:key=100
Neste caso, 239.1.1.1 é un enderezo multicast, e todos os hosts unidos a esta rede recibirán tráfico enviado a este enderezo multicast.
Comprobación da Configuración de VXLAN
Para verificar a configuración da interface VXLAN, utiliza:
ovs-vsctl show
Este comando mostrará información sobre todos os bridges e interfaces, incluída a configuración de VXLAN.
Tamén podes comprobar que a interface VXLAN está a recibir tráfico co comando tcpdump:
tcpdump -i vxlan0
6. Integración de VXLAN con Contedores e Virtualización
Open vSwitch tamén é amplamente utilizado en contornas con contedores e máquinas virtuais para conectar estes recursos a través de VXLANs. Moitos orquestradores como Kubernetes permiten definir redes VXLAN sobre Open vSwitch para interconectar contedores en distintos nós do clúster.
7. Comparativa entre VXLAN e VLANs
| Funcionalidade | VLAN | VXLAN |
|---|---|---|
| Número máximo de redes | 4096 | ~16 millóns (24 bits) |
| Encapsulación | Ningunha (L2) | UDP/L3 sobre L2 |
| Capacidade de extensión L2 | Limitado ao dominio de L2 | Permite extensión sobre L3 |
| Compatibilidade con SDN | Limitado | Alta, integrado en OpenFlow |
| Uso en contornas de cloud | Pouco común | Común en contornas de cloud |