prac-vnuml-2009-2010

Page 1

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 –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 –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 –t rsa1 vnumlparser.pl –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)


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.