22 de agosto de 2009

Sumarización de rutas

La sumarización de rutas es una técnica empleada en enrutamiento IP avanzado que permite sintetizar múltiples rutas IP contiguas en una única ruta. De esta forma se obtienen varios beneficios:

  • Se reduce la complejidad de las tablas de enrutamiento, reduciendo la cantidad de rutas.
  • Se reduce el volumen de información de enrutamiento publicado.
  • Se aumenta la estabilidad de las tablas de ruteo ya que una ruta sumaria permanece activa mientras al menos una de las rutas sumarizadas permanezca activa.
  • Reduce los requerimientos de memoria RAM en los dispositivos ya que se reduce el tamaño de la tabla de ruteo.
  • Reduce los requerimientos de procesamiento ya que minimiza los procedimientos de actualización de rutas y se reduce la cantidad de rutas a evaluar.
Un ejemplo de rutas sumarizadas
Por ejemplo, se ha utilizado para identificar las VLANs de una sucursal de una empresa las subredes:
- 10.1.0.0/24
- 10.1.1.0/24
- 10.1.2.0/24
- 10.1.3.0/24
- 10.1.4.0/24
- 10.1.5.0/24
- 10.1.6.0/24
- 10.1.7.0/24
Por supuesto, en los dispositivos de la sucursal están presentes estas 8 rutas. Pero se desea que la sucursal publique la menor cantidad de rutas posibles hacia la casa central.
Para esto debemos sumarizar estas rutas. Estas 8 subredes pueden sumarizarse del modo más eficiente en una única ruta /21 : 10.1.0.0/21
¿Se podría sumarizar en la 10.1.0.0/16?
Si, ciertamente es posible, el problema de esta última opción es que el rango de rutas sumarizado es mucho más amplio que el las subredes existentes; si se tratara de subredes /24, esta ruta abarca cualquier subred /24 del rango 10.1.x.x.
Esta es una opción posible cuando se ha reservado ese rango de subredes para uso futuro en esa misma área. Pero no se puede utilizar cuando, por ejemplo, alguna de esas subredes está siendo utilizada en otra sucursal.

Otro ejemplo
En otras situaciones el conjunto de rutas a sumarizar no se puede encajar en una única ruta sumarizada, y requiere de una arquitectura diferente.
Por ejemplo, el conjunto de subredes de nuestra sucursal es esta vez el siguiente:
- 10.2.4.0/24
- 10.2.5.0/24
- 10.2.6.0/24
- 10.2.7.0/24
- 10.2.8.0/24
- 10.2.9.0/24
- 10.2.10.0/24
- 10.2.11.0/24
- 10.2.12.0/24
- 10.2.13.0/24
- 10.2.14.0/24
- 10.2.15.0/24
- 10.2.16.0/24
En principio, esto no es prudente sumarizarlo en la ruta 10.2.0.0/16 pues es posible que otras subredes 10.2.x.x/24 se encuentren ya asignadas en otras sucursales. En consecuenciaserá preciso aplicarse a realizar una sumarización lo más ajustada posible.
En nuestro caso podemos reducir las 13 rutas actuales a sólo 3:
La ruta 10.2.4.0/22 que sumariza 4 rutas:
- 10.2.4.0/24
- 10.2.5.0/24
- 10.2.6.0/24
- 10.2.7.0/24
La ruta 10.2.8.0/21 que sumariza 8 rutas:
- 10.2.8.0/24
- 10.2.9.0/24
- 10.2.10.0/24
- 10.2.11.0/24
- 10.2.12.0/24
- 10.2.13.0/24
- 10.2.14.0/24
- 10.2.15.0/24
Y la ruta 10.2.16.0/24, que no puede asociarse con ninguna de las demás.

Reglas prácticas a tener presentes
Por supuesto que la mejor técnica para definir rutas sumarizadas es visualizar las rutas a considerar en formato binario para detectar patrones binarios comunes y a partir de allí definir las rutas sumarias.
Sin embargo, teniendo presente que la sumarización parte del principio de utilizar máscaras de subred más cortas, y que cada posición de la máscara de subred representa una potencia de 2, podemos elaborar algunas reglas prácticas:

  • Cada ruta sumarizada comprende el equivalente a una potencia de 2 respecto de las rutas originales, es decir: 2, 4, 8, etc.
  • El rango de valores decimales sumarizados siempres se inicia en un múltiplo de una potencia de 2.
  • El rango mismo sumarizado no puede superar la potencia de 2 de la que es múltiplo el inicio.
Creo que es más fácil de comprenderlo a partir del análisis del segundo ejemplo:

  • Se trata de 13 subredes /24. Por lo tanto no se pueden sumarizar en una única ruta. Cada ruta sumarizada representa un conjunto de subredes equivalente a una potencia de 2.
  • El valor decimal inicial es 4 (de 10.2.4.0) que es una potencia de 2; por lo tanto, a partir de él podemos sumarizar un máximo de 4 subredes (2 al cuadrado).
  • Para sumarizar 4 subredes, debemos correr la máscara de subred 2 bits hacia la izquierda.
  • Esta primera ruta sumaria es entonces 10.2.4.0/22, y comprende desde la subred 10.2.4.0 a la 10.2.7.0/24.
  • El valor inicial del remanente que nos queda es 8 (de 10.2.8.0), que también es una potencia de 2; a partir de él podemos sumarizar un máximo de 8 subredes (2 al cubo).
  • Para sumarizar 8 subredes, debemos correr la máscara de subred 3 bits hacia la izquierda.
  • En consecuencia la segunda ruta sumaria es 10.2.8.0/21, y comprende desde la subred 10.2.8.0 a la 10.2.15.0/24.
¿Cuándo se puede sumarizar todo en una sola ruta?
Para poder sumarizar en una única ruta, el conjunto de redes o subredes a sumarizar debe reunir una serie de condiciones:

  • El conjunto de direcciones de red a sumarizar, en su octeto crítico, debe iniciar en un valor decimal que sea múltiplo de una potencia de 2.
    Por ejemplo en 10.10.72.0/24, 72 es múltiplo de 8 que es una potencia de 2.
  • La amplitud del rango de direcciones a sumarizar debe ser igual a esa potencia de 2.
    En nuestro ejemplo, de 10.10.72.0/24 hasta 10.10.79.0/24 (ocho subredes).
  • Si se cumplen ambas condiciones, la ruta sumarizada será igual a la dirección de subred inicial del rango, con una máscara de subred igual a la máscara inicial menos el exponente de la potencia de 2 en juego.
    En nuestro ejemplo, 10.10.72.0/21.
Recursos en línea:

Bibliografía sugerida:
Cuadernillo: Subredes IPv4 - Oscar Gerometta
¿Tenés alguna información o comentario para aportar en este tema....?
Perfecto!!!! agregá un comentario con el detalle.
Muchas gracias.
Oscar Gerometta

23 comentarios:

  1. Hola, Me gusto bastante su blog, explica muy bien.. pero en el segundo ejemplo que dio no puedo deducir como saca una mascara /22 para la sumarización, ojala pudiera explicarme, yo intento de esta forma no se si será la correpta

    - 10.2.4.0/24 00001010.00000010.00000-100.00000000
    - 10.2.5.0/24 00001010.00000010.00000-101.00000000 10.2.4.0 /21
    - 10.2.6.0/24 00001010.00000010.00000-110.00000000
    - 10.2.7.0/24 00001010.00000010.00000-111.00000000

    ResponderEliminar
  2. Alex.
    Dos puntos a considerar en principio. Si necesito sumarizar 4 subredes /24, para eso necesito sólo 2 bits: 00, 01, 10, 11.
    Si tomo 3 bits, entonces las subredes /24 que quedan comprendidas son 8: las 4 que estás buscando sumarizar y otras 4 más que están fuera del rango.
    En el ejemplo, al sumarizar todo en la 10.2.4.0/21, esta ruta sumarizada comprende las rutas a las subredes 10.2.0.0/24 a la 10.2.7.0/24.
    Mirando el tercer octeto solamente: 00000xxx comprende desde 00000000 (0) hasta 00000111 (7).

    ResponderEliminar
  3. Que tal Oscar, me llamo Cesar, una duda, en el segundo ejemplo, son 13 subredes, tu sumarizaste empezando por el 2, luego el 4 y al final la ultima subred se quedo igual.

    Yo pense en tomar el maximo numero de subredes, despues el menor y asi sucesivamente, en este caso, empezaria por las primeras 8 ( seria una potencia de 3 ) en este caso la mascara seria 21 ( /21 ).

    Despues las siguientes 4 ( seria una potencia de 2 ) en este caso la mascara seria 22 ( /22 ) y la ultima subred queda sola.

    Que te parece eso?? Puedo hacerlo?? O tengo que seguir el orden que mencionaste de empezar primero con el 2??

    Te mando un saludo desde Mexico...

    ResponderEliminar
  4. César.
    Para comprender la sumarización es preciso pensar en binarios y analizar desde ese punto de vista.
    Para sumarizar debes buscar patrones de unos y ceros que sean coincidentes. En el ejemplo que se plantea, 10.2.4.0/24 hasta 10.2.7.0/24 comparten el patrón 000001xx en el tercer octeto, mientras que 10.2.8.0/24 a 10.2.15.0/24 comparten el patrón 00001xxx.
    Entre 10.2.4.0/24 y 10.2.15.0/24, el único patrón común es 0000xxxx que incluye las subredes 10.2.0.0/24 a 10.2.3.0/24 que no están incluidas en el rango de direcciones enunciado.
    Espero haber sido claro.

    ResponderEliminar
  5. Muchas gracias por dedicar tiempo a este tema.

    ResponderEliminar
  6. megustaron los ejemplos me ayudaron a comprender mejor la sumarizacion

    ResponderEliminar
  7. Hola Oscar, me llamo leonardo, me pregunta es:

    si puedo sumarizar direcciones sin clase: 192.168.10.0/22

    192.168.10.0 hasta 192.168.16.0 subred 10.subred 12.subred 14.subred 16.

    como haría??

    ResponderEliminar
    Respuestas
    1. Disculpa pero no entiendo tu pregunta.
      192.168.10.0 16.0, etc. no son subredes, sino redes clase C.
      Tengo la impresión que estás preguntando por subredes. Pero la sumarización no es división en subredes sino unificación de múltiples rutas en una sola de prefijo más corto.

      Eliminar
  8. Ok tienes razon Oscar,, te plantee mal la pregunta, me referia a las subredes. Gracias por tu respuesta.

    muy interesante tu blog.

    ResponderEliminar
  9. Tengo una duda, sumarización es lo mismo que CIDR? No veo prácticamente la diferencia.
    Saludos, y felicidades por el blog.

    ResponderEliminar
    Respuestas
    1. Buena pregunta Luis.
      Pueden parecer lo mismo, porque muchas veces coinciden operativamente, pero son 2 conceptos diferentes.
      CIDR es una técnica de enrutamiento que no considera las clases de IP. CIDR es lo que también llamamos enrutamiento classless. Es decir, una forma de procesar la búsqueda de la red de destino que considera la máscara de subred y no la clase de la dirección IP.
      Sumarización de rutas, en cambio, es un procedimiento que, cuando es posible aplicarlo, permite reducir el tamaño de las tablas de enrutamiento. Puede haber sumarización aún dentro de una red, como por ejemplo, cuando en una red clase B sumarizás varias subredes /24 en una único ruta /20.
      Por supuesto que cuando se sumarizan rutas a redes completas, estás más allá del límite de la clase y entonces CIDR y sumarización de rutas coinciden.
      ¿Se entiende la diferencia?

      Eliminar
    2. Si, ahora me quedan más claros los conceptos, muchas gracias! saludos!

      Eliminar
  10. Hola soy Mauricio a ver si comprendi bien si tuviera las siguientes subredes
    192.168.1.0/24
    a
    192.168.24.0/24
    Es correcto la sumarizacion en 3 rutas de la siguiente manera?
    192.168.1.0/20
    192.168.16.0/21
    192.168.24.0/24
    Muy bueno el el aporte!

    ResponderEliminar
  11. Si Mauricio, parece que comprendiste bien :)
    Sólo debés tener en cuenta que estás sumarizando 25 redes /24. Con la ruta /20 sumarizás 16, con la /21 sumarizás 8 más y finalmente agregás la número 25. Pero en la primera estás incluyendo la 192.168.0.0/24, que no está declarada en tu propuesta inicial.

    ResponderEliminar
  12. Ok muchísimas gracias!
    En el caso de que fuera necesario no incluir 192.168.0.0/24 cual sería el procedimiento para lograr esto?
    Te comento que fue mi inquietud al momento de resolver el ejercicio pero supuse que al poner 192.168.1.0/20 no incluía a la red 192.168.0.0/24.
    Desde ya muchas gracias. Saludos!

    ResponderEliminar
    Respuestas
    1. En este caso, no hay un "comando" para excluir una red de un grupo más amplio. Simplemente lo que se debiera hacer en este caso es dejar una ruta a la 192.168.1.0/24 sola, agrupar 2 en la 192.168.2.0/23 y 4 más en la 192.168.4.0/22.

      Eliminar
  13. Si tengo una ruta sumarizada 192.168.176.0/21 como puedo saber de que redes viene??

    ResponderEliminar
    Respuestas
    1. Haciendo un simple cálculo de subred.
      192.168.176.0/21 incluye todas las direcciones IP desde la 192.168.176.0 hasta la 192.168.184.0.
      Ahora bien, si lo que quieres es saber redes específicas, eso no se puede saber simplemente a partir de un prefijo, sino que debieras conocer la asignación de direcciones IP de la red.

      Eliminar
  14. Hola.

    Y si la mascara es distinta?????

    172.200.0.0/22
    172.200.4.0/22
    172.200.8.0/22
    172.200.12.0/23
    172.200.12.0/23
    172.200.14.0/24
    172.200.15.0/25
    172.200.15.128/30
    172.200.15.132/30

    ResponderEliminar
    Respuestas
    1. Pues si las máscaras son diferentes, lo mejor es volver a los orígenes, pasar los octetos críticos (en tu caso el tercero) a binarios, y bucar el patrón de 1s y 0s que todas las rutas tienen en común.

      Eliminar
  15. Es decir sería la 172.200.0.0 /20, con esa tendría un resumen para toda la red??

    Muy bueno el blog, me ha servido mucho!!!!

    ResponderEliminar

Gracias por tu comentario.
En este blog los comentarios están moderados, por lo que su publicación está pendiente hasta la revisión del mismo.