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.
cd ns3Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
sim build first.ccSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
./firstSe 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.
sim pcap first-0-0.pcapSe 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.
./first --delay=50msSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
./first --rate=1MbpsSe 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.
sim build bottleneck.ccSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
./bottleneck --senders=2Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
./bottleneck --senders=5 --each=1Mbps --bottleneck=4MbpsSe 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.