Computación Centrada en Redes (Computer Networks) — Programa del curso
Docente: Gerson Garrido
1. Descripción
Este curso explica cómo funciona Internet y cómo se construye software que depende de ella. No se queda en describir capas: ustedes van a capturar paquetes reales, configurar routers, conectar redes entre sí, provocar fallas y escribir en C un protocolo de transporte confiable. Seguimos el libro Computer Networking: A Top-Down Approach de Kurose y Ross, aunque en otro orden: como en los cursos de ETH Zürich y UC Berkeley, primero vemos cómo llega un paquete a su destino y después construimos todo lo que corre encima. El curso se organiza en cinco partes:
- Fundamentos — arquitectura de Internet, retardo y pérdida, capas y programación con sockets.
- Redes locales e IP — enlace, Ethernet, VLANs, direccionamiento, forwarding, NAT e IPv6.
- Routing — algoritmos de routing, OSPF, BGP, políticas entre redes y seguridad de BGP.
- Transporte y aplicaciones — entrega confiable, TCP, control de congestión, DNS, HTTP, TLS 1.3, QUIC y CDNs.
- Redes modernas — data centers, SDN, redes para cargas de IA, Wi-Fi, 5G y seguridad de redes.
El proyecto del semestre recorre el mismo camino: empieza con sockets, sigue con una red propia conectada a un pequeño Internet y termina con un servicio web que funciona sobre un protocolo de transporte escrito por ustedes.
Los términos técnicos van en inglés cuando así se dicen y así aparecen en la documentación (router, switch, socket, handshake); los que de verdad se usan en español (red, enlace, capa, paquete) van en español, con el inglés entre paréntesis la primera vez. El glosario reúne los principales. Las lecturas, los RFC y la documentación de las herramientas están en inglés.
2. Carga horaria
| Componente | Horas/semana | Formato |
|---|---|---|
| Teoría | 4 h | Dos sesiones de 2 h (Sesión A y Sesión B) |
| Laboratorio | 2 h | Una sesión práctica guiada |
3. Resultados de aprendizaje
Al finalizar el curso, el estudiante será capaz de:
- Explicar la arquitectura de Internet, sus capas y sus principios de diseño, y estimar retardo, pérdida y throughput de un camino de red.
- Escribir programas cliente-servidor en C con la API de sockets y analizar su tráfico con Wireshark y
tcpdump. - Diseñar el direccionamiento de una red y configurar switching, VLANs, forwarding y NAT, explicando el recorrido de un paquete salto por salto.
- Explicar los algoritmos de routing por estado de enlace y por vector de distancias, y configurar OSPF y BGP con políticas entre sistemas autónomos.
- Implementar en C un protocolo de transporte confiable con ventana deslizante y control de congestión, y evaluar su desempeño con mediciones.
- Explicar cómo funcionan DNS, HTTP, TLS 1.3 y QUIC, y diagnosticar fallas de aplicaciones usando capturas de tráfico.
- Describir las redes de data center, SDN, Wi-Fi y 5G, identificar ataques comunes a las redes y aplicar defensas como firewalls, VPNs y RPKI.
4. Bibliografía
Texto principal: James F. Kurose y Keith W. Ross. Computer Networking: A Top-Down Approach, 9.ª edición. Pearson, 2025. Sitio del libro: https://gaia.cs.umass.edu/kurose_ross/
El libro no es gratuito: se lee en la biblioteca o en una copia propia. Lo elegimos porque su novena edición cubre HTTP/3, QUIC, BBR, TLS 1.3 y 5G, y porque sus autores publican material abierto. Para que nadie dependa solo del libro, cada semana tiene además al menos una lectura gratuita en línea:
- El libro abierto del curso CS168 de UC Berkeley: https://textbook.cs168.io/
- Larry Peterson y Bruce Davie, Computer Networks: A Systems Approach: https://book.systemsapproach.org/
- Brian Hall, Beej’s Guide to Network Programming (sockets en C): https://beej.us/guide/bgnet/
- Los RFC de cada protocolo: https://www.rfc-editor.org/
Este material se enlaza, no se copia: los ejemplos, ejercicios, figuras y enunciados del curso son propios. Cuando un laboratorio use una captura o una actividad de Kurose y Ross, se indica la fuente.
Material de apoyo:
- Laboratorios de Wireshark, clases en video, animaciones y problemas interactivos de Kurose y Ross: https://gaia.cs.umass.edu/kurose_ross/
- Documentación de FRRouting: https://docs.frrouting.org/
- Documentación de Containerlab: https://containerlab.dev/
- Documentación de Wireshark: https://www.wireshark.org/docs/
5. Calendario
Este es el calendario del curso, por número de semana. Cada semana enlaza a su guía con lecturas, objetivos y actividades de laboratorio. Las sesiones marcadas con ✂️ se pueden comprimir o pasar a lectura autónoma si se pierden clases por feriados. Las semanas 8 y 16 son de exámenes y no tienen clases regulares.
| Sem. | Sesión A (2 h) | Sesión B (2 h) | Laboratorio (2 h) | Entregas |
|---|---|---|---|---|
| 1 | Presentación del curso · Qué es Internet: bordes, núcleo e ISPs | Retardo, pérdida y throughput · Capas y encapsulamiento | Entorno: Docker, Wireshark y traceroute |
P0 publicado |
| 2 | Principios de diseño: conmutación de paquetes, end-to-end y modelo de reloj de arena · ✂️ Historia: de ARPANET a ATM y Frame Relay | Programación con sockets en C: TCP y UDP | Un cliente y un servidor en C | |
| 3 | Capa física en lo esencial · Enlace: framing y detección de errores | Acceso múltiple · Ethernet, ARP, switches y VLANs | Capturar ARP y configurar VLANs | P0 entrega · P1 publicado |
| 4 | IP: datagramas, CIDR y forwarding · Dentro de un router | ICMP, DHCP, NAT e IPv6 | Subredes y NAT con Containerlab | |
| 5 | Routing: estado de enlace y vector de distancias | OSPF y routing jerárquico | OSPF con FRRouting: una falla de enlace en vivo | |
| 6 | BGP I: sistemas autónomos, eBGP e iBGP, atributos | BGP II: clientes, proveedores, peers y políticas | Conectar sistemas autónomos con políticas | P1 entrega · P2 publicado |
| 7 | Los problemas de BGP: hijacks, route leaks y RPKI | IXPs y estructura real de Internet · Repaso | Provocar un route hijack y defenderse | |
| 8 | Examen parcial (partes 1 a 3) | |||
| 9 | Transporte: multiplexación, UDP y entrega confiable | Ventana deslizante: Go-Back-N y Selective Repeat | Hackathon: conectar el Internet de la clase | P2 entrega · P3 publicado |
| 10 | TCP: segmentos, conexiones y retransmisión | TCP: control de flujo y recuperación rápida | Leer TCP en capturas, sobre un enlace con pérdidas | |
| 11 | Control de congestión: principios, AIMD y Reno | CUBIC, BBR, bufferbloat y equidad | Reno y CUBIC bajo distintos enlaces y buffers | P3 entrega · P4 publicado |
| 12 | DNS: jerarquía, resolución y seguridad | HTTP/1.1, HTTP/2 y caché | DNS paso a paso y HTTP por dentro | |
| 13 | Criptografía esencial y TLS 1.3 | QUIC y HTTP/3 · CDNs y streaming | Un handshake TLS y HTTP/2 frente a HTTP/3 | P4 entrega · P5 publicado |
| 14 | Data centers: topologías Clos, ECMP y overlays · SDN | ✂️ Redes para IA · Wi-Fi y 5G | Una red leaf-spine con balanceo de carga | |
| 15 | Seguridad de redes: ataques, firewalls, IPsec y VPNs | Presentación de proyectos | WireGuard y nftables | P5 entrega |
| 16 | Examen final (todo el curso) |
6. Proyectos
Un solo proyecto que crece durante 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 luego publica
un servicio sobre esa red. También escribe en C rimay (“hablar” en quechua), un
protocolo de transporte confiable sobre UDP, y wasi (“casa”), un servidor HTTP
que funciona sobre él. Cada entrega debe pasar sus pruebas y las de las entregas
anteriores que apliquen. El detalle, las reglas de entrega y cómo se corren las
pruebas están en projects/README.md.
Cada equipo levanta su parte de la red en su propia laptop. Para el hackathon de la semana 9, los equipos entregan su configuración y la red de toda la clase se levanta en una sola computadora.
| # | Entrega | Lo que agrega | Publicado | Entrega |
|---|---|---|---|---|
| P0 | Calentamiento | Cliente y servidor con sockets en C, y una versión propia de traceroute |
Sem. 1 | Sem. 3 |
| P1 | Tu red | Direccionamiento, VLANs, NAT y OSPF de un sistema autónomo que sobrevive a la caída de un enlace | Sem. 3 | Sem. 6 |
| P2 | Qhapaq Ñan | BGP con clientes, proveedores y peers, políticas correctas y defensa ante un hijack | Sem. 6 | Sem. 9 |
| P3 | rimay: entrega confiable |
Protocolo con ventana deslizante sobre UDP que funciona con pérdida, duplicación y reordenamiento | Sem. 9 | Sem. 11 |
| P4 | rimay: congestión |
Control de congestión, recuperación rápida y un informe con mediciones de equidad | Sem. 11 | Sem. 13 |
| P5 | wasi |
Servidor HTTP sobre rimay, publicado en Qhapaq Ñan con un nombre en DNS, donde una descarga termina bien aunque se corte un enlace con otro camino disponible |
Sem. 13 | Sem. 15 |
7. Políticas
- Integridad académica: se puede discutir ideas, pero el código y las configuraciones entregados deben ser propios. Copiar soluciones publicadas en internet cuenta como plagio.
- Defensa oral: cualquier integrante de un equipo puede tener que explicar, en el laboratorio, cualquier parte de lo entregado: el código, la configuración o una medición.
Uso de herramientas
| Herramienta | ¿Se permite? |
|---|---|
Mensajes del compilador (-Wall -Wextra), sanitizers (-fsanitize=address,undefined), Valgrind y gdb |
Sí, en todo el curso. |
Documentación oficial (páginas man, RFC, FRRouting, Containerlab, Wireshark) y búsquedas en la web |
Sí. Lo que se adapte de una fuente se cita en el README.md de la entrega o en un comentario. |
| Autocompletado del editor que sugiere nombres, firmas o el resto de una línea, sin generar funciones ni soluciones enteras | Sí. |
| Correctores de ortografía, traductores y herramientas de accesibilidad | Sí. |
Formateadores y linters (por ejemplo, clang-format o cppcheck) |
Sí. |
| IA generativa para pedir explicaciones de conceptos, mensajes de error o salidas de comandos, sin que escriba código ni configuraciones | Sí, fuera de los exámenes, y declarando su uso. |
| IA generativa que escribe código, configuraciones de routers o partes del informe | No, en ningún trabajo del curso: proyecto, laboratorios ni exámenes. |
El uso permitido de IA generativa se declara en el README.md de la entrega: qué herramienta, para qué y qué hicieron con lo
que les dio, en una línea por tema consultado. Las demás herramientas de la tabla no se
declaran, salvo las fuentes adaptadas, que se citan. En cualquier entrega se les puede pedir
que expliquen su trabajo en forma oral, y deben poder hacerlo sin ayuda.
8. Entorno de trabajo
Todo el trabajo práctico se hace en una laptop, sin equipos de red físicos, con
un contenedor Docker que trae el compilador de C, las herramientas de red y
Containerlab. Cada router es un contenedor con FRRouting. Wireshark se instala
aparte para abrir las capturas. Instrucciones en
labs/README.md.
Un límite que conviene conocer: el kernel de Docker Desktop no siempre incluye BBR. Por eso el laboratorio de la semana 11 mide Reno y CUBIC, y BBR se estudia en clase.