Tema 4 Nivel de red, el protocolo IP 4.1 Introducción En general una rede de comunicaciones se compone de diferentes medios. Es necesario que se garantice la comunicación entre sí de todos los equipos conectados a la red. El nivel de red oculta los detalles del medio, ofreciendo al usuario la imagen de una única red, aunque dicha red esté formada por varias redes distintas en medios físicos diferentes. Así este nivel se encarga principalmente de la comunicación extremo a extremo y el encaminamiento. • Provee una red virtual única independiente de los medios físicos y protocolos de enlace. • Cada equipo que se conecta debe tener al menos una dirección que lo identifica dentro de la red, por lo que provee de un direccionamiento uniforme independiente de las redes físicas • Aísla a la capa de transporte de la tecnología, topología, etc de la red. • Se encarga del establecimiento de rutas. • Control de congestión dentro de la red. • Adaptación al tamaño de trama del nivel de enlace. IP es un protocolo de nivel de red que proporciona servicios sin conexión (no orientados a la conexión), no fiable (puede perder paquetes o paquetes duplicados). Es un protocolo bien intencionado, es decir, un paquete se pierde solamente cuando se dan circustancias excepcionales como un corte en la red. IP es el principal protocolo de la capa de red. Este protocolo define la unidad básica de transferencia de datos entre el origen y el destino, atravesando toda la red. Además, el software IP es el encargado de elegir la ruta más adecuada por la que los datos serán enviados. Se trata de un sistema de entrega de paquetes (llamados comúnmente datagramas) que tiene las siguientes características: • Es no orientado a conexión debido a que cada uno de los paquetes puede seguir rutas distintas entre el origen y el destino. Entonces pueden llegar duplicados o desordenados. • Es no fiable porque los paquetes pueden perderse, dañarse o llegar retrasados. • Cada datagrama es tratado en la red de manera independiente de los demas.
4.2 El Protocolo IP Es el estándar de facto de las grandes redes, por ser el protocolo en que se sustenta Internet. Es un protocolo no orientado a conexión, y no establece llamadas para realizar la conexión. Simplemente envía la información en datagramas. Un datagrama IP consiste en una parte de cabecera y en una parte de texto. La cabecera tiene una parte fija de 20 bytes y una opcional de longitud variable. El formato de la cabecera se muestra en la figura:
ETH.
ATM RTC
ETH.
El datagrama IP es la unidad básica de transferencia entre el origen y el destino. Este datagrama viaja en el campo de datos de las tramas físicas (p.e. Ethernet) de las distintas redes que va atravesando. El propio datagrama IP tiene también un campo de datos: será aquí donde viajen los paquetes de las capas superiores. • VERSION (4 bits). Indica la versión del protocolo IP que se utilizó para crear el datagrama. Actualmente se utiliza principalmente la versión 4 (IPv4) aunque ya esta disponible la versión 6 (IPv6). • IHL (4 bits). Longitud de la cabecera expresada en múltiplos de 32 bits. El valor mínimo es 5, correspondiente a 160 bits = 20 bytes. • Total length (16 bits). Indica la longitud total del datagrama expresada en bytes. Como el campo tiene 16 bits, la máxima longitud posible de un datagrama será de 65535 bytes. • Tipo de servicio (Type Of Service). Los 8 bits de este campo se dividen a su vez en: • Prioridad (3 bits). Un valor de 0 indica baja prioridad y un valor de 7, prioridad máxima. • Los siguientes tres bits indican cómo se prefiere que se transmita el mensaje, es decir, son sugerencias a los encaminadores que se encuentren a su paso los cuales pueden tenerlas en cuenta o no. • Bit D (Delay). Solicita retardos cortos (enviar rápido). • Bit T (Throughput). Solicita un alto rendimiento (enviar mucho en el menor tiempo posible). • Bit R (Reliability). Solicita que se minimice la probabilidad de que el datagrama se pierda o resulte dañado (enviar bien). • Los siguiente dos bits no tienen uso. • Identification (16 bits). Número de secuencia que junto a la dirección origen, dirección destino y el protocolo utilizado identifica de manera única un datagrama en toda la Red. Si el datagrama fuese fragmentado, todos los fragmentos llevarían el mismo identificador. • Banderas o indicadores (3 bits). Sólo 2 bits de los 3 bits disponibles están actualmente utilizados. El bit de Más fragmentos (MF) indica que no es el último fragmento. Y el bit de No fragmentar (DF) prohibe la fragmentación del datagrama. Si este bit está activado y en una determinada red se requiere fragmentar el datagrama, éste no se podrá transmitir y se descartará. • Fragment offset (13 bits). Indica el lugar en el cual se insertará el fragmento actual dentro del datagrama completo, medido en unidades de 64 bits. Por esta razón los campos de datos de todos los fragmentos menos el último tienen una longitud múltiplo de 64 bits. Si el paquete no está fragmentado, este campo tiene el valor cero. • Time to live o TTL (8 bits). Número máximo de saltos de encaminadores que puede atravesar el datagrama. En cada encaminador se resta 1 a este número. Cuando llegue a cero, el datagrama se descarta (tiempo de vida excedido). • Protocol (8 bits). Indica el protocolo utilizado en el campo de datos: 1 para ICMP, 2 para IGMP, 6 para TCP y 17 para UDP. • Header checksum (16 bits). Contiene la suma de comprobación de errores sólo para la cabecera del datagrama. La verificación de errores de los datos corresponde a las capas superiores. • Source address (32 bits). Contiene la dirección IP del origen.
• Destination address (32 bits). Contiene la dirección IP del destino. • Opcions IP. Este campo no es obligatorio y especifica las distintas opciones solicitadas por el usuario que envía los datos (generalmente para pruebas de red y depuración).
4.2.1 Fragmentación Se ha visto que las tramas físicas tienen un campo de datos y que es aquí donde se transportan los datagramas IP. Sin embargo, este campo de datos no puede tener una longitud indefinida debido a que está limitado por el diseño de la red. El MTU de una red es la mayor cantidad de datos que puede transportar su trama física. El MTU de las redes Ethernet es 1500 bytes y el de las redes Token-Ring, 8192 bytes. Esto significa que una red Ethernet nunca podrá transportar un datagrama de más de 1500 bytes sin fragmentarlo. Un encaminador (router) fragmenta un datagrama en varios si el siguiente tramo de la red por el que tiene que viajar el datagrama tiene un MTU inferior a la longitud del datagrama. Veamos con el siguiente ejemplo cómo se produce la fragmentación de un datagrama.
Queremos transmitir un datagrama IP desde el ordenador A que se encuentra en la Red 1 hasta el ordenador B de la Red 3 y que contiene 1400 bytes de datos (1420 bytes en total). El datagrama no tiene ningún problema en atravesar la Red 1 ya que 1420 < 1500. Sin embargo, no es capaz de atravesar la red 2 (1420 >= 620). El encaminador R1 fragmenta el datagrama en el menor número de fragmentos posibles que sean capaces de atravesar la Red 2. Cada uno de estos fragmentos es un nuevo datagrama con el mismo identificador pero distinta información en los campos de Desplazamiento de fragmentación y MF. Veamos el resultado. Todos los fragmentos tienen la misma cabecera, solamente cambian los campos MF y F.Offset.
• Fragmento 1: Long. total = 620 bytes; Desp = 0; MF=1 • Fragmento 2: Long. total = 620 bytes; Desp = 600; MF=1
• Fragmento 3: Long. total = 220 bytes; Desp = 1200; MF=0 ¿Qué hace el encaminador R2? No reensambla, encamina cada uno de los tres datagramas hasta la Red 3. Cuando el ordenador B reciba los fragmentos, recompondrá el datagrama original. Observemos que los encaminadores intermedios no reensamblan los fragmentos ya que esto supondría una carga de trabajo adicional, a parte de memorias temporales. Fijémonos también en que el ordenador destino puede recibir los fragmentos en distinto orden y que esto no supone ningún problema para el reensamblado del datagrama original. Si el datagrama del ejemplo tuviese a 1 su bit de DF (no fragmentar), no hubiera podido llegar a su destino debido a que la Red 2 no es capaz de atravesarla sin una fragmentación previa. El encaminador R1 descartaría el datagrama. Para saber si un datagrama está fragmentado o no: FRAGMENTADO
NO FRAGMENTADO MF = 0 Fragment Offset = 0
1º Fragmento Algún fragmento intermedio Último fragmento
MF = 1 F. Offset = 0 MF = 1 F. Offset <> 0 MF = 0 F. Offset <> 0
4.3 Direccionamiento IP Direcciones IP.- Cada Host y router de Internet tiene una dirección IP que codifica su número de red y su número de Host. Esta combinación es única y tiene un tamaño de 32 bits y se usan en los campos de dirección de origen y destino de los paquetes IP. El formato de estas direcciones es x . y . z . t, siendo x, y, z y t números comprendidos entre 0 y 255.
Tipos de Direcciones.- Existen cinco tipos de direcciones, numeradas de la A a la E. Los tres primeros tipos se emplean para equipos en red Existirán algunas direcciones reservadas, como por ejemplo la 0.0.0.0 (dirección de la red actual) o 255.255.255.255, que indica un Broadcast. Y luego están las direcciones del tipo E, que están reservadas para fines experimentales, tales como la prueba de nuevos protocolos, y las 127. x . y . z se reservan para pruebas de realimentación (bucle local). Todas las máquinas conectadas en un momento dado a Internet tienen una dirección IP asignada, la cual debe ser distinta a todas las demás direcciones que estén vigentes en ese momento en la Red. Una dirección IP identifica de manera unívoca a un ordenador en la Red.
FF
00
FF
00
255 . 0 . 255 . 0 Las tres direcciones siguientes representan a la misma máquina. (decimal) 128.10.2.30 (hexadecimal) 80.A.2.1E (binario) 10000000.00001010.00000010.00011110
Para que exista una flexibilidad en la asignación de direcciones, existen tres formatos básicos de representación de direcciones. La elección de uno de estos formatos dependerá del tamaño de la red. Además de los tres formatos básicos, existe uno para multicasting, usado para envío de mensajes a un grupo de hosts (clase D), y otro reservado para futuro uso (clase E) que son experimentales (se usan para probar protocolos nuevos).
Clase A : R.H.H.H 1
Identificador de red Identificador de host 7 bits
24 bits
Clase B : R.R.H.H 1
0
Identificador de red
Identificador de host
14 bits
16 bits
Clase C : R.R.R.H 1
1
0
Identificador de red
Identificador de host
21 bits
8 bits
Clase D 1
1
1
0
Dirección multicast 28 bits
Clase E 1
1
1
1
0
Espacio reservado para futuro uso 27 bits
Las direcciones de red tienen dos partes, una para identificar la red (R) y otra para identificar al equipo (H).
Tipo A El primer byte identifica la red y los otros 3 bytes identifican al host dentro de la red. En las siguientes tablas veremos el rango de direcciones válidas para equipos. Rango de direcciones de host en la
Rango de direcciondes de red
Primera R.
Ultima R.
red Primer H.
1.0.0.1
Ultimo H.
1.255.255.254
Primer H.
127.0.0.1
Ultimo H.
127.255.255.254
1.0.0.0
126.0.0.0
Tipo B El primero y segundo byte identifican a la red y los otros dos identifican al host. Rango de direcciones de host en la
Rango de direcciondes de red
Primera R.
red Primer H.
128.1.0.1
Ultimo H.
128.1.255.254
Primer H.
191.254.0.1
Ultimo H.
191.254.255.254
128.1.0.0
191.254.0.0
Ultima R.
Tipo C El 1º, 2º y tercer byte identifican la red y el 4º byte identifica al host. Rango de direcciones de host en la
Rango de direcciondes de red
Primera R.
Ultima R.
red Primer H.
192.0.1.1
Ultimo H.
192.0.1.254
192.0.1.0 Primer H. 223.255.254.1
223.255.254.0
Ultimo H. 223.255.254.254
Formato Clase
Numero (n=red,
de Número
de
host
redes (aprox.)
por red (aprox.)
Rango de direcciones de redes
h=host)
A
n.h.h.h
128
16 millones
0.0.0.0–127.0.0.0
B
n.n.h.h
16 mil
65 mil
128.0.0.0–191.255.0.0
C
n.n.n.h
2 millones
254
192.0.0.0– 223.255.255.0
4.3.1 Direcciones IP especiales No todas las direcciones comprendidas entre la 0.0.0.0 y la 255.255.255.255 son válidas para un host: algunas de ellas tienen significados especiales. Las principales direcciones especiales se resumen en la siguiente tabla: Net ID
Host ID Todos 0
Significado Esta red
Todos 0
host
Host en esta red
127
--
Este host (bucle)
net
Todos 0
Red indicada
Todos 1 net
Multidifusión a esta red Todos 1
Multidifusión a al red indicada
127
Cualquier valor
Loopback
Además de estas direcciones, existen otras reservadas para su uso en redes privadas (intranets):
Clase
Rangos de direciones reservadas de redes
A
10.0.0.0
B
172.16.0.0 – 172.31.0.0
C
192.168.0.0 – 192.168.255.0
Por ejemplo, si estamos construyendo una red privada con un número de ordenadores no superior a 254 podemos utilizar una red reservada de clase C. Al primer ordenador le podemos asignar la dirección 192.168.23.1, al segundo 192.168.23.2 y así sucesivamente hasta la 192.168.23.254. Como estamos utilizando direcciones reservadas, tenemos la garantía de que no habrá ninguna máquina conectada directamente a Internet con alguna de nuestras direcciones.
4.3.2 Subredes Todos los Host de una red deben tener el mismo número de red. Esta propiedad puede causar problemas a medida que crecen las redes. Para solucionar algunos de los problemas del redimensionamiento de las LAN de una empresa se puede dividir la red en varias partes para uso interno, pero manteniendo el aspecto de una sola red para el exterior. A estas partes internas se les llama subredes. En el direccionamiento IP a cada red física se le asigna una única dirección de red, los hosts de esa red llevan su dirección de red incluida en su dirección individual. Este esquema de direccionamiento tiene un fallo: el crecimiento exponencial de Internet. Cuando el protocolo IP fue diseñado, nadie imaginó que pudiera hacer cientos de miles de pequeñas redes de ordenadores personales. Al existir tantas redes, aparte del problema administrativo de asignar direcciones a todas ellas, existe el problema de que las tablas de encaminamiento de los routers son excesivamente largas, y la ocupación de ancho de banda de la red usada en transmitir esas tablas es alta. Para solucionar esto, se debe disminuir el número de direcciones de red asignadas sin alterar el esquema de direccionamiento original. Para conseguir esto, hay que hacer que un mismo prefijo de red IP pueda ser compartido por múltiples redes físicas. Para asignar una única dirección IP a varias redes físicas, se usa la máscara de subred, conceptualmente, el añadir subredes sólo varía la interpretación de las direcciones IP ligeramente. En lugar de dividir la dirección IP de 32 bits en un prefijo de red y un sufijo de host, lo que se hace es mantener el prefijo de red original, pero en lugar de una parte de host, lo que se tiene es una parte de subred y otra de host. La manera de identificar una subred es utilizando una mascara. Lo que se hace es emplear parte del rango de posiciones que se usa para identificar el host y emplearlo para identificar la subred. ❏ Una máscara de subred es aquella dirección que enmascarando nuestra dirección IP, nos indica si otra dirección IP pertenece a nuestra subred o no. Los unos indican los bits de la dirección correspondientes al identificador de red y los ceros, los correspondientes al identificador de host. Ejemplo: Tenemos una red de tipo A: 10.0.0.0 Empleamos la máscara: 255.255.255.0 Máscara en binario: 11111111.1111111.1111111.0000000
Red
Subred
Host
10.
0.0.
0
255.
255.255.
0
111111111.
11111111.1111111 1.
00000000
Red MĂĄscara
Como resultado tenemos: 2^16 = 65.536 subredes menos dos (primera y ultima). 2^8 = 256 hosts por subred menos dos (primero y ultimo).
Ejemplo: Tenemos una red de tipo B: 190.10.0.0 Empleamos la mascara: 255.255.255.0 Mascara en binario: 11111111.11111111.11111111.00000000
Red
Subred
Host
190.10.
0.
0
255.255.
255.
0
111111111.111111 11.
11111111.
00000000
Red Mascara
Como resultado tenemos: 2^8 = 256 â&#x20AC;&#x201C;2 subredes 2^8 = 256 â&#x20AC;&#x201C; 2 hosts por subred
1ÂŞ SubRed
Ă&#x161;ltima SubRed
190.10.1.0
190.10.254.0
Primer Host
190.10.1.1
Ă&#x161;ltimo Host
190.10.254
Primer Host
190.10.254.1
Ă&#x161;ltimo Host
190.10.254.254
Hay que decir, que los unos para la selecciĂłn de la subred no tienen por que estar todos seguidos sino que pueden estar salteados como: Ejemplo: Tenemos una red de tipo C: 193.146.32.0 Empleamos una mascara como: 255.255.255.85 En binario: 11111111.11111111.11111111.01010101
En la direcciĂłn 196.14.12.0 se quieren introducir 60 hosts. Cada uno de los miembros de la direcciĂłn IP tiene 256 variantes, numeradas de 0 a 255. CĂłmo sĂłlo quieren introducirse alrededor de 60 hosts, todo va a estar enmascarado por unos exceptuando el Ăşltimo miembro. 11111111 en decimal se expresa como 255. AsĂ: 196. 14. 12. 0
! " # %$ & ' )( 255. * $+ ,+- .255. / 0 1+ 255. 23 4 5192 -'6 7 38+* 9:6 ;/9 ; $< (/ =
11111111 11111111 11111111 11000000 255
255
255
192
Esos seis últimos ceros dejan libres 63 posiciones para identificar hosts. Básicamente, el número de ceros que se dejan sirven para calcular el número de hosts posibles en nuestra subred. Así, si se quisieran instalar setenta hosts, habría que eliminar el último uno de esta máscara, y entonces podrían instalarse hasta 127 hosts, aún cuando sólo se necesitaran 70 posiciones. Hay que recordar que serían siempre dos posiciones menos, es decir, que para la máscara del ejemplo, en realidad sólo estarían disponibles 61 posiciones posibles, puesto que 255.255.255.192 sería la dirección de red actual (como la de 0.0.0.0 la de host actual) y la 255.255.255.255 la de broadcast.
4.3.3 Subredes de Longitud Variable. Uno de los usos originales de las subredes fue dividir un identificador de red basado en clase en una serie de subredes del mismo tamaño. Por ejemplo, una subred de 4 bits de un identificador de red de clase B produce 16 subredes del mismo tamaño (usando las subredes de todo en ceros y todo en unos). Sin embargo, las subredes es un método general de utilizar los bits de servidor para expresar subredes y no requiere subredes del mismo tamaño. Pueden existir redes de diferente tamaño dentro de un identificador de red basado en clases. Esto es muy adecuado para los ambientes del mundo real, donde las redes de una organización contienen diferentes cantidades de servidores, y donde se requieren subredes de distinto tamaño para disminuir el desperdicio de direcciones IP. Las subredes de diversos tamaños de un identificador de red se conoce como subredes de longitud variable y utiliza máscaras de subred de longitud variable (variable length subnet masks, VLSM). La creación de subredes de longitud variable es una técnica de asignación de identificadores de subred que utiliza máscaras de subred de diferentes tamaños. Sin embargo, todos los identificadores de subred son únicos y pueden ser distinguidos unos de otros por su máscara de subred correspondiente. La mecánica de la creación de subredes de longitud variable es esencialmente la misma que para crear subredes en un identificador de subred. Cuando se crean subredes, los bits del identificador de red son fijos y una cierta cantidad de bits de servidor son elegidos para expresar las subredes. Con las subredes de longitud variable, el identificador de red, en donde se van a crear las subredes, ya contiene subredes. En conclusiones tenemos que para cada 1 de las subredes dentro de la red pueden tener máscaras diferentes. Ejemplo: Sea la red de tipo C (podemos seleccionar hasta 254 host): 195.17.32.0
1º Partición para 4 Hosts. Empleamos la mascara (en decimal): 255.255.255.252 (En binario): 11111111.11111111.11111111.11111111.11111100
195.17.32.5 Ejemplo subred: 195.17.32.4 195.17.32.6 2º Partición para 8 Hosts: Máscara en decimal: 255.255.255.248 Máscara en binario: 11111111.11111111.1111111.11111000
195.17.32.9 Ejemplo subred: 195.17.32.8
... 195.17.32.15
3º Partición de 16 Hosts: Máscara en decimal: 255.255.255.240
195.17.32.17 ... 195.17.32.30
Ejemplo subred: 195.17.32.16
195.17.32.33 Otro ejemplo: 195.17.32.32
... 195.17.32.46
De esta manera, después, voy a tener un montón de microredes y para saber donde está cada una necesito más información y más difícil es encontrar el camino a esa subred. Por lo que surgió un sistema de direccionamiento que ya no utiliza las clases de direcciones tipo A, B y C, es un esquema de direcciones no clasificadas, los equipos no suponen que la red sea del tipo A, B o C. Antes teniamos: RED
HOST
Y obteniamos: RED
SUBRE D
HOST
Ahora vamos a tener: RED
HOST
111111...1
00000...0
• La parte que identifica la red es contigua y está en la parte izquierda. • Para identificar a la red podemos emplear los bits que quiera pero siempre contiguos. • Para identificar a los host podemos utilizar los bits que quiera pero contiguos Ejemplo: La máscara identifica a la parte de red que va a la izquierda. Dirección de red no clasificada: 194.63.8/22 (tiene un máscara de 22 unos).
Red
Host
255.255.111111
00.00000000
1024 Hosts direccionables
255.255.000010
00.00000001
194.63.8.1
...
...
...
255.255.000010
11.11111110
194.63.11.25 4
Ejemplo: 194.63.8/24
Red
Host
254 Hosts direccionables
255.255.255.
00000000
direccionables
255.255.00001000.
00000001
194.63.8.1
...
...
...
255.255.00001000.
11111110
194.63.8.254
4.4 Protocolos auxiliares de nivel de red 4.4.1 Protocolo ARP Si un equipo desea conectarse con otro tendrá que saber su dirección IP y se comunicará a través de un medio físico, supongamos Ethernet. El problema es conocer la dirección física de otro equipo conociendo sólo el IP, para ello se utiliza un subconjunto del protocolo del nivel de red, que es ARP (Adress Resolution Protocol). A veces es necesario saber la dirección del equipo local. Por ejemplo. un equipo puede necesitar su propia dirección IP si no tiene disco duro local o si no guarda la configuración de la red. El ARP permite encontrar una dirección física a través de una dirección IP. Pero para resolver el problema de que a partir de una dirección física hallar su IP en el medio anterior tiene que haber un servidor R-ARP (Reverse ARP). Éste sabe las direcciones de los equipos de la red. El número que se envía en el campo tipo de protocolo de las tramas R-ARP es el 0x8035. Este servidor tiene tablas similares a los de los equipos.
ARP: (Protocolo de Resolución de Direcciones), cuando un nodo de la red desea enviar datos a otro nodo, debe averiguar su dirección física. El nodo origen conoce su propia dirección IP y la dirección física (es la de su interface de red), pero lo único que sabe de la computadora remota es su dirección IP. Para conocer la dirección física equivalente, se envía un mensaje ARP Broadcast. Este mensaje lo reciben todas las computadoras de la misma red física, pero sólo contesta la computadora solicitada. Se envía un paquete al medio físico con todos los bits de la dirección destino a uno. Los equipos conectados a la red detectan que es una trama ARP y lo que hace es, comprobar la información del datagrama, si detecta su IP, como el IP destino, entonces deposita su dirección física en el hueco.
6 bytes
6 bytes
2 bytes
1 byte
1 byte
3 byte
2 byte
D.Destino
D.Origen
Long
DSAP
SSAP
DUI
Tipo
4 bytes Datagama IP
CRC
Tipo = 0x8006 si es ARP y 0x8035 si es RARP IP origen Dir. física origen IP destino al que pregunta su dir. Hueco para dir. Fisica
Todos los equipos tienen un tabla de direcciones IP asociadas a direcciones físicas, cada vez que detecte un paquete ARP actualiza la IP origen (si no coincide) e inicializa un temporizador de forma que dichas direcciones sólo son vigentes temporalmente. Como las ARP son recibidas por todos los equipos, todos actualizan sus tablas. IP
ETH.
TIMEOUT
A
------
Tiempo max. 20 miniutos (ej.)
Tabla ARP
Cada ordenador almacena una tabla de direcciones IP y direcciones físicas. Cada vez que formula una pregunta ARP y le responden, inserta una nueva entrada a su tabla. Las tablas ARP reducen el tráfico de la red al evitar preguntas ARP innecesarias. Después de una pregunta ARP, el destino conoce las direcciones IP y física del origen. Por lo tanto, podría insertar la correspondiente entrada en su tabla. Pero no sólo eso, sino que todas las estaciones de la red escuchan la pregunta ARP: podrían insertar también las correspondientes entradas en sus tablas. Como es muy probable que otras máquinas se comuniquen en un futuro con la primera, habremos reducido así el tráfico de la red aumentando su rendimiento. Esto que se ha explicado es para comunicar dos máquinas conectadas a la misma red física. ¿Y si la otra máquina no estuviese conectada a nuestra red? Entonces tendríamos un encaminador que nos comunicase ambas redes. La máquina origen, si no la tiene en su tabla, preguntaría por ARP la dirección física del encaminador y le transferiría a éste el mensaje. Estos pasos se van repitiendo para cada red física hasta llegar a la máquina destino.
ARP es el encargado de traducir direcciones IP en direcciones físicas. Hay otro caso, que queremos conocer nuestra dirección física. Para esto, en la red física tiene que haber un servidor RARP (Reverse Address Resolution Protocol).
RARP: (Protocolo de Resolución de Direcciones Inversas), en algunas situaciones la computadora remota no conoce su dirección IP, esto es, en el caso de estaciones sin disco rígido, la única diferencia entre estas es la dirección física de su interfaz de red. Debido a que para comunicarse con otras necesita la dirección IP, envía un paquete RARP Broadcast. Este paquete es recibido por un servidor que contiene una tabla de traducción entre direcciones físicas y direcciones IP. Dicho servidor resuelve y envía la dirección IP que le corresponde.
4.4.2 Protocolo de control de mensajes (ICMP) Debido a que el protocolo IP no es fiable, los datagramas pueden perderse o llegar defectuosos a su destino. El protocolo ICMP (Internet Control Message Protocol, protocolo de mensajes de control y error) se puede utilizar para indicar al origen que su mensaje no ha llegado correctamente. Pero no sólo se encarga de notificar los errores, sino que también transporta distintos mensajes de control. Existen situaciones en que se descartan los datagramas de IP. Por ejemplo, si un encaminador no es capaz de soportar la velocidad que le impone el ordenador origen le enviará un mensaje de control pidiéndole que reduzca su velocidad, puede que no se llegue a un destino porque el enlace se ha caído. Puede que halla expirado el contador del tiempo de vida o que sea imposible que un encaminador envíe un datagrama muy grande porque no permite la fragmentación. Todas éstas representan posibles causas de error para el protocolo ICMP. El protocolo ICMP únicamente informa de distintas incidencias en la red pero no toma ninguna decisión. Esto será responsabilidad de las capas superiores. Los mensajes ICMP viajan en el campo de datos de un datagrama IP. Para realizar esta tarea, ICMP utiliza un estándar de mensajes de error conocidos como: A continuación se enumeran los distintos tipos de mensajes ICMP:
4.5 Protocolo IP versión 6 ( Ipv6 ) El protocolo IP en su versíon 6 (IPv6, a partir de ahora), surge como un sucesor de la versión 4, que pronto se quedará corta de espacio de direcciones de host, debido al crecimiento exponencial de Internet. Al ver en el horizonte estos problemas, el IETF comenzó a trabajar en 1990 en una versión nueva de IP, que sería más eficiente y con un rango de direcciones virtualemente inagotable, siendo además más flexible, eficiente y segura. En 1991 se convocó un concurso de ideas para tratar de encontrar ese algoritmo, y en diciembre de 1992 había varias propuestas serias. Al final se tomó en consideración una forma que proporciona un rango de direcciones de 16 bytes, una cabecera más simple, que mejora la eficiencia en su transmisión y verificaciones de autenticidad y confidencialidad. Además, se requiere una mayor atención al tipo de servicio, para poder atender adecuadamente al tráfico multimedia que se avecina. Los cambios de IPv6 respecto de IPv4 son, de forma resumida: • Expansión de las capacidades de direccionamiento. IPv6 incrementa el tamaño de las direcciones de 32 bits (IPv4) a 128 bits, para soportar más niveles en la jerarquía de direccionamiento, un número mayor de nodos direccionables, y un sistema de autoconfiguración de direcciones. • Simplificación de la cabecera. Algunos campos de la cabecera del IPv4 son eliminados o pasan a ser opcionales, tanto para reducir el coste de procesamiento como el tamaño de la cabecera. • Mayor flexibilidad para extensiones y nuevas opciones. En IPv6 no existe un campo opciones, como tal. La gestión de opciones se realiza por un campo siguiente cabecera (next header). Eliminando así las limitaciones de tamaño en la cabecera, e introduciendo una gran flexibilidad en el desarrollo de nuevas opciones. • Capacidades de control de flujo. Se añaden capacidades que permiten marcar los paquetes que pertenezcan a un determinado tipo de tráfico, para el cual el remitente demanda una calidad mayor a la especificada por defecto o servicios en tiempo real. • Capacidades de autenticación y privacidad de datos. IPv6 provee extensiones para soportar autenticación, e integridad y confidencialidad de datos.
4.5.1 Direcciones IPv6 Con un octeto se pueden representar los números de 0 a 255. Por tanto las direcciones IPv4 se componen de cuatro octetos, o 32 bits, lo cual genera los cuatro millones y pico de direcciones antes mencionadas. En IPv6 las direcciones se componen de 16 octetos, es decir 128 bits. Esto daría lugar a 2128 direcciones, más o menos 340 sextillones. No obstante, esta cifra no se alcanza, ya que parte de los dígitos identifican el tipo de dirección, con lo que se quedan en 3800 millones. En cualquier caso se garantiza que no se acabarán en un plazo razonable. Hay tres tipos de direcciones: unicast, anycast y multicast. Las direcciones unicast identifican un solo destino. Un paquete que se envía a una dirección unicast llega sólo al ordenador al que corresponda. En el
caso de las direcciones anycast se trata de un conjunto de ordenadores o dispositivos, que pueden pertenecer a nodos diferentes. Si se envía un paquete a una de estas direcciones lo recibirá el ordenador más cercano de entre las rutas posibles. Las direcciones multicast definen un conjunto de direcciones pertenecientes también a nodos diferentes, pero ahora los paquetes llegan a todas las máquinas identificadas por esa dirección. Ejemplo de conversión formato IPv4 – IPv6 Esta es una dirección de 32 bits: 192.9.32.12 Esta es una dirección de 128 bits: BAF7:7432:FFFF:FFFF:7433:73F9:FFAA Puede observarse que las direcciones IPv4 se forman con cuatro números decimales, que como ya se ha dicho van de 0 a 255. Para las direcciones IPv6 se usan números hexadecimales Para representar una dirección IPv4 con IPv6 se ponen a cero los cuartetos a partir del bit 33: 0000:0000:0000:0000:0000:C009:200C Esta notación puede ser simplificada como ::192.9.32.12 para equipos que no entienden IPv6 y como ::FFFF:192.9.32.12 para equipos que sí entienden IPv4. Para representar las direcciones IPv6 como cadenas de texto (en lugar de ceros y unos) hay diferentes reglas. La primera se denomina preferred form y consiste en listar la dirección completa como 8 números hexadecimales de cuatro cifras (8 paquetes de 16 bits):
>@?BABCED)F G H4CEI J K ABCED L M C F&>ON@ABCEK I CEP L G Q CEP ?BL D LSR@TOR&U V@W X@YZU R&U R U R&U [@R@R&U V@R@R@YZU T@W \
La otra posibilidad es la forma comprimida o compressed form, en la que las cadenas que sean cero se sustituyen por un par de dos puntos "::" que indican que hay un grupo de ceros. Por ejemplo:
FF08:0:0:0:0:0:209A:61 queda FF08::209A:61 0:0:0:0:0:0:0:1 queda ::1 Por último se pueden escribir en forma mixta, con las primeras cifras en hexadecimal y las últimas (las correspondientes a IPv4) en decimal:
R&U R&U R&U R U R&U R&U^]'XOT&_^]'TO`&_ V@TOX&_^]'`OT U^U^]+X@T&_^]+T@`&_ VOT@X&_^]+`@T
Para diferenciar si un equipo con dirección de IPv4 entiende el IPv6, lo que se hace es: En caso de que la dirección fuese: 192.9.32.12, se le añade un prefijo, que en caso de entender el Ipv6 sería de “::FFFF” y en caso de no entender sería “::”. • En caso de entender IPv6 quedaría:
::FFFF:192.9.32.12
• En caso de no entender IPv6 quedaría:
::192.9.32.12
4.6 IP sobre ATM (AAL5). Para analizar la operación de ATM como soporte de protocolos de red, se considera el caso del encaminamiento IP. Este modelo está descrito en la RFC 1577, en la que se propone una arquitectura en la que ATM sustituye a las redes que tradicionalmente conectan nodos IP. Define la operación de IP sobre ATM, la encapsulación de paquetes y la resolución de direcciones. Existen dos posibilidades de encapsular una N-PDU en una PDU de AAL5: • Encapsulación LLC/NSAP. Consiste en identificar la capa superior mediante una cabecera LLC. Esto puede hacerse mediante los campos DSAP y SSAP, es decir, SAP de Destino y SAP de Origen. Hay que recordar que la cabecera de la PDU de LLC consta de tres campos: DSAP, SSAP y Control. La PDU AAL deberá contener la información necesaria para que en el destino se puedan recibir los datagramas adecuadamente. Este procedimiento se define en la RFC 1483 (Multiprotocol Encapsulation over AAL 5) y permite la multiplexación de varios protocolos (como IP, Path Control de SNA, IPX, CLNP, etc) por el mismo canal virtual.
• Encapsulación por canal virtual. Con este método, sólo circula un protocolo por cada conexión ATM. Se especifica en la RFC 1577 (IP y ARP sobre ATM) para el caso de IP. En este caso, la PDU de AAL 5 no necesita contener ninguna información especial. Este último método es el más adecuado en entornos en los que se puedan establecer dinámicamente conexiones de canal virtual de forma eficiente y económica. La encapsulación LLC/NSAP será más conveniente cuando no sea práctico el establecimiento de gran número de Conexiones de Canal Virtual, por razones de tarifación, por ejemplo, o bien cuando no se soportan Canales Virtuales conmutados o para LANS virtuales (LANE). Se introduce el concepto de subred IP lógica (LIS, Logical IP Subnet). Una LIS consiste en un grupo de nodos IP que se conectan a una red ATM y pertenecen a una misma subred IP. Para obtener las direcciones de los nodos de una LIS, cada LIS tiene un servidor ATMARP y todos los nodos (clientes) de la LIS están configurados con una única dirección ATM, la del servidor ATMARP. Cuando un nodo se une a la LIS, se establece primeramente una conexión con el servidor ATMARP usando la dirección de configuración, y cuando el servidor detecta que hay un nuevo nodo en la LIS obtiene la dirección y la anota en su tabla. Cuando cualquier nodo de la LIS quiere obtener una dirección ATM de destino correspondiente a una dirección IP, debe enviar una petición ATMARP al servidor, que responderá con ella en caso de encontrarla. En caso de ausencia de esa dirección responderá con ATM-NAK. Lógicamente, las direcciones ATM, una vez obtenidas, pueden almacenarse en una tabla de resolución de direcciones, en una caché, al igual que se hace en las estaciones tradicionales con el procedimiento ARP. Una vez que el cliente LIS ha obtenido la dirección ATM que se corresponde con la dirección IP, ya puede establecer la conexión ATM. Así pues, las fases del procedimiento de resolución de direcciones son: • Dada una dirección IP de destino, en la tabla de encaminamiento se obtiene la dirección del próximo destino. • En la tabla de resolución de direcciones o a través del servidor ARP se transforma la dirección IP del próximo destino en dirección ATM. • Por procedimientos de señalización del plano de control se crea una conexión virtual ATM entre los encaminadores. • Se envía el datagrama a través de la conexión virtual. La SAR y la CPCS de la AAL tipo 5 se especifican en la recomendación I.363.5. Como se ha indicado, si bien su aplicación original ha sido para servicios de datos sensibles a pérdidas o errores, pero no muy sensibles al retardo y variación de retardo, también se utiliza para servicios CBR cuando los requisitos de relación temporal no son muy estrictos. Se definen dos modalidades de servicio: • modo mensaje: la SDU se pasa a través de la interfaz con la capa AAL a través de una sóla IDU, Interface Data Unit. • modo flujo (streaming): La SDU se pasa a través de la interfaz en una o más IDU. Ambas modalidades de servicio pueden proporcionar los siguientes procedimientos: • operaciones fiables (assured): Cada AAL-SDU se entrega con el mismo contenido enviado por la entidad emisora. Para ello se realizan retransmisiones de las PDU de la subcapa SSCS erróneas o perdidas. • operaciones no fiables (non-assured): Las AAL-DSU pueden perderse o llegar erroneas sin que se realicen retransmisiones en la capa AAL. El protocolo de las subcapas SAR y CS de la AAL tipo 5 debe tener las siguientes características: • utilización de indicación de usuario ATM-usuario (UU) para el soporte de la función de segmentación y reensamblado. • indicación, en la información usuario-usuario (UU) de la CPCS-PDU, de cuándo se llega al final de la SDU. • detección de células perdidas, mal insertadas o información erronea de usuario mediante CRC en la cola de la CPCS-PDU. La subcapa SAR acepta SAR-SDU múltiplos de 48 octetos de la CPCS y genera SAR-PDU que contienen 48 octetos de datos SAR. Esta eficiencia se debe a que la delimitación de la SAR-SDU se realiza mediante una indicación de fin de la SAR-PDU, que está en un parámetro, AUU, ATM- layer-user to ATM-
layer-user, de las primitivas de la capa ATM. El valor "1" para el parámetro AUU indica el fin de la SARPDU, y el valor "0" una PDU inicial o intermedia. Esta información se codifica en el campo PTI, Payload Type de la cabecera de la célula ATM.
4.7 Encaminamiento Hay dos formas de elegir un encaminamiento eficiente: una es elegir el camino más corto (la distancia entre la estación emisora y la receptora es la mínima) y otra es elegir el menor número de saltos (entre la estación emisora y la receptora hay el menor número de nodos). En aplicaciones reales se suele elegir la del camino más corto. El instante en que se decide hacia dónde se enviará un paquete en un nodo es muy importante. En datagramas, esto se produce una vez por paquete. En circuitos virtuales se produce una vez por petición de llamada. Hay dos lugares donde se puede decidir hacia dónde debe enviarse un paquete desde un nodo: una es en el propio nodo (encaminamiento distribuido) y otra en un nodo señalado para esta tarea (encaminamiento centralizado). Esta última forma tiene el inconveniente de que si este nodo se estropea, el encaminamiento de todos los nodos que dependen de este nodo de encaminamiento es imposible, y todos los nodos serán inservibles. Hay otra forma de controlar el encaminamiento, y es en la propia estación de origen. La función principal del Nivel de Red es el diseño de algoritmos para seleccionar rutas junto con sus estructuras de datos. Un algoritmo de encaminamiento es aquel componente software del Nivel de Red responsable de decidir sobre qué línea de salida se deberá transmitir un paquete que llega. Se pueden hacer multitud de clasificaciones de las soluciones: En cuanto a la hora de decidir el camino a seguir, en el caso de los datagramas la decisión se toma en cada paquete, y en los circuitos virtuales únicamente se toma la decisión al establecerlo. En cuanto a la quien toma la decisión sobre el camino, estas pueden ser tomadas por un equipo único, de forma centralizada o puede ser distribuida, tomando todos los equipos parte en la decisión. En cuanto a la técnica de encaminamiento, esta puede ser estática, tomándose la decisión sobre el camino de antemano, siendo necesario descargarla en los routers al arrancar; dinámica, pudiendo adaptarse a los cambios (tráfico, topología...) que se producen en la red, pero produciendo una mayor sobrecarga; o por inundación, enviando la información a todos los equipos de la red. Encaminamiento estático. Cada nodo encaminará sus datos a otro nodo adyacente y no cambiará dicho encaminamiento nunca (mientras dure la topología de la red). Existe un nodo de control que mantiene la información centralizada. Como cada nodo encaminará sus datos sólo a un nodo adyacente para cada nodo destino posible, sólo es necesario almacenar estos contactos entre nodos adyacentes y no todos los caminos entre todos los nodos de la red. En el nodo central se almacenan todas las tablas de encaminamientos, pero en cada nodo sólo hay que almacenar las filas que conectan ese nodo con el siguiente para conseguir el encaminamiento a cada nodo posible destino de la red. Este sistema es muy eficiente y sencillo pero poco tolerante a fallos en nodos adyacentes, ya que sólo puede encaminar a uno.
Inundaciones. Consiste en que cada nodo envía una copia del paquete a todos sus vecinos y éstos lo reenvía a todos sus vecinos excepto al nodo del cuál lo habían recibido. De esta forma se asegura que el paquete llegará a su destino en el mínimo tiempo posible. Para evitar que a un nodo llegue un paquete repetido, el nodo debe guardar una información que le haga descartar un paquete ya recibido. Esta técnica, al ser muy robusta y de coste mínimo, se puede usar para mensajes de alta prioridad o muy importante. El problema es la gran cantidad de tráfico que se genera en la red. Esta técnica libera de los grandes cálculos para seleccionar un encaminamiento. Encaminamiento aleatorio. Consiste en que en cada nodo, se elegirá aleatoriamente el nodo al cuál se va a reenviar el paquete. De esta forma, se puede asegurar que el paquete llegará al destino pero en un mayor tiempo que en el de inundaciones. Pero el tránsito en la red es mucho menor. Esta técnica también libera de cálculos para seleccionar el encaminamiento. Encaminamiento adaptable. Consiste en que la red va cambiando su sistema de encaminamiento conforme se cambian las condiciones de tráfico de la red. Para conseguir esto, los nodos deben de intercambiar información sobre congestión de tráfico y otros datos. En estas técnicas de intercambio de información entre nodos, pueden hacerse intercambios entre nodos adyacentes, todos los nodos, o incluso que haya un nodo central que coordine todas las informaciones. Los inconvenientes principales son : • El costo de procesamiento en cada nodo aumenta. • Al intercambiar información de nodo en nodo, aumenta el tráfico. • Es una técnica muy inestable. Las ventajas: • El usuario cree que aumentan las prestaciones. • Se puede ayudar en el control de la congestión. Interesa saber cual es el mejor camino entre emisor y receptor. Para decidir cuál es se utilizan técnicas basadas en grafos. • Vector de distancia.- Un equipo sólo tiene en cuenta la información que le pasan los equipos vecinos, que le dicen a qué distancia está el destino. No tiene en cuenta la topología. • Jerárquico (estado del enlace).- Construye una topología y envía el paquete por inundación. Consiste en los siguientes pasos: • Descubrir a sus vecinos y aprender sus direcciones de red. • Medir el retardo o coste a cada vecino. • Construir paquetes para comunicar a todos lo que ha aprendido. • Distribuir los paquetes a otros routers. • Calcular el camino más corto a los demás routers. Utilizando algoritmos de encaminamiento los encaminadores intercambian mensajes de control, a partir de los cuales cada encaminador puede generar la tabla de encaminamiento. Después, cuando llegue un paquete a encaminar, cada encaminador toma decisiones locales mirando en su tabla, pero que dependen de la topología global. Objetivos de un algoritmo de encaminamiento: • Minimizar el espacio de la tabla de encaminamiento para poder buscar rápidamente y para tener menos información a intercambiar con otros encaminadores. • Minimizar el número y frecuencia de mensajes de control. • Robustez: evitar agujeros negros, evitar bucles, evitar oscilaciones en las rutas • Generar caminos óptimos: • menor retardo de tránsito. • camino más corto (en función de una cierta métrica en función de retardo, coste de los enlaces, ...). • máxima utilización de la capacidad de la red . Clasificación de los algoritmos de encaminamiento
• Estáticos: Las tablas de encaminamiento no varían con el tiempo. Para redes en las que el tráfico y la topología no varía. Para implementar las rutas estáticas se crea una matriz de encaminamiento central, almacenada, por ejemplo, en un centro de control de red. Esta matriz especifica, para cada par de nodos origen-destino, la identidad del siguiente nodo en la ruta. Las tablas de encaminamiento se establecen y almacenan en cada nodo, almacenando cada uno de ellos solamente una columna del directorio de encaminamiento. El directorio de cada nodo especifica el siguiente nodo para cada destino. Con el encaminamiento estático no existen diferencias entre el encaminamiento de datagramas y de circuitos virtuales. Existen dos tipos: • Centralizados: Las tablas se calculan en un sólo nodo de la red. • Distribuidos: Las tablas se calculan por cooperación entre todos lo nodos. La ventaja del encaminamiento estático es su sencillez, además de su buen funcionamiento en una red de carga estacionaria. La desventaja radica en la falta de flexibilidad, ya que no reacciona ante fallos ni congestión en la red. • Dinámicos o Adaptativos: Las tablas de encaminamiento se ajustan a cambios en las condiciones de la red (tráfico o topología). Para que el encaminamiento dinámico sea posible es necesario que los nodos intercambien información acerca de estado de la red. Cuanta más información se intercambie y mayor sea la frecuencia del intercambio, mejor será la decisión de encaminamiento que cada nodo realiza. Esta información supone una carga adicional en la red, provocando una degradación en la prestaciones. Tipos de algoritmos dinámicos: • Aislados: Cada nodo toma decisiones independientemente del resto. • Centralizados: Un nodo acumula toda la información de la red. • Distribuidos: Los nodos cooperan para adaptarse a las condiciones de la red. • Mixtos: Un nodo central mantiene información del estado de la red, y aconseja a los otros nodos, que pueden tomar decisiones por su cuenta. Existen inconvenientes: • Decisión de encaminamiento más compleja, por lo que el coste de procesamiento en los nodos aumenta. • En la mayor parte de los casos, las estrategias dinámicas dependen de la información de estado obtenida en una parte de la red. • Una estrategia adaptable puede reaccionar muy rápidamente, produciendo oscilaciones y causando congestión, o muy lentamente, en cuyo caso no es válida. Las principales ventajas son: • El usuario de la red percibe que las prestaciones aumentan con el uso de estas técnicas. • Puede ayudar en el control de congestión.
4.8 Algoritmos de construcción de tablas de rutas Es independiente de cada paquete, distribuido y adaptable (en lo que se refiere a tráfico y topología. En las redes IP van a existir routers, hosts e interfaces. Los hosts y routers van a tener tablas de rutas, que van a indicar las rutas más cortas a los otros equipos de la red, y se establecerá para cada equipo una ruta por defecto, que no será necesariamente una ruta óptima. Algoritmo de encaminamiento IP: Si paquete pertenece RedFísica { Si Existe TablaARP (DirFísicaEquipDestino) Entonces nivel 2 Si No ARP(anterior) //buscaría ARP anterior } Si No { Si Existe DirRed (TablaRutas) Entonces MandarPaquete(SigSalto)
Si No MandarPaquete (RutaDefecto) }
4.8.1 Algoritmo de Dijkstra Es un algoritmo estático distribuido que encuentra caminos de distancia mínima de un nodo al resto. • Se trabaja con dos conjuntos: nodos ya encaminados (permanentes); y nodos aún no resueltos (tentativos) • En cada paso se conocen las distancias de la subred a cada nodo. Se parte de A. • Inicialmente sólo contiene el nodo inicial y las distancias son las directas de ese nodo al resto. • En cada paso, el nodo de más cercano se pasa a conectado por la ruta óptima, y se recalculan las distancias a los nodos, tomando la menor de entre la antigua y la posible a través del nuevo nodo en A. • Se termina cuando todos los nodos están en D, habiéndose obtenido tanto las distancias mínimas como el árbol de encaminamiento.
4.8.1.1 Vector de distancia
Es un algoritmo distribuido. Utilizado en Internet (RIP). Cada nodo mantiene una tabla de encaminamiento con pares (Destino, Nodo vecino por el que encamino), para cada destino de la red. • Cada nodo estima el retardo de sus paquetes a los destinos por el mejor camino (enviando periódicamente paquetes de petición de eco). Para conocer a los vecinos: paquetes HELLO para que se identifiquen. • Cada nodo envía (Destino, retardo estimado).
periódicamente
a
sus
vecinos
todos
sus
pares
• Cada nodo estudia esta información de los vecinos para ver si puede conseguir una ruta de menor retardo enviando a través de otro de sus vecinos, y actualiza sus tablas de encaminamiento consecuentemente. Problema: contador infinito. La información acerca de mejores rutas se propaga poco a poco, consiguiéndose al cabo de un rato que todos los encaminadores tengan tablas óptimas. Pero las malas noticias (se cae un enlace o un encaminador) tardan en llegar.
Solución: Split Horizon No le decimos al vecino cuál es nuestro coste hasta X si el vecino es para nosotros el próximo salto hacia X. Alternativa (RIP): le decimos que el coste es infinito. Pero no es una solución óptima. Hay casos en los que seguimos teniendo que contar hasta infinito:
4.8.1.2 Estado de enlace (Link State)
Es un algoritmo distribuido, utilizado en Internet (OSPF).También presupone que el encaminador conoce la dirección de sus vecinos y el coste de alcanzarles. Cada encaminador conoce toda la topología de la red gracias a los mensajes de control que ha recibido de todos los encaminadores. Cada encaminador: • Descubre quiénes son sus vecinos y aprende sus direcciones de red (paquetes HELLO) • Mide su distancia con cada uno de sus vecinos. Envío paquete sonda (HELLO me vale) y mido RTT/2. Construye un paquete de estado de enlaces con esta información. Periódicamente o cuando haya cambios (caídas de líneas y/o encaminadores). Envía el paquete de estado de enlaces a todos los encaminadores de la red • Se utiliza inundación controlada: número de secuencia. • Hasta que todos no hayan recibido todos los paquetes puede haber problemas de inconsistencia: bucles, máquinas no alcanzables... Calcula el mejor camino (Dijkstra) a cada encaminador.
Problemas:
• Número de secuencia da la vuelta. Contador grandote: 32 bits. • Encaminador rearranca: número de secuencia se inicializa, por lo que todos rechazarán sus paquetes de estado de enlaces. • Se altera un bit, pasando de 4 a 65540: del 5 al 65540 se rechazarán. • Solución: los paquetes de estado de enlaces caducan (periódicamente se decrementa el campo de edad del paquete de estado de enlaces en cada encaminador que lo almacena). • Cuando un encaminador rearranca espera un poco a que caduquen sus anteriores paquetes de estado de enlaces en el resto de encaminadores. 4.8.1.3 Encaminamiento jerárquico Las redes grandes provocan que las tablas de encaminamiento sean muy grandes: • Se tarda más en computar los caminos mínimos. • Se gasta más ancho de banda en intercambiar mensajes de control. Solución: encaminamiento jerárquico: • Dividimos la red en dominios. • Los dominios están interconectados mediante gateways. • Las máquinas dentro de un dominio no conocen a las de otro. • Los gateways sólo conocen a otros gateways.
4.9 Protocolos de encaminamiento en redes IP La idea en que se basa IP para construir tablas de rutas es que hay dos casos en que interesa construirlas, que es cuando hay rutas internas, dentro de un AS (Autonomous System), sistemas autónomos, o rutas externas, entre AS. Van a existir los IRP (Internal Routing Protocols) para las redes internas y los ERP (External Routing Protocols) para las externas. Los IRP construyen tablas de rutas dentro de redes con una sola administración, mientras que los ERP las construirán entre diferentes AS.
4.9.1 OSPF (Estado del enlace) En 1988, el grupo: Fuerza de Trabajo de Ingenieros de Internet (IETF) empezó a desarrollar un nuevo protocolo de encaminamiento que reemplazaría al protocolo RIP. Se desarrollo entonces el protocolo de pasarela interior Primero el camino abierto más corto (OSPF - Open Shortest Path Firsht). OSPF es un protocolo de encaminamiento para redes IP que se basa en las especificaciones de RFC descritas al final del documento. En la década de los 90 OSPF fue recomendado como un protocolo de encaminamiento estándar. El protocolo OSPF propone el uso de rutas más cortas y accesibles mediante la construcción de un mapa de la red y mantenimiento de bases de datos con información sobre sistemas locales y vecinos, de esta manera es capaz de calcular la métrica para cada ruta, entonces se eligen las rutas de encaminamiento más cortas. En este proceso se calculan tanto las métricas de estado del enlace como de distancia, en el caso de RIP se calcula sólo la distancia y no el trafico del enlace, por esta causa OSPF es un protocolo de encaminamiento diseñado para redes con crecimiento constante y capaz de manejar una tabla de encaminamiento distribuida y de rápida propagación, entre las características más resaltantes de OSPF están: •
acbcd@e f@g
detección de cambios en la topología y restablecimiento muy rápido de rutas sin bucles
• Poca sobrecarga, usa actualizaciones que informan de los cambios de rutas. • División de tráfico por varias rutas equivalentes • Encaminamiento según el tipo de servicio • Uso de multienvío en las redes de área local. • Mascaras de subred y superred. • Autentificación h En abril de 1990, la NASA cambió al protocolo OSPF y el tráfico de enrutamiento se redujo drásticamente. Tras un cambio e interrupción de la red, las informaciones de encaminamiento global se restablecían rápidamente (a los pocos segundos comparados con los minutos de otros protocolos mas antiguos).La versión " de OSPF se publicó a mediados de 1991 y en marzo de 1994 apareció una versión " revisada. 4.9.1.1 Sistemas autónomos de área En el ámbito de OSPF, el término red significa una red IP, una subred o una superred CIDR (encaminamiento de dominio de dominio Internet sin clase). De la misma forma, una Máscara de red identifica una red, una subred o una superred CIDR. Un área es un conjunto de redes y host contiguos, junto con cualesquiera encaminadores con interfaces a estas redes. Un sistema autónomo que use OSPF está construido por una o más áreas. Cada área tiene asignado un número. El área 0 está conectada al Backbone que enlaza con el resto de áreas y agrupa al resto de sistemas autónomos.
4.9.1.2 Encaminamiento de área en OSPF El encaminamiento dentro de un área se basa en un mapa completo de estado de enlace del área. OSPF se
diseñó para que admitiera el crecimiento de la red porque un encaminador necesita conocer la topología detallada e información de métricas sólo de un área a la que pertenece. Todos los encaminadores con OSPF implementado, en un área mantienen una base de datos de encaminamiento idéntica que describe la topología y estado de todos los nodos de esa área. La base de datos se usa para construir el mapa de esa área. Esta base de datos incluye el estado de todos los encaminadores, interfaces útiles de los encaminadores, las redes conectadas y sus encaminadores adyacentes. Siempre que ocurre un cambio, la información se propaga por toda el área. De esta forma siempre los encaminadores estarán en un estado óptimo para cualquier petición. De esta manera si tenemos un área bastante densa y se cae un enlace con un encaminador, en ese momento el encaminador vecino de ese enlace perdido informará a todos los demás que esa ruta será inaccesible, en cuanto se recupere el enlace informará de nuevo que se recuperó la comunicación con ese encaminador. Un encaminador que esté arrancando obtendrá una copia de la base de datos actual de encaminamiento de su vecino más cercano (vecino se denomina a cualquier encaminador que esté en su área), tras esto, solo se comunicaran los cambios (esto hace más óptimo a OSPF, ya que no replica toda la base de datos de nuevo). Los cambios se difunden rápidamente, ya que OSPF utiliza un algoritmo de distribución eficiente para extender la información de actualización por un área. Un encaminador usa su base de datos para construir un árbol de caminos más cortos poniéndose a sí mismo en la raíz. Este árbol se usa para construir la tabla de encaminamiento. Si se dispone de encaminamiento por tipo de servicio en el área, se construye un árbol separado y un conjunto de rutas para cada tipo de servicio. La red agrupa las áreas. El backbone contiene todos los encaminadores que pertenecen a múltiples áreas, así como las redes y encaminadores no asignados a ninguna área. Recuerda que las áreas están numeradas y que el backbone es el área 0. El encaminador frontera pertenece a una o más áreas y al backbone. Si el sistema autónomo está conectado el mundo exterior, los encaminadores límite pueden aprender rutas a redes que son externas al sistema autónomo.
En el dibujo, el backbone, área 0, incluye los encaminadores A, B, C, F y G. El área 1 incluye B y D. El área 2 incluye C, E y F. Los encaminadores B, C y F son encaminadores frontera, puesto que están a la misma vez en dos áreas. El encaminador G es un encaminador límite (conecta con otros sistemas autónomos o con Internet). El encaminador B conoce la topología completa del área 1 y del Backbone. De forma similar los encaminadores C y F conocen la topología completa del área 2 y del backbone. El backbone debe ser contiguo, ¿qué pasará si una modificación en la red o un fallo en un dispositivo hace que el backbone se corte?. Se pueden definir enlaces virtuales para volver a unir los segmentos del backbone. Se puede añadir un enlace virtual entre dos encaminadores del backbone con interfaz a la misma área. Este enlace virtual es el coste de una ruta completa entre dos encaminadores. Refiriéndonos al dibujo, si el enlace de A hacia F se corta, el encaminador F no se podrá volver a conectarse al resto de encaminadores del backbone. Se podría usar el enlace virtual F-E-C para conectarse de nuevo al backbone. El encaminador de frontera conoce la topología completa de las áreas a las que esta conectado. Recuerda que todos los encaminadores frontera pertenecen al backbone, por lo que también conocen la topología del backbone.
Los encaminadores frontera resumen la informaciĂłn de ĂĄrea e indican a otros encaminadores del backbone lo lejos que estĂĄn de las redes dentro de su propia ĂĄrea. De esta forma todos los encaminadores frontera pueden calcular las distancias a destinos fuera de sus propias ĂĄreas y transmitir esta informaciĂłn dentro de sus propias ĂĄreas. Los resĂşmenes incluyen un identificador de red, subred o superred, una mĂĄscara de red y la distancia desde el encaminador a la red externa.
Por ejemplo, suponga que el encaminador E quiere elegir un camino a la Red M. El encaminador E usa su base de datos de ĂĄrea para descubrir las distancias del encaminador D al F, y del D al C (pregunta a sus fronteras cuĂĄl tiene la ruta mĂĄs corta), cada uno de ellos a informado de sus distancias, las compara y elige la mĂĄs rĂĄpida (que no quiere decir la que menos saltos tenga, si no en la que la informaciĂłn llegue lo mas rĂĄpido posible). Se debe tener en cuenta que el encaminador B no deberĂa preocuparse de enviar informaciĂłn de resĂşmenes del ĂĄrea 1, ya que al solo existir un Ăşnico camino posible hacia el backbone. Muchos sistemas autĂłnomos estĂĄn conectados a Internet, o a otros sistemas autĂłnomos. Los encaminadores lĂmite de OSPF ofrecen informaciĂłn sobre distancias a las redes externas al sistema autĂłnomo. Existen dos tipos de mĂŠtricas de distancia externa de OSPF. La de tipo 1 es equivalente a la mĂŠtrica local de estado del enlace. Las mĂŠtricas de tipo 2 de larga distancia, se miden con un mayor orden de magnitud. Puede tener una similitud a las distancian recorridas en coche, puede pensar en las de tipo 2 como sacadas de un mapa de carreteras nacional que se mide en cientos kilĂłmetros, mientras que las de tipo 1 usan distancias locales en kilĂłmetros (con esto me refiero a que se puede utilizar la mĂŠtrica 1 para que la gestiĂłn la haga dependiendo de la distancia dentro de su ĂĄrea, o mĂŠtrica 2 gestionando la distancia fuera de la zona.
En el dibujo vemos que existen dos rutas, hemos elegido la mĂŠtrica de tipo 2, para llegar a la red externa vemos que eligiendo la de tipo 2 la mas corta es la de valor 2. Otra caracterĂstica de OSPF conveniente para los Proveedores de Servicios Internet es que un encaminador lĂmite de un sistema autĂłnomo puede comportarse como un servidor de encaminamiento y puede informar de las entradas que identifican las rutas a otros encaminadores lĂmite, esta informaciĂłn incluirĂa:
ikj+l monEp@q+r sut@mov n^w x r yzpzw3x {|nEp@x }@q@vk~E E{|n^moj|x Â&#x20AC; l4x vÂ&#x192;Â&#x201A;
Todos los encaminadores de OSPF tiene una base de datos detallada con la información necesaria para construir un árbol de encaminamiento del área, con la descripción de: • Todas las interfaces, conexiones y métricas de los encaminadores. • Todas las redes de multiacceso y una lista de todos los encaminadores de la red. ¿Cómo consigue un encaminador esta información?. Pues empieza descubriendo quienes son sus vecinos mediante un mensaje de saludo (Hello). Todos los encaminadores están configurados con un identificador único que se usa en los mensajes. Habitualmente, la parte menor de la dirección de IP de encaminador se usa como identificador único. Los encaminadores multienvían periódicamente mensajes de saludo (Hello) en una red multienvio, como puede ser EtherNet, Token Ring, o interfaz de datos distribuidos por fibra ( FDDI ), para que el resto de los encaminadores sepan que siguen activos. También envían mensajes de saludo al otro extremo de un enlace punto a punto o un circuito virtual para que estos vecinos sepan que siguen atentos. Una de las rezones por la que funcionan los mensajes de saludo es que un mensaje contiene la lista de todos los identificadores de los saludos cuyos vecinos escucharan el emisor, así los encaminadores conocen si se les está escuchando en la red. En una red multiacceso, los mensajes de saludo también se usan para identificar a un Encaminador designado. El encaminador designado cumple dos funciones: • Es responsable de la actualización fiable de sus vecinos adyacentes con la información más reciente de la topología de la red. • Crea avisos de enlaces de red con la lista de todos los encaminadores conectados a la red multiacceso.
El encaminador designado A intercambia información con los encaminadores B, C y D de su LAN, así con el encaminador E conectado con su enlace punto a punto. El encaminador designado A actúa como experto local y mantiene actualizada la topología local completa. Después comunica a los encaminadores adyacentes la información. B, C y D mantienen sus propias bases de datos sincronizadas hablando con A. No tienen que hablar con los otros, así se reduce drásticamente el tráfico de información. Dos encaminadores que sincronizan sus bases de datos uno con otro se llaman adyacentes. B y C son vecinos, pero no son adyacentes el uno del otro debido a que consultan con A. Claramente es un método eficiente de mantener sincronizadas las bases de datos de los encaminadores de la LAN. También se puede usar en redes de transmisión de tramas o con X25. Los encaminadores pueden intercambiar mensajes de saludo por circuitos virtuales, elegir un encaminador designado y sincronizan sus bases de datos con el encaminador designado. De esta forma se acelera la sincronización y se reduce el tráfico de la red. La perdida de un encaminador designado podría ser muy perjudicial. Por eso, siempre se elige un encaminador designado de respaldo y siempre está listo para reemplazarle inmediatamente. Suponga que el encaminador B acaba de arrancar tras un período de mantenimiento. En primer lugar B escucha los mensajes de saludo, descubre quienes son sus vecinos y descubre que el encaminador A es el encaminador designado. A continuación, B se pone al dialogar con A.
Más concretamente, A y B intercambian mensajes de descripción de bases de datos. Estos mensajes contienen una lista de lo que tiene cada uno en su base de datos. Cada elemento tiene un número de secuencia que se usa para establecer qué encaminador tiene la información más reciente sobre dicho elemento. El número de secuencia de una entrada de encaminamiento se incrementa siempre que se actualiza. Tras terminar esta intercambio de información , ambos conocen: • Qué elementos no están todavía en su base de datos local. • Qué elementos si están presentes pero obsoletos. Se usan mensajes de petición de estado del enlace (Link State Request) para solicitar todas las entradas que necesiten una actualización. Los mensajes de actualización del estado del enlace (Links State Update) son las respuestas a las peticiones. Tras un intercambio de información, con confirmaciones del estado del enlace, también ase usan para informar de los cambios en la topología del área. La actualización de la topología se expande por el área de manera que todas las bases de datos se mantengan sincronizadas. 4.9.1.3 Tipos de mensajes OSPF Los cinco tipos de mensajes del protocolo OSPF que se han descrito son: • Saludo Se usa para identificar a los vecinos, es decir, encaminadores adyacentes en un área para elegir un encaminador designado para una red multienvio, para encontrar un encaminador designado existente y para enviar señales de "Estoy aquí". • Descripción de la base de datos Durante la inicialización, se usa para intercambiar información de manera que un encaminador puede descubrir los datos que le faltan en la base de datos. • Petición del estado del enlace Se usa para pedir datos que un encaminador se ha dado cuenta que le faltan en su base de datos o que están obsoletos. • Actualización del estado del enlace Se usa como respuesta a los mensajes de Petición del estado del enlace y también para informar dinámicamente de los cambios en la topología de la red. • ACK de estado del enlace Se usa para confirmar la recepción de una Actualización del estado del enlace. El emisor retransmitirá hasta que se confirme.
4.9.2 BGP (Vector de distancias) El protocolo de pasarela frontera (BGP, ”border gateway protocol”) se desarrolló para su uso en conjunción con conjuntos de redes que emplean la arquitectura de protocolos TCP/IP, aunque los conceptos son aplicables a cualquier conjundo de redes. BGP se ha convertido en el protocolo de dispositivo de encaminamiento exterior estándar en Internet. BGP se diseñó para permitir la cooperación en el intercambio de información de encaminamiento entre dispositivos de encaminamiento, llamados pasarela en el estándar, en sistemas autónomos diferentes. El protocolo opera en términos de mensajes, que se envían utilizando conexiones TCP. En la siguiente tabla se resume el repertorio de mensajes. • Open Utilizado para establecer una relación de vecindad con otro dispositivo de encaminamiento. • Update Utilizado para transmitir información sobre una única ruta y/o enumerar rutas múltiples que se van a eliminar. • Kkeepalive Utilizado para confirmar un mensaje Open y confirmar periódicamente la relación de vecindad. • Notificacion Enviado cuando se detecta una condición de error. BGP involucra tres procedimientos funcionales, que son: • Adquisición de vecino • Detección de vecino alcanzable • Detección de red alcanzable Dos dispositivos de encaminamiento se considera que son vecinos si están conectados a la misma subred. Si los dos dispositivos de encaminamiento están en sistemas autónomos diferentes, podrían desear intercambiar información de encaminamiento. Para ello, hay que realizar la operación de adquisición de vecino. La adquisición de vecino ocurre cuando dos dispositivos de encaminamiento vecinos en diferentes sistemas autónomos se ponen de acuerdo en intercambiar regularmente información de encaminamiento. Se requiere un procedimiento formal de
adquisición porque uno de los dispositivos de encaminamiento puede no querer participar. El proceso de adquisición de vecino consiste en que un dispositivo de encaminamiento envía un mensaje de petición al otro, el cual puede aceptar o rechazar el ofrecimiento. El protocolo no indica la cuestión de cómo puede un dispositivo de encaminamiento conocer la dirección o incluso la existencia de otro dispositivo de encaminamiento. Estas cuestiones deben ser tratadas en el momento de establecer la configuración o por una intervención activa del gestor de la red. Para llevar a cabo la adquisición de vecino, un dispositivo de encaminamiento envía a otro un mensaje Open. Si el dispositivo destino acepta la solicitud, devuelve un mensaje “Keepalive” como respuesta. Una vez establecida la relación de vecino, se utiliza el procedimiento detección de vecino alcanzable para mantener la relación. Cada miembro necesita estar seguro de que su pareja existe y está todavía comprometida con la relación de vecino. Para este propósito, periódicamente ambos dispositivos de encaminamiento se envían mensajes Keepalive. Lo último es la detección de red alcanzable. Cada dispositivo de encaminamiento mantiene una base de datos con las subredes que puede alcanzar y la ruta preferida para alcanzar esa subred. Siempre que se realiza un cambio es esta base de datos, el dispositivo de encaminamiento envía un mensaje Update por difusión a todos los otros dispositivos de encaminamiento que implementan BGP. Por medio de la difusión de estos mensajes Update, todos los dispositivos de encaminamiento de BGP pueden acumular y mantener información de encaminamiento. Cada mensaje empieza con una cabecera de 19 octetos, y contiene tres campos: • Marcador: Reservado para autentificación. El emisor puede insertar un valor en este campo que sería usado como parte de un mecanismo de autentificación para permitir al destino verificar la identidad del emisor. • Longitud: Longitud del mensaje en octetos. • Tipo: Tipo de mensaje: Open, Update, Notificacion, Keepalive.
Para adquirir un vecino, un dispositivo de encaminamiento abre primero una conexión TCP al dispositivo de encaminamiento vecino de interés. Entonces envía un mensaje Open. Este mensaje identifica al AS al que pertenece el emisor y suministra la dirección IP del dispositivo de encaminamiento. También incluye un parámetro temporizador de mantenimiento, que propone el emisor. Si el destino está preparado para abrir una relación de vecindad, calcula un valor para el temporizador de mantenimiento, que es el valor mínimo de su tiempo de mantenimiento y que introduce en su mensaje Open. El valor calculado representa el máximo número de segundos que puede transcurrir entre la recepción de mensajes Keepalive sucesivos y/o mensajes Update del emisor. Un mensaje Keepalive consta solamente de la cabecera. Cada dispositivo de encaminamiento emite estos mensajes bastante a menudo a cada una de sus parejas para prevenir que expire el temporizador de mantenimiento. Un mensaje Update facilita dos tipos de información: sobre una ruta particular a través del conjunto de redes o una lista de rutas previamente anunciadas por este dispositivo de encaminamiento a ser eliminadas. La información sobre una ruta particular a través de la red implica tres campos, campo de información sobre la capacidad de alcanzar la capa de red (NLRI), campo de longitud total de los atributos del camino, y el campo de atributos de camino. El campo NLRI contiene una lista de identificadores de subredes que se pueden alcanzar por esta ruta. Cada subred se identifica por su dirección IP, en realidad una parte de la dirección IP completa. El campo atributos de camino contiene una lista de atributos que se aplican a esta ruta particular. Los atributos son: • Origen: indica si la información fue generada por un protocolo de encaminamiento interior o por uno exterior. • Camino_AS: lista de los AS que son atravesados por la ruta.
• Siguiente_salto: Dirección IP del dispositivo de encaminamiento frontera que se debe usar como siguiente salto para alcanzar los destinos indicados en el campo NLRI. • Multi_sal_des: Se usa para comunicar alguna información sobre rutas internas a un AS. • Local_pref: Usado por un dispositivo de encaminamiento para informar a otros dispositivos de encaminamiento dentro del mismo AS de su grado de preferencia por una ruta particular. • Agregado_atómico, Agente_unión: implementan el concepto de unión de rutas. El segundo tipo de información de actualización es la retirada de una o más rutas. Finalmente, los mensajes notificación se envían cuando se detecta una condición de error.