El Protocolo de información de enrutamiento ( RIP ) es uno de los protocolos de enrutamiento por vector de distancia más antiguos que emplea el conteo de saltos como métrica de enrutamiento . RIP evita los bucles de enrutamiento al implementar un límite en la cantidad de saltos permitidos en una ruta desde el origen hasta el destino. La mayor cantidad de saltos permitidos para RIP es 15, lo que limita el tamaño de las redes que RIP puede admitir.
RIP implementa los mecanismos de horizonte dividido , envenenamiento de ruta y retención para evitar que se propague información de enrutamiento incorrecta.
En RIPv1, los enrutadores transmitían actualizaciones con su tabla de enrutamiento cada 30 segundos. En las primeras implementaciones, las tablas de enrutamiento eran lo suficientemente pequeñas como para que el tráfico no fuera significativo. Sin embargo, a medida que las redes crecían en tamaño, se hizo evidente que podía haber una ráfaga masiva de tráfico cada 30 segundos, incluso si los enrutadores se habían inicializado en momentos aleatorios.
En la mayoría de los entornos de red, RIP no es la opción preferida de protocolo de enrutamiento , ya que su tiempo de convergencia y escalabilidad son deficientes en comparación con EIGRP , OSPF o IS-IS . Sin embargo, es fácil de configurar, ya que RIP no requiere ningún parámetro, a diferencia de otros protocolos.
RIP utiliza el Protocolo de datagramas de usuario (UDP) como protocolo de transporte y se le asigna el número de puerto reservado 520. [1]
Basados en el algoritmo Bellman-Ford y el algoritmo Ford-Fulkerson , los protocolos de enrutamiento por vector de distancia comenzaron a implementarse a partir de 1969 en redes de datos como ARPANET y CYCLADES . El predecesor de RIP fue el Protocolo de Información de Puerta de Enlace (GWINFO), que fue desarrollado por Xerox a mediados de la década de 1970 para enrutar su red experimental. Como parte de la suite de protocolos Xerox Network Systems (XNS), GWINFO se transformó en el Protocolo de Información de Enrutamiento XNS. Este RIP XNS a su vez se convirtió en la base de los primeros protocolos de enrutamiento, como el RIP IPX de Novell , el Protocolo de Mantenimiento de Tablas de Enrutamiento (RTMP) de AppleTalk y el RIP IP. La distribución de software Berkeley de 1982 del sistema operativo UNIX implementó RIP en el demonio enrutado . La versión 4.2BSD resultó popular y se convirtió en la base para las versiones posteriores de UNIX, que implementaron RIP en el demonio enrutado o controlado . Finalmente, RIP se había implementado ampliamente [2] antes de que el estándar, escrito por Charles Hedrick, se aprobara como RIPv1 en 1988. [3]
La métrica de enrutamiento que utiliza RIP cuenta la cantidad de enrutadores que se deben atravesar para llegar a una red IP de destino. El conteo de saltos 0 denota una red que está conectada directamente al enrutador. 16 saltos denotan una red a la que no se puede acceder, según el límite de saltos de RIP. [4]
Hay tres versiones estandarizadas del Protocolo de información de enrutamiento: RIPv1 y RIPv2 para IPv4 , y RIPng para IPv6 .
La especificación original de RIP fue publicada en 1988. [3] Al iniciarse, y cada 30 segundos a partir de entonces, un enrutador con implementación RIPv1 transmite a 255.255.255.255 un mensaje de solicitud a través de cada interfaz habilitada para RIPv1. Los enrutadores vecinos que reciben el mensaje de solicitud responden con un segmento RIPv1, que contiene su tabla de enrutamiento . El enrutador solicitante actualiza su propia tabla de enrutamiento, con la dirección de red IP alcanzable, el conteo de saltos y el siguiente salto, que es la dirección IP de la interfaz del enrutador desde la que se envió la respuesta RIPv1. A medida que el enrutador solicitante recibe actualizaciones de diferentes enrutadores vecinos, solo actualizará las redes alcanzables en su tabla de enrutamiento, si recibe información sobre una red alcanzable que aún no tiene en su tabla de enrutamiento o información de que una red que tiene en su tabla de enrutamiento es alcanzable con un conteo de saltos menor. Por lo tanto, un enrutador RIPv1 en la mayoría de los casos solo tendrá una entrada para una red alcanzable, la que tenga el conteo de saltos más bajo. Si un enrutador recibe información de dos enrutadores vecinos diferentes de que se puede acceder a la misma red con el mismo número de saltos pero a través de dos rutas diferentes, la red se ingresará en la tabla de enrutamiento dos veces con enrutadores de siguiente salto diferentes. El enrutador habilitado con RIPv1 realizará lo que se conoce como equilibrio de carga de igual costo para los paquetes IP. [4]
Los enrutadores compatibles con RIPv1 no sólo solicitan las tablas de enrutamiento de otros enrutadores cada 30 segundos, sino que también escuchan las solicitudes entrantes de los enrutadores vecinos y envían su propia tabla de enrutamiento a su vez. Por lo tanto, las tablas de enrutamiento RIPv1 se actualizan cada 25 a 35 segundos. [4] El protocolo RIPv1 agrega una pequeña variable de tiempo aleatoria al tiempo de actualización, para evitar que las tablas de enrutamiento se sincronicen a través de una LAN. [5] Se pensaba que, como resultado de la inicialización aleatoria, las actualizaciones de enrutamiento se distribuirían en el tiempo, pero esto no era cierto en la práctica. Sally Floyd y Van Jacobson demostraron en 1994 que, sin una ligera aleatorización del temporizador de actualización, los temporizadores se sincronizaban a lo largo del tiempo. [6]
RIPv1 se puede configurar en modo silencioso, de modo que un enrutador solicite y procese las tablas de enrutamiento vecinas y mantenga actualizadas su tabla de enrutamiento y el conteo de saltos para las redes alcanzables, pero no envíe innecesariamente su propia tabla de enrutamiento a la red. El modo silencioso se implementa comúnmente en los hosts. [7]
RIPv1 utiliza enrutamiento con clases . Las actualizaciones periódicas de enrutamiento no incluyen información de subredes y no admiten máscaras de subred de longitud variable (VLSM). Esta limitación hace que sea imposible tener subredes de diferentes tamaños dentro de la misma clase de red . En otras palabras, todas las subredes de una clase de red deben tener el mismo tamaño. Tampoco hay compatibilidad con la autenticación de enrutadores, lo que hace que RIP sea vulnerable a varios ataques.
Debido a las deficiencias de la especificación RIP original, se desarrolló la versión 2 de RIP (RIPv2) en 1993 [4] , se publicó en 1994 [8] y se declaró el estándar de Internet 56 en 1998 [9]. Incluía la capacidad de transportar información de subred, lo que permitía el enrutamiento entre dominios sin clases (CIDR). Para mantener la compatibilidad con versiones anteriores, se mantuvo el límite de 15 saltos. RIPv2 tiene funciones para interoperar completamente con la especificación anterior si se especifican correctamente todos los campos de protocolo Must Be Zero en los mensajes RIPv1. Además, una función de cambio de compatibilidad [9] permite realizar ajustes de interoperabilidad de grano fino.
En un esfuerzo por evitar una carga innecesaria en los hosts que no participan en el enrutamiento, RIPv2 envía por multidifusión toda la tabla de enrutamiento a todos los enrutadores adyacentes en la dirección 224.0.0.9 , a diferencia de RIPv1 que utiliza broadcast . El direccionamiento unicast aún está permitido para aplicaciones especiales.
La autenticación MD5 para RIP se introdujo en 1997. [10] [11]
En la versión 2 de RIP también se agregaron etiquetas de ruta. Esta funcionalidad permite distinguir entre rutas aprendidas del protocolo RIP y rutas aprendidas de otros protocolos.
RIPng (RIP next generation) es una extensión de RIPv2 para soportar IPv6 , el Protocolo de Internet de próxima generación. [12] Las principales diferencias entre RIPv2 y RIPng son:
RIPng envía actualizaciones en el puerto UDP 521 utilizando el grupo de multidifusión ff02::9 .
Los mensajes RIP utilizan el Protocolo de Datagramas de Usuario en el puerto 520 y todos los mensajes RIP intercambiados entre enrutadores se encapsulan en un datagrama UDP. [4]
RIP define dos tipos de mensajes:
El protocolo de información de enrutamiento utiliza los siguientes temporizadores como parte de su funcionamiento: [13]
El protocolo de enrutamiento de puerta de enlace interior (IGRP) patentado por Cisco era un protocolo algo más capaz que RIP. Pertenece a la misma familia básica de protocolos de enrutamiento por vector de distancia .
Cisco ha dejado de ofrecer soporte y distribución de IGRP en su software de enrutador. Fue reemplazado por el Protocolo de enrutamiento de puerta de enlace interior mejorado (EIGRP), que es un diseño completamente nuevo. Si bien EIGRP aún utiliza un modelo de vector de distancia, se relaciona con IGRP solo en el uso de la misma métrica de enrutamiento compuesta. Tanto IGRP como EIGRP calculan una única métrica compuesta para cada ruta, a partir de una fórmula de cinco variables: ancho de banda , retraso , confiabilidad , carga y MTU ; aunque en los enrutadores Cisco, de manera predeterminada, solo se utilizan el ancho de banda y el retraso en este cálculo.