(Ufa)
Para finalizar esta série de posts sobre QoS, vamos falar dos mecanismos usados para controlar a taxa de transmissão em uma interface.
Tanto o Policing quanto o Shaping são configurados através do MQC, e identificam infrações (excessos) da mesma forma. Eles geralmente diferem, no entanto, na resposta as violações. O Policing normalmente descarta o excedente, enquanto que o Shaping atrasa o excesso de tráfego, usando um buffer para armazenar os pacotes e moldar o fluxo quando a taxa de dados é maior do que o esperado.
Para isso o Traffic Shaping monitora o bit rate em que os pacotes são enviados, e se exceder o permitido os pacotes são colocados em uma fila (shaping queue), para posterior transmissão. O Shaping só pode ser configurado na saída da interface.
Importante notar que quando fazemos o Shaping não estamos mudando a velocidade da interface. Ou seja, se configurarmos um shape de 1 Mbps em uma interface de 2 Mbps, a interface continuará trabalhando a 2 Mbps.
O que nos leva a pergunta: Como atingimos a velocidade (Shaping) configurada?
No caso acima o Shaping faria com que a interface transmitisse apenas metade do tempo. Por exemplo, vamos considerar que o roteador dividiu cada segundo em 10 partes (chamadas Tc – Time interval, em milissegundos), ele vai então transmitir nas partes 1, 3, 5, 7 e 9 e nas partes 2, 4, 6, 8 e 10 não haverá transmissão.
O tráfego normal, enviado a cada Tc, é chamado Bc – Committed Burst. E ainda podemos configurar o Shaping para que permita um “bursty” (excedente).
Esta função permite que após um período de transmissão onde a velocidade não atingiu o CIR – Committed Information Rate, mais tráfego (chamado Be – Excess Burst) possa ser enviado por um período de tempo (Tc).
Estes mesmos conceitos aplicam-se ao Traffic Policing, que pode ser configurado tanto na entrada quanto na saída de interfaces e sub-interfaces.
Assim como o Shaping, o Policing monitora o bit rate e então toma ações com base nesta informação. E ai que está a diferença.
Podemos configurar o roteador para transmitir os pacotes que estiverem conformes (dentro da velocidade – que não passou da quantidade de bits – Bc, em um dado Tc), marcar os pacotes que excederem a velocidade mas ainda estão dentro do limite de excesso (Bc + Be em um dado Tc) e descartar os pacotes quando a o tráfego for maior do que Bc + Be em dado Tc (este tipo de política é chamado de Single Rate, 3 Colors).
Outras opções seriam termos apenas duas ações configuradas (transmite e drop), criando assim uma política Single Rate, 2 Color.
Por fim, temos a Policy do tipo Dual Rate, 3 Color, onde além do CIR temos também o PIR – Peak Information Rate. Neste caso os pacotes que estiverem abaixo do CIR estão conformes, os que estiverem entre o CIR e o PIR são considerados acima do contrato (exceed) e os que estiverem acima do PIR estão violando o contrato.
Configurando Traffic Policing
Voltando a nossa topologia de exemplo, vamos configurar o Policing na entrada da interface E0/0, limitando a velocidade a 2 Mbps.
Nesta interface já tínhamos uma policy-map (MARCA) configurada, responsável por fazer a marcação dos pacotes. Vamos remove-la da interface e aplicá-la em uma outra policy-map (2MBPS), onde definiremos a banda e as ações.
-
Policing: 2 Mbps
-
Conforme-action: Transmite
-
Exceed-action: Marca os pacotes com DSCP CS0 (Default) e transmite
-
Violate-action: Descarta os pacotes
QoS#conf t QoS(config)#policy-map 2MBPS QoS(config-pmap)# class class-default QoS(config-pmap-c)#police cir 2000000 conform-action transmit exceed-action set-dscp-transmit default violate-action drop QoS(config-pmap-c-police)# service-policy MARCA QoS(config-pmap-c)#exit QoS(config-pmap)#exit QoS(config)#interface Ethernet0/0 QoS(config-if)# no service-policy input MARCA QoS(config-if)# service-policy input 2MBPS QoS(config-if)#end QoS#
Vamos executar um ping a partir do roteador Origem, e então ver o resultado da nossa política no roteador QoS.
Origem#ping 2002:CC2E::100 repeat 1000 size 1000 Type escape sequence to abort. Sending 1000, 1000-byte ICMP Echos to 2002:CC2E::100, timeout is 2 seconds: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! Success rate is 99 percent (994/1000), round-trip min/avg/max = 1/1/3 ms Origem#
Note que tivemos algumas perdas no ping, resultado da política (drop). Agora vamos ver as estatísticas no roteador QoS.
QoS#sho policy-map interface et0/0 Ethernet0/0 Service-policy input: 2MBPS Class-map: class-default (match-any) 1004 packets, 1014320 bytes 30 second offered rate 89000 bps, drop rate 0000 bps Match: any police: cir 2000000 bps, bc 62500 bytes, be 62500 bytes conformed 632 packets, 637112 bytes; actions: transmit exceeded 366 packets, 371124 bytes; actions: set-dscp-transmit default violated 6 packets, 6084 bytes; actions: drop conformed 57000 bps, exceeded 31000 bps, violated 0000 bps
Podemos ver que dos 1004 pacotes recebidos na interface E0/0, 632 estavam conformes, 366 excederam o contrato e 6 pacotes foram dropados (justamente a quantidade de “.” no output anterior).
Também podemos verificar outra informação importante: bc 62500 bytes, be 62500 bytes.
É com base nesta configuração que o roteador identifica o que é conform, exceed ou violated. Neste exemplo, se forem enviado até 62500 bytes em um intervalo de tempo, consideramos que o tráfego está conforme. Se enviar até 125000 bytes (Bc + Be) em Tc, consideramos que o tráfego excedeu, e se passar disso o tráfego violou o contrato e por isso será dropado (de acordo com o que foi configurado).
A fórmula para saber Tc é: Tc =Bc/CIR. Usando o exemplo acima temos Tc = (62500 x 8)/2000000. Tc = 0,25. Ou seja, a cada 0,25 segundos podem ser enviados 62.500 bytes (Bc), e eventualmente podem ser enviados 125.000 bytes (Bc + Be) em 0,25 segundos.
Neste caso o roteador fez o cálculo automaticamente, mas podemos fazer esta parametrização manualmente, no comando police, dentro policy-map que define a banda.
Configurando Traffic Shaping
Sabendo que o roteador da operadora está configurado para fazer o Policing (e descartar o tráfego excedente), podemos configurar um Shaping do lado “cliente” para não excedermos a banda (e consequentemente não ter tráfego dropado).
Vamos configurar um Shaping, também de 2 Mbps no roteador Origem, e aplicar na saída da interface E0/0.
-
Shaping: 2 Mbps
-
Interface: E0/0
-
Sentido: Outbound
Origem#conf t Origem(config)#policy-map SHAPE Origem(config-pmap)# class class-default Origem(config-pmap-c)# shape average 2000000 Origem(config-pmap-c)#exit Origem(config-pmap)#exit Origem(config)#interface et0/0 Origem(config-if)#service-policy output SHAPE Origem(config-if)#end Origem#
Vamos repetir o teste (ping) e ver o resultado.
Origem#ping 2002:CC2E::100 repeat 1000 size 1000 Type escape sequence to abort. Sending 1000, 1000-byte ICMP Echos to 2002:CC2E::100, timeout is 2 seconds: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! Success rate is 100 percent (1000/1000), round-trip min/avg/max = 1/4/14 ms Origem#
Note que diferente do que vimos anteriormente, dessa vez não tivemos perda de pacotes. Também podemos usar o comando show policy-map interface et0/0 para ver as estatísticas no roteador Origem.
Origem#sh policy-map interface et0/0 Ethernet0/0 Service-policy output: SHAPE Class-map: class-default (match-any) 3055 packets, 3006203 bytes 30 second offered rate 487000 bps, drop rate 0000 bps Match: any Queueing queue limit 64 packets (queue depth/total drops/no-buffer drops) 0/0/0 (pkts output/bytes output) 3055/3048357 shape (average) cir 2000000, bc 8000, be 8000 target shape rate 2000000 Origem#
Bom… por enquanto é isso. Espero que não tenha ficado muito confuso.
Referências:
- CCIE Routing and Switching v5.0, Volume 2
- Policing and Shaping Configuration Guide
- Configuring Traffic Policing
Até a próxima.