La Quality of Service (QoS) es el conjunto de técnicas que prioriza el tráfico según su importancia. Permite que voz, video y aplicaciones críticas mantengan sus requisitos aun cuando la red se encuentra congestionada, aplicando políticas que controlan ancho de banda, latencia y pérdidas de paquetes de extremo a extremo.
En este tema veremos por qué la QoS es imprescindible en redes modernas, qué parámetros se monitorean, cuáles son los mecanismos más utilizados y cómo tecnologías como DiffServ e IntServ implementan estas ideas en entornos reales.
QoS es un contrato implícito entre la red y las aplicaciones: la infraestructura se compromete a otorgar recursos diferenciados para que servicios sensibles a la latencia (telefonía IP) o al ancho de banda (copias de seguridad) reciban el tratamiento adecuado.
En la práctica QoS abarca: clasificación del tráfico, asignación de prioridades, medición permanente y ajustes automáticos. Sin estas funciones, todos los paquetes competirían por los mismos recursos y el comportamiento dependería exclusivamente del azar.
Las organizaciones actuales mezclan servicios en tiempo real, aplicaciones SaaS, IoT y cargas masivas de datos. Algunos escenarios donde QoS resulta innegociable:
Además, los proveedores de Internet aplican QoS para ofrecer niveles de servicio diferenciados (SLA) y cumplir normativas sobre neutralidad o priorización.
Los ingenieros monitorean varios indicadores para determinar si la calidad es aceptable. La tabla resume los principales parámetros.
| Parámetro | Descripción | Valores deseables | Impacto de degradación |
|---|---|---|---|
| Ancho de banda | Capacidad por segundo asignada a un flujo. | Igual o superior al bit-rate requerido. | Congestión y colas crecientes. |
| Latencia | Tiempo total de ida. | < 150 ms para voz; < 50 ms para control industrial. | Conversaciones entrecortadas, comandos tardíos. |
| Jitter | Variación de la latencia entre paquetes. | < 30 ms para video y voz. | Cortes de audio/video, buffer underrun. |
| Pérdida de paquetes | Porcentaje de paquetes descartados. | < 1% en voz, < 0.1% en datos críticos. | Retransmisiones, distorsión en flujos en tiempo real. |
Estos parámetros se miden con herramientas como IP SLA, sondas activas o dashboards de telemetría que envían alertas en tiempo real.
La implementación práctica de QoS combina varias técnicas. Las más comunes son:
También pueden emplearse shapers para suavizar ráfagas y mecanismos de protección como WRED (Weighted Random Early Detection) que descartan paquetes antes de que la cola se sature por completo.
Existen dos modelos principales para transportar QoS a escala.
Differentiated Services utiliza el campo DSCP del encabezado IP para marcar cada paquete con una clase de servicio (EF para voz, AFxy para datos garantizados, BE para best-effort). Los routers leen esa marca y aplican colas o anchos de banda predefinidos. Es un modelo escalable porque no mantiene estado por flujo individual.
| Clase | Valor DSCP | Uso típico |
|---|---|---|
| EF (Expedited Forwarding) | 46 | Voz/Video crítica. |
| AF41/AF42/AF43 | 34/36/38 | Video corporativo, telemedicina. |
| BE (Best Effort) | 0 | Tráfico sin prioridad. |
DiffServ es el modelo predominante en WAN y proveedores porque permite que cada nodo tome decisiones locales basadas en marcas estandarizadas.
Integrated Services reserva recursos por flujo utilizando RSVP (Resource Reservation Protocol). El emisor solicita explícitamente ancho de banda y parámetros, y cada router debe confirmar si puede cumplirlos antes de aceptar la transmisión. Ofrece garantías estrictas pero no escala bien en redes con miles de flujos dinámicos.
En entornos mixtos se suele aplicar IntServ en segmentos críticos (por ejemplo, backbone MPLS) y DiffServ en el resto para contener la complejidad.
El siguiente script en Python calcula cómo se reparte un enlace de 100 Mb/s entre tres clases con políticas de mínimo garantizado y prioridad.
def asignar_ancho_banda(total, clases):
sobrante = total
asignacion = {}
for nombre, datos in clases.items():
asignacion[nombre] = datos["min"]
sobrante -= datos["min"]
prioridad = sorted(clases.items(), key=lambda item: item[1]["prioridad"], reverse=True)
for nombre, datos in prioridad:
extra = min(sobrante, datos["max"] - asignacion[nombre])
asignacion[nombre] += extra
sobrante -= extra
return asignacion
clases = {
"Voz": {"min": 20, "max": 40, "prioridad": 3},
"Video": {"min": 30, "max": 50, "prioridad": 2},
"Datos": {"min": 10, "max": 60, "prioridad": 1}
}
print(asignar_ancho_banda(100, clases))
El resultado ilustra cómo QoS mantiene mínimos garantizados y reparte el sobrante siguiendo prioridades, similar a lo que hacen los planificadores CBWFQ o LLQ.
La QoS transforma una infraestructura best-effort en una red capaz de respetar acuerdos de servicio. Esta disciplina complementa a los protocolos de enrutamiento garantizando que, una vez encontrada la ruta, los paquetes críticos reciban el trato adecuado. En el siguiente tema veremos cómo ICMPv6 y el Neighbor Discovery Protocol aportan funcionalidades esenciales en redes IPv6.