Parcial de práctica — Computación Centrada en Redes
Temas: partes 1 a 3 del curso (semanas 1 a 7) · Duración: 2 horas
Este es un examen de práctica con el formato del parcial. Sirve para medir
cuánto tiempo les toma cada tipo de pregunta: resuélvanlo de una sola vez y con
el reloj corriendo. El formato general está en
exams/README.md.
Indicaciones
- Muestren el procedimiento y justifiquen cada resultado.
- 1 Mbps son 10⁶ bits por segundo, y 1 byte son 8 bits. Salvo que la pregunta diga otra cosa, la velocidad de propagación es 2×10⁸ m/s.
- Las salidas de la parte E y la de la pregunta 15 son de ejecuciones reales en topologías de Containerlab. Los tiempos dependen de la máquina. Los recortes están indicados.
- Las partes C, D y E usan la misma red, la de la figura de la parte C.
| Parte | Preguntas |
|---|---|
| A. Cálculos | 1–4 |
| B. Algoritmos a mano | 5–6 |
| C. Seguir un paquete | 7 |
| D. Políticas de BGP | 8 |
| E. Leer salidas reales | 9–11 |
| F. Preguntas cortas | 12–16 |
Parte A — Cálculos
Pregunta 1 — Retardo y throughput
Un host A envía paquetes de 1500 bytes a un host B, a través de un router
R que trabaja con store-and-forward:
A ───────────────── R ───────────────── B
20 Mbps, 400 km 5 Mbps, 3000 km
No hay otro tráfico. Ignoren el retardo de procesamiento y los encabezados.
a) ¿Cuánto tarda un solo paquete, desde que A empieza a
transmitirlo hasta que llega completo a B? Separen los cuatro términos.
b) A envía 2000 paquetes seguidos, a toda la velocidad de su
enlace, y el buffer de R es lo bastante grande para no perder ninguno. ¿En
qué instante termina de llegar el último? ¿Dónde se forma la cola? ¿Qué
throughput promedio ve B, y a qué valor tiende si el archivo crece?
c) Ahora A envía a un ritmo constante de 450 paquetes por
segundo, y el buffer de salida de R tiene lugar para 100 paquetes. Calculen la
intensidad de tráfico ρ de la cola de salida de R. En régimen permanente, ¿qué
fracción de los paquetes se pierde? ¿Cuál es, aproximadamente, el retardo de
cola de los que pasan?
d) Un servidor con 1 Gbps de subida le envía a un cliente con 200 Mbps de bajada, por un enlace troncal de 10 Gbps que comparten n flujos iguales. ¿Cuál es el throughput de un flujo con n = 40? ¿Y con n = 80? ¿Dónde está el cuello de botella en cada caso?
Pregunta 2 — CRC
Datos D = 10110011, generador G = 10011.
a) Calculen el CRC por división módulo 2, mostrando cada paso, y escriban la cadena que se transmite.
b) El receptor recibe por separado estas dos cadenas. Para cada una, calculen el residuo, digan cuántos bits cambiaron respecto de lo transmitido y si el error se detecta:
R1 = 101111010100R2 = 101110101100
Con esa evidencia, ¿tiene G a x + 1 como factor? ¿Qué ráfagas detecta
siempre este CRC?
c) Un router con una falla de memoria daña un paquete mientras lo copia del puerto de entrada al de salida. ¿Lo detecta el CRC del enlace siguiente? ¿Quién podría detectarlo? Relaciónenlo con el argumento end-to-end.
Pregunta 3 — Subredes con CIDR
Una facultad recibió 10.212.64.0/22 y necesita, en este orden de tamaño, una
LAN de 300 hosts, una de 110, una de 50 y dos enlaces entre routers. Las
cantidades ya incluyen la interfaz del router.
a) Asignen los bloques de mayor a menor, empezando por la primera
dirección del bloque. Para cada uno, den el prefijo, el rango de direcciones y
cuántos hosts útiles admite. Los enlaces no usan /31. ¿Cuál es la primera
dirección que queda libre?
b) Para la LAN de 110 hosts, den la máscara en decimal y la
dirección de broadcast. ¿Por qué 10.212.66.70/25 no nombra una subred?
c) ¿Se pueden resumir 10.212.65.0/24 y 10.212.66.0/24 en un
solo prefijo sin incluir otras direcciones? ¿Y 10.212.66.128/26 y
10.212.66.192/26? Si se puede, escriban el resumen.
Pregunta 4 — Longest prefix match
La forwarding table de un router es esta:
| Prefijo | Siguiente salto |
|---|---|
10.212.0.0/16 |
A |
10.212.64.0/18 |
B |
10.212.68.0/22 |
C |
10.212.70.128/25 |
D |
10.212.70.200/32 |
E |
0.0.0.0/0 |
F |
a) ¿Por dónde sale cada dirección? Muestren en binario el byte que decide en al menos dos de los casos.
10.212.70.200, 10.212.70.201, 10.212.70.12, 10.212.72.1,
10.212.200.9, 10.213.0.1
b) Se retira la ruta de D. ¿Qué cambia? ¿Hay que reordenar la
tabla para que el resultado sea correcto? Si dos protocolos ofrecen rutas al
mismo prefijo 10.212.68.0/22, ¿longest prefix match elige entre ellas?
Parte B — Algoritmos a mano
Pregunta 5 — Dijkstra
La red tiene seis routers, y los costos son iguales en los dos sentidos:
g ──2── h ──6── k ──6── n
\ │ /│ /
4 \ 2 │ 3 / │ 1 / 2
\ │ / │ /
\ │ / │ /
─ j ──7── m ─
Los enlaces son: g-h 2, g-j 4, h-j 2, h-k 6, j-k 3, j-m 7, k-m 1,
k-n 6 y m-n 2.
a) Corran Dijkstra desde g. Escriban una tabla con una fila por paso,
con N’ y D(v),p(v) para cada nodo. Si dos caminos empatan, anoten los dos
predecesores.
b) Escriban la forwarding table de g: destino, costo y next hop.
Expliquen qué significa que una entrada tenga dos next hop, y cómo se reparte el
tráfico entre ellos.
c) Se cae el enlace j-k. Sin rehacer toda la tabla, justifiquen los
nuevos costos y next hop de g hacia k, m y n. ¿Le basta a g con saber
que cayó ese enlace, o todos los routers tienen que recalcular?
Pregunta 6 — Vector de distancias
Usen el modelo de dv_sim de los apuntes: en cada ronda todos anuncian a la vez,
cada uno con la tabla que tenía al empezar la ronda. Lo que dice el next hop
actual se acepta siempre, aunque sea peor. Lo que dice otro vecino se acepta solo
si mejora estrictamente lo que se tiene.
a) La red tiene los enlaces e-f 1, f-g 2, g-h 3, e-g 7 y
f-h 8. Escriban la tabla de la ronda 0, en la que cada router conoce solo a sus
vecinos, y las de las rondas siguientes, hasta que deje de cambiar. Cada celda es
costo/next hop. ¿En cuántas rondas converge?
b) Otro triángulo tiene los enlaces t-u 3, u-v 2 y t-v 40, y
la red ya convergió. Miren solo el destino t. El enlace t-u sube de 3 a 15.
Escriban u y v, ronda por ronda, hasta que deje de cambiar, y marquen las
rondas en las que hay un ciclo. ¿Con qué valores termina?
c) Repitan (b) con poison reverse. ¿Cuántas rondas toma? ¿Por qué esa técnica no alcanza en general, y qué agrega BGP para resolverlo?
Parte C — Seguir un paquete
Esta es la red de las partes C, D y E. Cada router es un sistema autónomo distinto.
t1 (65410) ========== t2 (65420) ===== peers
/ \ / \ │ arriba el proveedor,
/ \ / \ │ abajo el cliente
/ \ / \
m1 (65431) m3 (65433) m2 (65432)
│ ║ │ ║ │
│ ╚═══════════════════╪═════════════════╝ │ m1 y m2 también son peers
│ │ │
└───── s1 (65441) ────┘ s2 (65442)
│ │
│ eth1, trunk (30 y 40) │ 100.64.242.0/25
sw2 web 100.64.242.80:8080
║ trunk (30 y 40)
sw1
/ \
h1 h2
| Nodo | Interfaz | Dirección | MAC |
|---|---|---|---|
h1 (VLAN 30, access) |
eth1 |
10.212.30.7/24, gateway 10.212.30.1 |
02:00:00:00:30:07 |
h2 (VLAN 40, access) |
eth1 |
10.212.40.9/24, gateway 10.212.40.1 |
02:00:00:00:40:09 |
s1 |
eth1.30 |
10.212.30.1/24 |
02:00:00:00:00:fe |
s1 |
eth1.40 |
10.212.40.1/24 |
02:00:00:00:00:fe |
s1 |
lo |
100.64.241.1/32, la dirección de su NAT |
Proveedor → cliente: t1 → m1, t1 → m3, t2 → m3, t2 → m2, m1 → s1,
m3 → s1, m2 → s2. Peers: t1–t2 y m1–m2.
Cada AS tiene el prefijo que sale en esta tabla. s1 traduce con NAT lo que sale
de 10.212.0.0/16 por sus enlaces a m1 y m3, con origen 100.64.241.1. No
traduce lo que va de una VLAN a la otra.
| AS | t1 |
t2 |
m1 |
m2 |
m3 |
s1 |
s2 |
|---|---|---|---|---|---|---|---|
| Prefijo | 100.64.210.0/24 |
100.64.220.0/24 |
100.64.231.0/24 |
100.64.232.0/24 |
100.64.233.0/24 |
100.64.241.0/24 |
100.64.242.0/24 |
Pregunta 7
a) Todas las tablas ARP están vacías, y los switches ya conocen a
todos. h1 hace un ping de 56 bytes de datos a h2. Llenen una fila por cada
tramo que recorre el echo request:
| Tramo | MAC origen | MAC destino | Etiqueta | IP origen | IP destino | TTL | Bytes del frame sin FCS |
|---|---|---|---|---|---|---|---|
h1 → sw1 |
|||||||
sw1 → sw2 |
|||||||
sw2 → s1 |
|||||||
s1 → sw2 |
|||||||
sw2 → sw1 |
|||||||
sw1 → h2 |
¿Qué consultas ARP aparecen antes de que el echo request llegue a h2? ¿Por
quién pregunta h1, y por qué no por h2? ¿Hace h2 una consulta ARP para
contestar?
b) h1 abre una conexión TCP desde su puerto 40000 hacia
100.64.242.80:8080. Enseguida, y con la primera aún en la tabla, h2 abre otra
desde su propio puerto 40000 hacia el mismo destino. s1 saca las dos por m1, y
el camino sigue por m2 y s2.
- Escriban la tabla de traducción de
s1: adentro, afuera y destino. Si un puerto se tiene que cambiar, llámenlop. - Para el SYN de
h1, digan cómo cambian en cada router, hastaweb: el TTL, la IP de origen, el puerto de origen, el checksum del encabezado IP, el checksum de TCP y el número de secuencia. - ¿Qué IP y qué puerto ve
weben las dos conexiones? ¿Cómo decides1a quién entregar la respuesta de la segunda?
c) Desde web, que no tiene ninguna conexión abierta con h1, se
intenta http://100.64.241.1:8080/ y http://10.212.30.7:8080/, y h1 sí tiene
un servidor en ese puerto. Las dos fallan. Para cada una, ¿hasta dónde llega el
SYN, y qué responde quién? ¿Protege el NAT a h1 como lo haría un firewall?
Parte D — Políticas de BGP
Pregunta 8
Todos los AS de la figura siguen las reglas de los apuntes. Importación:
prefieren la ruta de un cliente, luego la de un peer y luego la de un proveedor,
y a igualdad de preferencia, el AS_PATH más corto. Exportación: las rutas
propias y de clientes van a todos; las de peers y proveedores, solo a clientes.
a) ¿Qué prefijos le anuncia m1 a t1? ¿Y a m2? ¿Y a s1? (A
s1 no le cuenten su propio prefijo.) Justifiquen cada caso con una regla.
b) Para el prefijo de s2, 100.64.242.0/24, digan qué AS_PATH
elige cada uno de estos AS, qué otras rutas conoce y qué criterio decide: t2,
t1, m3 y s1.
c) ¿Cuáles de estos caminos de AS son valle-libres? Justifiquen los que no lo son.
s1 m3 t2 m2 s2s2 m2 m1 s1t1 m1 m2 t2m3 s1 m1m1 m2 t2 t1
d) s1 quiere que el tráfico hacia su prefijo le llegue por m1 y
no por m3. Para eso repite su número al anunciarle a m3, de modo que m3
recibe 65441 65441 65441 (AS path prepending). ¿Qué camino elige t1 hacia
100.64.241.0/24? ¿Y t2? ¿Cuál de los dos obedece al alargue, y cuál no, y por
qué? ¿Qué le dice eso a s1 sobre esta técnica?
e) s1 pierde su política de salida hacia m3, y le anuncia todo lo
que tiene, incluida su ruta 65431 65432 65442 hacia el prefijo de s2. ¿Qué
camino eligen ahora hacia ese prefijo m3, t1 y t2? ¿Por qué m3 acepta esa
ruta y la prefiere? ¿Cómo se llama este problema? ¿Lo habría detenido RPKI? ¿Quién
lo podría cortar con un filtro?
Parte E — Leer salidas reales
Pregunta 9 — show bgp
Tabla de m1 en la red de la figura, con las políticas de la pregunta 8 y sin el
prepending. Se omiten la leyenda y las líneas de encabezado.
$ docker exec clab-xp-parcial-m1 vtysh -c 'show bgp ipv4 unicast'
Network Next Hop Metric LocPrf Weight Path
*> 100.64.210.0/24 100.64.210.133 0 100 0 65410 i
*> 100.64.220.0/24 100.64.210.133 100 0 65410 65420 i
*> 100.64.231.0/24 0.0.0.0 0 32768 i
*> 100.64.232.0/24 100.64.231.130 0 200 0 65432 i
* 100.64.210.133 100 0 65410 65420 65432 i
*> 100.64.233.0/24 100.64.210.133 100 0 65410 65433 i
*> 100.64.241.0/24 100.64.231.134 0 300 0 65441 i
*> 100.64.242.0/24 100.64.231.130 200 0 65432 65442 i
* 100.64.210.133 100 0 65410 65420 65432 65442 i
Displayed 7 routes and 9 total paths
a) Sin mirar la figura, ¿qué relación tiene m1 con cada uno de sus
tres vecinos? ¿De qué columna lo sacan, y por qué esa columna sí se puede comparar
dentro del AS?
b) ¿Por qué ganó la primera ruta hacia 100.64.242.0/24? Si la ruta
por t1 fuera más corta que la otra, ¿cambiaría el resultado?
c) ¿Por qué la columna Metric trae un 0 en 65410 i y está vacía en
65410 65420 i? ¿Qué significa 32768?
d) m2 conoce 100.64.220.0/24, porque es el prefijo de su proveedor.
¿Por qué m1 no tiene una ruta hacia ese prefijo por m2, que sería igual de
larga?
Pregunta 10 — traceroute
Desde h1, durante una corrida en la que uno de los enlaces emula un cable largo
(el retardo se emuló con tc netem):
$ docker exec clab-xp-parcial-h1 traceroute -n -w 1 100.64.242.80
traceroute to 100.64.242.80 (100.64.242.80), 30 hops max, 46 byte packets
1 10.212.30.1 0.004 ms 0.003 ms 0.003 ms
2 100.64.231.133 0.001 ms 0.001 ms 0.002 ms
3 100.64.231.130 42.190 ms 42.063 ms 42.014 ms
4 * * *
5 100.64.242.80 43.570 ms 42.339 ms 46.081 ms
a) ¿A qué nodo de la figura corresponde cada salto? (Los next hop de la
tabla de la pregunta 9 ayudan.) ¿Por qué no aparecen sw1 y sw2?
b) ¿Qué significa el salto 4? ¿Se perdieron esos paquetes? ¿Cómo lo saben?
c) ¿En qué enlace está el retardo, y por qué lo creen real y no un router lento para contestar? Con s = 2×10⁸ m/s, ¿cuál es la distancia máxima que puede tener ese enlace?
d) traceroute se basa en el TTL. Si h1 está detrás de un NAT, ¿qué
dirección de origen trae la sonda al llegar a m1, y a qué dirección le contesta
m1 con su Time exceeded? ¿Qué lleva ese mensaje que le permite a s1 saber que es
para h1? ¿Esta traza dice algo sobre el camino de vuelta?
Pregunta 11 — Una captura
El SYN de h1 de la pregunta 7(b), capturado en el trunk, en sw1:
$ tcpdump -t -e -n -xx -c 1 -r trunk.pcap 'vlan and tcp[tcpflags] == tcp-syn'
02:00:00:00:30:07 > 02:00:00:00:00:fe, ethertype 802.1Q (0x8100), length 78: vlan 30, p 0, ethertype IPv4 (0x0800), 10.212.30.7.40000 > 100.64.242.80.8080: Flags [S], seq 4266241682, win 64240, options [mss 1460,sackOK,TS val 4100817467 ecr 0,nop,wscale 7], length 0
0x0000: 0200 0000 00fe 0200 0000 3007 8100 001e
0x0010: 0800 4500 003c cac0 4000 4006 f08f 0ad4
0x0020: 1e07 6440 f250 9c40 1f90 fe49 ae92 0000
0x0030: 0000 a002 faf0 ee4c 0000 0204 05b4 0402
0x0040: 080a f46d 823b 0000 0000 0103 0307
Y el mismo paquete con tcpdump -t -e -n -v, en otros dos puntos (s1 hacia m1, y
web):
[s1 eth2]
aa:c1:ab:05:77:30 > aa:c1:ab:03:05:29, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 63, id 51904, offset 0, flags [DF], proto TCP (6), length 60)
100.64.241.1.40000 > 100.64.242.80.8080: Flags [S], cksum 0xc1e5 (correct), seq 4266241682, win 64240, options [mss 1460,sackOK,TS val 4100817467 ecr 0,nop,wscale 7], length 0
[web eth1]
02:00:00:00:24:01 > 02:00:00:00:24:80, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 60, id 51904, offset 0, flags [DF], proto TCP (6), length 60)
100.64.241.1.40000 > 100.64.242.80.8080: Flags [S], cksum 0xc1e5 (correct), seq 4266241682, win 64240, options [mss 1460,sackOK,TS val 4100817467 ecr 0,nop,wscale 7], length 0
a) Solo con los bytes en hexadecimal, y diciendo en qué posición está cada campo: el VID, el EtherType que sigue a la etiqueta, el largo total del datagrama, el TTL, el protocolo, las dos direcciones IP, los dos puertos y el largo del encabezado TCP.
b) Comprueben a mano el checksum del encabezado IP: sumen sus diez palabras de 16 bits, con el acarreo circular, y digan qué debe dar.
c) Sumen los encabezados y expliquen el length 78 y el length 74.
¿Cuánto mediría cada frame en un cable real, con el FCS?
d) ¿Cuántos routers cruzó el paquete hasta web, y cómo se sabe solo
con esta salida? ¿Por qué cambia cksum entre el trunk y s1 eth2, y no entre
s1 eth2 y web, aunque el TTL sí cambió?
Parte F — Preguntas cortas
Respondan cada una en tres o cuatro líneas.
Pregunta 12
Un cliente TCP hace tres send seguidos de 200 bytes cada uno. El servidor llama a
recv(fd, buf, 1024, 0) en un bucle. ¿Cuántos bytes puede devolver la primera
llamada? ¿Qué debe agregar el protocolo de la aplicación para saber dónde termina
cada mensaje? ¿Qué cambia si el cliente manda tres datagramas UDP? ¿Sobre cuál socket
hace recv el servidor TCP, y de dónde salió?
Pregunta 13
Tres switches forman un triángulo, con STP y todos los enlaces del mismo costo. Las
prioridades son: sw-a 12288, sw-b 8192 y sw-c 4096. ¿Cuál es la raíz? ¿Qué
puerto se bloquea, y por qué? Si se corta el enlace sw-b–sw-c sin que sw-a lo
note, ¿cuánto tarda en volver el tráfico entre sw-a y sw-b, con los temporizadores
por defecto? En un ciclo de routers, en cambio, un paquete no da vueltas para siempre.
¿Qué campo lo evita?
Pregunta 14
Un datagrama IPv4 de 1500 bytes en total (20 de encabezado) y sin DF llega a un enlace con MTU 620. Escriban, para cada fragmento, el largo total, el valor del campo offset y el bit MF. ¿Qué pasa si trae DF? ¿Qué hace un router IPv6 con un paquete que no cabe? ¿Qué campo de IPv4 no existe en IPv6, y por eso no hay que rehacerlo en cada salto?
Pregunta 15
Esta es parte de la tabla de un router, tomada de la semana 5 (se quitaron líneas):
$ docker exec clab-w05-six-a vtysh -c 'show ip route ospf'
O>* 10.205.0.2/32 [110/3] via 10.205.12.2, eth1, weight 1, 00:00:02
O>* 10.205.0.5/32 [110/6] via 10.205.12.2, eth1, weight 1, 00:00:02
* via 10.205.13.2, eth2, weight 1, 00:00:02
O 10.205.12.0/30 [110/3] is directly connected, eth1, weight 1, 00:00:22
¿Qué significan el 110 y el 6? ¿Por qué 10.205.0.5/32 tiene dos líneas, y por qué ese
reparto se hace por flujo y no por paquete? ¿Por qué 10.205.12.0/30 no lleva >*? Si
el enlace por eth1 deja de pasar tráfico sin que la interfaz se caiga, con Hello de 10
s y Dead de 40 s, ¿entre cuántos segundos se detecta?
Pregunta 16
El único VRP publicado para esta zona es 100.64.250.0/23, largo máximo 24, AS 65450.
Clasifiquen cada anuncio como valid, invalid o not found:
| Prefijo | AS_PATH |
|---|---|
100.64.250.0/24 |
65470 65450 |
100.64.250.0/25 |
65470 65450 |
100.64.251.0/24 |
65460 |
100.64.252.0/24 |
65460 |
100.64.250.0/24 |
65460 65450 |
El AS 65460 es un atacante. ¿Qué tiene de engañosa la última fila? En una red sin
validación de origen, ¿por qué un /25 originado por 65460 atraería el tráfico de todos
los que lo acepten, aunque la ruta legítima hacia el /24 tenga un AS_PATH más corto?