Proyecto Qhapaq Ñan
Un solo proyecto que crece durante todo el semestre: Qhapaq Ñan, un pequeño Internet inspirado en la red de caminos del Tahuantinsuyo. Cada equipo diseña y opera un sistema autónomo, lo conecta con sus vecinos mediante BGP y publica un servicio web que corre sobre un protocolo de transporte escrito por el propio equipo.
El proyecto tiene tres tramos:
- P0, sockets. Un servicio con TCP y una versión propia de
traceroute, en C. - P1–P2, operar una red. Un sistema autónomo con OSPF y luego BGP, con FRRouting y Containerlab.
- P3–P5, construir sobre la red.
rimay(“hablar” en quechua), un protocolo de transporte confiable sobre UDP, ywasi(“casa”), un servidor HTTP que funciona sobre él.
Las semanas de publicación y de entrega están en el calendario del SYLLABUS. Cada entrega tiene su enunciado detallado en su carpeta:
| # | Enunciado | Lo que agrega | Publicado | Entrega |
|---|---|---|---|---|
| P0 | Calentamiento | Servicio con sockets y una versión propia de traceroute |
Sem. 1 | Sem. 3 |
| P1 | Tu red | Direccionamiento, VLANs, NAT y OSPF, y resistencia a la caída de un enlace | Sem. 3 | Sem. 6 |
| P2 | Qhapaq Ñan | BGP con políticas, defensa ante un hijack y hackathon | Sem. 6 | Sem. 9 |
| P3 | rimay: entrega confiable |
Ventana deslizante sobre UDP, con pérdida, duplicación y reordenamiento | Sem. 9 | Sem. 11 |
| P4 | rimay: congestión |
Control de congestión, recuperación rápida y mediciones | Sem. 11 | Sem. 13 |
| P5 | wasi |
Servidor HTTP sobre rimay, publicado en la red y con DNS |
Sem. 13 | Sem. 15 |
Reglas de entrega
- Todo debe pasar
make testdentro del contenedor del curso (env/run.sh). El código en C compila sin advertencias con-Wall -Wextra -std=c17. - P3 debe seguir pasando sus pruebas en P4 y P5, y P2 debe seguir funcionando para P5.
- Identificadores en inglés y comentarios en español, según la guía de estilo.
- Incluir un
README.mdcorto: integrantes, qué funciona, qué no, cómo se ejecuta, las decisiones principales y las herramientas que hay que declarar según el uso de herramientas.
Cómo se corren las pruebas
Cada enunciado trae su Makefile, sus pruebas públicas y, si hacen falta, su topología.
/ruta/al/curso/env/run.sh # desde la carpeta del proyecto
make test # levanta lo que haga falta y corre las pruebas
make clean # borra lo generado y destruye las topologías
Las pruebas son scripts de Python que levantan la red, provocan fallas y miden lo que pasa. La revisión corre además pruebas privadas con otros valores: otras direcciones, otros porcentajes de pérdida (hasta 12 %) y otros archivos. Un trabajo que solo funciona con los valores del enunciado no las pasa.
Las pruebas con pérdida usan semillas fijas cuando se puede, pero la red real no es exacta. Por eso exigen resultados con márgenes y no cifras precisas.
Defensa oral
Puede haber una defensa oral breve durante el laboratorio: cualquier integrante debe poder explicar cualquier parte de lo entregado.