Mostrando las entradas con la etiqueta internet layer. Mostrar todas las entradas
Mostrando las entradas con la etiqueta internet layer. Mostrar todas las entradas

lunes, 19 de abril de 2010

Protocolos de Ruteo, las bases

Como ya vimos, el ruteo dinámico nos provee información de las redes que están conectadas en cada router de nuestra red, y está basado en distintos parámetros, como la distancia administrativa, el ancho de banda, el número de saltos, etc.

La distancia administrativa (AD) es usada para calificar la confianza que tenemos en la información de ruteo, siendo 0 lo mejor y 255 una ruta que nunca sería utilizada, por eso es que una red directamente conectada aparece en la tabla de ruteo con una AD de 0.

Cuando el router recibe dos anuncios de la misma red por rutas diferentes, lo primero que se revisará es la AD, y si una de las rutas tiene una AD menor, esa será colocada en la tabla de ruteo. En caso de que la AD de ambas sea igual, entonces se determinará la mejor ruta por el número de saltos o el ancho de banda de los enlaces; y si en ambas rutas las métricas son iguales, entonces el router usará ambas rutas, balanceando la carga entre ambas.

Las rutas directamente conectadas son las que tienen mayor prioridad, después las rutas estáticas, y luego las aprendidas por medio de un protocolo de ruteo (tabla de distancias administrativas). Cuando una tabla de ruteo contiene información de las rutas hacia cada una de las redes existentes, entonces se dice que alcanzamos la convergencia de la red.

Hay 3 clases de protocolos de ruteo:
  • Vector-Distancia (distance-vector), encuentran la mejor ruta a una red en base a la distancia. Cada vez que un paquete pasa por un router (los llamados saltos) la métrica hacia esa red se incrementa. La ruta con menos saltos hacia esa red es la mejor. El vector nos indica la dirección hacia la red remota. RIP e IGRP son protocolos de Vector-Distancia y envían la tabla de ruteo completa a los vecinos directamente conectados. Es importante notar que no toman en cuenta el ancho de banda, por lo que una ruta con menos saltos, pero un ancho de banda muy pequeño podría ser preferida sobre otra más "óptima"
  • Estado del Enlace (link state), o también llamados Protocolos de la ruta más corta primero (Open Shortest Path First), crean 3 tablas separadas; una de los vecinos directamente conectados, una que determina la topología de la red completa, y una última que es utilizada como tabla de ruteo. Estos protocolos dan más información de la red que un protocolo de Vector-Distancia. OSPF es un protocolo basado en Estado del Enlace y hace que un router envíe información de sus propios enlaces a otros routers en la red.
  • Protocolos híbridos, que son una mezcla de los protocolos Vector-Distancia y Estado del Enlace, por ejemplo EIGRP.
La decisión de que tipo de protocolo usar debe ser tomada en cada caso particular de acuerdo a las necesidades de cada red; pero conocer las ventajas y debilidades de cada protocolo nos ayudará a hacer una excelente decisión que cubra nuestras necesidades.

lunes, 20 de abril de 2009

Ejemplo de Encapsulamiento (ilustración del datagrama)

Tomando el caso del ejemplo anterior, el datagrama será analizado en fragmentos de 8 bytes, indicando la longitud de cada campo; recordemos que es un paquete de ICMP encapsulado en IP.

Del byte 0 al 7:




y tenemos la siguiente información de sus campos:



IHL: Especifica la longitud del encabezado de IP en palabras de 32 bits (4 Bytes) y el valor mínimo es 5.

TOS: Type of service, 8 bits, especifica los parámetros para el tipo de servicio solicitado. Los parámetros pueden ser utilizados por las redes para defini el manejo del datagrama durante el transporte. El bit M fue agregado en el RFC 1349.



Total Lenght: es la longitud total del datagrama, en este caso es 0x003C (60 bytes).

Identification: Usado para indentificar fragmentos de un datagrama deaquellos de otro. El módulo de protocolo que origina al datagrama fija el valor del campo de identificación a un valor que debe ser único para el par de Fuente-Destino y protocolo por todo el tiempo que el datagrama estará activo en el sistema de red. El módulo de protocolo de origen de un datagrama completo pone los bits MF y el Fragment Offset a cero.



Fragment Offset, 13 bits: usado para dirigir el reensamblado de un datagrama fragmentado. En este caso es cero porque no hay más fragmentos.

Del byte 8 al 15:




TTL: Time to live, es un temporizador para llevar un control del tiempo de vida del datagrama. Cuando el TTL es decrementado a cero, el datagrama es desechado.

Protocol: este campo especifica el protocolo encapsulado, en este caso el valor es 1, lo que nos indica que se trata de un paquete de ICMP (ping). Consulta los valores en la tabla (click aquí).

Header Checksum: 16 bits de la suma de verificación del encabezado de IP y las opciones IP.

Source IP Address: Es la dirección IP del transmisor, en este caso 192.168.1.1 (0xC0.A8.01.01).

Del byte 16 al 27:




Destination IP Address: es la dirección IP del destino, en este caso 192.168.1.17 (0xC0.A8.01.11).

C, Class y Option: en este caso indican (tabla de valores):

  • 0x0: no copiar

  • 0x00: mensaje de control

  • 0x1000: solicitud de Echo (RFC 792, Summary of Message Types, 8 Echo).


Padding: es de longitud variable y sirve como relleno para asegurar que los datos comienzan tras de una frontera de 32 bits después de la dirección de destino.

Aquí es importante destacar que al tratarse de un mensaje de control (ICMP) se utilizan los bytes del 20 al 27 para información de control; y se usan de la siguiente manera (RFC792):
    20                  21                  22                  23
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Code Checksum
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Identifier Sequence Number
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Data ...

+-+-+-+-+-

De aquí obtenemos que:

  • byte 20, es un paquete tipo 8 (echo request)
  • byte 21, siempre va a cero
  • byte 22 y 23, es el checksum de ICMP
  • bytes 24 y 25, si el byte 21=0 el identificador ayuda a hacer match entre las solicitudes y las respuestas de eco; puede ser 0 o puede usarse para identificar una sesión.
  • bytes 26 y 27 son para llevar la secuencia de las solicitudes de eco, y quien responde debe usar el mismo número; la secuencia debe incrementarse con cada nueva solicitud (en una instrucción típica de ping se envían 4 paquetes, y pueden enviarse cuantos se desee).

Bytes del 28 al 59 (32 bytes)

Son los datos de relleno que se colocaron dentro del mensaje de Echo, y se trata de una secuencia, del 0x61 al 0x77, y se vuelve a comenzar. Cuando se responde la solicitud de eco se debe incluir exactamente la misma información en el campo de datos.