DSCP

 DSCP (Differentiated Services Code Point) es un estándar de red que permite clasificar y gestionar la calidad de tráfico de datos en una red. Es la evolución moderna del antiguo campo Type of Service (ToS) en la cabecera IPv4.

El campo DSCP ocupa los 6 bits más significativos del byte que anteriormente se llamaba Type of Service (ToS) en la cabecera IP. Su función es permitir que los routers y switches clasifiquen los paquetes en diferentes "clases de servicio" (PHB - Per-Hop Behavior).

Cuando un paquete llega a un nodo de red (router o switch), este lee el valor DSCP y decide qué prioridad darle: ¿debe ir en la cola de salida más rápida (voz IP) o puede esperar en una cola de baja prioridad (descarga de archivos)?

¿Cómo funciona en la práctica?

  • Priorización: Diferencia entre tráfico crítico (como llamadas de voz o videoconferencias) y tráfico estándar (como navegación web o correo electrónico).

  • Valores (Codepoints): Existen 64 posibles valores (del 0 al 63). Algunos de los más comunes son:

    • CS0 (000000): Best Effort. Es el valor por defecto (tráfico estándar).

    • EF (Expedited Forwarding - 101110): Se usa para tráfico de muy baja latencia, como la voz sobre IP (VoIP).

    • AF (Assured Forwarding): Se divide en varias clases y niveles de descarte, usado para aplicaciones que necesitan garantías de ancho de banda.

Importancia en la infraestructura

La gran ventaja de DSCP es que funciona "por salto" (per-hop). Esto significa que cada dispositivo de red en el camino puede interpretar el campo DSCP y tomar una decisión independiente sobre cómo gestionar el paquete. Esto es vital para garantizar una buena experiencia de usuario en redes donde el ancho de banda es limitado y compiten diferentes tipos de tráfico.

Diferencia clave:

  • ToS (Original): Era muy simple y rara vez se implementaba bien.

  • DSCP: Es mucho más granular, permitiendo hasta 64 niveles de prioridad, lo cual es el estándar actual para implementar QoS (Quality of Service, Calidad de Servicio) en redes empresariales y de proveedores de servicios.


Pregunta de reflexión: Si un paquete lleva un valor DSCP de alta prioridad (como Expedited Forwarding), ¿garantiza esto al 100% que el paquete llegará sin retraso? (Pista: considera qué sucede si todos los dispositivos de la red están saturados y todos los paquetes están marcados como prioritarios).



Actividad Práctica:

Objetivo: Capturar tráfico real en la red y localizar el campo DSCP (o ToS) dentro de la cabecera IP para observar si los paquetes están marcados.

Material necesario:

  • Un PC con Wireshark instalado.

  • Conexión a Internet.

Procedimiento:

  1. Preparación: Inicia Wireshark y comienza la captura en tu interfaz de red activa.

  2. Generación de tráfico:

    • Para ver tráfico estándar: Navega por una web normal.

    • Para ver tráfico potencialmente priorizado: Si tienes acceso a una aplicación de VoIP (ej. un cliente SIP) o una videoconferencia (Zoom/Teams), iníciala. Estas aplicaciones suelen marcar sus paquetes con valores DSCP de alta prioridad.

  3. Filtrado: Usa el filtro ip en la barra superior de Wireshark para aislar solo los paquetes IP.

  4. Inspección:

    • Selecciona un paquete capturado.

    • Expande la sección "Internet Protocol Version 4".

    • Localiza el campo "Differentiated Services Field" (o "Type of Service").

    • Al expandirlo, Wireshark te mostrará los 6 bits dedicados al DSCP y los 2 bits de ECN (Congestion Notification).

Preguntas de reflexión: 
  • ¿Qué valor tiene el campo DSCP? (Probablemente verás 0x00 que es Best Effort).

  • ¿Por qué la mayoría del tráfico es 0? En Internet, la mayoría de los dispositivos intermedios reajustan el DSCP a "Best Effort" por seguridad, a menos que sea una red corporativa privada o una VPN configurada para mantener esa prioridad.

  • El reto: ¿Cómo podrías "marcar" un paquete? (Puedes utilizar una herramienta como iptables en Linux, que permite modificar el campo DSCP de los paquetes que salen de una máquina).

Busca:
  • el byte de la cabecera IP que contiene el campo.

  • El desglose de bits que muestra Wireshark (donde el usuario puede ver que son 6 bits para DSCP y 2 para ECN).

Nota de seguridad: Recuerda que nunca debes capturar tráfico que contenga contraseñas o datos personales. El uso de Wireshark debe hacerse siempre bajo un entorno de aprendizaje controlado y sobre el tráfico generado por ti mismo.



Actividad práctica 2:

Objetivo: Modificar el campo DSCP de los paquetes salientes en un sistema Linux para priorizar tráfico específico y verificar el cambio con Wireshark.

Escenario: Vamos a marcar todos los paquetes de tipo ICMP (los que genera el comando ping) con un valor DSCP de "Expedited Forwarding" (EF), que es el valor de mayor prioridad (0x2e).

Paso 1: Limpieza de reglas previas

Asegúrate de que no haya reglas de marcado previas que interfieran: sudo iptables -t mangle -F

Paso 2: Aplicación de la regla de marcado

Utilizaremos la tabla mangle de iptables, que es la única diseñada para modificar campos de la cabecera IP: sudo iptables -t mangle -A OUTPUT -p icmp -j DSCP --set-dscp 46

  • -t mangle: Tabla encargada de modificar los campos de la cabecera IP.

  • -A OUTPUT: Aplicamos la regla a los paquetes que salen de nuestra propia máquina.

  • -p icmp: Filtramos solo el tráfico generado por el comando ping.

  • -j DSCP --set-dscp 46: Marcamos el campo DSCP con el valor decimal 46 (que en hexadecimal es 0x2e, correspondiente a EF).

Paso 3: Verificación con Wireshark

  1. Abre Wireshark y selecciona tu interfaz de red.

  2. Abre una terminal y ejecuta un ping hacia una IP externa (ej. ping 8.8.8.8).

  3. En Wireshark, filtra por icmp.

  4. Selecciona un paquete de Echo (ping) request.

  5. Expande Internet Protocol Version 4.

  6. Observa el campo Differentiated Services Field. Debería aparecer ahora como DSCP: Expedited Forwarding (46).

Paso 4: Limpieza

Una vez terminada la prueba, es importante borrar la regla para no afectar el tráfico normal: sudo iptables -t mangle -F


NOTAS:

  • ¿Por qué usamos mangle? La tabla filter (la que se usa para permitir o bloquear tráfico) no puede modificar cabeceras; para eso existe específicamente la tabla mangle.

  • Validación: Intenta hacer un ping sin la regla aplicada primero para que veas que el valor aparece como 0x00 (Best Effort) y, después de aplicar la regla, observa cómo cambia a 0x2e.

  • Advertencia de entorno: Esta regla solo afecta a los paquetes que salen de la máquina local. Si intentas ver el marcado en un paquete que viene de internet, verás que el valor es 0x00 porque los nodos intermedios suelen resetear esta prioridad.


Volver al GLOSARIO