next up previous contents
Next: Fragmentación Up: Nivel de Red Previous: Descarte de Paquetes   Índice General

El Protocolo IP

Internet es un conjunto de redes diferentes que comparten una pila de protocolos comunes. Cada una de estas redes es administrada por una entidad diferente: universidades, redes académicas nacionales, ISPs (Internet Service Providers), operadores, empresas multinacionales, etc. Como consecuencia de esto las políticas de uso son muy variadas.

Técnicamente a nivel de red Internet puede definirse como un conjunto de redes o sistemas autónomos conectados entre sí que utilizan el protocolo de red IP. IP es una red de datagramas, no orientada a conexión, con servicio ``best effort'', es decir, no ofrece QoS. La entrega de los paquetes no está garantizada ya que en momentos de congestión éstos pueden ser descartados sin previo aviso por los routers que se encuentren en el trayecto.

Figura 28: Encabezado del Paquete IP.
\includegraphics [scale=0.80]{ch04/IPPaq.eps}

En una red IP toda la información viaja en paquetes o datagramas IP. Esto es: cualquier información de control que tenga que intercambiarse (routing dinámico, mensajes de error, etc.) y los datos de nivel superior.

El paquete IP (ver figura 28) tiene dos partes: encabezado y texto. El encabezado tiene una parte fija de 20 bytes y una opcional de entre 0 y 40 bytes, pero siempre es un múltiplo de 4. Los campos son los siguientes:

Versión:
4 bits que permiten coificar los valores de las distintas versiones de IP. La versión actualmente es la 4, pero se empezó ya a extender el uso de la versión 6 con una estructura de paquete diferente a la de la figura.
IHL:
4 bits que especifican la longitud del encabezado, pues éste puede variar debido a la presencia de campos opcionales. Se codifica en palabras de 32 bits, donde la longitud mínima es 5 y la máxima 15, que equivale a 40 bytes de información opcional. La longitud del encabezado siempre es un múltiplo de 32 bits, por lo que se puede añadir un relleno al final del encabezado.
Tipo de Servicio:
8 bits. Permite establecer que calidad de servicio requiere el paquete. Se pueden establecer varios tipos de confiabilidad y velocidad (ej. rapidez en vez de confiabilidad para aplicaciones como audio o video, confiabilidad para transferencia de archivos, etc.). Este campo tiene subcampos de importancia: P (precedencia) son 3 bits de prioridad, un Flag tres bits D, T y R que permite especificar que importa más Retardo, Throughput o Confiabilidad. Recientemente, el campo Differentiated Services ha sustituido a este campo. Su finalidad es implementar QoS en redes IP mediante la arquitectura denominada Servicios Diferenciados o Diffserv.
Largo Total:
16 bits que especifican la longitud del paquete completo, encabezado incluido, en bytes.
Identificación:
16 bits. Este campo permite al destino determinar a que paquete pertenece el fragmento que recientemete ha llegado a él. Está relacionado con la fragmentación de paquetes.
DF:
1 bit, que indica no fragmentar el paquete.
MF:
1 bit, indica que vienen más fragmentos. Todos los fragmentos del paquete, salvo el último, tienen este bit en 1.
Offset del Fragmento:
13 bits para indicar a que parte del paquete total pertenece el fragmento que se está recibiendo.
TTL:
8 bits que permiten descartar un paquete una vez que ha dado un número excesivo de saltos o ha pasado un tiempo excesivo viajando por la red. Es un contador regresivo que indica el tiempo de vida restante del datagrama medido en segundos, de forma que si su valor llega a cero el paquete debe ser descartado. Esto permite evitar que se produzcan loops y un paquete pueda permanecer ``flotando'' indefinidamente en la red. Como no es trivial calcular con precisión el tiempo que un paquete emplea en el tránsito entre dos routers, en la práctica lo que se hace es restar el TTL en uno por cada salto, y en el caso de que el datagrama se encuentre durante más de un segundo esperando en un router, se resta uno por cada segundo de espera. Como los paquetes casi nunca están más de un segundo en un router, en la práctica este parámetro funciona como un contador de saltos. En el caso de producirse fragmentación, el host receptor puede retener datagramas durante varios segundos, mientras espera a recibir todos los fragmentos. En este caso, el host restará uno del TTL por cada segundo de espera, pudiendo llegar a descartar paquetes por este motivo. Los valores de TTL típicos están entre 40 y 64.
Protocolo:
8 bits que especifican a que protocolo de nivel de transporte corresponde el paquete. La tabla de protocolos válidos y sus correspondientes números son controlados por el IANA (Internet Assigned Number Authority)la tabla 6 muestra algunos de los posibles valores de este campo. Llama la atención el valor 4 de la tabla 6 que está reservado para el uso de IP para transportar IP, es decir, al encapsulado de un paquete IP dentro de otro. Esta técnica permite realizar ruteo desde el origen de los paquetes encapsulando el paquete en otro dirigido al nodo intermedio por el que se quiere pasar.
Checksum:
16 bits que sirven para detectar errores en el encabezado del paquete. El checksum permite evitar al paquete de una alteración en alguno de los campos del encabezado que pudiera producirse, por ejemplo, por un problema de hardware en un router. El checksum sólo cubre el encabezado del paquete, no los datos. El campo checksum se ha de recalcular en cada salto, ya que al menos el TTL cambia. Notar que en routers con alto tráfico, el recálculo del checksum supone un inconveniente desde el punto de vista de rendimiento.
Dirección Fuente:
32 bits que corresponden a la dirección IP origen.
Dirección Destino:
32 bits que corresponden a la dirección IP destino.
Opciones:
campo de longitud variable que no siempre está soportado en los routers y se utiliza muy raramente. Fue diseñado para permitir expansiones al protocolo, experimentos,etc. Las opciones son de tamaño variable, comenzando siempre por un yte de codificación, y siempre son rellenadas a múltiplos de 4 bytes. Entre las opciones destacables están Record Route que pide a cada router por el que pasa el paquete que anote en el encabezado su dirección, obteniéndose un trazado de la ruta seguida (debido a la limitación a un máximo de 40 bytes en la parte opcional del encabezado, como máximo pueden registrarse 9 direcciones). Timestamp actúa de manera similar a record route, pero además de anotar la dirección IP de cada router atravesado se anota en otro campo de 32 bits el instante en que el paquete pasa por dicho router. El uso de dos campos de 32 bits aumenta el problema antes mencionado del poco espacio disponible para grabar esta información. Source Routing permite al emisor especificar la ruta que debe seguir el paquete hasta llegar a su destino. Existen dos variantes: strict source routing que especifica la ruta exacta salto a salto, de modo que si en algún caso la ruta marcada no es factible por algún motivo se producirá un error. La segunda es loose source routing donde se dicen los routers por los que debe pasar el paquete, pero se da libertad a la red para que use otros routers cuando lo considere conveniente. La limitación en la longitud de las opciones impone un límite máximo en el número de saltos que pueden especificarse. El uso de los campos opcionales del encabezado IP tiene generalmente problemas de rendimiento, ya que las implementaciones de los routers optimizan el código para las situaciones normales, es decir, para paquetes sin campos opcionales. Las opciones están implementadas y funcionan, pero lo hacen generalmente de forma poco eficiente ya que en el diseño del software no se ha hecho énfasis en su optimización.


Tabla 6: Algunos Valores y Significados del Campo Protocolo en un Paquete IP
Valor Protocolo Descripción
0 Reservado  
1 ICMP Internet Control Message Protocol
2 IGMP Internet Group Management Protocol
3 GGP Gateway-to-Gateway Protocol
4 IP IP en IP (encapsulado)
5 ST Stream
6 TCP Transmission Control Protocol
8 EGP Exterior Gateway Protocol
17 UDP User Datagram Protocol
29 ISO-TP4 ISO Transport Protocol Clase 4
38 IDRP-CMTP IDRP Control Message Transport Protocol
80 ISO-IP ISO Internet Protocol (CLNP)
88 IGRP Internet Gateway Routing Protocol (Cisco)
89 OSPF Open Shortest Path First
255 Reservado  



Subsecciones
next up previous contents
Next: Fragmentación Up: Nivel de Red Previous: Descarte de Paquetes   Índice General
Jorge Pezoa N.
2001-06-18