El conductor de la rotonda
Un conductor de reparto llega a una rotonda. Lee el cartel y toma una salida. No planea todo el viaje.
Un router hace lo mismo con cada paquete. Lee la dirección de destino, busca una línea en su tabla y entrega el paquete al siguiente.
Cada router del camino repite ese mismo trabajo.
Al final de esta lección
Nota
Puedo leer una tabla de rutas y decir qué ruta sigue un paquete.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Tabla de rutas | la lista de redes de un router y por dónde enviar cada una | |
| Siguiente salto | el router vecino que recibe el paquete después | via 10.0.1.1 |
| Ruta conectada | una red a la que el router está enchufado directamente | |
| Ruta estática | una ruta que una persona escribe a mano | |
| Ruta por defecto | la línea que se usa cuando ninguna otra encaja | 0.0.0.0/0 |
| Prefijo más largo | la línea que encaja con más bits de red |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un equipo envía directo o a su puerta
Un equipo se hace primero una pregunta. ¿El destino está en mi propia red?
Si es así, envía el paquete directamente. Si no, lo envía a su puerta de enlace, un router de su misma red.
El equipo nunca planea el resto del viaje.
Lee las rutas de un equipo
sudo ip netns exec h1 ip routeSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Pregunta por dónde sale un paquete
sudo ip netns exec h1 ip route get 10.0.3.2Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Cómo leer las respuestas
El primer Run imprime dos líneas. Una es la red en la que está h1. La otra empieza por default via 10.0.1.1: todo lo demás va a r1.
El segundo Run empieza por 10.0.3.2 via 10.0.1.1 dev to-r1. La palabra via nombra el siguiente salto.
Un router sigue su tabla
Un router tiene varias interfaces y una tabla de rutas. Cada línea dice: para esta red, usa este camino.
Al empezar, solo conoce sus rutas conectadas. Aprende las demás redes si una persona añade una ruta estática, o si un protocolo las comparte.
Sin una línea para una red, el router no puede reenviar paquetes hacia ella.
Ejemplo resuelto: la primera tabla de un router
| Red | Siguiente salto | Tipo |
|---|---|---|
| 10.0.1.0/24 | directo, por to-h1 | Conectada |
| 10.0.12.0/24 | directo, por to-r2 | Conectada |
| 10.0.3.0/24 | ninguno | Sin línea, sin camino |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Lee la tabla de r1 en su consola
sudo vtysh -N r1 -c "show ip route"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Pregunta a r1 por una red desconocida
sudo ip netns exec r1 ip route get 10.0.3.2Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Haz ping desde h1 a h2
sudo ip netns exec h1 ping -c 2 -W 1 10.0.3.2Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Sin línea no hay camino
La consola lista cuatro líneas para r1. Dos empiezan por C, de conectada, y dos por L, las direcciones propias del router.
El último Run imprime RTNETLINK answers: Network is unreachable. La tabla no tiene línea para 10.0.3.2, así que r1 no sabe adónde enviarlo.
El ping imprime dos líneas From 10.0.1.1 ... Destination Net Unreachable y termina con 100% packet loss.
Gana el prefijo más largo
Varias líneas pueden encajar con una misma dirección. El router elige la del prefijo más largo, la que nombra la red con más exactitud.
La ruta por defecto, 0.0.0.0/0, encaja con todo con cero bits. Por eso pierde contra cualquier otra y se usa la última.
Un error frecuente
Advertencia
Mucha gente cree que gana la primera línea que encaja. El router no lee de arriba abajo. Mira todas las líneas y elige la coincidencia más larga. El orden de la tabla no cambia el resultado.
Ejemplo resuelto: qué línea gana
| Destino | Líneas que encajan | Gana |
|---|---|---|
| 10.4.7.200 | 0.0.0.0/0, 10.0.0.0/8, 10.4.7.0/24, 10.4.7.128/25 | 10.4.7.128/25 |
| 10.4.7.5 | 0.0.0.0/0, 10.0.0.0/8, 10.4.7.0/24 | 10.4.7.0/24 |
| 10.9.9.9 | 0.0.0.0/0, 10.0.0.0/8 | 10.0.0.0/8 |
| 8.8.8.8 | 0.0.0.0/0 | 0.0.0.0/0 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Para ir más lejos: explica por qué gana
Escribe explain_route(table, destination), que devuelve la línea entera que gana y no solo su siguiente salto.
Usa las cuatro redes de la tabla resuelta: 0.0.0.0/0, 10.0.0.0/8, 10.4.7.0/24 y 10.4.7.128/25. Pruébala con 10.4.7.129, 10.4.7.127, 10.200.0.1 y 11.0.0.1. Explica cada respuesta con la regla del prefijo más largo.