Redes y Virtualización: Introducción a VNUML Antonio Ruiz Martínez Rafael Marín López Fernando Pereñíguez García Jesús Damián Jiménez Re
Dpto. Ingeniería de la Información y las Comunicaciones (DIIC)
Introducción Redes suelen ser bastante complejas:
Diversos dispositivos (ordenadores, hubs, switches, routers, …) Varios interfaces Varios protocolos ejecutándose Conexiones físicas que originan topologías complejas Instalación compleja: equipos, cableado, tarjetas, etc REDES
Introducción Problemas a la hora de experimentar con las redes:
A veces puede ser inviable La red actual no puede ser utilizada para experimentos Habría que coordinar distintos departamentos en un compañía o distintos laboratorios y servicios en una Universidad Los equipos de red son caros Instalación compleja: equipos, cableado, tarjetas, etc Operación y mantenimiento costosa Gestión de múltiples configuraciones Reconfiguración rápida del laboratorio
Desarrollo de decenas de scripts Cambios en las conexiones físicas
Garantizar el acceso a los equipos:
REDES
Necesidad de servidores de terminales para acceso consolas
Introducción Técnicas de Virtualización VS implementación en sistemas reales
Reducir costes de gestión y despliegue
Virtualización: una técnica (normalmente con un software asociado) que permite encapsular una unidad de proceso (ya sea un programa, un sistema operativo o incluso un equipo completo, dependiendo de a que profundidad se sitúe el nivel de virtualización) para su ejecución dentro de un entorno en un equipo anfitrión que emula el entorno real transparentemente.
Medida de bondad: grado de similitud
REDES
Introducci贸n M谩quinas virtuales + redes emuladas en el equipo anfitri贸n = escenarios de red virtuales Posibilidad de conexiones externas Escenario emulado Nodos emulados Red 2 Red 1
Red 3 Red1
Red2
Red3
Red 4 Red4
Internet
Redes emuladas
Escenario real Internet REDES
Equipo anfitri贸n
Introducción Ventajas de la virtualización:
Ahorro costes de infraestructura
Menor número de dispositivos hardware
Menores costes de adquisición y mantenimiento Menor consumo de energía
Mayor aprovechamiento recursos (p. ej. servidores) Simplifica la gestión (múltiples equipos: configuración, detección de errores,…) Mayor confiabilidad Sustitución ante caídas
Reducen la complejidad de las copias de seguridad
REDES
Introducción Ventajas de la virtualización:
Ahorro costes de infraestructura
Menor número de dispositivos hardware
Menores costes de adquisición y mantenimiento Menor consumo de energía
Mayor aprovechamiento recursos (p. ej. servidores) Simplifica la gestión (múltiples equipos: configuración, detección de errores,…) Mayor confiabilidad Sustitución ante caídas
Reducen la complejidad de las copias de seguridad
REDES
Introducción Ventajas de la virtualización:
Ahorro costes de infraestructura
Menor número de dispositivos hardware
Menores costes de adquisición y mantenimiento Menor consumo de energía
Mayor aprovechamiento recursos (p. ej. servidores) Simplifica la gestión (múltiples equipos: configuración, detección de errores,…) Mayor confiabilidad Sustitución ante caídas
Reducen la complejidad de las copias de seguridad Ahorro de costes software Capacidad de rollback un sistema operativo REDES
Introducción Escenarios de aplicación:
Optimización de la Infraestructura Tecnológica Uso de recursos infrautilizados
Continuidad/Recuperación ante desastres Pruebas y desarrollo Pruebas software, sistemas operativos Distintas configuraciones
Infraestructura de escritorio virtual Mayor control información
Soporte a sistemas operativos y aplicaciones antiguas
REDES
Introducción Desventajas Virtualización:
Hardware de mayor potencia Menor rendimiento de las aplicaciones Servidor puede ser un único punto de fallo REDES
Introducción Herramientas:
Plex86 Bochs Jails Vmware Qemu Imunes VELNET
UML (User Mode Linux) SNB UML My Linux Netwok (MLN) VNUML NetKit NetGUI …
Comparativa plataformas máquinas virtuales
http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines
Herramientas para simulación de redes: OPNET IT, NS2, Boson NetSIM,…
Inconvenientes: no se participa activamente en la configuración de la red. REDES
UML User-Mode Linux (UML)
Modificación de las fuentes del núcleo Permiten su ejecución como un proceso de usuario Cada proceso UML => tiene asociados recursos Funcionalidad: Núcleo Linux => creación máquina virtual Permite la conexión de máquinas virtuales (redes virtuales) Posibles conexiones: Máquina real-máquinas
virtuales Máquinas virtuales-exterior REDES
UML
REDES
UML Varias máquinas virtuales puede ser lanzadas en un solo PC Las máquinas virtuales están conectadas a un dominio de colisiones virtual y así se pueden comunicar entre ellas Una máquina virtual puede desempeñar varios roles: host, router or switch REDES
UML
REDES
UML -> VNUML Problema: herramienta compleja cuando se quiere construir escenarios con múltiples máquinas/redes
Conocimiento sistema Linux: dispositivos tap, sockets UNIX, bridges virtuales, …
Solución: VNUML.
El usuario se centra en la definición del escenario a simular. Además, facilita la gestión de máquinas virtuales Conexión directa máquina anfitriona Consolas directas
REDES
VNUML VNUML (Virtual Network User Mode)
Desarollada inicialmente en el proyecto IST Euro6IX Herramienta de Software Libre basada en UML Open Source con licencia GPL Proyecto en Sourceforge
http://www.dit.upm.es/vnumlwiki/index.php/Main_Page Software, live-cd, tutorial, ejemplos, documentación, soporte,… LiveCD basado en Knoppix LiveDVD basado en Ubuntu Componente para lanzarlo desde VMWare y coLinux
Simplifica la construcción de escenarios virtuales REDES
VNUML Escenarios:
Prueba de aplicaciones de red: routing, DNS, Web, … Probar funcionalidad.
Despliegue de laboratorios. Redes señuelo (honeynet): estudio amenazas. Hosting: servidores virtuales.
REDES
VNUML Instalación (apt-get o desde fuentes):
VNUML UML y paquetes PHP
Otros paquetes: vlan, xterm, bridge-utils y screen Kernel UML Sistema de Ficheros Crear enlaces simbólicos REDES
VNUML Componentes:
Lenguaje XML => definición del sistema emulado Parser => Construcción de la simulación
REDES
VNUML Consumo de recursos:
CPU. Memoria física. Espacio en disco. Ficheros COW (Copy-on-write)
REDES
VNUML Funcionamiento:
Modos funcionamiento parser (vnumlparser.pl):
Construcción topología. Arranque y parada de la simulación. Destrucción de la topología. No el contenido del SF. REDES
Ciclo de vida de una simulaci贸n Escenario emulado Nodos emulados
Descripci贸n Escenario en XML
VNUML Redes emuladas
REDES
Equipo anfitri贸n
Ciclo de vida de una simulación Fase de diseño
Número de máquinas, topología,…
Fase de implementación:
Fichero VNUML
Fase de ejecución
Crear el escenario: crear redes virtuales, máquinas virtuales, configurarlas,… vnumlparser. -t
Ejecutar comandos: ejecución de secuencias de comandos vnumlparser.pl -x
Liberar el escenario: redes virtuales, máquinas virtuales,… NO libera (por defecto) los sistemas de ficheros usados por las máquinas virtuales!!! vnumlparser.pl –d vnumlparser.pl –P
REDES
FASE DE DISEテ前
REDES
FASE DE DISEÑO Tipos de privilegio:
Privilegios de Usuario Limitado
Sin privilegios de root. No hay red de acceso. No se puede ejecutar comandos.
Privilegios de Usuario
Sin privilegios de root. Red de acceso al host. Acceso a redes externas. Se pueden ejecutar secuencias de comandos.
Privilegios de Root REDES
Usuario root. Configuración del host. Gestión Privada. Conexión directa hacia redes externas.
FASE DE IMPLEMENTACIÓN Fichero XML: DTD VNUML. Versión 1.7. Language Reference:
http://www.dit.upm.es/vnumlwiki/index.php/Reference_1.7
Estructura:
Cabecera <?xml version="1.0"?> <!DOCTYPE vnuml SYSTEM "/usr/share/xml/vnuml/vnuml.dtd">
Elemento raíz ( <vnuml> ) REDES
Definiciones globales ( <global> ) Redes virtuales ( <net> ) Máquinas virtuales ( <vm> ) Configuración del host ( <host> )
FASE DE IMPLEMENTACIÓN Fichero XML: DTD VNUML. Versión 1.7. Estructura:
Cabecera
<?xml version="1.0"?> <!DOCTYPE vnuml SYSTEM "/usr/share/xml/vnuml/vnuml.dtd">
REDES
Fichero Modelo <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE vnuml SYSTEM "/usrl/share/xml/vnuml/vnuml.dtd">
Cabecera
<vnuml> <global> … </global> <net name="Net0"/> … <net name="NetX"/> <vm name="uml1"> … </vm> … <vm name="umlX"> … </vm> <host> … </host> </vnuml>
Descripción Simulación
REDES
Definiciones Globales Redes
Máquinas Virtuales
Host
Definiciones globales <version>: versión del parser.
En el laboratorio: 1.7
<simulation_name>. Nombre de la simulación. <ssh_version>. Opt. Versión SSH. <ssh_key>. Opt. Clave autorizada para ejecución remota. <automac>. Opt. Generación automática de MACs. <netconfig>. Opt. Configuración interfaces y bridges. STP y modo promiscúo. REDES
Definiciones globales (II) <vm_mgmt>. Opt. Interfaz de gestión.
Atributo Type: net, private, none. En el laboratorio: net y none.
NET
REDES
PRIVATE
Definiciones globales (III) <vm_mgmt>. Opt. Interfaz de gestión.
Atributos network y mask. Máscara de la red de gestión. En el laboratorio:
Network: 10.250.0.0 Mask: 24
<mgmt_net>: (net). Atributo: sock: Socket
En el laboratorio: /var/run/vnuml/Mgmt_net.ctl
Atributo: hostip: IP.
En el laboratorio: 10.250.0.1
<host_mapping> REDES
Definiciones globales (IV) <tun_device>: Opt. Crear interfaces de red. <vm_defaults>: Para especificar los valores por defecto en las máquinas virtuales
<filesystem>: sistema de ficheros por defecto.
default value: PREFIX/vnuml/filesystems/root_fs_tutorial
with type="cow
En el laboratorio:
/usr/share/vnuml/filesystems/root_fs_tutorial
<mem>: Memoria.
Default value: 32Mb.
<kernel>: para especificar el kernel por defecto Default value: PREFIX/vnuml/kernels/linux En el laboratorio: REDES
/usr/share/vnuml/kernels/linux
Definiciones globales (V) <vm_defaults>:
<shell>: shell por defecto. Default value: /bin/bash
<basedir>: directorio para las etiquetas filetree. Default value: /
<mng_if>: Default value: management interface
<console>: Permite acceder a la máquina virtual por medio de una consola xterm, línea tty o pts. Por defecto, no hay salida <xterm>: terminal por defecto. Default value: xterm REDES
Definiciones globales (VI) <vm_defaults>:
<route>: Permite especificar rutas estáticas. <forwarding>: Activa el reenvío de paquetes IP. <user>: Permite la creación de usuarios en la máquina virtual <filetree>: Especifica un directorio que será copiado a la máquina virtual
REDES
Definiciones globales (VII) <?xml version="1.0"?> <!DOCTYPE vnuml SYSTEM "/usr/share/xml/vnuml/vnuml.dtd">
<vnuml> <global> <version>1.7</version> <simulation_name>tutorial-lu</simulation_name> <automac/> <vm_mgmt type="none" /> <vm_defaults> <filesystem type="cow">/usr/share/vnuml/filesystems/root_fs_tutorial</filesystem> <kernel>/usr/share/vnuml/kernels/linux</kernel> </vm_defaults> <console id=“0”>xterm</console> </global> … <vnuml> REDES
Redes virtuales <net>: configura redes virtuales.
No define IP ni máscara Atributo name: identifica la red. Atributo mode. Modos: virtual_bridge. Privilegios de root. uml_switch. Sin privilegios de root.
Atributo type. Tipo de Red: lan o ppp. Atributo hub (uml_switch). Valores: yes o no. Por defecto: switch REDES
Definiciones globales <?xml version="1.0"?> <!DOCTYPE vnuml SYSTEM "/usr/share/xml/vnuml/vnuml.dtd">
<vnuml> <global> … </global> <net name="Net0" mode="uml_switch"/> <net name="Net1" mode="uml_switch“ hub=“yes” /> … <vnuml> REDES
Máquinas virtuales (I) <vm>: Configura máquina virtual
Atributo name: nombre máq.. Virtual (7 máx.) Atributo order: orden en que serán lanzada. <filesystem>: Opt. Sistema de ficheros. Atributo type: direct, copy, hostfs, cow
<mem>: Opt. Memoria RAM. Default: 32M. <kernel>: Opt. Fichero kernel. <shell>: Interprete shell para comandos. <basedir>: Establece el path inicial para el comando filetree. <mng_if>: Opt. Evitar red de gestión. REDES
Máquinas virtuales (II) <vm>: Configura máquina virtual
<console>: Opt. Especificar la salida (xterm, tty, pts) Ej:
<console id=“0”>xterm</console> <console id=“1”>tty:/dev/tty8</console>
<xterm>: Opt. Comando para xterm.
<xterm> xterm,-T TituloVentana,-e</xterm>
<if>: Optional. Configurar interfaz de red.
Atributos id y net. ID 0 reservado. <mac>: Opt. Dirección MAC. <ipv4>: Opt. Dirección IPv4. Máscara def. clase C. Atributo mask. Default: “255.255.255.0”. <ipv6>: Opt. Dirección IPv6. No atributo mask. Sufijo / en la dirección.
REDES
Máquinas virtuales (III) <vm>: Configura máquina virtual
<route>: Opt. Ruta estática: gateway. Atributo type. Valores: ipv4, ipv6.
<forwarding>: Opt. Activa el forwarding. Atributo type. Valores ip, ipv4, ipv6.
<user>: Opt. Creación de usuarios. Atributos username y group. <group>: Opt. Grupos adicionales. <ssh_key>: Opt. Claves autorizadas.
<filetree>: Opt. Directorio a copiar en vm. Atributos root, when y user. Ej: <filetree when="start"
root="/etc/bind">/usr/share/vnuml/examples/dns/ns1</filetr ee>
REDES
Máquinas virtuales (IV) <vm>: Configura máquina virtual
<exec>: Opt. Comando a ejecutar. Atributos seq y type. seq: nombre de la secuencia type: verbatim y file. Ej:
<exec seq="sample" type="verbatim">/usr/local/bin/sample1.sh</exec> <exec seq="test" type="verbatim">/usr/local/bin/test1.sh</exec> REDES
Máquinas virtuales (V) <net name="Net0" mode="uml_switch"/> … <vm name="uml3"> <console id=“0”>xterm</console> <xterm>xterm,-T Router,-e</xterm> <if id="1" net="Net0"> <ipv4>10.0.0.3</ipv4> </if> <if id="2" net="Net1"> <ipv4>10.0.1.1</ipv4> </if> <route type=“ip" gw="10.0.1.2">10.0.2.0/24</route> <forwarding type="ip" /> </vm> </vnuml> REDES
Configuración del host (I) <host>: Configuración del host.
Sólo root Similar a <vm>: <route>, <forwarding>, <start>, <stop>, <exec>. <hostif>: Opt. Similar a <if>. <physicalif>: Opt. Recuperar configuración previa.
REDES
Configuración del host (II) … <vm name="uml3"> … </vm> … <host> <hostif net="Net3"> <ipv4>10.0.3.2</ipv4> </hostif> <route type="inet" gw="10.0.3.1">10.0.0.0/16</route> </host> </vnuml> REDES
Ejemplo 1 2
<vnuml> … <net name=“link10” /> <net name=“site10” /> … <vm name="RRE2"> <if id="1" …> <if id="2" …> <if id="3" net="link10"> <ipv4 mask="255.255.255.252">195.1.95.229</ipv4> </if> </vm>
RRE2 3
.229
/30 8 2 .2 .95 1 . 195 .230 1
R10 2
.65
195.1.93.64/26 .66 1
Site 10
PC10
<vm name=“R10"> <if id="1" net="link10"> <ipv4 mask="255.255.255.252">195.1.95.230</ipv4> </if> <if id="2" net=“site10"> <ipv4 mask="255.255.255.192">195.1.93.65</ipv4> </if> </vm> <vm name="PC10"> <if id="1" net=“site10"> <ipv4 mask="255.255.255.192">195.1.93.66</ipv4> </if> </vm> … </vnuml>
REDES
FASE DE EJECUCIÓN (I) Arranque: VNUML
Usuario: alumno
Directorio de la instalación:
/usr/share/vnuml xhost +, xhost +local:
Creación escenario simulación
vnumlparser.pl –t Ejemplo: vnumlparser.pl –t simple.xml –v Login: root Passwd: xxxx
Directorio de trabajo: ~/.vnuml
~/.vnuml/LOCK ~/.vnuml/networks/ ~/.vnuml/simulations/ ~/.vnuml/simulations/simulationname/vms/
REDES
FASE EJECUCIÓN (II) Ejecutar comandos:
vnumlparser.pl –x sequence@VNUML_file sequence: exec Ejemplo: vnumparser.pl –x sample@file.xml
<exec seq="sample" type="verbatim">/usr/local/bin/sample1.sh</exec> <exec seq="test" type="verbatim">/usr/local/bin/test1.sh</exec> <exec seq="sample" type="verbatim">/usr/local/bin/sample2.sh</exec> <exec seq="test" type="verbatim">/usr/local/bin/test2.sh</exec>
REDES
FASE DE EJECUCIÓN (III) Liberar escenario:
vnumlparser.pl –d file.xml -v Envía CTRL+ALT+DEL No se pierde el escenario
vnumlparser.pl –d file.xml –v -F Envía HALT Puede corromper el sistema
vnumparser.pl –P file.xml Borra los cambios
REDES
EJEMPLOS /usr/share/vnuml/examples Ejemplos:
tutorial_limited_user.xml tutorial_user2.xml
REDES
tutorial_limited_user.xml cd /usr/share/vnuml/examples vnumlparser.pl â&#x20AC;&#x201C;t tutorial_limited_user.xml -v uml1:~ # traceroute -n 10.0.2.2 uml5:~ # traceroute -n 10.0.0.1
REDES
tutorial_user1.xml
REDES
cd /usr/share/vnuml sudo ./scriptlimiteduser1RootRelease sudo ./scriptlimiteduser1Root cd /usr/share/vnuml/examples vnumlparser.pl â&#x20AC;&#x201C;t tutorial_user1.xml -v uml1:~ # traceroute -n 10.0.3.2 uml5:~ # traceroute -n 10.0.3.2 bauer@host$ traceroute -n 10.0.0.1 bauer@host$ traceroute -n 10.0.2.2 cd /usr/share/vnuml sudo ./scriptlimiteduser1RootRelease
tutorial_user2.xml
cd /usr/share/vnuml/examples sudo ./scriptManagementNetworkRelease.sh sudo ./scriptManagementNetwork.sh ssh-keygen â&#x20AC;&#x201C;t rsa1 vnumlparser.pl â&#x20AC;&#x201C;t tutorial_user2.xml -v ssh -1 root@10.250.0.4 vnumlparser.pl -x start@tutorial_user2.xml -v uml1:~ # tail -f /tmp/hello vnumlparser.pl -x stop@tutorial_user2.xml -v REDES
URLs Versión 1.7 Tutorial:
http://www.dit.upm.es/vnumlwiki/index.php/Tutorial_1.7
Instalación:
http://www.dit.upm.es/vnumlwiki/index.php/Installation_1.7
Manual de Usuario:
http://www.dit.upm.es/vnumlwiki/index.php/Usermanual_1.7
Manual Referencia del Lenguage:
http://www.dit.upm.es/vnumlwiki/index.php/Reference_1.7
REDES
Referencias VNUML Project: http://www.dit.upm.es/vnuml “Virtual environments for networking experiments”, J. van der Ham, G. J. Verhoog “Virtualization technology as a tool for teaching computer networks”, D. Dobrilovic and B. Odadzic “Early experiences with NetGUI Laboratories”, S. Carot, P. de las Heras, E. M. Castro and J. Centeno “System Virtualization Tools for Software Development”, J. C. Dueñas, F. Cuadrado, B. García, H. A. Parada G., J. L. Ruiz “Comparison of platform virtual machines”, Wikipedia http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_m achines “Virtualization” Wikipedia, http://en.wikipedia.org/wiki/Virtualisation Zebra Suite. http://www.zebra.org Netkit project: http://www.netkit.org REDES
Redes y Virtualización: Introducción a VNUML Antonio Ruiz Martínez Rafael Marín López Fernando Pereñíguez García Jesús Damián Jiménez Re
Dpto. Ingeniería de la Información y las Comunicaciones (DIIC)