# Routing Information Protocol

El Protocolo de Información de Encaminamiento, Routing Information Protocol (RIP), es un protocolo de puerta de enlace interna o interior (Interior Gateway Protocol, IGP) utilizado por los routers o encaminadores para intercambiar información acerca de redes del Internet Protocol (IP) a las que se encuentran conectados. Su algoritmo de encaminamiento está basado en el vector de distancia, ya que calcula la métrica o ruta más corta posible hasta el destino a partir del número de "saltos" o equipos intermedios que los paquetes IP deben atravesar. El límite máximo de saltos en RIP es de 15, de forma que al llegar a 16 se considera una ruta como inalcanzable o no deseable. A diferencia de otros protocolos, RIP es un protocolo libre, es decir, que puede ser usado por diferentes routers y no únicamente por un solo propietario con uno como es el caso de EIGRP que es de Cisco Systems.

## Historia

El origen del RIP fue el protocolo de Xerox, el GWINFO. Una versión posterior, fue conocida como routed, distribuida con Berkeley Standard Distribution (BSD) Unix en 1982. RIP evolucionó como un protocolo de enrutamiento de Internet, y otros protocolos propietarios utilizan versiones modificadas de RIP. El protocolo Apple Talk Routing Table Maintenance Protocol (RTMP) y el Banyan VINES Routing Table Protocol (RTP), por ejemplo, están basados en una versión del protocolo de encaminamiento RIP. La última mejora hecha al RIP es la especificación RIPv2, que permite incluir más información en los paquetes RIP y provee un mecanismo de autenticación muy simple.

## Ejemplo de sintaxis de configuración en router Cisco

Donde:
* network anuncia las redes que están conectadas en el router de forma directa que van a ser anunciados por el protocolo RIP.
* version únicamente puede ser de 1 o 2 que son las versiones que tiene el protocolo.
* maximum-paths indica la cantidad de enlaces que pueden balancear carga de igual costo o métrica (para RIP su métrica son los saltos), esto puede ser opcional, predeterminadamente son 4 paths.
* no auto-summary desactiva la resumición automática de direcciones de red en RIP, permitiendo así una mayor especificidad en las actualizaciones de enrutamiento.

## Temporizadores

RIP utiliza unos temporizadores para que apoyen su funcionamiento, las cuales son:
* Temporizador periódico: este controla la publicación de los mensajes de actualización regulares. Se debe ajustar el temporizador a 30 s, esto es para evitar se sincronicen y así sobrecargar el Internet si los routers se actualizan de forma simultánea. Cada router posee un temporizar periódico que se establece al azar a un número que va de 25 a 35 que va en decremento hasta llegar a 0 y envía un mensaje de actualización.
* Temporizador de caducidad (o timer de invalidación): establece cuanto tiempo puede estar una ruta en la tabla de ruteo sin ser actualizada. Cuando un router recibe la información actualizada para una ruta, el temporizador establece 180 s para esa ruta en particular. Si pasados los 180 s asignados no se actualiza la ruta, se considera que está caducada y el número de saltos se pone 16 considerándose una ruta inalcanzable.
* Temporizador de Colección de Basura: este temporizador controla el tiempo que pasa entre que una ruta es invalidada (o marcada como inalcanzable) y el tiempo que pasa hasta que se elimina la entrada de la tabla de ruteo. El valor predeterminado es de 240 s. Esto es 60 s más largo que el temporizador de caducidad. Entonces, por 60 s el router estará anunciando sobre la ruta inalcanzable a todos sus vecinos. El valor del temporizador debe setearse en un valor mayor que el temporizador de caducidad.

## Versiones

En la actualidad existen dos versiones de RIP: RIPv1, RIPv2. También existe la versión RIpng, para IPv6.

### RIPv1

La definición original, recogida en el RFC 1058, define RIP como un protocolo de enrutamiento con clase, es decir, basado en las clases de las direcciones IP. Por tanto, RIPv1 no soporta máscaras de tamaño variable (VLSM) ni direccionamiento sin clase (CIDR). Esto implica que las redes tratadas por este protocolo deben tener la máscara de red predefinida para su clase de dirección IP, lo que resulta poco eficiente. Además, RIPv1 tampoco incluye ningún mecanismo de autentificación de los mensajes, haciéndolo vulnerable a ataques cibernéticos.
Utiliza UDP para enviar sus mensajes a través del puerto 520.

### RIPv2

Debido a las limitaciones de la versión 1, se desarrolla RIPv2 en 1993, y se estandariza finalmente en 1998. Esta versión soporta subredes, permitiendo así CIDR y VLSM. Además, para tener retrocompatibilidad con RIPv1, se mantuvo la limitación de 15 saltos si se está usando el protocolo OSPF o cualquier otro que sirva para direccionamiento en el enlace.
Se agregó una característica de "interruptor de compatibilidad" para permitir ajustes de interoperabilidad más precisos. RIPv2 soporta autenticación, utilizando uno de los siguientes mecanismos: no autentificación, autentificación mediante contraseña, y autentificación mediante contraseña codificada mediante MD5 (desarrollado por Ronald Rivest en 1997). Su especificación está recogida en los RFC 1723 y RFC 4822.
RIPv2 es el estándar de Internet STD56 (que corresponde al RFC 2453).

### RIPng

RIP para IPv6. Se rige por la RFC 2080.

## Ventajas

* RIP es más fácil de configurar (comparativamente a otros protocolos).
* Implementa un algoritmo de encaminamiento más simple que otros protocolos, por lo que el cálculo de la "mejor" ruta (comparativamente en encaminadores de similares prestaciones) es más rápida.
* Es soportado por la mayoría de los fabricantes.
* El protocolo EIGRP de Cisco, patentado por ellos, salva la principal desventaja del nativo protocolo RIP porque valora la mejor métrica, además del número de saltos y otros criterios (ancho de banda, congestión, carga, retardo, fiabilidad, etc.), haciendo más eficiente la red.

## Desventajas de RIP

* Su principal desventaja consiste en que para determinar la mejor métrica, únicamente toma en cuenta el número de saltos, descartando otros criterios (ancho de banda, congestión, carga, retardo, fiabilidad, etc.).
* El límite máximo de saltos es menor que el de otros protocolos (máximo 15 saltos), de forma que solo se puede utilizar en redes de tamaño mediano o pequeño.
* RIP tampoco está diseñado para resolver cualquier posible problema de enrutamiento. El RFC 1720 (STD 1) describe estas limitaciones técnicas de RIP como graves y el IETF está evaluando candidatos para reemplazarlo, dentro de los cuales OSPF es el favorito. Este cambio está dificultado por la amplia expansión de RIP y necesidad de acuerdos adecuados.
* El tiempo de convergencia es largo.
* Sólo se puede utilizar para redes pequeñas.

## Soluciones en RIPv1

* Actualizaciones Immediatas (Triggered Updates): Cuando uno de los enlaces de un router se cae, un mensaje de actualización es enviado sin necesidad de esperar los 30s reglamentarios.
* Espera (Hold Down): cuando un enrutador detecta que un enlace se ha caído, este no acepta mensajes de enrutamiento por un período determinado. Esto permite que la actualización inmediatamente se propague.
* Horizontes Divididos (Split Horizon): un router no anuncia rutas por la misma interfaz en que le llegaron. Con esto se elimina el problema de tener que contar hasta el infinito.
* Envenenamiento en Reverso (Poison Reverse): cuando un enlace se cae, el enrutador inmediatamente envía un mensaje con la ruta y una distancia de infinito (16).

## Modo de operación

El valor de AD de RIP es de 120, por ello tiene menor prioridad sobre los demás protocolos de encaminamiento.
Cuando RIP se inicia, envía un mensaje a cada uno de sus vecinos (en el puerto 520) pidiendo una copia de la tabla de encaminamiento del vecino. Este mensaje es una solicitud (el campo "command" se pone a 1) con "address family" a 0 y "metric" a 16. Los routers vecinos devuelven una copia de sus tablas de encaminamiento.
Cuando RIP está en modo activo envía toda o parte de su tabla de encaminamiento a todos los vecinos por broadcast y/o con enlaces punto a punto. Esto se hace cada 30 segundos. La tabla de encaminamiento se envía como respuesta ("command" vale 2, aunque no haya habido petición).
Cuando RIP descubre que una métrica ha cambiado, la difunde por broadcast a los demás routers.
Cuando RIP recibe una respuesta, el mensaje se corrobora y la tabla local se actualiza si es necesario (Para mejorar el rendimiento y la fiabilidad, RIP establece que una vez que un router (u host) ha aprendido una ruta de otro, debe guardarla hasta que conozca una mejor (de coste estrictamente menor). Esto evita que los routers oscilen entre dos o más rutas de igual coste).
Cuando RIP recibe una petición, distinta de la solicitud de su tabla, se devuelve como respuesta la métrica para cada entrada de dicha petición fijada al valor de la tabla local de encaminamiento. Si no existe ruta en la tabla local, se pone a 16.
Las rutas que RIP aprende de otros routers expiran a menos que se vuelvan a difundir en 180 segundos (6 ciclos de broadcast). Cuando una ruta expira, su métrica se pone a infinito, la invalidación de la ruta se difunde a los vecinos, y 60 segundos más tarde, se borra de la tabla.

## Mensajes
### Tipos

Los mensajes RIP pueden ser de dos tipos:
* Petición: enviados por algún encaminador recientemente iniciado que solicita información de los encaminadores vecinos.
* Respuesta: mensajes con la actualización de las tablas de encaminamiento. Existen tres tipos:
** Mensajes ordinarios: Se envían cada 30 segundos. Para indicar que el enlace y la ruta siguen activos. Se envía la tabla de encaminado completa.
** Mensajes enviados como respuesta a mensajes de petición.
** Mensajes enviados cuando cambia algún coste. Se envía toda la tabla de encaminado.

### Formato

Los mensajes tienen una cabecera que incluye el tipo de mensaje y la versión del protocolo RIP, y un máximo de 25 entradas RIP de 20 bytes. Las entradas en RIPv1 contienen la dirección IP de la red de destino y la métrica. Las entradas en RIPv2 contienen la dirección IP de la red de destino, su máscara, el siguiente encaminador y la métrica. La autentificación utiliza la primera entrada RIP.