¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Fundamentos de la simulación de redes

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de máquina virtual11 min de lectura9 comandos

Prueba una red antes de construirla

Un colegio quiere saber si su red aguantará cuando todas las clases vean un vídeo a la vez. Nadie compra los cables para averiguarlo. Los ingenieros construyen la red dentro de un programa, un simulador, y lo ejecutan para ver qué harían los paquetes.

Al terminar esta lección

Nota

Puedo ejecutar una red simulada y leer su retardo y su pérdida de paquetes.

Palabras clave

  • Simulador: un programa que imita una red.
  • Nodo: un ordenador de la red.
  • Retardo: lo que tarda un bit en cruzar un enlace.
  • Tasa de datos: cuántos bits lleva un enlace cada segundo.
  • Pérdida de paquetes: paquetes enviados que nunca llegan.

Para empezar: lo que ya sabes

Nota

Responde mentalmente. 1. ¿Qué es un paquete? 2. ¿Qué hace un router? 3. ¿Un enlace más rápido es lo mismo que un enlace más corto? Necesitarás la tercera respuesta enseguida.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra de arriba de esta lección. Este laboratorio es una máquina Ubuntu entera solo para ti, así que tarda un poco más en arrancar que un contenedor. Cada botón Ejecutar escribe su comando en el terminal de la máquina, uno tras otro en la misma sesión. Si uno dice que la máquina todavía está arrancando, espera unos segundos y púlsalo de nuevo. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal en la barra.

Una red es un programa corto

Tus archivos están en la carpeta ns3. El primer comando entra en ella. first.cc crea dos nodos, los une con un enlace y envía un paquete a un servidor de eco, que lo devuelve. sim build lo compila con ns-3 y tarda unos segundos. Después el programa se llama first. Ejecútalo: la primera línea dice cuándo envió su paquete el cliente, y la segunda cuándo volvió la respuesta.

Comando
cd ns3

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
sim build first.cc

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
./first

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comprueba

Consejo

¿Cuánto tardó el viaje de ida y vuelta? Respuesta: algo más de 7 milisegundos. El cliente envió a los 2 segundos y la respuesta llegó hacia los 2,0074 segundos.

Una traza muestra cada paquete

ns-3 también escribió first-0-0.pcap, un registro de cada paquete que cruzó el dispositivo del nodo 0. Un archivo pcap es el formato real que leen herramientas como tcpdump. sim pcap lo lista, un paquete por línea, con su hora en segundos. Hay dos líneas: la petición en 2.000000 y la respuesta unos milisegundos después, cada una con 1024 bytes de datos.

Comando
sim pcap first-0-0.pcap

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que la velocidad de un enlace es lo rápido que viaja un paquete. No es así. El retardo es lo que tarda un bit en cruzar, y la tasa de datos es lo rápido que un nodo puede poner bits en el enlace. Un enlace lento hace que un paquete grande tarde más en enviarse. Un enlace largo hace que todos los paquetes tarden más en llegar, grandes o pequeños.

El retardo y la tasa de datos son distintos

Los dos ajustes están en la línea de comandos. El primer Ejecutar da al enlace un retardo largo y mantiene la tasa. El segundo mantiene el retardo y baja la tasa a 1 Mbps. Compara ambos con el viaje de ida y vuelta que viste antes, algo más de 7 ms. Un retardo de 50 ms añade unos 96 ms, porque el paquete cruza dos veces. Bajar la tasa añade unos 13 ms, porque cada bit tarda más en ponerse en el cable.

Comando
./first --delay=50ms

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
./first --rate=1Mbps

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comprueba

Consejo

¿Qué ajuste cambia con el tamaño del paquete? Respuesta: la tasa de datos. Un paquete mayor tiene más bits que poner en el cable, y el retardo es el mismo para todos los paquetes.

Un cuello de botella pierde paquetes

bottleneck.cc tiene emisores que tienen cada uno un enlace rápido a un router, y un enlace más lento del router al receptor. FlowMonitor cuenta lo que envió cada flujo y lo que llegó. Con dos emisores de 4 Mbps hacia el cuello de botella de 10 Mbps, llegan todos los paquetes. El segundo Ejecutar envía cinco flujos de 1 Mbps a un enlace de 4 Mbps: se pierde cerca de una quinta parte de cada flujo, porque la cola del router está llena y descarta lo que no le cabe.

Comando
sim build bottleneck.cc

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
./bottleneck --senders=2

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
./bottleneck --senders=5 --each=1Mbps --bottleneck=4Mbps

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comprobación final

Consejo

Responde sin volver atrás. 1. ¿Qué hace un simulador? 2. ¿Qué es un archivo pcap? 3. ¿Qué ajuste frena un paquete mayor, el retardo o la tasa de datos? 4. ¿Cuándo se pierde un paquete en un cuello de botella? Respuestas: imita una red en un programa; un registro de los paquetes de un dispositivo; la tasa de datos; cuando se envía más de lo que el enlace puede llevar y la cola está llena. Ahora abre el README.md de tu carpeta personal con cat ~/README.md: tú escribes dos escenarios.

Para el profesorado

Consejo

Esta lección se trabaja en un laboratorio de VM: cada alumno tiene su propia máquina Ubuntu con ns-3 instalado, y un botón Ejecutar escribe en su terminal y muestra lo que se imprimió. Puntos clave: 1. Un simulador imita una red en un programa. 2. Una traza registra cada paquete. 3. El retardo y la tasa de datos son distintos, y la tasa frena a un paquete mayor. 4. Se pierden paquetes cuando se envía más de lo que lleva un enlace. Error frecuente: creer que velocidad y retardo son lo mismo. Material: el laboratorio y un navegador. Consejo: antes del Ejecutar de 1 Mbps, pregunte a la clase qué cambiará más, el retardo o la tasa. El propio laboratorio tiene una comprobación que califica dos programas en C++ con valores ocultos.

Sobre este laboratorio y su código: Laboratorio de Simulación de redes: el simulador ns-3 en una VM Ubuntu privada

¿Enseñas a una clase? Asigna estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.