Está en la página 1de 16

Pruebas de tráfico con contenedores en Docker:

Pruebas de iPerf y gráficas con Grafana

Javier Bustamante

David Vega

Nicolas Viuche

Universidad Militar Nueva Granada

Ingeniería en Telecomunicaciones

Telegráfico y Modelamiento
Tabla de Contenidos ii

Capítulo 1 Introducción e información general .............................................................................. 1

Objetivos ..................................................................................................................................... 1

Capítulo 2 Marco Teórico .............................................................................................................. 2

iPerf ............................................................................................................................................. 2

Ubuntu......................................................................................................................................... 2

Capítulo 3 Desarrollo ..................................................................................................................... 3

Capítulo 4 Resultados .................................................................................................................... 9

Variación de parámetros ........................................................... ¡Error! Marcador no definido.

Grafica de datos Cliente/Servidor: ............................................ ¡Error! Marcador no definido.

Datos Servidor: ..................................................................... ¡Error! Marcador no definido.

Datos cliente: ........................................................................ ¡Error! Marcador no definido.

Capítulo 5 Conclusiones .............................................................................................................. 13

Lista de referencias ....................................................................................................................... 14


1

Capítulo 1

Introducción e información general

El desarrollo de este laboratorio se llevó a cabo con la implementación de dos

máquinas virtuales con el sistema operativo de Ubuntu, a su vez en la aplicación y

entendimiento de algunos comandos propios del software iPerf, con el cual se pudo

obtener los datos de tráfico necesarios para el laboratorio y las actividades requeridas

para completar el mismo.

Únicamente fue necesario un PC físico, ya que fue posible instalar dos máquinas

virtuales de diferentes versiones de Ubuntu, esto se hizo para evitar que se duplicara la IP

en ambas máquinas, causando contratiempos en el trabajo del software iPerf.

Objetivos

• Hacer una prueba de iPerf personalizada usando contenedores con imágenes del

Docker Hub.

• Desplegar Prometheus y Grafana con Docker y ver las métricas obtenidas con

iPerf3.

• Entender el funcionamiento de los contenedores y aprender a usar Docker para

poder desplegarlos.
2

Capítulo 2

Marco Teórico

iPerf

Es una herramienta usada ampliamente para medir el desempeño de una red o un

enlace de dispositivos IP. Es multiplataforma, de modo que es posible realizar pruebas

estandarizadas en casi cualquier escenario. Actualmente se encuentra en su versión 3.0 y

cuenta con funcionalidades avanzadas como manejo de cabeceras IPv6 e información

más detallada de las pruebas realizadas. (GUEANT, 2022).

Ubuntu

Ubuntu Desktop es una distribución de Linux desarrollada por Canonical, y es

una de las distribuciones más populares, gracias a su facilidad de uso. También es una de

las mejores opciones para las personas que están empezando con Linux. La edición del

servidor, en la que no nos centraremos aquí, también está operando en la mayoría de los

servidores de Internet. (Howtogeek, 2022).

Docker

Es una plataforma de software que le permite crear, probar e implementar

aplicaciones rápidamente. Docker compila programas en unidades estándar llamadas

contenedores que contienen todo lo que el programa necesita para ejecutarse, incluidas

bibliotecas, herramientas del sistema, código y un entorno de tiempo de ejecución. La

ejecución de Docker en AWS brinda a los desarrolladores y administradores una forma

confiable y asequible de crear, aprovisionar y ejecutar aplicaciones distribuidas de

cualquier tamaño. ("Contenedores de Docker | ¿Qué es Docker? | AWS", 2022)


3

Capítulo 3

Desarrollo

Se inicializa ejecutando iPerf3 de una forma virtualizada, en una VM dentro de la

VM que tenemos ejecutándose en nuestro computador, esto se comprueba con el

siguiente comando:

𝑛𝑒𝑜𝑓𝑒𝑡𝑐ℎ

Donde seguidamente comprobamos que fue instalado con éxito

Tras ingresar al emulador de terminal del SO operativo instalado anteriormente,

procedemos a ejecutar la actualización de repositorios junto con la instalación de

herramientas, paquetes y repositorios necesarios para Docker engine, esto fue hecho con

los comandos sugeridos por la guía:

• Instalar las herramientas para añadir la firma GPG del repositorio:

𝑠𝑢𝑑𝑜 𝑎𝑝𝑡 𝑖𝑛𝑠𝑡𝑎𝑙𝑙 − 𝑦 𝑐𝑎 − 𝑐𝑒𝑟𝑡𝑖𝑓𝑖𝑐𝑎𝑡𝑒𝑠 𝑐𝑢𝑟𝑙 𝑔𝑛𝑢𝑝𝑔 𝑙𝑠𝑏𝑟𝑒𝑙𝑒𝑎𝑠𝑒

• Añadir la llave de GPG oficial de Docker:


4

𝑐𝑢𝑟𝑙 − 𝑓𝑠𝑆𝐿 ℎ𝑡𝑡𝑝𝑠://𝑑𝑜𝑤𝑛𝑙𝑜𝑎𝑑. 𝑑𝑜𝑐𝑘𝑒𝑟. 𝑐𝑜𝑚/𝑙𝑖𝑛𝑢𝑥/𝑢𝑏𝑢𝑛𝑡𝑢

/𝑔𝑝𝑔 | 𝑠𝑢𝑑𝑜 𝑔𝑝𝑔 − −𝑑𝑒𝑎𝑟𝑚𝑜𝑟

− 𝑜 /𝑢𝑠𝑟/𝑠ℎ𝑎𝑟𝑒/𝑘𝑒𝑦𝑟𝑖𝑛𝑔𝑠/𝑑𝑜𝑐𝑘𝑒𝑟 − 𝑎𝑟𝑐ℎ𝑖𝑣𝑒

− 𝑘𝑒𝑦𝑟𝑖𝑛𝑔. 𝑔𝑝𝑔

• Añadir el repositorio stable al administrador de paquetes:

𝑒𝑐ℎ𝑜 "𝑑𝑒𝑏 [𝑎𝑟𝑐ℎ =\$(𝑑𝑝𝑘𝑔 − −𝑝𝑟𝑖𝑛𝑡 − 𝑎𝑟𝑐ℎ𝑖𝑡𝑒𝑐𝑡𝑢𝑟𝑒) 𝑠𝑖𝑔𝑛𝑒𝑑𝑏𝑦

=/𝑢𝑠𝑟/𝑠ℎ𝑎𝑟𝑒/𝑘𝑒𝑦𝑟𝑖𝑛𝑔𝑠/𝑑𝑜𝑐𝑘𝑒𝑟 − 𝑎𝑟𝑐ℎ𝑖𝑣𝑒

− 𝑘𝑒𝑦𝑟𝑖𝑛𝑔. 𝑔𝑝𝑔]ℎ𝑡𝑡𝑝𝑠://𝑑𝑜𝑤𝑛𝑙𝑜𝑎𝑑. 𝑑𝑜𝑐𝑘𝑒𝑟. 𝑐𝑜𝑚/𝑙𝑖𝑛𝑢𝑥

/𝑢𝑏𝑢𝑛𝑡𝑢 \$(𝑙𝑠𝑏\_𝑟𝑒𝑙𝑒𝑎𝑠𝑒

− 𝑐𝑠) 𝑠𝑡𝑎𝑏𝑙𝑒" | 𝑠𝑢𝑑𝑜 𝑡𝑒𝑒 /𝑒𝑡𝑐/𝑎𝑝𝑡/𝑠𝑜𝑢𝑟𝑐𝑒𝑠. 𝑙𝑖𝑠𝑡. 𝑑

/𝑑𝑜𝑐𝑘𝑒𝑟. 𝑙𝑖𝑠𝑡 > /𝑑𝑒𝑣/𝑛𝑢𝑙𝑙

• Actualizar los repositorios e instalar Docker engine

𝑠𝑢𝑑𝑜 𝑎𝑝𝑡 𝑢𝑝𝑑𝑎𝑡𝑒 && 𝑠𝑢𝑑𝑜 𝑎𝑝𝑡 𝑖𝑛𝑠𝑡𝑎𝑙𝑙 − 𝑦 𝑑𝑜𝑐𝑘𝑒𝑟 − 𝑐𝑒𝑑𝑜𝑐𝑘𝑒𝑟 − 𝑐𝑒

− 𝑐𝑙𝑖 𝑐𝑜𝑛𝑡𝑎𝑖𝑛𝑒𝑟𝑑. 𝑖𝑜

Antes de comenzar con la práctica, es necesario ingresar un último comando con

el fin de poder usar Docker sin permisos de administrador.

𝑠𝑢𝑑𝑜 𝑢𝑠𝑒𝑟𝑚𝑜𝑑 − 𝑎𝐺 𝑑𝑜𝑐𝑘𝑒𝑟 $𝑈𝑆𝐸𝑅 && 𝑠ℎ𝑢𝑡𝑑𝑜𝑤𝑛 − 𝑟 𝑛𝑜𝑤

Posteriormente, se debe saber que Docker crea contenedores que se pueden

manipular, así como las imágenes que los conforman. Para el caso de la práctica se

descargará un contenedor desde el LocalHub, denominando “andresumng”. Como

resultado introducimos el siguiente comando, con el que vamos a descargar la imagen

haciendo un pull:
5

𝑑𝑜𝑐𝑘𝑒𝑟 𝑟𝑢𝑛 − 𝑖𝑡 − −𝑛𝑎𝑚𝑒 𝑠𝑒𝑟𝑣𝑖𝑑𝑜𝑟 𝑎𝑛𝑑𝑟𝑒𝑠𝑢𝑚𝑛𝑔/𝑖𝑝𝑒𝑟𝑓3 − 𝑢𝑏𝑢𝑛𝑡𝑢: 𝑠𝑒𝑟𝑣𝑒𝑟

Con lo que obtenemos la creación del contenedor:

Podemos comprobar la creación del contenedor desde otra terminal con el

comando

𝑑𝑜𝑐𝑘𝑒𝑟 𝑝𝑠 − 𝑎

La función del comando se puede interpretar que enlista los contenedores

creadores, así mismo tras correr el comando en cuestión, observamos la imagen que

llamamos junto con el nombre dado al contenedor, “servidor”. Se debe saber que estos

contendores se ejecutan en un espacio ajeno a la máquina que se está corriendo “Host”, es

decir que ocupan un espacio de la RAM de forma permanente, por esto, es recomendable

remover el contenedor completamente para la continuidad de la práctica, esto con el

comando:

𝑑𝑜𝑘𝑐𝑒𝑟 𝑟𝑚 𝑠𝑒𝑟𝑣𝑖𝑑𝑜𝑟

Valga la redundancia, el comando especifica de acuerdo al nombre el contenedor

que se desea remover. Esto lo comprobamos con el comando visto anteriormente, que

enlista los contenedores creados.


6

Sabiendo lo que causa el usar el contenedor dentro del Host, procedemos a

enlazar el contenedor con el Host, para usarlo de manera externa, para que las peticiones

enviadas al Host, sean respondidas por el contenedor, esto teniendo en cuenta que el

puerto con el que trabajamos en el 5201, como vimos en los comandos anteriores e IPerf,

procedemos a ejecutar el siguiente comando:

𝑎𝑛𝑑𝑟𝑒𝑠𝑢𝑚𝑛𝑔
𝑑𝑜𝑐𝑘𝑒𝑟 𝑟𝑢𝑛 − 𝑖𝑡 − −𝑛𝑎𝑚𝑒 𝑠𝑒𝑟𝑣𝑖𝑑𝑜𝑟 − 𝑝 5201: 5201 − −𝑟𝑚
𝑖𝑝𝑒𝑟𝑓3

− 𝑢𝑏𝑢𝑛𝑡𝑢: 𝑠𝑒𝑟𝑣𝑒𝑟

Debido a que la imagen ya se encuentra dentro del sistema, se comienza a correr

el contendor sin ningún proceso de por medio:

Antes de crear este enlace entre el Host y el contendor, al repasar los puertos,

observábamos que el puerto del Host no se encontraba en un estado de espera, mediando

IPerf, debido a que el contenedor trabajaba con su espacio parte en la RAM, tras el

enlace, se comprobaron los puertos, mostrando el siguiente resultado:


7

Ahí comprobamos que mediante el puerto 5201, se esperan conexiones, ahí

mismo se especifica el programa de Docker, siendo el que responde las peticiones que

recibe el Host.

Después de comprobar el enlace entre el contendor y el Host, crearemos otro

contenedor que actuara como cliente, el cual actuara parecido al cliente usado en la

práctica de IPerf3, mediante archivos formato json se enviaran pruebas de 60segundos.

𝑑𝑜𝑐𝑘𝑒𝑟 𝑡𝑢𝑛 − 𝑖𝑡 − −𝑛𝑎𝑚𝑒 𝑐𝑙𝑖𝑒𝑛𝑡𝑒

Tras la creación del contendor servidor, creamos un enlace entre este último y un

directorio del pc, lo hacemos teniendo en cuenta que Docker está trabajando con una IP

de 172.17.0.1 y el contendor “andresumng” cuenta con una IP de 172.17.0.2; además de

que el comando utilizado es parecido al usado para enlazar el contendor al Host, en la

parte del servidor.


8

𝑑𝑜𝑐𝑘𝑒𝑟 𝑟𝑢𝑛 − 𝑣 ~/𝑖𝑝𝑒𝑟𝑓3 − 𝑑𝑎𝑡𝑎/:/𝑚𝑒𝑑𝑖𝑎/𝑑𝑎𝑡𝑎: 𝑟𝑤 − 𝑖𝑡 − −𝑟𝑚

− −𝑒𝑛𝑣 𝑆𝐸𝑅𝑉𝐸𝑅

= 172.17.0.1 𝑎𝑛𝑑𝑟𝑒𝑠𝑢𝑚𝑛𝑔/𝑖𝑝𝑒𝑟𝑓3 − 𝑢𝑏𝑢𝑛𝑡𝑢: 𝑐𝑙𝑖𝑒𝑛𝑡𝑒 − 𝑗𝑠𝑜𝑛

Con el comando se creó una variable de ambiente, que permite que el contenedor

haga variables en su funcionamiento, asimismo con anterioridad, dentro del directorio de

la máquina virtual se creó una carpeta denominada “iperf3-data”, para guardar los

archivos de resultados. Recordando la IP con la que quedo guardado en el contenedor del

servidor, se deduce que el contendor del cliente presenta la IP 172.17.0.3, que podemos

comprobar tras terminada la prueba de 60 segundos.

Además de esto, también podemos observar la versión de IPerf empleada, tiempos

y ancho de banda usado. Los resultados de la imagen, expone en la consola lo que se

mostraría en unos de los archivos creados tras la prueba, este archivo corresponde a

resultados estandarizados, que permiten un análisis más fácil de los resultados.


9

Capítulo 4

Resultados

Tras la comprobación del funcionamiento de los contenedores junto con IPerf.

Continuamos con el siguiente punto de la práctica, donde se emplearán 4 contenedores:

• Servidor HTTP nGinx

𝑑𝑜𝑐𝑘𝑒𝑟 𝑟𝑢𝑛 − −𝑟𝑚 − 𝑣 ~/𝑖𝑝𝑒𝑟𝑓3

− 𝑑𝑎𝑡𝑎/:/𝑢𝑠𝑟/𝑠ℎ𝑎𝑟𝑒/𝑛𝑔𝑖𝑛𝑥/ℎ𝑡𝑚𝑙/: 𝑟𝑜 − 𝑝 8080: 80

− 𝑑 𝑛𝑔𝑖𝑛𝑥

Con este servidor, podemos visualizar los datos dentro del archivo jason,

anteriormente creado, en formato http a través del navegador:

• Archivo de configuración
10

𝑑𝑜𝑐𝑘𝑒𝑟 𝑟𝑢𝑛 − −𝑟𝑚 − 𝑣 ~/𝑑𝑜𝑐𝑘𝑒𝑟 − 𝑐𝑜𝑛𝑓𝑖𝑔/𝑗𝑠𝑜𝑛

− 𝑒𝑥𝑝𝑜𝑟𝑡𝑒𝑟/𝑐𝑜𝑛𝑓𝑖𝑔. 𝑦𝑚𝑙:/𝑐𝑜𝑛𝑓𝑖𝑔. 𝑦𝑚𝑙: 𝑟𝑜

− 𝑝 7979: 7979

− 𝑑 𝑞𝑢𝑎𝑦. 𝑖𝑜/𝑝𝑟𝑜𝑚𝑒𝑡ℎ𝑒𝑢𝑠𝑐𝑜𝑚𝑚𝑢𝑛𝑖𝑡𝑦/𝑗𝑠𝑜𝑛

− 𝑒𝑥𝑝𝑜𝑟𝑡𝑒𝑟 − −𝑐𝑜𝑛𝑓𝑖𝑔. 𝑓𝑖𝑙𝑒 =/𝑐𝑜𝑛𝑓𝑖𝑔. 𝑦𝑚𝑙

Estos archivos saben del archivo jason junto con las métricas o resultados

obtenidos con anterioridad.

• Prometheus

𝑑𝑜𝑐𝑘𝑒𝑟 𝑟𝑢𝑛 − −𝑟𝑚 − 𝑝 9090: 9090 − 𝑣 ~/𝑑𝑜𝑐𝑘𝑒𝑟

− 𝑐𝑜𝑛𝑓𝑖𝑔/𝑝𝑟𝑜𝑚𝑒𝑡ℎ𝑒𝑢𝑠/𝑝𝑟𝑜𝑚𝑒𝑡ℎ𝑒𝑢𝑠. 𝑦𝑚𝑙:/𝑒𝑡𝑐

/𝑝𝑟𝑜𝑚𝑒𝑡ℎ𝑒𝑢𝑠/𝑝𝑟𝑜𝑚𝑒𝑡ℎ𝑒𝑢𝑠. 𝑦𝑚𝑙: 𝑟𝑜

− −𝑛𝑒𝑡𝑤𝑜𝑟𝑘 ℎ𝑜𝑠𝑡 𝑝𝑟𝑜𝑚/𝑝𝑟𝑜𝑚𝑒𝑡ℎ𝑒𝑢𝑠

El archivo de configuración de este, indica de donde se quiere sacar las

métricas, funciona como una base de dato para exportar la traducción de

los datos del archivo jason. El servidor de prometeus, nos mostrara como

resultado:
11

Correspondiente al dato de ancho de banda, que habíamos visto

anteriormente en el documento Jason que fue creado tras la prueba de 60

segundos.

• Grafana

Este es un software que, en base a la base de datos, permite la elaboración

de graficas mejor elaboradas.

𝑑𝑜𝑐𝑘𝑒𝑟 𝑟𝑢𝑛 − −𝑟𝑚 − 𝑑 − 𝑝 3000: 3000 𝑔𝑟𝑎𝑓𝑎𝑛𝑎/𝑔𝑟𝑎𝑓𝑎𝑛𝑎

− 𝑒𝑛𝑡𝑒𝑟𝑝𝑟𝑖𝑠𝑒

Tras comprobar que los cuatro contenedores se estén corriendo,

realizamos las configuración requeridas en el sitio de Grafana.


12

Filtramos los datos de banda ancha para el tiempo que se realizó la prueba, y

obtenemos:

Podemos observar que actúa igual a la gráfica que se obtuvo de Prometeos, por lo

que se comprueba que la filtración y obtención de datos fue exitosa.


13

Capítulo 5

Conclusiones

• Las pruebas realizadas usando los softwares de IPerf y Docker Hub se pudo

realizar con éxito, en ambas pruebas ejecutadas, donde en la primera se realizó la

creación de archivos de una prueba de 60 segundos, y en la otra la creación de

contenedores y graficas.

• Las métricas pudieron ser observadas con éxitos con Prometehus y Grafana.

• El funcionamiento del principal software fue entendido y ejecutado con éxito.


14

Lista de referencias

GUEANT, V. (2022). iPerf - Download iPerf3 and original iPerf pre-compiled binaries.

Iperf.fr. Retrieved 11 May 2022, from https://iperf.fr/iperf-download.php.

Howtogeek.com. (2022). Retrieved 11 May 2022, from

https://www.howtogeek.com/763775/what-is-ubuntu/.

Contenedores de Docker | ¿Qué es Docker? | AWS. Amazon Web Services, Inc. (2022).

Retrieved 30 May 2022, from https://aws.amazon.com/es/docker/.

También podría gustarte