> For the complete documentation index, see [llms.txt](https://juan-martin-franco.gitbook.io/network-+/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://juan-martin-franco.gitbook.io/network-+/7.-enrutamiento/7.2-tablas-de-enrutamiento.md).

# 7.2 - Tablas de enrutamiento

## Tablas de enrutamiento

Los routers realizan sus decisiones basándose en lo que conocemos como <mark style="color:blue;">**tabla de ruteo**</mark> o <mark style="color:blue;">**tabla de enrutamiento**</mark>.

Al igual que los switches, los cuales utilizan una tabla interna de direcciones MAC, **los routers utilizan una tabla de ruteo, la cual les ayuda a determinar donde tienen que ir los paquetes**, ya sea dentro o fuera de la red.

**Estas decisiones de ruteo contendrán información de capa 3, y realizarán un mapeo de capa 3 a capa 2.**

El router **utiliza una cache ARP para mapear una dirección IP a una dirección MAC dada** y, de esta forma, **sabrá que IP se correlaciona con que dirección MAC dentro de nuestra red de área local.**

Cada decisión de reenvío de paquetes estará basada en su tabla interna de ruteo. Estas tablas se concentran sobre la parte de direccionamiento lógico o dirección IP.

### ¿Cómo funcionan las tablas de enrutamiento?

Las tablas de ruteo son mantenidas por el router y ayudan a determinar que ruta debe seguir un paquete mientras atraviesa las diferentes redes.

Una entrada de la tabla de ruteo tiene un prefijo y mientras más largo es dicho prefijo, más específica es la red.

Por ejemplo, dada la siguiente tabla de ruteo:

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2Fa1YNxhVtDEXjGz9YmAml%2Fimage.png?alt=media&amp;token=2ef13435-b26d-4f20-8b48-7ea4e98d191a" alt=""><figcaption></figcaption></figure>

Si observamos el cuadro, vemos que tiene 3 redes diferentes:

* <mark style="color:blue;">**La red 125.0.0.0**</mark>
* <mark style="color:green;">**La red 161.5.0.0**</mark>
* <mark style="color:red;">**La red 134.7.0.0**</mark>

De todas estas redes nombradas, **la que posee (en este caso, las que poseen) el prefijo más grande son las 2 últimas**, ya que son más específicas, **por el simple hecho de tener especificados los dos primeros octetos (a diferencia de la primera, que solo tiene el primer octeto especificado)**.

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2Fi50r4Os7tW1RrHO0ZRCg%2Fimage.png?alt=media&amp;token=c4d9b89b-0ab3-4158-be3c-c480b05945a2" alt=""><figcaption></figcaption></figure>

Es decir, podemos concluir que por ejemplo <mark style="background-color:green;">**la red 10.1.1.0/24 es más específica que 10.0.0.0/8**</mark>.

### ¿Qué información nos proveen las tablas de ruteo?

Cuando miramos las tablas de ruteo, cada entrada nos indica:&#x20;

* <mark style="color:blue;">**La red de destino (Destination Network)**</mark>
* <mark style="color:purple;">**La dirección del router (Next Router) donde se debería dirigir el tráfico para alcanzar dicha red**</mark>
* <mark style="color:red;">**El puerto (Port) donde debo dirigir el tráfico para llegar a dicho router**</mark>
* <mark style="color:green;">**El costo de dicha ruta (Route Coste)**</mark>

### Fuentes de información de ruteo

Existen 3 tipos diferentes de fuentes que utilizan los routers:

* <mark style="color:blue;">**Ruta directamente conectada (Directly Connected Route)**</mark>: Una ruta directamente conectada es aprendida mediante una conexión física entre dos routers.\
  En este ejemplo, tenemos 3 routers conectados directamente por medio de cableado.\
  El router 2 (R2) sabe donde están el Router 1 (R1) y el Router 3 (R3) ya que está conectado directamente a ellos.\
  El cableado utilizado en el diagrama (el que tiene forma de zigzag) representa una conexión de serie.<br>

  <figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FrkO8N48P6bRZq9T4o7tb%2Fimage.png?alt=media&amp;token=0cd128d3-1373-482a-932b-2a674db8db71" alt=""><figcaption></figcaption></figure>
* <mark style="color:blue;">**Ruteo estático (Static Route)**</mark>: La segunda forma en la que los routers conocen como las cosas están conectadas a ellos es por medio del ruteo estático. \
  Las rutas estáticas son rutas configuradas manualmente por un administrador.\
  En este mismo ejemplo, el Router 1 (R1) sabe como llegar al Router 2 (R2) porque está conectado directamente con él, pero no sabe como llegar al Router 3 (R3).\
  Para "solucionar" esto, puedo indicar en la tabla de ruteo del Router 1 que cada vez que se desee enviar tráfico al Router 3, se envíe a través del Router 2. Esta ruta se convertirá en una ruta estática.<br>

  <figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FFWHWZRBvDZ9H340k2mr4%2Fimage.png?alt=media&amp;token=bc465bc8-6339-4ef1-adef-f4a0d013dff2" alt=""><figcaption></figcaption></figure>

  Existe una ruta estática por defecto en cada router, la cual es 0.0.0.0/0.\
  Básicamente esta ruta le indica al router que, si no sabe donde enviar el tráfico, simplemente se dirija a dicha dirección.<br>

  <figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2F7CmCe5UqzutRObtoiZIj%2Fimage.png?alt=media&amp;token=7e4aac7d-7232-41c6-a677-183d3e13d842" alt=""><figcaption></figcaption></figure>
* <mark style="color:blue;">**Ruteo dinámico (Dynamic Route)**</mark>: La tercera y última forma en la que los routers aprenden rutas es por medio de lo que conocemos como ruteo dinámico.\
  Este tipo de ruteo funciona utilizando protocolos de ruteo dinámico.\
  Estos protocolos son aprendidos por medio del intercambio de información entre routers automáticamente, basándose en los protocolos.<br>

  <figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FtDkrSj2eHMJMYOollrkB%2Fimage.png?alt=media&amp;token=6c9e68e6-1315-4be3-ad4a-767e7fb69a98" alt=""><figcaption></figcaption></figure>

  La idea en este tipo de ruteo es que, cuando los routers se conectan directamente, comienzan a intercambiarse información (en este caso, sus tablas de ruteo).\
  Este tipo de ruteo es esencial, especialmente en redes muy grandes.

### Ruteo directamente conectado (Directly Connected Route)

Cuando hablamos de rutas directamente conectadas, tenemos un escenario similar al siguiente:

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FKT4Dx3TA1Vkn1yAYwLYs%2Fimage.png?alt=media&amp;token=f1e2b21c-a064-4cad-8e50-6352bb402325" alt=""><figcaption></figcaption></figure>

Como se puede apreciar en la imagen, tenemos el Router 1 (R1) y el Router 2 (R2) conectados directamente por medio de una conexión de serie.

Ambos routers saben como llegar a los switches, ya que también están directamente conectados a ellos.

En la tabla del router R1, podemos ver que tiene dos entradas:

* <mark style="color:blue;">**La primera entrada corresponde a la conexión con la red 10.0.1.0/24, la cuál hace referencia a la red que está conectada con el switch de la izquierda.**</mark> Esta conexión la realiza por medio de la interfaz Fa 0/0.
* <mark style="color:blue;">**La segunda entrada corresponde a la conexión con la red 192.1.1.1/30, la cual es la red que está "entre medio" de los routers.**</mark> Es decir, el router R1 se conecta a la red que tiene como objetivo interconectar ambos routers. Esta conexión la realiza por medio de la interfaz S 1/1.

En la tabla se puede apreciar que el router R1 no sabe como llegar a la red 10.0.2.0/24, ya que **solo conoce las redes que están conectadas directamente con él**.

### Ruteo estático (Static Route)

Si avanzamos con el diagrama, podemos observar la siguiente entrada en la tabla del escenario anterior:

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FINIcYXN1Qk54zzf2NJpZ%2Fimage.png?alt=media&amp;token=ed4b1c1a-cb03-462b-8792-bf5d3313c120" alt=""><figcaption></figcaption></figure>

En esta nueva entrada de la tabla de ruteo, de manera estática agregamos la ruta por defecto, la cual es 0.0.0.0/0.

Cada vez que no conozca una dirección IP, el tráfico va a ser enviado por el puerto serial 1/1 (es decir, la interfaz S 1/1, la cual conecta con el Router R2).

Si la pc PC1 intenta llegar a PC2, enviará el tráfico al Router R1, y luego el Router enviará el tráfico por el puerto serie S 1/1.

### Ruteo dinámico (Dynamic Route)

Cuando hablamos de ruteo dinámico, debemos hacer referencia a los protocolos de ruteo dinámico con el cual funciona este tipo de ruteo.

Estos protocolos pueden tener más de una ruta para una red existente.

Si se tiene un diagrama de red más complejo, como el siguiente:

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FpnPfgs4E3EhGoLMaAIwb%2Fimage.png?alt=media&amp;token=95ca8fed-11b9-4871-9ce6-e729ba6cdde7" alt=""><figcaption></figcaption></figure>

y deseamos llegar desde el Router 1 (R1) al Router 5 (R5), podemos llegar de varias formas diferentes, como por ejemplo:

* R1 -> R3 -> R4 -> R5
* R1 -> R2 -> R3 -> R4 -> R5
* R1 -> R2 -> R4 -> R5

La forma en la que nuestro router sabe cual es el mejor camino para llegar a un router destino es por medio de la negociación entre routers que está presente en el ruteo dinámico, la cual está basada en:&#x20;

* <mark style="color:blue;">**El número de saltos (hops)**</mark>, el cual es el número de veces que tenemos que pasar por diferentes routers
* <mark style="color:blue;">**El número de ancho de banda disponible del enlace**</mark>, que tan rápido es dicho enlace

Todos estos protocolos de ruteo dinámico pueden ser soportados dependiendo de que routers estemos utilizando y diferentes criterios de configuración que podemos utilizar.

### Prevenir Loops de Ruteo

Al igual que cuando tenemos problemas con los switches donde podemos tener loops y tormentas de broadcast, podemos tener problemas con el ruteo si el tráfico comienza a moverse de manera circular.

Para prevenir estos loops, existen dos técnicas diferentes:

* <mark style="color:purple;">**Split Horizon**</mark>
* <mark style="color:green;">**Poison Reverse**</mark>

### Split Horizon

La técnica de <mark style="color:purple;">**Split Horizon**</mark>, también conocida como <mark style="color:purple;">**Horizonte dividido**</mark>, previene que una ruta que fue aprendida por una interfaz sea anunciada de nuevo por la misma interfaz.

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FpAEi1lsdpLNLdQaqV7rY%2Fimage.png?alt=media&amp;token=6ca2ebc5-b7d3-45e2-b4ac-2d8a60f5f450" alt=""><figcaption></figcaption></figure>

En este ejemplo, vemos que el router 1 (R1) sabe como llega al router 2 (R2) por medio de su conexión directa. \
Al saber esto, no le anuncia al router 2 como llega a dicho router basado en la misma conexión, ya que lo aprendió de esa misma conexión.

### Poison Reverse

La técnica de Poison Reverse, también conocida como Envenenamiento reverso, causa que una ruta que fue recibida en una interfaz sea anunciada de nuevo por la misma interfaz pero con un costo muy alto, logrando que ningún router use dicha ruta.

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FDMNiL0R2h28oNC7ZrJmd%2Fimage.png?alt=media&amp;token=776d7433-ae5d-4720-83a9-62c7deea9086" alt=""><figcaption></figcaption></figure>

### Ejemplos de Loops de Ruteo

<mark style="color:green;">**Ejemplo N° 1: Red sin loop de ruteo.**</mark>

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FBbFFFjTigFm2azTmeHs9%2Fimage.png?alt=media&amp;token=eefe75f8-dfde-4d59-b5be-ed2d6616cba1" alt=""><figcaption></figcaption></figure>

En este primer ejemplo, se puede apreciar el escenario correspondiente a una red sin loops de ruteo.

En esta red, hay 3 routers: R1, R2 y R3.

Se pueden ver las diferentes redes basándose en las direcciones IP y en las tablas de ruteo, justo abajo del diagrama.&#x20;

Si empezamos a tener problemas, como por ejemplo, la pérdida de conexión de red desde el router 3 para la red 10.1.4.0, por la caída del enlace Ethernet E 0/1, el router 2 seguirá pensando que puede acceder a dicha red, por medio del puerto serie 0/1.

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FJbfFu5qlJqIh4MFpZ23W%2Fimage.png?alt=media&amp;token=dd002761-45d9-4c41-ab4a-7a6b19485e76" alt=""><figcaption></figcaption></figure>

Si el router 3 se cae, indicará que no puede acceder a dicha red a los demás routers utilizando un protocolo de ruteo dinámico.

En caso de que esto ocurra, el router 3 le preguntará al router 2 si sabe como llegar a dicha red, y el router 2 le contestará que sabe llegar por medio del enlace con router 3, el cual tiene como costo 1 salto.&#x20;

Luego, el router 3 entiende que puede llegar a dicha red, ya que está conectado al router 2 de manera directa. Ahora, los saltos se incrementan a 2.

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FoD8u4mBc2FrlRaZSF4aG%2Fimage.png?alt=media&amp;token=c41b2e87-d28d-4106-b0e7-0fc95c234473" alt=""><figcaption></figcaption></figure>

Esto proceso continúa repitiéndose, causando un loop de ruteo hasta que la métrica alcance un valor tan alto que hará que ningún router utilice dicha ruta.
