miércoles, 2 de abril de 2014

BGP


Border Gateway Protocol (BGP)
Técnicas y Protocolos de Redes Telemáticas
28 de Marzo de 2013




























Índice:



             












1. Breve descripción

BGP es un protocolo que se desarrolló para su uso en conjuntos de redes que empleasen la arquitectura TCP/IP y que permitiese el intercambio de información entre dispositivos de encaminamiento, llamados pasarelas, en sistemas autónomos diferentes. Dichos sistemas (AS) son aquellos que constan de grupos de sistemas de encaminamiento intercambiando información a través de un protocolo de encaminamiento común. De esta manera, si un protocolo interior de encaminamiento (IRP) se encarga de pasar la información entre enrutadores dentro de un mismo AS y su principal objetivo es mover lo más eficazmente posible (con el menor coste) los paquetes de un origen al destino; los protocolos exteriores de encaminamiento (ERP), como es el caso de BGP, se encargan de pasar información de encaminamiento entre AS diferentes y se preocupan más de la política (seguridad, económica, etc.) que del envío de paquetes de encaminamiento, pues su objetivo es el de intercambiar un resumen de información de alcanzabilidad entre AS administrados de forma separada. [1]
Tal es la importancia de este tipo de protocolos, que sin ellos no resultaría posible interconectar entre sí todas las redes de los diferentes países en el mundo. Es por ello, que BGP se ha convertido en el protocolo de dispositivo de encaminamiento exterior estándar en internet.

2. Funcionamiento

Tal y como ya se ha dicho, desde el punto de vista de un enrutador de BGP, el mundo consiste en un conjunto de sistemas autónomos y las líneas que los conectan. Dos de dichos sistemas autónomos se consideran conectados si hay una línea entre un enrutador fronterizo en cada uno. Puesto que ya se ha comentado que el envío de paquetes de encaminamiento en BGP no es una cuestión necesaria, atendiendo a cómo este protocolo afronta el transporte de tráfico, las redes se pueden agrupan en tres categorías [2]:
  • Redes stub: tienen sólo una conexión con el grafo de BGP y por tanto no se pueden usar para transportar tráfico porque no hay nadie en el otro lado.
  • Redes multiconectadas: Éstas podrían usarse para el transporte de tráfico excepto que lo rechacen.
  • Redes de tránsito: Están dispuestas a ocuparse de paquetes de terceros, posiblemente con algunas restricciones, y normalmente por pago.
Independientemente del tipo de red de que se disponga, las políticas en cada enrutador de BGP se configuran manualmente pues no son parte del protocolo. Además, los pares de enrutadores de BGP se comunican entre sí estableciendo conexiones TCP. Operando de esta manera proporcionan comunicación fiable y ocultan todo detalle de red que pase a través de ellos.
En el caso de tratarse de redes de tránsito las implementadas por el protocolo BGP, es necesario que los enrutadores intercambien un repertorio de mensajes para poder llevar a cabo el envío de los paquetes de encaminamiento. Pueden ser de cuatro tipos [3]:

  • Open: Utilizado para establecer una relación de vecindad con otro dispositivo de encaminamiento.
  • Update: Utilizado para transmitir información a través de una única ruta y/o  enumerar rutas múltiples que se van a eliminar.
  • Keepalive: Utilizado para confirmar una mensaje Open y confirmar periódicamente la relación de vecindad.
  • Notification: Enviado cuando se detecta una condición de error.

El intercambio además, se desarrolla en tres procedimientos funcionales denominados: Adquisición de vecino, detección de vecino alcanzable y detección de red alcanzable. El término vecino se refiere a dos dispositivos de encaminamiento que comparten la misma red.
El primero de los procedimientos nombrados ocurre cuando dos dispositivos de encaminamiento vecinos, en diferentes sistemas autónomos, se ponen de acuerdo en intercambiar regular­mente información de encaminamiento. Para ello, se requiere un procedimiento formal de adquisición ya que uno de los dispositivos de encaminamiento puede no querer participar. Por ejemplo, el dispositivo de enca­minamiento puede estar sobresaturado y no quiere ser responsable del tráfico que llega de fuera del sis­tema. En el proceso de adquisición de vecino, un dispositivo de encaminamiento envía un mensaje de petición al otro, el cual puede aceptar o rechazar el ofrecimiento.
Para llevar a cabo este procedimiento, un dispositivo de encaminamiento envía a otro un men­saje Open («abrir» relación). Si el dispositivo de encaminamiento destino acepta la solicitud, devuelve un mensaje «Keepalive» (la vecindad se «mantiene viva») 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 pareja necesita estar segura 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 en­caminamiento se envían mensajes Keepalive.
En el último procedimiento especificado por BGP, la detección de red alcanzable, cada dispositivo de encaminamiento mantiene una base de datos con las redes que puede alcanzar y la ruta preferida para alcanzar esa red. Siempre que se realiza un cambio en esta base de datos, el dispositivo de encamina­miento 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 encamina­miento de BGP pueden acumular y mantener información de encaminamiento.
De este modo, BGP es muy parecido a un protocolo de vector de distancia, pero muy diferente de la mayoría de otros como RIP. Así, en lugar de mantener el coste para cada destino, cada enrutador de BGP guarda el registro de la ruta utilizada, por lo que se conoce como un protocolo de vector de ruta. Del mismo modo, en lugar de darle a cada vecino el coste de cada posible destino estimado periódicamente, cada enrutador de BGP les dice el camino exacto que está usando [2].
Volviendo de nuevo a los tipos de mensajes,  cada uno de ellos comienza con una cabece­ra de 19 octetos, y contienen tres campos:
  • Marcador: Reservado para autenticación. El emisor puede insertar un valor en este campo que se usaría como parte de un mecanismo de autentificación para permitir al destino verificar la identi­dad del emisor.
  •   Longitud: Longitud del mensaje en octetos.
  • Tipo de mensaje: Open (abrir), Update (actualizar), Notification (notificar), Keepalive (con­tinuar).
Diferentes características de los tipos de mensaje son [4]:
  • El mensaje Open 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 indica el número de segundos que puede transcurrir entre la recepción de mensajes Keepa­live sucesivos y/o mensajes Update del emisor.
  • El 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.
  • El mensaje Update facilita dos tipos de información: Información sobre una ruta particular a través del conjunto de redes y una lista de rutas previamente anunciadas por este dispositivo de encaminamiento que van a ser eliminadas.
Un campo importante en este tipo de mensajes es Atributos de camino que  contiene una lista de atributos (métrica) que se aplican a una ruta particular. Los atributos más importantes son los siguientes:
Ø  Origen: Indica si la información fue generada por un protocolo de dispositivo de encaminamiento interior (por ejemplo, OSPF) o por un protocolo de dispositivo de encaminamiento exterior (en particular, BGP).

Ø  Camino_AS: Contiene una lista de los AS que son atravesados por la ruta.

Ø  Siguiente_salto: Contiene la dirección IP del dispositivo de encaminamiento frontera que se debe usar como siguiente salto para alcanzar los diferentes destinos.

  • El mensaje Notification se envía cuando se detecta una condición de error. Los errores más importantes son:
Ø  Error en la cabecera del mensaje: Incluye errores de sintaxis y autentificación.
Ø  Errores en mensajes Open y Update: Incluye errores de sintaxis y opciones no reconocidas.
Ø  Tiempo de mantenimiento expirado: Se comunica este error y se cierra la conexión.

 
Figura 1. Formato de mensajes BGP

3. Casos prácticos

Dos son los principales casos en los que el establecimiento de una sesión BGP resulta interesante [4]:
  • El primero de ellos, y el más importante, consiste en la conexión de diferentes sistemas autónomos entre sí para poder intercambiar información a través de todo Internet. Un ejemplo se puede observar en la siguiente imagen:

 Figura 2. Comunicación BGP entre ISPs
 
En la imagen anterior se pueden observar 3 tipos de niveles: uno correspondiente a los clientes de red y que puede hacer referencia a la red interna de cualquier empresa, otro de ISP regionales y un último de ISP de tránsito o nacionales. Los dos primeros niveles no soportan tráfico de tránsito, es decir, cualquier paquete IP generado en los mismos, solamente puede tener como destino una dirección IP dentro de ellos. Esto es así, porque ambos niveles constituyen un mismo AS. Por tanto, si se desea que clientes de diferentes ISP se puedan comunicar entre sí (por ejemplo, en la figura, SisterY y BrotherX), es necesario que dichos ISPs establezcan una sesión BGP con los ISP de tránsito, y a su vez éstos otra entre sí, para poder intercomunicar diferentes AS.
  • El otro caso consiste en el establecimiento de una sesión BGP entre subredes que pertenecen a un mismo AS. Un ejemplo se puede observar en la siguiente imagen:

               Figura 3. Comunicación BGP dentro de un mismo AS

En la imagen anterior se puede observar cómo las sedes de Bombay y Madras establecen una sesión BGP entre sí para poder tener una redundancia de caminos en caso de que la conexión de cada una de estas sedes con su ISP se caiga. Así, si por ejemplo, el enlace BGP entre Bombay y su ISP se cae, Madras puede direccionar el tráfico que se genera en Bombay y comunicarse con el ISP. Esto es posible gracias a la sesión BGP y se conoce como balanceo de carga.

4. Conclusiones

Finalmente, para concluir hay que decir que BGP se trata de un protocolo de enorme robustez que cuesta creer que se base en un algoritmo tan “simple” como puede ser el del vector de ruta, aunque eso sí, usando múltiples atributos para elegir el mejor camino. No obstante, presenta unas pequeñas desventajas [5]:
  • El intercambio de la información entre AS requiere de una gran capacidad de procesamiento y requerimientos de ancho de banda.
  • Presenta carencias de seguridad, como es la falta de control temporal en el intercambio de sus mensajes.
  • Al estar basado en TCP, se presentan los problemas asociados a este protocolo. Por ejemplo, los routers vecinos mantienen establecida una conexión TCP permanentemente (sesión BGP), pero en caso de que esta conexión se interrumpa, el router vecino asumirá que el enlace se ha desconectado o el router del otro extremo ha dejado de funcionar, por lo que eliminará automáticamente todas las rutas afectadas.
No obstante, pese a estos inconvenientes, BGP se ha convertido en el principal protocolo de encaminamiento externo empleado en Internet para la comunicación entre ISPs y su  correcto funcionamiento es crucial para el funcionamiento de Internet.





Bibliografía

[1] BGP: The Border Gateway Protocol (Advanced Internet Routing Resources). Dirección Web: http://www.bgp4.as/
[2]     Libro Computer networks. Autor: Andrew S. Tanenbaum. Boston: Pearson 2011.
[3]     Libro Computer networking with Internet protocols and technology. Autor: William Stallings. Pearson/Prentice Hall 2004.
[4]     Libro IP routing. Autor: Ravi Malhotra. Sebastopol, CA 2002.
[5]  Artículo publicado de investigación sobre seguridad en BGP. Dirección Web: http://www.saulo.net/pub/inv/BGP-art.htm

sábado, 29 de marzo de 2014

IGRP


Interior Gateway Routin Protocol (IGRP)
Técnicas y Protocolos de Redes Telemáticas






























Índice:




             












1. Breve descripción

IGRP se trata de un protocolo que al igual que RIP es de Vector-Distancia y por tanto, está basado en los algoritmos de Bellman-Ford. [1] Esto es, los routers en una red propagan la información de sus vectores de enlace de vecino a vecino, y cuando se juntan con mismas rutas procedentes de diferentes vecinos, escogen la ruta con la menor métrica. En el caso de IGRP la métrica consiste en una mezcla de ancho de banda, retraso, fiabilidad y carga. Por otra parte, el protocolo es propiedad de CISCO, por lo que routers de otros fabricantes no soportan dicho protocolo.

2. Funcionamiento

Un aspecto clave para comprender IGRP es que cada proceso que tiene lugar se identifica por un número de Sistema Autónomo (AS number). [2] Dicho número permite al administrador de red definir dominios de enrutado, esto es, los routers dentro de un dominio pueden intercambiar mensajes de actualización de rutas con otros de su mismo dominio, pero no con routers de dominios diferentes. Esto permite que los problemas de enrutado que puedan aparecer en un dominio no se extiendan a todos los dominios que conforman la red. No obstante, tiene el pequeño inconveniente de que si se crean demasiados de estos dominios, puede ser más compleja la comunicación entre los mismos, que tarde o temprano tendrá que tener lugar.
Pasando a la métrica que se emplea en IGRP, hay que decir que CISCO permite al administrador de red considerar la métrica en función del ancho de banda, retraso, fiabilidad, carga y MTU (Unidad Máxima de Transmisión). Así, IGRP convierte todos los valores escogidos para a través de una fórmula generar un número que será el que intercambiarán los routers en las actualizaciones. Estos elementos son [3]:
  • Ancho de Banda: Se escoge en función del medio físico por el que viaja la información. Ejemplo: Ethernet- 10 Mbps, un link HSSI- 45 Mbps…
  • Retraso: Se trata del retraso asociado a la propagación por el medio. Ejemplo: Ethernet- 1 ms, un link satélite – 1s.
  • Fiabilidad: Se expresa como un número entre 1 y 255, siendo 255 un 100% de fiabilidad.
  • Carga: Se expresa como un número entre 1 y 255, siendo 255 un 100% de utilización del enlace.
  • MTU: Representa el tamaño de paquete más grande que se puede enviar. Ejemplo: Ethernet – 1500 bytes.
La fórmula que se sigue para implementar el número necesario es:
  
Métrica = [k1*AnchoBanda+k2*AnchoBanda/(256-Carga)+k3*Retraso]*[K5/(Fiabilidad+k4)]
      Con k1=k3=1, k2=k4=k5=0 por defecto.

Los mensajes de actualización de IGRP se encapsulan directamente en un paquete IP que presenta la forma que se puede observar en la figura siguiente. Estos paquetes se envían de forma periódica (como mucho 90 segundos), pero en caso de haberse caído algún enlace los routers involucrados envían dichos mensajes de manera inmediata. Además, todas las actualizaciones enviadas por IGRP llevan como dirección destino 255.255.255.255 y pueden alcanzar un número máximo de 255 saltos (100 por defecto).
Un aspecto interesante que se puede observar en el paquete IP [3] es que éste contiene tres tipos de rutas:

Figura 1. Formato de un paquete de actualización IGRP

  • Rutas interiores: Contiene información para el número de la mayor red asociada con la dirección de la interfaz a la que la actualización está siendo enviada.
  •  Rutas sistema: Contienen números de las mayores redes con las que el enrutador en concreto ha tratado anteriormente.
  • Rutas exteriores: Representa candidatos como rutas por defecto (a los que se enviarían las actualizaciones en caso de algún fallo).
Como se puede observar de la imagen del paquete que se envía, las actualizaciones IGRP no contienen información de máscaras de subred (se trata de un protocolo de enrutado con clases).
Las reglas que se siguen para el procesado de las actualizaciones IGRP son:
  • Si el número de red destino es desconocido para el router, se añade una nueva entrada en su tabla con la dirección IP de la actualización. 
  •  Si el número de la red destino es conocida por el router pero la actualización contiene una métrica más pequeña, se modifica la tabla con el nuevo salto siguiente y la nueva métrica.
  • Si el número de la red destino es conocida por el router pero la actualización contiene una métrica más grande, se ignora la actualización.
  • Si el número de la red destino es conocida por el router y la actualización contiene una métrica igual pero por un enlace diferente, se actualiza la tabla siempre y cuando no se supere el número máximo de enlaces disponibles para un mismo destino.
Otro aspecto a comentar, es que al igual que RIP, IGRP implementa Split Horizon (Horizonte dividido), Poison Reverse (Envenenamiento en reverso), Triggered Updates (Actualizaciones inmediatas), Hold Down (Espera) y una serie de contadores o tiempos específicos que son [4]:
  • Update Timer (por defecto 90s): Cuando un router envía un mensaje de actualización pone el tiempo a 0. Cuando dicho tiempo llega a 90s, se envía otra actualización.
  •  Invalid Timer (por defecto 270s): Cada vez que un router recibe una actualización para una ruta pone el tiempo a 0. Cuando dicho tiempo expira, eso indica que la fuente de origen se ha caído (bien el enrutador o el enlace).
  • Hold-down Timer (por defecto 280s): Cuando el tiempo inválido expira, este tiempo se pone a 0. Durante esta fase todas las actualizaciones que contiene la ruta caída son descartadas hasta que el tiempo expira.
  • Flush Timer (por defecto 630s): Cada vez que un router recibe una actualización de una ruta pone el tiempo a 0. Cuando el tiempo expira, la ruta es eliminada de su tabla.
Anteriormente, se ha hablado de la posibilidad de que un mismo router tenga varias rutas en su tabla para encaminar paquetes hacia un mismo destino, hecho que permitiría ante la caída de un enlace poder seguir enviando información. Pues bien, es necesario comentar respecto a este tema que la ruta que es escogida por defecto para enviar la información por IGRP no es 0.0.0.0. En vez de eso, se emplean números ficticios para enviar el tráfico, esto es, no existe una red física con dicho identificador. Las ventajas que presenta esta posibilidad son varias: por un lado, estos identificadores nunca se eliminarán porque la red a la que se refieren nunca se puede caer (no existe), y por otro lado, esta técnica permite de una manera más rápida cambiar al candidato ideal para enviar cierta información.

3. Conclusiones

Finalmente, para concluir hay que decir que IGRP tiene la misma robustez que RIP pero añadiendo una nueva característica principal, como es el cambio de métrica. No obstante, presenta una serie de problemas que también afectan a RIP [5]:
  • El intercambio de las tablas enteras de enrutado para el caso de grandes redes genera un exceso de procesamiento en los AS.
  • El tiempo de convergencia puede ser demasiado grande.
  • IGRP no intercambia en las actualizaciones información de máscaras de subred y las máscaras de subred de longitud variable (VLSM) no son tampoco soportadas. Esto se debe a que si se incluyese dicha información, el tamaño de los mensajes de actualización sería tal que los recursos de la red se consumirían de forma significativa y los tiempos de convergencia serían inmensos.
Todo ello, ha hecho que IGRP no se emplee en redes de gran tamaño, pero sí goce de una gran popularidad en redes de pequeño o mediano tamaño.

Bibliografía

[2]     Libro Computer networks. Autor: Andrew S- Tanenbaum. Boston: Pearson 2011.
[3]     Libro IP routing. Autor: Ravi Malhotra. Sebastopol, CA 2002.
[4]     Libro Computer networking with Internet protocols and technology. Autor: William Stallings. Pearson/Prentice Hall 2004.
[5] Artículo sobre IGRP. Dirección Web: http://docente.ucol.mx/a l971854/p ublic_ ht ml/tarea8.htm