Blog de Amazon Web Services (AWS)

Buenas prácticas de enrutamiento en Amazon Virtual Private Cloud

Por Claudia Izquierdo, Solutions Architect para Public Sector en AWS

y Giovanni Rodríguez, Solutions Architect para Public Sector en AWS

 

Actualmente está creciendo la cantidad de organizaciones aprovechando las ventajas de AWS para desplegar ágilmente sus aplicaciones. Por esto es primordial contar con conocimientos y recomendaciones básicas de diseño de red. En este blog nos enfocaremos en el diseño y buenas prácticas para la distribución de rutas en las tablas de enrutamiento de Amazon VPC. Amazon Virtual Private Cloud (Amazon VPC) es un servicio que permite lanzar recursos de AWS en una red virtual aislada de forma lógica. Puede controlar todos los aspectos del entorno de red virtual como la selección de su propio rango de direcciones IP, la creación de subredes y la configuración de tablas de enrutamiento y gateways de red. Puede utilizar rangos de direcciones tanto de IPv4 como IPv6 para la mayoría de los recursos de la nube virtual privada.

Este blogpost es parte de una serie de publicaciones para las buenas prácticas de redes en Amazon VPC, los cuales incluyen:

El enrutamiento o routing es la técnica que utilizan los dispositivos con capacidad de capa 3 del Modelo OSI para el reenvío de paquetes por medio de direccionamiento IP y así interconectar distintas redes. Dentro de los dispositivos de red que pueden realizar estas acciones están los routers, switches multicapa, firewalls, entre otros. Estos dispositivos también son llamados gateway o puerta de enlace, ya que son los puntos de entrada y/o salida de la(s) red(es) en las que se encuentran.

Los conceptos de procesos y algoritmos utilizados para enrutamiento aplican de igual forma tanto para direccionamiento IPv4 como IPv6. Los dispositivos con estas capacidades utilizan los mismos procesos internos para llevar a cabo el enrutamiento de paquetes, en este artículo utilizaremos como ejemplo un router.

Cada dispositivo de enrutamiento evalúa los paquetes ingresados para llevar a cabo el proceso de reenvío de paquetes, esto con la finalidad de que la información transportada sea reenviada a su destino correspondiente. La forma en que los dispositivos de enrutamiento hacen el análisis para el reenvío de paquetes es por medio de la tabla de enrutamiento, de ruteo, de rutas o routing table. La tabla de enrutamiento representa las diferentes rutas activas ya sea añadidas por el mismo router, anunciadas por otro router o agregadas por el administrador del router. Los dispositivos usan esta información para reenviar los paquetes por la interfaz correspondiente para llegar al destino final solicitado, por medio de la interfaz de salida local y/o la información del siguiente salto para el reenvío de paquetes, seleccionando la mejor ruta en cada reenvío de cada salto. La interfaz de reenvío de paquetes puede ser el destino final o una red conectada a otro router que se usa para llegar a la red destino.

Los saltos, en enrutamiento, son cada uno de los dispositivos por los que deben pasar los paquetes para poder ser reenviados correctamente a su destino final, y el siguiente salto es el dispositivo localmente conectado el cual será el siguiente en recibir el paquete reenviado con dirección a su destino final.

Las partes básicas de una ruta son:

  • Origen de la ruta: indica el modo en que se descubrió la ruta.
  • Red de destino: identifica la dirección de la red remota de destino.
  • Siguiente salto: dirección del router siguiente al que se debe reenviar el paquete.
  • Interfaz de salida: identifica la interfaz local de salida que se debe utilizar para reenviar un paquete hacia el destino final.

Analicemos la siguiente topología de red enfocándonos en el Router 1, donde su siguiente salto para la Red 2 es el Router 2 y el Router 3 nos permite una conexión hacia internet:

Topología de red para el análisis de tabla de enrutamiento

 

Tabla 1: Direccionamiento IPv4 del Router 1

Interfaz

Dirección IPv4

GigabitEthernet 0/0 10.0.0.1/32
GigabitEthernet 0/1 10.0.0.6/32
GigabitEthernet 0/2 192.168.0.1/32

Tabla 2: Tabla de enrutamiento IPv4 de Router 1

Origen de la ruta

Red de destino Interfaz de salida

Siguiente salto

C 192.168.0.0/24 GigabitEthernet 0/2 N/A
C 10.0.0.0/30 GigabitEthernet 0/0 N/A
C 10.0.0.5/30 GigabitEthernet 0/1 N/A
S 172.16.0.0/24 GigabitEthernet 0/0 10.0.0.2/32
S 0.0.0.0/0 GigabitEthernet 0/1 10.0.0.7/32

La máscara de red

Las direcciones IP tienen como funcionalidad ser un valor lógico que permita a los dispositivos leerlo, y distinguir el siguiente salto al que se deben reenviar los paquetes del proceso que se está llevando a cabo en la red. Al mismo tiempo, a cada dispositivo de red le es asignada una dirección IP que pertenece a una red. La máscara de red es el valor utilizado para diferenciar la parte de red y la parte de host en una dirección IP, utiliza la misma sintaxis de una dirección IP.

Además su finalidad es delimitar la parte de red y host de una dirección IP, y esto lo logra usando bits en valor 1 para la parte de red y bits en valor 0 para la parte de host, como se puede observar en la Tabla 3: Diferentes variaciones en la máscara de red:

Tabla 3: Diferentes variaciones de la máscara de red

Máscara de red

Prefijo de red

255.0.0.0 11111111.00000000.00000000.0000000 /8
255.128.0.0 11111111.10000000.00000000.0000000 /9
255.255.0.0 11111111.11111111.00000000.00000000 /16
255.255.128.0 11111111.11111111.10000000.00000000 /17
255.255.255.0 11111111.11111111.11111111.00000000 /24
255.255.255.128 11111111.11111111.11111111.10000000 /25
255.255.255.192 11111111.11111111.11111111.11000000 /26
255.255.255.224 11111111.11111111.11111111.11100000 /27
255.255.255.240 11111111.11111111.11111111.11110000 /28
255.255.255.248 11111111.11111111.11111111.11111000 /29
255.255.255.252 11111111.11111111.11111111.11111100 /30
255.255.255.254 11111111.11111111.11111111.11111110 /31
255.255.255.255 11111111.11111111.11111111.11111111 /32

El prefijo de red es la suma total de bits en valor 1 que conforman la sección de red de una dirección IP. Analicemos el ejemplo anterior, aquí el prefijo de red es 24:

Tabla 4: Segmentación de una dirección IPv4

Red

Host

Dirección IP de host:
192.168.10.12
192 168 10 12
11000000 10101000 00001010 00001100
Máscara de red:
255.255.255.0
255 255 255 0
11111111 11111111 11111111 0000000

 

Los bits en valor 0 de la máscara de red representan al segmento de host y los bits en valor 1 el segmento de red. Así observamos que la red a la que pertenece el host 192.168.10.12/24 es la 192.168.10.X/24.

El prefijo de red de mayor coincidencia

No siempre existe una única posibilidad de siguiente salto para una dirección de destino como en el ejemplo anterior.  El prefijo de red de mayor coincidencia, consiste en la comparación de la IP destino dentro del paquete evaluado contra las posibles rutas que pueden ser utilizadas. La comparación se basa en los prefijos de red y se utiliza el que más se ajuste a la dirección IP de destino del paquete enviado. Veamos un ejemplo con IPv4 en donde se tiene una dirección de destino 172.16.0.22/32 y existen cuatro posibles rutas que podrían coincidir con el paquete: 172.16.0.0/16, 172.16.0.0/20, 172.16.0.0/26 y 172.16.0.200/32. Para elegir la coincidencia más larga y a dónde reenviar el paquete, el router sigue el siguiente proceso de comparación:

Tabla 5: Comparación de rutas para IP destino 172.16.0.22/32

IPv4 en decimal

IPv4 en binario

Dirección IPv4 de paquete destino 172.16.0.22/32 10101100 0001000 00000000 00010110
Rutas (Red de destino) 172.16.0.0/16 10101100 0001000 00000000 00000000
172.16.0.0/20 10101100 0001000 00000000 00000000
172.16.0.0/26 10101100 0001000 00000000 00000000
172.16.0.200/32 10101100 0001000 00000000 11001000

En enrutamiento se busca la ruta con la máscara más larga que coincida con la red destino. El dispositivo de red busca la ruta donde los bits del prefijo delimitan las secciones de la dirección IPv4 que coinciden, en este caso para el destino 172.16.0.22/32 se toma la ruta de 172.16.0.0/26 con base en la máscara y su delimitación; la ruta 172.16.0.200/32 no coincide en el último segmento de la dirección IP en comparación a la dirección IP del paquete destino.

Tipos de redes en un router

Una tabla de enrutamiento contiene una lista de rutas a redes conocidas, y el router los distingue y clasifica de la siguiente forma:

  • Redes directamente conectadas: se agregan de forma predeterminada en la tabla de enrutamiento y son las redes que se encuentran directamente conectadas en las interfaces del router de las cuales éste tiene conocimiento ya que pertenece a esas redes.
  • Redes remotas: redes que no se encuentran directamente conectadas y están a uno o más saltos de distancia del router. Éstas deben ser agregadas al router y se descubren de dos maneras:
    • Rutas estáticas: la ruta se añade manualmente. No se actualizan automáticamente y deben reconfigurarse de forma manual si se modifica la topología de red.
    • Protocolos de enrutamiento dinámico: se añaden las rutas a la tabla de enrutamiento por medio de un aprendizaje dinámico sobre la red remota. Estos protocolos permiten la detección de redes y el mantenimiento automático de las tablas de enrutamiento.
    • Ruta default o predeterminada: utilizada cuando no se tiene una ruta específica que coincida con la dirección IP destino. Esta puede ser estática o aprenderse automáticamente de un protocolo de enrutamiento dinámico y tiene la estructura 0.0.0.0/0 para IPv4 y ::/0 para IPv6.  No es obligatorio que exista la ruta default en una tabla de enrutamiento.

Prioridades y flujo del proceso de enrutamiento

En los routers cuando un paquete tiene la posibilidad de ser enrutado entre dos o más rutas diferentes hacia el mismo destino se realiza el siguiente flujo y priorización para elegir la mejor ruta con base en los siguientes criterios:

  • El prefijo de red de mayor coincidencia. Este contiene la mayor cantidad de bits del extremo izquierdo coincidentes con la dirección IP de destino del paquete.
  • Si no es posible diferenciar la mejor ruta por medio del principio del prefijo de red de mayor coincidencia, ya que son rutas con el mismo prefijo y con diferentes protocolos de enrutamiento: en este escenario se utiliza un valor que define la fiabilidad del protocolo de enrutamiento frente a los demás, tomando la ruta más fiable. Estos valores pueden diferir entre proveedores de equipos de red, pero el proceso para priorización y distinción entre rutas es el mismo.
  • Por último, si no hay rutas disponibles que coincidan con la red o host de destino para ser redireccionado, el paquete es descartado por el router.

Enrutamiento en AWS

AWS ofrece la administración de tablas de enrutamiento cuando trabajamos con una Amazon VPC y de esta manera distribuir el tráfico de red dentro y fuera de la misma VPC. Las VPCs tienen un enrutador implícito y utilizan las tablas de ruteo para controlar hacia dónde se dirige el tráfico de red. Tomemos de ejemplo la siguiente arquitectura de referencia para la revisión de rutas. Como puede observarse, en AWS las subredes se asocian a tablas de enrutamiento.

 

Arquitectura de referencia

 

Tablas de enrutamiento de Blog_VPC

 

Rutas en tabla de enrutamiento de la Blog_SubredPública_A.1

 

Rutas en tabla de enrutamiento de la Blog_SubredPrivada_A.3

 

Las tablas de enrutamiento de las subredes públicas (Blog_SubredPública_A.1 Blog_SubredPública_A.2) tienen las mismas rutas. Las tablas de enrutamiento de las subredes privadas (Blog_SubredPrivada_A.3 Blog_SubredPrivada_A.4) tienen las mismas rutas.

La tabla de enrutamiento de AWS está constituida por:

  • Destino: el rango de direcciones IP al que desea que vaya el tráfico (CIDR de destino).
  • Target: puerta de enlace, interfaz de red o conexión a través de la cual enviar el tráfico de destino.
    • Target local: una ruta predeterminada para la comunicación dentro de la VPC.

En AWS las tablas de enrutamiento pueden ser main o principal y custom o personalizada. Al crear una VPC, ésta cuenta de manera automática con una tabla de ruteo principal. Si una subred no está asociada de forma explícita a una tabla de enrutamiento, se utilizará la tabla de enrutamiento principal de forma predeterminada.

Las tablas de enrutamiento personalizadas de esta arquitectura (Blog_SubredPublica_A.1, Blog_SubredPublica_A.2, Blog_SubredPrivada_A.3 y Blog_SubredPrivada_A.4) son creadas y administradas por el usuario.

De manera predeterminada, AWS agrega una ruta local en todas las tablas de ruteo (principal o personalizada) para la comunicación dentro de la VPC de forma privada, la cual corresponde al CIDR de la VPC.

En estas tablas de enrutamiento se adicionaron una ruta default estática para que el tráfico que no sea destinado dentro de la misma VPC por medio de la ruta local sea reenviado en el caso de las subredes privadas, al NAT Gateway ubicado en la Subred Pública A.1 y posteriormente al Internet Gateway, y para las subredes públicas, directamente al Internet Gateway permitiendo que todas las subredes de esta VPC cuenten con conectividad hacia internet.

Preferencias de rutas en una Amazon VPC

En arquitecturas híbridas, donde se tiene una conexión entre uno o más ambientes on-premise y la nube de AWS por medio de los servicios de AWS Direct Connect y/o AWS Site-to-Site VPN la prioridad de las rutas se trabaja de la siguiente forma:

  • Prefijo de mayor coincidencia. Si el prefijo es igual, se continúa al punto siguiente y así consecutivamente en el orden correspondiente hasta llegar a una característica que diferencie a 2 o más rutas iguales y de esta manera poder elegir la interfaz en el router local y el siguiente salto para el reenvío correspondiente.
  • Enrutamiento estático.
  • Lista de prefijos.
  • Enrutamiento propagado. Son rutas aprendidas por AWS y pueden activarse al utilizar un Virtual Private Gateway (VGW) o Transit Gateway (TGW) para conexiones híbridas, y sigue este flujo para la diferenciar las rutas con las que trabaja:
    • Rutas propagadas con BGP con AWS Direct Connect.
    • Rutas estáticas con AWS Site-to-Site VPN.
    • Rutas propagadas con BGP con AWS SIte-to-Site VPN.

Además, el protocolo de enrutamiento dinámico BGP, internamente tienen sus diferentes filtros para elegir la mejor ruta:

  • Autonomous System (AS) con el path más corto.
  • Multi-Exit Discriminator (MED)

 

Propagación de rutas en una Amazon VPC

La propagación de rutas permite que un Virtual Private Gateway (VGW) o Transit Gateway (TGW) propague automáticamente rutas a las tablas de enrutamiento. Cada conexión incluye rutas que se pueden instalar en una o más tablas de enrutamiento. Esta propagación es por medio del protocolo de enrutamiento dinámico BGP.

Transit Gateway es una puerta de enlace utilizada para conexiones transitivas entre diferentes VPC para una comunicación privada dentro de la nube de AWS y para puntos de conexión para AWS Site-to-Site VPN o AWS Direct Connect, permitiendo usar un TGW como gateway para varias VPC. Virtual Private Gateway (VGW) es una puerta de enlace utilizada en las VPC, donde la relación es de 1 VGW por 1 VPC,  para punto de conexión de AWS Site-to-Site VPN o AWS Direct Connect.

Buenas prácticas de ruteo en Amazon VPC

Para el diseño de una tabla de enrutamiento en una Amazon VPC se recomienda tomar en cuenta las siguientes consideraciones:

  • Existe una cuota en el número de tablas de ruteo que puede crear por VPC. Existe también una cuota en el número de rutas que puede añadir por tabla de ruteo. Para obtener más información, consulte Cuotas de Amazon VPC.
  • De ser necesario, se recomienda la sumarización de rutas de ser necesario para cuidar los límites de cuotas de rutas en la tablas de enrutamiento. La sumarización de rutas es una técnica utilizada para representar en 1 ruta el resumen de 2 o más rutas que pueden abarcarse dentro del mismo rango de direcciones IP. Ejemplo:

 

Tabla 6: Ejemplo de sumarización de rutas

Decimal

Binario

Direcciones IP 192.168.10.0/24 11000000 10101000 00001010 00000000
192.168.11.0/24 11000000 10101000 00001011 00000000
192.168.12.0/25 11000000 10101000 00001100 00000000
192.168.12.128/26 11000000 10101000 00001100 10000000
192.168.12.192/28 11000000 10101000 00001100 11000000
Resultado de sumarización 192.168.8.0/21 11000000 10101000 00001000 00000000
  • Puede utilizar los procesos mencionados en este blog para priorizar el reenvío de tráfico en la red según la carga de trabajo.
  • Una subred solo puede asociarse a una tabla de ruteo a la vez. Sin embargo, puede asociar varias subredes a la misma tabla de ruteo.
  • Los bloques de CIDR para las direcciones IPv4 e IPv6 se tratan de forma individual. Por ejemplo, una ruta con un CIDR de destino de 0.0.0.0/0 no incluye de forma automática todas las direcciones IPv6. Para ello, debe crear una ruta con un CIDR de destino de ::/0 para todas las direcciones IPv6.
  • De manera predeterminada, AWS agrega una ruta local en todas las tablas de ruteo (principal o personalizada) para la comunicación dentro de la VPC de forma privada. Esta no se puede modificar o borrar.
  • Al crear una VPC, ésta cuenta de manera automática con una tabla de ruteo principal. Si una subred no está asociada de forma explícita a una tabla de enrutamiento, se utilizará la tabla de enrutamiento principal de forma predeterminada.
  • De forma predeterminada, una tabla de ruteo personalizada contiene solamente una ruta local creada, como la que se menciona en los puntos anteriores, luego el administrador es el responsable de agrega más rutas o configura la propagación según sea necesario.
  • Cada subred de su VPC debe estar asociada a una tabla de ruteo. Una subred se puede asociar de forma explícita a la tabla de ruteo personalizada o de manera implícita o explícita a la tabla de ruteo principal.
  • Utilice una tabla de enrutamiento para cada subred en una Amazon VPC, de esta manera puede manejar con mayor precisión y flexibilidad la manera en que se distribuye el tráfico dentro de su VPC.

Conclusiones y siguientes pasos

Las tablas de enrutamiento permiten la comunicación efectiva entre diferentes redes y subredes. Las buenas prácticas y conocimientos de diseño en enrutamiento permiten redireccionar el tráfico por medio de enlaces y saltos para llevar la información a su destino correspondiente, que el receptor pueda emitir su respuesta a la solicitud realizada, y redireccionar el mensaje al dispositivo que lo solicita, generando así una comunicación efectiva.

Ahora ya puede diseñar y construir Amazon VPC aplicando las buenas prácticas en sus tablas de enrutamiento.


Sobre los autores

Claudia Izquierdo es Arquitecta de Soluciones en AWS para el Sector Público. Claudia ha ayudado a múltiples entidades de gobierno y organizaciones no gubernamentales en Latinoamérica a cumplir con sus misiones y objetivos de negocio.  Claudia también es una instructora Cisco premiada mundialmente y apoya en proyectos para más mujeres en tecnología.

 

 

 

 

 

Giovanni Rodríguez es Arquitecto de Soluciones en Amazon Web Services para el Sector Público.  Giovanni ha ayudado a múltiples entidades de gobierno, organizaciones no gubernamentales, y empresas privadas, en Latinoamérica, a cumplir con sus misiones y objetivos de negocio.  Le apasionan los temas de cloud, seguridad de la información, y analítica.