Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
Parecer
Métodos de Classificação
Weighted Round Robin (WRR)
Round Robin (RR)
Weighted Fair Queueing (WFQ)
Strict Priority (SP)
Differentiated Services (DiffServ)
Differentiated Services Code Point (DSCP)
IP Precedence
Weighted random early detection (WRED)
CoS-map
Meter
Counter
Filter
Action
Match
QoS & Port-channel
Desenvolvimento
Dm4001 - ETHGX
Weighted Round Robin (WRR)
Weighted Fair Queueing (WFQ)
Round Robin (RR)
Differentiated Services Code Point (DSCP)
WEIGHTED RANDOM EARLY DETECTION (WRED)
Referências
Introdução
Normalmente a Internet trabalha com a filosofia do melhor esforço: cada usuário compartilha largura de
banda com outros e, portanto, a transmissão de seus dados concorre com as transmissões dos demais
usuários. Os dados são encaminhados da melhor forma possível, conforme as rotas e banda disponíveis.
Quando ocorre um congestionamento, os pacotes são descartados sem distinção. Não há garantia de que o
serviço será concluído com sucesso. Entretanto, algumas aplicações necessitam de tais garantias.
Com uso de QoS os pacotes são marcados para distiguir os tipos de serviços e os switches são
configurados para criar filas distintas para cada aplicação, de acordo com as prioridades das mesmas.
Assim, uma fatia da largura de banda, dentro do canal de comunicação, é reservada para que, no caso de
congestionamento, determinados tipos de fluxos de dados ou aplicações tenham prioridade na entrega.
Associado a cada porta de saída do DmSwitch, existe um conjunto de 8 filas CoS. Para prover um serviço
diferenciado, através destas 8 filas de CoS, existe o escalonamento, que utiliza alguns métodos de
classificação. Cada método é responsável por averiguar o pacote segundo algum critério. O maior aspecto
dos mecanismos arbitrados, é a capacidade de garantir uma banda mínima ou máxima.
Parecer
Este documento tem a finalidade de demonstrar a utilização das técnicas de QoS nos switches Datacom.
Faremos uma breve explicação sobre os modos de escalonamento/enfileiramento e controle de fluxo,
como: WRR, RR, WFQ, SP, DiffServ, WRED, CoS, Meter, Counter e Filtros. Também
demonstraremos os resultados de testes realizados utilizando estas aplicações. Para realização dos testes,
utilizamos um gerador de tráfego de alta confiabilidade e flexibilidade. Com este gerador podemos gerar
tráfego de até 1G por porta, demosntrando os resultados como pacotes perdidos, latência, pacotes enviados
e pacotes recebidos.
Métodos de Classificação
Weighted Round Robin (WRR)
Neste modo, o escalonamento é configurado para associar um peso a cada fila. O escalonamento serve
cada fila despachando os pacotes proporcionalmente ao peso associado as mesmas, o peso corresponde a
quantidade de pacotes que serão servidos a cada ciclo. A desvantagem na utilização do algoritmo WRR, é
que ele não faz uso adequado da banda, pois o mesmo não considera o tamanho do pacote no processo de
escalonamento.O WRR é utilizado como configuração default dos switches.
Comandos no CLI:
Dm4001(config-if-eth-1/2)#queue sched-mode wrr queue-weights
1-15 Weight for queue 0
sp Queue 0 in strict priority
Dm4001(config-if-eth-1/2)#queue sched-mode wrr queue-weights 1 2 4 6 8 10 12 14
<enter> no further known parameters
Dm4001(config-if-eth-1/2)#
Comandos no CLI:
Dm4001(config-if-eth-1/2)#queue sched-mode rr <?>
<enter> no further known parameters
Dm4001(config-if-eth-1/2)#
Dm4001(config-if-eth-1/2)#show queue config ethernet 1/2
---------------------------------------------------------
Port Queue Mode Max-Bw Min-Bw Weight SP-Queue
---------------------------------------------------------
1/ 9 0 RR unlimit ------- 1 NO
1/ 9 1 RR unlimit ------- 1 NO
1/ 9 2 RR unlimit ------- 1 NO
1/ 9 3 RR unlimit ------- 1 NO
1/ 9 4 RR unlimit ------- 1 NO
1/ 9 5 RR unlimit ------- 1 NO
1/ 9 6 RR unlimit ------- 1 NO
1/ 9 7 RR unlimit ------- 1 NO
Comandos no CLI:
Dm4001(config-if-eth-1/2)#queue sched-mode wfq min-bw <?>
0-10000000 Min bw for queue 0 in kbit/s (64 kbit/s granularity)
sp Queue 0 in strict priority
Comandos no CLI:
o SP pode ser utilizado tanto no modo WRR, quanto no WFQ.
Dm4001(config-if-eth-1/2)#queue sched-mode wfq min-bw <?>
0-10000000 Min bw for queue 0 in kbit/s (64 kbit/s granularity)
sp Queue 0 in strict priority
Dm4001(config-if-eth-1/2)#queue sched-mode wrr queue-weights
1-15 Weight for queue 0
sp Queue 0 in strict priority
O Diffserv opera com o princípio de classificação de tráfego, onde em cada pacote é colocado um número
limitado de classificação de serviços. Cada roteador da rede é configurado para diferenciar o tráfego,
baseado na sua classe. Cada classe pode ser gerenciada de forma diferente, assegurando tratamento
preferencial para o tráfego com alta prioridade na rede.
Qualquer tráfego que não se enquadrar em nenhuma das condições de qualquer classe definida, é
encaminhado para default PHB.
O EF tem característica de baixo delay, poucas perdas e baixo jitter. Tais características, são
adequadas para serviços como voz, vídeo e outros serviços em tempo real. O tráfego EF muitas vezes
é configurado com strict priority sobre todas as outras classes de tráfego. o EF utiliza somente o
DSCP 46.
O AF permite ao operador oferecer segurança na entrega dos pacotes, contanto que o tráfego não
exceda as taxas definidas. O tráfego que exceder os limites pré-definidos, terá uma grande
probabilidade de ser dropado, caso ocorra um congestionamento. O comportamento do AF, define
quatro classes distintas. Em cada classe o pacote recebe um drop precedence, que irá indicar a
probabilidade de descarte.
Probabilidade de
Class 1 Class 2 Class 3 Class 4
Descarte
AF11 (DSCP AF21 (DSCP AF31 (DSCP AF41 (DSCP
Baixa
10) 18) 26) 34)
AF12 (DSCP AF22 (DSCP AF32 (DSCP AF42 (DSCP
Média
12) 20) 28) 36)
AF13 (DSCP AF23 (DSCP AF33 (DSCP AF43 (DSCP
Alta
14) 22) 30) 38)
Algumas medidas de prioridade e favorecimento, são definidas entre o tráfego das diferentes classes. Pode
ocorrer um congestionamento entre as classes, então o tráfego que estiver na maior classe, receberá maior
prioridade. Se ocorrer congestionamento entre as classes, os pacotes com a maior probabilidade de
descarte serão descartados primeiro.
Class Selector (CS) - Definido para manter a compatibilidade com o campo IP Precedence.
Como o IP Precedence somente utiliza os três primeiros bits do campo TOS, o IETF definiu o Class
Selector PHB, que utiliza os outros três bits, mantendo a compatibilidade com o IP Precedence.
Por default, as configurações de DSCP vem desabilitadas no DmSwitch. O usuário deverá habilitar, e
configurar da forma que achar melhor. O DSCP deve ser configurado de forma global, porém é habilitado
individualmente por porta.
Dm4001(config-if-eth-1/1)#dscp-mapping <?>
<enter> no further known parameters
Dm4001(config)#dscp-table <?>
all-dscp Set configuration to all incoming DSCP
range DSCP range configuration
0-63 DSCP from incoming packet
Observação: Quando o comando "dscp-mapping" for habilitado em uma porta, caso o tráfego não
venha marcado com DSCP (isto significa que DSCP é igual a 0), o switch irá encaminhar o tráfego de
acordo com a configuração dada para o DSCP 0 na dscp-table. Então não fará diferença se o tráfego
vier marcado com alguma prioridade 802.1p, o que irá ser considerado é o DSCP.
Pacote :
Tabela com valores de DSCP em decimal e binário, e também correlação entre IP Precedence e
DSCP.
Configurações no CLI:
O WRED deve ser habilitado globalmente, mas as portas podem ser configuradas de forma
individual.
Dm4001#show wred
WRED settings:
Global: WRED enabled
Queue
Port Item 1 2 3 4 5 6 7 8
--------------- ---- ------ ------ ------ ------ ------ ------ ------ ------
1/ 1 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/ 2 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/ 3 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/ 4 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/ 5 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/ 6 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/ 7 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/ 8 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/ 9 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/10 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/11 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
1/12 DSP 75/15 75/15 75/15 75/15 75/15 75/15 75/15 75/15
CNG 100/15 100/15 100/15 100/15 100/15 100/15 100/15 100/15
averaging-time:
O filtro fará com que todo tráfego, que exceda o meter 1 (no caso 5Mb), seja marcado com
drop-precedence (pacotes vermelhos).
CoS-map
A configuração de CoS-map irá definir a que fila cada prioridade estará associada. No switch existem oito
filas e oito prioridades, associadas de forma crescente pela configuração default.
Dm4001(config)#queue CoS-map <?>
0-7 Queue ID
Dm4001(config)#queue CoS-map 0
priority Select CoS priorities mapped to this queue
Dm4001(config)#queue CoS-map 0 priority <?>
0-7 1st CoS Priority of 8 possible
Dm4001_103_4(config)#queue CoS-map 0 priority 0 <?>
0-7 2nd CoS Priority of 8 possible
<enter> Finish CoS mapping
Dm4001(config)#queue CoS-map 0 priority 0 1 2 3 4 5 6 7
<enter> no further known parameters
Dm4001(config)#
Dm4001(config-if-eth-1/2)#show queue CoS-map
-------+-----------------+
Queue | 802.1P Priority |
-------+-----------------+
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
-------+-----------------+
Capacidade :
Hardware meters
Dm3000 64
ETHGT 1024
ETHGX 2048
Observação: O trtcm estará disponível para o hardware ETHGX, a partir da versão de firmware 8.0.
Flow: Para serem considerados verdes, todos os pacotes devem estar dentro do perfil, senão serão
vermelhos.
Configurações no CLI:
Dm4001(config)#meter new mode flow <?>
burst Specify the maximum burst size
rate-limit Specify the rate-limit
remark Add a remark text
<enter>
Dm4001(config)#meter new mode flow rate-limit 120000 burst 256 remark VOIP
Dois meters são necessários para suportar srtcm, cada meter é implementado como um token buckte
counter, Tc e Te. Os token buckets inicialmente estão cheios (no tempo 0), Tc(0)=CBS e Te(0)=EBS.
Então os contadores de Tc e Te são atualizados CIR vezes por segundo, como mostrado:
Se Tc(t)-B >= 0, os pacotes são verdes, e Tc é decrementado por B até alcançar o menor valor, igual a
zero, senão
Se Te(t)-B >= 0, os pacotes são amarelos, e Te é decrementado por B até alcançar o menor valor,
igual a zero, senão
Os pacotes são vermelhos e nem Tc nem Te são decrementados.
Color-blind: (Insensível a cor) Neste modo, se o pacote estiver marcado com alguma cor, a cor será
ignorada. A saída é determinada pelo estado dos 2 meters.
Configurações no CLI:
Dm4001(config)#meter new mode srtcm color-blind <?>
committed Committed Information Rate (CIR) and Burst Size (CBS) <?>
remark Add a remark text
Dm4001(config)#meter new mode srtcm color-blind committed 12000 <?>
32-131072 CBS in kbit (power of 2)
Dm4001(config)#meter new mode srtcm color-blind committed 12000 64 excess <?>
32-131072 EBS in kbit (power of 2)
Dm4001(config)#meter new mode srtcm color-blind committed 120000 64 excess 256 remark VOZ
Color-aware: (Sensível a cor) Neste modo, a saída é determinada pela cor de entrada e pelo estado
dos 2 meters. A cor de entrada é determinada indexando o DSCP, usando o número da porta source e
o valor DSCP no pacote.
trTCM: O Two Rate Three Color Marker pode marcar os pacotes como verde, amarelo e vermelho.
A marcação é baseada em quatro parâmetros, Peak Information Rate (PIR), Peak Burst Size (PBS),
Committed Information Rate (CIR) e Committed Burst Size (CBS). Um pacote é considerado verde
senão ultrapassar o CBS, amarelo se ultrapassar senão ultrapassar o CIR e vermelho caso ultrapasse
as condições de pico PIR e PBS. Este modo também comporta duas condições, color-blind e
color-aware, já explicados anteriormente.
Se o tráfego estiver fora do perfil, será marcado, ou descartado, de acordo com a configuração do
filtro associado ao meter.
Counter
No Dm4000, para cada tipo de configuração de meter, um counter pode ser atualizado. Os counters são
organizados em pares lógiCoS, upper e lower. Existem oito tipos de combinações que podem ser
configuradas:
Os cinco primeiros são relevantes quando os meters flow e srTCM são utilizados. Os counters seis e sete
somente são relevantes utilizando o modo srTCM. Somente um counter em um par de counters, upper ou
lower, pode ser atualizado por pacote. Se um pacote tiver combinações em paralelo com outros counters,
então multiplos counters podem ser atualizados.
Configurações no CLI:
Dm4001(config)#counter new <?>
mode Counter Upper and Lower mode
remark Add a remark text
type Counter type
<enter>
No Dm3000 é diferente, apenas 1 counter é criado. Esse counter então deve ser associado a um filtro.
Configurações no CLI:
Capacidade :
Hardware counters
Dm3000 32
ETHGT 1024
ETHGX 2048
Filter
Action
Meter & Counters:
Tanto meters quanto counters, dependem das ações de filtros para serem utilizados. Sem a utilização de
filtros, ambos são ignorados pelo hardware.
Dm4000:
Quando um meter é associado a um filtro, o respectivo meter é conferido, e a cor do tráfego é usada
para determinar que ação, verde, amerelo ou vermelho deve ser tomada. Se o meter estiver
desabilitado, então todos os frames são considerados verdes. Utilizando as quatro ações citadas,
pode-se então definir se os frames out-of-profile serão dropados, marcados ou irão alterar o valor de
DSCP. O counter também deve ser associado utilizando uma ação.
Configurações no CLI:
Dm4001(config)#filter new action <?>
permit Cause the packet to be switched
deny Discard the packet
counter Associate a counter
drop-precedence Internally set the drop-precedence of the packet
dscp Change Differentiated Services Code Point
int-802.1p Change internal 802.1p priority value
Dm3000:
Existem algumas ações dos filtros que podem ser tomadas com relação ao DSCP e ao IP Precedence.
Dm4001(config)#filter new action <?>
802.1p-from-tos Change packet and internal 802.1p priority from IP ToS Precedence
dscp Change Differentiated Services Code Point
int-802.1p-from-tos Change internal 802.1p priority from IP ToS Precedence
pkt-802.1p-from-tos Change packet 802.1p priority from IP ToS Precedence
red-dscp Change Differentiated Services Code Point of red packet
tos Change IP ToS Precedence value
tos-from-802.1p Change IP ToS Precedence from 802.1p priority
yellow-dscp Change Differentiated Services Code Point of yellow packet
Configurações no CLI:
Dm4001(config)#filter new action drop-precedence red ingress ethernet <?>
all All Ethernet interfaces
range Range of Ethernet interfaces
1-1/1-12 Unit number/Ethernet interface number
Configurações no CLI:
Dm4001(config-if-port-ch-1)#load-balance
dst-ip Destination IP address
dst-mac Destination MAC address
src-dst-ip Source and destination IP addresses
src-dst-mac Source and destination MAC addresses
src-ip Source IP address
src-mac Source MAC address
Desenvolvimento
Dm4001 - ETHGX
Utilizando um Dm4001, com uma placa ETHGX
Setup de teste:
Resultado:
Resultado:
Resultado:
Resultado:
Podemos observar que nem todas as filas tiveram sua banda mínima assegurada. Isto ocorreu porque
a fila 5, com strict priority, não tem uma limitação máxima, o que fez com que ela ocupasse o espaço
de outras filas.
Dm4001_103_4(config-if-eth-1/2)#show queue co
config CoS-map
Dm4001_103_4(config-if-eth-1/2)#show queue config ethernet 1/2
---------------------------------------------------------
Port Queue Mode Max-Bw Min-Bw Weight SP-Queue
Resultado:
Aumentando o tamanho dos pacotes para 1500, deixando mais visível o tráfego que está
passando.
Resultado:
Configuração:
configure
!
interface ethernet 1/1
dscp-mapping
!
dscp-table range 8 15 same 1
dscp-table range 16 23 same 2
dscp-table range 24 31 same 3
dscp-table range 32 39 same 4
dscp-table range 40 47 same 5
dscp-table range 48 55 same 6
dscp-table range 56 63 same 7
Resultado:
Configuração:
Resultado:
filter 1 action permit action red-drop-precedence red match vlan 100 ingress ethernet range 1/1 1/12 meter 1 priority 8
filter 2 action permit action red-drop-precedence red match vlan 101 ingress ethernet range 1/1 1/12 meter 2 priority 8
filter 3 action permit action red-drop-precedence red match vlan 102 ingress ethernet range 1/1 1/12 meter 3 priority 8
filter 4 action permit action red-drop-precedence red match vlan 103 ingress ethernet range 1/1 1/12 meter 4 priority 8
filter 5 action permit action red-drop-precedence red match vlan 104 ingress ethernet range 1/1 1/12 meter 5 priority 8
filter 6 action permit action red-drop-precedence red match vlan 105 ingress ethernet range 1/1 1/12 meter 6 priority 8
filter 7 action permit action red-drop-precedence red match vlan 106 ingress ethernet range 1/1 1/12 meter 7 priority 8
filter 8 action permit action red-drop-precedence red match vlan 107 ingress ethernet range 1/1 1/12 meter 8 priority 8
!
meter 1 mode flow rate-limit 94016 burst 32
meter 2 mode flow rate-limit 94016 burst 32
meter 3 mode flow rate-limit 94016 burst 32
meter 4 mode flow rate-limit 94016 burst 32
meter 5 mode flow rate-limit 94016 burst 32
meter 6 mode flow rate-limit 94016 burst 32
meter 7 mode flow rate-limit 94016 burst 32
meter 8 mode flow rate-limit 94016 burst 32
Resultado: