Sumarizando rutas (a bajo nivel)

Fecha: 21 de septiembre del 2020

 

Escenario

 

En este laboratorio se intenta deducir como es la lógica para calcular una ruta sumarizada en base a varias rutas, cosa

que es relativamente fácil para un humano (que estudió networking).

Pero hay algunos pasos que los hacemos “automáticamente”, y quería hallar cuales son los mecanismos involucrados

para determinar la red y máscara de dicha sumarización.

 

 

 

Para ello hay que bajar bien abajo, a la lógica de Boole, y allá vamos…

 

1.- Ejemplo de sumarización “for dummies”:

 

Teniendo las rutas 192.168.200.0/24 y 192.168.216.0/24 (estos rangos son para hacer el ejercicio un poco mas simple)

debemos encontrar una ruta resumida, o sea, una única ruta que incluya a ambas.

 

Paso 1:

 

Pasamos a binario el 3er octeto, ya que los dos primeros coinciden y el cuarto es irrelevante:

 

200: 11001000

216: 11011000

 

Paso 2:

 

Buscamos bits en común, de izquierda a derecha:

 

200: 11001000

216: 11011000

 

Si bien existen mas de 3 bits en común, debemos entender que lo importante es la continuidad de los mismos, y siempre

de izquierda a derecha, tal como actúa la máscara de subred.

 

Paso 3:

 

Buscamos el valor de red y la máscara que aplica al 3er octeto:

 

110XXXXX red = 128+64+0=192 máscara = 128+64+32=224 ( o también si incluimos los tres octetos es 8+8+3=  /19).

| | |

| | 32

| 64

128

 

Por lo tanto, la red sumarizada es 192.168.192.0/19

 

De manera más gráfica:

 

 

2.- Resumen:

 

Para un humano hallar una ruta sumarizada le lleva 3 (simples) pasos.

 

3.- Entendiendo mecanismos implícitos:

 

Llamamos mecanismos implícitos a aquellos que damos por sentado como naturales o automáticos, pero que involucran muchos más

pasos de los que asumimos.

 

4.- Escenario a bajo nivel de la sumarización:

 

Dado el ejercicio anterior podemos llevarlo a mecanismos (supuestamente) más simples tales como lógica de boole (en mi caso, que no

se programar) aunque también se podría realizar o escribir un algoritmo en casi cualquier lenguaje de programación.

 

     

 

Podemos ver que es bastante simple, se realiza una comparación bit a bit y obtenemos un resultado: 1 coincide, 0 no coincide.

 

Ahora recordemos que debemos leerlo de izquierda a derecha y dejar de comparar cuando no exista una coincidencia, y luego contar

los bits que queden en 1 antes de llegar a un 0 (en este ejemplo es 111 (estos tres bits de orden superior en 1 es 224 en decimal).

 

4.1.- Leyendo bit a bit:

 

Para esto vamos a necesitar algo que compare bit a bit, se me ocurrió utilizar un shift register (es el vertical a la izquierda) con el valor

00000001 y desplazarlo a 00000010, 00000100, etc.. con esto tendremos una muestra bit a bit.

 

Podemos apreciar que el bit de 1 está conectado al bit de 128, el 2 a 64, etc...para poder contar los bits de izquierda a derecha.

 

 

Podemos ver que la secuencia en la salida del contador es 00000001 = 1 , 00000010 = 2 y 00000011 = 3                      

 

En el cuarto muestreo, al no coincidir el 4to bit con el comparador XNOR, el AND tendrá un 0 en su entrada, y por lo tanto un 0 en

su salida, esto activa un 1 en la salida de la compuerta NOT que cumple la fución de finalizar el muestreo, quedando en 3 la salida

del contador de bits coincidentes.

 

                        

                                    0   0  0  0  0  0   1  1 => 2 + 1 = 3        Lógica AND

 

4.2.- El cuadro completo:

 

Una vez que la comparación es negativa, se activan los reset de los shift register, se disparan los latch para “memorizar”

los valores obtenidos (y eventualmente copiarlos a memoria).

Podemos ver que se incluyó un temporizador (delay) para darnos tiempo entre el reset del shift register y el reset del latch

y no perder el valor obtenido. Pero a los motivos del ejercicio el resultado ya lo tenemos.

 

 

 

Por simplicidad, en este circuito no se detalla como es la carga del nuevo byte, ni de los bytes/octetos anteriores, u otra ruta

a comparar para seguir sumarizando, solo estudiamos la lógica de la comparación de rutas.

 

5.- Segundo Resumen:

 

Afortunadamente la mente entrenada hace estos cálculos casi instantáneamente. Fin del resumen.

 

6.- Sumarización en los routers:

 

Cuando estudiamos enrutamiento, por ejemplo vemos que EIGRP auto sumariza en routers que se encuentran en el borde de

segmentos de diferentes clases, pero esta sumarización es classfull (/8 para direcciones de clase A, /16 para B y /24 para C).

 

También se puede utilizar el comando summary-address en una interface determinada, pero debemos calcular y escribir un

valor de red y máscara para completar el comando.

 

 

En el gráfico podemos ver las diferencias entre la autosumarización y sumarizar “a pata”, para esto último debemos pasar por

los procesos de comparación de bits este laboratorio.

 

(2020) Come together

Rosario, Argentina