Conceptos básicos de QOS - Calidad De Servicio.
Como todos podrán imaginar vivimos en un mundo globalizado donde cada día el Internet se vuelve más importante. Esto es producto de lo que los expertos denominan "convergencia": los sistemas se vuelven cada vez más integrales y entrelazados, compartiendo el mismo medio para su distribución y consumo.
Antes existía una red swicheada por circuito para el teléfono; una red del tipo broadcasted para la TV; una para la radio, una para el sistema de seguridad, otra para el Internet mismo... etc. Hoy en día todos estos servicios se están entregando y distribuyendo a través de una sola red del tipo "packet-switched-network".
Esto es algo genial desde el punto de vista económico, pues una misma red puede usarse para cualquier cosa, abaratando los costos de distribución de los servicios. Recuerden que antes para llamar a cualquier parte del mundo teníamos diferentes tarifas. Hoy en día eso no existe, pues usando whatsapp podemos llamar libre de costo a cualquier lugar.
Esta integración o convergencia ha traído que todos estos servicios se "jalen los moños" por los recursos de la red. Todos quieren pasar al mismo tiempo y exigen cada día más capacidad de la red, la cual, obviamente, no es ilimitada.
Esto ha planteado un problema, un dolor de cabeza para todos los administradores de red. Tienen que lidiar con los usuarios, como si fueran policías de tránsito, para darles paso, detenerlos y hasta "aniquilarlos". Es algo elemental: una ambulancia (routing o protocol data) no puede tener la misma prioridad que otro usuario que "va al parque o al cine a ver una película" (descargar un archivo de 8 tb).
Dicho esto, está claro que debemos implementar algún sistema que nos permita darle prioridad en el tráfico a las "ambulancias" o "bomberos" , frente a otros que pueden esperar.
A este conjunto de herramientas, sistemas y técnicas se le ha llamado QOS, que en inglés no es más que Quality Of Service o Calidad De Servicio. Inicialmente fue una herramienta no tan compleja, pero debido a lo explicado anteriormente, se ha convertido en una verdadera ciencia del mundo del networking.
QOS no aumenta la capacidad de manejo de tráfico de una carretera. El rol principal de este conjunto de técnicas es darle paso a los paquetes más importantes. ¿Quién decide qué es importante?: el administrador.
Congestión y QOS, ¿Qué significan estos términos?
Congestión: situación en la que la cantidad de datos que quiere pasar por un dispositivo o medio sobrepasa su capacidad. Una congestión similar es la que ocurre en las carreteras de alto tráfico en horas pico. Todos los vehículos quieren pasar en un mismo lapso de tiempo provocando taponamientos.
Sin embargo, a diferencia del tráfico vehicular donde no puedes simplemente eliminar a un vehículo para hacerle espacio a una ambulancia, por ejemplo, en una red tenemos la facilidad de eliminar a los que están provocando el embotellamiento. El sacrificio de algunos ayuda al bienestar común. Eso es QOS.
Repito: QOS no aumenta la capacidad de datos que puedas transferir. Simplemente le da prioridad a algunos a costa de sacrificar a otros. Al igual que en una carretera los conductores se echan a un lado para dejar pasar los servicios de emergencia: eso es Calidad De Servicio
Tipos de retardo
Desde que un paquete ingresa en la interfaz de un router existen innumerables motivos por los cuales este toma un tiempo en salir y en llegar a su destino. ?Dónde es que se pierde el tiempo a la hora de transferir un paquete de datos de un lugar A a un lugar B? Veamos:
Retardo por procesamiento: Tiempo que le toma a un router tomar un paquete de una interfaz, examinarlo, procesarlo y colocarlo en la cola de salida de otra (o la misma) interfaz.
Retardo de cola: Tiempo que toma en salir un paquete que está en la cola de salida de la interfaz.
Retardo de serialización: Tiempo que le toma al hardware del router colocar bit a bit el paquete en el medio. Tiempo que le toma al router colocar la trama en el medio de transmisión (cobre, fibra, etc)
Retardo de transmisión: Tiempo que le toma al paquete llegar a su próximo salto.
¿Cómo funciona un QOS?
La calidad de servicio puede ser dividida en dos partes principales. Una de ellas es la operación local de los datos y otra es la señalización que en leyer 3 le podemos llamar marcado de paquetes (mangle). Estos son sus dos componentes principales. No importa la marca o el modelo del dispositivo usado para aplicar estos dos componentes.
Uno de los mecanismos más básicos y antiguos de controlar la congestión es usar el llamado "tail drop" que consiste en descargar los paquetes cuando la cola de la interfaz está llena. Es como un restaurante adonde van llegando y saliendo personas.
Si entran más de las que salen llegará un momento en que se llene y entonces el "portero" dirá a los nuevos que van llegando: "No pueden entrar. Está full".
Este modo de operación plantea un problema y es que lo más importante puede que no llegue a su destino en el momento deseado y si llega tarde pues ya no es necesario. Imagina que mandas a buscar una pizza y el deliveri se tarda tanto en llegar por la congestión que termina llegando al otro día. ¿Necesitas la pizza? Obviamente ya no.
Lo mismo pasa con los paquetes de voz que llegan demasiado tarde. Deben llegar con un límite de tiempo determinado para que estos pueden ser útiles, de lo contrario solo servirán para cargar más la aplicación que lo necesitaba, pues igual debe procesarlo, solo que al darse cuenta que llegó muy tarde simplemente lo descarta (leyer 7 drop).
Otro problema del taildrop es la sincronización global TCP de las conexiones. De este tema podemos pasar un mes discutiendo sin llegar a comprenderlo del todo. Creo que es mejor que hagas un googleado que te dará un sinfín de informaciones al respecto.
Operación y Marcado
Estos son los dos pilares del QOS. Su modo de operación, que en concepto es bastante fácil de comprender, y el marcado o señalización, que consiste en pasar la información de un router a otro sobre la importancia de un paquete.
Valor TOS (DSCP)
Todos los routeres que pertenecen a una misma administración deben de entrar en un acuerdo donde el tratamiento a cada tipo de paquete marcado debe ser (no necesariamente) el mismo. Al menos la identificación debe ser la misma para que se le haga un tratamiento específico dependiendo de su marca.
Algo importante es que esta marca no es del tipo de marca "mangle" , que no sale del router. Este es un tipo de marca que se hace modificando el contenido del paquete y del cual voy a hablar en un artículo más detallado sobre ese tema en específico. Este garantiza un tratamiento similar en cada router durante sus saltos entre hops.
El modo de operación también merece un artículo separado debido a su complejidad. El algoritmo usado actualmente se le llama WRED el cual es el encargado de mantener "a ralla" a todo el que de alguna manera quiera ahogar el medio con datos.
Este algoritmo es independiente de la marca o modelo del router. Todos funcionan de forma similar y se le aplican los mismos conceptos teóricos. WRED es como un policía de tráfico que se pone bastante nervioso cuando nota que la intersección donde él está trabajando se congestiona.
Cuando se congestiona se vuelve implacable y empieza a aniquilar a todo el que se quiera pasar de listo a una velocidad mayor de la acordada. Al controlar la cantidad de paquetes caídos, los protocolos de las capas superiores y sus sistemas de control de congestión, él reacciona bajando la tasa en la cual estos son enviados.
A este proceso de control se le llama "windows size" y es una de las principales características del protocolo TCP/IP y parte integral de su diseño.
Jitter: Short term timing variation from its ideal position
Latency:
Packet Loss:
Comportamiento Inter Host o Per Hop Behavior (PHB)
Si encuentras una traducción mejor a este término agradecería me la dejes en los comentarios. El comportamiento inter-host define el modo de clasificación y tratamiento de los paquetes entre los routeres responsables de conectar dos puntos determinados.
Es responsabilidad del administrador definir la clasificación y que esta sea coherente entre los routeres. Dicho de otro modo, un paquete marcado como voz en el router R1 debe significar voz también en el router R2.
Conclusiones
Un QOS bien implementado no se trata de googlear y encontrar cualquier lista de códigos y copiarlos y pegarlos en un router. Hay que analizar los requerimientos de la red, lo más importante y lo que más demanda tiene dentro de nuestra red para darle el correcto tratamiento en todo el trayecto (saltos) de la información.
Luego de esta identificación corresponde crear nuestro PHB, el cual usaremos para identificar el tipo de información que pasa por cada router inequívocamente; y por último, definir el tamaño y el tratamiento de las colas que cada uno de estos flujos de datos tendrá junto a su probabilidad de descarte.