Laboratorio — Entorno de trabajo
Todo el trabajo práctico del curso se hace en su laptop, sin equipos de red físicos. Un contenedor Docker trae el compilador de C, las herramientas de red y Containerlab. Cada router de los laboratorios es a su vez otro contenedor, con FRRouting. Así evitamos el “en mi computadora sí funciona”: si las pruebas pasan en el contenedor, pasan en la revisión.
1. Requisitos
| Sistema | Qué instalar |
|---|---|
| Linux | Docker Engine y Wireshark |
| Windows 10/11 | WSL2, Docker Desktop con integración WSL y Wireshark. Trabajen dentro del sistema de archivos de WSL (~/), no en C:\. |
| macOS (Intel o Apple Silicon) | Docker Desktop y Wireshark |
Recomendación: 8 GB de memoria RAM, con al menos 4 GB disponibles para Docker, y unos 4 GB libres de disco. Una topología de 24 routers usa alrededor de 700 MB.
Las imágenes son nativas: corren como ARM en un procesador ARM y como x86-64 en uno Intel o AMD, sin emulación.
2. Levantar el contenedor
Desde la carpeta del repositorio del curso:
./env/run.sh # la primera vez construye las imágenes (unos minutos)
env/smoke/check.sh # dentro del contenedor: comprueba que todo funciona
check.sh debe terminar con todas las líneas en ok. run.sh monta la carpeta actual en la
misma ruta que tiene en su computadora. Los archivos se editan con su editor de siempre y se
ejecutan en el contenedor. También acepta un comando:
./env/run.sh make test # corre las pruebas de la carpeta actual
./env/run.sh --rebuild # reconstruye las imágenes
Si su proyecto está en otra carpeta, llamen a run.sh con su ruta completa desde allí. Si el
contenedor ya está abierto y corren run.sh en otra terminal, se abre otra shell en el mismo
contenedor.
Un contenedor con muchos permisos. Containerlab exige --privileged, y que el contenedor
pueda hablar con el Docker de su computadora. Por eso, usen este contenedor solo para el curso
y no corran dentro de él código en el que no confíen.
3. Topologías con Containerlab
Cada laboratorio trae un archivo <nombre>.clab.yml:
containerlab deploy -t lab.clab.yml # levanta la red
docker exec -it clab-<lab>-r1 vtysh # entra a la consola del router r1
docker exec clab-<lab>-r1 ip route # corre un comando en r1
containerlab destroy -t lab.clab.yml --cleanup # la destruye
Dentro de vtysh, los comandos más usados son show ip route, show ip ospf neighbor y show bgp summary.
4. Capturas de tráfico
Capturen con tcpdump dentro del nodo que quieran observar, y abran el archivo en Wireshark:
docker exec clab-<lab>-r1 tcpdump -i eth1 -w /tmp/r1.pcap # Ctrl+C para terminar
docker cp clab-<lab>-r1:/tmp/r1.pcap .
tshark también está en el contenedor, para quienes prefieran quedarse en la terminal.
5. Límites que conviene conocer
traceroutehacia Internet: dentro del contenedor, Docker Desktop no deja ver los saltos intermedios y solo aparecen asteriscos. Córranlo en la terminal de su computadora. Dentro de las topologías del curso sí funciona.- BBR: el kernel de Docker Desktop puede no incluirlo. Revisen con
cat /proc/sys/net/ipv4/tcp_available_congestion_control. Los laboratorios solo exigen Reno y CUBIC. - Mediciones: los resultados dependen de cada computadora. Comparen tendencias, no cifras exactas.
6. Pruebas
Cada carpeta de código (code/week-NN/) y cada entrega del proyecto trae un Makefile:
make # compila o prepara
make test # corre los ejemplos y las pruebas
make clean # borra lo generado y destruye sus topologías
7. Solución de problemas
| Síntoma | Causa probable |
|---|---|
Cannot connect to the Docker daemon |
Docker Desktop no está abierto. |
Pool overlaps with other one on this address space |
La subred de la topología choca con otra red de Docker. Cambien ipv4-subnet en el bloque mgmt, o borren la red vieja con docker network rm <nombre>. |
already exists al levantar una topología |
Quedó una anterior. Corran containerlab destroy -t lab.clab.yml --cleanup. |
Error al destruir, y queda una red en docker network ls |
Bórrenla con docker network rm <nombre>. |
El router no encuentra frr.conf |
Abrieron el contenedor desde otra carpeta. Abran run.sh desde la raíz del curso o del proyecto. |
vtysh responde Can't open configuration file |
Es un aviso del arranque de FRRouting. Si los demonios corren, se puede ignorar. |
| Adyacencia OSPF que no sube | Revisen área, temporizadores y máscara (esta solo importa en redes broadcast) con show ip ospf interface. Si los vecinos se quedan en ExStart, revisen la MTU. |
Sesión BGP en Idle o Active |
Revisen la conectividad del enlace y el número de AS. |
(Policy) en show bgp summary |
La sesión está arriba, pero faltan políticas de entrada y salida, o no bgp ebgp-requires-policy. |
Address already in use |
Un programa anterior sigue corriendo, o falta SO_REUSEADDR. |
| Docker se queda sin memoria | Destruyan topologías viejas: docker ps --filter name=clab. |
| Todo muy lento en Windows | El código está en C:\; muévanlo a ~/ dentro de WSL. |