Pruebas de QoS mediante CBWFQ y LLQ
Fecha: 4 de mayo del 2017
Escenario
Este escenario se realizó para estudiar el comportamiento de la priorización del tráfico web (TCP 80) contra el resto
del tráfico TCP (representado mediante el puerto 5001) a través de colas de espera basada en clases (CBWFQ), y el
impacto que causa cuando se utiliza una reseva de ancho de banda y priorización de baja latencia (LLQ).
Según mi libro de QoS de Cisco (ISBN 9781587202773), cuando un tipo de tráfico con reservas de recursos no se utiliza,
sus recursos (llámese ancho de banda) por un breve período de tiempo se pueden utilizar en las otras clases.
Extraído de la página 290:
Finally, Cisco does tell us the general idea behind how the CBWFQ scheduler works. The scheduler gives a percentage
of the bandwidth to each class, based on the configured values.
For instance, four classes, including class-default, may be configured with bandwidth percentages that total 100 percent.
The scheduler ensures that each queue receives that percentage of bandwidth.
If some queues do not need their bandwidth for a short period, the bandwidth is spread across the other classes.
Cisco does not really offer more details about how the scheduler works—so you do not need to worry more about
how CBWFQ works for the exams!
1.- Verificación inicial:
Se procede a generar tráfico entre una máquina de cada segmento con una sola clase (tráfico default del JPerf en
el puerto TCP 5001) para verificar la capacidad máxima de extremo a extremo, en este caso los limitantes son el
troughput del router Cisco 2801, mas tiempo de acceso a discos, tiempos del sistema operativo, etc.
Para este fin y tratándose de tráfico aislado se desctivaron los antivirus.
El promedio de 70 Mbps está en el límite de lo aceptable para enlazar dos segmentos de 100 Mpbs (se descarta
un 20% -o sea unos 20 Mbps- por señalización 4B5B y cabeceras, el 10% restante es baja capacidad del equipo- ,
pero al menos tenemos una referencia de las condiciones ideales.
Esta captura es en la máquina servidor (192.168.2.20)
2.- Agregado del tráfico web:
Se agrega una máquina en cada segmento utilizando el puerto destino TCP 80 para simular tráfico web.
Podemos observar como baja la capacidad del canal mientras generamos tráfico web con reserva de ancho de banda.
Esta captura es de la máquina cliente (192.168.1.200) transmitiendo al puerto destino 5001.
3.- Todo el tráfico sin aplicar QoS:
Al quitar la política de reserva de ancho de banda y baja latencia el rendimientopara tráfico web es mas inestable.
Cisco-2801(config)#int fa0/0
Cisco-2801(config-if)#no service-policy output QoS-Policy-2
Cisco-2801(config-if)#exit
Cisco-2801(config)#int fa0/1
Cisco-2801(config-if)#no service-policy output QoS-Policy-1
4.- Nuevamente con QoS:
Al aplicar nuevamente la política de QoS, el tráfico hacia y desde el puerto 80 es mas estable.
Cisco-2801(config)#int fa0/0
Cisco-2801(config-if)#service-policy output QoS-Policy-2
Cisco-2801(config-if)#exit
Cisco-2801(config)#int fa0/1
Cisco-2801(config-if)#service-policy output QoS-Policy-1
5.- Verificación:
Cisco-2801#sh policy-map interface fa0/1
Cisco-2801#sh policy-map in fa0/1
FastEthernet0/1
Service-policy output: QoS-Policy-1
Class-map: HTTP-OUT (match-any)
189871 packets, 269480718 bytes
5 minute offered rate 6307000 bps, drop rate 0 bps
Match: access-group name HTTP-OUT
189871 packets, 269480718 bytes
5 minute rate 6307000 bps
Queueing
Strict Priority
Output Queue: Conversation 264
Bandwidth 30 (%)
Bandwidth 30000 (kbps) Burst 750000 (Bytes)
(pkts matched/bytes matched) 8/10896
(total drops/bytes drops) 0/0
Class-map: class-default (match-any)
180019 packets, 255457242 bytes
5 minute offered rate 5229000 bps, drop rate 0 bps
Match: any
Queueing
Flow Based Fair Queueing
Maximum Number of Hashed Queues 256
(total queued/total drops/no-buffer drops) 0/0/0
exponential weight: 9
class Transmitted Random drop Tail drop Minimum Maximum Mark
pkts/bytes pkts/bytes pkts/bytes thresh thresh prob
0 180031/255474274 0/0 0/0 20 40 1/10 (ver tabla de clases de servicio mas abajo)
1 0/0 0/0 0/0 22 40 1/10
2 0/0 0/0 0/0 24 40 1/10
3 0/0 0/0 0/0 26 40 1/10
4 0/0 0/0 0/0 28 40 1/10
5 0/0 0/0 0/0 30 40 1/10
6 0/0 0/0 0/0 32 40 1/10
7 0/0 0/0 0/0 34 40 1/10
rsvp 0/0 0/0 0/0 36 40 1/10
Cisco-2801#
Todo el tráfico está sin etiquetar, por lo tanto pertenece a la clase de servicio 0, pero el la policy puede marcarse
Para que otros dispositivos intermedios puedan identificarlo mediante un flag y no por puertos de destino.
6.- Configuración del switch:
El switch tenía la configuración por default, salvo puertos Fa0/1 a 7 en VLAN 10 y Fa 0/8 a 15 en VLAN 20.
Configuración del router:
Cisco-2801#sh runn (sólo lo mas relevante)
Building configuration...
Current configuration : 1217 bytes
!
version 12.4
!
class-map match-any HTTP-IN
match access-group name HTTP-IN (tráfico de retorno server-cliente)
!
class-map match-any HTTP-OUT
match access-group name HTTP-OUT (tráfico cliente-server)
!
policy-map QoS-Policy-1 (tráfico cliente-server)
class HTTP-OUT
priority percent 30
class class-default
fair-queue
random-detect
!
policy-map QoS-Policy-2 (tráfico de retorno server-cliente)
class HTTP-IN
priority percent 30
class class-default
fair-queue
random-detect
!
!
!
interface FastEthernet0/0
ip address 192.168.10.1 255.255.255.0
service-policy output QoS-Policy-2 (tráfico de retorno server-cliente)
!
interface FastEthernet0/1
ip address 192.168.20.1 255.255.255.0
service-policy output QoS-Policy-1 (tráfico cliente-server)
!
---resumido---
!
ip access-list extended HTTP-IN (tráfico de retorno server-cliente)
permit tcp 192.168.20.0 0.0.0.255 eq www 192.168.10.0 0.0.0.255
ip access-list extended HTTP-OUT (tráfico cliente-server)
permit tcp 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 eq www
!
end
Cisco-2801#
7.- El libro que utilicé como referencia:
(2017) That packet is not mine !
Rosario, Argentina