Linux qos: tc DRR qdisc no funciona

Linux qos: tc DRR qdisc no funciona

Existe la disciplina de cola tc DRR (Dificite Round Robin).

Tiene las mismas capacidades que HTB, pero en lugar de usar depósitos llenos de tokens, simplemente asigna a cada cola un contador de dificultad. En el envío de paquetes, DC disminuye según el tamaño del paquete. Si DC es menor que el tamaño del paquete, DC aumenta según el cuanto de la cola y se procesa la siguiente cola. Por lo tanto, puede dividir el tráfico saliente en alguna proporción, sin conocer el ancho del canal (que es necesario para HTB). Verhttp://www.unix.com/man-page/linux/8/tc-drr/

Configuración: dos hosts, 172.16.1.1 y 172.16.1.2.

En el primer host estamos escuchando el tráfico:

nc -l 8111
nc -l 8112

En el segundo host comprobamos la velocidad:

pv /dev/zero | nc 172.16.1.1 8111
pv /dev/zero | nc 172.16.1.1 8112

Ahora la velocidad es igual (pv es una utilidad que permite medir la velocidad de transferencia de datos a través de una tubería). Agregue DRR en el segundo host (HTB en la parte superior se usa para emular los límites de velocidad del canal real):

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc qdisc add dev eth0 parent 1:1 handle 2: drr
tc class add dev eth0 parent 2: classid 2:1 drr quantum 600
tc class add dev eth0 parent 2: classid 2:2 drr quantum 1400
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 8111 0xffff classid 2:1
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 8112 0xffff classid 2:2

La velocidad sigue siendo la misma :( ¿Qué estoy haciendo mal?

Respuesta1

Respuesta: DRR no descarta paquetes por sí solo. Para obtener el comportamiento deseado, agregue qdiscs secundarias a las clases secundarias de DRR para pfifo limit 50hacer que la qdisc secundaria descarte paquetes en lugar de ponerlos en cola de manera efectiva de manera indefinida. La solución se encontró aquí:hilo linux.org.ru

Referencia:hombre tc-drr

NOTAS Esta implementación no descarta paquetes de la cola más larga en caso de desbordamiento, ya que los límites los manejan las qdisc secundarias individuales.

Respuesta2

drr es unplanificador, aún tienes que asignar ancho de banda diferente a las clases con htb. Supongo que, si especificas la cantidad cuántica como 600 y 1400, obtendrás una proporción cercana a 1:2. De hecho, no será así. Puede acercarse a esa proporción en su configuración solo en caso de congestión, por ejemplo, crear múltiples flujos UDP y luego medir dos en cuestión, pero aún así no es lo que espera.

información relacionada