Unidad 07 — QoS (Quality of Service)

En redes IP tradicionales, todo el tráfico se trata como mejor esfuerzo (best effort), sin garantías de entrega, retardo ni temporización. El tráfico de tiempo real (voz, video, juegos en línea) es sensible a la latencia, el jitter y la pérdida de paquetes; el tráfico de mejor esfuerzo (correo, navegación web) tolera mucho mejor esas variaciones. QoS (Quality of Service) es la capacidad de una red de dar un servicio diferenciado a clases de tráfico seleccionadas, priorizando, garantizando ancho de banda y controlando el orden de entrega mediante un conjunto de mecanismos: clasificación, regulación de tráfico, encolamiento y gestión de congestión.

Conceptos clave

Mecanismos utilizados para brindar QoS: clasificación, regulación, encolamiento, gestión de congestión, fragmentación e intercalado
La "caja de herramientas" de QoS: Clasificación (IP Precedence/DSCP) · Regulación de tráfico (Policing/Shaping) · Gestión de encolamientos (LLQ) · Gestión de congestión (WRED) · Otros (fragmentación e intercalado).
Cuatro parámetros de calidad de la red: ancho de banda, latencia, jitter y pérdida de paquetes
Los cuatro parámetros de calidad de la red que QoS intenta controlar.
Ancho de banda
Cantidad máxima de datos que pueden transmitirse por una red en un tiempo determinado (Mbps, Gbps).
Latencia
Tiempo que tarda un paquete en ir desde el origen hasta el destino, medido en milisegundos.
Jitter (variación de retardos)
Variación en el tiempo de llegada de paquetes de un mismo flujo. Un jitter alto degrada la calidad de voz/video en tiempo real.
Pérdida de paquetes (Loss)
Paquetes que no llegan a destino, típicamente por congestión, expresada como % del total enviado.

Clasificación: IP Precedence y DSCP

Antes de poder priorizar tráfico, hay que clasificarlo (identificar de qué tipo es: protocolo, IP/puerto, DSCP/ToS previo) y marcarlo (escribir un valor en el campo ToS del encabezado IP que los routers posteriores puedan usar para aplicar colas prioritarias o descartar excedentes).

Campo ToS del encabezado IP con IP Precedence (3 bits) y Type of Service, y su evolución a DSCP (6 bits)
El byte ToS original (RFC 791): 3 bits de Precedence (000 Routine a 111 Network control) + 5 bits de Type of Service. Los 6 bits más significativos se reutilizan hoy como DSCP.

IP Precedence (RFC 791) usa los 3 bits más significativos del byte ToS: cuanto mayor el valor, mayor la importancia del paquete (en congestión, el router descarta primero los de menor prioridad). Solo permite 8 niveles de prioridad.

En 1998 la RFC 2474 define DiffServ, que reutiliza los 6 bits más significativos del mismo byte como DSCP (Differentiated Services Code Point), manteniendo compatibilidad hacia atrás con Precedence pero permitiendo 64 valores distintos de prioridad en vez de 8.

Tabla DSCP: EF (46) voz Expedited Forwarding, AF41 (34) video Assured Forwarding, BE (0) datos Best Effort
Ejemplo de valores DSCP: EF (46) para voz, AF41 (34) para video, BE (0, por defecto) para datos.

En Cisco, la QoS basada en DSCP se implementa combinando tres elementos: access-list (define las redes/protocolos/puertos a tratar), class-map (vincula ese tráfico con una clase) y policy-map (aplica la acción, por ejemplo marcar DSCP 46 = EF).

Regulación de tráfico: Policing y Shaping

La cantidad de tráfico que genera un dispositivo no siempre coincide con la capacidad que la red puede manejar. Para evitar congestión o comportamientos injustos entre flujos, se regula el tráfico con dos mecanismos complementarios.

Tabla comparativa Policing vs Shaping: qué controla, cómo actúa, cuándo se usa, si añade latencia
Policing controla la tasa de entrada/salida y descarta o remarca sin usar buffer (no añade latencia); Shaping controla la tasa de salida reteniendo en un buffer (puede añadir latencia).
Gráfico de Traffic Policing: recorte de picos de tráfico y descarte del excedente
Policing: examina cada paquete; el tráfico que excede el límite se descarta o remarca. Se usa en ingreso o egreso, cuando no se puede usar buffer.
Gráfico de Traffic Shaping: suavizado de picos de tráfico reteniendo en buffer
Shaping: retiene temporalmente los paquetes excedentes en un buffer y los libera gradualmente. Solo se usa en egreso, y solo descarta si el buffer se llena.

Cuidado con la trampa de examen: es común que un enunciado describa el comportamiento de Shaping (retiene en buffer, no descarta, agrega latencia) pero lo etiquete como "Traffic Policing". Policing no usa buffer y no agrega latencia: actúa de inmediato descartando o remarcando.

Committed Access Rate (CAR)

CAR es un mecanismo de policing que limita la tasa de transmisión a un valor preestablecido, basado en el algoritmo Token Bucket (cubo de fichas): las fichas se generan a una tasa constante y se consumen al transmitir; si el cubo está lleno, se pueden enviar ráfagas hasta agotar las fichas acumuladas.

CAR define tres umbrales de envío:

Gráfico de zonas CAR: tráfico garantizado (0-CIR), normal burst (CIR-CIR+Bc), excess burst (CIR+Bc-CIR+Bc+Be), descarte (>CIR+Bc+Be)
Zonas de tratamiento de CAR: 0–CIR tráfico garantizado (se transmite sin restricciones) · CIR–CIR+Bc normal burst (se transmite usando fichas acumuladas) · CIR+Bc–CIR+Bc+Be excess burst (se marca/transmite con baja prioridad) · >CIR+Bc+Be zona de descarte.

Buffer de Dejitter

El jitter es la variación en el tiempo de llegada de paquetes de un mismo flujo (por ejemplo, congestión variable en la red causa distintos retardos de encolamiento). El buffer de dejitter es un área de memoria en el receptor (teléfono IP, softphone, gateway de voz) que compensa el jitter reordenando y retardando levemente los paquetes, para entregarlos al decodificador a un ritmo constante, a costa de una pequeña latencia adicional.

Ejemplo de buffer de dejitter: entrada con intervalos irregulares (35ms, 20ms, 80ms...) transformada en salida regular cada 20ms
El buffer de dejitter recibe paquetes con intervalos variables y los reproduce a intervalos constantes (en el ejemplo, cada 20 ms).

Los buffers de dejitter pueden ser estáticos (fijos) — tamaño predefinido, simples pero si el jitter supera su tamaño se descartan paquetes tardíos — o dinámicos (adaptativos) — ajustan su tamaño (y por tanto el retardo introducido) según las condiciones de jitter medidas. El trade-off es directo: un buffer más grande tolera más jitter pero agrega más latencia; uno más chico agrega menos latencia pero descarta más paquetes tardíos.

Encolamiento (Queuing)

El encolamiento es el proceso por el cual un router o switch almacena temporalmente paquetes en una cola cuando hay más tráfico del que puede transmitir en ese momento, evitando la pérdida inmediata y permitiendo priorizar tráfico sensible.

Ejemplo numérico de WFQ: precedencias P0 a P5 con pesos 1 a 6, peso total 26, reparto proporcional del ancho de banda
Ejemplo de WFQ: a cada precedencia IP (P0-P5) se le asigna un peso (1 a 6); el ancho de banda se reparte proporcionalmente al peso de cada flujo sobre el peso total (26).

Tabla comparativa de técnicas de encolamiento

Tabla resumen comparativa de FIFO, PQ, CQ, WFQ, CB-WFQ y LLQ: uso principal, prioridad, garantía de BW, inanición, complejidad
Resumen comparativo — muy citado en exámenes. LLQ combina lo mejor de PQ (baja latencia para voz) y CBWFQ (garantía de BW por clase, sin inanición para el resto del tráfico).

LLQ en la práctica

A la voz le corresponde una cola prioritaria (PQ), seleccionada por DSCP EF, IP Precedence 5 o una lista de acceso. Esa cola PQ tiene un ancho de banda asociado (ej. 48 Kbps) con prioridad absoluta hasta esa velocidad; el exceso se descarta. El resto del tráfico (señalización, datos) se reparte en clases CBWFQ con % de BW garantizado; lo que excede su reserva pasa a la clase por defecto (FIFO o WFQ si se indica fair).

Diagrama completo de LLQ: clasificación de tráfico, cola PQ con Policer para VoIP, CBWFQ para clases X/Y/default, intercalado, fragmentación, Tx Ring
Diagrama completo de LLQ (muy citado en exámenes): clasificación → PQ + Policer (voz) / WFQ + CBWFQ (clases X, Y, default) → Intercalado + Fragmentación → Tx Ring.

Gestión de congestión: WRED

WRED (Weighted Random Early Detection) — Detección Temprana Aleatoria Ponderada — es un mecanismo de prevención de congestión (no es una técnica de encolamiento como LLQ o WFQ). En vez de esperar a que la cola se llene y aplicar "tail drop" (descarte de todo lo que no entra, como en FIFO), WRED descarta paquetes de forma selectiva y proactiva antes de que la cola se sature, ayudando especialmente al tráfico TCP a reducir su ventana antes de una congestión severa.

WRED monitorea la longitud promedio de la cola contra dos umbrales configurables: por debajo del umbral mínimo no se descarta nada; por encima del umbral máximo se descartan todos los paquetes entrantes (similar a tail drop); entre ambos umbrales, la probabilidad de descarte aumenta gradualmente a medida que la cola se acerca al máximo. La parte "ponderada" (Weighted) significa que ese comportamiento se aplica distinto según la prioridad/DSCP del paquete: el tráfico de menor prioridad tiene mayor probabilidad de ser descartado en ese rango intermedio.

Diagrama de probabilidad de descarte de WRED entre el umbral mínimo y el umbral máximo de la longitud promedio de la cola
Probabilidad de descarte de WRED: 0% por debajo del umbral mínimo, creciente entre umbral mínimo y máximo, 100% por encima del umbral máximo.

Otros mecanismos: fragmentación, intercalado y VAD

La fragmentación divide un paquete grande de datos en fragmentos pequeños que se reensamblan en destino. El intercalado (interleaving), combinado con una política de colas adecuada (PQ o LLQ), permite intercalar paquetes de voz entre los fragmentos de datos, acotando el tiempo que debe esperar un paquete de voz antes de empezar a transmitirse (evitando que quede "atrapado" detrás de un paquete de datos grande).

Fragmentación e intercalado en tres instantes: paquete de datos fragmentado en D1-D7, paquete de voz V intercalado entre los fragmentos
Instantes 1, 2 y 3: el paquete de datos (D) se fragmenta, y el paquete de voz (V) se intercala entre los fragmentos para no esperar toda la transmisión del paquete grande.

VAD (Voice Activity Detection): dado que una conversación típica tiene silencio aproximadamente el 35% del tiempo, VAD detecta esos silencios y no los transmite, reduciendo el ancho de banda usado por la voz.

VoIP y SIP

En VoIP, la voz viaja como datos: Voz analógica → Digitalización (códec) → Empaquetamiento (RTP) → Transporte IP. Toda llamada VoIP tiene dos componentes esenciales: señalización (establecer, gestionar y finalizar la llamada — típicamente SIP) y media (el flujo real de audio/video, típicamente RTP).

Proceso de comunicación VoIP: Voz -> Códec (digitalización) -> Paquetes RTP/UDP/IP -> Red IP -> Audio
Proceso de comunicación VoIP de extremo a extremo.

H.323 (ITU-T) fue el estándar original: un protocolo "paraguas" monolítico, con estructuras binarias (ASN.1), pensado para redes corporativas cerradas. SIP (Session Initiation Protocol, IETF) es el estándar moderno: más ligero, basado en texto plano (similar a HTTP), modular y adaptado a aplicaciones web/Internet.

Componentes SIP: User Agent (UAC/UAS), Proxy Server, Registrar Server
Componentes de la arquitectura SIP.
Flujo básico de una llamada SIP: REGISTER, INVITE, 180 Ringing, 200 OK, ACK, entre UAC, Proxy, Registrar y UAS
Flujo básico de una llamada SIP: el UAC se registra (REGISTER) en el Registrar a través del Proxy; luego inicia la llamada (INVITE) que el Proxy reenvía al UAS.

Flujo típico: REGISTER (el UAC informa su ubicación) → INVITE (UAC solicita la llamada, incluye descripción de media/SDP) → 180 Ringing (el UAS indica que está sonando) → 200 OK (el UAS acepta, incluye su propia descripción de media) → ACK (el UAC confirma) → comienza el flujo de RTP (llamada establecida, generalmente directo entre los UA) → BYE (termina la llamada, de cualquiera de las partes).

Aplicando QoS a VoIP

QoS trata de forma diferenciada la señalización y la media de una llamada VoIP:

Cheat sheet — QoS