Post on 02-Oct-2015
description
MEDICION DEL RENDIMIENTO DE LA INTERFAZ DE RED EN KVM CON/SIN VIRTIO DIEGO CAIZA
1
INTRODUCCIN
Virtio es un estndar Linux para drivers de dispositivos de disco y red donde el driver de
dispositivo en el host invitado entiende que est ejecutndose en un entorno virtualizado y
coopera con el hospedero. Esto permite que los invitados obtengan alto rendimiento en las
operaciones de disco y red y otorga la mayora de los beneficios de rendimiento de la
paravirtualizacin.
Cuando las mquinas virtuales en KVM utilicen un SO Linux por defecto se instalaran los drivers
paravirtuales, mientras que al usar Windows requiere la instalacin de un paquete de drivers
(virtio-win) ya que no se detectara la tarjeta de red, el disco duro y ram, hasta decirle a KVM que
estos tres dispositivos sern de tipo virtio.
El propsito de este trabajo de investigacin es comprobar a travs de la prctica la superioridad
que presenta la paravirtualizacin con virtio en relacin a controladores emulados de interface de
red como Intel Pro/1000 (e1000) y Realtek 8139 (rtl8139). Los resultados comparativos de las
pruebas que se van a establecer, mostraran las ventajas que en teora presenta la
paravirtualizacin con virtio.
CONTENIDO
KVM permite ejecutar mquinas virtuales utilizando imgenes de disco que contienen sistemas
operativos sin modificar. Cada mquina virtual tiene su propio hardware virtualizado: una tarjeta
de red, discos duros, tarjeta grfica, etc.
Existen dos tipos de esquemas de virtualizacin diferentes: la virtualizacin y la paravirtualizacin.
En la full virtualizacin, el sistema operativo husped se ejecuta sobre un hospedero que se apoya
en el metal base. El host invitado no sabe que est siendo virtualizado y no necesita realizar
cambios para trabajar en esta configuracin. Por el contrario, en la paravirtualizacin, el sistema
operativo husped no slo sabe que se est ejecutando en un hospedero, sino que adems
incorpora cdigo para mejorar la eficiencia de las transiciones del host invitado al hospedero.
En el esquema de virtualizacin total, el hospedero debe emular el hardware del dispositivo, es
decir, realizar la emulacin de por ejemplo la interfaz de red. En pocas palabras emulacin es igual
a lentitud. Mientras en el esquema de paravirtualizacin, el hosts invitado y el hospedero pueden
cooperar para lograr una emulacin eficiente.
La full virtualizacin de KVM le asigna una porcin de tiempo de procesador a la mquina virtual,
esta mquina usa directamente el procesador durante este periodo y luego a travs de
herramientas incorporadas en el procesador separa la mquina de este y se devuelve el control al
hospedero. Entre sus obvias ventajas se puede mencionar que no hace falta emular el procesador,
no hay que usar llamadas al hospedero por parte de los invitados para acceder a dicho procesador
y adems tienen acceso directo.
2
Adems KVM utiliza los controladores virtio que son drivers paravirtualizados disponibles para
mquinas virtuales invitadas. Como ya se mencion el paquete virtio soporta dispositivos de
almacenamiento y controladores de interfaz de red.
Escenario prctico
El escenario propuesto se va a desarrollar sobre un hospedero CentOS-7.0-1406 en donde se va a
instalar dos mquinas virtuales que realizaran el papel de servidor (Ubuntu 14.04.1) y cliente
(CentOS-7.0-1406 bsico).
Figura 1 Mquina virtual con Ubuntu 14.04.1
3
Figura 2 Mquina virtual con CentOS-7.0-1406 bsico
Para empezar a realizar las pruebas del rendimiento de la red entre las mquinas virtuales
instaladas es necesario establecer una secuencia de pasos que servirn para los tres controladores
que se van a testear e1000, rtl8139 y virtio.
El primer paso comn es la instalacin de una herramienta llamada Iperf que va a permitir medir
el ancho de banda y el rendimiento que se alcanzan entre dos hosts conectados en red local, es
un programa cliente-servidor muy sencillo y fcil de instalar basta con ejecutar unas lneas de
instrucciones para poder usarlo.
Para descargar Iperf en Ubuntu se ejecuta la siguiente lnea:
Figura 3 Instruccin para descargar Iperf sobre Ubuntu
Y para descargar Iperf desde la maquina CentOS se debe seguir como sugerencia los pasos que se
indican en la pgina oficial de esta potente herramienta https://iperf.fr/.
4
Figura 4 Instrucciones para descargar Iperf en CentOS
Ahora una vez que completada la instalacin de Iperf en ambas mquinas virtuales es necesario
especificar el tipo de interfaz de red en la mquina virtual KVM que va a desempear la funcin de
servidor, en este caso el host con Ubuntu. Para establecer el controlador de red se requiere
trabajar sobre el hospedero por lo que se debe apagar la maquina con Ubuntu y editar su archivo
de configuracin de la siguiente manera:
Figura 5 Edicin de la interfaz de red de la mquina virtual desde el hospedero
Se localiza la parte interface type=network y en el model type se debe indicar el tipo de
interfaz que se va a utilizar.
Figura 6 Seleccin del tipo de interfaz de red sobre la mquina virtual (servidor)
Una vez especificado el tipo de interfaz a testear se requiere reiniciar el host Ubuntu y configurar
en modo servidor de Iperf de manera que le permita estar pendiente de las conexiones entrantes,
este procedimiento se lo realiza compilando la siguiente lnea de instruccin:
Figura 7 Iperf en modo servidor
5
Los parmetros anteriores indican:
o s : modo servidor
o f G: formato en que se van a expresar las unidades en este caso Gigabytes/segundo
Estos son los pasos preliminares para poder testear la red lo nico que resta es configurar al host
CentOS en modo cliente de Iperf para que se conecte al servidor y se enven una serie de paquetes
para calcular el ancho de banda promedio en cada conexin.
Pruebas
Controlador de interfaz de red e1000
Desde este punto se debe especificar que se va a utilizar en el host Ubuntu el controlador e1000.
Figura 8 Seleccin del tipo de interfaz de red para la primera prueba
Para verificar que se realiz el cambio correctamente el cambio del driver se va a utilizar ethtool
es un comando que permite mostrar la configuracin de la interfaz de red, se lo realiza de la
siguiente forma:
Figura 9 Configuracin de la interfaz de red con e1000
Ahora desde la mquina virtual con CentOS mediante Iperf c 192.168.122.9 f G se conecta
remotamente con el servidor. Luego del anlisis la herramienta genera un resumen similar al que
se puede observar justo despus de este prrafo. En este resumen se puede visualizar el tiempo
transcurrido (Interval) del anlisis (por defecto 10 segundos), la cantidad de GB transferidos
durante ese tiempo (Transfer) y el mximo ancho de banda alcanzado durante el anlisis
(Bandwidth), en este caso representada en la unidad Gbytes/sec. Para cada controlador se va a
realizar tres test de conexin para obtener un resultado promedio.
6
Figura 10 Resultado de las pruebas realizadas al controlador e1000
En el servidor Ubuntu tambin se puede observar las tres conexiones que se realizaron desde el
cliente CentOS.
Figura 11 Resultados de las pruebas con e1000 visto desde el servidor Ubuntu
El ancho de banda promedio utilizando el driver e1000 es 0.37 Gbytes/sec
7
Controlador de interfaz de red rtl8139
Para la segunda prueba se debe cambiar la interfaz a rtl8139 y se verifica con el comando ethtool.
Figura 12 Configuracin de la interfaz de red con rtl8139
Desde la maquina con CentOS se conecta remotamente al servidor Ubuntu para obtener el
resumen con resultados de calidad de conexin.
Figura 13 Resultado de las pruebas realizadas al controlador rtl8139
En el servidor Ubuntu tambin se puede observar las tres conexiones que se realizaron desde el
cliente CentOS.
8
Figura 14 Resultados de las pruebas con rtl8139 visto desde el servidor Ubuntu
El ancho de banda promedio utilizando el driver rtl8139 es 0.18 Gbytes/sec
9
Controlador de interfaz de red virtio
Para la tercera prueba se debe cambiar la interfaz a virtio y se verifica con el comando ethtool.
Figura 15 Configuracin de la interfaz de red con virtio
Desde la maquina con CentOS se conecta remotamente al servidor Ubuntu para obtener el
resumen con resultados de calidad de conexin.
Figura 16 Resultado de las pruebas realizadas al controlador virtio
En el servidor Ubuntu tambin se puede observar las tres conexiones que se realizaron desde el
cliente CentOS.
10
Figura 17 Resultados de las pruebas con virtio visto desde el servidor Ubuntu
El ancho de banda promedio utilizando el driver virtio es 2.23 Gbytes/sec
En el siguiente cuadro se puede observar los resultados finales de la prueba realizada.
Figura 18 Resultados Finales
CONCLUSIONES
Al inicio de la investigacin se plante probar y comprobar las ventajas tericas de virtio,
una vez concluidas las pruebas con cada uno de los controladores propuestos se lleg a la
conclusin que Virtio es sin lugar a duda la mejor solucin para conectividad de red en
ambientes virtualizados, ya que supera ampliamente en su rendimiento a los dispositivos
emulados e1000 en 6 veces y a rtl8139 en 12 veces segn los resultados finales.
En la paravirtualizacin el invitado est programado para ejecutar llamadas pre-
establecidas al hospedero para realizar ciertas labores hacia los dispositivos. Por ejemplo,
no accede directamente a la interfaz de red, sino que invoca a llamadas preestablecidas
en el hospedero y este efecta la comunicacin de red. Lo mismo sucede con el disco, la
memoria ram, etc. Entonces no hay que emular hardware simplemente llamadas, y el
0,00
0,50
1,00
1,50
2,00
2,50
e1000 rtl8139 virtio
Ancho de Banda(GigaBytes/sec)
0,37 0,18 2,23
Pe
rfo
rman
ce d
e la
inte
rfaz
de
re
d e
n
KV
M
Ancho de Banda (GigaBytes/sec)
11
hospedero a travs de su sistema operativo y drivers especficos, realiza la labor de
comunicacin con la red, disco, etc. Es tan rpido como acceder desde el hospedero
mismo, razn por la cual virtio es ms eficiente y aplasta rotundamente a los drivers
emulados.
Virtio es un driver que fue concebido con soporte para virtualizacin desde sus inicios,
esto proporciona la mayor integracin entre el hardware fsico, software de virtualizacin
y mquinas virtuales. Este adaptador de red virtual permite a la host invitado obtener la
mayor velocidad y rendimiento de red asindolo la mejor eleccin en el momento de la
virtualizacin.
Virtio adems fue elegida para ser la principal plataforma de virtualizacin de E/S en KVM,
la idea detrs de esto es tener un framework comn para virtualizacin de dispositivos de
E/S en el hospedero.
Virtio abre nuevas oportunidades de eficiencia en entornos de E/S paravirtualizada y se
basa en trabajos anteriores realizados en Xen. Linux sigue demostrando ser un hospedero
de produccin y una plataforma de investigacin para nuevas tecnologas de
virtualizacin, virtio es un ejemplo ms de las fortalezas que posee Linux y de cun abierto
es.
REFERENCIAS
http://www.ibm.com/developerworks/ssa/linux/library/l-virtio/
http://lists.centos.org/pipermail/centos-es/2014-January/013622.html
http://www.linuxito.com/gnu-linux-2/nivel-alto/137-kvm-rendimiento-de-red-en-
maquinas-virtuales-gnu-linux?hitcount=0&jVoteSystemPage=2
http://wiki.libvirt.org/page/Virtio
http://www.linux-kvm.org/page/Virtio
http://www.gonzalonazareno.org/cloud/material/KVM.pdf