Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ENTREGA INDIRECTA
Sabemos que, si el emisor A y el receptor C están conectados por routers, es porque no pertenecen al
mismo prefijo de red (Net-Id). Cuando A se da cuenta de esto, entonces llega a la conclusión de que
tiene que hacer entrega indirecta. Para hacer esta, A tiene que determinar quién es el próximo salto.
Puesto que A no puede enviarle el datagrama a C utilizando solamente servicios de capa 2, entonces
necesito un intermediario, el cual A llama próximo salto.
En este caso, el emisor A y el receptor C tienen distintos Net-Id. En este caso A no le va a pasar el
datagrama directamente a C, sino que, a un intermediario, el router M. Si este intermediario se da
cuenta que no puede enviar directamente a C, busca hacer un salto. Un dispositivo M puede elegir como
próximo salto a otro dispositivo X solo si M y X están directamente conectados, es decir pertenecen a
una misma red IP (mismo Net-Id). En el diagrama, M está directamente conectado a X, pero no a Y. Por
más que tanto X como Y puedan llegar a C, Y no pertenece a la misma red que M, así como X. A
continuación, el router X debe determinar si el destino final del datagrama es alcanzable en forma
directa, y si no es así, ahí debe optar por un salto. Como vemos que, si es posible la entrega directa al
destino final C, la efectúa.
Ahora, en una red podemos encontrar una mezcla de routers y hosts. La diferencia entre estos es que,
cualquier router que reciba un datagrama que no es para sí mismo, va a buscar reenviarlo. En cambio
cuando un host recibe un datagrama que no es para él, lo va a descartar y no va a hacer nada.
Ahora, suponiendo que en lugar del router M tenemos una PC con Linux. Este tiene un parámetro
llamado IP-forwarding. Si este esta deshabilitado, trabaja como un host más. Si está habilitada, este
puede funcionar como un router, entonces se va a fijar si puede hacer entrega directa o va a buscar
hacer un salto.
IP brinda un servicio de datagramas. Estos son no orientados a la conexión. Dado un datagrama con
origen A y destino B, cada dispositivo de la ruta A hasta B solo determina el próximo dispositivo
(próximo salto) de la ruta. Se denomina técnica NEXT HOP. Ningún dispositivo conoce la ruta completa.
Tanto hosts como routers toman decisiones de reenvío (forwarding). La diferencia es que los routers
toman decisiones de forwarding siempre, para cualquier datagrama, y los hosts solo toman decisiones
de forwarding cuando son origen o destino de ese datagrama. Si un host Z reciben un datagrama que
viene de otro host X, dirigido a un host Y, no toma decisiones de forwarding.
En una internet TCP/IP los routers forman una estructura interconectada cooperativa. Los datagramas
pasan de un router a otro hasta que llegan a un router que puede entregar ese datagrama directamente
a el destinatario final.
Un host descansa en los routers para transferir datagramas a destinos remotos. Es decir que un host no
sabe mucho, con alcanzar un router ya alcanza. De manera distinta, cada router conocer cómo llegar a
todos los posibles destinos en la internet, es decir necesita tener mucha más información. Dado un
datagrama, un router lo debe poder reenviar correctamente.
1- Decidir si la fila contiene información que puede ser utilizada para reenviar el datagrama que se
está procesando
2- Una vez seleccionada la fila, ésta debe indicar que acción tomar con el datagrama. Si hacer un
salto o una entrega directa.
CONSTRUCCIÓN DE TABLAS
Recordemos que los dispositivos tienen interfaces con nombre. Vemos que en este caso cada interfaz de
router que pertenece a una red LAN tiene la última dirección útil del segmento de direcciones
asignables.
Vamos a armar la tabla de reenvío de R1. Debemos tener en cuenta que luego de configurar las IP, un
dispositivo ya puede hacer entrega directa a las redes a las que pertenece. R1 pertenece a la red
10.1.1.0/24 y a la red 192.168.1.0/29. Pero al no pertenecer a la red 10.2.2.0/26, no puede hacer
entrega directa a la misma. Entonces debemos agregar una fila para saber que hacer con los datagramas
que estén dirigidos a esta.
Algo que no podemos pasar por alto es el hecho de que, como administradores, no es necesario
configurar la información para las redes de entrega directa, sin embargo, esas entradas se van a
visualizar en la tabla, dependiendo de la implementación. Vamos a agregar entonces a la tabla, las filas
para las redes de entrega directa. Recordemos que R1 estaba directamente conectado a 10.1.1.0/24 y a
192.168.1.0/29. Como hace referencia a una entrega directa, no hay realmente un próximo salto.
Hay más de una manera de especificar que una fila es para representar una entrega directa. Por
ejemplo, que en el campo NEXT HOP, tenga la misma IP que en el campo INTERFAZ.
Ahora vamos a hablar de R4. Este está conectado directamente mediante su i5, a la i1 de R1. A su vez
este esta conectado a una nube, la cual puede tener una cantidad muy grande de redes que no conozco.
Entonces en este caso no puedo agregar una fila para cada una de las redes. Entonces, en todos esos
casos de redes, tengo que salir a través de R4. No olvidemos que como R4 está conectado directamente
a R1, debemos agregar la fila que lo especifica.
Por último, no debemos olvidar que, aunque los reenvíos de basan en las redes y no en hosts
individuales, la mayoría del software de reenvío IP permite una ruta hacia estos. Son casos especiales.
Algunos de los usos posibles son, cuando un administrador puede enviar el tráfico para ciertos hosts a lo
largo de una ruta y el tráfico para el resto de los hosts a lo largo de otra, o cuando se instala y se prueba
una red nueva en paralelo mediante el reenvío de tráfico hacia hosts específicos sobre la nueva red.
También puede ser por temas de seguridad donde el tráfico hacia ciertos hosts puede ser enviado por
rutas más seguras.
Según el esquema con el que estamos trabajando podemos ver que desde R1, hay dos caminos posibles
para llegar a 10.3.3.0/25. Vamos a especificar un caso especial en el que únicamente para llegar al
servidor 10.3.3.3, tengamos que pasar por R5 y no por R3 como habíamos especificado para todos los
hosts de 10.3.3.0/25. Entonces en la fila que voy a agregar, el DESTINO va a ser la IP del host individual.
En máscara se ponen 32 1s. Esto quiere decir que esta fila solamente sirve para el destino especificado.
No debemos olvidar de ninguna manera, agregar la fila que especifica que R5 está directamente
conectado a R1.
Hasta ahora vimos que las filas de entrega directa no son manejadas por el administrador. Sin embargo,
hay algunas implementaciones que las muestran. Pero estas no son las únicas filas que no son
configuradas por el administrador. Estas son parte de las conocidas como filas de entrega directa por
más que no hacen referencia a redes. Por ejemplo, una fila para la red de loopback:
Vamos a ver como quedaría la tabla completa de R1. No debemos olvidar que las únicas filas que el
administrador configura son las que están en azul.
ALGORITMO DE REENVÍO
En el primer if anidado, el dispositivo se fija si el datagrama es para si mismo. Si no es así, debe entregar
el datagrama, ya sea de manera directa o indirecta, al siguiente salto, y para eso va a utilizar servicios de
la capa 2. Si el siguiente salto es el destinatario final, uso los servicios de la capa 2 para enviar el
datagrama a este mismo. Si en el siguiente salto tengo al NEXT HOP, voy a usar estos servicios para
entregar el datagrama al próximo salto, es decir al intermediario.
Entonces con esta tabla, vamos a ver que fila elige R1 para un datagrama con destino 10.2.2.2. Vemos
que si tomamos la primera fila, hacemos 10.2.2.2 AND 255.255.255.192, lo cual nos da 10.2.2.0. Como
10.2.2.0 está en la tabla, sabemos cual es el siguiente salto que debemos elegir. Sin embargo, vemos
que en la tercera fila, si hacemos 10.2.2.2 AND 0.0.0.0, nos da 0.0.0.0, lo cual coincide con un destino de
la tabla. Sin embargo, el siguiente salto asociado a esta fila de la tabla, no está relacionado con el
destino intencionado real de 10.2.2.2. Por situaciones como esta, el algoritmo que toma la dirección de
destino y va haciendo un AND bit a bit entre este y la máscara no recorre las filas en cualquier orden.
Este organiza el recorrido para consultar primero las filas que tienen mas 1s en las mascaras y luego
continuar en forma descendente hasta llegar a las que tienen menos cantidad de 1s. Por eso en el caso
del que hablamos recién, siempre va a fijarse primero en la fila 1 en vez de la fila 3. En consecuencia,
primero va a consultar a las entradas para hosts específicos (32 1s), luego las de red, ordenadas por
tamaño de prefijo de red, y por último va a consultar la ruta por omisión (0 1s)
Recordemos que la tabla de reenvío de un host debe tener el menor tamaño posible. Estos descansan
en los routers para las tareas de reenvío, por lo que las entregas indirectas configuradas en un host
pueden reducirse a una ruta por omisión. Entonces, en el esquema que estábamos utilizando, la tabla
del host A (PCA) solamente necesita definir R1 como próximo salto en la ruta por omisión.
Ahora vamos a tener en cuenta la red 10.3.3.128/25. Entonces ahora hay que modificar la tabla de R1
para que este pueda tomar una decisión de forwarding para esta red nueva, porque de no ser así va a
intentar ir por R4 porque es su ruta por defecto. Entonces la fila que agregamos en R1 será como la
siguiente:
Pero si nos fijamos en la tabla completa, ya tenemos una fila para la red 10.3.3.0 que se ve como la
siguiente:
Podemos ver que para el rango de direcciones de 10.3.3.0 – 10.3.3.127 el próximo salto es el mismo que
para el rango de direcciones 10.3.3.128 – 10.3.3.255, y es 192.168.1.3. Son dos rangos contiguos de
direcciones que tienen el mismo próximo salto. Esto nos da la posibilidad de poner una sola fila para
todo el rango 10.3.3.0 – 10.3.3.255, indicando el destino 10.3.3.0/24. Esta fila quedaría como la
siguiente:
Esta sirve para todo el rango de que hablamos. Sin embargo, vemos que no existe ninguna red
10.3.3.0/24. Pero no importa, porque a fin de cuentas lo que necesito de un router, es tener
información local que le permita tomar decisiones de forwarding, no conocer todas las redes que
existen. Entonces en este caso, R1 puede sumarizar rutas. Si no se hace la sumarización de rutas en una
configuración estática manual no hay problema, pero cuando hay protocolos de ruteo dinámico y
nosotros no configuramos las tablas, sino que lo hacen los protocolos, vamos a ver que se sumarizan las
rutas.