QoS en redes: prioriza el tráfico crítico en tu infraestructura

QoS (Quality of Service) es el conjunto de mecanismos que permiten priorizar ciertos tipos de tráfico sobre otros en una red. Sin QoS, en una red congestionada todos los paquetes compiten igual: las videollamadas se cortan, el VoIP tiene latencia y el tráfico de backup satura el enlace durante el horario laboral.

Por qué necesitas QoS

Situaciones comunes que QoS resuelve:

  • Un backup nocturno que no para del todo y satura la WAN por la mañana
  • Videollamadas que se degradan cuando alguien hace una descarga grande
  • Tráfico de gestión (SSH, RDP) que se vuelve lento bajo carga
  • VoIP con jitter por culpa del tráfico masivo de datos

Conceptos clave

  • Clasificación: identificar el tipo de tráfico (por puerto, IP, DSCP, protocolo)
  • Marcado (marking): etiquetar los paquetes con su prioridad (DSCP, CoS)
  • Cola (queue): ordenar los paquetes según su prioridad antes de enviarlos
  • Shaping: limitar el ancho de banda de ciertos flujos
  • Policing: descartar paquetes que superen un límite

QoS en Linux con tc (traffic control)

Linux usa tc para gestionar el tráfico. El esquema más común es HTB (Hierarchical Token Bucket):

tc qdisc add dev eth0 root handle 1: htb default 30

tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 100mbit prio 1

tc class add dev eth0 parent 1:1 classid 1:20 htb rate 50mbit ceil 100mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:30 htb rate 10mbit ceil 20mbit prio 3
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
    match ip dport 5060 0xffff flowid 1:10
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
    match ip dport 10000 0xf000 flowid 1:10


tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 \
    match ip dport 22 0xffff flowid 1:10
tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 \
    match ip dport 3389 0xffff flowid 1:10


tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 \
    match ip src 10.0.0.50/32 flowid 1:30


tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10

Ver estadísticas

tc -s qdisc show dev eth0
tc -s class show dev eth0

tc filter show dev eth0

QoS con DSCP (marcado en origen)

DSCP (Differentiated Services Code Point) marca los paquetes en el campo ToS/DS del encabezado IP:

iptables -t mangle -A OUTPUT -p udp --dport 5060 -j DSCP --set-dscp-class EF
iptables -t mangle -A OUTPUT -p udp --dport 10000:20000 -j DSCP --set-dscp-class EF

iptables -t mangle -A OUTPUT -p tcp --dport 22 -j DSCP --set-dscp-class CS2

tc filter add dev eth0 parent 1:0 protocol ip prio 1 \
    u32 match ip dsfield 0xb8 0xfc flowid 1:10  # DSCP EF = 46 = 0xb8>>2

QoS en pfSense / routers

En pfSense: FirewallTraffic ShaperWizard. El asistente configura automáticamente priorización para VoIP, ACK TCP y tráfico interactivo.

Conclusión

QoS no es magia: es garantizar que los paquetes críticos lleguen antes en situaciones de congestión. En Linux, tc ofrece control granular aunque con una sintaxis compleja. Para la mayoría de entornos SOHO y pymes, el gestor de tráfico de pfSense ofrece una interfaz mucho más accesible con resultados equivalentes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *