domingo, 25 de abril de 2010

Cálculo de la latencia

Existen 3 factores en el cálculo de la latencia:
  1. Propagación de la señal
  2. Utilización de enlaces
  3. Tiempo de Serialización.
Propagación de la señal

Se refiere al tiempo que toma a una señal viajar de un punto A a un punto B, se puede considerar que la velocidad de una señal en una fibra óptica es de:
  • (1) v=d/t
  • (2) t = d / v
La velocidad teórica de la luz es C=300,000,000 m/s, la velocidad real está afectada por el índice de refracción del material en que se propaga, en este caso el de la  fibra es N=1.6:
  • (3) Velocidad real = C/1.6 = 187.5E8m/s
Tomando el ejemplo de las ciudades de Tijuana y Mérida las cuales representan los extremos del territorio nacional, la distancia entre estas ciudades a través de una red de FO la cual típicamente es siguiendo las carreteras entre las ciudades, y tocando las principales ciudades del territorio nacional. (no necesariamente el camino mas corto entre ambas ciudades).  La longitud de FO en la red entre esta ciudades es de 6587Km.

El tiempo de propagación para esta distancia es de :
  • 6,587,000 m / 187.5 E8 m/s = 0.03513 s
El round-trip es dos veces ese tiempo
  • Tiempo de propagación round trip Mérida – Tijuana = 70.26ms
Utilización de enlaces

Es el tiempo que le toma a un paquete de datos moverse a través de un enlace, en específico se refiere a los enlaces de acceso local. Este tiempo se calcula dividiendo la longitud en bits del paquete entre el ancho de banda del acceso.  Finalmente se multiplica por 4 ya que se considera round trip de una localidad a otra localidad.

Para el caso de un acceso a 64Kbps, se emplea una fragmentación bajo FRF .12 del paquete a 100bytes.
Con los datos anteriores tenemos:
  • 100bytes = 800bits
  • 800 bits / 64000 bits/seg = 0.0125 seg X 4 = 50mseg
Tiempo de serialización

Es el tiempo empleado por los equipos para el procesamiento de los paquetes, este tiempo es menor a los milisegundos y típicamente esta entre los 30 y 40 microsegundos , para este ejemplo tomaremos 35 microsegundos.

Las mejores practicas de diseño de una red de carrier indican tener al menos una capa de acceso y posteriormente una de Core, esto significa que un paquete tiene que pasar por lo menos por 4 equipos en su recorrido por la red , y si consideramos además los equipos CPE, se tendrían 6 equipos para una trayectoria en un sentido y 12 equipos considerando round trip.

De acuerdo a las consideraciones anteriores, el tiempo de serialización sería:

12 X 35 E-6 = 0.042 mseg como se podrá inferir este tiempo es despreciable del cálculo.

Latencia total calculada entre Mérida y Tijuana = 70.26ms + 50 ms =120.26 ms

La clase de servicio critica ( Conversacionales) es para tráfico de Voz sobre IP. De acuerdo a la recomendación de la ITUT G.114, el tiempo de latencia máximo en un sentido para estos servicios es de 150ms. ( 300ms round trip)

Para una mejor idea, un mapa de Mérida a Tijuana:


View Tijuana Mérida in a larger map

lunes, 19 de abril de 2010

cita

Technology is dominated by two types of people: those who understand what they do not manage, and those who manage what they do not understand.
La tecnología es dominada por dos tipos de personas: aquellos que entienden lo que no manejan, y aquellos que manejan lo que no entienden.
Archibald Putt (ley de Putt 1976)

Ejemplo de RIP (Packet Tracer)

En este ejemplo de Packet Tracer podemos ver una red corriendo RIP.
Hay que hacer un tracert desde una de las PC hacia otro host y cambiar la topología de la red apagando algunos routers o interfases, así veremos como la trayectoria hacia el destino es modificada.



más ejemplos

Routing Information Protocol (RIP)

RIP es un verdadero protocolo de vector-distancia; envía su tabla de ruteo completa por cada interfase activa cada 30 segundos, y sólo usa el número de saltos para determinar la mejor ruta hacia una red, con un conteo máximo de 15 saltos por default, declarando el destino inalcanzable al 16o. salto.

Trabaja bien en redes pequeñas, pero en redes grandes con enlaces WAN de anchos de banda pequeños es ineficiente.

RIP versión 1 usa sólo ruteo por clases (classful routing), es decir que todos los  dispositivos en la red deben usar la misma máscara de red; ésto se debe a que RIPv1 no envía las actualizaciones con las máscaras de red incluídas. RIP versión 2 tiene algo llamado prefijos de ruteo (prefix routing) y envía las máscaras de red en las actualizaciones de rutas. Éste si es classless routing.

RIP usa 4 contadores o timers para regular su desempeño:
  • Route update timer, es el contador que espera antes de enviar las actualizaciones de rutas, por default 30 segundos.
  • Route invalid timer, es el contador que lleva el tiempo que debe pasar antes de que un router determine que una ruta es inválida, 180 segundos por default. Se llegará a esta conclusión si no hay una actualización para esa ruta particular durante este periodo. Después de ese tiempo el router envía un anuncio a todos sus vecinos para que sepan que la ruta es inválida.
  • Holddown timer, es otro contadorde tiempo durante el cual se suprime la información de ruteo. Un router entra en un estado de holddown cuando una actualización nos indica que una ruta es inalcanzable. Este estado se mantiene hasta que una actualización nos avisa de una ruta con mejor métrica o hasta que expira el tiempo del holddown timer, que por default es de 180 segundos.
  • Route flush timer, fija el tiempo que pasa entre que se vuelve inválida una ruta y su retiro de la tabla de ruteo, por default son 240 segundos. Antes de quitarla de la tabla, el router les informa a los vecinos del retiro inminente de la ruta. El valor del contador Route invalid timer debe ser menor que el route flush timer para dar tiempo a que se anuncie entre los vecinos la actualización de la tabla de ruteo local.

cita

Los filósofos se han limitado a interpretar el mundo  de distintos modos; de lo que se trata es de transformarlo.
Karl Marx

Nadie que confía en sí, envidia la virtud del otro.
Marco Tulio Cicerón

Libros, caminos y días dan al hombre sabiduría."
Proverbio Árabe

Sólo una persona mediocre está siempre en su mejor momento."
William Somerset Maugham
Some men are born mediocre, some men achieve mediocrity, and some men have mediocrity thrust upon them.
Joseph Heller "Catch-22"

Oregano is the spice of life.
Henry J. Tillman

Good teaching is one-fourth preparation and three-fourths theater.
Gail Godwin

To see what is in front of one's nose needs a constant struggle.
George Orwell

Protocolos de Vector-Distancia

Como ya vimos, un protocolo como RIP basado en los saltos anuncia sus vecinos toda su tabla de ruteo, y no conoce de los anchos de banda o estado real de los enlaces en la red, así que, el siguiente escenario nos podría presentar un problema:
RIP

supongamos que hay una red más allá de nuestro router E a la que llamaremos T, a la cual lógicamente todos nuestros routers llegan por E; pero ese enlace falla y T es inalcanzable.

Como en RIP todos envían sus tablas de ruteo; A y B anunciarán que conocen la red remota T a través de C, y C anunciará que la conoce a través de D, mientras que D anunciará que la conoce por E, pero E anunciará que no está disponible. En ese momento D combinará su tabla con el anuncio, pero esperaremos al siguiente anuncio de rutas para que C sepa que no hay una ruta hacia T; y en el momento en que C reciba esa información, A hará el anuncio de que conoce una ruta hacia T a través de C, que le ha anunciado que no es alcanzable, pero que podría utilizar B para alcanzarla, por lo que ahora, todos conocerán a T a través de A que hizo un anuncio de ruta válida.

Esta situación es un loop de ruteo, caímos en una iteración infinita de resolución de una ruta. Para evitar ésto, RIP tiene un máximo de saltos, en este caso 15 saltos, después de lo cual declara el destino inalcanzable, es decir, declararemos que T está down luego de pasar por 15 routers en el proceso de búsqueda. Además, este conteo máximo de saltos nos ayuda a determinar cuanto nos toma declarar una ruta inválida o cuestionable.

Otra posible solución es el algoritmo Split-Horizon (horizonte dividido) , que reduce la información incorrecta y la carga de tráfico por información de ruteo al aplicar una regla simple: la información de ruteo no puede regresar por la dirección en que fue recibida. Es decir, el protocolo diferenciará por que interfase aprendió una ruta, y no anunciará la misma ruta por esa interfase, así evitaremos que el router A le envíe rutas a B que aprendió de B.

Otra manera de evitar las actualizaciones de rutas inconsistentes y evitar loops de ruteo es envenenar las rutas (Route Poisoning). Por ejemplo, cuando T se va down, el router E comienza a anunciar que la ruta hacia T es de 16 saltos (inalcanzable). Así evitamos que D y los demás subsecuentemente, anuncien una ruta inválida, y se asegura mediante el anuncio de una ruta Poison Reverse que D enviará a E, así sabremos que todos los routers del segmento conocen la ruta inalcanzable.

Un holddown es un tiempo de espera antes de enviar un anuncio regular de ruteo para una ruta que ha estado cambiando de estado (flapping); por ejemplo un enlace serial que pierde conectividad y regresa. Si no hay una manera de estabilizar dicho enlace la red no podrá converger y podría venirse abajo completa. Con el holddown nos aseguramos de que los cambios de estado no sean muy rápidos, dando tiempo para que la ruta afectada regrese o que la red se estabilice antes de volver a usar la ruta afectada. También es una manera de restringir a los routers por un espacio de tiempo los cambios que podrían afectar a rutas que se caban de retirar. Así evitamos que rutas no operativas se restablezcan en las tablas de otros routers.

Protocolos de Ruteo, las bases

Como ya vimos, el ruteo dinámico nos provee información de las redes que están conectadas en cada router de nuestra red, y está basado en distintos parámetros, como la distancia administrativa, el ancho de banda, el número de saltos, etc.

La distancia administrativa (AD) es usada para calificar la confianza que tenemos en la información de ruteo, siendo 0 lo mejor y 255 una ruta que nunca sería utilizada, por eso es que una red directamente conectada aparece en la tabla de ruteo con una AD de 0.

Cuando el router recibe dos anuncios de la misma red por rutas diferentes, lo primero que se revisará es la AD, y si una de las rutas tiene una AD menor, esa será colocada en la tabla de ruteo. En caso de que la AD de ambas sea igual, entonces se determinará la mejor ruta por el número de saltos o el ancho de banda de los enlaces; y si en ambas rutas las métricas son iguales, entonces el router usará ambas rutas, balanceando la carga entre ambas.

Las rutas directamente conectadas son las que tienen mayor prioridad, después las rutas estáticas, y luego las aprendidas por medio de un protocolo de ruteo (tabla de distancias administrativas). Cuando una tabla de ruteo contiene información de las rutas hacia cada una de las redes existentes, entonces se dice que alcanzamos la convergencia de la red.

Hay 3 clases de protocolos de ruteo:
  • Vector-Distancia (distance-vector), encuentran la mejor ruta a una red en base a la distancia. Cada vez que un paquete pasa por un router (los llamados saltos) la métrica hacia esa red se incrementa. La ruta con menos saltos hacia esa red es la mejor. El vector nos indica la dirección hacia la red remota. RIP e IGRP son protocolos de Vector-Distancia y envían la tabla de ruteo completa a los vecinos directamente conectados. Es importante notar que no toman en cuenta el ancho de banda, por lo que una ruta con menos saltos, pero un ancho de banda muy pequeño podría ser preferida sobre otra más "óptima"
  • Estado del Enlace (link state), o también llamados Protocolos de la ruta más corta primero (Open Shortest Path First), crean 3 tablas separadas; una de los vecinos directamente conectados, una que determina la topología de la red completa, y una última que es utilizada como tabla de ruteo. Estos protocolos dan más información de la red que un protocolo de Vector-Distancia. OSPF es un protocolo basado en Estado del Enlace y hace que un router envíe información de sus propios enlaces a otros routers en la red.
  • Protocolos híbridos, que son una mezcla de los protocolos Vector-Distancia y Estado del Enlace, por ejemplo EIGRP.
La decisión de que tipo de protocolo usar debe ser tomada en cada caso particular de acuerdo a las necesidades de cada red; pero conocer las ventajas y debilidades de cada protocolo nos ayudará a hacer una excelente decisión que cubra nuestras necesidades.

Ruteo

Un router se encarga de reenviar paquetes entre redes, eso se llama ruteo; sin embargo, por si solo conoce únicamente las redes directamente conectadas a él, no entiende de hosts, sólo de redes, y cuando un host conectado en una red que está en la interfase de un router tiene un paquete para una red desconocida, hace lo siguiente:

El host crea el paquete con la dirección IP de destino y de origen, pone la información que enviará y lo manda a su capa de enlace de datos, donde se coloca la dirección MAC de la tarjeta ethernet del host y la dirección MAC de nuestro Default Gateway, usualmente la interfase del router.

Esto ocurre porque las direcciones MAC son locales y no pueden salir de un dominio de broadcast, por eso, aunque la dirección de destino sea externa a nuestra red local, la MAC address utilizada para transportar ese frame es la del router. Cuando el router recibe el frame lo procesa y ve que la MAC address de destino es la de su interfase, por lo que quita la información capa 2 y procesa el contenido, un paquete IP, que tiene una dirección de destino que no es suya, y podría o no estar en una red que conoce el router.

El router procesa el paquete IP y revisa si conoce la red de destino en su tabla de ruteo, donde habrá una lista de rutas hacia las redes que conoce; Si el router conoce esa red como directamente conectada, crea un nuevo frame y cambia la MAC de origen por la de su interfase de salida, y pone la MAC de destino del host indicado; en caso de no conocerla directamente conectada, elabora el nuevo frame y lo manda a través de la intefase que está conectada en la dirección que la tabla de ruteo le indica, y hará un forward del paquete.

Podría ser el caso que no tenga una ruta espécifica para la red que busca, pero si hay una ruta de default o una red de default, el router entregará todo el tráfico cuya ruta es desconocida a esa ruta o red de default. En caso de no tener una ruta de default y de no concoer una ruta hacia el destino, el router crea un nuevo paquete IP, lo encapsula en un frame y lo reenvía de regreso por la interfase de donde llegó el paquete con la respuesta de "destino inalcanzable"

Ahora, es importante saber que hay dos tipos de protocolos, de ruteo y ruteables.
Generalmente usamos IP que es un protocolo ruteable, para encargarnos del direccionamiento entre las redes; y usamos BGP, OSFP, RIPv1 y RIPv2, IGRP, EIGRP, etc. como protocolos de ruteo.

Un protocolo de ruteo nos sirve para anunciar entre los distintos routers de la red las redes que cada quien conoce, y de esa manera construir rutas desde todos los puntos de la red hacia esas redes.

Hay 3 tipos de ruteo:
  • Ruteo Estático
  • Ruteo por Default
  • Ruteo Dinámico
En el ruteo estático, nosotros administramos las rutas y las escribimos directamente en cada router, lo que es tedioso y difícil de mantener cuando la red es de un tamaño considerable.

En el ruteo por default, podría o no haber rutas estáticas o dinámicas en mi tabla de ruteo, pero todo aquel destino desconocido será alcanzado a través de una ruta de salida por default; en el caso de RIP también se anuncian en la red las rutas por default.

En el ruteo dinámico, donde usamos los protocolos de ruteo, cada router anuncia las redes que conoce y les da una distancia administrativa y un costo, aunque no todos los protocolos asignan o usan las mismas variables.

En general, las distancias administrativas son tomadas por el router como en la tabla de nuestro post anterior, a menos que especifiquemos lo contrario; por ejemplo, podríamos configurar una ruta por default y darle una distancia adminsitrativa de 130, y luego configurar RIP, cuyas rutas tendrán un distancia administrativa de 120, siendo sus rutas utilizadas preferentemente sobre las rutas estáticas; sin embargo, si en determinado momento RIP no tiene una ruta hacia una red, nuestra ruta estática sería utilizada.
Ruteo

Podemos ver estos conceptos en las topologías de Packet Tracer que puedes descargar:
  • En el primer ejemplo tenemos la topología de 3 routers, cada uno con su LAN y con las interfases configuradas, pero sin ruteo, 
  • y en el segundo ejemplo tenemos la misma red, pero con rutas de default en los routers de los extremos y rutas estáticas en el central

sábado, 10 de abril de 2010

¿Cómo funciona el balanceo de carga?

El load balancing es una función del IOS, y está disponible en todas las plataformas de ruteo. Es parte del proceso de forwarding y se activa autmáticamente si la tabla de ruteo tiene trayectorias múltiples hacia el destino. Se basa en los protocolos estándar de ruteo, tales como RIP, RIPv2,EIGRP, IGRP, OSPF; o se deriva de las rutas estáticas y los mecanismos de reenvío de paquetes configurados. Le permite a un router usar múltiples caminos a un destino cuando reenvía paquetes.

Cuando un router conoce múltiples rutas a un destino por medio de procesos de ruteo, instala la ruta con la distancia administrativa más baja en la tabla de ruteo.
Distancias Administrativas por Default
Connected:           0
Static:                  1
eBGP:                 20
EIGRP (internal): 90
IGRP:               100
OSPF:              110
IS-IS:               115
RIP:                 120
EIGRP (external): 170
iBGP:               200
EIGRP summary route: 5

A veces el router debe seleccionar una ruta entre vairas que aprendió por el mismo proceso con la misma distancia administrativa. En ese caso, escoge cual tiene el menor costo hacia el destino. Cada proceso de ruteo calcula sus costos diferente y a veces se requiere manipularlos para lograr el balanceo.

Si el router recibe varias trayectorias con la misma distancia administrativa y costo hacia un destino, el balanceo de cargas puede ocurrir. El número de trayectorias usadas está limitado por el número de entradas que el protocolo de ruteo pone en la tabla de ruteo. Cuatro entradas en el default in IOS para la mayoría de los protocolos de ruteo, a excepción de BGP, donde el default es una entrada. El máximo a configurar es 6.

Los procesos de ruteo de IGRP e EIGRP también soportan trayectorias múltiples balanceo de cargas con costos distintos. Usamos el comando maximum-paths para determinar el número de rutas que puede ser instalado basado en el valor configurado en el protocolo. Si fijamos la tabla de ruteo a una entrada, se desactiva el balanceo de cargas. El proceso de balanceo entre trayectorias con costos distintos se llama varianza (variance)

Podemos usar el comando show ip route para encontrar rutas con costos iguales; en este ejemplo su salida tiene dos bloques, cada uno es una ruta. El asterisco corresponde a la ruta activa que es usada para tráfico nuevo, es decir, un único paquete o un flujo entero de datos, dependiendo del tipo de conmutación configurada.
  • Para el balanceo por process-switching, el balanceo de cargas está basado por paquete y el asterisco señala la interfase sobre la que se enviará el próximo paquete.
  • Para el balanceo por fast-switching, que es efectuado basado en los destino, el asterisco señala la interfase sobre la que se enviará el siguiente flujo de datos basados en su destino.
La posición del asterisco se mantiene rotando entre las trayectorias de costo igual cada vez que un paquete o flujo es enviado.
M2515-B# show ip route 1.0.0.0
Routing entry for 1.0.0.0/8
Known via "rip", distance 120, metric 1
Redistributing via rip
Advertised by rip (self originated)
Last update from 192.168.75.7 on Serial1, 00:00:00 ago
Routing Descriptor Blocks:
* 192.168.57.7, from 192.168.57.7, 00:00:18 ago, via Serial0
Route metric is 1, traffic share count is 1
192.168.75.7, from 192.168.75.7, 00:00:00 ago, via Serial1
Route metric is 1, traffic share count is 1

Podemos configurar el balanceo para que trabaje por destino o por paquete.

miércoles, 7 de abril de 2010

Cita

O Lord, help me to be pure, but not yet.
Oh Señor, ayúdame a ser puro, pero no todavía.
Saint Augustine (354 AD - 430 AD)

Language is the source of misunderstandings.
El lenguaje es la fuente de los malentendidos.
Antoine de Saint-Exupery (1900 - 1944)